Class: AdminIt::CollectionContext
Class Attribute Summary collapse
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Class Attribute Details
.default_sorting ⇒ Object
Returns the value of attribute default_sorting.
13
14
15
|
# File 'lib/admin_it/context/collection_context.rb', line 13
def default_sorting
@default_sorting
end
|
.entities_getter ⇒ Object
Returns the value of attribute entities_getter.
13
14
15
|
# File 'lib/admin_it/context/collection_context.rb', line 13
def entities_getter
@entities_getter
end
|
Instance Attribute Details
#entities ⇒ Object
def entities=(value)
@entities = value
end
177
178
179
180
181
182
183
184
185
186
187
|
# 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
|
#entity ⇒ Object
Returns the value of attribute entity.
52
53
54
|
# File 'lib/admin_it/context/collection_context.rb', line 52
def entity
@entity
end
|
Class Method Details
22
23
24
25
26
27
28
29
30
31
|
# 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? ⇒ Boolean
37
38
39
|
# File 'lib/admin_it/context/collection_context.rb', line 37
def self.collection?
true
end
|
.filter(name) ⇒ Object
Originally defined in module
FiltersHolder
.filters(scope: :all) ⇒ Object
Originally defined in module
FiltersHolder
.path ⇒ Object
41
42
43
|
# 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? ⇒ Boolean
33
34
35
|
# 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) ⇒ Object
45
46
47
48
49
50
|
# 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
|
Instance Method Details
#active_filter ⇒ Object
131
132
133
|
# File 'lib/admin_it/context/collection_context.rb', line 131
def active_filter
@active_filter ||= filters.empty? ? nil : filters.first
end
|
#active_filter=(value) ⇒ Object
135
136
137
138
139
140
141
142
143
144
|
# 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) ⇒ Object
106
107
108
|
# File 'lib/admin_it/context/collection_context.rb', line 106
def all_filters(scope: :all)
self.class.filters(scope: scope)
end
|
#count ⇒ Object
189
190
191
192
193
194
195
|
# File 'lib/admin_it/context/collection_context.rb', line 189
def count
return @count unless @count.nil?
entities if @enumerator.nil?
@count = entities.count
end
|
#filters ⇒ Object
110
111
112
|
# File 'lib/admin_it/context/collection_context.rb', line 110
def filters
(@filters ||= {}).values
end
|
#filters=(value) ⇒ Object
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# 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 ⇒ Object
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
# 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 ⇒ Object
150
151
152
|
# File 'lib/admin_it/context/collection_context.rb', line 150
def sortable
@sortable ||= sortable_fields.map(&:name)
end
|
#sortable_fields ⇒ Object
146
147
148
|
# File 'lib/admin_it/context/collection_context.rb', line 146
def sortable_fields
@sortable_fields ||= fields(scope: :sortable)
end
|
#sorting ⇒ Object
75
76
77
78
|
# 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) ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# 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
|