Commit 8c1ecd9612fe7d2fa2c64a9bbf2b647beaff5548
1 parent
d2c2650d
Exists in
master
and in
29 other branches
ActionItem514: make search_controller to use new count method
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@2215 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
1 changed file
with
13 additions
and
6 deletions
Show diff stats
app/controllers/public/search_controller.rb
@@ -91,20 +91,27 @@ class SearchController < ApplicationController | @@ -91,20 +91,27 @@ class SearchController < ApplicationController | ||
91 | # REFACTOR DUPLICATED CODE inner loop doing the same thing that outter loop | 91 | # REFACTOR DUPLICATED CODE inner loop doing the same thing that outter loop |
92 | 92 | ||
93 | cats = ProductCategory.menu_categories(@product_category, environment) | 93 | cats = ProductCategory.menu_categories(@product_category, environment) |
94 | - cats += cats.map(:children).flatten | 94 | + cats += cats.map(&:children).flatten |
95 | product_categories_ids = cats.map(&:id) | 95 | product_categories_ids = cats.map(&:id) |
96 | 96 | ||
97 | + object_ids = nil | ||
98 | + if !@query.blank? || @region && !params[:radius].blank? | ||
99 | + object_ids = @finder.find(asset, @filtered_query, calculate_find_options(asset, nil, params[:page], @product_category, @region, params[:radius], params[:year], params[:month]).merge({:limit => :all})) | ||
100 | + end | ||
101 | + | ||
102 | + counts = @finder.product_categories_count(asset, product_categories_ids, object_ids) | ||
103 | + | ||
97 | @categories_menu = ProductCategory.menu_categories(@product_category, environment).map do |cat| | 104 | @categories_menu = ProductCategory.menu_categories(@product_category, environment).map do |cat| |
98 | - hits = @finder.count(asset, @filtered_query, calculate_find_options(asset, nil, nil, cat, @region, params[:radius], nil, nil)) | 105 | + hits = counts[cat.id] |
99 | childs = [] | 106 | childs = [] |
100 | - if hits > 0 | 107 | + if hits |
101 | childs = cat.children.map do |child| | 108 | childs = cat.children.map do |child| |
102 | - child_hits = @finder.count(asset, @filtered_query, calculate_find_options(asset, nil, nil, child, @region, params[:radius], nil, nil)) | 109 | + child_hits = counts[child.id] |
103 | [child, child_hits] | 110 | [child, child_hits] |
104 | - end.select{|child, child_hits| child_hits > 0 } | 111 | + end.select{|child, child_hits| child_hits } |
105 | end | 112 | end |
106 | [cat, hits, childs] | 113 | [cat, hits, childs] |
107 | - end.select{|cat, hits| hits > 0 } | 114 | + end.select{|cat, hits| hits } |
108 | end | 115 | end |
109 | 116 | ||
110 | def calculate_find_options(asset, limit, page, product_category, region, radius, year, month) | 117 | def calculate_find_options(asset, limit, page, product_category, region, radius, year, month) |