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
53 @default_page_size = @conf['default_page_size'] || 25
54 @max_page_size = @conf['max_page_size'] || 100
55 @page = self.page_number(page)
56 @page_size = self.page_size page_size
58 @model = @item_name.classify.constantize
59 @offset = (@page -1) * @page_size
62 def page_number prm = nil
70 page_size = @max_page_size if page_size > @max_page_size
71 page_size = @default_page_size if page_size < 1
76 case @model.owner_type
78 operator = @operators.author
80 operator = @operators.artist
82 [@model.plural + '.' + @model.owner_type.to_s + '_id = ?', operator.id]
86 @model.where(self.where()).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
90 Kaminari.paginate_array(Array.new(@model.where(self.where()).includes(@model.list_opt).count, nil)).page(@offset).per(@page_size)
96 def initialize page, page_size, operators, item_name, list_name, conf, manifest
97 @operators = operators
98 @item_name = item_name
99 @list_name = list_name
102 @default_page_size = @conf['default_page_size'] || 25
103 @max_page_size = @conf['max_page_size'] || 100
104 @page = self.page_number(page)
105 @page_size = self.page_size page_size
107 @model = @item_name.classify.constantize
108 @offset = (@page -1) * @page_size
109 @association_name = @conf['association_name']
110 @has_many_conf = @manifest.model(@item_name).associations['has_many'] || {}
111 @association_conf = @has_many_conf[@association_name] || {}
112 @association_model_name = @association_conf['model']
113 @association_model = @association_model_name.classify.constantize
114 @foreign_key = @association_conf['foreign_key']
117 def page_number prm = nil
125 page_size = @max_page_size if page_size > @max_page_size
126 page_size = @default_page_size if page_size < 1
130 def where parent_item
131 w = @model.list_where
132 w += ' and ' unless w.blank?
133 [w + @association_model_name + '.' + @foreign_key + ' = ?', parent_item.id]
136 def items parent_item
137 @model.where(self.where(parent_item)).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
141 Kaminari.paginate_array(Array.new(@model.where(self.where(parent_item)).includes(@model.list_opt).count, nil)).page(@offset).per(@page_size)
147 def initialize page, page_size, operators, item_name, list_name, conf, manifest
148 @operators = operators
149 @item_name = item_name
150 @list_name = list_name
153 @default_page_size = @conf['default_page_size'] || 25
154 @max_page_size = @conf['max_page_size'] || 100
155 @page = self.page_number(page)
156 @page_size = self.page_size page_size
158 @model = @item_name.classify.constantize
159 @table_name = @model.table_name
160 @offset = (@page -1) * @page_size
161 @list_list_conf = @manifest.list(@item_name).lists[list_name] || {}
162 @from = @list_list_conf['from']
163 @filter_key = @list_list_conf['filter_key']
166 def page_number prm = nil
174 page_size = @max_page_size if page_size > @max_page_size
175 page_size = @default_page_size if page_size < 1
183 def where filter_item
184 w = @model.list_where
185 w += ' and ' unless w.blank?
186 [w + @table_name + '.' + @filter_key + ' = ?', filter_item.id]
189 def items filter_item
190 @model.where(self.where(filter_item)).includes(self.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
193 def paginate filter_item
194 Kaminari.paginate_array(Array.new(@model.where(self.where(filter_item)).includes(self.list_opt).count, nil)).page(@offset).per(@page_size)
199 class ThroughFilterList
200 def initialize page, page_size, operators, item_name, list_name, conf, manifest
201 @operators = operators
202 @item_name = item_name
203 @list_name = list_name
206 @default_page_size = @conf['default_page_size'] || 25
207 @max_page_size = @conf['max_page_size'] || 100
208 @page = self.page_number(page)
209 @page_size = self.page_size page_size
211 @model = @item_name.classify.constantize
212 @table_name = @model.table_name
213 @offset = (@page -1) * @page_size
214 @list_list_conf = @manifest.list(@item_name).lists[list_name] || {}
215 @filter_key = @list_list_conf['filter_key']
216 @from = @list_list_conf['from']
217 @through = @list_list_conf['through']
220 def page_number prm = nil
228 page_size = @max_page_size if page_size > @max_page_size
229 page_size = @default_page_size if page_size < 1
234 {@through => {@from => {}} }
237 def where filter_item
238 w = @model.list_where
239 w += ' and ' unless w.blank?
240 [w + @through + '.' + @filter_key + ' = ?', filter_item.id]
243 def items filter_item
244 @model.where(self.where(filter_item)).includes(self.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
247 def paginate filter_item
248 Kaminari.paginate_array(Array.new(@model.where(self.where(filter_item)).includes(self.list_opt).count, nil)).page(@offset).per(@page_size)
253 @@types = {'public' => PublicList, 'private' => PrivateList, 'has_many' => HasManyList, 'filter' => FilterList, 'through_filter' => ThroughFilterList}
254 def initialize list_manifest
255 @list_manifest = list_manifest
256 @item_name = @list_manifest.item_name
257 @manifest = @list_manifest.manifest
258 @list_conf = @list_manifest.conf
260 @list_manifest.lists.each {|list_name, conf|
262 @lists[list_name] = @@types[type]
266 def open list_name, page, page_size, operators
267 @lists[list_name].new page, page_size, operators, @item_name, list_name, @list_conf, @manifest