class Locmare.FormModule.Field extends Pettanr.View tagName: 'div' className: 'field' initialize: (options) -> @form = options.form @field_name = options.field_name @field_manifest = options.field_manifest @label = Locmare.FormModule.FieldModule.LabelFactory.factory this, @field_manifest.label @tag = Locmare.FormModule.FieldModule.TagFactory.factory this, @field_manifest.tag @helpers = new Locmare.FormModule.FieldModule.Helpers({field: this, field_manifest: @field_manifest}) @on('change', @change) item = @item() @listenTo(item, 'resize', @refresh) @listenTo(item, 'move', @refresh) @listenTo(item, 'sort', @refresh) render: () -> this.$el.html('') this.$el.append(@label.render().el) if not @label.hidden() this.$el.append(@tag.render().el) this.$el.append(@helpers.render().el) this refresh: () -> @tag.refresh() @helpers.refresh() change: () -> @set(@val(), {silent: true}) @item().trigger('input:' + @field_name) @item().trigger('input') is_extend: () -> false item: () -> @form.item val: () -> @tag.val() value: () -> @item().get(@field_manifest.column_name()) set: (v, opt = null) -> a = {} a[@field_manifest.column_name()] = v @item().set(a, opt) unset: () -> a = {} a[@field_manifest.column_name()] = undefined @item().set(a, {unset: true}) form_field_name: () -> @form.form_field_name @field_name form_name: () -> @form.form_name has_row_break: () -> if @field_manifest.row_break true else false row_break: () -> if @has_row_break() Pettanr.View.rb() else null class Locmare.FormModule.FieldModule class Locmare.FormModule.FieldModule.Helpers extends Pettanr.View tagName: 'span' initialize: (options) -> @field = options.field @field_manifest = options.field_manifest @helpers = {} _.each @field_manifest.helpers, (helper_manifest, helper_name) => @helpers[helper_name] = Locmare.FormModule.FieldModule.HelperFactory.factory(@field, helper_manifest) render: () -> this.$el.html('') _.each @helpers, (helper) => this.$el.append(helper.render().el) this refresh: () -> _.each @helpers, (helper) => helper.refresh()