OSDN Git Service

fix:player append
authoryasushiito <yas@pen-chan.jp>
Mon, 15 Jun 2015 05:05:19 +0000 (14:05 +0900)
committeryasushiito <yas@pen-chan.jp>
Mon, 15 Jun 2015 05:05:19 +0000 (14:05 +0900)
app/assets/javascripts/editor/player/panel_insert_dialog.js.coffee
app/assets/javascripts/editor/player/panel_move_dialog.js.coffee
app/assets/javascripts/views/scrolls/play.js.coffee

index a7a95b7..aae990b 100644 (file)
@@ -49,7 +49,7 @@ class Editor.Player.PanelInsertDialog extends Editor.Dialog
       # Pick  resource_picture to panel_picture\r
       new_item = new @target_model()\r
       new_item.set(new_item.pick(item), {silent: true})\r
-      t = if @insert_point.scroll_panel\r
+      t = if @insert_point\r
         # insert before insert_point's panel_view\r
         @insert_point.scroll_panel.get('t')\r
       else\r
@@ -77,3 +77,6 @@ class Editor.Player.PanelInsertDialog extends Editor.Dialog
   quit: () ->\r
     @remove()\r
   \r
+  is_catch: () ->\r
+    false\r
+  \r
index c788c7e..d7542c7 100644 (file)
@@ -7,6 +7,7 @@ class Editor.Player.PanelMoveDialog extends Editor.Dialog
     @binder = options.binder\r
     @target_model = options.target_model\r
     @from = options.from\r
+    @caught = true\r
   \r
   start: (panel) ->\r
     this.$el.dialog({title: I18n.t('scroll_panels.player.move_dialog')})\r
@@ -40,8 +41,6 @@ class Editor.Player.PanelMoveDialog extends Editor.Dialog
   success: (model, response) ->\r
     @from.scroll_panel.fix()\r
     @trigger('success', model, response)\r
-    @close()\r
-    @quit()\r
   \r
   fail: (model, response) ->\r
     @trigger('fail', response)\r
@@ -52,3 +51,9 @@ class Editor.Player.PanelMoveDialog extends Editor.Dialog
   quit: () ->\r
     @remove()\r
   \r
+  release: () ->\r
+    @caught = false\r
+  \r
+  is_catch: () ->\r
+    @caught\r
+  \r
index e7131f6..f30114f 100644 (file)
@@ -299,18 +299,6 @@ class Pettanr.Views.Scroll.PlayModule.InsertPoint extends Tag.Div
     attr = {style: Pettanr.to_style(style)}\r
     this.$el.attr(attr)\r
   \r
-class Pettanr.Views.Scroll.PlayModule.Append extends Tag.Div\r
-  \r
-  hide: () ->\r
-    @set_style({display: 'none'})\r
-  \r
-  show: () ->\r
-    @set_style({display: 'inline'})\r
-  \r
-  set_style: (style) ->\r
-    attr = {style: Pettanr.to_style(style)}\r
-    this.$el.attr(attr)\r
-  \r
 class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View\r
   tagName: 'ul'\r
   className: 'player'\r
@@ -326,17 +314,6 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
     this.$el.html('')\r
     _.each @items, (scroll_panel) =>\r
       @append_scroll_panel(scroll_panel)\r
-    rb = new Tag.RowBreak()\r
-    this.$el.append(rb.render().el)\r
-    link = new Tag.A({\r
-      attr: {href: '/scroll_panels/new'},\r
-      content: I18n.t('scroll_panels.player.append')\r
-    })\r
-    @listenTo(link, 'click', @click_append)\r
-    @appender = new Pettanr.Views.Scroll.PlayModule.Append({\r
-      content: link.render().el\r
-    })\r
-    this.$el.append(@appender.render().el)\r
     this\r
   \r
   append_scroll_panel: (scroll_panel) ->\r
@@ -359,7 +336,7 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
   ready: (panel) ->\r
     this.credits.push(panel.licensed_pictures())\r
   \r
