2 attr :item_name, :conf, :manifest, :base, :fields, :field_names
3 def initialize item_name, conf, manifest
8 @fields = @conf['fields'] || {}
9 @field_names = @conf['field_names'] || []
20 def initialize conf, field
26 opt = @field.tag_options.merge(@conf['options'] || {})
27 @field.element.field_tag_attributes(@field.column, @field.tag_mounted, opt)
31 view.text_field_tag @field.tag_name, @field.tag_value, self.tag_options
38 view.text_area_tag @field.tag_name, @field.tag_value, self.tag_options
45 view.number_field_tag @field.tag_name, @field.tag_value, self.tag_options
52 view.hidden_field_tag @field.tag_name, @field.tag_value, self.tag_options
58 def initialize conf, field
60 @model = Pettanr::Application::manifest.model(@field.model_name)
61 @source_conf = @model.attributes[@field.column]['source']
65 Pettanr::Application::manifest.select_items[@source_conf['type']][@source_conf['key']]
69 view.select_tag @field.tag_name,
70 view.options_for_select(view.t_select_items(self.items), :selected => @field.tag_value.to_s ), self.tag_options
77 def initialize field, name, conf
97 attr :part, :column, :type, :mounted, :model_name, :tag_options, :helpers, :form
99 'text' => Text, 'text_area' => TextArea, 'number' => Number,
100 'hidden' => Hidden, 'select' => Select
102 def initialize form, mounted, conf, manifest
108 @model_name = @conf['model'] || @form.model_name
109 @part = @conf['part']
110 @column = @conf['column']
111 @label_conf = @conf['label'] || {}
112 @field_conf = @conf['field']
113 @helper_confs = @conf['helpers'] || {}
115 @tag_options = {'data-model' => @model_name}
117 @model_manifest = Pettanr::Application::manifest.model(@model_name)
118 model_attribute_conf = @model_manifest.attributes[self.column] || {}
119 @primary_key = model_attribute_conf['primary_key']
121 @helpers = @helper_confs.map do |helper_name, helper_conf|
122 Helper.new self, helper_name, helper_conf
127 @element ||= if self.part?
128 @form.element.__send__ self.part
139 @primary_key and self.element.new_record?
143 @label_conf['type'] == nil or @label_conf['type'] != 'hidden'
147 view.t 'activerecord.attributes.' + self.model_name + '.' + self.column
151 @label_conf['row_break'] == true
156 @form.model_name + '[' + self.model_name + '_attributes][' + self.column + ']'
158 @form.model_name + '[' + self.column + ']'
163 self.element.attributes[self.column]
171 @field ||= @@type[@field_conf['type']].new @field_conf, self
179 @conf['row_break'] == true
184 attr :element, :mounted, :attributes, :fields, :model_name
185 def initialize element, operators, mounted, manifest
187 @operators = operators
191 @base = @manifest.base
192 @model_name = @base || element.model_name
194 base_field_confs = if @base
195 base_form = Pettanr::Application::manifest.form(@base)
200 extend_field_confs = @manifest.fields
201 @field_confs = base_field_confs.merge(extend_field_confs)
202 @fields = @manifest.field_names.map do |field_name|
203 field_conf = @field_confs[field_name]
204 Field.new self, @mounted, field_conf, manifest
213 @fields.each do |field|
214 next if field.ignore_field?
221 attr :form_manifest, :item_name, :manifest, :form_conf
222 def initialize form_manifest
223 @form_manifest = form_manifest
224 @item_name = @form_manifest.item_name
225 @manifest = @form_manifest.manifest
226 @form_conf = @form_manifest.conf
230 def open element, operators, mounted
231 Form.new element, operators, mounted, @form_manifest