]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3617 Improve performance of treemap filters
authorSimon Brandhof <simon.brandhof@gmail.com>
Sat, 14 Jul 2012 08:21:48 +0000 (10:21 +0200)
committerSimon Brandhof <simon.brandhof@gmail.com>
Sat, 14 Jul 2012 09:42:35 +0000 (11:42 +0200)
sonar-server/src/main/webapp/WEB-INF/app/controllers/filters_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/controllers/treemap_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/models/filter.rb
sonar-server/src/main/webapp/WEB-INF/app/models/filters.rb

index f13455e81bc34b154f85a789fc42e27a11cbc60b..d14edba33a5bdc3b206a567ce2dee9bd93e5f6f4 100644 (file)
@@ -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
index 46ec74f4e8c57e3a2439882cdaf80f671cd8d9f4..fe34259e080f343909ca293c34c261a72763d802 100644 (file)
@@ -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
index b5e378e84437436f1d9eaae152128723eebccd7c..ef7a30c03b9cd702a924d7feea6d5a8383e0384e 100644 (file)
@@ -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
 
index 55551c9c88426cecf4162af1d7ee9a22ad4e74e8..c687797f14d56469853c03ed2ecb5c0c71d82059 100644 (file)
@@ -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)