Module: Datagrid::Filters::InstanceMethods

Defined in:
lib/datagrid/filters.rb

Overview

ClassMethods

Instance Method Summary collapse

Instance Method Details

#assetsObject

:nodoc:



123
124
125
# File 'lib/datagrid/filters.rb', line 123

def assets # :nodoc:
  apply_filters(super, filters)
end

#filter_by(*filters) ⇒ Object

Returns assets filtered only by specified filters Allows partial filtering



150
151
152
# File 'lib/datagrid/filters.rb', line 150

def filter_by(*filters)
  apply_filters(scope, filters.map{|f| filter_by_name(f)})
end

#filter_by_name(name) ⇒ Object

Returns filter object with the given name



144
145
146
# File 'lib/datagrid/filters.rb', line 144

def filter_by_name(name)
  self.class.filter_by_name(name)
end

#filter_value(filter) ⇒ Object

Returns filter value for given filter definition



128
129
130
# File 'lib/datagrid/filters.rb', line 128

def filter_value(filter)
  self[filter.name]
end

#filter_value_as_string(name) ⇒ Object

Returns string representation of filter value



133
134
135
136
137
138
139
140
141
# File 'lib/datagrid/filters.rb', line 133

def filter_value_as_string(name)
  filter = filter_by_name(name)
  value = filter_value(filter)
  if value.is_a?(Array) 
    value.map {|v| filter.format(v) }.join(filter.separator)
  else
    filter.format(value)
  end
end

#initialize(*args, &block) ⇒ Object

:nodoc:



115
116
117
118
119
120
121
# File 'lib/datagrid/filters.rb', line 115

def initialize(*args, &block) # :nodoc:
  self.filters = self.class.filters.clone
  self.filters.each do |filter|
    self[filter.name] = filter.default
  end
  super(*args, &block)
end

#select_options(filter) ⇒ Object

Returns select options for specific filter or filter name If given filter doesn’t support select options raises ‘ArgumentError`



156
157
158
159
160
161
162
# File 'lib/datagrid/filters.rb', line 156

def select_options(filter)
  filter = filter_by_name(filter)
  unless filter.class.included_modules.include?(::Datagrid::Filters::SelectOptions)
    raise ::Datagrid::ArgumentError, "#{filter.name} with type #{FILTER_TYPES.invert[filter.class].inspect} can not have select options"
  end
  filter.select(self)
end