From 6006c366a9bd1e33135d0dea6575984a196c720b Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Sat, 14 Jul 2012 10:21:48 +0200 Subject: [PATCH] SONAR-3617 Improve performance of treemap filters --- .../app/controllers/filters_controller.rb | 3 -- .../app/controllers/treemap_controller.rb | 1 - .../main/webapp/WEB-INF/app/models/filter.rb | 2 +- .../main/webapp/WEB-INF/app/models/filters.rb | 52 ++++++++++--------- 4 files changed, 28 insertions(+), 30 deletions(-) diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/filters_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/filters_controller.rb index f13455e81bc..d14edba33a5 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/filters_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/filters_controller.rb @@ -289,11 +289,8 @@ class FiltersController < ApplicationController @size_metric=Metric.by_key(params[:size_metric]) @color_metric=Metric.by_key(params[:color_metric]) - params[:metric_ids]=[@size_metric, @color_metric] - @filter.sorted_column=FilterColumn.new('family' => 'metric', :kee => @size_metric.key, :sort_direction => (@size_metric.direction>=0 ? 'ASC' : 'DESC')) - @filter_context=Filters.execute(@filter, self, params) @width=(params[:width]||'800').to_i diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/treemap_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/treemap_controller.rb index 46ec74f4e8c..fe34259e080 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/treemap_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/treemap_controller.rb @@ -51,7 +51,6 @@ class TreemapController < ApplicationController filter=::Filter.find(params[:filter]) bad_request('Unknown filter: ' + params[:filter]) unless filter access_denied unless filter.authorized_to_execute?(self) - filter.sorted_column=FilterColumn.new('family' => 'metric', :kee => size_metric.key, :sort_direction => (size_metric.direction>=0 ? 'ASC' : 'DESC')) params[:metric_ids]=[size_metric.id, color_metric.id] filter_context=Filters.execute(filter, self, params) else diff --git a/sonar-server/src/main/webapp/WEB-INF/app/models/filter.rb b/sonar-server/src/main/webapp/WEB-INF/app/models/filter.rb index b5e378e8443..ef7a30c03b9 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/models/filter.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/models/filter.rb @@ -79,7 +79,7 @@ class Filter < ActiveRecord::Base def sorted_column @sorted_column ||= begin - columns.to_a.find { |c| c.sort_direction } || column('name') + default_view==VIEW_TREEMAP ? nil : (columns.to_a.find { |c| c.sort_direction }||column('name') ) end end diff --git a/sonar-server/src/main/webapp/WEB-INF/app/models/filters.rb b/sonar-server/src/main/webapp/WEB-INF/app/models/filters.rb index 55551c9c884..c687797f14d 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/models/filters.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/models/filters.rb @@ -74,45 +74,47 @@ class Filters #----- SORTED COLUMN + if filter_context.sorted_column_id filter.sorted_column=filter_context.sorted_column_id end - if filter.sorted_column.on_name? - java_filter.setSortedByName() + if filter.sorted_column + if filter.sorted_column.on_name? + java_filter.setSortedByName() - elsif filter.sorted_column.on_date? - java_filter.setSortedByDate() + elsif filter.sorted_column.on_date? + java_filter.setSortedByDate() - elsif filter.sorted_column.on_version? - java_filter.setSortedByVersion() + elsif filter.sorted_column.on_version? + java_filter.setSortedByVersion() - elsif filter.sorted_column.on_language? - java_filter.setSortedByLanguage() - - elsif filter.sorted_column.on_key? - java_filter.setSortedByKey() + elsif filter.sorted_column.on_language? + java_filter.setSortedByLanguage() - elsif filter.sorted_column.on_metric? && filter.sorted_column.metric - metric=filter.sorted_column.metric - java_filter.setSortedMetricId(metric.id, metric.numeric?, filter.sorted_column.variation) + elsif filter.sorted_column.on_key? + java_filter.setSortedByKey() + elsif filter.sorted_column.on_metric? && filter.sorted_column.metric + metric=filter.sorted_column.metric + java_filter.setSortedMetricId(metric.id, metric.numeric?, filter.sorted_column.variation) + end end #----- SORTING DIRECTION - if filter_context.ascending_sort.nil? - java_filter.setAscendingSort(filter.sorted_column.ascending?) - else - filter.sorted_column.ascending=filter_context.ascending_sort - java_filter.setAscendingSort(filter.sorted_column.ascending?) - end - + if filter.sorted_column + if filter_context.ascending_sort.nil? + java_filter.setAscendingSort(filter.sorted_column.ascending?) + else + filter.sorted_column.ascending=filter_context.ascending_sort + java_filter.setAscendingSort(filter.sorted_column.ascending?) + end - if filter_context.ascending_sort - filter.sorted_column.ascending=filter_context.ascending_sort + if filter_context.ascending_sort + filter.sorted_column.ascending=filter_context.ascending_sort + end + java_filter.setAscendingSort(filter.sorted_column.ascending?) end - java_filter.setAscendingSort(filter.sorted_column.ascending?) - #----- VARIATION java_filter.setPeriodIndex(filter_context.period_index) -- 2.39.5