module Manifest
- module ListModule
- class PlayList
- attr :model, :list_name, :list_manifest
-
- def initialize model, list_name, list_manifest
- @model = model
- @list_name = list_name
- @list_manifest = list_manifest
- self.set_default
- self.init
- end
-
- def set_default
- return
- @default_page_size = @conf['default_page_size'] || 25
- @max_page_size = @conf['max_page_size'] || 100
- @params_offset = params_offset
- @params_count = params_count
- @list_list_conf = @manifest.list(@item_name).lists[list_name] || {}
- @model_name = @list_list_conf['model']
- @filter_key = @list_list_conf['filter_key']
- @model = @model_name.classify.constantize
- @table_name = @model.table_name
- if @model.content?
- @owner_model = @model.owner_model
- @owner_table_name = @owner_model.table_name if @owner_model
+ module ModelModule
+ module ListModule
+ class PlayList
+ 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
- end
-
- def init
- end
-
- def list_name
- @list.list_name
- end
-
- def list_manifest
- @list.list_manifest
- end
-
- def offset cnt, prm = nil
- offset = prm.to_i
- offset = cnt - 1 if offset >= cnt
- offset = cnt - offset.abs if offset < 0
- offset = 0 if offset < 0
- offset
- end
-
- def limit prm
- prm ||= @default_page_size
- count = prm.to_i
- count = @max_page_size if count > @max_page_size
- count = @default_page_size if count < 1
- count
- end
-
- def count filter_item
- @count ||= @model.count(:conditions => self.where(filter_item), :include => self.includes).to_i
- end
-
- def where filter_item
- w = @model.list_where
- w += ' and ' unless w.blank?
- [w + @table_name + '.' + @filter_key + ' = ?', filter_item.id]
- end
-
- def includes
- {@owner_model.item_name => {}}
- end
-
- def order
- @table_name + '.t'
- end
-
- def items filter_item
- c = @count || self.count(filter_item)
- o = self.offset c, @offset
- l = self.limit @count
- @model.where(self.where(filter_item)).includes(self.includes).order(self.order).offset(o).limit(l)
- end
-
- def prev_offset filter_item
- c = @count || self.count(filter_item)
- o = self.offset c, @offset
- l = self.limit @count
- if o > 0
- if o - l < 0
- 0
- else
- o - l
+
+ def set_default
+ @list_manifest['args'] ||= {}
+ return
+ @default_page_size = @conf['default_page_size'] || 25
+ @max_page_size = @conf['max_page_size'] || 100
+ @params_offset = params_offset
+ @params_count = params_count
+ @list_list_conf = @manifest.list(@item_name).lists[list_name] || {}
+ @model_name = @list_list_conf['model']
+ @filter_key = @list_list_conf['filter_key']
+ @model = @model_name.classify.constantize
+ @table_name = @model.table_name
+ if @model.content?
+ @owner_model = @model.owner_model
+ @owner_table_name = @owner_model.table_name if @owner_model
end
- else
- nil
end
- end
-
- def next_offset filter_item
- c = @count || self.count(filter_item)
- o = self.offset c, @offset
- l = self.limit @count
- if o + l > c
- nil
- else
- o + l
+
+ def init
+ @type = @list_manifest['type']
+ @args = @list_manifest['args']
+ end
+
+ def self.add_action item_name, action_name, list_name, list_conf
+ return
end
end
- def self.add_action item_name, action_name, list_name, list_conf
- return
- end
end
-
end
end