OSDN Git Service

fix:play pager
authoryasushiito <yas@pen-chan.jp>
Sat, 13 Jun 2015 10:05:50 +0000 (19:05 +0900)
committeryasushiito <yas@pen-chan.jp>
Sat, 13 Jun 2015 10:05:50 +0000 (19:05 +0900)
app/assets/javascripts/controllers/scrolls.js.coffee
app/assets/javascripts/locmare/list_group/lib/pager.js.coffee
app/assets/javascripts/locmare/list_group/lib/play_pager.js.coffee [new file with mode: 0644]
app/assets/javascripts/views/scrolls/play.js.coffee
app/assets/javascripts/yasapp.js

index 17178fa..5f9b172 100644 (file)
@@ -40,10 +40,12 @@ class Pettanr.ScrollsController extends Pettanr.AppController
   \r
   render_play: (@item) ->\r
     @list.open(() => \r
+      pager = Locmare.ListGroupModule.LibModule.PlayPager.factory(@list.page_status, @params)\r
       @trigger('title', @params, @item.get('title'))\r
       show = new Pettanr.Views.Scroll.Play({\r
         item: @item,\r
         list: @list,\r
+        pager: pager\r
       })\r
       @listenTo(show, 'insert', @insert)\r
       @listenTo(show, 'move', @move)\r
index 8d9d5cb..d551634 100644 (file)
@@ -1,15 +1,18 @@
 class Locmare.ListGroupModule.LibModule.Pager\r
+  \r
   @factory: (page_status, params) ->\r
-    pagers = {\r
+    c = @pagers()[page_status.type]\r
+    return null if not page_status.total_page\r
+    new c({page_status: page_status, params: params})\r
+  \r
+  @pagers: () ->\r
+    {\r
       default: Locmare.ListGroupModule.LibModule.PagerModule.Default,\r
       offset: Locmare.ListGroupModule.LibModule.PagerModule.Offset,\r
       unlimited: Locmare.ListGroupModule.LibModule.PagerModule.Unlimited,\r
       more: Locmare.ListGroupModule.LibModule.PagerModule.More\r
     }\r
-    c = pagers[page_status.type]\r
-    return null if not page_status.total_page\r
-    new c({page_status: page_status, params: params})\r
-  \r
+\r
 class Locmare.ListGroupModule.LibModule.PagerModule\r
 class Locmare.ListGroupModule.LibModule.PagerModule.Default extends Backbone.View\r
   tagName: 'ul'\r
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 (file)
index 0000000..46d44cc
--- /dev/null
@@ -0,0 +1,31 @@
+class Locmare.ListGroupModule.LibModule.PlayPager extends Locmare.ListGroupModule.LibModule.Pager\r
+  \r
+  @pagers: () ->\r
+    {\r
+      default: Locmare.ListGroupModule.LibModule.PlayPagerModule.Default,\r
+      offset: Locmare.ListGroupModule.LibModule.PlayPagerModule.Offset,\r
+      unlimited: Locmare.ListGroupModule.LibModule.PlayPagerModule.Unlimited,\r
+      more: Locmare.ListGroupModule.LibModule.PlayPagerModule.More\r
+    }\r
+\r
+class Locmare.ListGroupModule.LibModule.PlayPagerModule\r
+class Locmare.ListGroupModule.LibModule.PlayPagerModule.Default extends Locmare.ListGroupModule.LibModule.PagerModule.Default\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    if @hasNextPage()\r
+      view = new Locmare.ListGroupModule.LibModule.PlayPagerModule.NextPage({\r
+        parent: this, page: @current_page + 1, class_name: 'continue'\r
+      })\r
+      @listenTo(view, 'navigate', @navigate)\r
+      @listenTo(view, 'page', @click)\r
+      this.$el.append(view.render().el)\r
+    rb = new Tag.RowBreak()\r
+    this.$el.append(rb.render().el)\r
+    this\r
+  \r
+class Locmare.ListGroupModule.LibModule.PlayPagerModule.NextPage extends Locmare.ListGroupModule.LibModule.PagerModule.Part\r
+  \r
+  content: () ->\r
+    'Continue'\r
+  \r
index 8aa8c10..e7131f6 100644 (file)
@@ -21,6 +21,7 @@ class Pettanr.Views.Scroll.PlayModule.FooterSwitch extends Backbone.View
     @panel = options.panel\r
     @visible = false\r
     @enabled = true\r
+    @listenTo(@scroll_panel, 'sync', @render)\r
   \r
   render: () ->\r
     this.$el.html('')\r
@@ -324,9 +325,7 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
   render: () ->\r
     this.$el.html('')\r
     _.each @items, (scroll_panel) =>\r
-      return if not scroll_panel.has_panel()\r
-      panel_view = @create_panel_view(scroll_panel)\r
-      this.$el.append(panel_view.clear().el)\r
+      @append_scroll_panel(scroll_panel)\r
     rb = new Tag.RowBreak()\r
     this.$el.append(rb.render().el)\r
     link = new Tag.A({\r
@@ -340,6 +339,11 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
     this.$el.append(@appender.render().el)\r
     this\r
   \r
+  append_scroll_panel: (scroll_panel) ->\r
+    return if not scroll_panel.has_panel()\r
+    panel_view = @create_panel_view(scroll_panel)\r
+    this.$el.append(panel_view.clear().el)\r
+  \r
   create_panel_view: (scroll_panel) ->\r
     panel_view = new Pettanr.Views.Scroll.PlayModule.Panel({\r
       scroll: @binder, scroll_panel: scroll_panel,\r
@@ -375,6 +379,7 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
     ul = this.$el[0]\r
     li = insert_point.$el[0]\r
     ul.insertBefore(panel_view.clear().el, li)\r
+    @refresh_views()\r
   \r
   open_dialog: () ->\r
     @trigger('dialog:open', dialog)\r
@@ -414,7 +419,12 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
     _.each @views, (panel_view) =>\r
       panel_view.hide_insert_point()\r
   \r
+  refresh_views: () ->\r
+    _.each @views, (panel_view) =>\r
+      Pettanr.cache.refresh(panel_view.scroll_panel)\r
+  \r
   click_move_to: (to_panel_view) ->\r
+    @enable_footer_switch()\r
     @listenTo(@dialog, 'success', @move_success)\r
     @dialog.save(to_panel_view)\r
   \r
@@ -428,11 +438,13 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
   ready_from_panel_view: (panel) ->\r
     @remove_panel_view(@dialog.from)\r
     @hide_insert_point()\r
+    @refresh_views()\r
   \r
   click_destroy: (panel_view) ->\r
     success = (model, response) =>\r
       @remove_panel_view(panel_view)\r
       panel_view.remove()\r
+      @refresh_views()\r
       @trigger('click:destroy')\r
     Pettanr.Proxy.destroy(panel_view.scroll_panel, {success: success})\r
   \r
@@ -447,11 +459,8 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Backbone.View
     @parent = options.parent\r
     @binder = options.binder\r
     @list = options.list\r
+    @pager = options.pager\r
     @items = @list.items()\r
-    if @items.length < 1\r
-      @render_empty()\r
-    else\r
-      @render()\r
   \r
   render_empty: () ->\r
     this.$el.html('')\r
@@ -459,25 +468,29 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Backbone.View
     this\r
   \r
   render: () ->\r
-    this.$el.html('')\r
-    # paginate(@pager)\r
-    credits = new Pettanr.Views.Scroll.PlayModule.Credits({parent: this})\r
-    panels = new Pettanr.Views.Scroll.PlayModule.Panels({\r
-      parent: this,\r
-      binder: @binder,\r
-      items: @items,\r
-      credits: credits,\r
-    })\r
-    @listenTo(credits, 'click:credit:icon', @click_credit_icon)\r
-    @listenTo(panels, 'click:insert', @click_insert)\r
-    @listenTo(panels, 'click:move', @click_move)\r
-    @listenTo(panels, 'dialog:close', @close_dialog)\r
-    this.$el.append(panels.render().el)\r
-    this.$el.append(credits.render().el)\r
-    rb = new Tag.RowBreak()\r
-    this.$el.append(rb.render().el)\r
-    # paginate(@pager)\r
-    this\r
+    if @items.length < 1\r
+      @render_empty()\r
+    else\r
+      this.$el.html('')\r
+      # paginate(@pager)\r
+      credits = new Pettanr.Views.Scroll.PlayModule.Credits({parent: this})\r
+      @panels = new Pettanr.Views.Scroll.PlayModule.Panels({\r
+        parent: this,\r
+        binder: @binder,\r
+        items: @items,\r
+        credits: credits,\r
+      })\r
+      @listenTo(credits, 'click:credit:icon', @click_credit_icon)\r
+      @listenTo(@panels, 'click:insert', @click_insert)\r
+      @listenTo(@panels, 'click:move', @click_move)\r
+      @listenTo(@panels, 'dialog:close', @close_dialog)\r
+      @listenTo(@pager, 'page', @continue)\r
+      this.$el.append(@panels.render().el)\r
+      this.$el.append(@pager.render().el)\r
+      this.$el.append(credits.render().el)\r
+      rb = new Tag.RowBreak()\r
+      this.$el.append(rb.render().el)\r
+      this\r
   \r
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
@@ -491,6 +504,23 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Backbone.View
   close_dialog: (dialog) ->\r
     @trigger('dialog:close', dialog)\r
   \r
+  continue: (page) ->\r
+    params = _.clone(@pager.params)\r
+    params['page'] = page\r
+    continue_list = Locmare.ListGroup.list(\r
+      @list.list_group_name, @list.list_name, params\r
+    )\r
+    continue_list.open(() =>\r
+      _.each continue_list.items(), (scroll_panel) =>\r
+        @items.push(scroll_panel)\r
+        @panels.append_scroll_panel(scroll_panel)\r
+      @list = continue_list\r
+      continue_pager = Locmare.ListGroupModule.LibModule.PlayPager.factory(@list.page_status, params)\r
+      @listenTo(continue_pager, 'page', @continue)\r
+      @pager.$el.replaceWith(continue_pager.render().el)\r
+      @pager = continue_pager\r
+    )\r
+  \r
 class Pettanr.Views.Scroll.Play extends Backbone.View\r
   tagName: 'div'\r
   className: 'show'\r
@@ -498,6 +528,7 @@ class Pettanr.Views.Scroll.Play extends Backbone.View
   initialize: (options) ->\r
     @item = options.item\r
     @list = options.list\r
+    @pager = options.pager\r
     icon_url = Pettanr.url(@item.table_name(), 'show', {id: @item.get('id')})\r
     caption_url = Pettanr.url(@item.table_name(), 'play', {id: @item.get('id')})\r
     prof_url = Pettanr.url(@item.table_name(), 'show', {id: @item.get('id'), format: 'prof'})\r
@@ -513,6 +544,7 @@ class Pettanr.Views.Scroll.Play extends Backbone.View
       parent: this,\r
       binder: @item,\r
       list: @list, \r
+      pager: @pager\r
     })\r
     # @owner = new Pettanr.Views.Scroll.PlayModule.Owner({item: @item})\r
     @listenTo(@header, 'click:pick', @click_pick)\r
index d3225e3..194fa94 100644 (file)
 //= 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