X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=lib%2Fmanifest%2Fmodel%2Flist%2Fbase.rb;h=93df4ddf54c44df1f531971ea8c5b916b280cdd5;hb=f766f310391565120b1436281b9736f95f91f507;hp=805f3154862af24d16d4c65174ad9c818e8d06bc;hpb=582b4cdf60604911562e8253041754f392b3175f;p=pettanr%2Fpettanr.git diff --git a/lib/manifest/model/list/base.rb b/lib/manifest/model/list/base.rb index 805f3154..93df4ddf 100644 --- a/lib/manifest/model/list/base.rb +++ b/lib/manifest/model/list/base.rb @@ -1,95 +1,43 @@ 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