Commit f6d72f7e2c3285a10a72095f8ec0cd350e83341d

Authored by Fabio Teixeira
Committed by Gabriela Navarro
1 parent b2ff44d1

Add sort and display in software's filter ajax

Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
Signed-off-by: Luciano Prestes <lucianopcbr@gmail.com>
lib/ext/search_controller.rb
... ... @@ -24,7 +24,7 @@ class SearchController
24 24 def software_infos
25 25 prepare_software_search_page
26 26 results = filter_software_infos_list
27   - results = results.paginate(:per_page => 24, :page => params[:page])
  27 + results = results.paginate(:per_page => @per_page, :page => params[:page])
28 28 @searches[@asset] = {:results => results}
29 29 @search = results
30 30 render :layout=>false if request.xhr?
... ... @@ -70,6 +70,11 @@ class SearchController
70 70 filtered_community_list << software.community
71 71 end
72 72  
  73 + filtered_community_list.sort!{|a, b| a.name <=> b.name}
  74 + if params[:sort] && params[:sort] == "desc"
  75 + filtered_community_list.reverse!
  76 + end
  77 +
73 78 filtered_community_list
74 79 end
75 80  
... ... @@ -103,5 +108,14 @@ class SearchController
103 108 @categories_groupe_two << @categories[i]
104 109 end
105 110 end
  111 +
  112 + @per_page = 15
  113 + if params[:software_display]
  114 + if params[:software_display] == "all"
  115 + @per_page = SoftwareInfo.count
  116 + else
  117 + @per_page = params[:software_display].to_i
  118 + end
  119 + end
