Class: Dust::Sort
- Inherits:
-
Object
- Object
- Dust::Sort
- Defined in:
- app/models/dust/sort.rb
Instance Attribute Summary collapse
-
#class ⇒ Object
Returns the value of attribute class.
-
#id ⇒ Object
Returns the value of attribute id.
-
#list ⇒ Object
Returns the value of attribute list.
-
#position ⇒ Object
Returns the value of attribute position.
-
#previous ⇒ Object
Returns the value of attribute previous.
-
#value ⇒ Object
Returns the value of attribute value.
Instance Method Summary collapse
- #format_list(list) ⇒ Object
-
#initialize(list = {}, class_name = nil, parent = nil) ⇒ Sort
constructor
A new instance of Sort.
- #sort_children(item) ⇒ Object
- #sort_list ⇒ Object
- #sort_roots(item) ⇒ Object
Constructor Details
#initialize(list = {}, class_name = nil, parent = nil) ⇒ Sort
Returns a new instance of Sort.
6 7 8 9 10 11 12 |
# File 'app/models/dust/sort.rb', line 6 def initialize(list={}, class_name=nil, parent=nil) @class_name = class_name @parent = parent @previous = nil @list = format_list(list.to_a) self.sort_list end |
Instance Attribute Details
#class ⇒ Object
Returns the value of attribute class.
4 5 6 |
# File 'app/models/dust/sort.rb', line 4 def class @class end |
#id ⇒ Object
Returns the value of attribute id.
4 5 6 |
# File 'app/models/dust/sort.rb', line 4 def id @id end |
#list ⇒ Object
Returns the value of attribute list.
4 5 6 |
# File 'app/models/dust/sort.rb', line 4 def list @list end |
#position ⇒ Object
Returns the value of attribute position.
4 5 6 |
# File 'app/models/dust/sort.rb', line 4 def position @position end |
#previous ⇒ Object
Returns the value of attribute previous.
4 5 6 |
# File 'app/models/dust/sort.rb', line 4 def previous @previous end |
#value ⇒ Object
Returns the value of attribute value.
4 5 6 |
# File 'app/models/dust/sort.rb', line 4 def value @value end |
Instance Method Details
#format_list(list) ⇒ Object
14 15 16 17 18 19 20 21 22 |
# File 'app/models/dust/sort.rb', line 14 def format_list(list) list.map! do |item| Dust::SortableItem.new(:position => item[1]["position"].to_i, :id => item[1]["id"], :class_name => @class_name, :children => item[1]["children"]) end list.sort_by! { |item| item.position } end |
#sort_children(item) ⇒ Object
46 47 48 49 |
# File 'app/models/dust/sort.rb', line 46 def sort_children(item) = item.object_class.find_by_id(item.id) .move_to_child_of(@parent) end |
#sort_list ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/models/dust/sort.rb', line 24 def sort_list @list.each do |item| @current_menu_item = item.object_class.find(item.id) if @parent.nil? self.sort_roots(item) else @parent = item.object_class.find(@parent) self.sort_children(item) end end end |
#sort_roots(item) ⇒ Object
36 37 38 39 40 41 42 43 44 |
# File 'app/models/dust/sort.rb', line 36 def sort_roots(item) unless @previous.nil? previous_item = item.object_class.find_by_id(@previous) @current_menu_item.move_to_right_of(previous_item) else @current_menu_item.move_to_root end @previous = item.id end |