Class: Gitter::AbstractFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/gitter/filters/abstract_filter.rb

Direct Known Subclasses

BlockFilter, ColumnFilter, SelectFilter

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(grid, name, opts = {}) ⇒ AbstractFilter

Returns a new instance of AbstractFilter.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/gitter/filters/abstract_filter.rb', line 7

def initialize grid, name, opts = {}
   @grid, @name = grid, name
   @label = opts.delete(:label){grid.translate(:filters, name)}
   @input_options = opts.delete(:input){nil}
   @input_tag = opts.delete(:input_tag){nil}
   @input_class = opts.delete(:input_class){''}
   @include_blank = opts.delete(:include_blank){false}
   
   @formatter = opts.delete(:formatter){nil}
   @param_scoped = opts.delete(:param_scoped){true}
   @order = opts.delete(:order){nil}

   # replace shortcut
   if coll = opts.delete(:input_collection){nil}
     (@input_options||={})[:collection] = coll
   end
   @opts = opts
end

Instance Attribute Details

#formatterObject (readonly)

Returns the value of attribute formatter.



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

def formatter
  @formatter
end

#gridObject (readonly)

Returns the value of attribute grid.



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

def grid
  @grid
end

#input_classObject (readonly)

Returns the value of attribute input_class.



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

def input_class
  @input_class
end

#input_optionsObject (readonly)

Returns the value of attribute input_options.



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

def input_options
  @input_options
end

#input_tagObject (readonly)

Returns the value of attribute input_tag.



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

def input_tag
  @input_tag
end

#labelObject (readonly)

Returns the value of attribute label.



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

def label
  @label
end

#nameObject (readonly)

Returns the value of attribute name.



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

def name
  @name
end

#orderObject (readonly)

Returns the value of attribute order.



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

def order
  @order
end

Instance Method Details

#counts(driver = grid.filtered_driver) ⇒ Object



46
47
48
# File 'lib/gitter/filters/abstract_filter.rb', line 46

def counts driver = grid.filtered_driver
  { true => apply(driver.unordered).count }
end

#distinct_values(driver = nil) ⇒ Object



50
51
52
# File 'lib/gitter/filters/abstract_filter.rb', line 50

def distinct_values driver = nil
  [ true, false ]
end

#format(value) ⇒ Object



74
75
76
77
78
79
80
# File 'lib/gitter/filters/abstract_filter.rb', line 74

def format value
  case formatter
  when Hash then formatter[value]
  when Proc then formatter.call value
  else value;
  end
end

#include_blank?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/gitter/filters/abstract_filter.rb', line 30

def include_blank?
  @include_blank
end

#input?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/gitter/filters/abstract_filter.rb', line 26

def input?
  @input_options || @input_tag
end

#param_scoped?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/gitter/filters/abstract_filter.rb', line 34

def param_scoped?
  @param_scoped
end

#select_tag(collection) ⇒ Object



70
71
72
# File 'lib/gitter/filters/abstract_filter.rb', line 70

def select_tag collection 
  h.select_tag scoped_name, h.options_for_select(collection, grid.params[name.intern]), include_blank: include_blank?, class: input_classes
end

#selected?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/gitter/filters/abstract_filter.rb', line 42

def selected?
  selected_value.present?
end

#selected_valueObject



38
39
40
# File 'lib/gitter/filters/abstract_filter.rb', line 38

def selected_value
  @selected_value ||= grid.filter_value name
end

#text_field_tagObject



65
66
67
68
# File 'lib/gitter/filters/abstract_filter.rb', line 65

def text_field_tag
  @text_field_tag ||= h.text_field_tag scoped_name, grid.params[name.intern], 
    class: input_classes 
end