OSDN Git Service

change page status
[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     @list_group_name = options.list_group_name\r
5     @list_name = options.list_name\r
6     @operators = options.operators\r
7     @params = options.options\r
8     \r
9     @list_group_manifest = LocalManifest.manifest().list_groups[@list_group_name]\r
10     @list_manifest = @list_group_manifest.lists[@list_name]\r
11     \r
12     @controller_name = @list_group_name\r
13     @action_name = @list_name\r
14     @controller_manifest = Manifest.manifest().controllers[@controller_name]\r
15     @action_manifest = @controller_manifest.actions[@action_name]\r
16     @item_name = @action_manifest.item_name\r
17     @model_manifest = Manifest.manifest().models[@item_name]\r
18     @model_class = Manifest.item_name_to_model @item_name\r
19     @table_name = @model_class.table_name()\r
20   \r
21   parse: (res) ->\r
22     @s = res.page_status\r
23     res.list\r
24   \r
25   page_number: (prm = null) ->\r
26     page = Pettanr.to_i(parseInt(prm))\r
27     page = 1 if page < 1\r
28     page\r
29   \r
30   page_size: (prm) ->\r
31     page_size = Pettanr.to_i(parseInt(prm))\r
32     page_size = @max_page_size() if page_size > @max_page_size()\r
33     page_size = @default_page_size() if page_size < 1\r
34     page_size\r
35   \r
36   default_page_size: () ->\r
37     @model_list_manifest.default_page_size\r
38   \r
39   max_page_size: () ->\r
40     @model_list_manifest.max_page_size\r
41   \r
42   items: () ->\r
43     _this = this\r
44     _.map @models, (model) ->\r
45       new _this.model_class(model.attributes)\r
46   \r
47   count: () ->\r
48     new Pettanr.CounterModel({}, {url: '/' + @action_manifest.counter_url(@params)})\r
49   \r
50   open: (cb) ->\r
51     page = @params['page'] \r
52     page_size = @params['page_size'] \r
53     @url = '/' + @action_manifest.url(@params)\r
54     _this = this\r
55     counter = new Locmare.ListGroupModule.Counter({}, {url: '/' + @action_manifest.counter_url(@params)})\r
56     counter.fetch({cache: true}).done ->\r
57       page_status = new Locmare.ListGroupModule.PageStatus(page, page_size, counter.count(), _this.params)\r
58       _this.fetch({cache: true}).done ->\r
59         #_this.boost(items)\r
60         cb(page_status)\r
61   \r
62 class Locmare.ListGroupModule.Counter extends Backbone.Model\r
63   initialize: (attr, options) ->\r
64     @url = options['url']\r
65   \r
66   count: () ->\r
67     @get('count')\r
68   \r
69 class Locmare.ListGroupModule.PageStatus\r
70   \r
71   constructor: (@current_page, @per_page, @count, @params) ->\r
72     @window_size = 3\r
73   \r