Class: Gitter::SelectFilter

Inherits:
AbstractFilter show all
Defined in:
lib/gitter/filters/select_filter.rb

Instance Attribute Summary collapse

Attributes inherited from AbstractFilter

#formatter, #grid, #input_class, #input_options, #input_tag, #label, #name, #order

Instance Method Summary collapse

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

#filtersObject (readonly)

Returns the value of attribute filters.



5
6
7
# File 'lib/gitter/filters/select_filter.rb', line 5

def filters
  @filters
end

#valuesObject (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