X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Flocmare%2Fform%2Ffield%2Ftag%2Fselect.js.coffee;h=5a15566789ec4c2a8ebefe0fbbae4567f98a4227;hp=5bdb03e8fe5a64369f4d4cd45053cb3f960c20ac;hb=a2476d007b31867d0c17898c358bde615e830d91;hpb=b922609711ac4713a21d2e64cac393765c0917e9 diff --git a/app/assets/javascripts/locmare/form/field/tag/select.js.coffee b/app/assets/javascripts/locmare/form/field/tag/select.js.coffee index 5bdb03e8..5a155667 100644 --- a/app/assets/javascripts/locmare/form/field/tag/select.js.coffee +++ b/app/assets/javascripts/locmare/form/field/tag/select.js.coffee @@ -1,24 +1,32 @@ class Locmare.FormModule.FieldModule.TagModule.SelectTag extends Locmare.FormModule.FieldModule.TagModule.Base tagName: 'select' + events: { + 'change': 'change' + } render: () -> - this.$el.html('') - @attr = { - name: @form_field_name(), - } - _.extend(@attr, @options()) - this.$el.attr(@attr) - _this = this - _.each @select_values(), (member) -> - selected = if _this.is_selected(member) - ' selected' + @select_values((members) => + values = if @model_attribute_manifest().source.translate() + Pettanr.AppHelper.t_select_items(members) else - '' - _this.$el.append('') + members + this.$el.html('') + @attr = { + name: @form_field_name(), + } + _.extend(@attr, @options()) + this.$el.attr(@attr) + _.each values, (member) => + selected = if @is_selected(member) + ' selected' + else + '' + this.$el.append('') + ) this model_manifest: () -> - Manifest.manifest().models[@field.field_manifest.model_name()] + Manifest.manifest().models[@field.field_manifest.item_name()] model_attribute_manifest: () -> @model_manifest().attributes[@field.field_manifest.column_name()] @@ -26,19 +34,7 @@ class Locmare.FormModule.FieldModule.TagModule.SelectTag extends Locmare.FormMod select_item_name: () -> @model_attribute_manifest().source.select_item_name - items: () -> - if @model_attribute_manifest().source.type == 'magic_number' - Manifest.manifest().system_resources.select_items[@select_item_name()] - else - resource_model_name = @model_attribute_manifest().source.resource_model_name - resource_list_name = @model_attribute_manifest().source.resource_list_name - filter_column_name = @model_attribute_manifest().source.filter_column_name - filter_id = @form().item().get(filter_column_name) - list = Locmare.ListGroup.list resource_model_name, resource_list_name - _.map list.items(null, {id: filter_id}), (i) -> - [i.caption, i.id] - - source_by_model: () -> + source_by_filter: () -> switch @model_attribute_manifest().source.type when 'model', 'filter' true @@ -50,9 +46,28 @@ class Locmare.FormModule.FieldModule.TagModule.SelectTag extends Locmare.FormMod is_selected: (member) -> @value() == member[1] - select_values: () -> - if @source_by_model() - @items() + select_values: (cb) -> + if @source_by_filter() + resource_item_name = @model_attribute_manifest().source.resource_item_name + resource_action_name = @model_attribute_manifest().source.resource_action_name + filter_column_name = @model_attribute_manifest().source.filter_column_name + filter_id = @form().item.get(filter_column_name) + resource_controller_name = Manifest.manifest().models[resource_item_name].classify().table_name() + caption_name = @model_attribute_manifest().source.caption_name + params = if filter_column_name + {id: filter_id} + else + {} + list = Locmare.ListGroup.list(resource_controller_name, resource_action_name, {}) + list.open((page_status) -> + members = _.map list.models, (member) -> + [member.get(caption_name), member.get('id')] + cb(members) + ) else - Pettanr.AppHelper.t_select_items(@items()) + members = Manifest.manifest().system_resources.select_items[@select_item_name()] + cb(members) + + change: () -> + @field.trigger('change')