Commit 344efc3cb162438e0c9efa263caa9140d43f7350

Authored by Fabio Teixeira
1 parent 810d0938
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

Execute software catalog search javascript only when needed

lib/software_communities_plugin.rb
@@ -133,9 +133,9 @@ class SoftwareCommunitiesPlugin < Noosfero::Plugin @@ -133,9 +133,9 @@ class SoftwareCommunitiesPlugin < Noosfero::Plugin
133 views/user-edit-profile.js 133 views/user-edit-profile.js
134 views/create-institution.js 134 views/create-institution.js
135 views/complete-registration.js 135 views/complete-registration.js
  136 + views/search-software-catalog.js
136 initializer.js 137 initializer.js
137 app.js 138 app.js
138 - software-catalog.js  
139 mpog-software-block.js 139 mpog-software-block.js
140 mpog-download-block.js 140 mpog-download-block.js
141 ) 141 )
public/initializer.js
@@ -4,7 +4,8 @@ var dependencies = [ @@ -4,7 +4,8 @@ var dependencies = [
4 'NewSoftware', 4 'NewSoftware',
5 'UserEditProfile', 5 'UserEditProfile',
6 'CreateInstitution', 6 'CreateInstitution',
7 - 'CompleteRegistration' 7 + 'CompleteRegistration',
  8 + 'SearchSoftwareCatalog'
8 ]; 9 ];
9 10
10 11
public/software-catalog.js
@@ -1,219 +0,0 @@ @@ -1,219 +0,0 @@
1 -(function($){  
2 - "use strict";  
3 -  
4 - var AJAX_URL = {  
5 - software_infos:  
6 - url_with_subdirectory("/search/software_infos")  
7 - };  
8 -  
9 -  
10 - function show_head_message() {  
11 - if ($("#filter-categories-select-catalog").text()){  
12 - $("#filter-categories-select-catalog").hide();  
13 - $("#filter-option-catalog-software").show();  
14 - }else{  
15 - $("#filter-categories-select-catalog").show();  
16 - $("#filter-option-catalog-software").hide();  
17 - }  
18 - }  
19 -  
20 -  
21 - function slideDowsCategoriesOptionAndHideOptionCatalog() {  
22 - $("#filter-categories-option").slideDown();  
23 - $("#filter-option-catalog-software").hide();  
24 - }  
25 -  
26 -  
27 - function slideDownCategoriesOptionAndHideCategoriesSelect() {  
28 - $("#filter-categories-option").slideDown();  
29 - $("#filter-categories-select-catalog").hide();  
30 - }  
31 -  
32 -  
33 - function slideUpCategoriesAndShowHeadMessage() {  
34 - $("#filter-categories-option").slideUp();  
35 - show_head_message();  
36 - }  
37 -  
38 -  
39 - function clearCatalogCheckbox(){  
40 - $("#filter-categories-option").slideUp();  
41 - $("#filter-option-catalog-software").show();  
42 - $("#group-categories input:checked").each(function() {  
43 - $(this).prop('checked', false);  
44 - });  
45 -  
46 - dispatch_search_ajax(update_search_page_on_ajax, true);  
47 - }  
48 -  
49 -  
50 - function selectCheckboxCategory() {  
51 - $("#filter-categories-option").slideUp();  
52 - $("#filter-categories-select-catalog").show();  
53 - $("#filter-option-catalog-software").hide();  
54 -  
55 - dispatch_search_ajax(update_search_page_on_ajax, true);  
56 - }  
57 -  
58 -  
59 - function dispatch_search_ajax(callback, enable_load) {  
60 - var search_params = get_search_params();  
61 -  
62 - if(enable_load) {  
63 - open_loading("Loading");  
64 - }  
65 -  
66 - $.ajax({  
67 - url: AJAX_URL.software_infos,  
68 - type: "GET",  
69 - data: search_params,  
70 - success: callback,  
71 - error: function(){  
72 - close_loading();  
73 - }  
74 - });  
75 - }  
76 -  
77 -  
78 - function get_search_params() {  
79 - var params = {};  
80 -  
81 - params.query = $("#search-input").val();  
82 - params.selected_categories = [];  
83 -  
84 - $(".categories-catalog:checked").each(function(index, element) {  
85 - params.selected_categories.push(element.value);  
86 - });  
87 -  
88 - params.software_display = $("#software_display").val();  
89 - params.sort = $("#sort").val();  
90 -  
91 - params.include_non_public = $("#include_non_public").is(":checked");  
92 -  
93 - return params;  
94 - }  
95 -  
96 - function get_result_div_core(message){  
97 - var div_result = $(".search-results-type-empty");  
98 - var html = '<div class="search-results-innerbox search-results-type-empty"> <div>'+message+' </div></div>'  
99 -  
100 - div_result.replaceWith('<div class="search-results-innerbox search-results-type-empty"> <div>Nenhum software encontrado</div> '+message+'</div>')  
101 - }  
102 -  
103 - function catalog_message(){  
104 - var result_list = $("#search-results").find('.search-results-empty').html();  
105 - var selected_categories_field = $("#filter-categories-select-catalog");  
106 -  
107 - if(result_list.length > 1 && selected_categories_field.html().length < 1){  
108 - get_result_div_core("Tente filtros mais abrangentes");  
109 - }else if (result_list.length > 1 && selected_categories_field.html().length >= 1) {  
110 - get_result_div_core("Tente filtros mais abrangentes ou confira os <mudar>softwares das categorias individualmente</mudar>");  
111 - }  
112 - }  
113 -  
114 - function update_search_page_on_ajax(response) {  
115 - response = $(response);  
116 - var search_list = $("#search-results");  
117 - var selected_categories_field = $("#filter-categories-select-catalog");  
118 - var pagination = $("#software-pagination");  
119 - var software_count = $("#software-count");  
120 -  
121 - var result_list = response.find("#search-results").html();  
122 - var result_categories = response.find("#filter-categories-select-catalog").html();  
123 - var result_pagination = response.find("#software-pagination").html();  
124 - var result_software_count = response.find("#software-count").html();  
125 -  
126 - catalog_message()  
127 -  
128 - search_list.html(result_list);  
129 - selected_categories_field.html(result_categories);  
130 - pagination.html(result_pagination);  
131 - software_count.html(result_software_count);  
132 - show_head_message();  
133 - highlight_searched_terms();  
134 -  
135 - hide_load_after_ajax();  
136 - }  
137 -  
138 -  
139 - function hide_load_after_ajax() {  
140 - if ($("#overlay_loading_modal").is(":visible")) {  
141 - close_loading();  
142 - setTimeout(hide_load_after_ajax, 1000);  
143 - }  
144 - }  
145 -  
146 -  
147 - function highlight_searched_terms() {  
148 - var searched_terms = $("#search-input").val();  
149 -  
150 - if( searched_terms.length === 0 ) {  
151 - return undefined;  
152 - }  
153 -  
154 - var content_result = $(".search-content-result");  
155 - var regex = new RegExp("("+searched_terms.replace(/\s/g, "|")+")", "gi");  
156 -  
157 - content_result.each(function(i, e){  
158 - var element = $(e);  
159 -  
160 - var new_text = element.text().replace(regex, function(text) {  
161 - return "<strong>"+text+"</strong>";  
162 - });  
163 -  
164 - element.html(new_text);  
165 - });  
166 - }  
167 -  
168 -  
169 - function selectProjectSoftwareCheckbox() {  
170 - $("#filter-categories-option").slideUp();  
171 - $("#filter-categories-select-catalog").show();  
172 - $("#filter-option-catalog-software").hide();  
173 -  
174 - dispatch_search_ajax(update_search_page_on_ajax, true);  
175 - show_head_message();  
176 - }  
177 -  
178 - function update_page_by_ajax_on_select_change() {  
179 - dispatch_search_ajax(update_search_page_on_ajax, true);  
180 - }  
181 -  
182 - function update_page_by_text_filter() {  
183 - var text = this.value;  
184 - dispatch_search_ajax(update_search_page_on_ajax, false);  
185 - }  
186 -  
187 - function search_input_keyup() {  
188 - var timer = null;  
189 -  
190 - $("#search-input").keyup(function() {  
191 - timer = setTimeout(update_page_by_text_filter, 400);  
192 - }).keydown(function() {  
193 - clearTimeout(timer);  
194 - });  
195 - }  
196 -  
197 - function set_events() {  
198 - $("#filter-option-catalog-software").click(slideDowsCategoriesOptionAndHideOptionCatalog);  
199 - $("#filter-categories-select-catalog").click(slideDownCategoriesOptionAndHideCategoriesSelect);  
200 - $("#close-filter-catalog").click(slideUpCategoriesAndShowHeadMessage);  
201 - $("#cleanup-filter-catalg").click(clearCatalogCheckbox);  
202 - $(".categories-catalog").click(selectCheckboxCategory);  
203 - $(".project-software").click(selectProjectSoftwareCheckbox);  
204 - $("#software_display").change(update_page_by_ajax_on_select_change);  
205 - $("#sort").change(update_page_by_ajax_on_select_change);  
206 -  
207 - search_input_keyup();  
208 - }  
209 -  
210 - $(document).ready(function(){  
211 - set_events();  
212 - catalog_message();  
213 - show_head_message();  
214 -  
215 -  
216 -  
217 - $("#filter-categories-option").hide();  
218 - });  
219 -})(jQuery);  
public/views/search-software-catalog.js 0 → 100644
@@ -0,0 +1,231 @@ @@ -0,0 +1,231 @@
  1 +modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot'], function($, NoosferoRoot) {
  2 + 'use strict';
  3 +
  4 + var AJAX_URL = {
  5 + software_infos:
  6 + NoosferoRoot.urlWithSubDirectory("/search/software_infos")
  7 + };
  8 +
  9 +
  10 + function show_head_message() {
  11 + if ($("#filter-categories-select-catalog").text()){
  12 + $("#filter-categories-select-catalog").hide();
  13 + $("#filter-option-catalog-software").show();
  14 + }else{
  15 + $("#filter-categories-select-catalog").show();
  16 + $("#filter-option-catalog-software").hide();
  17 + }
  18 + }
  19 +
  20 +
  21 + function slideDowsCategoriesOptionAndHideOptionCatalog() {
  22 + $("#filter-categories-option").slideDown();
  23 + $("#filter-option-catalog-software").hide();
  24 + }
  25 +
  26 +
  27 + function slideDownCategoriesOptionAndHideCategoriesSelect() {
  28 + $("#filter-categories-option").slideDown();
  29 + $("#filter-categories-select-catalog").hide();
  30 + }
  31 +
  32 +
  33 + function slideUpCategoriesAndShowHeadMessage() {
  34 + $("#filter-categories-option").slideUp();
  35 + show_head_message();
  36 + }
  37 +
  38 +
  39 + function clearCatalogCheckbox(){
  40 + $("#filter-categories-option").slideUp();
  41 + $("#filter-option-catalog-software").show();
  42 + $("#group-categories input:checked").each(function() {
  43 + $(this).prop('checked', false);
  44 + });
  45 +
  46 + dispatch_search_ajax(update_search_page_on_ajax, true);
  47 + }
  48 +
  49 +
  50 + function selectCheckboxCategory() {
  51 + $("#filter-categories-option").slideUp();
  52 + $("#filter-categories-select-catalog").show();
  53 + $("#filter-option-catalog-software").hide();
  54 +
  55 + dispatch_search_ajax(update_search_page_on_ajax, true);
  56 + }
  57 +
  58 +
  59 + function dispatch_search_ajax(callback, enable_load) {
  60 + var search_params = get_search_params();
  61 +
  62 + if(enable_load) {
  63 + open_loading("Loading");
  64 + }
  65 +
  66 + $.ajax({
  67 + url: AJAX_URL.software_infos,
  68 + type: "GET",
  69 + data: search_params,
  70 + success: callback,
  71 + error: function(){
  72 + close_loading();
  73 + }
  74 + });
  75 + }
  76 +
  77 +
  78 + function get_search_params() {
  79 + var params = {};
  80 +
  81 + params.query = $("#search-input").val();
  82 + params.selected_categories = [];
  83 +
  84 + $(".categories-catalog:checked").each(function(index, element) {
  85 + params.selected_categories.push(element.value);
  86 + });
  87 +
  88 + params.software_display = $("#software_display").val();
  89 + params.sort = $("#sort").val();
  90 +
  91 + params.include_non_public = $("#include_non_public").is(":checked");
  92 +
  93 + return params;
  94 + }
  95 +
  96 +
  97 + function get_result_div_core(message){
  98 + var div_result = $(".search-results-type-empty");
  99 + var html = '<div class="search-results-innerbox search-results-type-empty"> <div>'+message+' </div></div>'
  100 +
  101 + div_result.replaceWith('<div class="search-results-innerbox search-results-type-empty"> <div>Nenhum software encontrado</div> '+message+'</div>')
  102 + }
  103 +
  104 +
  105 + function catalog_message(){
  106 + var result_list = $("#search-results").find('.search-results-empty');
  107 + var selected_categories_field = $("#filter-categories-select-catalog");
  108 +
  109 + if(result_list.length > 1 && selected_categories_field.html().length < 1){
  110 + get_result_div_core("Tente filtros mais abrangentes");
  111 + }else if (result_list.length > 1 && selected_categories_field.html().length >= 1) {
  112 + get_result_div_core("Tente filtros mais abrangentes ou confira os softwares das categorias individualmente");
  113 + }
  114 + }
  115 +
  116 +
  117 + function update_search_page_on_ajax(response) {
  118 + response = $(response);
  119 + var search_list = $("#search-results");
  120 + var selected_categories_field = $("#filter-categories-select-catalog");
  121 + var pagination = $("#software-pagination");
  122 + var software_count = $("#software-count");
  123 +
  124 + var result_list = response.find("#search-results").html();
  125 + var result_categories = response.find("#filter-categories-select-catalog").html();
  126 + var result_pagination = response.find("#software-pagination").html();
  127 + var result_software_count = response.find("#software-count").html();
  128 +
  129 + catalog_message()
  130 +
  131 + search_list.html(result_list);
  132 + selected_categories_field.html(result_categories);
  133 + pagination.html(result_pagination);
  134 + software_count.html(result_software_count);
  135 + show_head_message();
  136 + highlight_searched_terms();
  137 +
  138 + hide_load_after_ajax();
  139 + }
  140 +
  141 +
  142 + function hide_load_after_ajax() {
  143 + if ($("#overlay_loading_modal").is(":visible")) {
  144 + close_loading();
  145 + setTimeout(hide_load_after_ajax, 1000);
  146 + }
  147 + }
  148 +
  149 +
  150 + function highlight_searched_terms() {
  151 + var searched_terms = $("#search-input").val();
  152 +
  153 + if( searched_terms.length === 0 ) {
  154 + return undefined;
  155 + }
  156 +
  157 + var content_result = $(".search-content-result");
  158 + var regex = new RegExp("("+searched_terms.replace(/\s/g, "|")+")", "gi");
  159 +
  160 + content_result.each(function(i, e){
  161 + var element = $(e);
  162 +
  163 + var new_text = element.text().replace(regex, function(text) {
  164 + return "<strong>"+text+"</strong>";
  165 + });
  166 +
  167 + element.html(new_text);
  168 + });
  169 + }
  170 +
  171 +
  172 + function selectProjectSoftwareCheckbox() {
  173 + $("#filter-categories-option").slideUp();
  174 + $("#filter-categories-select-catalog").show();
  175 + $("#filter-option-catalog-software").hide();
  176 +
  177 + dispatch_search_ajax(update_search_page_on_ajax, true);
  178 + show_head_message();
  179 + }
  180 +
  181 +
  182 + function update_page_by_ajax_on_select_change() {
  183 + dispatch_search_ajax(update_search_page_on_ajax, true);
  184 + }
  185 +
  186 + function update_page_by_text_filter() {
  187 + var text = this.value;
  188 + dispatch_search_ajax(update_search_page_on_ajax, false);
  189 + }
  190 +
  191 +
  192 + function search_input_keyup() {
  193 + var timer = null;
  194 +
  195 + $("#search-input").keyup(function() {
  196 + timer = setTimeout(update_page_by_text_filter, 400);
  197 + }).keydown(function() {
  198 + clearTimeout(timer);
  199 + });
  200 + }
  201 +
  202 +
  203 + function set_events() {
  204 + $("#filter-option-catalog-software").click(slideDowsCategoriesOptionAndHideOptionCatalog);
  205 + $("#filter-categories-select-catalog").click(slideDownCategoriesOptionAndHideCategoriesSelect);
  206 + $("#close-filter-catalog").click(slideUpCategoriesAndShowHeadMessage);
  207 + $("#cleanup-filter-catalg").click(clearCatalogCheckbox);
  208 + $(".categories-catalog").click(selectCheckboxCategory);
  209 + $(".project-software").click(selectProjectSoftwareCheckbox);
  210 + $("#software_display").change(update_page_by_ajax_on_select_change);
  211 + $("#sort").change(update_page_by_ajax_on_select_change);
  212 +
  213 + search_input_keyup();
  214 + }
  215 +
  216 +
  217 + return {
  218 + isCurrentPage: function() {
  219 + return $('#software-search-container').length === 1;
  220 + },
  221 +
  222 +
  223 + init: function() {
  224 + set_events();
  225 + catalog_message();
  226 + show_head_message();
  227 +
  228 + $("#filter-categories-option").hide();
  229 + }
  230 + }
  231 +});
0 \ No newline at end of file 232 \ No newline at end of file