From: yasushiito Date: Sat, 13 Jun 2015 10:05:50 +0000 (+0900) Subject: fix:play pager X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=commitdiff_plain;h=78fb6c83ba19afe5631d4cd8a49b34b7fd8c451b fix:play pager --- diff --git a/app/assets/javascripts/controllers/scrolls.js.coffee b/app/assets/javascripts/controllers/scrolls.js.coffee index 17178faa..5f9b1721 100644 --- a/app/assets/javascripts/controllers/scrolls.js.coffee +++ b/app/assets/javascripts/controllers/scrolls.js.coffee @@ -40,10 +40,12 @@ class Pettanr.ScrollsController extends Pettanr.AppController render_play: (@item) -> @list.open(() => + pager = Locmare.ListGroupModule.LibModule.PlayPager.factory(@list.page_status, @params) @trigger('title', @params, @item.get('title')) show = new Pettanr.Views.Scroll.Play({ item: @item, list: @list, + pager: pager }) @listenTo(show, 'insert', @insert) @listenTo(show, 'move', @move) diff --git a/app/assets/javascripts/locmare/list_group/lib/pager.js.coffee b/app/assets/javascripts/locmare/list_group/lib/pager.js.coffee index 8d9d5cb2..d5516342 100644 --- a/app/assets/javascripts/locmare/list_group/lib/pager.js.coffee +++ b/app/assets/javascripts/locmare/list_group/lib/pager.js.coffee @@ -1,15 +1,18 @@ class Locmare.ListGroupModule.LibModule.Pager + @factory: (page_status, params) -> - pagers = { + c = @pagers()[page_status.type] + return null if not page_status.total_page + new c({page_status: page_status, params: params}) + + @pagers: () -> + { default: Locmare.ListGroupModule.LibModule.PagerModule.Default, offset: Locmare.ListGroupModule.LibModule.PagerModule.Offset, unlimited: Locmare.ListGroupModule.LibModule.PagerModule.Unlimited, more: Locmare.ListGroupModule.LibModule.PagerModule.More } - c = pagers[page_status.type] - return null if not page_status.total_page - new c({page_status: page_status, params: params}) - + class Locmare.ListGroupModule.LibModule.PagerModule class Locmare.ListGroupModule.LibModule.PagerModule.Default extends Backbone.View tagName: 'ul' diff --git a/app/assets/javascripts/locmare/list_group/lib/play_pager.js.coffee b/app/assets/javascripts/locmare/list_group/lib/play_pager.js.coffee new file mode 100644 index 00000000..46d44cc0 --- /dev/null +++ b/app/assets/javascripts/locmare/list_group/lib/play_pager.js.coffee @@ -0,0 +1,31 @@ +class Locmare.ListGroupModule.LibModule.PlayPager extends Locmare.ListGroupModule.LibModule.Pager + + @pagers: () -> + { + default: Locmare.ListGroupModule.LibModule.PlayPagerModule.Default, + offset: Locmare.ListGroupModule.LibModule.PlayPagerModule.Offset, + unlimited: Locmare.ListGroupModule.LibModule.PlayPagerModule.Unlimited, + more: Locmare.ListGroupModule.LibModule.PlayPagerModule.More + } + +class Locmare.ListGroupModule.LibModule.PlayPagerModule +class Locmare.ListGroupModule.LibModule.PlayPagerModule.Default extends Locmare.ListGroupModule.LibModule.PagerModule.Default + + render: () -> + this.$el.html('') + if @hasNextPage() + view = new Locmare.ListGroupModule.LibModule.PlayPagerModule.NextPage({ + parent: this, page: @current_page + 1, class_name: 'continue' + }) + @listenTo(view, 'navigate', @navigate) + @listenTo(view, 'page', @click) + this.$el.append(view.render().el) + rb = new Tag.RowBreak() + this.$el.append(rb.render().el) + this + +class Locmare.ListGroupModule.LibModule.PlayPagerModule.NextPage extends Locmare.ListGroupModule.LibModule.PagerModule.Part + + content: () -> + 'Continue' + diff --git a/app/assets/javascripts/views/scrolls/play.js.coffee b/app/assets/javascripts/views/scrolls/play.js.coffee index 8aa8c10c..e7131f66 100644 --- a/app/assets/javascripts/views/scrolls/play.js.coffee +++ b/app/assets/javascripts/views/scrolls/play.js.coffee @@ -21,6 +21,7 @@ class Pettanr.Views.Scroll.PlayModule.FooterSwitch extends Backbone.View @panel = options.panel @visible = false @enabled = true + @listenTo(@scroll_panel, 'sync', @render) render: () -> this.$el.html('') @@ -324,9 +325,7 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View render: () -> this.$el.html('') _.each @items, (scroll_panel) => - return if not scroll_panel.has_panel() - panel_view = @create_panel_view(scroll_panel) - this.$el.append(panel_view.clear().el) + @append_scroll_panel(scroll_panel) rb = new Tag.RowBreak() this.$el.append(rb.render().el) link = new Tag.A({ @@ -340,6 +339,11 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View this.$el.append(@appender.render().el) this + append_scroll_panel: (scroll_panel) -> + return if not scroll_panel.has_panel() + panel_view = @create_panel_view(scroll_panel) + this.$el.append(panel_view.clear().el) + create_panel_view: (scroll_panel) -> panel_view = new Pettanr.Views.Scroll.PlayModule.Panel({ scroll: @binder, scroll_panel: scroll_panel, @@ -375,6 +379,7 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View ul = this.$el[0] li = insert_point.$el[0] ul.insertBefore(panel_view.clear().el, li) + @refresh_views() open_dialog: () -> @trigger('dialog:open', dialog) @@ -414,7 +419,12 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View _.each @views, (panel_view) => panel_view.hide_insert_point() + refresh_views: () -> + _.each @views, (panel_view) => + Pettanr.cache.refresh(panel_view.scroll_panel) + click_move_to: (to_panel_view) -> + @enable_footer_switch() @listenTo(@dialog, 'success', @move_success) @dialog.save(to_panel_view) @@ -428,11 +438,13 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View ready_from_panel_view: (panel) -> @remove_panel_view(@dialog.from) @hide_insert_point() + @refresh_views() click_destroy: (panel_view) -> success = (model, response) => @remove_panel_view(panel_view) panel_view.remove() + @refresh_views() @trigger('click:destroy') Pettanr.Proxy.destroy(panel_view.scroll_panel, {success: success}) @@ -447,11 +459,8 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Backbone.View @parent = options.parent @binder = options.binder @list = options.list + @pager = options.pager @items = @list.items() - if @items.length < 1 - @render_empty() - else - @render() render_empty: () -> this.$el.html('') @@ -459,25 +468,29 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Backbone.View this render: () -> - this.$el.html('') - # paginate(@pager) - credits = new Pettanr.Views.Scroll.PlayModule.Credits({parent: this}) - panels = new Pettanr.Views.Scroll.PlayModule.Panels({ - parent: this, - binder: @binder, - items: @items, - credits: credits, - }) - @listenTo(credits, 'click:credit:icon', @click_credit_icon) - @listenTo(panels, 'click:insert', @click_insert) - @listenTo(panels, 'click:move', @click_move) - @listenTo(panels, 'dialog:close', @close_dialog) - this.$el.append(panels.render().el) - this.$el.append(credits.render().el) - rb = new Tag.RowBreak() - this.$el.append(rb.render().el) - # paginate(@pager) - this + if @items.length < 1 + @render_empty() + else + this.$el.html('') + # paginate(@pager) + credits = new Pettanr.Views.Scroll.PlayModule.Credits({parent: this}) + @panels = new Pettanr.Views.Scroll.PlayModule.Panels({ + parent: this, + binder: @binder, + items: @items, + credits: credits, + }) + @listenTo(credits, 'click:credit:icon', @click_credit_icon) + @listenTo(@panels, 'click:insert', @click_insert) + @listenTo(@panels, 'click:move', @click_move) + @listenTo(@panels, 'dialog:close', @close_dialog) + @listenTo(@pager, 'page', @continue) + this.$el.append(@panels.render().el) + this.$el.append(@pager.render().el) + this.$el.append(credits.render().el) + rb = new Tag.RowBreak() + this.$el.append(rb.render().el) + this click_credit_icon: (item) -> @trigger('http_get', item.show_url()) @@ -491,6 +504,23 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Backbone.View close_dialog: (dialog) -> @trigger('dialog:close', dialog) + continue: (page) -> + params = _.clone(@pager.params) + params['page'] = page + continue_list = Locmare.ListGroup.list( + @list.list_group_name, @list.list_name, params + ) + continue_list.open(() => + _.each continue_list.items(), (scroll_panel) => + @items.push(scroll_panel) + @panels.append_scroll_panel(scroll_panel) + @list = continue_list + continue_pager = Locmare.ListGroupModule.LibModule.PlayPager.factory(@list.page_status, params) + @listenTo(continue_pager, 'page', @continue) + @pager.$el.replaceWith(continue_pager.render().el) + @pager = continue_pager + ) + class Pettanr.Views.Scroll.Play extends Backbone.View tagName: 'div' className: 'show' @@ -498,6 +528,7 @@ class Pettanr.Views.Scroll.Play extends Backbone.View initialize: (options) -> @item = options.item @list = options.list + @pager = options.pager icon_url = Pettanr.url(@item.table_name(), 'show', {id: @item.get('id')}) caption_url = Pettanr.url(@item.table_name(), 'play', {id: @item.get('id')}) prof_url = Pettanr.url(@item.table_name(), 'show', {id: @item.get('id'), format: 'prof'}) @@ -513,6 +544,7 @@ class Pettanr.Views.Scroll.Play extends Backbone.View parent: this, binder: @item, list: @list, + pager: @pager }) # @owner = new Pettanr.Views.Scroll.PlayModule.Owner({item: @item}) @listenTo(@header, 'click:pick', @click_pick) diff --git a/app/assets/javascripts/yasapp.js b/app/assets/javascripts/yasapp.js index d3225e37..194fa94c 100644 --- a/app/assets/javascripts/yasapp.js +++ b/app/assets/javascripts/yasapp.js @@ -258,6 +258,7 @@ //= require ./locmare/list_group //= require ./locmare/list_group/lib //= require ./locmare/list_group/lib/pager +//= require ./locmare/list_group/lib/play_pager //= require ./locmare/list_group/list/base //= require ./locmare/list_group/list/public //= require ./locmare/list_group/list/private