1 class Locmare.ListGroupModule.LibModule.Pager
\r
2 @factory: (page_status, params) ->
\r
4 default: Locmare.ListGroupModule.LibModule.PagerModule.Default,
\r
5 offset: Locmare.ListGroupModule.LibModule.PagerModule.Offset,
\r
6 unlimited: Locmare.ListGroupModule.LibModule.PagerModule.Unlimited
\r
8 c = pagers[page_status.type]
\r
9 return null if not page_status.total_page
\r
10 new c({page_status: page_status, params: params})
\r
12 class Locmare.ListGroupModule.LibModule.PagerModule
\r
13 class Locmare.ListGroupModule.LibModule.PagerModule.Default extends Backbone.View
\r
15 className: 'pagination'
\r
17 initialize: (options) ->
\r
18 @page_status = options.page_status
\r
19 @params = options.params
\r
20 @total = @page_status.total
\r
23 @controller = Manifest.manifest().controllers[@params['controller']]
\r
24 @action = @controller.actions[@params['action']]
\r
25 @action = @action.original if @action.original
\r
27 @current_page = @page_status.page
\r
28 @per_page = @page_status.limit
\r
29 @total_page = @page_status.total_page
\r
33 if @hasPreviousPage()
\r
35 (new Locmare.ListGroupModule.LibModule.PagerModule.FirstPage({
\r
36 parent: this, page: 1, class_name: 'first'
\r
39 if @hasPreviousPage()
\r
41 (new Locmare.ListGroupModule.LibModule.PagerModule.PrevPage({
\r
42 parent: this, page: @current_page - 1, class_name: 'prev'
\r
45 if @hasPreviousPageGap()
\r
47 (new Locmare.ListGroupModule.LibModule.PagerModule.PageGap()).render().el
\r
50 _.each @range(), (page) ->
\r
52 (new Locmare.ListGroupModule.LibModule.PagerModule.Page({
\r
53 parent: _this, page: page, class_name: 'page'
\r
56 if @hasNextPageGap()
\r
58 (new Locmare.ListGroupModule.LibModule.PagerModule.PageGap()).render().el
\r
62 (new Locmare.ListGroupModule.LibModule.PagerModule.NextPage({
\r
63 parent: this, page: @current_page + 1, class_name: 'next'
\r
68 (new Locmare.ListGroupModule.LibModule.PagerModule.LastPage({
\r
69 parent: this, page: @total_page, class_name: 'last'
\r
72 rb = new Tag.RowBreak()
\r
73 this.$el.append(rb.render().el)
\r
77 f = if @hasPreviousPageGap()
\r
78 @current_page - @window_size
\r
81 t = if @hasNextPageGap()
\r
82 @current_page + @window_size
\r
87 hasPreviousPage: () ->
\r
91 @current_page < @total_page
\r
93 hasPreviousPageGap: () ->
\r
94 @current_page > @window_size + 1
\r
96 hasNextPageGap: () ->
\r
97 @total_page - @current_page > @window_size
\r
101 _.each @params, (v, k) -> # deep copy
\r
103 params['page'] = page
\r
104 params['page_size'] = @per_page
\r
107 class Locmare.ListGroupModule.LibModule.PagerModule.Part extends Backbone.View
\r
110 initialize: (options) ->
\r
111 @parent = options.parent
\r
112 @page = options.page
\r
113 @el.className = options.class_name
\r
116 url = @parent.url(@page)
\r
117 if @page == @parent.current_page
\r
118 this.$el.html(@content())
\r
120 linked_caption = new Tag.A({
\r
121 attr: {href: '/' + url},
\r
123 content: @content()
\r
125 this.$el.html(linked_caption.render().el)
\r
131 class Locmare.ListGroupModule.LibModule.PagerModule.FirstPage extends Locmare.ListGroupModule.LibModule.PagerModule.Part
\r
136 class Locmare.ListGroupModule.LibModule.PagerModule.PrevPage extends Locmare.ListGroupModule.LibModule.PagerModule.Part
\r
141 class Locmare.ListGroupModule.LibModule.PagerModule.PageGap extends Backbone.View
\r
143 className: 'page-gap'
\r
146 this.$el.html('...')
\r
149 class Locmare.ListGroupModule.LibModule.PagerModule.Page extends Locmare.ListGroupModule.LibModule.PagerModule.Part
\r
152 Pettanr.to_s(@page)
\r
154 class Locmare.ListGroupModule.LibModule.PagerModule.NextPage extends Locmare.ListGroupModule.LibModule.PagerModule.Part
\r
159 class Locmare.ListGroupModule.LibModule.PagerModule.LastPage extends Locmare.ListGroupModule.LibModule.PagerModule.Part
\r