diff --git a/lib/ext/search_controller.rb b/lib/ext/search_controller.rb index 0e62b7b..2664869 100644 --- a/lib/ext/search_controller.rb +++ b/lib/ext/search_controller.rb @@ -24,7 +24,7 @@ class SearchController def software_infos prepare_software_search_page results = filter_software_infos_list - results = results.paginate(:per_page => 24, :page => params[:page]) + results = results.paginate(:per_page => @per_page, :page => params[:page]) @searches[@asset] = {:results => results} @search = results render :layout=>false if request.xhr? @@ -70,6 +70,11 @@ class SearchController filtered_community_list << software.community end + filtered_community_list.sort!{|a, b| a.name <=> b.name} + if params[:sort] && params[:sort] == "desc" + filtered_community_list.reverse! + end + filtered_community_list end @@ -103,5 +108,14 @@ class SearchController @categories_groupe_two << @categories[i] end end + + @per_page = 15 + if params[:software_display] + if params[:software_display] == "all" + @per_page = SoftwareInfo.count + else + @per_page = params[:software_display].to_i + end + end end end diff --git a/public/software-catalog.js b/public/software-catalog.js index e0df5ed..ef6bdbe 100644 --- a/public/software-catalog.js +++ b/public/software-catalog.js @@ -57,22 +57,16 @@ function dispatch_search_ajax(callback) { - var query_text = $("#search-input").val(); - var selected_categories_ids = []; + var search_params = get_search_params(); - $(".categories-catalog:checked").each(function(index, element) { - selected_categories_ids.push(element.value); - }); + console.log(search_params); open_loading("Loading"); $.ajax({ url: AJAX_URL.software_infos, type: "GET", - data: { - query: query_text, - selected_categories: selected_categories_ids - }, + data: search_params, success: callback, error: function(){ close_loading(); @@ -81,16 +75,33 @@ } + function get_search_params() { + var params = {}; + + params.query = $("#search-input").val(); + params.selected_categories = []; + + $(".categories-catalog:checked").each(function(index, element) { + params.selected_categories.push(element.value); + }); + + params.software_display = $("#software_display").val(); + params.sort = $("#sort").val(); + + return params; + } + + function update_search_page_on_ajax(response) { close_loading(); response = $(response); var search_list = $("#search-results"); var selected_categories_field = $("#filter-categories-select-catalog"); - var pagination = $(".pagination"); + var pagination = $("#software-pagination"); var result_list = response.find("#search-results").html(); var result_categories = response.find("#filter-categories-select-catalog").html(); - var result_pagination = response.find(".pagination").html(); + var result_pagination = response.find("#software-pagination").html(); search_list.html(result_list); selected_categories_field.html(result_categories); @@ -103,8 +114,14 @@ $("#filter-categories-option").slideUp(); $("#filter-categories-select-catalog").show(); $("#filter-option-catalog-software").hide(); + + dispatch_search_ajax(update_search_page_on_ajax); + show_head_message(); } + function update_page_by_ajax_on_select_change() { + dispatch_search_ajax(update_search_page_on_ajax); + } function set_events() { $("#filter-option-catalog-software").click(slideDowsCategoriesOptionAndHideOptionCatalog); @@ -113,6 +130,8 @@ $("#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); } diff --git a/views/search/_catalog_filter.html.erb b/views/search/_catalog_filter.html.erb index c1e78ad..0974c8c 100644 --- a/views/search/_catalog_filter.html.erb +++ b/views/search/_catalog_filter.html.erb @@ -32,10 +32,9 @@