OSDN Git Service

fix editor event
[pettanr/pettanr.git] / app / assets / javascripts / locmare / form / field / tag / select.js.coffee
1 class Locmare.FormModule.FieldModule.TagModule.SelectTag extends Locmare.FormModule.FieldModule.TagModule.Base\r
2   tagName: 'select'\r
3   events: {\r
4     'change': 'change'\r
5   }\r
6   \r
7   render: () ->\r
8     this.$el.html('')\r
9     @attr = {\r
10       name: @form_field_name(),\r
11     }\r
12     _.extend(@attr, @options())\r
13     this.$el.attr(@attr)\r
14     @select_values((members) =>\r
15       values = if @model_attribute_manifest().source.translate()\r
16         Pettanr.AppHelper.t_select_items(members)\r
17       else\r
18         members\r
19       _.each values, (member) =>\r
20         selected = if @is_selected(member)\r
21           ' selected'\r
22         else\r
23           ''\r
24         this.$el.append('<option value="' + member[1] + '"' + selected + '>' + member[0] + '</option>')\r
25     )\r
26     this\r
27   \r
28   model_manifest: () ->\r
29     Manifest.manifest().models[@field.field_manifest.item_name()]\r
30   \r
31   model_attribute_manifest: () ->\r
32     @model_manifest().attributes[@field.field_manifest.column_name()]\r
33   \r
34   select_item_name: () ->\r
35     @model_attribute_manifest().source.select_item_name\r
36   \r
37   source_by_filter: () ->\r
38     switch @model_attribute_manifest().source.type\r
39       when 'model', 'filter'\r
40         true\r
41       when 'magic_number'\r
42         false\r
43       else\r
44         null\r
45   \r
46   is_selected: (member) ->\r
47     @value() == member[1]\r
48   \r
49   select_values: (cb) ->\r
50     if @source_by_filter()\r
51       resource_item_name = @model_attribute_manifest().source.resource_item_name\r
52       resource_action_name = @model_attribute_manifest().source.resource_action_name\r
53       filter_column_name = @model_attribute_manifest().source.filter_column_name\r
54       filter_id = @form().item.get(filter_column_name)\r
55       resource_controller_name = Manifest.manifest().models[resource_item_name].classify().table_name()\r
56       caption_name = @model_attribute_manifest().source.caption_name\r
57       params = if filter_column_name\r
58         {id: filter_id}\r
59       else\r
60         {}\r
61       list = Locmare.ListGroup.list(resource_controller_name, resource_action_name, @form().operators, {})\r
62       list.open((page_status) ->\r
63         members = _.map list.models, (member) ->\r
64           [member.get(caption_name), member.get('id')]\r
65         cb(members)\r
66       )\r
67     else\r
68       members = Manifest.manifest().system_resources.select_items[@select_item_name()]\r
69       cb(members)\r
70   \r
71   change: () ->\r
72     @field.trigger('change')\r
73   \r