class ActiveAdmin::Filters::ActiveFilter
Attributes
Public Class Methods
Source
# File lib/active_admin/filters/active_filter.rb, line 14 def initialize(resource, condition) @resource = resource @condition = condition @related_class = find_class if find_class? end
Instantiate a ‘ActiveFilter`
@param resource [ActiveAdmin::Resource] current resource @param condition [Ransack::Nodes::Condition] applied ransack condition
Public Instance Methods
Source
# File lib/active_admin/filters/active_filter.rb, line 48 def html_options { class: "current_filter current_filter_#{condition.key}" } end
Source
# File lib/active_admin/filters/active_filter.rb, line 29 def label translated_predicate = predicate_name.downcase if filter_label && filter_label.is_a?(Proc) "#{filter_label.call} #{translated_predicate}" elsif filter_label "#{filter_label} #{translated_predicate}" elsif related_class "#{related_class_name} #{translated_predicate}" else "#{attribute_name} #{translated_predicate}" end.strip end
Source
# File lib/active_admin/filters/active_filter.rb, line 42 def predicate_name I18n.t( "ransack.predicates.#{condition.predicate.name}", default: ransack_predicate_name) end
Source
# File lib/active_admin/filters/active_filter.rb, line 20 def values condition_values = condition.values.map(&:value) if related_class related_class.where(related_primary_key => condition_values) else condition_values end end
Private Instance Methods
Source
# File lib/active_admin/filters/active_filter.rb, line 58 def attribute_name resource_class.human_attribute_name(name) end
Source
# File lib/active_admin/filters/active_filter.rb, line 75 def condition_attribute condition.attributes[0] end
@return Ransack::Nodes::Attribute
Source
# File lib/active_admin/filters/active_filter.rb, line 100 def filter resource.filters[name.to_sym] || resource.filters[condition.key.to_sym] end
Source
# File lib/active_admin/filters/active_filter.rb, line 68 def filter_label return unless filter filter[:label] || I18n.t(name, scope: ["formtastic", "labels"], default: nil) end
Source
# File lib/active_admin/filters/active_filter.rb, line 92 def find_class if condition_attribute.klass != resource_class && condition_attribute.klass.primary_key == name.to_s condition_attribute.klass elsif predicate_association predicate_association.klass end end
detect related class for Ransack::Nodes::Attribute
Source
# File lib/active_admin/filters/active_filter.rb, line 87 def find_class? ["eq", "in"].include? condition.predicate.arel_predicate end
Source
# File lib/active_admin/filters/active_filter.rb, line 117 def find_predicate_association condition_attribute.klass.reflect_on_all_associations. reject { |r| r.options[:polymorphic] }. #skip polymorphic detect { |r| r.foreign_key.to_s == name.to_s } end
Source
# File lib/active_admin/filters/active_filter.rb, line 79 def name condition_attribute.attr_name end
Source
# File lib/active_admin/filters/active_filter.rb, line 112 def predicate_association @predicate_association = find_predicate_association unless defined?(@predicate_association) @predicate_association end
Source
# File lib/active_admin/filters/active_filter.rb, line 83 def ransack_predicate_name Ransack::Translate.predicate(condition.predicate.name) end
Source
# File lib/active_admin/filters/active_filter.rb, line 54 def resource_class resource.resource_class end