OSDN Git Service

fix paginator
[pettanr/pettanr.git] / app / assets / javascripts / locmare / filer / pager.js.coffee
1 class Locmare.FilerModule.Pager extends Backbone.View\r
2   tagName: 'ul'\r
3   className: 'pagination'\r
4   \r
5   initialize: (options) ->\r
6     @filer = options.filer\r
7   \r
8   total_result: () ->\r
9     _this = this\r
10     t = @filer.list_result.total\r
11     t.fetch().done ->\r
12       a = t.count\r
13       _this.render()\r
14   \r
15   list_result: () ->\r
16     @filer.list_result\r
17   \r
18   api_path: () ->\r
19     list_result().path\r
20   \r
21 class Locmare.FilerModule.DefaultPager extends Locmare.FilerModule.Pager\r
22   tagName: 'ul'\r
23   className: 'pagination'\r
24   \r
25   initialize: (options) ->\r
26     @page_status = options.page_status\r
27     @counter = @page_status.counter\r
28     @current_page = @page_status.current_page\r
29     @per_page = @page_status.per_page\r
30     @window_size = @page_status.window_size\r
31     @parts = []\r
32     _this = this\r
33     @counter.fetch().done ->\r
34       _this.total = _this.counter.get('count')\r
35       _this.total_page = Math.floor(_this.total / _this.per_page) + 1\r
36       _this.render()\r
37   \r
38   render: () ->\r
39     @parts = []\r
40     @build()\r
41     _this = this\r
42     this.$el.html('')\r
43     _.each @parts, (part) ->\r
44       _this.$el.append(part.render().el)\r
45     this.$el.append(div('row_break').render().el)\r
46     this\r
47   \r
48   build: () ->\r
49     @parts.push(new Locmare.FilerModule.DefaultPager.FirstPage({})) if @hasPreviousPage()\r
50     @parts.push(new Locmare.FilerModule.DefaultPager.PrevPage({})) if @hasPreviousPage()\r
51     @parts.push(new Locmare.FilerModule.DefaultPager.PageGap({})) if @hasPreviousPageGap()\r
52     f = if @hasPreviousPageGap()\r
53       @current_page - @window_size\r
54     else\r
55       1\r
56     t = if @hasNextPageGap()\r
57       @current_page + @window_size\r
58     else\r
59       @total_page\r
60     for page in [f..t]\r
61       @parts.push(new Locmare.FilerModule.DefaultPager.Page({page: page}))\r
62     @parts.push(new Locmare.FilerModule.DefaultPager.PageGap({})) if @hasNextPageGap()\r
63     @parts.push(new Locmare.FilerModule.DefaultPager.NextPage({})) if @hasNextPage()\r
64     @parts.push(new Locmare.FilerModule.DefaultPager.LastPage({})) if @hasNextPage()\r
65   \r
66   hasPreviousPage: () ->\r
67     @current_page > 1\r
68   \r
69   hasNextPage: () ->\r
70     @current_page < @total_page\r
71   \r
72   hasPreviousPageGap: () ->\r
73     @current_page > @window_size + 1\r
74   \r
75   hasNextPageGap: () ->\r
76     @total_page - @current_page > @window_size\r
77   \r
78 class Locmare.FilerModule.DefaultPager.FirstPage extends Backbone.View\r
79   tagName: 'li'\r
80   className: 'first'\r
81   \r
82   render: () ->\r
83     this.$el.html('<<')\r
84     this\r
85   \r
86 class Locmare.FilerModule.DefaultPager.PrevPage extends Backbone.View\r
87   tagName: 'li'\r
88   className: 'prev'\r
89   \r
90   render: () ->\r
91     this.$el.html('<')\r
92     this\r
93   \r
94 class Locmare.FilerModule.DefaultPager.PageGap extends Backbone.View\r
95   tagName: 'li'\r
96   className: 'page-gap'\r
97   \r
98   render: () ->\r
99     this.$el.html('...')\r
100     this\r
101   \r
102 class Locmare.FilerModule.DefaultPager.Page extends Backbone.View\r
103   tagName: 'li'\r
104   className: 'page'\r
105   \r
106   initialize: (options) ->\r
107     @page = options.page\r
108   \r
109   render: () ->\r
110     this.$el.html(@page)\r
111     this\r
112   \r
113 class Locmare.FilerModule.DefaultPager.NextPage extends Backbone.View\r
114   tagName: 'li'\r
115   className: 'next'\r
116   \r
117   render: () ->\r
118     this.$el.html('>')\r
119     this\r
120   \r
121 class Locmare.FilerModule.DefaultPager.LastPage extends Backbone.View\r
122   tagName: 'li'\r
123   className: 'last'\r
124   \r
125   render: () ->\r
126     this.$el.html('>>')\r
127     this\r
128   \r
129 class Locmare.FilerModule.MorePager extends Locmare.FilerModule.Pager\r
130   \r