OSDN Git Service

fix new element dialog
authoryasushiito <yas@pen-chan.jp>
Thu, 22 Jan 2015 08:13:39 +0000 (17:13 +0900)
committeryasushiito <yas@pen-chan.jp>
Thu, 22 Jan 2015 08:13:39 +0000 (17:13 +0900)
app/assets/javascripts/editor/panel_editor.js.coffee
app/assets/javascripts/editor/panel_editor/dock.js.coffee
app/assets/javascripts/locmare/form.js.coffee
app/assets/javascripts/locmare/form/field/tag/number.js.coffee
app/assets/javascripts/routes.js.coffee
app/controllers/panels_controller.rb

index a47fab5..39d306a 100644 (file)
@@ -58,6 +58,7 @@ class Editor.PanelEditor extends Backbone.View
     rb = new Tag.RowBreak()\r
     this.$el.append(rb.render().el)\r
     this.$el.tabs()\r
+    window.editor = this  # enable leave cancel flag on unsave\r
     this\r
   \r
   panel_resize: () ->\r
@@ -67,8 +68,16 @@ class Editor.PanelEditor extends Backbone.View
     #$(trace + 'width').val(w)\r
     #$(trace + 'height').val(h)\r
   \r
+  quit: () ->\r
+    @dialog.$el.dialog('destroy')\r
+    window.editor = null  # release editor\r
+  \r
   put: () ->\r
-    attrs = @dock.save_data()\r
+    if @dock.save()\r
+      window.editor = null  # release editor\r
+      @dock.valid()\r
+    else\r
+      @dock.invalid()\r
     false\r
   \r
   root_item: () ->\r
index 75bb0f6..75fdfe3 100644 (file)
@@ -71,11 +71,21 @@ class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase
     @trigger('put')\r
     false\r
   \r
+  save: () ->\r
+    attrs = @save_data()\r
+    @root_bay.body.form.save(attrs)\r
+  \r
   save_data: () ->\r
     attrs = @root_bay.save_data()\r
     _.extend(attrs, @element_bay.save_data())\r
     attrs\r
   \r
+  valid: () ->\r
+    @root_bay.body.form.valid()\r
+  \r
+  invalid: () ->\r
+    @root_bay.body.form.invalid()\r
+  \r
 class Editor.EditorModule.DockModule.RootBay extends Editor.EditorModule.DockModule.SimpleBay\r
   \r
   render: () ->\r
index aa77ed3..5c91ac9 100644 (file)
@@ -148,12 +148,23 @@ class Locmare.Form extends Locmare.FormBase
     _.each @fields, (field) =>\r
       @item.set(field.field_name, field.val())\r
     @item.overwrite({operators: @operators})\r
-    attrs = @make_attrs()\r
-    if @item.save(attrs)\r
-      window.router.navigate('/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id')), true)\r
-      return false\r
+    if @save()\r
+      @valid()\r
     else\r
-      alert('invalid')\r
+      @invalid()\r
+  \r
+  save: (attrs = null) ->\r
+    if attrs\r
+      @item.save(attrs)\r
+    else\r
+      @item.save()\r
+  \r
+  valid: () ->\r
+    window.router.navigate('/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id')), true)\r
+    return false\r
+  \r
+  invalid: () ->\r
+    alert('invalid')\r
   \r
   save_data: () ->\r
     @item.my_class().child_models()\r
index 66646ad..a707cef 100644 (file)
@@ -21,3 +21,6 @@ class Locmare.FormModule.FieldModule.TagModule.NumberTag extends Locmare.FormMod
     @field.helpers.refresh()\r
     @field.trigger('change')\r
   \r
+  val: () ->\r
+    parseInt(super)\r
+  \r
index c56221d..e3e093a 100644 (file)
@@ -84,6 +84,16 @@ class Pettanr.Router extends Backbone.Router
     r = new Pettanr.UsersController()\r
     r.index()\r
   \r
+  navigate: (fragment, options) ->\r
+    if window.editor\r
+      if confirm('leave? edit data unsaved')\r
+        window.editor.quit()\r
+        super(fragment, options)\r
+      else\r
+        false\r
+    else\r
+      super(fragment, options)\r
+  \r
   hoge: () ->\r
     names = _.map Manifest.manifest().controllers, (controller_manifest, controller_name) ->\r
       c = Pettanr[Pettanr.camelize(controller_name) + 'Controller']\r
index 376c68c..6c9e438 100644 (file)
@@ -143,6 +143,7 @@ class PanelsController < ApplicationController
         updated_html_format format
         updated_json_format format
       else
+      p @item.errors
         format.html {
           flash[:notice] = I18n.t('flash.notice.not_updated', :model => @my_model_class.model_name.human)
           @editor = Editor::PanelEditor.new @item, @operators