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')