4 attr :model, :list_name, :list_manifest,
5 :default_page_size, :max_page_size
6 def initialize model, list_name, list_manifest
9 @list_manifest = list_manifest
13 @model = ::Manifest.item_name_to_model self.model_name
14 @table_name = @model.table_name
16 @owner_model = @model.owner_model
17 @owner_table_name = @owner_model.table_name if @owner_model
22 self.list_manifest['args'] ||= {}
23 @list_manifest['args']['default_page_size'] ||= 25
24 @list_manifest['args']['max_page_size'] ||= 100
28 @args = @list_manifest['args']
29 @default_page_size = @list_manifest['args']['default_page_size']
30 @max_page_size = @list_manifest['args']['max_page_size']
41 def page_number prm = nil
49 page_size = @max_page_size if page_size > @max_page_size
50 page_size = @default_page_size if page_size < 1
60 if @owner_model.owner_model
61 {@owner_model.item_name => {@owner_model.owner_model.item_name => {}}}
63 {@owner_model.item_name => {}}
74 def a page, page_size, operators
75 @page = self.page_number(page)
76 @page_size = self.page_size page_size
77 @offset = (@page -1) * @page_size
81 @model.where(self.where()).includes(self.includes).order(self.order).offset(@offset).limit(@page_size)
85 c = @model.where(self.where()).includes(self.includes).count
86 Kaminari.paginate_array(Array.new(c, nil)).page(@offset).per(@page_size)
89 def self.add_action item_name, action_name, list_name, list_conf