From c764e380ea6f43962ea643aab33bb1f94d6c43da Mon Sep 17 00:00:00 2001 From: Fabio Teixeira Date: Thu, 5 Mar 2015 23:11:46 -0300 Subject: [PATCH] Put catalog component behavior into a lib file --- lib/software_communities_plugin.rb | 1 + public/initializer.js | 2 +- public/lib/software-catalog-component.js | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/views/search-software-catalog.js | 77 ++++++----------------------------------------------------------------------- 4 files changed, 91 insertions(+), 72 deletions(-) create mode 100644 public/lib/software-catalog-component.js diff --git a/lib/software_communities_plugin.rb b/lib/software_communities_plugin.rb index c2d2c39..e0c7388 100644 --- a/lib/software_communities_plugin.rb +++ b/lib/software_communities_plugin.rb @@ -119,6 +119,7 @@ class SoftwareCommunitiesPlugin < Noosfero::Plugin lib/select-element.js lib/select-field-choices lib/auto-complete.js + lib/software-catalog-component.js views/control-panel.js views/edit-software.js views/new-software.js diff --git a/public/initializer.js b/public/initializer.js index 3365f85..138e2e6 100644 --- a/public/initializer.js +++ b/public/initializer.js @@ -10,7 +10,7 @@ 'CompleteRegistration', 'SearchSoftwareCatalog', 'SoftwareDownload', - "ProfileTabsSoftware" + 'ProfileTabsSoftware' ]; diff --git a/public/lib/software-catalog-component.js b/public/lib/software-catalog-component.js new file mode 100644 index 0000000..736aac7 --- /dev/null +++ b/public/lib/software-catalog-component.js @@ -0,0 +1,83 @@ +modulejs.define('SoftwareCatalogComponent', ['jquery'], function($) { + 'use strict'; + + var dispatch_ajax_function; + + + function show_head_message() { + if ($("#filter-categories-select-catalog").text().length === 0){ + $("#filter-categories-select-catalog").hide(); + $("#filter-option-catalog-software").show(); + }else{ + $("#filter-categories-select-catalog").show(); + $("#filter-option-catalog-software").hide(); + } + } + + + function slideDowsCategoriesOptionAndHideOptionCatalog() { + $("#filter-categories-option").slideDown(); + $("#filter-option-catalog-software").hide(); + } + + + function slideDownCategoriesOptionAndHideCategoriesSelect() { + $("#filter-categories-option").slideDown(); + $("#filter-categories-select-catalog").hide(); + } + + + function slideUpCategoriesAndShowHeadMessage() { + $("#filter-categories-option").slideUp(); + show_head_message(); + } + + + function clearCatalogCheckbox() { + $("#filter-categories-option").slideUp(); + $("#filter-option-catalog-software").show(); + $("#group-categories input:checked").each(function() { + $(this).prop('checked', false); + }); + + dispatch_ajax_function(true); + } + + + function selectCheckboxCategory(dispatch_ajax) { + $("#filter-categories-option").slideUp(); + $("#filter-categories-select-catalog").show(); + $("#filter-option-catalog-software").hide(); + + dispatch_ajax_function(true); + } + + + function selectProjectSoftwareCheckbox() { + $("#filter-categories-option").slideUp(); + $("#filter-categories-select-catalog").show(); + $("#filter-option-catalog-software").hide(); + + dispatch_ajax_function(true); + show_head_message(); + } + + + function set_events() { + $("#filter-option-catalog-software").click(slideDowsCategoriesOptionAndHideOptionCatalog); + $("#filter-categories-select-catalog").click(slideDownCategoriesOptionAndHideCategoriesSelect); + $("#close-filter-catalog").click(slideUpCategoriesAndShowHeadMessage); + $("#cleanup-filter-catalg").click(clearCatalogCheckbox); + $(".categories-catalog").click(selectCheckboxCategory); + $(".project-software").click(selectProjectSoftwareCheckbox); + } + + + return { + init: function(dispatch_ajax) { + dispatch_ajax_function = dispatch_ajax; + set_events(); + show_head_message(); + }, + } +}); diff --git a/public/views/search-software-catalog.js b/public/views/search-software-catalog.js index 085bb2a..3991915 100644 --- a/public/views/search-software-catalog.js +++ b/public/views/search-software-catalog.js @@ -1,4 +1,4 @@ -modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot'], function($, NoosferoRoot) { +modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot', 'SoftwareCatalogComponent'], function($, NoosferoRoot, SoftwareCatalogComponent) { 'use strict'; var AJAX_URL = { @@ -7,56 +7,7 @@ modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot'], function($, }; - function show_head_message() { - if ($("#filter-categories-select-catalog").text().length === 0){ - $("#filter-categories-select-catalog").hide(); - $("#filter-option-catalog-software").show(); - }else{ - $("#filter-categories-select-catalog").show(); - $("#filter-option-catalog-software").hide(); - } - } - - - function slideDowsCategoriesOptionAndHideOptionCatalog() { - $("#filter-categories-option").slideDown(); - $("#filter-option-catalog-software").hide(); - } - - - function slideDownCategoriesOptionAndHideCategoriesSelect() { - $("#filter-categories-option").slideDown(); - $("#filter-categories-select-catalog").hide(); - } - - - function slideUpCategoriesAndShowHeadMessage() { - $("#filter-categories-option").slideUp(); - show_head_message(); - } - - - function clearCatalogCheckbox(){ - $("#filter-categories-option").slideUp(); - $("#filter-option-catalog-software").show(); - $("#group-categories input:checked").each(function() { - $(this).prop('checked', false); - }); - - dispatch_search_ajax(update_search_page_on_ajax, true); - } - - - function selectCheckboxCategory() { - $("#filter-categories-option").slideUp(); - $("#filter-categories-select-catalog").show(); - $("#filter-option-catalog-software").hide(); - - dispatch_search_ajax(update_search_page_on_ajax, true); - } - - - function dispatch_search_ajax(callback, enable_load) { + function dispatch_search_ajax(enable_load) { var search_params = get_search_params(); if(enable_load) { @@ -67,7 +18,7 @@ modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot'], function($, url: AJAX_URL.software_infos, type: "GET", data: search_params, - success: callback, + success: update_search_page_on_ajax, error: function(){ close_loading(); } @@ -130,7 +81,6 @@ modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot'], function($, selected_categories_field.html(result_categories); pagination.html(result_pagination); software_count.html(result_software_count); - show_head_message(); highlight_searched_terms(); catalog_message(); @@ -141,7 +91,7 @@ modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot'], function($, function hide_load_after_ajax() { if ($("#overlay_loading_modal").is(":visible")) { close_loading(); - setTimeout(hide_load_after_ajax, 2000); + setTimeout(hide_load_after_ajax, 1500); } } @@ -168,16 +118,6 @@ modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot'], function($, } - function selectProjectSoftwareCheckbox() { - $("#filter-categories-option").slideUp(); - $("#filter-categories-select-catalog").show(); - $("#filter-option-catalog-software").hide(); - - dispatch_search_ajax(update_search_page_on_ajax, true); - show_head_message(); - } - - function update_page_by_ajax_on_select_change() { dispatch_search_ajax(update_search_page_on_ajax, true); } @@ -200,12 +140,6 @@ modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot'], function($, function set_events() { - $("#filter-option-catalog-software").click(slideDowsCategoriesOptionAndHideOptionCatalog); - $("#filter-categories-select-catalog").click(slideDownCategoriesOptionAndHideCategoriesSelect); - $("#close-filter-catalog").click(slideUpCategoriesAndShowHeadMessage); - $("#cleanup-filter-catalg").click(clearCatalogCheckbox); - $(".categories-catalog").click(selectCheckboxCategory); - $(".project-software").click(selectProjectSoftwareCheckbox); $("#software_display").change(update_page_by_ajax_on_select_change); $("#sort").change(update_page_by_ajax_on_select_change); @@ -222,9 +156,10 @@ modulejs.define('SearchSoftwareCatalog', ['jquery', 'NoosferoRoot'], function($, init: function() { set_events(); catalog_message(); - show_head_message(); $("#filter-categories-option").hide(); + + SoftwareCatalogComponent.init(dispatch_search_ajax); } } }); \ No newline at end of file -- libgit2 0.21.2