Sha256: ca5954d15ec354715f62a648a01defd3b0649f68c2360227d8c05e6d901521db

Contents?: true

Size: 1.25 KB

Versions: 11

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

module Katalyst
  module Tables
    module Collection
      module Query # :nodoc:
        extend ActiveSupport::Concern

        include Filtering
        include Suggestions

        class_methods do
          def search_attribute
            _default_attributes.each_value do |attribute|
              return attribute.name if attribute.type.type == :search
            end

            nil
          end
        end

        included do
          attribute :q, :query, default: ""
          alias_attribute :query, :q
        end

        def searchable?
          self.class.search_attribute.present?
        end

        using Type::Helpers::Extensions

        private

        def _assign_attributes(new_attributes)
          result = super

          if query_changed?
            @query_parser = Parser.new(self).parse(query)

            @query_parser.tagged.each do |k, p|
              next unless @attributes.key?(k)

              _assign_attribute(k, p.value)
            end

            if @query_parser.untagged.any? && (search = self.class.search_attribute)
              _assign_attribute(search, @query_parser.untagged.map(&:value).join(" "))
            end
          end

          result
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
katalyst-tables-3.8.0 app/models/concerns/katalyst/tables/collection/query.rb
katalyst-tables-3.7.0 app/models/concerns/katalyst/tables/collection/query.rb
katalyst-tables-3.6.2 app/models/concerns/katalyst/tables/collection/query.rb
katalyst-tables-3.6.1 app/models/concerns/katalyst/tables/collection/query.rb
katalyst-tables-3.6.0 app/models/concerns/katalyst/tables/collection/query.rb
katalyst-tables-3.5.5 app/models/concerns/katalyst/tables/collection/query.rb
katalyst-tables-3.5.4 app/models/concerns/katalyst/tables/collection/query.rb
katalyst-tables-3.5.3 app/models/concerns/katalyst/tables/collection/query.rb
katalyst-tables-3.5.2 app/models/concerns/katalyst/tables/collection/query.rb
katalyst-tables-3.5.1 app/models/concerns/katalyst/tables/collection/query.rb
katalyst-tables-3.5.0 app/models/concerns/katalyst/tables/collection/query.rb