Class: Redde::TreeSortable::Sorter

Inherits:
Object
  • Object
show all
Defined in:
app/models/concerns/redde/tree_sortable.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(list, klass) ⇒ Sorter

Returns a new instance of Sorter.



8
9
10
11
# File 'app/models/concerns/redde/tree_sortable.rb', line 8

def initialize(list, klass)
  @list = list
  @klass = klass
end

Instance Attribute Details

#klassObject

Returns the value of attribute klass.



7
8
9
# File 'app/models/concerns/redde/tree_sortable.rb', line 7

def klass
  @klass
end

#listObject

Returns the value of attribute list.



7
8
9
# File 'app/models/concerns/redde/tree_sortable.rb', line 7

def list
  @list
end

Instance Method Details

#sortObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/models/concerns/redde/tree_sortable.rb', line 13

def sort
  tree.each do |parent, cats|
    i = 1
    if parent == 'root'
      pid = nil
    else
      pid = klass.find(parent).id
    end
    cats.each do |cat|
      klass.find(cat).update(parent_id: pid, position: i)
      i += 1
    end
  end
end

#treeObject



28
29
30
31
32
33
34
35
36
37
38
# File 'app/models/concerns/redde/tree_sortable.rb', line 28

def tree
  temp = {}
  list.each do |key, value|
    if temp[value]
      temp[value] << key
    else
      temp[value] = [key]
    end
  end
  temp
end