OSDN Git Service

bb24fab6709367ba82bbdf92e01aa3c9fbc4ec3f
[pettanr/pettanr.git] / app / assets / javascripts / locmare / form / field.js.coffee
1 class Locmare.FormModule.Field extends Pettanr.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     @on('change', @change)\r
13     item = @item()\r
14     @listenTo(item, 'resize', @refresh)\r
15     @listenTo(item, 'move', @refresh)\r
16     @listenTo(item, 'sort', @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.refresh()\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   is_extend: () ->\r
35     false\r
36   \r
37   item: () ->\r
38     @form.item\r
39   \r
40   val: () ->\r
41     @tag.val()\r
42   \r
43   value: () ->\r
44     @item().get(@field_manifest.column_name())\r
45   \r
46   set: (v, opt = null) ->\r
47     a = {}\r
48     a[@field_manifest.column_name()] = v\r
49     @item().set(a, opt)\r
50   \r
51   unset: () ->\r
52     a = {}\r
53     a[@field_manifest.column_name()] = undefined\r
54     @item().set(a, {unset: true})\r
55   \r
56   form_field_name: () ->\r
57     @form.form_field_name @field_name\r
58   \r
59   form_name: () ->\r
60     @form.form_name\r
61   \r
62   has_row_break: () ->\r
63     if @field_manifest.row_break\r
64       true\r
65     else\r
66       false\r
67   \r
68   row_break: () ->\r
69     if @has_row_break()\r
70       Pettanr.View.rb()\r
71     else\r
72       null\r
73   \r
74 class Locmare.FormModule.FieldModule\r
75 class Locmare.FormModule.FieldModule.Helpers extends Pettanr.View\r
76   tagName: 'span'\r
77   \r
78   initialize: (options) ->\r
79     @field = options.field\r
80     @field_manifest = options.field_manifest\r
81     @helpers = {}\r
82     _.each @field_manifest.helpers, (helper_manifest, helper_name) =>\r
83       @helpers[helper_name] = Locmare.FormModule.FieldModule.HelperFactory.factory(@field, helper_manifest)\r
84   \r
85   render: () ->\r
86     this.$el.html('')\r
87     _.each @helpers, (helper) =>\r
88       this.$el.append(helper.render().el)\r
89     this\r
90   \r
91   refresh: () -> \r
92     _.each @helpers, (helper) =>\r
93       helper.refresh()\r
94   \r