OSDN Git Service

77e0e0473d16f50d3def36e0a1f63ed25c0bbed3
[pettanr/pettanr.git] / app / assets / javascripts / locmare / list_group / list / base.js.coffee
1 class Locmare.ListGroupModule.Base extends Backbone.Collection\r
2   \r
3   initialize: (options) ->\r
4     @item_name = options.item_name\r
5     @list_name = options.list_name\r
6     @list_group_manifest = LocalManifest.manifest().list_groups[@item_name]\r
7     @list_manifest = @list_group_manifest.lists[@list_name]\r
8     @model_manifest = Manifest.manifest().models[@item_name]\r
9     @model_list_manifest = @model_manifest.list\r
10     @model_class = Manifest.item_name_to_model @item_name\r
11     @table_name = @model_class.table_name()\r
12   \r
13   page_number: (prm = null) ->\r
14     page = Pettanr.to_i(parseInt(prm))\r
15     page = 1 if page < 1\r
16     page\r
17   \r
18   page_size: (prm) ->\r
19     page_size = Pettanr.to_i(parseInt(prm))\r
20     page_size = @max_page_size() if page_size > @max_page_size()\r
21     page_size = @default_page_size() if page_size < 1\r
22     page_size\r
23   \r
24   default_page_size: () ->\r
25     @model_list_manifest.default_page_size\r
26   \r
27   max_page_size: () ->\r
28     @model_list_manifest.max_page_size\r
29   \r
30   count: (operators, params, action) ->\r
31     new Pettanr.CounterModel({}, {url: '/' + action.counter_url(params)})\r
32   \r
33   open: (operators, params, _action, options, cb) ->\r
34     page = @page_number(params['page']) \r
35     page_size = @page_size(params['page_size'])\r
36     controller = Manifest.manifest().controllers[@table_name]\r
37     an = if @list_name == 'select_items'  #hogeee\r
38       'index'\r
39     else\r
40       @list_name\r
41     action = controller.actions[an]\r
42     #offset = (page - 1) * page_size\r
43     #items = @items(operators, params, offset, page_size, action)\r
44     @url = '/' + action.url(params)\r
45     _this = this\r
46     counter = new Locmare.ListGroupModule.Counter({}, {url: '/' + action.counter_url(params)})\r
47     counter.fetch().done ->\r
48       page_status = new Locmare.ListGroupModule.PageStatus(page, page_size, counter.count())\r
49       _this.fetch(options).done ->\r
50         #_this.boost(items)\r
51         cb(page_status)\r
52   \r
53 class Locmare.ListGroupModule.Counter extends Backbone.Model\r
54   initialize: (attr, options) ->\r
55     @url = options['url']\r
56   \r
57   count: () ->\r
58     @get('count')\r
59   \r
60 class Locmare.ListGroupModule.PageStatus\r
61   \r
62   constructor: (@current_page, @per_page, @count) ->\r
63     @window_size = 3\r
64   \r