module ActiveAdmin::Filters::ResourceExtension

Public Class Methods

new(*) click to toggle source
Calls superclass method
# File lib/active_admin/filters/resource_extension.rb, line 6
def initialize(*)
  super
  add_filters_sidebar_section
end

Public Instance Methods

add_filter(attribute, options = {}) click to toggle source

Add a filter for this resource. If filters are not enabled, this method will raise a RuntimeError

@param [Symbol] attribute The attribute to filter on @param [Hash] options The set of options that are passed through to

ransack for the field definition.
# File lib/active_admin/filters/resource_extension.rb, line 59
def add_filter(attribute, options = {})
  unless filters_enabled?
    raise RuntimeError, "Can't add a filter when filters are disabled. Enable filters with 'config.filters = true'"
  end

  @filters ||= []
  @filters << options.merge({ :attribute => attribute })
end
filters() click to toggle source

Returns the filters for this resource. If filters are not enabled, it will always return an empty array.

@return [Array] Filters that apply for this resource

# File lib/active_admin/filters/resource_extension.rb, line 15
def filters
  return [] unless filters_enabled?
  filter_lookup
end
filters=(bool) click to toggle source

Setter to enable / disable filters on this resource.

Set to `nil` to inherit the setting from the namespace

# File lib/active_admin/filters/resource_extension.rb, line 23
def filters=(bool)
  @filters_enabled = bool
end
filters_enabled?() click to toggle source

@return [Boolean] If filters are enabled for this resource

# File lib/active_admin/filters/resource_extension.rb, line 28
def filters_enabled?
  @filters_enabled.nil? ? namespace.filters : @filters_enabled
end
preserve_default_filters!() click to toggle source
# File lib/active_admin/filters/resource_extension.rb, line 32
def preserve_default_filters!
  @preserve_default_filters = true
end
preserve_default_filters?() click to toggle source
# File lib/active_admin/filters/resource_extension.rb, line 36
def preserve_default_filters?
  @preserve_default_filters == true
end
remove_filter(attribute) click to toggle source

Remove a filter for this resource. If filters are not enabled, this method will raise a RuntimeError

@param [Symbol] attribute The attribute to not filter on

# File lib/active_admin/filters/resource_extension.rb, line 44
def remove_filter(attribute)
  unless filters_enabled?
    raise RuntimeError, "Can't remove a filter when filters are disabled. Enable filters with 'config.filters = true'"
  end

  @filters_to_remove ||= []
  @filters_to_remove << attribute
end
reset_filters!() click to toggle source

Reset the filters to use defaults

# File lib/active_admin/filters/resource_extension.rb, line 69
def reset_filters!
  @filters = nil
  @filters_to_remove = nil
end

Private Instance Methods

add_filters_sidebar_section() click to toggle source
# File lib/active_admin/filters/resource_extension.rb, line 116
def add_filters_sidebar_section
  self.sidebar_sections << filters_sidebar_section
end
default_association_filters() click to toggle source

Returns a default set of filters for the associations

# File lib/active_admin/filters/resource_extension.rb, line 97
def default_association_filters
  if resource_class.respond_to?(:reflections)
    poly, not_poly = resource_class.reflections.partition{ |_,r| r.macro == :belongs_to && r.options[:polymorphic] }
    filters        = poly.map{ |_,r| r.foreign_type } + not_poly.map(&:first)
    filters.collect{ |name| { :attribute => name.to_sym } }
  else
    []
  end
end
default_content_filters() click to toggle source

Returns a default set of filters for the content columns

# File lib/active_admin/filters/resource_extension.rb, line 108
def default_content_filters
  if resource_class.respond_to?(:content_columns)
    resource_class.content_columns.collect{ |c| { :attribute => c.name.to_sym } }
  else
    []
  end
end
default_filters() click to toggle source

@return [Array] The array of default filters for this resource

# File lib/active_admin/filters/resource_extension.rb, line 92
def default_filters
  default_association_filters + default_content_filters
end
filter_lookup() click to toggle source

Collapses the waveform, if you will, of which filters should be displayed. Removes filters and adds in default filters as desired.

# File lib/active_admin/filters/resource_extension.rb, line 78
def filter_lookup
  filters = @filters.try(:dup) || []
  filters.push *default_filters if filters.empty? || preserve_default_filters?

  if @filters_to_remove
    @filters_to_remove.each do |attr|
      filters.delete_if{ |f| f.fetch(:attribute) == attr }
    end
  end

  filters
end
filters_sidebar_section() click to toggle source
# File lib/active_admin/filters/resource_extension.rb, line 120
def filters_sidebar_section
  ActiveAdmin::SidebarSection.new(:filters, :only => :index, :if => proc{ active_admin_config.filters.any? } ) do
    active_admin_filters_form_for assigns[:search], active_admin_config.filters
  end
end