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 |