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.
9
10
11
|
# File 'lib/admin_it/context/collection_context.rb', line 9
def default_sorting
@default_sorting
end
|
.entities_getter ⇒ Object
Returns the value of attribute entities_getter.
9
10
11
|
# File 'lib/admin_it/context/collection_context.rb', line 9
def entities_getter
@entities_getter
end
|
Instance Attribute Details
Returns the value of attribute entity.
48
49
50
|
# File 'lib/admin_it/context/collection_context.rb', line 48
def entity
@entity
end
|
Class Method Details
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/admin_it/context/collection_context.rb', line 18
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
33
34
35
|
# File 'lib/admin_it/context/collection_context.rb', line 33
def self.collection?
true
end
|
37
38
39
|
# File 'lib/admin_it/context/collection_context.rb', line 37
def self.path
AdminIt::Engine.routes.url_helpers.send("#{resource.plural}_path")
end
|
.show_in_dialog? ⇒ Boolean
29
30
31
|
# File 'lib/admin_it/context/collection_context.rb', line 29
def self.show_in_dialog?
@show_in_dialog.nil? ? @show_in_dialog = true : @show_in_dialog == true
end
|
.sortable_fields(*names) ⇒ Object
41
42
43
44
45
46
|
# File 'lib/admin_it/context/collection_context.rb', line 41
def self.sortable_fields(*names)
names = names.ensure_symbols
fields.each do |_field|
_field.sortable = names.include?(_field.field_name)
end
end
|
Instance Method Details
#active_filter ⇒ Object
126
127
128
|
# File 'lib/admin_it/context/collection_context.rb', line 126
def active_filter
@active_filter ||= filters.empty? ? nil : filters.first
end
|
#active_filter=(value) ⇒ Object
130
131
132
133
134
135
136
137
138
139
|
# File 'lib/admin_it/context/collection_context.rb', line 130
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
101
102
103
|
# File 'lib/admin_it/context/collection_context.rb', line 101
def all_filters(scope: :all)
self.class.filters(scope: scope)
end
|
184
185
186
187
188
189
190
|
# File 'lib/admin_it/context/collection_context.rb', line 184
def count
return @count unless @count.nil?
entities if @enumerator.nil?
@count = entities.count
end
|
172
173
174
175
176
177
178
179
180
181
182
|
# File 'lib/admin_it/context/collection_context.rb', line 172
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
|
#entities=(value) ⇒ Object
168
169
170
|
# File 'lib/admin_it/context/collection_context.rb', line 168
def entities=(value)
@entities = value
end
|
105
106
107
|
# File 'lib/admin_it/context/collection_context.rb', line 105
def filters
(@filters ||= {}).values
end
|
#filters=(value) ⇒ Object
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
# File 'lib/admin_it/context/collection_context.rb', line 109
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
# File 'lib/admin_it/context/collection_context.rb', line 149
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
|
145
146
147
|
# File 'lib/admin_it/context/collection_context.rb', line 145
def sortable
@sortable ||= sortable_fields.map(&:name)
end
|
#sortable_fields ⇒ Object
141
142
143
|
# File 'lib/admin_it/context/collection_context.rb', line 141
def sortable_fields
@sortable_fields ||= fields(scope: :sortable)
end
|
70
71
72
73
|
# File 'lib/admin_it/context/collection_context.rb', line 70
def sorting
return @sorting unless @sorting.nil?
self.sorting = self.class.default_sorting
end
|
#sorting=(value) ⇒ Object
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/admin_it/context/collection_context.rb', line 75
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
|