Sha256: 398e487cf1104de974a2d706a6fd287d6c61ec8c7988c6ddaed0a1114617baed
Contents?: true
Size: 1.58 KB
Versions: 2
Compression:
Stored size: 1.58 KB
Contents
module FortyFacets class AttributeFilterDefinition < FilterDefinition class AttributeFilter < FacetFilter def selected entity = search_instance.class.root_class column = entity.columns_hash[filter_definition.model_field.to_s] values.map{|v| column.type_cast(v)} end def build_scope return Proc.new { |base| base } if empty? Proc.new { |base| base.where(filter_definition.model_field => value) } end def facet my_column = filter_definition.model_field counts = without.result.reorder('').select("#{my_column} AS facet_value, count(#{my_column}) as occurrences").group(my_column) 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 def remove(value) new_params = search_instance.params || {} old_values = new_params[filter_definition.request_param] old_values.delete(value.to_s) new_params.delete(filter_definition.request_param) if old_values.empty? search_instance.class.new_unwrapped(new_params, search_instance.root) end def add(value) new_params = search_instance.params || {} old_values = new_params[filter_definition.request_param] ||= [] old_values << value.to_s search_instance.class.new_unwrapped(new_params, search_instance.root) end end def build_filter(search_instance, value) AttributeFilter.new(self, search_instance, value) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
forty_facets-0.0.10 | lib/forty_facets/filter/attribute_filter_definition.rb |
forty_facets-0.0.9 | lib/forty_facets/filter/attribute_filter_definition.rb |