Class: Gitter::SelectFilter
- Inherits:
-
AbstractFilter
- Object
- AbstractFilter
- Gitter::SelectFilter
- Defined in:
- lib/gitter/filters/select_filter.rb
Instance Attribute Summary collapse
-
#filters ⇒ Object
readonly
Returns the value of attribute filters.
-
#values ⇒ Object
readonly
Returns the value of attribute values.
Attributes inherited from AbstractFilter
#formatter, #grid, #input_class, #input_options, #input_tag, #label, #name, #order
Instance Method Summary collapse
- #apply(driver, value) ⇒ Object
- #counts(driver = nil) ⇒ Object
-
#distinct_values(driver = nil) ⇒ Object
returns map { :name => label }.
-
#initialize(grid, name, filters, opts = {}) ⇒ SelectFilter
constructor
A new instance of SelectFilter.
Methods inherited from AbstractFilter
#format, #include_blank?, #input?, #param_scoped?, #select_tag, #selected?, #selected_value, #text_field_tag
Constructor Details
#initialize(grid, name, filters, opts = {}) ⇒ SelectFilter
Returns a new instance of SelectFilter.
7 8 9 10 11 12 13 14 15 |
# File 'lib/gitter/filters/select_filter.rb', line 7 def initialize grid, name, filters, opts = {} super grid, name, opts @filters = filters.inject({}.with_indifferent_access){|memo,filter| memo[filter.name] = filter; memo} @values = opts[:values] if @input_options == true @input_options = {} @input_options[:collection] = @filters.keys end end |
Instance Attribute Details
#filters ⇒ Object (readonly)
Returns the value of attribute filters.
5 6 7 |
# File 'lib/gitter/filters/select_filter.rb', line 5 def filters @filters end |
#values ⇒ Object (readonly)
Returns the value of attribute values.
5 6 7 |
# File 'lib/gitter/filters/select_filter.rb', line 5 def values @values end |
Instance Method Details
#apply(driver, value) ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/gitter/filters/select_filter.rb', line 17 def apply driver, value if filter = @filters[value] filter.apply driver else driver end end |
#counts(driver = nil) ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/gitter/filters/select_filter.rb', line 25 def counts driver = nil values_names = Hash === values ? values.keys : values @filters.values.inject({}) do |memo,filter| if !values_names || values_names.include?(filter.name) count = filter.counts[true] memo[filter.name] = count if count > 0 end memo end end |
#distinct_values(driver = nil) ⇒ Object
returns map { :name => label }
37 38 39 |
# File 'lib/gitter/filters/select_filter.rb', line 37 def distinct_values driver = nil @distinct_values ||= values || @filters.values.inject({}){|memo, filter| memo[filter.name] = filter.label; memo } end |