1 class Locmare.ListGroupModule.LibModule.Pager
\r
3 @factory: (page_status, params) ->
\r
4 c = @pagers()[page_status.type]
\r
5 return null if not page_status.total_page
\r
6 new c({page_status: page_status, params: params})
\r
10 default: Locmare.ListGroupModule.LibModule.PagerModule.Default,
\r
11 offset: Locmare.ListGroupModule.LibModule.PagerModule.Offset,
\r
12 unlimited: Locmare.ListGroupModule.LibModule.PagerModule.Unlimited,
\r
13 more: Locmare.ListGroupModule.LibModule.PagerModule.More
\r
16 class Locmare.ListGroupModule.LibModule.PagerModule
\r
17 class Locmare.ListGroupModule.LibModule.PagerModule.Default extends Pettanr.View
\r
19 className: 'pagination'
\r
21 initialize: (options) ->
\r
22 @page_status = options.page_status
\r
23 @params = options.params
\r
24 @total = @page_status.total
\r
27 @controller = Manifest.manifest().controllers[@params['controller']]
\r
28 @action = @controller.actions[@params['action']]
\r
29 @action = @action.original if @action.original
\r
31 @current_page = @page_status.page
\r
32 @per_page = @page_status.page_size
\r
33 @total_page = @page_status.total_page
\r
37 if @hasPreviousPage()
\r
38 view = new Locmare.ListGroupModule.LibModule.PagerModule.FirstPage({
\r
39 parent: this, page: 1, class_name: 'first'
\r
41 @listenTo(view, 'navigate', @navigate)
\r
42 @listenTo(view, 'page', @click)
\r
43 this.$el.append(view.render().el)
\r
44 if @hasPreviousPage()
\r
45 view = new Locmare.ListGroupModule.LibModule.PagerModule.PrevPage({
\r
46 parent: this, page: @current_page - 1, class_name: 'prev'
\r
48 @listenTo(view, 'navigate', @navigate)
\r
49 @listenTo(view, 'page', @click)
\r
50 this.$el.append(view.render().el)
\r
51 if @hasPreviousPageGap()
\r
53 (new Locmare.ListGroupModule.LibModule.PagerModule.PageGap()).render().el
\r
55 _.each @range(), (page) =>
\r
56 view = new Locmare.ListGroupModule.LibModule.PagerModule.Page({
\r
57 parent: this, page: page, class_name: 'page'
\r
59 @listenTo(view, 'navigate', @navigate)
\r
60 @listenTo(view, 'page', @click)
\r
61 this.$el.append(view.render().el)
\r
62 if @hasNextPageGap()
\r
64 (new Locmare.ListGroupModule.LibModule.PagerModule.PageGap()).render().el
\r
67 view = new Locmare.ListGroupModule.LibModule.PagerModule.NextPage({
\r
68 parent: this, page: @current_page + 1, class_name: 'next'
\r
70 @listenTo(view, 'navigate', @navigate)
\r
71 @listenTo(view, 'page', @click)
\r
72 this.$el.append(view.render().el)
\r
74 view = new Locmare.ListGroupModule.LibModule.PagerModule.LastPage({
\r
75 parent: this, page: @total_page, class_name: 'last'
\r
77 @listenTo(view, 'navigate', @navigate)
\r
78 @listenTo(view, 'page', @click)
\r
79 this.$el.append(view.render().el)
\r
84 f = if @hasPreviousPageGap()
\r
85 @current_page - @window_size
\r
88 t = if @hasNextPageGap()
\r
89 @current_page + @window_size
\r
94 hasPreviousPage: () ->
\r
98 @current_page < @total_page
\r
100 hasPreviousPageGap: () ->
\r
101 @current_page > @window_size + 1
\r
103 hasNextPageGap: () ->
\r
104 @total_page - @current_page > @window_size
\r
108 _.each @params, (v, k) -> # deep copy
\r
110 params['page'] = page
\r
111 params['page_size'] = @per_page
\r
115 @trigger('page', page)
\r
118 @trigger('http_get', url)
\r
120 class Locmare.ListGroupModule.LibModule.PagerModule.Part extends Pettanr.View
\r
123 initialize: (options) ->
\r
124 @parent = options.parent
\r
125 @page = options.page
\r
126 @el.className = options.class_name
\r
129 if @page == @parent.current_page
\r
130 this.$el.html(@content())
\r
132 linked_caption = new Tag.A({
\r
133 attr: {href: '/' + @url()},
\r
134 content: @content()
\r
136 @listenTo(linked_caption, 'click', @click)
\r
137 this.$el.html(linked_caption.render().el)
\r
147 @trigger('page', @page)
\r
148 @trigger('navigate', @url())
\r
150 class Locmare.ListGroupModule.LibModule.PagerModule.FirstPage extends Locmare.ListGroupModule.LibModule.PagerModule.Part
\r
156 @trigger('page', @page)
\r
157 @trigger('navigate', @url())
\r
159 class Locmare.ListGroupModule.LibModule.PagerModule.PrevPage extends Locmare.ListGroupModule.LibModule.PagerModule.Part
\r
164 class Locmare.ListGroupModule.LibModule.PagerModule.PageGap extends Pettanr.View
\r
166 className: 'page-gap'
\r
169 this.$el.html('...')
\r
172 class Locmare.ListGroupModule.LibModule.PagerModule.Page extends Locmare.ListGroupModule.LibModule.PagerModule.Part
\r
175 Pettanr.to_s(@page)
\r
177 class Locmare.ListGroupModule.LibModule.PagerModule.NextPage extends Locmare.ListGroupModule.LibModule.PagerModule.Part
\r
182 class Locmare.ListGroupModule.LibModule.PagerModule.LastPage extends Locmare.ListGroupModule.LibModule.PagerModule.Part
\r
187 class Locmare.ListGroupModule.LibModule.PagerModule.More extends Pettanr.View
\r
189 className: 'pagination'
\r
191 initialize: (options) ->
\r
192 @params = options.params
\r
194 @controller = Manifest.manifest().controllers[@params['controller']]
\r
195 @action = @controller.actions[@params['action']]
\r
196 @action = @action.original if @action.original
\r
200 linked_caption = new Tag.A({
\r
201 attr: {href: '/' + @url()},
\r
204 @listenTo(linked_caption, 'click', @click)
\r
205 this.$el.html(linked_caption.render().el)
\r
209 @action.url @params
\r
212 @trigger('http_get', @url())
\r