Sha256: bb6c951360e41d7a3c97ce2ea43db8d003d79f7697b01443ae9ee9b4a59a2b47

Contents?: true

Size: 1.63 KB

Versions: 4

Compression:

Stored size: 1.63 KB

Contents

module ActiveAdmin
  module Inputs
    module AjaxCore
      DEFAULT_LIMIT = 5

      def pluck_column
        klass.reorder("#{method} asc").limit(collection_limit).uniq.pluck(method)
      end

      def input_html_options
        super.merge(
          'data-limit' => collection_limit,
          'data-value-field' => value_field,
          'data-search-fields' => search_fields,
          'data-ajax-search-fields' => ajax_search_fields,
          'data-ordering' => ordering,
          'data-ransack' => ransack,
          'data-static-ransack' => static_ransack,
          'data-selected-value' => selected_value,
          'data-url' => url,
        )
      end

      def ajax_data
        options[:data] || {}
      end

      def collection_limit
        ajax_data[:limit] || DEFAULT_LIMIT
      end

      def collection_from_association
        super.try(:limit, collection_limit)
      end

      def value_field
        ajax_data[:value_field] || :id
      end

      def search_fields
        ajax_data[:search_fields] || raise(ArgumentError, 'search_fields in required')
      end

      def ajax_search_fields
        ajax_data[:ajax_search_fields]
      end

      def ordering
        ajax_data[:ordering] || "#{search_fields.first} ASC"
      end

      def ransack
        ajax_data[:ransack] || "#{search_fields.join('_or_')}_cont"
      end

      def static_ransack
        ajax_data.fetch(:static_ransack, {}).to_json
      end

      def url
        ajax_data[:url] || "#{method.to_s.pluralize}/filter"
      end

      def selected_value
        if @object
          @object.try(:send, input_name)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
activeadmin-ajax_filter-0.3.4 lib/active_admin/inputs/ajax_core.rb
activeadmin-ajax_filter-0.3.3 lib/active_admin/inputs/ajax_core.rb
activeadmin-ajax_filter-0.3.2 lib/active_admin/inputs/ajax_core.rb
activeadmin-ajax_filter-0.3.1 lib/active_admin/inputs/ajax_core.rb