106 120 end
107 121 end
... ...
public/software-catalog.js
... ... @@ -57,22 +57,16 @@
57 57  
58 58  
59 59 function dispatch_search_ajax(callback) {
60   - var query_text = $("#search-input").val();
61   - var selected_categories_ids = [];
  60 + var search_params = get_search_params();
62 61  
63   - $(".categories-catalog:checked").each(function(index, element) {
64   - selected_categories_ids.push(element.value);
65   - });
  62 + console.log(search_params);
66 63  
67 64 open_loading("Loading");
68 65  
69 66 $.ajax({
70 67 url: AJAX_URL.software_infos,
71 68 type: "GET",
72   - data: {
73   - query: query_text,
74   - selected_categories: selected_categories_ids
75   - },
  69 + data: search_params,
76 70 success: callback,
77 71 error: function(){
78 72 close_loading();
... ... @@ -81,16 +75,33 @@
81 75 }
82 76  
83 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 + return params;
  92 + }
  93 +
  94 +
84 95 function update_search_page_on_ajax(response) {
85 96 close_loading();
86 97 response = $(response);
87 98 var search_list = $("#search-results");
88 99 var selected_categories_field = $("#filter-categories-select-catalog");
89   - var pagination = $(".pagination");
  100 + var pagination = $("#software-pagination");
90 101  
91 102 var result_list = response.find("#search-results").html();
92 103 var result_categories = response.find("#filter-categories-select-catalog").html();
93   - var result_pagination = response.find(".pagination").html();
  104 + var result_pagination = response.find("#software-pagination").html();
94 105  
95 106 search_list.html(result_list);
96 107 selected_categories_field.html(result_categories);
... ... @@ -103,8 +114,14 @@
103 114 $("#filter-categories-option").slideUp();
104 115 $("#filter-categories-select-catalog").show();
105 116 $("#filter-option-catalog-software").hide();
  117 +
  118 + dispatch_search_ajax(update_search_page_on_ajax);
  119 + show_head_message();
106 120 }
107 121  
  122 + function update_page_by_ajax_on_select_change() {
  123 + dispatch_search_ajax(update_search_page_on_ajax);
  124 + }
108 125  
109 126 function set_events() {
110 127 $("#filter-option-catalog-software").click(slideDowsCategoriesOptionAndHideOptionCatalog);
... ... @@ -113,6 +130,8 @@
113 130 $("#cleanup-filter-catalg").click(clearCatalogCheckbox);
114 131 $(".categories-catalog").click(selectCheckboxCategory);
115 132 $(".project-software").click(selectProjectSoftwareCheckbox);
  133 + $("#software_display").change(update_page_by_ajax_on_select_change);
  134 + $("#sort").change(update_page_by_ajax_on_select_change);
116 135 }
117 136  
118 137  
... ...
views/search/_catalog_filter.html.erb
... ... @@ -32,10 +32,9 @@
32 32  
33 33 <div class="project-software"> <%= _("Software Projects:") %>
34 34 <label><input type="checkbox" name="filter" value="Incluir nos resultados"> <%= _("Include in results") %> </label>
35   - <span class"doubts-catalog-software" title="Incluir projetos de software em desenvolvimento que ainda não são oficialmente Software Público Brasileiro.">(?)</span>
36   - <!--<p><acronym title="Incluir projetos de software em desenvolvimento que ainda não são oficialmente Software Público Brasileiro.">(?)
37   - </acronym></p>-->
38   - </div><br>
  35 + <span class"doubts-catalog-software" title="<%= _('Include software development projects that are not yet officially Brazilian Public Software.') %>">(?)</span>
  36 + </div>
  37 + <br />
39 38 <%= button_tag _("Clean up"), :id => "cleanup-filter-catalg", :type => "button" %>
40 39 <%= button_tag _("Close"), :id => "close-filter-catalog", :type => "button" %>
41 40 </div>
... ...
views/search/_mpog_search_form.html.erb
1 1 <div class='search-form'>
2   -
3 2 <%= form_tag( { :controller => 'search', :action => @asset ? @asset : 'index', :asset => nil, :category_path => ( @category ? @category.path : nil ) },
4 3 :method => 'get', :class => 'search_form' ) do %>
5 4  
... ... @@ -13,11 +12,37 @@
13 12 <%= text_field_tag 'query', @query, :id => 'search-input', :size => 50, :placeholder=>_("Type words about the software_info you're looking for") %>
14 13 </span>
15 14  
16   - <%= submit_button(:search, _('Search')) %>
  15 + <%= submit_button(:search, _('Filter')) %>
17 16 </div>
18   -
19 17 <%= render :partial => 'search_form_extra_fields' %>
20 18 <%= render :partial => 'catalog_filter' %>
  19 +
  20 + <!-- #display-options sera substituido pelo html passado pela equipe de design -->
  21 + <div id="display-options" class="">
  22 + <div>
  23 + <strong><%= SoftwareInfo.count %> Softwares</strong>
  24 + </div>
  25 +
  26 + <div>
  27 + <div>
  28 + Show:
  29 + <%= select_tag("software_display",
  30 + options_for_select(['15', '30', '90', 'All'], :selected=>params[:display])
  31 + ) %>
  32 + </div>
  33 +
  34 + <div>
  35 + Sort by:
  36 + <%= select_tag("sort",
  37 + options_for_select(
  38 + [
  39 + [_("Name A-Z"), 'asc'],
  40 + [_("Name Z-A"), 'desc']
  41 + ], :selected=>params[:sort])
  42 + ) %>
  43 + </div>
  44 + </div>
  45 + </div>
21 46 <% end %>
22 47  
23 48 <% if @empty_query %>
... ...
views/search/software_infos.html.erb
... ... @@ -6,9 +6,12 @@
6 6 <%= render :partial => 'results_header' %>
7 7  
8 8 <%= display_results(@searches, @asset) %>
9   - <% if params[:display] != 'map' %>
10   - <%= pagination_links @searches[@asset][:results] %>
11   - <% end %>
  9 +
  10 + <div id="software-pagination">
  11 + <% if params[:display] != 'map' %>
  12 + <%= pagination_links @searches[@asset][:results] %>
  13 + <% end %>
  14 + </div>
12 15  
13 16 <div style="clear: both"></div>
14 17  
... ...