OSDN Git Service

add js form
authoryasushiito <yas@pen-chan.jp>
Sun, 14 Sep 2014 01:51:50 +0000 (10:51 +0900)
committeryasushiito <yas@pen-chan.jp>
Sun, 14 Sep 2014 01:51:50 +0000 (10:51 +0900)
20 files changed:
app/assets/javascripts/ap.js
app/assets/javascripts/locmare/form.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/extend_field.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/helper.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/helper/base.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/helper/color.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/helper/popup.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/helper/size.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/helper/tail_angle.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/label.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/label/label.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/tag.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/tag/base.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/tag/hidden.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/tag/number.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/tag/select.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/tag/text.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/form/field/tag/text_area.js.coffee [new file with mode: 0644]
lib/locmare/form/field/tag/base.rb

index b399adb..90bed36 100644 (file)
 //= require ./locmare/profiler/association/belongs_to
 //= require ./locmare/profiler/association/has_many
 //= require ./locmare/profiler/association/has_one
+//= require ./locmare/form
+//= require ./locmare/form/field
+//= require ./locmare/form/extend_field
+//= require ./locmare/form/field/label
+//= require ./locmare/form/field/label/label
+//= require ./locmare/form/field/tag
+//= require ./locmare/form/field/tag/base
+//= require ./locmare/form/field/tag/text
+//= require ./locmare/form/field/tag/number
+//= require ./locmare/form/field/tag/text_area
+//= require ./locmare/form/field/tag/select
+//= require ./locmare/form/field/tag/hidden
+//= require ./locmare/form/field/helper
+//= require ./locmare/form/field/helper/base
+//= require ./locmare/form/field/helper/size
+//= require ./locmare/form/field/helper/tail_angle
+//= require ./locmare/form/field/helper/color
+//= require ./locmare/form/field/helper/popup
 //= require ./peta/peta
 //= require ./peta/item
 //= require ./peta/owner
