OSDN Git Service

2e4d7b44ca6479dd97e5ea844de99ee37090080d
[pettanr/pettanr.git] / lib / manifest / local / view / list_group / list / filter.rb
1 module Manifest
2   module View
3     module ListGroupModule
4       class FilterList < Base
5         attr :filter_key, :filter_item_name
6         
7         def init
8           super
9           @filter_key = @list_manifest.filter_key
10           @filter_item_name = @list_manifest.filter_item_name
11         end
12         
13         def where_condition filter_item_id
14           w = self.base_where_condition
15           w += ' and ' unless w.blank?
16           [w + @table_name + '.' + @filter_key + ' = ?', filter_item_id] 
17         end
18         
19         def include_hash
20           w = super
21           w.merge!({@filter_item_name => {} }) unless w[@filter_item_name]
22           w
23         end
24         
25         def items operators, options, offset, page_size
26           filter_item_id = options[:id]
27           @model.where(self.where_condition(filter_item_id)).includes(self.include_hash).order(self.order).offset(offset).limit(page_size)
28         end
29         
30         def count operators, options
31           filter_item_id = options[:id]
32           @model.where(self.where_condition(filter_item_id)).includes(self.include_hash).count
33         end
34         
35       end
36       
37     end
38   end
39 end