module Manifest
- module ListModule
- class BaseList
- attr :model, :list_name, :list_manifest,
- :default_page_size, :max_page_size
- def initialize model, list_name, list_manifest
- @model = model
- @list_name = list_name
- @list_manifest = list_manifest
- self.set_default
- self.init
+ module ModelModule
+ module ListModule
+ class Base
+ attr :model, :list_name, :list_manifest, :type,
+ :default_page_size, :max_page_size
+ def initialize model, list_name, list_manifest
+ @model = model
+ @list_name = list_name
+ @list_manifest = list_manifest
+ self.set_default
+ self.init
+ end
- @model = ::Manifest.item_name_to_model self.model_name
- @table_name = @model.table_name
- if @model.content?
- @owner_model = @model.owner_model
- @owner_table_name = @owner_model.table_name if @owner_model
+ def set_default
+ self.list_manifest['args'] ||= {}
+ @list_manifest['args']['default_page_size'] ||= 25
+ @list_manifest['args']['max_page_size'] ||= 100
end
- end
-
- def set_default
- self.list_manifest['args'] ||= {}
- @list_manifest['args']['default_page_size'] ||= 25
- @list_manifest['args']['max_page_size'] ||= 100
- end
-
- def init
- @args = @list_manifest['args']
- @default_page_size = @list_manifest['args']['default_page_size']
- @max_page_size = @list_manifest['args']['max_page_size']
- end
-
- def model_name
- @model.model_name
- end
-
- def model_manifest
- @model.model_manifest
- end
-
- def page_number prm = nil
- page = prm.to_i
- page = 1 if page < 1
- page
- end
-
- def page_size prm
- page_size = prm.to_i
- page_size = @max_page_size if page_size > @max_page_size
- page_size = @default_page_size if page_size < 1
- page_size
- end
-
- def where
- @model.list_where
- end
-
- def includes
- if @owner_model
- if @owner_model.owner_model
- {@owner_model.item_name => {@owner_model.owner_model.item_name => {}}}
- else
- {@owner_model.item_name => {}}
- end
- else
- {}
+
+ def init
+ @type = @list_manifest['type']
+ @args = @list_manifest['args']
+ @default_page_size = @list_manifest['args']['default_page_size']
+ @max_page_size = @list_manifest['args']['max_page_size']
+ end
+
+ def model_name
+ @model.model_name
+ end
+
+ def model_manifest
+ @model.model_manifest
+ end
+
+ def self.add_action item_name, action_name, list_name, list_conf
+ return
end
end
- def order
- @model.list_order
- end
-
- def a page, page_size, operators
- @page = self.page_number(page)
- @page_size = self.page_size page_size
- @offset = (@page -1) * @page_size
- end
-
- def items
- @model.where(self.where()).includes(self.includes).order(self.order).offset(@offset).limit(@page_size)
- end
-
- def paginate
- c = @model.where(self.where()).includes(self.includes).count
- Kaminari.paginate_array(Array.new(c, nil)).page(@offset).per(@page_size)
- end
-
- def self.add_action item_name, action_name, list_name, list_conf
- return
- end
end
-
end
end