Class: AdminIt::ValueFilter

Inherits:
FieldFilter show all
Defined in:
lib/admin_it/filters/value_filter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeValueFilter

Returns a new instance of ValueFilter.



5
6
7
# File 'lib/admin_it/filters/value_filter.rb', line 5

def initialize
  @values = []
end

Instance Attribute Details

#valuesObject (readonly)

Returns the value of attribute values.



3
4
5
# File 'lib/admin_it/filters/value_filter.rb', line 3

def values
  @values
end

Instance Method Details

#all_values(collection = nil, &block) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/admin_it/filters/value_filter.rb', line 26

def all_values(collection = nil, &block)
  collection ||= []
  enum = Enumerator.new do |yielder|
    values = collection.map { |e| self.class.field.read(e) }
    values.uniq.each do |value|
      yileder << {
        value: value, count: values.count { |v| v == value }
      }
    end
  end
  block_given? ? enum.each(&block) : enum
end

#apply(collection) ⇒ Object



43
44
45
46
47
48
# File 'lib/admin_it/filters/value_filter.rb', line 43

def apply(collection)
  return collection if @values.empty?
  collection.select do |entity|
    @values.include?(self.class.field.read(entity))
  end
end

#value(val) ⇒ Object



39
40
41
# File 'lib/admin_it/filters/value_filter.rb', line 39

def value(val)
  create_argument(val)
end