Sha256: 43ed2ba900fa00c6a5e1ebb60b2b4e14693e67512756caec1564d9d7b5a33b4d

Contents?: true

Size: 1.02 KB

Versions: 20

Compression:

Stored size: 1.02 KB

Contents

module Godmin
  module Resources
    module ResourceService
      module Filters
        extend ActiveSupport::Concern

        delegate :filter_map, to: "self.class"

        def apply_filters(filter_params, resources)
          if filter_params.present?
            filter_params.each do |name, value|
              if apply_filter?(name, value)
                resources = send("filter_#{name}", resources, value)
              end
            end
          end
          resources
        end

        private

        def apply_filter?(name, value)
          return false if value == [""]
          filter_map.key?(name.to_sym) && value.present?
        end

        module ClassMethods
          def filter_map
            @filter_map ||= {}
          end

          def filter(attr, options = {})
            filter_map[attr] = {
              as: :string,
              option_text: "to_s",
              option_value: "id",
              collection: nil
            }.merge(options)
          end
        end
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
godmin-2.3.0 lib/godmin/resources/resource_service/filters.rb
godmin-2.2.2 lib/godmin/resources/resource_service/filters.rb
godmin-2.2.1 lib/godmin/resources/resource_service/filters.rb
godmin-2.2.0 lib/godmin/resources/resource_service/filters.rb
godmin-2.1.0 lib/godmin/resources/resource_service/filters.rb
godmin-2.0.0 lib/godmin/resources/resource_service/filters.rb
godmin-1.5.0 lib/godmin/resources/resource_service/filters.rb
godmin-1.4.0 lib/godmin/resources/resource_service/filters.rb
godmin-1.3.1 lib/godmin/resources/resource_service/filters.rb
godmin-1.3.0 lib/godmin/resources/resource_service/filters.rb
godmin-1.2.0 lib/godmin/resources/resource_service/filters.rb
godmin-1.1.0 lib/godmin/resources/resource_service/filters.rb
godmin-1.0.0 lib/godmin/resources/resource_service/filters.rb
godmin-0.12.4 lib/godmin/resources/resource_service/filters.rb
godmin-0.12.3 lib/godmin/resources/resource_service/filters.rb
godmin-0.12.2 lib/godmin/resources/resource_service/filters.rb
godmin-0.12.1 lib/godmin/resources/resource_service/filters.rb
godmin-0.12.0 lib/godmin/resources/resource_service/filters.rb
godmin-0.11.2 lib/godmin/resources/resource_service/filters.rb
godmin-0.11.1 lib/godmin/resources/resource_service/filters.rb