-  click_insert: (panel_view) ->\r
+  click_insert: (panel_view = null) ->\r
     @dialog = new Editor.Player.PanelInsertDialog({\r
       parent: this, binder: @binder, target_model: Pettanr.ScrollPanel,\r
       insert_point: panel_view\r
@@ -371,22 +348,28 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
     @dialog.start()\r
     @trigger('click:insert', @dialog)\r
   \r
-  click_append: () ->\r
-    @click_insert(@appender)\r
-  \r
   pick: (new_item, insert_point) ->\r
+    @parent.appender.show()\r
     panel_view = @create_panel_view(new_item)\r
     ul = this.$el[0]\r
-    li = insert_point.$el[0]\r
-    ul.insertBefore(panel_view.clear().el, li)\r
+    if insert_point\r
+      # insert before insert_point\r
+      li = insert_point.$el[0]\r
+      ul.insertBefore(panel_view.clear().el, li)\r
+    else\r
+      # append\r
+      this.$el.append(panel_view.clear().el)\r
     @refresh_views()\r
+    @dialog.stop()\r
   \r
   open_dialog: () ->\r
     @trigger('dialog:open', dialog)\r
   \r
   close_dialog: () ->\r
-    @appender.show()\r
     @trigger('dialog:close', @dialog)\r
+    if @dialog.is_catch()\r
+      # stored panel back to player\r
+      @back()\r
   \r
   click_move: (panel_view) ->\r
     @dialog = new Editor.Player.PanelMoveDialog({\r
@@ -396,7 +379,6 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
     @listenTo(@dialog, 'open', @open_dialog)\r
     @listenTo(@dialog, 'close', @close_dialog)\r
     this.$el.append(@dialog.render().el)\r
-    @appender.hide()\r
     @disable_footer_switch()\r
     @dialog.start(panel_view.panel)\r
     panel_view.hide()\r
@@ -430,6 +412,7 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
   \r
   move_success: (model, response) ->\r
     from_panel_view = @create_panel_view(@dialog.from.scroll_panel)\r
+    @dialog.release()\r
     @listenTo(from_panel_view, 'ready', @ready_from_panel_view)\r
     ul = this.$el[0]\r
     li = @dialog.to.$el[0]\r
@@ -437,9 +420,15 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
   \r
   ready_from_panel_view: (panel) ->\r
     @remove_panel_view(@dialog.from)\r
+    @dialog.stop()\r
     @hide_insert_point()\r
     @refresh_views()\r
   \r
+  back: () ->\r
+    @hide_insert_point()\r
+    @enable_footer_switch()\r
+    @dialog.from.show()\r
+  \r
   click_destroy: (panel_view) ->\r
     success = (model, response) =>\r
       @remove_panel_view(panel_view)\r
@@ -452,6 +441,49 @@ class Pettanr.Views.Scroll.PlayModule.Panels extends Backbone.View
     @views = _.without(@views, panel_view)\r
     panel_view.remove()\r
   \r
+class Pettanr.Views.Scroll.PlayModule.Append extends Tag.Div\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @enabled = false\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    if @enabled\r
+      @link = new Tag.A({\r
+        attr: {href: '/scroll_panels/new'},\r
+        content: I18n.t('scroll_panels.player.append')\r
+      })\r
+      @listenTo(@link, 'click', @click)\r
+      @content = @link.render().el\r
+      super()\r
+    this\r
+  \r
+  enable: () ->\r
+    @enabled = true\r
+    @show()\r
+  \r
+  disable: () ->\r
+    @enabled = false\r
+    @hide()\r
+  \r
+  hide: () ->\r
+    @set_style({display: 'none'})\r
+  \r
+  show: () ->\r
+    if @enabled\r
+      @set_style({display: 'inline'})\r
+    else\r
+      @hide()\r
+  \r
+  set_style: (style) ->\r
+    attr = {style: Pettanr.to_style(style)}\r
+    this.$el.attr(attr)\r
+    @render()\r
+  \r
+  click: () ->\r
+    @trigger('click')\r
+  \r
 class Pettanr.Views.Scroll.PlayModule.Body extends Backbone.View\r
   tagName: 'div'\r
   \r
@@ -486,6 +518,14 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Backbone.View
       @listenTo(@panels, 'dialog:close', @close_dialog)\r
       @listenTo(@pager, 'page', @continue)\r
       this.$el.append(@panels.render().el)\r
+      rb = new Tag.RowBreak()\r
+      this.$el.append(rb.render().el)\r
+      @appender = new Pettanr.Views.Scroll.PlayModule.Append({\r
+      })\r
+      @listenTo(@appender, 'click', @click_append)\r
+      this.$el.append(@appender.render().el)\r
+      if !@pager.hasNextPage()\r
+        @appender.enable()\r
       this.$el.append(@pager.render().el)\r
       this.$el.append(credits.render().el)\r
       rb = new Tag.RowBreak()\r
@@ -495,13 +535,19 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Backbone.View
   click_credit_icon: (item) ->\r
     @trigger('http_get', item.show_url())\r
   \r
+  click_append: () ->\r
+    @panels.click_insert()\r
+  \r
   click_insert: (dialog) ->\r
+    @appender.hide()\r
     @trigger('click:insert', dialog)\r
   \r
   click_move: (dialog) ->\r
+    @appender.hide()\r
     @trigger('click:move', dialog)\r
   \r
   close_dialog: (dialog) ->\r
+    @appender.show()\r
     @trigger('dialog:close', dialog)\r
   \r
   continue: (page) ->\r
@@ -519,6 +565,8 @@ class Pettanr.Views.Scroll.PlayModule.Body extends Backbone.View
       @listenTo(continue_pager, 'page', @continue)\r
       @pager.$el.replaceWith(continue_pager.render().el)\r
       @pager = continue_pager\r
+      if !@pager.hasNextPage()\r
+        @appender.enable()\r
     )\r
   \r
 class Pettanr.Views.Scroll.Play extends Backbone.View\r