OSDN Git Service

rename model name
[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   page_number: (prm = null) ->\r
22     page = Pettanr.to_i(parseInt(prm))\r
23     page = 1 if page < 1\r
24     page\r
25   \r
26   page_size: (prm) ->\r
27     page_size = Pettanr.to_i(parseInt(prm))\r
28     page_size = @max_page_size() if page_size > @max_page_size()\r
29     page_size = @default_page_size() if page_size < 1\r
30     page_size\r
31   \r
32   default_page_size: () ->\r
33     @model_list_manifest.default_page_size\r
34   \r
35   max_page_size: () ->\r
36     @model_list_manifest.max_page_size\r
37   \r
38   items: () ->\r
39     _this = this\r
40     _.map @models, (model) ->\r
41       new _this.model_class(model.attributes)\r
42   \r
43   count: () ->\r
44     new Pettanr.CounterModel({}, {url: '/' + @action_manifest.counter_url(@params)})\r
45   \r
46   open: (cb) ->\r
47     page = @params['page'] \r
48     page_size = @params['page_size'] \r
49     @url = '/' + @action_manifest.url(@params)\r
50     _this = this\r
51     counter = new Locmare.ListGroupModule.Counter({}, {url: '/' + @action_manifest.counter_url(@params)})\r
52     counter.fetch({cache: true}).done ->\r
53       page_status = new Locmare.ListGroupModule.PageStatus(page, page_size, counter.count(), _this.params)\r
54       _this.fetch({cache: true}).done ->\r
55         #_this.boost(items)\r
56         cb(page_status)\r
57   \r
58 class Locmare.ListGroupModule.Counter extends Backbone.Model\r
59   initialize: (attr, options) ->\r
60     @url = options['url']\r
61   \r
62   count: () ->\r
63     @get('count')\r
64   \r
65 class Locmare.ListGroupModule.PageStatus\r
66   \r
67   constructor: (@current_page, @per_page, @count, @params) ->\r
68     @window_size = 3\r
69   \r