Class: Dynatree::Renderer
- Inherits:
-
Object
- Object
- Dynatree::Renderer
- Defined in:
- lib/dynatree-rails/renderer.rb
Instance Method Summary collapse
- #has_selected_children(id) ⇒ Object
-
#initialize(tree, association) ⇒ Renderer
constructor
A new instance of Renderer.
- #recurse(parent_id) ⇒ Object
- #render ⇒ Object
Constructor Details
#initialize(tree, association) ⇒ Renderer
Returns a new instance of Renderer.
4 5 6 7 |
# File 'lib/dynatree-rails/renderer.rb', line 4 def initialize(tree, association) @tree = tree @association = association end |
Instance Method Details
#has_selected_children(id) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/dynatree-rails/renderer.rb', line 13 def has_selected_children(id) items = @tree.select{ |elem| elem.parent_id == id } if items.empty? false else items.each do |item| if @association.include? item return true end if has_selected_children(item.id) return true end end false end end |
#recurse(parent_id) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/dynatree-rails/renderer.rb', line 30 def recurse(parent_id) ret = [] items = @tree.select{ |elem| elem.parent_id == parent_id } unless items.empty? items.each do |item| ch = {} if @association.include? item ch['select'] = true ch['expand'] = true else if has_selected_children(item.id) ch['expand'] = true end end ch['title'] = item.name ch['key'] = item.id.to_s ch['children'] = self.recurse(item.id) ret << ch end end ret end |
#render ⇒ Object
9 10 11 |
# File 'lib/dynatree-rails/renderer.rb', line 9 def render() self.recurse(nil).to_json end |