OSDN Git Service

4b559a1a3aadd35f03bd2316f6436e976ce92690
[pettanr/pettanr.git] / app / assets / javascripts / locmare / form / field.js.coffee
1 class Locmare.FormModule.Field extends Backbone.View\r
2   tagName: 'div'\r
3   className: 'field'\r
4   \r
5   initialize: (options) ->\r
6     @form = options.form\r
7     @field_name = options.field_name\r
8     @field_manifest = options.field_manifest\r
9     @label = Locmare.FormModule.FieldModule.LabelFactory.factory this, @field_manifest.label\r
10     @tag = Locmare.FormModule.FieldModule.TagFactory.factory this, @field_manifest.tag\r
11     @helpers = new Locmare.FormModule.FieldModule.Helpers({field: this, field_manifest: @field_manifest})\r
12     @rb = @row_break()\r
13     @options = {'data-model': @field_manifest.form_name}\r
14     @on('change', @change)\r
15   \r
16   render: () ->\r
17     this.$el.html('')\r
18     this.$el.append(@label.render().el) if not @label.hidden()\r
19     this.$el.append(@tag.render().el)\r
20     this.$el.append(@helpers.render().el)\r
21     this\r
22   \r
23   change: () ->\r
24     @form.trigger('change:field', this)\r
25     \r
26   mounted: () ->\r
27     if @form.mounted\r
28       0\r
29     else\r
30       1\r
31   \r
32   mount_option: () ->\r
33     {'mount': @mounted()}\r
34   \r
35   item: () ->\r
36     @form.item\r
37   \r
38   val: () ->\r
39     @tag.val()\r
40   \r
41   value: () ->\r
42     @item().get(@field_manifest.column_name())\r
43   \r
44   set: (v) ->\r
45     @item().set(@field_manifest.column_name(), v)\r
46   \r
47   options: (tag_options = {}) ->\r
48     tag_options\r
49   \r
50   form_field_name: () ->\r
51     @form.form_field_name @field_name\r
52   \r
53   form_name: () ->\r
54     @form.form_name\r
55   \r
56   row_break: () ->\r
57     if @field_manifest.row_break\r
58       new Tag.RowBreak()\r
59     else\r
60       null\r
61   \r
62 class Locmare.FormModule.FieldModule\r
63 class Locmare.FormModule.FieldModule.Helpers extends Backbone.View\r
64   tagName: 'span'\r
65   \r
66   initialize: (options) ->\r
67     @field = options.field\r
68     @field_manifest = options.field_manifest\r
69     @helpers = {}\r
70     _.each @field_manifest.helpers, (helper_manifest, helper_name) =>\r
71       @helpers[helper_name] = Locmare.FormModule.FieldModule.HelperFactory.factory(@field, helper_manifest)\r
72   \r
73   render: () ->\r
74     this.$el.html('')\r
75     _.each @helpers, (helper) =>\r
76       this.$el.append(helper.render().el)\r
77     this\r
78   \r