Commit 8511e492b5f73fd6428573aa714c9fd43ac02cbf

Authored by Luciano Prestes
1 parent 66411419
Exists in master and in 79 other branches add_sisp_to_chef, add_super_archives_plugin, api_for_colab, automates_core_packing, backup_not_prod, changes_in_buttons_on_content_panel, colab_automated_login, colab_spb_plugin_recipe, colab_widgets_settings, design_validation, dev_env_minimal, disable_email_dev, fix_breadcrumbs_position, fix_categories_software_link, fix_edit_institution, fix_edit_software_with_another_license, fix_get_license_info, fix_gitlab_assets_permission, fix_list_style_inside_article, fix_list_style_on_folder_elements, fix_members_pagination, fix_merge_request_url, fix_models_translations, fix_no_license, fix_software_api, fix_software_block_migration, fix_software_communities_translations, fix_software_communities_unit_test, fix_style_create_institution_admin_panel, fix_superarchives_imports, fix_sym_links_noosfero, focus_search_field_theme, gov-user-refactoring, gov-user-refactoring-rails4, header_fix, institution_modal_on_rating, kalibro-conf-refactoring, kalibro-processor-package, lxc_settings, margin_fix, mezuro_cookbook, prezento, refactor_download_block, refactor_software_communities, refactor_software_for_sisp, register_page, release-process, release-process-v2, remove-unused-images, remove_broken_theme, remove_secondary_email_from_user, remove_sisp_buttons, removing_super_archives_email, review_message, scope2method, signals_user_noosfero, sisp_catalog_header, sisp_colab_config, sisp_dev, sisp_dev_master, sisp_simple_version, software_as_organization, software_catalog_style_fix, software_communities_html_refactor, software_infos_api, spb_minimal_env, spb_to_rails4, spec_refactor, stable-4.1, stable-4.2, stable-4.x, temp_soft_comm_refactoring, theme_header, theme_javascript_refactory, thread_dropdown, thread_page, update_search_by_categories, update_software_api, update_softwares_boxes

Change software language select field to autocomplete

Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
Signed-off-by: Luciano Prestes <lucianopcbr@gmail.com>
controllers/mpog_software_plugin_controller.rb
@@ -141,6 +141,22 @@ class MpogSoftwarePluginController &lt; ApplicationController @@ -141,6 +141,22 @@ class MpogSoftwarePluginController &lt; ApplicationController
141 render :json=> data 141 render :json=> data
142 end 142 end
143 143
  144 + def get_languages
  145 + return render :json=>{} unless request.xhr? and params[:query]
  146 +
  147 + data = ProgrammingLanguage.where("name ILIKE ?", "%#{params[:query]}%").select("id, name").collect {|db|
  148 + {:id=>db.id, :label=>db.name}
  149 + }
  150 + other = [ProgrammingLanguage.select("id, name").last].collect { |db|
  151 + {:id=>db.id, :label=>db.name}
  152 + }
  153 +
  154 + # Always has other in the list
  155 + data |= other
  156 +
  157 + render :json=> data
  158 + end
  159 +
144 protected 160 protected
145 161
146 def private_create_institution 162 def private_create_institution
lib/database_helper.rb
1 module DatabaseHelper 1 module DatabaseHelper
2 2
3 - def self.isValidDatabase? database 3 + def self.valid_database? database
4 return false if SoftwareHelper.all_table_is_empty?(database) 4 return false if SoftwareHelper.all_table_is_empty?(database)
5 5
6 database_description_id_list = DatabaseDescription.select(:id).collect {|dd| dd.id } 6 database_description_id_list = DatabaseDescription.select(:id).collect {|dd| dd.id }
@@ -15,7 +15,7 @@ module DatabaseHelper @@ -15,7 +15,7 @@ module DatabaseHelper
15 list_databases = [] 15 list_databases = []
16 16
17 new_databases.each do |new_database| 17 new_databases.each do |new_database|
18 - if isValidDatabase? new_database 18 + if valid_database? new_database
19 database = SoftwareDatabase.new 19 database = SoftwareDatabase.new
20 database.database_description_id = new_database[:database_description_id] 20 database.database_description_id = new_database[:database_description_id]
21 database.version = new_database[:version] 21 database.version = new_database[:version]
lib/software_language_helper.rb
@@ -39,7 +39,7 @@ module SoftwareLanguageHelper @@ -39,7 +39,7 @@ module SoftwareLanguageHelper
39 lambdas_list = [] 39 lambdas_list = []
40 40
41 if not show_information 41 if not show_information
42 - return language_html_structure({:programming_language_id => 1, :version => "", :operating_system => ""}) if list_languages.nil? 42 + return language_html_structure({:programming_language_id => "", :version => "", :operating_system => ""}) if list_languages.nil?
43 43
44 list_languages.each do |language| 44 list_languages.each do |language|
45 lambdas_list << language_html_structure(language) 45 lambdas_list << language_html_structure(language)
@@ -52,17 +52,24 @@ module SoftwareLanguageHelper @@ -52,17 +52,24 @@ module SoftwareLanguageHelper
52 52
53 end 53 end
54 54
55 -  
56 lambdas_list 55 lambdas_list
57 end 56 end
58 57
59 def self.language_html_structure(language_data) 58 def self.language_html_structure(language_data)
  59 + language_name = if language_data[:programming_language_id].blank?
  60 + ""
  61 + else
  62 + ProgrammingLanguage.find(language_data[:programming_language_id], :select=>"name").name
  63 + end
  64 +
