OSDN Git Service

fix editor lock
[pettanr/pettanr.git] / app / assets / javascripts / locmare / form.js.coffee
index 33bc7c2..54b22da 100644 (file)
@@ -42,6 +42,9 @@ class Locmare.FormBase extends Backbone.View
   image_dir: () ->\r
     '/images/'\r
   \r
+  quit: () ->\r
+    null\r
+  \r
 class Locmare.Form extends Locmare.FormBase\r
   \r
   @factory: (options) ->\r
@@ -146,6 +149,7 @@ class Locmare.Form extends Locmare.FormBase
   \r
   post: () ->\r
     _.each @fields, (field) =>\r
+      field.fold() if field.is_extend()\r
       @item.set(field.field_name, field.val())\r
     @item.unset('id')  # isNew use flag that id attr set\r
     @trigger('http_post', @item.create_url(), this)\r
@@ -153,17 +157,15 @@ class Locmare.Form extends Locmare.FormBase
   \r
   put: () ->\r
     _.each @fields, (field) =>\r
+      field.fold() if field.is_extend()\r
       @item.set(field.field_name, field.val())\r
     @trigger('http_post', @item.update_url(), this)\r
     return false\r
   \r
-  save: (attrs = null, options = null) ->\r
+  save: () ->\r
     @listenTo(@item, 'save:success', @success)\r
     @listenTo(@item, 'save:fail', @fail)\r
-    if attrs\r
-      @item.save(attrs, options)\r
-    else\r
-      @item.save()\r
+    @item.save()\r
   \r
   success: (model, response) ->\r
     @trigger('success', model, response)\r
@@ -171,13 +173,6 @@ class Locmare.Form extends Locmare.FormBase
   fail: (model, response) ->\r
     @trigger('fail', response)\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
     attrs = {}\r
@@ -202,6 +197,7 @@ class Locmare.ExtendForm extends Locmare.FormBase
     @parent = options.parent\r
     @field_name = options.field_name\r
     super(options)\r
+    @listenTo(@item, 'input', @input)\r
     @field = new Locmare.FormModule.Field({\r
       form: @parent, \r
       field_name: @field_name, \r
@@ -212,6 +208,7 @@ class Locmare.ExtendForm extends Locmare.FormBase
   \r
   render: () ->\r
     this.$el.html('')\r
+    this.$el.append(@label.render().el) if not @label.hidden()\r
     @div_fields = new Locmare.FormModule.Fields({\r
       fields: @fields\r
     })\r
@@ -221,6 +218,21 @@ class Locmare.ExtendForm extends Locmare.FormBase
   refresh: () ->\r
     @field.refresh()\r
   \r
+  input: (field) ->\r
+    a = {}\r
+    a[@field_name] = @val()\r
+    @parent.item.set(a, {silent: true})\r
+    @parent.item.trigger('input:' + @field_name + ':' + field)\r
+    @parent.item.trigger('input:' + @field_name)\r
+    @parent.item.trigger('input')\r
+  \r
+  fold: () ->\r
+    _.each @fields, (field) =>\r
+      @item.set(field.field_name, field.val())\r
+  \r
+  val: () ->\r
+    JSON.stringify(@item.attributes)\r
+  \r
   init_fields: () ->\r
     _.each @manifest.field_names, (field_name) =>\r
       field_manifest = @manifest.fields[field_name]\r
@@ -234,6 +246,9 @@ class Locmare.ExtendForm extends Locmare.FormBase
     # parent is field\r
     @parent.form_field_name(@field_name)  + '[' + extend_field_name + ']'\r
   \r
+  is_extend: () ->\r
+    true\r
+  \r
 class Locmare.FormModule\r
 class Locmare.FormModule.Fields extends Backbone.View\r
   tagName: 'div'\r