Sha256: c0184683b24b8cc567e4dadfaeb32b892ee87f6be599452d7bd073318a08a785

Contents?: true

Size: 1.43 KB

Versions: 62

Compression:

Stored size: 1.43 KB

Contents

module Workarea
  module Search
    class Filter
      attr_reader :search, :name, :options
      delegate :params, :total, to: :search

      def initialize(search, name, options = nil)
        @search = search
        @name = name
        @options = options
      end

      def system_name
        @system_name ||= name.systemize
      end

      def display_name
        system_name.titleize
      end

      def current_value
        params[system_name]
      end

      def useless?
        !current_value.present?
      end

      def selected?(value)
        current_value.present? && current_value == value
      end

      def params_for(value)
        value = value.to_s
        result = valid_params

        if selected?(value)
          result.delete(system_name)
        else
          result[system_name] = value
        end

        result.delete_if { |_, v| v.blank? }
      end

      def valid_params
        valid_keys =
          Workarea.config.permitted_facet_params + search_facets + search_filters

        params.deep_dup.with_indifferent_access.slice(*valid_keys)
      end

      def query_clause
        raise NotImplementedError
      end

      private

      def search_facets
        return [] unless search.respond_to?(:facets)
        search.facets.map(&:system_name)
      end

      def search_filters
        return [] unless search.respond_to?(:filters)
        search.filters.map(&:system_name)
      end
    end
  end
end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
workarea-core-3.5.27 app/queries/workarea/search/filter.rb
workarea-core-3.5.26 app/queries/workarea/search/filter.rb
workarea-core-3.4.45 app/queries/workarea/search/filter.rb
workarea-core-3.5.25 app/queries/workarea/search/filter.rb
workarea-core-3.5.23 app/queries/workarea/search/filter.rb
workarea-core-3.4.44 app/queries/workarea/search/filter.rb
workarea-core-3.5.22 app/queries/workarea/search/filter.rb
workarea-core-3.4.43 app/queries/workarea/search/filter.rb
workarea-core-3.5.21 app/queries/workarea/search/filter.rb
workarea-core-3.4.42 app/queries/workarea/search/filter.rb
workarea-core-3.5.20 app/queries/workarea/search/filter.rb
workarea-core-3.4.41 app/queries/workarea/search/filter.rb
workarea-core-3.5.19 app/queries/workarea/search/filter.rb
workarea-core-3.4.40 app/queries/workarea/search/filter.rb
workarea-core-3.5.18 app/queries/workarea/search/filter.rb
workarea-core-3.4.39 app/queries/workarea/search/filter.rb
workarea-core-3.5.17 app/queries/workarea/search/filter.rb
workarea-core-3.4.38 app/queries/workarea/search/filter.rb
workarea-core-3.5.16 app/queries/workarea/search/filter.rb
workarea-core-3.4.37 app/queries/workarea/search/filter.rb