From 940c0cf1eb31bcdb1e7dc915323e35759bbaa880 Mon Sep 17 00:00:00 2001 From: yasushiito Date: Wed, 3 Sep 2014 14:04:59 +0900 Subject: [PATCH] fix paginator --- app/assets/javascripts/ap.js | 1 - .../file_body/file_item/edit/account.js.coffee | 2 +- .../file_body/file_item/edit/default.js.coffee | 8 +- .../file_body/file_item/icon/default.js.coffee | 7 +- .../javascripts/locmare/filer/header.js.coffee | 14 ++- .../javascripts/locmare/filer/pager.js.coffee | 120 +++++++++++++++------ app/assets/javascripts/pettanr/tags.js.coffee | 14 ++- app/assets/stylesheets/test.css.scss | 2 + 8 files changed, 119 insertions(+), 49 deletions(-) diff --git a/app/assets/javascripts/ap.js b/app/assets/javascripts/ap.js index 2ecfbfba..4693988b 100644 --- a/app/assets/javascripts/ap.js +++ b/app/assets/javascripts/ap.js @@ -241,7 +241,6 @@ //= require ./i18n/translations //= require_directory ./controllers //= require_directory ./models -//= require_directory ./views //= require ./pettanr/tags //= require ./pettanr/picture //= require ./pettanr/pettan_imager diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/account.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/account.js.coffee index 4d32e1f1..b2eb0715 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/account.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/account.js.coffee @@ -7,7 +7,7 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum half: true }) @edit_btn = new Pettanr.Tag.A({ - href: '/home/configure', + attr: {href: '/home/configure'}, content: @edit_icon.render().el }) diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee index 9932daa7..391c89f6 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/edit/default.js.coffee @@ -6,16 +6,20 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.EditItemColum attr: {'src': @edit_img_file_name()}, half: true }) + url = Pettanr.url(@item.table_name(), 'edit', {id: @item.get('id')}) @edit_btn = new Pettanr.Tag.A({ - href: '/' + Pettanr.url(@item.table_name(), 'edit', {id: @item.get('id')}), + attr: {href: '/' + url}, + handler_name: url, content: @edit_icon.render().el }) @remove_icon = new Pettanr.Picture.SymbolImg({ attr: {'src': @remove_img_file_name()}, half: true }) + url = Pettanr.url(@item.table_name(), 'destroy', {id: @item.get('id')}) @remove_btn = new Pettanr.Tag.A({ - href: '/' + Pettanr.url(@item.table_name(), 'destroy', {id: @item.get('id')}), + attr: {href: '/' + url}, + handler_name: url, content: @remove_icon.render().el }) diff --git a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/default.js.coffee b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/default.js.coffee index b17f2645..40410469 100644 --- a/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/default.js.coffee +++ b/app/assets/javascripts/locmare/filer/body/file_body/file_item/icon/default.js.coffee @@ -4,13 +4,16 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.IconItemColum super(options) render: () -> - i = new Pettanr.Picture.SymbolImg({ + icon = new Pettanr.Picture.SymbolImg({ class_name: 'face', attr: { src: @icon_file_name() } }) - a = new Pettanr.Tag.A({href: @path_name(), content: i.render().el}) + a = new Pettanr.Tag.A({ + attr: {href: @path_name()}, + content: icon.render().el + }) this.$el.html(a.render().el) this diff --git a/app/assets/javascripts/locmare/filer/header.js.coffee b/app/assets/javascripts/locmare/filer/header.js.coffee index 47804b9e..2895abec 100644 --- a/app/assets/javascripts/locmare/filer/header.js.coffee +++ b/app/assets/javascripts/locmare/filer/header.js.coffee @@ -6,13 +6,17 @@ class Locmare.FilerModule.Header extends Backbone.View render: () -> this.$el.html('') - icon = new Pettanr.Picture.Icon({item: @model()}) + icon = new Pettanr.Picture.Icon({item: @model(), half: true}) caption = Pettanr.AppHelper.t_m(@model().singular()) url = Pettanr.url(@model().table_name(), 'index', {}) - linked_icon = new Pettanr.Tag.A({href: url, content: icon.render().el}) - linked_caption = new Pettanr.Tag.A({href: url, content: caption}) - this.$el.append(linked_icon) - this.$el.append(linked_caption) + linked_icon = new Pettanr.Tag.A({ + attr: {href: url}, handler_name: url, content: icon.render().el + }) + linked_caption = new Pettanr.Tag.A({ + attr: {href: '/' + url}, handler_name: url, content: caption + }) + this.$el.append(linked_icon.render().el) + this.$el.append(linked_caption.render().el) this model: () -> diff --git a/app/assets/javascripts/locmare/filer/pager.js.coffee b/app/assets/javascripts/locmare/filer/pager.js.coffee index 9f4dd43d..e8222be8 100644 --- a/app/assets/javascripts/locmare/filer/pager.js.coffee +++ b/app/assets/javascripts/locmare/filer/pager.js.coffee @@ -1,24 +1,4 @@ -class Locmare.FilerModule.Pager extends Backbone.View - tagName: 'ul' - className: 'pagination' - - initialize: (options) -> - @filer = options.filer - - total_result: () -> - _this = this - t = @filer.list_result.total - t.fetch().done -> - a = t.count - _this.render() - - list_result: () -> - @filer.list_result - - api_path: () -> - list_result().path - -class Locmare.FilerModule.DefaultPager extends Locmare.FilerModule.Pager +class Locmare.FilerModule.DefaultPager extends Backbone.View tagName: 'ul' className: 'pagination' @@ -28,12 +8,14 @@ class Locmare.FilerModule.DefaultPager extends Locmare.FilerModule.Pager @current_page = @page_status.current_page @per_page = @page_status.per_page @window_size = @page_status.window_size + @params = @page_status.params @parts = [] _this = this @counter.fetch().done -> _this.total = _this.counter.get('count') _this.total_page = Math.floor(_this.total / _this.per_page) + 1 - _this.render() + if _this.total_page > 1 + _this.render() render: () -> @parts = [] @@ -47,9 +29,10 @@ class Locmare.FilerModule.DefaultPager extends Locmare.FilerModule.Pager this build: () -> - @parts.push(new Locmare.FilerModule.DefaultPager.FirstPage({})) if @hasPreviousPage() - @parts.push(new Locmare.FilerModule.DefaultPager.PrevPage({})) if @hasPreviousPage() - @parts.push(new Locmare.FilerModule.DefaultPager.PageGap({})) if @hasPreviousPageGap() + opt = {pager: this, page_status: @page_status} + @parts.push(new Locmare.FilerModule.DefaultPager.FirstPage(opt)) if @hasPreviousPage() + @parts.push(new Locmare.FilerModule.DefaultPager.PrevPage(opt)) if @hasPreviousPage() + @parts.push(new Locmare.FilerModule.DefaultPager.PageGap(opt)) if @hasPreviousPageGap() f = if @hasPreviousPageGap() @current_page - @window_size else @@ -59,10 +42,10 @@ class Locmare.FilerModule.DefaultPager extends Locmare.FilerModule.Pager else @total_page for page in [f..t] - @parts.push(new Locmare.FilerModule.DefaultPager.Page({page: page})) - @parts.push(new Locmare.FilerModule.DefaultPager.PageGap({})) if @hasNextPageGap() - @parts.push(new Locmare.FilerModule.DefaultPager.NextPage({})) if @hasNextPage() - @parts.push(new Locmare.FilerModule.DefaultPager.LastPage({})) if @hasNextPage() + @parts.push(new Locmare.FilerModule.DefaultPager.Page({pager: this, page: page, page_status: @page_status})) + @parts.push(new Locmare.FilerModule.DefaultPager.PageGap(opt)) if @hasNextPageGap() + @parts.push(new Locmare.FilerModule.DefaultPager.NextPage(opt)) if @hasNextPage() + @parts.push(new Locmare.FilerModule.DefaultPager.LastPage(opt)) if @hasNextPage() hasPreviousPage: () -> @current_page > 1 @@ -80,18 +63,46 @@ class Locmare.FilerModule.DefaultPager.FirstPage extends Backbone.View tagName: 'li' className: 'first' + initialize: (options) -> + @page_status = options.page_status + @params = @page_status.params + render: () -> - this.$el.html('<<') + my_params = {} + _.extend(my_params, @params) + my_params['page'] = 1 + url = Pettanr.url(my_params['controller'], my_params['action'], my_params) + linked_caption = new Pettanr.Tag.A({ + attr: {href: '/' + url}, + handler_name: url, + content: '<<' + }) + this.$el.html(linked_caption.render().el) this class Locmare.FilerModule.DefaultPager.PrevPage extends Backbone.View tagName: 'li' className: 'prev' + initialize: (options) -> + @page_status = options.page_status + @current_page = @page_status.current_page + @params = @page_status.params + render: () -> - this.$el.html('<') + my_params = {} + _.extend(my_params, @params) + my_params['page'] = @current_page - 1 + url = Pettanr.url(my_params['controller'], my_params['action'], my_params) + linked_caption = new Pettanr.Tag.A({ + attr: {href: '/' + url}, + handler_name: url, + content: '<' + }) + this.$el.html(linked_caption.render().el) this + class Locmare.FilerModule.DefaultPager.PageGap extends Backbone.View tagName: 'li' className: 'page-gap' @@ -105,27 +116,66 @@ class Locmare.FilerModule.DefaultPager.Page extends Backbone.View className: 'page' initialize: (options) -> + @page_status = options.page_status @page = options.page + @params = @page_status.params render: () -> - this.$el.html(@page) + my_params = {} + _.extend(my_params, @params) + my_params['page'] = @page + url = Pettanr.url(my_params['controller'], my_params['action'], my_params) + linked_caption = new Pettanr.Tag.A({ + attr: {href: '/' + url}, + handler_name: url, + content: @page + }) + this.$el.html(linked_caption.render().el) this class Locmare.FilerModule.DefaultPager.NextPage extends Backbone.View tagName: 'li' className: 'next' + initialize: (options) -> + @page_status = options.page_status + @current_page = @page_status.current_page + @params = @page_status.params + render: () -> - this.$el.html('>') + my_params = {} + _.extend(my_params, @params) + my_params['page'] = @current_page + 1 + url = Pettanr.url(my_params['controller'], my_params['action'], my_params) + linked_caption = new Pettanr.Tag.A({ + attr: {href: '/' + url}, + handler_name: url, + content: '>' + }) + this.$el.html(linked_caption.render().el) this class Locmare.FilerModule.DefaultPager.LastPage extends Backbone.View tagName: 'li' className: 'last' + initialize: (options) -> + @page_status = options.page_status + @pager = options.pager + @params = @page_status.params + render: () -> - this.$el.html('>>') + my_params = {} + _.extend(my_params, @params) + my_params['page'] = @pager.total_page + url = Pettanr.url(my_params['controller'], my_params['action'], my_params) + linked_caption = new Pettanr.Tag.A({ + attr: {href: '/' + url}, + handler_name: url, + content: '>>' + }) + this.$el.html(linked_caption.render().el) this -class Locmare.FilerModule.MorePager extends Locmare.FilerModule.Pager +class Locmare.FilerModule.MorePager extends Backbone.View diff --git a/app/assets/javascripts/pettanr/tags.js.coffee b/app/assets/javascripts/pettanr/tags.js.coffee index ff14503a..e7297f8f 100644 --- a/app/assets/javascripts/pettanr/tags.js.coffee +++ b/app/assets/javascripts/pettanr/tags.js.coffee @@ -16,18 +16,26 @@ class Pettanr.Tag.Img extends Backbone.View class Pettanr.Tag.A extends Backbone.View tagName: 'a' + events: { + 'click': 'click' + } initialize: (options) -> - @href = options.href + @attr = options.attr + @handler_name = options.handler_name @content = options.content @class_name = options.class_name render: () -> - this.$el.attr('href', @href) + this.$el.attr(@attr) @el.className = @class_name this.$el.html(@content) this - + + click: () -> + window.router.navigate(@handler_name, true) if @handler_name + return false + class Pettanr.Tag.Div extends Backbone.View tagName: 'div' diff --git a/app/assets/stylesheets/test.css.scss b/app/assets/stylesheets/test.css.scss index 10c154de..c01c9efe 100644 --- a/app/assets/stylesheets/test.css.scss +++ b/app/assets/stylesheets/test.css.scss @@ -645,5 +645,7 @@ ul.pagination { ul.pagination li { float: left; + padding: 3px; + font-size: 20px; } -- 2.11.0