OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[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   \r
4   render: () ->\r
5     this.$el.html('')\r
6     @attr = {\r
7       name: @form_field_name(),\r
8     }\r
9     _.extend(@attr, @options())\r
10     this.$el.attr(@attr)\r
11     @select_values((members) =>\r
12       _.each members, (member) =>\r
13         selected = if @is_selected(member)\r
14           ' selected'\r
15         else\r
16           ''\r
17         this.$el.append('<option value="' + member[1] + '"' + selected + '>' + member[0] + '</option>')\r
18     )\r
19     this\r
20   \r
21   model_manifest: () ->\r
22     Manifest.manifest().models[@field.field_manifest.item_name()]\r
23   \r
24   model_attribute_manifest: () ->\r
25     @model_manifest().attributes[@field.field_manifest.column_name()]\r
26   \r
27   select_item_name: () ->\r
28     @model_attribute_manifest().source.select_item_name\r
29   \r
30   source_by_filter: () ->\r
31     switch @model_attribute_manifest().source.type\r
32       when 'model', 'filter'\r
33         true\r
34       when 'magic_number'\r
35         false\r
36       else\r
37         null\r
38   \r
39   is_selected: (member) ->\r
40     @value() == member[1]\r
41   \r
42   select_values: (cb) ->\r
43     if @source_by_filter()\r
44       resource_item_name = @model_attribute_manifest().source.resource_item_name\r
45       resource_action_name = @model_attribute_manifest().source.resource_action_name\r
46       filter_column_name = @model_attribute_manifest().source.filter_column_name\r
47       filter_id = @form().item.get(filter_column_name)\r
48       resource_controller_name = Manifest.manifest().models[resource_item_name].classify().table_name()\r
49       caption_name = @model_attribute_manifest().source.caption_name\r
50       params = if filter_column_name\r
51         {id: filter_id}\r
52       else\r
53         {}\r
54       list = Locmare.ListGroup.list(resource_controller_name, resource_action_name, @form().operators, {})\r
55       list.open((page_status) ->\r
56         members = _.map list.models, (member) ->\r
57           [member.get(caption_name), member.get('id')]\r
58         cb(members)\r
59       )\r
60     else\r
61       s = Manifest.manifest().system_resources.select_items[@select_item_name()]\r
62       members = Pettanr.AppHelper.t_select_items(s)\r
63       cb(members)\r
64   \r