Sha256: 7407c6d1fc65133cc5516aca0508f6b57cca6beed013146d97fd33aa7ac4ab90

Contents?: true

Size: 1.89 KB

Versions: 7

Compression:

Stored size: 1.89 KB

Contents

# This is a common set of Formtastic overrides needed to build a filter form
# that lets you select from a set of search methods for a given attribute.
#
# Your class must declare available filters for this module to work.
# Those filters must be recognizable by Metasearch. For example:
#
#   class FilterNumericInput < ::Formtastic::Inputs::NumberInput
#     include FilterBase
#     include FilterBase::SearchMethodSelect
#
#     filter :equals, :greater_than, :less_than
#   end
#
module ActiveAdmin
  module Inputs
    module FilterBase
      module SearchMethodSelect

        def self.included(base)
          base.extend ClassMethods
        end

        module ClassMethods
          attr_reader :filters

          def filter(*filters)
            (@filters ||= []).push *filters
          end
        end

        def wrapper_html_options
          opts = super
          (opts[:class] ||= '') << ' select_and_search'
          opts
        end

        def to_html
          input_wrapping do
            label_html  << # your label
            select_html << # the dropdown that holds the available search methods
            input_html     # your input field
          end
        end

        def input_html
          builder.text_field current_filter, input_html_options
        end

        def select_html
          template.select_tag '', template.options_for_select(filter_options, current_filter)
        end

        def filters
          options[:filters] || self.class.filters
        end

        def current_filter
          @current_filter ||= begin
            methods = filters.map{ |f| "#{method}_#{f}" }
            methods.detect{ |m| @object.send m } || methods.first
          end
        end

        def filter_options
          filters.collect do |filter|
            [I18n.t("active_admin.filters.predicates.#{filter}"), "#{method}_#{filter}"]
          end
        end

      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
activeadmin-0.6.6 lib/active_admin/inputs/filter_base/search_method_select.rb
activeadmin-0.6.5 lib/active_admin/inputs/filter_base/search_method_select.rb
activeadmin-0.6.4 lib/active_admin/inputs/filter_base/search_method_select.rb
activeadmin-0.6.3 lib/active_admin/inputs/filter_base/search_method_select.rb
activeadmin-0.6.2 lib/active_admin/inputs/filter_base/search_method_select.rb
activeadmin-0.6.1 lib/active_admin/inputs/filter_base/search_method_select.rb
aa-rails4-0.6.0 lib/active_admin/inputs/filter_base/search_method_select.rb