Module: Datagrid::Filters::ClassMethods
- Defined in:
- lib/datagrid/filters.rb
Overview
Grid class methods related to filters
Instance Method Summary collapse
-
#filter(name, type = :default, **options) {|value, scope, grid| ... } ⇒ Datagrid::Filters::BaseFilter
Defines new datagrid filter.
-
#filter_by_name(attribute) ⇒ Datagrid::Filters::BaseFilter?
Filter definition object by name.
-
#filters ⇒ Array<Datagrid::Filters::BaseFilter>
All defined filters.
Instance Method Details
#filter(name, type = :default, **options) {|value, scope, grid| ... } ⇒ Datagrid::Filters::BaseFilter
Defines new datagrid filter. This method automatically generates attr_accessor for filter name and adds it to the list of datagrid attributes.
242 243 244 245 246 247 248 249 250 251 252 253 254 |
# File 'lib/datagrid/filters.rb', line 242 def filter(name, type = :default, **, &block) klass = type.is_a?(Class) ? type : FILTER_TYPES[type] raise ConfigurationError, "filter class #{type.inspect} not found" unless klass position = Datagrid::Utils.(filters_array, ) filter = klass.new(self, name, **, &block) filters_array.insert(position, filter) datagrid_attribute(name) do |value| filter.parse_values(value) end filter end |
#filter_by_name(attribute) ⇒ Datagrid::Filters::BaseFilter?
Returns filter definition object by name.
195 196 197 198 199 200 201 202 203 204 205 206 |
# File 'lib/datagrid/filters.rb', line 195 def filter_by_name(attribute) if attribute.is_a?(Datagrid::Filters::BaseFilter) unless ancestors.include?(attribute.grid_class) raise ArgumentError, "#{attribute.grid_class}##{attribute.name} filter doen't belong to #{self.class}" end return attribute end filters.find do |filter| filter.name == attribute.to_sym end end |
#filters ⇒ Array<Datagrid::Filters::BaseFilter>
Returns all defined filters.
267 268 269 |
# File 'lib/datagrid/filters.rb', line 267 def filters filters_array end |