OSDN Git Service

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