5 def initialize page, page_size, operators, item_name, list_name, conf, manifest
11 @default_page_size = @conf['default_page_size'] || 25
12 @max_page_size = @conf['max_page_size'] || 100
13 @page = self.page_number(page)
14 @page_size = self.page_size page_size
16 @model = @item_name.classify.constantize
17 @offset = (@page -1) * @page_size
20 def page_number prm = nil
28 page_size = @max_page_size if page_size > @max_page_size
29 page_size = @default_page_size if page_size < 1
38 @model.where(self.where()).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
42 Kaminari.paginate_array(Array.new(@model.where(self.where()).includes(@model.list_opt).count, nil)).page(@offset).per(@page_size)
48 def initialize page, page_size, operators, item_name, list_name, conf, manifest
49 @operators = operators
50 @item_name = item_name
51 @list_name = list_name
54 @default_page_size = @conf['default_page_size'] || 25
55 @max_page_size = @conf['max_page_size'] || 100
56 @page = self.page_number(page)
57 @page_size = self.page_size page_size
59 @model = @item_name.classify.constantize
60 @offset = (@page -1) * @page_size
63 def page_number prm = nil
71 page_size = @max_page_size if page_size > @max_page_size
72 page_size = @default_page_size if page_size < 1
81 @model.where(self.where()).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
85 Kaminari.paginate_array(Array.new(@model.where(self.where()).includes(@model.list_opt).count, nil)).page(@offset).per(@page_size)
90 class SystemResourceList
92 @model.where(self.where()).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size).delete_if {|sbt|
93 Pettanr::Application.manifest.system_resources.speech_balloon_templates[sbt.classname] == nil
98 Kaminari.paginate_array(Array.new(@model.where(self.where()).includes(@model.list_opt).count, nil)).page(@offset).per(@page_size)
104 def initialize page, page_size, operators, item_name, list_name, conf, manifest
105 @operators = operators
106 @item_name = item_name
109 @default_page_size = @conf['default_page_size'] || 25
110 @max_page_size = @conf['max_page_size'] || 100
111 @page = self.page_number(page)
112 @page_size = self.page_size page_size
114 @model = @item_name.classify.constantize
115 @offset = (@page -1) * @page_size
118 def page_number prm = nil
126 page_size = @max_page_size if page_size > @max_page_size
127 page_size = @default_page_size if page_size < 1
132 case @model.owner_type
134 operator = @operators.author
136 operator = @operators.artist
138 [@model.plural + '.' + @model.owner_type.to_s + '_id = ?', operator.id]
142 @model.where(self.where()).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
146 Kaminari.paginate_array(Array.new(@model.where(self.where()).includes(@model.list_opt).count, nil)).page(@offset).per(@page_size)
152 def initialize page, page_size, operators, item_name, list_name, conf, manifest
153 @operators = operators
154 @item_name = item_name
155 @list_name = list_name
158 @default_page_size = @conf['default_page_size'] || 25
159 @max_page_size = @conf['max_page_size'] || 100
160 @page = self.page_number(page)
161 @page_size = self.page_size page_size
163 @model = @item_name.classify.constantize
164 @offset = (@page -1) * @page_size
165 @association_name = @conf['association_name']
166 @has_many_conf = @manifest.model(@item_name).associations['has_many'] || {}
167 @association_conf = @has_many_conf[@association_name] || {}
168 @association_model_name = @association_conf['model']
169 @association_model = @association_model_name.classify.constantize
170 @foreign_key = @association_conf['foreign_key']
173 def page_number prm = nil
181 page_size = @max_page_size if page_size > @max_page_size
182 page_size = @default_page_size if page_size < 1
186 def where parent_item
187 w = @model.list_where
188 w += ' and ' unless w.blank?
189 [w + @association_model_name + '.' + @foreign_key + ' = ?', parent_item.id]
192 def items parent_item
193 @model.where(self.where(parent_item)).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
196 def paginate parent_item
197 Kaminari.paginate_array(Array.new(@model.where(self.where(parent_item)).includes(@model.list_opt).count, nil)).page(@offset).per(@page_size)
203 def initialize page, page_size, operators, item_name, list_name, conf, manifest
204 @operators = operators
205 @item_name = item_name
206 @list_name = list_name
209 @default_page_size = @conf['default_page_size'] || 25
210 @max_page_size = @conf['max_page_size'] || 100
211 @page = self.page_number(page)
212 @page_size = self.page_size page_size
214 @model = @item_name.classify.constantize
215 @table_name = @model.table_name
216 @offset = (@page -1) * @page_size
217 @list_list_conf = @manifest.list(@item_name).lists[list_name] || {}
218 @from = @list_list_conf['from']
219 @filter_key = @list_list_conf['filter_key']
222 def page_number prm = nil
230 page_size = @max_page_size if page_size > @max_page_size
231 page_size = @default_page_size if page_size < 1
239 def where filter_item
240 w = @model.list_where
241 w += ' and ' unless w.blank?
242 [w + @table_name + '.' + @filter_key + ' = ?', filter_item.id]
245 def items filter_item
246 @model.where(self.where(filter_item)).includes(self.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
249 def paginate filter_item
250 Kaminari.paginate_array(Array.new(@model.where(self.where(filter_item)).includes(self.list_opt).count, nil)).page(@offset).per(@page_size)
255 class ThroughFilterList
256 def initialize page, page_size, operators, item_name, list_name, conf, manifest
257 @operators = operators
258 @item_name = item_name
259 @list_name = list_name
262 @default_page_size = @conf['default_page_size'] || 25
263 @max_page_size = @conf['max_page_size'] || 100
264 @page = self.page_number(page)
265 @page_size = self.page_size page_size
267 @model = @item_name.classify.constantize
268 @table_name = @model.table_name
269 @offset = (@page -1) * @page_size
270 @list_list_conf = @manifest.list(@item_name).lists[list_name] || {}
271 @filter_key = @list_list_conf['filter_key']
272 @from = @list_list_conf['from']
273 @through = @list_list_conf['through']
276 def page_number prm = nil
284 page_size = @max_page_size if page_size > @max_page_size
285 page_size = @default_page_size if page_size < 1
290 {@through => {@from => {}} }
293 def where filter_item
294 w = @model.list_where
295 w += ' and ' unless w.blank?
296 [w + @through + '.' + @filter_key + ' = ?', filter_item.id]
299 def items filter_item
300 @model.where(self.where(filter_item)).includes(self.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
303 def paginate filter_item
304 Kaminari.paginate_array(Array.new(@model.where(self.where(filter_item)).includes(self.list_opt).count, nil)).page(@offset).per(@page_size)
309 @@types = {'public' => PublicList, 'system_resource' => SystemResourceList, 'private' => PrivateList, 'has_many' => HasManyList, 'filter' => FilterList, 'through_filter' => ThroughFilterList}
310 def initialize list_manifest
311 @list_manifest = list_manifest
312 @item_name = @list_manifest.item_name
313 @manifest = @list_manifest.manifest
314 @list_conf = @list_manifest.conf
316 @list_manifest.lists.each {|list_name, conf|
318 @lists[list_name] = @@types[type]
322 def open list_name, page, page_size, operators
323 @lists[list_name].new page, page_size, operators, @item_name, list_name, @list_conf, @manifest