class ActiveAdmin::Filters::ActiveFilter
Attributes
condition[R]
resource[R]
Public Class Methods
new(resource, condition)
click to toggle source
Instantiate a `ActiveFilter`
@param resource [ActiveAdmin::Resource] current resource @param condition [Ransack::Nodes::Condition] applied ransack condition
# File lib/active_admin/filters/active_filter.rb, line 13 def initialize(resource, condition) @resource = resource @condition = condition @related_class = find_class if find_class? end
Public Instance Methods
html_options()
click to toggle source
# File lib/active_admin/filters/active_filter.rb, line 45 def html_options { class: "current_filter current_filter_#{condition.key}" } end
label()
click to toggle source
# File lib/active_admin/filters/active_filter.rb, line 28 def label # TODO: to remind us to go back to the simpler str.downcase once we support ruby >= 2.4 only. translated_predicate = predicate_name.mb_chars.downcase.to_s if filter_label "#{filter_label} #{translated_predicate}" elsif related_class "#{related_class_name} #{translated_predicate}" else "#{attribute_name} #{translated_predicate}" end.strip end
predicate_name()
click to toggle source
# File lib/active_admin/filters/active_filter.rb, line 40 def predicate_name I18n.t("active_admin.filters.predicates.#{condition.predicate.name}", default: ransack_predicate_name) end
values()
click to toggle source
# File lib/active_admin/filters/active_filter.rb, line 19 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
attribute_name()
click to toggle source
# File lib/active_admin/filters/active_filter.rb, line 55 def attribute_name resource_class.human_attribute_name(name) end
condition_attribute()
click to toggle source
@return Ransack::Nodes::Attribute
# File lib/active_admin/filters/active_filter.rb, line 72 def condition_attribute condition.attributes[0] end
filter()
click to toggle source
# File lib/active_admin/filters/active_filter.rb, line 97 def filter resource.filters[name.to_sym] end
filter_label()
click to toggle source
# File lib/active_admin/filters/active_filter.rb, line 65 def filter_label return unless filter filter[:label] end
find_class()
click to toggle source
detect related class for Ransack::Nodes::Attribute
# File lib/active_admin/filters/active_filter.rb, line 89 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
find_class?()
click to toggle source
# File lib/active_admin/filters/active_filter.rb, line 84 def find_class? ['eq', 'in'].include? condition.predicate.arel_predicate end
find_predicate_association()
click to toggle source
# File lib/active_admin/filters/active_filter.rb, line 116 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
name()
click to toggle source
# File lib/active_admin/filters/active_filter.rb, line 76 def name condition_attribute.attr_name end
predicate_association()
click to toggle source
# File lib/active_admin/filters/active_filter.rb, line 109 def predicate_association @predicate_association = find_predicate_association unless defined?(@predicate_association) @predicate_association end
ransack_predicate_name()
click to toggle source
# File lib/active_admin/filters/active_filter.rb, line 80 def ransack_predicate_name Ransack::Translate.predicate(condition.predicate.name) end
resource_class()
click to toggle source
# File lib/active_admin/filters/active_filter.rb, line 51 def resource_class resource.resource_class end