From ee88c883e0de0103537ca3080bb2ed19c9104851 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Sun, 25 Nov 2012 23:37:55 +0100 Subject: [PATCH] SONAR-3825 support cloud rendering --- .../WEB-INF/app/helpers/measures_helper.rb | 13 +++++++ .../WEB-INF/app/models/measure_filter.rb | 24 ++++++++++++- .../views/measures/_display_cloud.html.erb | 35 +++++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 sonar-server/src/main/webapp/WEB-INF/app/views/measures/_display_cloud.html.erb diff --git a/sonar-server/src/main/webapp/WEB-INF/app/helpers/measures_helper.rb b/sonar-server/src/main/webapp/WEB-INF/app/helpers/measures_helper.rb index 8986cbf5d93..7b3f3f6ab27 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/helpers/measures_helper.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/helpers/measures_helper.rb @@ -73,4 +73,17 @@ module MeasuresHelper "" end + + CLOUD_MIN_SIZE_PERCENT=60.0 + CLOUD_MAX_SIZE_PERCENT=240.0 + + def cloud_font_size(value, min_size_value, max_size_value) + divisor=max_size_value - min_size_value + size=CLOUD_MIN_SIZE_PERCENT + if divisor!=0.0 + multiplier=(CLOUD_MAX_SIZE_PERCENT - CLOUD_MIN_SIZE_PERCENT)/divisor + size=CLOUD_MIN_SIZE_PERCENT + ((max_size_value - (max_size_value-(value - min_size_value)))*multiplier) + end + size.to_i + end end diff --git a/sonar-server/src/main/webapp/WEB-INF/app/models/measure_filter.rb b/sonar-server/src/main/webapp/WEB-INF/app/models/measure_filter.rb index 087b92b61db..1312994d8e2 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/models/measure_filter.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/models/measure_filter.rb @@ -113,6 +113,8 @@ class MeasureFilter < ActiveRecord::Base end class TreemapDisplay < Display + attr_reader :columns + KEY = :treemap def initialize(filter) @@ -122,7 +124,27 @@ class MeasureFilter < ActiveRecord::Base end end - DISPLAYS = [ListDisplay, TreemapDisplay] + class CloudDisplay < Display + attr_reader :columns + + KEY = :cloud + + def initialize(filter) + filter.set_criteria_default_value('sort', 'name') + filter.set_criteria_default_value('asc', 'true') + @metric_ids = [size_metric.id, color_metric.id] + end + + def size_metric + @size_metric ||= Metric.by_key('function_complexity') + end + + def color_metric + @color_metric ||= Metric.by_key('violations_density') + end + end + + DISPLAYS = [ListDisplay, TreemapDisplay, CloudDisplay] SUPPORTED_CRITERIA_KEYS=Set.new([:qualifiers, :scopes, :onFavourites, :base, :onBaseComponents, :languages, :fromDate, :toDate, :beforeDays, :afterDays, :keyRegexp, :nameRegexp, diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/measures/_display_cloud.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/measures/_display_cloud.html.erb new file mode 100644 index 00000000000..517dae4aa0b --- /dev/null +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/measures/_display_cloud.html.erb @@ -0,0 +1,35 @@ +
+ <% + color_options={ + :check_alert_status => false, + :min_color => Color::RGB.from_html("EE0000"), # red + :mean_color => Color::RGB.from_html("4D05B1"), # purple + :max_color => Color::RGB.from_html("2360BF") # blue + } + size_measure_values = @filter.results.map do |result| + size_measure = result.measure(@filter.display.size_metric) + size_measure.value if size_measure + end.compact + + min_size_value=(size_measure_values.empty? ? 0.0 : size_measure_values.min) + max_size_value=(size_measure_values.empty? ? 0.0 : size_measure_values.max) + + @filter.results.each do |result| + size_measure=result.measure(@filter.display.size_metric) + if size_measure && size_measure.value + color_measure=result.measure(@filter.display.color_metric) + if result.snapshot.source_code? + link="of(#{result.snapshot.project_id})" + else + link="ov(#{result.snapshot.project_id})" + end + + title="#{result.snapshot.resource.long_name} | #{@filter.display.size_metric.short_name}: #{size_measure.formatted_value}" + if color_measure && color_measure.value + title += " | #{@filter.display.color_metric.short_name}: #{color_measure.formatted_value}" + end + %> + <%= result.snapshot.resource.name %> + <% end + end %> +
\ No newline at end of file -- 2.39.5