class Form

Public Instance Methods

change_attr(attr) click to toggle source
# File lib/bull/ui_core.rb, line 609
def change_attr(attr)
  lambda do |value|
    @dirty.add attr
    doc = state.__send__(attr.split('.')[0])
    set_nested(attr, value, doc){|r, v| state.__send__(r+'!', v)}
    state.__send__('dirty_' + attr.gsub('.', '_') + '!', true)
    state.dirty! true
  end
end
clear_dirty() click to toggle source
# File lib/bull/ui_core.rb, line 640
def clear_dirty
  @dirty.each {|attr| state.__send__('dirty_' + attr.gsub('.', '_')+'!', false)}
  @dirty.clear
end
dirty?() click to toggle source
# File lib/bull/ui_core.rb, line 591
def dirty?
  !@dirty.empty?
end
discard() click to toggle source
# File lib/bull/ui_core.rb, line 645
def discard
  @selected.value = nil
  clear
  #@dirty.each {|attr| state.__send__('dirty_' + attr+'!', false)}
  #@dirty.clear
  clear_dirty
  state.discard! false
  state.dirty! false
end
expand_attr(hsh={}) click to toggle source
# File lib/bull/ui_core.rb, line 595
def expand_attr(hsh={})
  lambda do |value|
    value.each_pair do |k, v|
      if !hsh[k].nil?
        k = hsh[k]
      end
      @dirty.add k
      state.__send__(k+'!', v)
      state.__send__('dirty_' + k + '!', true)
      state.dirty! true
    end
  end
end
get(selected) click to toggle source
# File lib/bull/ui_core.rb, line 686
def get selected
  @selected = selected
  selected.add_form self
  @rvs = reactive(selected) do
    @dirty.each {|attr| state.__send__('dirty_' + attr+'!', false)}
    @dirty.clear
    clear
    $controller.rpc('get_' + @@table, selected.value).then do|response|
      response.each do |k, v|
        state.__send__(k+'!', v)
      end
    end
  end
end
get_unique(kw) click to toggle source
# File lib/bull/ui_core.rb, line 701
def get_unique kw
  k, selected = kw.shift
  @selected = selected
  selected.add_form self
  @rvs = reactive(selected) do
    @dirty.each {|attr| state.__send__('dirty_' + attr+'!', false)}
    @dirty.clear
    clear
    $controller.rpc('get_unique_' + @@table, k, selected.value).then do|response|
      response.each do |k, v|
        state.__send__(k+'!', v)
      end
    end
  end
end
hash_from_state() click to toggle source
# File lib/bull/ui_core.rb, line 619
def hash_from_state
  ret = {}
  @dirty.each do |attr|
    get_nested!(ret, attr) {|r| state.__send__(r)}
  end
  @@constants.each do |cte|
    get_nested!(ret, cte) {|r| params.__send__(r)}
  end if @@constants
  ret
end
insert() click to toggle source
# File lib/bull/ui_core.rb, line 655
def insert
  $controller.insert(@@table, hash_from_state).then do |response|
    if response.nil?
      #$notifications.add ['error', 'form: data not inserted', 1] if $notifications
      notify_error 'form: data not inserted', 1
    else
      params.selected.value = response
      #$notifications.add ['ok', 'form: data inserted', 1] if $notifications
      notify_ok 'form: data inserted', 1
    end
  end
  #@dirty.each {|attr| state.__send__('dirty_' + attr+'!', false)}
  #@dirty.clear
  clear_dirty
end
save() click to toggle source
# File lib/bull/ui_core.rb, line 630
def save
  if state.id
    update
  else
    insert
  end
  state.discard! false
  state.dirty! false
end
update() click to toggle source
# File lib/bull/ui_core.rb, line 671
def update
  $controller.update(@@table, state.id, hash_from_state).then do |count|
    if count == 0
      #$notifications.add ['error', 'form: data not updated', 1] if $notifications
      notify_error 'form: data not updated', 1
    elsif count == 1
      #$notifications.add ['ok', 'form: data updated', 1] if $notifications
      notify_ok 'form: data updated', 1
    end
  end
  #@dirty.each {|attr| state.__send__('dirty_' + attr.gsub('.', '_')+'!', false)}
  #@dirty.clear
  clear_dirty
end