OSDN Git Service

test editor event
[pettanr/pettanr.git] / app / assets / javascripts / locmare / bucket.js.coffee
index 6d3fec0..374da05 100644 (file)
@@ -1,63 +1,26 @@
-# form_name_with_sub_form\r
-# item: editing item\r
-# mounted: true/false\r
-# submit: string / 'submit'\r
-# operators: \r
-class Locmare.FormBase extends Backbone.View\r
-  tagName: 'div'\r
-  \r
-  initialize: (options) ->\r
-    @form_name_with_sub_form = options.form_name_with_sub_form\r
-    @item = options.item\r
-    @mounted = options.mounted\r
-    @submit = options.submit\r
-    @operators = options.operators\r
-    if /\./.test(form_name_with_sub_form)\r
-      @sub_form_names = form_name_with_sub_form.split('.')\r
-      @form_name = @sub_form_names.last\r
-      @root_form_name = @sub_form_names.shift\r
-    else\r
-      @sub_form_names = []\r
-      @form_name = @form_name_with_sub_form\r
-      @root_form_name = @form_name\r
-    @manifest = LocalManifest.manifest().forms[@form_name]\r
-    @fields = {}\r
-  \r
-  fold_extend_settings: (params) ->\r
-    @item.my_class().fold_extend_settings params[@item.item_name()]\r
-  \r
-  sub_form_name: () ->\r
-    r = _.map @sub_form_names, (name) ->\r
-      '[' + name + '_attributes' + ']'\r
-    r.join()\r
-  \r
-  form_field_name: (field_name) ->\r
-    @root_form_name + @sub_form_name() + '[' + field_name + ']'\r
-  \r
-  image_dir: () ->\r
-    '/images/'\r
-  \r
 class Locmare.Bucket extends Backbone.View\r
+  tagName: 'form'\r
   \r
-  @factory: (options) ->\r
-    @bucket_name = options.bucket_name\r
-    @item = options.item\r
-    @mounted = options.mounted\r
-    @submit = options.submit\r
-    @operators = options.operators\r
-    \r
+  @factory: (bucket_or_form_name, item, mounted, submit, operators) ->\r
     bucket = LocalManifest.manifest().buckets[bucket_or_form_name]\r
-    c = if bucket and bucket.has_member\r
-      Locmare.Bucket\r
+    if bucket and bucket.has_member()\r
+      new Locmare.Bucket({\r
+        bucket_name: bucket_or_form_name, \r
+        item: item, \r
+        mounted: mounted, \r
+        submit: submit, \r
+        operators: operators,\r
+        action: '/' + item.table_name() + '/' + Pettanr.to_s(item.get('id'))\r
+      })\r
     else\r
-      Locmare.Form\r
-    new c({\r
-      bucket_or_form_name\r
-      item\r
-      mounted\r
-      submit, \r
-      operators\r
-    })\r
+      Locmare.Form.factory({\r
+        form_name: bucket_or_form_name, \r
+        item: item\r
+        mounted: mounted\r
+        submit: submit\r
+        operators: operators,\r
+        action: '/' + item.table_name() + '/' + Pettanr.to_s(item.get('id'))\r
+      })\r
   \r
   initialize: (options) ->\r
     @bucket_name = options.bucket_name\r
@@ -71,42 +34,59 @@ class Locmare.Bucket extends Backbone.View
     @form_fields = []\r
     @forms = {}\r
     @forms[@item.item_name()] = new Locmare.Form({\r
-      @item.item_name, @item, @mounted, false, @operators\r
+      form_name: @item.item_name(), \r
+      item: @item, \r
+      mounted: @mounted, \r
+      submit: false, \r
+      operators: @operators\r
     })\r
-    @init_forms(@item.item_name, @manifest, @item)\r
+    @init_forms(@item.item_name(), @manifest, @item)\r
     @init_fields()\r
   \r
+  render: () ->\r
+    this.$el.html('')\r
+    @div_fields = new Locmare.FormModule.Fields({\r
+      fields: @form_fields\r
+    })\r
+    this.$el.append(@div_fields.render().el)\r
+    this\r
+  \r
   fold_extend_settings: (params) ->\r
-    @item.class.fold_extend_settings params[@item.item_name]\r
-    self.members_fold_extend_settings @item, params[@item.item_name], @manifest\r
+    @item.my_class().fold_extend_settings params[@item.item_name()]\r
+    @members_fold_extend_settings @item, params[@item.item_name()], @manifest\r
   \r
   members_fold_extend_settings: (fold_item, attr, man) ->\r
-    man.members.each do |member_name, member_manifest|\r
-      member_item = fold_item.__send__ member_name\r
-      member_item.class.fold_extend_settings attr[member_name + '_attributes']\r
-      self.members_fold_extend_settings member_item, attr[member_name + '_attributes'], member_manifest\r
-  \r
-  each_field: () ->\r
-    @form_fields.each do |form_field|\r
-      yield form_field.field_name, form_field\r
+    _.each man.members, (member_manifest, member_name) =>\r
+      member_item = fold_item[member_name]()\r
+      member_item.my_class().fold_extend_settings attr[member_name + '_attributes']\r
+      @members_fold_extend_settings member_item, attr[member_name + '_attributes'], member_manifest\r
   \r
   push_form: (key, form_name, item) ->\r
   \r
   init_forms: (key, man, item) ->\r
-    man.members.each do |member_name, member_manifest|\r
+    _.each man.members, (member_manifest, member_name) =>\r
       form_name = member_name   # write exchange function if you want\r
-      member_item = item.__send__(form_name)\r
+      member_item = item.get(form_name)\r
       new_key = key + '.' + form_name\r
-      @forms[new_key] = Locmare::Form.new new_key, member_item, @mounted, false, @operators\r
-      self.init_forms new_key, member_manifest, member_item\r
+      @forms[new_key] = new Locmare.Form({\r
+        form_name: new_key, \r
+        item: member_item, \r
+        mounted: @mounted, \r
+        submit: false, \r
+        operators: @operators\r
+      })\r
+      @init_forms(new_key, member_manifest, member_item)\r
   \r
   init_fields: () ->\r
-    @manifest.form_field_names.each do |form_field_name|\r
-      r = form_field_name.form_name.blank? ? '' : '.' + form_field_name.form_name\r
-      key = @item.item_name + r\r
+    _.each @manifest.form_field_names, (form_field_name) =>\r
+      r = if Pettanr.is_blank(form_field_name.form_name)\r
+        ''\r
+      else\r
+        '.' + form_field_name.form_name\r
+      key = @item.item_name() + r\r
       form = @forms[key]\r
       field = form.fields[form_field_name.field_name]\r
-      @form_fields << field\r
+      @form_fields.push(field)\r
   \r
   image_dir: () ->\r
     '/images/'\r