OSDN Git Service

fix:balloon r
[pettanr/pettanr.git] / app / assets / javascripts / locmare / form / field / tag / select.js.coffee
index ecffc19..5a15566 100644 (file)
@@ -1,43 +1,40 @@
-class Locmare.FormModule.FieldModule.TagModule.Select extends Locmare.FormModule.FieldModule.TagModule.Base\r
+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
-    _.each @select_values(), (member) ->\r
-      selected = if @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="' + @select_value() + '"' + selected + '></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().get(@field.field_manifest.column_name())\r
+    @model_manifest().attributes[@field.field_manifest.column_name()]\r
   \r
   select_item_name: () ->\r
     @model_attribute_manifest().source.select_item_name\r
   \r
-  items: () ->\r
-    if @model_attribute_manifest().source.type == 'model'\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
@@ -49,9 +46,28 @@ class Locmare.FormModule.FieldModule.TagModule.Select extends Locmare.FormModule
   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.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