class Locmare.FormModule.Field extends Backbone.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 = {} _this = this _.each @field_manifest.helpers, (helper_manifest, helper_name) -> _this.helpers[helper_name] = Locmare.FormModule.FieldModule.HelperFactory.factory(_this, helper_manifest) @rb = @row_break() @options = {'data-model': @field_manifest.form_name} render: () -> this.$el.html('') this.$el.append(@label.render().el) if not @label.hidden() this.$el.append(@tag.render().el) _this = this _.each @helpers, (helper) -> _this.$el.append(helper.render().el) this.$el.append(@rb.render().el) if @rb this mounted: () -> if @form.mounted 0 else 1 mount_option: () -> {'mount': @mounted()} item: () -> @form.item value: () -> @item().get(@field_manifest.column_name) options: (tag_options = {}) -> tag_options form_field_name: () -> @form.form_field_name @field_name form_name: () -> @form.form_name row_break: () -> if @field_manifest.row_break new Tag.Div({ content: null, class_name: 'row_break' }) else null class Locmare.FormModule.FieldModule module Locmare module BucketModule class FieldName attr :bucket, :field_name, :field_manifest, :label, :tag, :helpers, :options def initialize bucket, field_name, field_manifest @bucket = bucket @field_name = field_name @field_manifest = field_manifest @label = LabelFactory.factory self, @field_manifest.label @tag = TagFactory.factory self, @field_manifest.tag @helpers = {} @field_manifest.helpers.each {|helper_name, helper_manifest| @helpers[helper_name] = HelperFactory.factory self, helper_manifest } @options = {'data-model' => @field_manifest.form_name} end def item @form.item end def form_field_name self.form_name + '[' + @field_name + ']' end def form_name @form.form_name end def template_dir @form.template_dir + 'field/' end def template_file_name 'default' end def template_name self.template_dir + self.template_file_name end def template_option {:field => self} end def row_break_template_dir @form.template_dir + 'row_break/' end def row_break_template_file_name if @field_manifest.row_break 'br' else 'no_break' end end def row_break_template_name self.row_break_template_dir + self.row_break_template_file_name end end end end