class Locmare.FilerModule.Pager extends Backbone.View\r
- tagName: 'div'\r
+ tagName: 'ul'\r
+ className: 'pagination'\r
\r
initialize: (options) ->\r
@filer = options.filer\r
api_path: () ->\r
list_result().path\r
\r
-class Locmare.FilerModule.NonePager extends Locmare.FilerModule.Pager\r
- \r
class Locmare.FilerModule.DefaultPager extends Locmare.FilerModule.Pager\r
+ tagName: 'ul'\r
+ className: 'pagination'\r
+ \r
+ initialize: (options) ->\r
+ @page_status = options.page_status\r
+ @counter = @page_status.counter\r
+ @current_page = @page_status.current_page\r
+ @per_page = @page_status.per_page\r
+ @window_size = @page_status.window_size\r
+ @parts = []\r
+ _this = this\r
+ @counter.fetch().done ->\r
+ _this.total = _this.counter.get('count')\r
+ _this.total_page = Math.floor(_this.total / _this.per_page) + 1\r
+ _this.render()\r
+ \r
+ render: () ->\r
+ @parts = []\r
+ @build()\r
+ _this = this\r
+ this.$el.html('')\r
+ _.each @parts, (part) ->\r
+ _this.$el.append(part.render().el)\r
+ rb = new Pettanr.Tag.Div({class_name: 'row_break'})\r
+ this.$el.append(rb.render().el)\r
+ this\r
+ \r
+ build: () ->\r
+ @parts.push(new Locmare.FilerModule.DefaultPager.FirstPage({})) if @hasPreviousPage()\r
+ @parts.push(new Locmare.FilerModule.DefaultPager.PrevPage({})) if @hasPreviousPage()\r
+ @parts.push(new Locmare.FilerModule.DefaultPager.PageGap({})) if @hasPreviousPageGap()\r
+ f = if @hasPreviousPageGap()\r
+ @current_page - @window_size\r
+ else\r
+ 1\r
+ t = if @hasNextPageGap()\r
+ @current_page + @window_size\r
+ else\r
+ @total_page\r
+ for page in [f..t]\r
+ @parts.push(new Locmare.FilerModule.DefaultPager.Page({page: page}))\r
+ @parts.push(new Locmare.FilerModule.DefaultPager.PageGap({})) if @hasNextPageGap()\r
+ @parts.push(new Locmare.FilerModule.DefaultPager.NextPage({})) if @hasNextPage()\r
+ @parts.push(new Locmare.FilerModule.DefaultPager.LastPage({})) if @hasNextPage()\r
+ \r
+ hasPreviousPage: () ->\r
+ @current_page > 1\r
+ \r
+ hasNextPage: () ->\r
+ @current_page < @total_page\r
+ \r
+ hasPreviousPageGap: () ->\r
+ @current_page > @window_size + 1\r
+ \r
+ hasNextPageGap: () ->\r
+ @total_page - @current_page > @window_size\r
+ \r
+class Locmare.FilerModule.DefaultPager.FirstPage extends Backbone.View\r
+ tagName: 'li'\r
+ className: 'first'\r
+ \r
+ render: () ->\r
+ this.$el.html('<<')\r
+ this\r
+ \r
+class Locmare.FilerModule.DefaultPager.PrevPage extends Backbone.View\r
+ tagName: 'li'\r
+ className: 'prev'\r
+ \r
+ render: () ->\r
+ this.$el.html('<')\r
+ this\r
+ \r
+class Locmare.FilerModule.DefaultPager.PageGap extends Backbone.View\r
+ tagName: 'li'\r
+ className: 'page-gap'\r
+ \r
+ render: () ->\r
+ this.$el.html('...')\r
+ this\r
+ \r
+class Locmare.FilerModule.DefaultPager.Page extends Backbone.View\r
+ tagName: 'li'\r
+ className: 'page'\r
+ \r
+ initialize: (options) ->\r
+ @page = options.page\r
+ \r
+ render: () ->\r
+ this.$el.html(@page)\r
+ this\r
+ \r
+class Locmare.FilerModule.DefaultPager.NextPage extends Backbone.View\r
+ tagName: 'li'\r
+ className: 'next'\r
+ \r
+ render: () ->\r
+ this.$el.html('>')\r
+ this\r
+ \r
+class Locmare.FilerModule.DefaultPager.LastPage extends Backbone.View\r
+ tagName: 'li'\r
+ className: 'last'\r
+ \r
+ render: () ->\r
+ this.$el.html('>>')\r
+ this\r
\r
class Locmare.FilerModule.MorePager extends Locmare.FilerModule.Pager\r
\r