60 Proc::new do 65 Proc::new do
61 content_tag('table', 66 content_tag('table',
62 content_tag('tr', 67 content_tag('tr',
63 content_tag('td', label_tag(_("Language Name: ")))+ 68 content_tag('td', label_tag(_("Language Name: ")))+
64 - content_tag('td', select_tag("language[][programming_language_id]", SoftwareHelper.select_options(ProgrammingLanguage.all, language_data[:programming_language_id]) ))+  
65 - content_tag('td') 69 + content_tag('td',
  70 + text_field_tag("language_autocomplete", language_name, :class=>"language_autocomplete") +
  71 + content_tag('div', _("Pick an item on the list"), :class=>"autocomplete_validation_message hide-field") ) +
  72 + content_tag('td', hidden_field_tag("language[][programming_language_id]", language_data[:programming_language_id], :class=>"programming_language_id", data:{label:language_name}))
66 )+ 73 )+
67 74
68 content_tag('tr', 75 content_tag('tr',
public/mpog-software-validations.js
@@ -30,9 +30,6 @@ @@ -30,9 +30,6 @@
30 data: {query: request.term}, 30 data: {query: request.term},
31 success: function(result){ 31 success: function(result){
32 response(result); 32 response(result);
33 - },  
34 - error: function(ajax, stat, errorThrown) {  
35 - console.log('Link not found : ' + errorThrown);  
36 } 33 }
37 }); 34 });
38 }, 35 },
@@ -50,6 +47,31 @@ @@ -50,6 +47,31 @@
50 } 47 }
51 48
52 49
  50 + function language_autocomplete() {
  51 + jQuery(".language_autocomplete").autocomplete({
  52 + source : function(request, response){
  53 + jQuery.ajax({
  54 + type: "GET",
  55 + url: "/plugin/mpog_software/get_languages",
  56 + data: {query: request.term},
  57 + success: function(result){
  58 + response(result);
  59 + }
  60 + });
  61 + },
  62 +
  63 + minLength: 0,
  64 +
  65 + select : function (event, selected) {
  66 + var description = get_hidden_description_field(this, ".programming_language_id");
  67 + description.val(selected.item.id);
  68 + description.attr("data-label", selected.item.label);
  69 + }
  70 + }).blur(function(){
  71 + verify_autocomplete(this, ".programming_language_id");
  72 + });
  73 + }
  74 +
53 function delete_dynamic_table() { 75 function delete_dynamic_table() {
54 var button = jQuery(".delete-dynamic-table"); 76 var button = jQuery(".delete-dynamic-table");
55 77
@@ -101,6 +123,7 @@ @@ -101,6 +123,7 @@
101 123
102 delete_dynamic_table(); 124 delete_dynamic_table();
103 database_autocomplete(); 125 database_autocomplete();
  126 + language_autocomplete();
104 127
105 jQuery(".new-dynamic-table").click(function(){ 128 jQuery(".new-dynamic-table").click(function(){
106 var link = jQuery(this); 129 var link = jQuery(this);
@@ -116,6 +139,7 @@ @@ -116,6 +139,7 @@
116 139
117 delete_dynamic_table(); 140 delete_dynamic_table();
118 database_autocomplete(); 141 database_autocomplete();
  142 + language_autocomplete();
119 return false; 143 return false;
120 }); 144 });
121 145