OSDN Git Service

t#:
[pettanr/pettanr.git] / app / assets / javascripts / locmare / form / field.js.coffee
index 42d340b..9dbd00a 100644 (file)
@@ -1,4 +1,4 @@
-class Locmare.FormModule.Field extends Backbone.View\r
+class Locmare.FormModule.Field extends Pettanr.View\r
   tagName: 'div'\r
   className: 'field'\r
   \r
@@ -8,40 +8,50 @@ class Locmare.FormModule.Field extends Backbone.View
     @field_manifest = options.field_manifest\r
     @label = Locmare.FormModule.FieldModule.LabelFactory.factory this, @field_manifest.label\r
     @tag = Locmare.FormModule.FieldModule.TagFactory.factory this, @field_manifest.tag\r
-    @helpers = {}\r
-    _this = this\r
-    _.each @field_manifest.helpers, (helper_manifest, helper_name) ->\r
-      _this.helpers[helper_name] = Locmare.FormModule.FieldModule.HelperFactory.factory(_this, helper_manifest)\r
-    @rb = @row_break()\r
-    @options = {'data-model': @field_manifest.form_name}\r
+    @helpers = new Locmare.FormModule.FieldModule.Helpers({field: this, field_manifest: @field_manifest})\r
+    @on('change', @change)\r
+    item = @item()\r
+    @listenTo(item, 'resize', @refresh)\r
+    @listenTo(item, 'move', @refresh)\r
+    @listenTo(item, 'sort', @refresh)\r
   \r
   render: () ->\r
     this.$el.html('')\r
     this.$el.append(@label.render().el) if not @label.hidden()\r
     this.$el.append(@tag.render().el)\r
-    _this = this\r
-    _.each @helpers, (helper) ->\r
-      _this.$el.append(helper.render().el)\r
-    this.$el.append(@rb.render().el) if @rb\r
+    this.$el.append(@helpers.render().el)\r
     this\r
   \r
-  mounted: () ->\r
-    if @form.mounted\r
-      0\r
-    else\r
-      1\r
+  refresh: () ->\r
+    @tag.refresh()\r
+    @helpers.refresh()\r
   \r
-  mount_option: () ->\r
-    {'mount': @mounted()}\r
+  change: () ->\r
+    @set(@val(), {silent: true})\r
+    @item().trigger('input:' + @field_name)\r
+    @item().trigger('input')\r
+    \r
+  is_extend: () ->\r
+    false\r
   \r
   item: () ->\r
     @form.item\r
   \r
+  val: () ->\r
+    @tag.val()\r
+  \r
   value: () ->\r
-    @item().get(@field_manifest.column_name)\r
+    @item().get(@field_manifest.column_name())\r
   \r
-  options: (tag_options = {}) ->\r
-    tag_options\r
+  set: (v, opt = null) ->\r
+    a = {}\r
+    a[@field_manifest.column_name()] = v\r
+    @item().set(a, opt)\r
+  \r
+  unset: () ->\r
+    a = {}\r
+    a[@field_manifest.column_name()] = undefined\r
+    @item().set(a, {unset: true})\r
   \r
   form_field_name: () ->\r
     @form.form_field_name @field_name\r
@@ -49,13 +59,36 @@ class Locmare.FormModule.Field extends Backbone.View
   form_name: () ->\r
     @form.form_name\r
   \r
-  row_break: () ->\r
+  has_row_break: () ->\r
     if @field_manifest.row_break\r
-      new Pettanr.Tag.Div({\r
-        content: null,\r
-        class_name: 'row_break'\r
-      })\r
+      true\r
+    else\r
+      false\r
+  \r
+  row_break: () ->\r
+    if @has_row_break()\r
+      Pettanr.View.rb()\r
     else\r
       null\r
   \r
 class Locmare.FormModule.FieldModule\r
+class Locmare.FormModule.FieldModule.Helpers extends Pettanr.View\r
+  tagName: 'span'\r
+  \r
+  initialize: (options) ->\r
+    @field = options.field\r
+    @field_manifest = options.field_manifest\r
+    @helpers = {}\r
+    _.each @field_manifest.helpers, (helper_manifest, helper_name) =>\r
+      @helpers[helper_name] = Locmare.FormModule.FieldModule.HelperFactory.factory(@field, helper_manifest)\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    _.each @helpers, (helper) =>\r
+      this.$el.append(helper.render().el)\r
+    this\r
+  \r
+  refresh: () -> \r
+    _.each @helpers, (helper) =>\r
+      helper.refresh()\r
+  \r