Class: DisplayList

Inherits:
React::Component::Base
  • Object
show all
Defined in:
lib/bull/ui_core.rb

Instance Method Summary collapse

Instance Method Details

#clearObject



56
57
58
# File 'lib/bull/ui_core.rb', line 56

def clear
  state.docs! []
end

#consume(data) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/bull/ui_core.rb', line 37

def consume data
  if data.nil?
    clear
    return
  end
  docs = state.docs.dup
  if data['new_val'] == nil
    index = docs.index {|x| x['id'] == data['old_val']['id']}
    docs.delete_at index
  elsif data['old_val'] == nil
    docs << data['new_val']
  else
    index = docs.index {|x| x['id'] == data['old_val']['id']}
    doc = docs.fetch index
    doc.merge! data['new_val']
  end
  state.docs! sort(docs)
end

#sort(docs) ⇒ Object



60
61
62
# File 'lib/bull/ui_core.rb', line 60

def sort docs
  docs
end

#watch_(name, *args) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/bull/ui_core.rb', line 16

def watch_(name, *args)
  #reactives = args.pop
  reactives = args.select{|v| v.is_a? RVar}
  @rvs = reactive(*reactives) do
    clear
    $controller.stop_watch(@predicate_id) if @predicate_id != nil
    args_ = args.collect do |arg|
      if arg.is_a? RVar
        arg.value
      else
        arg
      end
    end
    #if args_.empty?
    #  @predicate_id = $controller.watch(name) {|data| consume data}
    #else
    @predicate_id = $controller.watch(name, *args_) {|data| consume data}
    #end
  end
end