class AdminIt::CollectionContext
Attributes
default_sorting[R]
entities_getter[R]
entities[W]
entity[RW]
Public Class Methods
before_configure()
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 22 def self.before_configure return if resource.nil? visible = fields(scope: :visible).map(&:field_name) @filters = Hash[ resource.filters .select { |f| f <= FieldFilter } .select { |f| visible.include?(f.field.field_name) } .map { |f| [f.filter_name, f] } ] end
collection?()
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 37 def self.collection? true end
path()
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 41 def self.path AdminIt::Engine.routes.url_helpers.send("#{resource.plural}_path") end
show_in_dialog?()
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 33 def self.show_in_dialog? @show_in_dialog.nil? ? @show_in_dialog = true : @show_in_dialog == true end
sortable_fields(*names)
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 45 def self.sortable_fields(*names) names = names.ensure_array(:flatten, :ensure_symbol, :compact, :uniq) fields.each do |_field| _field.sortable = names.include?(_field.field_name) end end
Public Instance Methods
active_filter()
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 131 def active_filter @active_filter ||= filters.empty? ? nil : filters.first end
active_filter=(value)
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 135 def active_filter=(value) if value.nil? active_filter elsif value.is_a?(Class) && value <= Filter @active_filter = value elsif value.is_a?(String) value = value.to_sym @active_filter = filters.find { |f| f.name == value } end end
all_filters(scope: :all)
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 106 def all_filters(scope: :all) self.class.filters(scope: scope) end
count()
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 189 def count return @count unless @count.nil? # apply filters and limits first entities if @enumerator.nil? # if @count is not setted yet - calculate it @count = entities.count end
entities()
click to toggle source
def entities=(value)
@entities = value
end
# File lib/admin_it/context/collection_context.rb, line 177 def entities self.entity = nil collection = self @enumerator ||= Enumerator.new do |yielder| @entities.each do |v| collection.entity = v yielder << v end collection.entity = nil end end
filters()
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 110 def filters (@filters ||= {}).values end
filters=(value)
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 114 def filters=(value) if value.is_a?(Array) @filters = Hash[ value.select { |f| f.is_a?(Filter) }.map { |f| [f.name, f] } ] elsif value.is_a?(Hash) self.filters = value.values elsif value.is_a?(String) @filters ||= {} value.strip! @filters = {} if value.empty? Filter.apply(value, @filters, self.class.filters) else @filters = {} end end
load_context()
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 154 def load_context collection = if entities_getter.nil? if controller.respond_to?("#{resource.name}_entities") controller.send("#{resource.name}_entities", name) elsif controller.respond_to?(:entities) controller.entities(entity_class, name) else load_entities end else entities_getter.call end filters.each do |filter| collection = filter.apply(collection) end self.entities = collection end
sortable()
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 150 def sortable @sortable ||= sortable_fields.map(&:name) end
sortable_fields()
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 146 def sortable_fields @sortable_fields ||= fields(scope: :sortable) end
sorting()
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 75 def sorting return @sorting unless @sorting.nil? self.sorting = self.class.default_sorting end
sorting=(value)
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 80 def sorting=(value) value = value.to_s if value.is_a?(Symbol) if value.is_a?(Array) @sorting = value elsif value.is_a?(String) && !value.empty? @sorting = [] unless /\W[+\-]\w/ =~ value @sorting ||= [] sortable = self.class.fields(scope: :sortable).map(&:field_name) value.split(/[;,|]/).each do |sort| sort.strip! if sort[0] == '-' sort = sort[1..-1] + ':' @sorting.delete_if { |s| s.index(sort) == 0 } else sort = sort[1..-1] if sort[0] == '+' sort, order = sort.split(':') order = 'asc' if order != 'desc' sort = sort.to_sym @sorting << "#{sort}:#{order}" if sortable.include?(sort) end end else @sorting = [] end end
Protected Instance Methods
load_entities()
click to toggle source
# File lib/admin_it/context/collection_context.rb, line 199 def load_entities [] end