OSDN Git Service

0208bd8b8a5238b2a36c283a73a11ecfdbd09baf
[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     @listenTo(@item(), 'resize', @refresh)\r
16     @listenTo(@item(), 'move', @refresh)\r
17   \r
18   render: () ->\r
19     this.$el.html('')\r
20     this.$el.append(@label.render().el) if not @label.hidden()\r
21     this.$el.append(@tag.render().el)\r
22     this.$el.append(@helpers.render().el)\r
23     this\r
24   \r
25   refresh: () ->\r
26     @tag.render()\r
27     @helpers.render()\r
28   \r
29   change: () ->\r
30     @set(@val(), {silent: true})\r
31     @item().trigger('input:' + @field_name)\r
32     @item().trigger('input')\r
33     \r
34   mounted: () ->\r
35     if @form.mounted\r
36       0\r
37     else\r
38       1\r
39   \r
40   mount_option: () ->\r
41     {'mount': @mounted()}\r
42   \r
43   item: () ->\r
44     @form.item\r
45   \r
46   val: () ->\r
47     @tag.val()\r
48   \r
49   value: () ->\r
50     @item().get(@field_manifest.column_name())\r
51   \r
52   set: (v, opt = null) ->\r
53     a = {}\r
54     a[@field_manifest.column_name()] = v\r
55     @item().set(a, opt)\r
56   \r
57   options: (tag_options = {}) ->\r
58     tag_options\r
59   \r
60   form_field_name: () ->\r
61     @form.form_field_name @field_name\r
62   \r
63   form_name: () ->\r
64     @form.form_name\r
65   \r
66   row_break: () ->\r
67     if @field_manifest.row_break\r
68       new Tag.RowBreak()\r
69     else\r
70       null\r
71   \r
72 class Locmare.FormModule.FieldModule\r
73 class Locmare.FormModule.FieldModule.Helpers extends Backbone.View\r
74   tagName: 'span'\r
75   \r
76   initialize: (options) ->\r
77     @field = options.field\r
78     @field_manifest = options.field_manifest\r
79     @helpers = {}\r
80     _.each @field_manifest.helpers, (helper_manifest, helper_name) =>\r
81       @helpers[helper_name] = Locmare.FormModule.FieldModule.HelperFactory.factory(@field, helper_manifest)\r
82   \r
83   render: () ->\r
84     this.$el.html('')\r
85     _.each @helpers, (helper) =>\r
86       this.$el.append(helper.render().el)\r
87     this\r
88   \r