Commit f6d72f7e2c3285a10a72095f8ec0cd350e83341d
Committed by
Gabriela Navarro
1 parent
b2ff44d1
Exists in
master
and in
5 other branches
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>
Showing
5 changed files
with
82 additions
and
22 deletions
Show diff stats
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 | ... | ... |