Class: SortHelper::SortCriteria

Inherits:
Object
  • Object
show all
Defined in:
app/helpers/sort_helper.rb

Instance Method Summary (collapse)

Constructor Details

- (SortCriteria) initialize

Returns a new instance of SortCriteria



56
57
58
# File 'app/helpers/sort_helper.rb', line 56

def initialize
  @criteria = []
end

Instance Method Details

- (Object) add(*args)



96
97
98
99
100
# File 'app/helpers/sort_helper.rb', line 96

def add(*args)
  r = self.class.new.from_param(to_param)
  r.add!(*args)
  r
end

- (Object) add!(key, asc)



90
91
92
93
94
# File 'app/helpers/sort_helper.rb', line 90

def add!(key, asc)
  @criteria.delete_if {|k,o| k == key}
  @criteria = [[key, asc]] + @criteria
  normalize!
end

- (Object) available_criteria=(criteria)



60
61
62
63
64
65
# File 'app/helpers/sort_helper.rb', line 60

def available_criteria=(criteria)
  unless criteria.is_a?(Hash)
    criteria = criteria.inject({}) {|h,k| h[k] = k; h}
  end
  @available_criteria = criteria
end

- (Object) criteria=(arg)



72
73
74
75
# File 'app/helpers/sort_helper.rb', line 72

def criteria=(arg)
  @criteria = arg
  normalize!
end

- (Boolean) empty?

Returns:

  • (Boolean)


110
111
112
# File 'app/helpers/sort_helper.rb', line 110

def empty?
  @criteria.empty?
end

- (Boolean) first_asc?

Returns:

  • (Boolean)


106
107
108
# File 'app/helpers/sort_helper.rb', line 106

def first_asc?
  @criteria.first && @criteria.first.last
end

- (Object) first_key



102
103
104
# File 'app/helpers/sort_helper.rb', line 102

def first_key
  @criteria.first && @criteria.first.first
end

- (Object) from_param(param)



67
68
69
70
# File 'app/helpers/sort_helper.rb', line 67

def from_param(param)
  @criteria = param.to_s.split(',').collect {|s| s.split(':')[0..1]}
  normalize!
end

- (Object) to_param



77
78
79
# File 'app/helpers/sort_helper.rb', line 77

def to_param
  @criteria.collect {|k,o| k + (o ? '' : ':desc')}.join(',')
end

- (Object) to_sql



81
82
83
84
85
86
87
88
# File 'app/helpers/sort_helper.rb', line 81

def to_sql
  sql = @criteria.collect do |k,o|
    if s = @available_criteria[k]
      (o ? s.to_a : s.to_a.collect {|c| append_desc(c)}).join(', ')
    end
  end.compact.join(', ')
  sql.blank? ? nil : sql
end