OSDN Git Service

fix: fetch fail
[pettanr/pettanr.git] / app / assets / javascripts / editor / player / panel_insert_dialog.js.coffee
index 0719e0e..aae990b 100644 (file)
@@ -1,15 +1,82 @@
 class Editor.Player.PanelInsertDialog extends Editor.Dialog\r
   className: 'player-insert-dialog'\r
   \r
-  start: (panel) ->\r
-    this.$el.dialog({title: I18n.t('scroll_panels.player.dialog')})\r
-    body = new Pettanr.Views.Panel.Body({\r
-      panel: panel,\r
-      spot: null\r
+  initialize: (options) ->\r
+    super(options)\r
+    @parent = options.parent\r
+    @binder = options.binder\r
+    @target_model = options.target_model\r
+    @insert_point = options.insert_point\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    launcher = new Pettanr.Views[@target_model.singular()].NewElementLauncher({\r
+      parent: this, model: @target_model\r
+    })\r
+    @listenTo(launcher, 'http_get', @http_get)  # http_get func already defined\r
+    this.$el.append(launcher.render().el)\r
+    this\r
+  \r
+  start: () ->\r
+    this.$el.dialog({title: I18n.t('scroll_panels.player.insert_dialog')})\r
+    _this = this\r
+    this.$el.dialog({\r
+      autoOpen: false,\r
+      width: 750, \r
+      height: 700,\r
+      close: (ui, event) ->\r
+        _this.close()\r
     })\r
-    @refresh(body.render())\r
     this.$el.dialog('open')\r
   \r
   stop: () ->\r
     this.$el.dialog('close')\r
   \r
+  ready: (view) ->\r
+    @listenTo(view, 'http_get', @http_get)\r
+    # @listenTo(view, 'http_post', @http_post)\r
+    @listenTo(view, 'pick', @pick)\r
+    if view['is_pickable'] and view.is_pickable()\r
+      view.add_pick(@target_model)\r
+    @refresh(view)\r
+  \r
+  pick: (item) ->\r
+    if item.item_name() == @target_model.item_name()\r
+      # Inspire\r
+    else if @target_model.is_traceable(item.item_name())\r
+      # Trace\r
+    else if item.item_name() == @target_model.pick_item_name()\r
+      # 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\r
+        # insert before insert_point's panel_view\r
+        @insert_point.scroll_panel.get('t')\r
+      else\r
+        # insert before appender\r
+        null\r
+      new_item.set({scroll_id: @binder.get('id'), t: t}, {silent: true})\r
+      @listenTo(new_item, 'save:success', @success)\r
+      @listenTo(new_item, 'save:fail', @fail)\r
+      new_item.save()\r
+  \r
+  success: (model, response) ->\r
+    # item is new\r
+    model.url = model.default_url()\r
+    Pettanr.cache.store(model)\r
+    @trigger('pick', model, @insert_point)\r
+    @close()\r
+    @quit()\r
+  \r
+  fail: (model, response) ->\r
+    @trigger('fail', response)\r
+  \r
+  close: () ->\r
+    @trigger('close')\r
+  \r
+  quit: () ->\r
+    @remove()\r
+  \r
+  is_catch: () ->\r
+    false\r
+  \r