class FortyFacets::FacetFilterDefinition::AttributeFilter
Public Instance Methods
add(value)
click to toggle source
# File lib/forty_facets/filter/facet_filter_definition.rb, line 83 def add(value) new_params = search_instance.params || {} old_values = new_params[definition.request_param] ||= [] old_values << value.to_s search_instance.class.new_unwrapped(new_params, search_instance.root) end
build_scope()
click to toggle source
# File lib/forty_facets/filter/facet_filter_definition.rb, line 55 def build_scope return Proc.new { |base| base } if empty? Proc.new do |base| base.joins(definition.joins).where(definition.qualified_column_name => value) end end
facet()
click to toggle source
# File lib/forty_facets/filter/facet_filter_definition.rb, line 62 def facet my_column = definition.qualified_column_name query = "#{my_column} AS facet_value, count(#{my_column}) AS occurrences" counts = without.result(skip_ordering: true).distinct.joins(definition.joins).select(query).group(my_column) counts.includes_values = [] facet = counts.map do |c| is_selected = selected.include?(c.facet_value) FacetValue.new(c.facet_value, c.occurrences, is_selected) end order_facet!(facet) end
remove(value)
click to toggle source
# File lib/forty_facets/filter/facet_filter_definition.rb, line 75 def remove(value) new_params = search_instance.params || {} old_values = new_params[definition.request_param] old_values.delete(value.to_s) new_params.delete(definition.request_param) if old_values.empty? search_instance.class.new_unwrapped(new_params, search_instance.root) end
selected()
click to toggle source
# File lib/forty_facets/filter/facet_filter_definition.rb, line 49 def selected entity = definition.origin_class column = entity.columns_hash[definition.attribute.to_s] values.map{|v| entity.connection.type_cast(v, column)} end