diff --git a/app/assets/javascripts/locmare/form.js.coffee b/app/assets/javascripts/locmare/form.js.coffee
new file mode 100644 (file)
index 0000000..78f5dc9
--- /dev/null
@@ -0,0 +1,160 @@
+# 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.Form extends Locmare.FormBase\r
+  initialize: (options) ->\r
+    super(options)\r
+    @submit = options.submit\r
+    @item.boosts 'post'\r
+    @init_fields()\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    @error_explanation = null\r
+    @div_fields = new Locmare.FormModule.Fields({\r
+      fields: @fields\r
+    })\r
+    #this.$el.append(@error_explanation.render().el) if not @error_explanation\r
+    this.$el.append(@div_fields.render().el)\r
+    if @submit\r
+      c = @submit_class()\r
+      @div_submit = new c({form: this})\r
+      this.$el.append(@div_submit.render().el)\r
+    this\r
+  \r
+  init_fields: () ->\r
+    _this = this\r
+    _.each _this.manifest.field_names, (field_name) ->\r
+      field_manifest = _this.manifest.fields[field_name]\r
+      boost_name = _this.item.my_class().find_boost_name(field_name)\r
+      extend_model = if boost_name \r
+        _this.item.boosters[boost_name].extend_model()\r
+      else\r
+        null\r
+      if boost_name and extend_model # field is extend setting AND template has a extend model\r
+        extend_form_name = @item.boosters[boost_name].model_name\r
+        extend_item = @item.boosters[boost_name].extend_item\r
+        _this.fields[field_name] = new Locmare.ExtendForm({\r
+          parent: _this, \r
+          form_name: extend_form_name, \r
+          item: extend_item, \r
+          mounted: _this.mounted, \r
+          operators: _this.operators, \r
+          field_name: field_name\r
+        })\r
+      else\r
+        _this.fields[field_name] = new Locmare.FormModule.Field({\r
+          form: _this, \r
+          field_name: field_name, \r
+          field_manifest: field_manifest\r
+        })\r
+  \r
+  submit_name: () ->\r
+    if @item.isNew()\r
+      @item.table_name() + '.submit.new'\r
+    else\r
+      @item.table_name() + '.submit.edit'\r
+  \r
+  submits: () ->\r
+    {\r
+      default: Locmare.FormModule.SubmitModule.Default\r
+    }\r
+  \r
+  submit_class: () ->\r
+    @submits()[@submit]\r
+  \r
+class Locmare.ExtendForm extends Locmare.FormBase\r
+  \r
+  initialize: (options) ->\r
+    @parent = options.parent\r
+    @form_name = options.form_name\r
+    @item = options.item\r
+    @mounted = options.mounted\r
+    @operators = options.operators\r
+    @field_name = options.field_name\r
+    super(@form_name, @item, @mounted, @operators)\r
+    @field = new Locmare.FormModule.Field({\r
+      form: @parent, \r
+      field_name: @field_name, \r
+      field_manifest: @parent.manifest.fields[@field_name]\r
+    })\r
+    @label = @field.label\r
+    @init_fields()\r
+  \r
+  init_fields: () ->\r
+    _this = this\r
+    _.each _this.manifest.field_names, (field_name) ->\r
+      field_manifest = _this.manifest.fields[field_name]\r
+      _this.fields[field_name] = new Locmare.FormModule.ExtendField({\r
+        form: _this, \r
+        field_name: field_name, \r
+        field_manifest: field_manifest\r
+      })\r
+  \r
+  form_field_name: (field_name) ->\r
+    # parent is field\r
+    @parent.form_field_name(field_name)  + '[' + field_name + ']'\r
+  \r
+class Locmare.FormModule\r
+class Locmare.FormModule.Fields extends Backbone.View\r
+  tagName: 'div'\r
+  className: 'fields'\r
+  \r
+  initialize: (options) ->\r
+    @fields = options.fields\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    _this = this\r
+    _.each @fields, (field) ->\r
+      _this.$el.append(field.render().el)\r
+    this\r
+  \r
+class Locmare.FormModule.SubmitModule\r
+class Locmare.FormModule.SubmitModule.Default extends Backbone.View\r
+  tagName: 'div'\r
+  className: 'actions'\r
+  \r
+  initialize: (options) ->\r
+    @form = options.form\r
+  \r
+  render: () ->\r
+    this.$el.html('<input type="submit" name="commit" class="submit" value="' + @form.submit_name() + '"></input>')\r
+    this\r
+  \r
diff --git a/app/assets/javascripts/locmare/form/extend_field.js.coffee b/app/assets/javascripts/locmare/form/extend_field.js.coffee
new file mode 100644 (file)
index 0000000..b8742ba
--- /dev/null
@@ -0,0 +1,60 @@
+class Locmare.FormModule.ExtendField extends Backbone.View\r
+  tagName: 'div'\r
+  className: 'extend-field'\r
+  \r
+  initialize: (options) ->\r
+    @form = options.form\r
+    @field_name = options.field_name\r
+    @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.model_name}\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\r
+  \r
+  mounted: () ->\r
+    if @form.mounted\r
+      0\r
+    else\r
+      1\r
+  \r
+  mount_option: () ->\r
+    {'mount': @mounted()}\r
+  \r
+  item: () ->\r
+    @form.item\r
+  \r
+  value: () ->\r
+    @item().get(@field_manifest.column_name)\r
+  \r
+  options: (tag_options = {}) ->\r
+    tag_options\r
+  \r
+  form_field_name: () ->\r
+    @form.form_field_name @field_name\r
+  \r
+  form_name: () ->\r
+    @form.form_name\r
+  \r
+  row_break: () ->\r
+    if @field_manifest.row_break\r
+      new Pettanr.Tag.Div({\r
+        content: null,\r
+        class_name: 'row_break'\r
+      })\r
+    else\r
+      null\r
+  \r
diff --git a/app/assets/javascripts/locmare/form/field.js.coffee b/app/assets/javascripts/locmare/form/field.js.coffee
new file mode 100644 (file)
index 0000000..42d340b
--- /dev/null
@@ -0,0 +1,61 @@
+class Locmare.FormModule.Field extends Backbone.View\r
+  tagName: 'div'\r
+  className: 'field'\r
+  \r
+  initialize: (options) ->\r
+    @form = options.form\r
+    @field_name = options.field_name\r
+    @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
+  \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\r
+  \r
+  mounted: () ->\r
+    if @form.mounted\r
+      0\r
+    else\r
+      1\r
+  \r
+  mount_option: () ->\r
+    {'mount': @mounted()}\r
+  \r
+  item: () ->\r
+    @form.item\r
+  \r
+  value: () ->\r
+    @item().get(@field_manifest.column_name)\r
+  \r
+  options: (tag_options = {}) ->\r
+    tag_options\r
+  \r
+  form_field_name: () ->\r
+    @form.form_field_name @field_name\r
+  \r
+  form_name: () ->\r
+    @form.form_name\r
+  \r
+  row_break: () ->\r
+    if @field_manifest.row_break\r
+      new Pettanr.Tag.Div({\r
+        content: null,\r
+        class_name: 'row_break'\r
+      })\r
+    else\r
+      null\r
+  \r
+class Locmare.FormModule.FieldModule\r
diff --git a/app/assets/javascripts/locmare/form/field/helper.js.coffee b/app/assets/javascripts/locmare/form/field/helper.js.coffee
new file mode 100644 (file)
index 0000000..99ce8de
--- /dev/null
@@ -0,0 +1,16 @@
+class Locmare.FormModule.FieldModule.HelperFactory\r
+  @types: () ->\r
+    {\r
+      size: Locmare.FormModule.FieldModule.HelperModule.Size, \r
+      tail_angle: Locmare.FormModule.FieldModule.HelperModule.TailAngle, \r
+      color: Locmare.FormModule.FieldModule.HelperModule.Color, \r
+      popup: Locmare.FormModule.FieldModule.HelperModule.Popup\r
+    }\r
+  \r
+  @factory: (field, my_manifest) ->\r
+    type = my_manifest.type\r
+    my_class = @types()[type]\r
+    console.log "undefined class for local view forms > #{field.form_name} > fields > #{field.field_name} > helper > #{type}\n" if not my_class\r
+    new my_class({field: field, my_manifest: my_manifest})\r
+  \r
+class Locmare.FormModule.FieldModule.HelperModule\r
diff --git a/app/assets/javascripts/locmare/form/field/helper/base.js.coffee b/app/assets/javascripts/locmare/form/field/helper/base.js.coffee
new file mode 100644 (file)
index 0000000..8266123
--- /dev/null
@@ -0,0 +1,7 @@
+class Locmare.FormModule.FieldModule.HelperModule.Base extends Backbone.View\r
+  tagName: 'input'\r
+  \r
+  initialize: (options) ->\r
+    @field = options.field\r
+    @tag_manifest = options.tag_manifest\r
+  \r
diff --git a/app/assets/javascripts/locmare/form/field/helper/color.js.coffee b/app/assets/javascripts/locmare/form/field/helper/color.js.coffee
new file mode 100644 (file)
index 0000000..2b8e0f1
--- /dev/null
@@ -0,0 +1,7 @@
+class Locmare.FormModule.FieldModule.HelperModule.Color extends Locmare.FormModule.FieldModule.HelperModule.Base\r
+  tagName: 'input'\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this\r
+  \r
diff --git a/app/assets/javascripts/locmare/form/field/helper/popup.js.coffee b/app/assets/javascripts/locmare/form/field/helper/popup.js.coffee
new file mode 100644 (file)
index 0000000..0f3473f
--- /dev/null
@@ -0,0 +1,7 @@
+class Locmare.FormModule.FieldModule.HelperModule.Popup extends Locmare.FormModule.FieldModule.HelperModule.Base\r
+  tagName: 'textarea'\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this\r
+  \r
diff --git a/app/assets/javascripts/locmare/form/field/helper/size.js.coffee b/app/assets/javascripts/locmare/form/field/helper/size.js.coffee
new file mode 100644 (file)
index 0000000..19ae606
--- /dev/null
@@ -0,0 +1,6 @@
+class Locmare.FormModule.FieldModule.HelperModule.Size extends Locmare.FormModule.FieldModule.HelperModule.Base\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this\r
+  \r
diff --git a/app/assets/javascripts/locmare/form/field/helper/tail_angle.js.coffee b/app/assets/javascripts/locmare/form/field/helper/tail_angle.js.coffee
new file mode 100644 (file)
index 0000000..25d280c
--- /dev/null
@@ -0,0 +1,7 @@
+class Locmare.FormModule.FieldModule.HelperModule.TailAngle extends Locmare.FormModule.FieldModule.HelperModule.Base\r
+  tagName: 'select'\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this\r
+  \r
diff --git a/app/assets/javascripts/locmare/form/field/label.js.coffee b/app/assets/javascripts/locmare/form/field/label.js.coffee
new file mode 100644 (file)
index 0000000..785db58
--- /dev/null
@@ -0,0 +1,14 @@
+class Locmare.FormModule.FieldModule.LabelFactory\r
+  @types: () ->\r
+    {\r
+      default: Locmare.FormModule.FieldModule.LabelModule.Default, \r
+      none: Locmare.FormModule.FieldModule.LabelModule.None\r
+    }\r
+  \r
+  @factory: (field, my_manifest) ->\r
+    type = my_manifest.type\r
+    my_class = @types()[type]\r
+    console.log "undefined class for local view forms > #{field.form_name} > fields > #{field.field_name} > label > #{type}\n" if not my_class\r
+    new my_class({field: field, my_manifest: my_manifest})\r
+  \r
+class Locmare.FormModule.FieldModule.LabelModule\r
diff --git a/app/assets/javascripts/locmare/form/field/label/label.js.coffee b/app/assets/javascripts/locmare/form/field/label/label.js.coffee
new file mode 100644 (file)
index 0000000..acee74f
--- /dev/null
@@ -0,0 +1,51 @@
+class Locmare.FormModule.FieldModule.LabelModule.Base extends Backbone.View\r
+  tagName: 'label'\r
+  \r
+  initialize: (options) ->\r
+    @field = options.field\r
+    @label_manifest = options.label_manifest\r
+    @rb = @row_break()\r
+  \r
+  form: () ->\r
+    @field.form\r
+  \r
+  manifest: () ->\r
+    @form().manifest\r
+  \r
+  form_name: () ->\r
+    @form().form_name\r
+  \r
+  item: () ->\r
+    @form().item\r
+  \r
+  item_name: () ->\r
+    @label_manifest.model_name()\r
+  \r
+  column_name: () ->\r
+    @label_manifest.column_name()\r
+  \r
+  hidden: () ->\r
+    false\r
+  \r
+  row_break: () ->\r
+    if @label_manifest.row_break\r
+      '<br>'\r
+    else\r
+      null\r
+  \r
+class Locmare.FormModule.FieldModule.LabelModule.Default extends Locmare.FormModule.FieldModule.LabelModule.Base\r
+  \r
+  label_name: () ->\r
+    'activerecord.attributes.' + @item_name() + '.' +  @column_name()\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this.$el.append(label_name())\r
+    this.$el.append(@rb) if @rb\r
+    this\r
+  \r
+class Locmare.FormModule.FieldModule.LabelModule.None extends Locmare.FormModule.FieldModule.LabelModule.Base\r
+  \r
+  hidden: () ->\r
+    true\r
+  \r
diff --git a/app/assets/javascripts/locmare/form/field/tag.js.coffee b/app/assets/javascripts/locmare/form/field/tag.js.coffee
new file mode 100644 (file)
index 0000000..49fbc57
--- /dev/null
@@ -0,0 +1,17 @@
+class Locmare.FormModule.FieldModule.TagFactory\r
+  @types: () ->\r
+    {\r
+      text: Locmare.FormModule.FieldModule.TagModule.TextTag, \r
+      number: Locmare.FormModule.FieldModule.TagModule.NumberTag, \r
+      text_area: Locmare.FormModule.FieldModule.TagModule.TextAreaTag, \r
+      select: Locmare.FormModule.FieldModule.TagModule.SelectTag, \r
+      hidden: Locmare.FormModule.FieldModule.TagModule.HiddenTag\r
+    }\r
+  \r
+  @factory: (field, my_manifest) ->\r
+    type = my_manifest.type\r
+    my_class = @types()[type]\r
+    console.log "undefined class for local view forms > #{field.form_name} > fields > #{field.field_name} > tag > #{type}\n" if not my_class\r
+    new my_class({field: field, my_manifest: my_manifest})\r
+  \r
+class Locmare.FormModule.FieldModule.TagModule\r
diff --git a/app/assets/javascripts/locmare/form/field/tag/base.js.coffee b/app/assets/javascripts/locmare/form/field/tag/base.js.coffee
new file mode 100644 (file)
index 0000000..4847cd3
--- /dev/null
@@ -0,0 +1,34 @@
+class Locmare.FormModule.FieldModule.TagModule.Base extends Backbone.View\r
+  tagName: 'input'\r
+  \r
+  initialize: (options) ->\r
+    @field = options.field\r
+    @tag_manifest = options.tag_manifest\r
+  \r
+  form_field_name: () ->\r
+    @field.form_field_name()\r
+  \r
+  value: () ->\r
+    @field.value()\r
+  \r
+  options: () ->\r
+    @tag_manifest.options\r
+  \r
+  form: () ->\r
+    @field.form\r
+  \r
+  manifest: () ->\r
+    @form().manifest\r
+  \r
+  form_name: () ->\r
+    @form().form_name\r
+  \r
+  item: () ->\r
+    @form().item\r
+  \r
+  model_name: () ->\r
+    @tag_manifest.model_name()\r
+  \r
+  column_name: () ->\r
+    @tag_manifest.column_name()\r
+  \r
diff --git a/app/assets/javascripts/locmare/form/field/tag/hidden.js.coffee b/app/assets/javascripts/locmare/form/field/tag/hidden.js.coffee
new file mode 100644 (file)
index 0000000..3f9bf96
--- /dev/null
@@ -0,0 +1,13 @@
+class Locmare.FormModule.FieldModule.TagModule.Hidden extends Locmare.FormModule.FieldModule.TagModule.Base\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    @attr = {\r
+      type: 'hidden',\r
+      name: @form_field_name(),\r
+      value: @value()\r
+    }\r
+    _.extend(@attr, @options())\r
+    this.$el.attr(@attr)\r
+    this\r
+  \r
diff --git a/app/assets/javascripts/locmare/form/field/tag/number.js.coffee b/app/assets/javascripts/locmare/form/field/tag/number.js.coffee
new file mode 100644 (file)
index 0000000..1cb97e6
--- /dev/null
@@ -0,0 +1,13 @@
+class Locmare.FormModule.FieldModule.TagModule.Number extends Locmare.FormModule.FieldModule.TagModule.Base\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    @attr = {\r
+      type: 'number',\r
+      name: @form_field_name(),\r
+      value: @value()\r
+    }\r
+    _.extend(@attr, @options())\r
+    this.$el.attr(@attr)\r
+    this\r
+  \r
diff --git a/app/assets/javascripts/locmare/form/field/tag/select.js.coffee b/app/assets/javascripts/locmare/form/field/tag/select.js.coffee
new file mode 100644 (file)
index 0000000..ecffc19
--- /dev/null
@@ -0,0 +1,57 @@
+class Locmare.FormModule.FieldModule.TagModule.Select extends Locmare.FormModule.FieldModule.TagModule.Base\r
+  tagName: 'select'\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    @attr = {\r
+      name: @form_field_name(),\r
+    }\r
+    _.extend(@attr, @options())\r
+    this.$el.attr(@attr)\r
+    _.each @select_values(), (member) ->\r
+      selected = if @is_selected(member)\r
+        ' selected'\r
+      else\r
+        ''\r
+      _this.$el.append('<option value="' + @select_value() + '"' + selected + '></option>')\r
+    this\r
+  \r
+  model_manifest: () ->\r
+    Manifest.manifest().models[@field.field_manifest.model_name()]\r
+  \r
+  model_attribute_manifest: () ->\r
+    @model_manifest().get(@field.field_manifest.column_name())\r
+  \r
+  select_item_name: () ->\r
+    @model_attribute_manifest().source.select_item_name\r
+  \r
+  items: () ->\r
+    if @model_attribute_manifest().source.type == 'model'\r
+      Manifest.manifest().system_resources.select_items[@select_item_name()]\r
+    else\r
+      resource_model_name = @model_attribute_manifest().source.resource_model_name\r
+      resource_list_name = @model_attribute_manifest().source.resource_list_name\r
+      filter_column_name = @model_attribute_manifest().source.filter_column_name\r
+      filter_id = @form().item().get(filter_column_name)\r
+      list = Locmare.ListGroup.list resource_model_name, resource_list_name\r
+      _.map list.items(null, {id: filter_id}), (i) ->\r
+        [i.caption, i.id]\r
+  \r
+  source_by_model: () ->\r
+    switch @model_attribute_manifest().source.type\r
+      when 'model', 'filter'\r
+        true\r
+      when 'magic_number'\r
+        false\r
+      else\r
+        null\r
+  \r
+  is_selected: (member) ->\r
+    @value() == member[1]\r
+  \r
+  select_values: () ->\r
+    if @source_by_model()\r
+      @items()\r
+    else\r
+      Pettanr.t_select_items(@items())\r
+  \r
diff --git a/app/assets/javascripts/locmare/form/field/tag/text.js.coffee b/app/assets/javascripts/locmare/form/field/tag/text.js.coffee
new file mode 100644 (file)
index 0000000..06be50b
--- /dev/null
@@ -0,0 +1,14 @@
+class Locmare.FormModule.FieldModule.TagModule.Text extends Locmare.FormModule.FieldModule.TagModule.Base\r
+  tagName: 'input'\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    @attr = {\r
+      type: 'text',\r
+      name: @form_field_name(),\r
+      value: @value()\r
+    }\r
+    _.extend(@attr, @options())\r
+    this.$el.attr(@attr)\r
+    this\r
+  \r
diff --git a/app/assets/javascripts/locmare/form/field/tag/text_area.js.coffee b/app/assets/javascripts/locmare/form/field/tag/text_area.js.coffee
new file mode 100644 (file)
index 0000000..0ff0767
--- /dev/null
@@ -0,0 +1,18 @@
+class Locmare.FormModule.FieldModule.TagModule.TextArea extends Locmare.FormModule.FieldModule.TagModule.Base\r
+  tagName: 'textarea'\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    @attr = {\r
+      name: @form_field_name(),\r
+    }\r
+    if sz = @tag_manifest.options['size']\r
+      r = sz.split('x')\r
+      @tag_manifest.options['cols'] = r[0]\r
+      @tag_manifest.options['rows'] = r[1]\r
+      delete @tag_manifest.options['size']\r
+    _.extend(@attr, @options())\r
+    this.$el.attr(@attr)\r
+    this.$el.html(@value())\r
+    this\r
+  \r
index 484608a..a83f839 100644 (file)
@@ -43,11 +43,11 @@ module Locmare
           end
           
           def model_name
-            @label_manifest.model_name
+            @tag_manifest.model_name
           end
           
           def column_name
-            @label_manifest.column_name
+            @tag_manifest.column_name
           end
           
           def template_dir