-class Locmare.FormModule.Field extends Backbone.View\r
+class Locmare.FormModule.Field extends Pettanr.View\r
tagName: 'div'\r
className: 'field'\r
\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
+ @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
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