Commit 55ae4eb8eac8818390cb57d890de9c2cbb106f51
1 parent
8b432927
Exists in
master
and in
5 other branches
Refactory autocomplete javascript and ajax request
Signed-off-by: Fabio Teixeira <fabio1079@gmail.com> Signed-off-by: Luciano Prestes <lucianopcbr@gmail.com>
Showing
2 changed files
with
24 additions
and
47 deletions
Show diff stats
controllers/mpog_software_plugin_controller.rb
| @@ -125,29 +125,23 @@ class MpogSoftwarePluginController < ApplicationController | @@ -125,29 +125,23 @@ class MpogSoftwarePluginController < ApplicationController | ||
| 125 | render :json=>state_list.collect {|state| state.name }.to_json | 125 | render :json=>state_list.collect {|state| state.name }.to_json |
| 126 | end | 126 | end |
| 127 | 127 | ||
| 128 | - def get_databases | ||
| 129 | - return render :json=>{} unless request.xhr? and params[:query] | ||
| 130 | - | ||
| 131 | - data = DatabaseDescription.where("name ILIKE ?", "%#{params[:query]}%").select("id, name").collect {|db| | ||
| 132 | - {:id=>db.id, :label=>db.name} | ||
| 133 | - } | ||
| 134 | - other = [DatabaseDescription.select("id, name").last].collect { |db| | ||
| 135 | - {:id=>db.id, :label=>db.name} | ||
| 136 | - } | ||
| 137 | - | ||
| 138 | - # Always has other in the list | ||
| 139 | - data |= other | ||
| 140 | - | ||
| 141 | - render :json=> data | ||
| 142 | - end | ||
| 143 | - | ||
| 144 | - def get_languages | ||
| 145 | - return render :json=>{} unless request.xhr? and params[:query] | 128 | + def get_field_data |
| 129 | + return render :json=>{} if !request.xhr? or params[:query].nil? or params[:field].nil? | ||
| 130 | + | ||
| 131 | + model = nil | ||
| 132 | + case params[:field] | ||
| 133 | + when "database" | ||
| 134 | + model = DatabaseDescription | ||
| 135 | + when "software_language" | ||
| 136 | + model = ProgrammingLanguage | ||
| 137 | + else | ||
| 138 | + model = DatabaseDescription | ||
| 139 | + end | ||
| 146 | 140 | ||
| 147 | - data = ProgrammingLanguage.where("name ILIKE ?", "%#{params[:query]}%").select("id, name").collect {|db| | 141 | + data = model.where("name ILIKE ?", "%#{params[:query]}%").select("id, name").collect {|db| |
| 148 | {:id=>db.id, :label=>db.name} | 142 | {:id=>db.id, :label=>db.name} |
| 149 | } | 143 | } |
| 150 | - other = [ProgrammingLanguage.select("id, name").last].collect { |db| | 144 | + other = [model.select("id, name").last].collect { |db| |
| 151 | {:id=>db.id, :label=>db.name} | 145 | {:id=>db.id, :label=>db.name} |
| 152 | } | 146 | } |
| 153 | 147 |
public/mpog-software-validations.js
| @@ -22,38 +22,21 @@ | @@ -22,38 +22,21 @@ | ||
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | function database_autocomplete() { | 24 | function database_autocomplete() { |
| 25 | - jQuery(".database_autocomplete").autocomplete({ | ||
| 26 | - source : function(request, response){ | ||
| 27 | - jQuery.ajax({ | ||
| 28 | - type: "GET", | ||
| 29 | - url: "/plugin/mpog_software/get_databases", | ||
| 30 | - data: {query: request.term}, | ||
| 31 | - success: function(result){ | ||
| 32 | - response(result); | ||
| 33 | - } | ||
| 34 | - }); | ||
| 35 | - }, | ||
| 36 | - | ||
| 37 | - minLength: 1, | ||
| 38 | - | ||
| 39 | - select : function (event, selected) { | ||
| 40 | - var description = get_hidden_description_field(this, ".database_description_id"); | ||
| 41 | - description.val(selected.item.id); | ||
| 42 | - description.attr("data-label", selected.item.label); | ||
| 43 | - } | ||
| 44 | - }).blur(function(){ | ||
| 45 | - verify_autocomplete(this, ".database_description_id"); | ||
| 46 | - }); | 25 | + enable_autocomplete("database", ".database_description_id", ".database_autocomplete"); |
| 47 | } | 26 | } |
| 48 | 27 | ||
| 49 | 28 | ||
| 50 | function language_autocomplete() { | 29 | function language_autocomplete() { |
| 51 | - jQuery(".language_autocomplete").autocomplete({ | 30 | + enable_autocomplete("software_language", ".programming_language_id", ".language_autocomplete"); |
| 31 | + } | ||
| 32 | + | ||
| 33 | + function enable_autocomplete(field_name, field_value_class, autocomplete_class) { | ||
| 34 | + jQuery(autocomplete_class).autocomplete({ | ||
| 52 | source : function(request, response){ | 35 | source : function(request, response){ |
| 53 | jQuery.ajax({ | 36 | jQuery.ajax({ |
| 54 | type: "GET", | 37 | type: "GET", |
| 55 | - url: "/plugin/mpog_software/get_languages", | ||
| 56 | - data: {query: request.term}, | 38 | + url: "/plugin/mpog_software/get_field_data", |
| 39 | + data: {query: request.term, field: field_name}, | ||
| 57 | success: function(result){ | 40 | success: function(result){ |
| 58 | response(result); | 41 | response(result); |
| 59 | } | 42 | } |
| @@ -63,12 +46,12 @@ | @@ -63,12 +46,12 @@ | ||
| 63 | minLength: 0, | 46 | minLength: 0, |
| 64 | 47 | ||
| 65 | select : function (event, selected) { | 48 | select : function (event, selected) { |
| 66 | - var description = get_hidden_description_field(this, ".programming_language_id"); | 49 | + var description = get_hidden_description_field(this, field_value_class); |
| 67 | description.val(selected.item.id); | 50 | description.val(selected.item.id); |
| 68 | description.attr("data-label", selected.item.label); | 51 | description.attr("data-label", selected.item.label); |
| 69 | } | 52 | } |
| 70 | }).blur(function(){ | 53 | }).blur(function(){ |
| 71 | - verify_autocomplete(this, ".programming_language_id"); | 54 | + verify_autocomplete(this, field_value_class); |
| 72 | }); | 55 | }); |
| 73 | } | 56 | } |
| 74 | 57 |