From 55ae4eb8eac8818390cb57d890de9c2cbb106f51 Mon Sep 17 00:00:00 2001 From: Luciano Prestes Cavalcanti Date: Wed, 29 Oct 2014 18:00:20 -0200 Subject: [PATCH] Refactory autocomplete javascript and ajax request --- controllers/mpog_software_plugin_controller.rb | 34 ++++++++++++++-------------------- public/mpog-software-validations.js | 37 ++++++++++--------------------------- 2 files changed, 24 insertions(+), 47 deletions(-) diff --git a/controllers/mpog_software_plugin_controller.rb b/controllers/mpog_software_plugin_controller.rb index ee58348..6a2b06c 100644 --- a/controllers/mpog_software_plugin_controller.rb +++ b/controllers/mpog_software_plugin_controller.rb @@ -125,29 +125,23 @@ class MpogSoftwarePluginController < ApplicationController render :json=>state_list.collect {|state| state.name }.to_json end - def get_databases - return render :json=>{} unless request.xhr? and params[:query] - - data = DatabaseDescription.where("name ILIKE ?", "%#{params[:query]}%").select("id, name").collect {|db| - {:id=>db.id, :label=>db.name} - } - other = [DatabaseDescription.select("id, name").last].collect { |db| - {:id=>db.id, :label=>db.name} - } - - # Always has other in the list - data |= other - - render :json=> data - end - - def get_languages - return render :json=>{} unless request.xhr? and params[:query] + def get_field_data + return render :json=>{} if !request.xhr? or params[:query].nil? or params[:field].nil? + + model = nil + case params[:field] + when "database" + model = DatabaseDescription + when "software_language" + model = ProgrammingLanguage + else + model = DatabaseDescription + end - data = ProgrammingLanguage.where("name ILIKE ?", "%#{params[:query]}%").select("id, name").collect {|db| + data = model.where("name ILIKE ?", "%#{params[:query]}%").select("id, name").collect {|db| {:id=>db.id, :label=>db.name} } - other = [ProgrammingLanguage.select("id, name").last].collect { |db| + other = [model.select("id, name").last].collect { |db| {:id=>db.id, :label=>db.name} } diff --git a/public/mpog-software-validations.js b/public/mpog-software-validations.js index 0d255d0..e105c8e 100644 --- a/public/mpog-software-validations.js +++ b/public/mpog-software-validations.js @@ -22,38 +22,21 @@ } function database_autocomplete() { - jQuery(".database_autocomplete").autocomplete({ - source : function(request, response){ - jQuery.ajax({ - type: "GET", - url: "/plugin/mpog_software/get_databases", - data: {query: request.term}, - success: function(result){ - response(result); - } - }); - }, - - minLength: 1, - - select : function (event, selected) { - var description = get_hidden_description_field(this, ".database_description_id"); - description.val(selected.item.id); - description.attr("data-label", selected.item.label); - } - }).blur(function(){ - verify_autocomplete(this, ".database_description_id"); - }); + enable_autocomplete("database", ".database_description_id", ".database_autocomplete"); } function language_autocomplete() { - jQuery(".language_autocomplete").autocomplete({ + enable_autocomplete("software_language", ".programming_language_id", ".language_autocomplete"); + } + + function enable_autocomplete(field_name, field_value_class, autocomplete_class) { + jQuery(autocomplete_class).autocomplete({ source : function(request, response){ jQuery.ajax({ type: "GET", - url: "/plugin/mpog_software/get_languages", - data: {query: request.term}, + url: "/plugin/mpog_software/get_field_data", + data: {query: request.term, field: field_name}, success: function(result){ response(result); } @@ -63,12 +46,12 @@ minLength: 0, select : function (event, selected) { - var description = get_hidden_description_field(this, ".programming_language_id"); + var description = get_hidden_description_field(this, field_value_class); description.val(selected.item.id); description.attr("data-label", selected.item.label); } }).blur(function(){ - verify_autocomplete(this, ".programming_language_id"); + verify_autocomplete(this, field_value_class); }); } -- libgit2 0.21.2