Class: Zadok::FilterCollection

Inherits:
Object
  • Object
show all
Defined in:
lib/zadok/filter_collection.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params, filters_namespace = Zadok::Filters) ⇒ FilterCollection

Returns a new instance of FilterCollection.



9
10
11
12
13
14
15
16
17
18
# File 'lib/zadok/filter_collection.rb', line 9

def initialize(params, filters_namespace = Zadok::Filters)
  @params = params
  @filters = []
  filters_namespace.constants.each do |constant|
    unless constant.match?(/Ransack/)
      @filters << "#{filters_namespace}::#{constant}".constantize.new
    end
  end
  @filters.sort! { |a, b| a.index <=> b.index }
end

Instance Attribute Details

#filtersObject (readonly)

Returns the value of attribute filters.



7
8
9
# File 'lib/zadok/filter_collection.rb', line 7

def filters
  @filters
end

#paramsObject (readonly)

Returns the value of attribute params.



7
8
9
# File 'lib/zadok/filter_collection.rb', line 7

def params
  @params
end

Instance Method Details

#active_filters?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/zadok/filter_collection.rb', line 32

def active_filters?
  current_filters.count.positive?
end

#current_filter_params(params) ⇒ Object



26
27
28
29
30
# File 'lib/zadok/filter_collection.rb', line 26

def current_filter_params(params)
  current_filters.flat_map(&:params).uniq.map do |param|
    [param, params[param]]
  end
end

#current_filtersObject



20
21
22
23
24
# File 'lib/zadok/filter_collection.rb', line 20

def current_filters
  @filters.select do |filter|
    filter.active_in? params
  end
end

#variable_results?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/zadok/filter_collection.rb', line 36

def variable_results?
  current_filters.any?(&:variable_results?)
end