class Locmare.FormModule.FieldModule.TagModule.SelectTag extends Locmare.FormModule.FieldModule.TagModule.Base\r
tagName: 'select'\r
+ events: {\r
+ 'change': 'change'\r
+ }\r
\r
render: () ->\r
- this.$el.html('')\r
- @attr = {\r
- name: @form_field_name(),\r
- }\r
- _.extend(@attr, @options())\r
- this.$el.attr(@attr)\r
- _this = this\r
- _.each @select_values(), (member) ->\r
- selected = if _this.is_selected(member)\r
- ' selected'\r
+ @select_values((members) =>\r
+ values = if @model_attribute_manifest().source.translate()\r
+ Pettanr.AppHelper.t_select_items(members)\r
else\r
- ''\r
- _this.$el.append('<option value="' + member[1] + '"' + selected + '>' + member[0] + '</option>')\r
+ members\r
+ this.$el.html('')\r
+ @attr = {\r
+ name: @form_field_name(),\r
+ }\r
+ _.extend(@attr, @options())\r
+ this.$el.attr(@attr)\r
+ _.each values, (member) =>\r
+ selected = if @is_selected(member)\r
+ ' selected'\r
+ else\r
+ ''\r
+ this.$el.append('<option value="' + member[1] + '"' + selected + '>' + member[0] + '</option>')\r
+ )\r
this\r
\r
model_manifest: () ->\r
- Manifest.manifest().models[@field.field_manifest.model_name()]\r
+ Manifest.manifest().models[@field.field_manifest.item_name()]\r
\r
model_attribute_manifest: () ->\r
@model_manifest().attributes[@field.field_manifest.column_name()]\r
select_item_name: () ->\r
@model_attribute_manifest().source.select_item_name\r
\r
- items: () ->\r
- if @model_attribute_manifest().source.type == 'magic_number'\r
- Manifest.manifest().system_resources.select_items[@select_item_name()]\r
- else\r
- resource_model_name = @model_attribute_manifest().source.resource_model_name\r
- resource_list_name = @model_attribute_manifest().source.resource_list_name\r
- filter_column_name = @model_attribute_manifest().source.filter_column_name\r
- filter_id = @form().item().get(filter_column_name)\r
- list = Locmare.ListGroup.list resource_model_name, resource_list_name\r
- _.map list.items(null, {id: filter_id}), (i) ->\r
- [i.caption, i.id]\r
- \r
- source_by_model: () ->\r
+ source_by_filter: () ->\r
switch @model_attribute_manifest().source.type\r
when 'model', 'filter'\r
true\r
is_selected: (member) ->\r
@value() == member[1]\r
\r
- select_values: () ->\r
- if @source_by_model()\r
- @items()\r
+ select_values: (cb) ->\r
+ if @source_by_filter()\r
+ resource_item_name = @model_attribute_manifest().source.resource_item_name\r
+ resource_action_name = @model_attribute_manifest().source.resource_action_name\r
+ filter_column_name = @model_attribute_manifest().source.filter_column_name\r
+ filter_id = @form().item.get(filter_column_name)\r
+ resource_controller_name = Manifest.manifest().models[resource_item_name].classify().table_name()\r
+ caption_name = @model_attribute_manifest().source.caption_name\r
+ params = if filter_column_name\r
+ {id: filter_id}\r
+ else\r
+ {}\r
+ list = Locmare.ListGroup.list(resource_controller_name, resource_action_name, {})\r
+ list.open((page_status) ->\r
+ members = _.map list.models, (member) ->\r
+ [member.get(caption_name), member.get('id')]\r
+ cb(members)\r
+ )\r
else\r
- Pettanr.AppHelper.t_select_items(@items())\r
+ members = Manifest.manifest().system_resources.select_items[@select_item_name()]\r
+ cb(members)\r
+ \r
+ change: () ->\r
+ @field.trigger('change')\r
\r