]> source.dussan.org Git - sonarqube.git/commitdiff
Pie Chart: better handle when measures for selected metrics are not available
authorStas Vilchik <vilchiks@gmail.com>
Thu, 9 Jan 2014 11:29:58 +0000 (17:29 +0600)
committerStas Vilchik <vilchiks@gmail.com>
Thu, 9 Jan 2014 11:30:10 +0000 (17:30 +0600)
plugins/sonar-core-plugin/src/main/resources/org/sonar/l10n/core.properties
plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_bubble_chart.html.erb
plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_histogram.html.erb
plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measures/measure_filter_pie_chart.html.erb
sonar-server/src/main/webapp/javascripts/widgets/bubble-chart.js
sonar-server/src/main/webapp/javascripts/widgets/histogram.js
sonar-server/src/main/webapp/javascripts/widgets/pie-chart.js

index 572f3a64999e08e7f21e46c58f13772fd2eb0a28..a2ccb41980519590774b17f05e5b47227eafa12e 100644 (file)
@@ -1107,6 +1107,8 @@ widget.bubble_chart.property.sizeMetric.name=Size Metric
 widget.bubble_chart.property.xLogarithmic.name=X Logarithmic Scale
 widget.bubble_chart.property.yLogarithmic.name=Y Logarithmic Scale
 
+widget.measure_filter.no_main_metric=The widget can not be rendered because no measure is available for the main metric.
+
 widget.measure_filter_pie_chart.name=Measure Filter as Pie Chart
 widget.measure_filter_pie_chart.description=Displays the result of a pre-configured measure filter as a pie chart.
 widget.measure_filter_pie_chart.property.chartTitle.name=Chart Title
index 275b26e04e88d5e1830dd02b3dded2b8c67acceb..af427c247c67b053db40cb4e5506030c9f3ac7b1 100644 (file)
@@ -51,7 +51,8 @@
         baseUrl: baseUrl + '/dashboard/index/',
         xLog: <%= xLog -%>,
         yLog: <%= yLog -%>,
-        noData: '<%= message('no_data') -%>'
+        noData: '<%= message('no_data') -%>',
+        noMainMetric: '<%= message('widget.measure_filter.no_main_metric') -%>'
       })
       .render('#<%= containerId -%>');
 
index 5f768d5a0450bfc3694bb0170bcea02dd4baf28d..6df5c73e4ac8d7d944840929af790832c5bc7438 100644 (file)
@@ -45,7 +45,8 @@
         baseUrl: baseUrl + '/dashboard/index/',
         displayWorstBestValues: <%= displayWorstBestValues -%>,
         maxItemsReachedMessage: '<%= message("widget.measure_filter_histogram.max_items_reached", :params => [maxItems]) -%>',
-        noData: '<%= message('no_data') -%>'
+        noData: '<%= message('no_data') -%>',
+        noMainMetric: '<%= message('widget.measure_filter.no_main_metric') -%>'
       })
       .render('#<%= containerId -%>');
 
index 0ee7830a49587900898f151af5a0b931d0ee0837..d7d2591b1caf5bf3f80ebbf3d8bbc12dbe14a3ba 100644 (file)
@@ -47,7 +47,8 @@
       .height(<%= chartHeight %>)
       .options({
         baseUrl: baseUrl + '/dashboard/index/',
-        noData: '<%= message('no_data') -%>'
+        noData: '<%= message('no_data') -%>',
+        noMainMetric: '<%= message('widget.measure_filter.no_main_metric') -%>'
       })
       .render('#<%= containerId -%>');
 
index a913fb3c6e4c8ddcb2b448fee9b79a7bd203fe5d..aec84168d4102d720b15262f464db3e581a947f5 100644 (file)
@@ -70,6 +70,16 @@ window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
 
     container = d3.select(container);
 
+    var validData = this.components().reduce(function(p, c) {
+      return p && !!c.measures[widget.metricsPriority()[0]] && !!c.measures[widget.metricsPriority()[1]];
+    }, true);
+
+    if (!validData) {
+      container.text(this.options().noMainMetric);
+      return;
+    }
+
+
     this.width(container.property('offsetWidth'));
 
     this.svg = container.append('svg')
@@ -105,7 +115,7 @@ window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
 
     this.sizeMetric = this.metricsPriority()[2];
     this.getSizeMetric = function(d) {
-      return d.measures[widget.sizeMetric].val;
+      return !!d.measures[widget.sizeMetric] ? d.measures[widget.sizeMetric].val : 0;
     };
 
 
@@ -193,7 +203,7 @@ window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
           var metricLines = [
             { metric: widget.metrics()[widget.xMetric].name, value: d.measures[widget.xMetric].fval },
             { metric: widget.metrics()[widget.yMetric].name, value: d.measures[widget.yMetric].fval },
-            { metric: widget.metrics()[widget.sizeMetric].name, value: d.measures[widget.sizeMetric].fval }
+            { metric: widget.metrics()[widget.sizeMetric].name, value: (!!d.measures[widget.sizeMetric] ? d.measures[widget.sizeMetric].fval : '–') }
           ];
 
           var lastX = 0;
index ca8963ee478fa7322eeeeea4ca809df9fcc2c66b..fbb70064ccdce35824e072c4ee54e15a04be56a6 100644 (file)
@@ -64,6 +64,16 @@ window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
 
     container = d3.select(container);
 
+    var validData = this.components().reduce(function(p, c) {
+      return p && !!c.measures[widget.metricsPriority()[0]]
+    }, true);
+
+    if (!validData) {
+      container.text(this.options().noMainMetric);
+      return;
+    }
+
+
     this.width(container.property('offsetWidth'));
 
     this.svg = container.append('svg')
@@ -80,11 +90,7 @@ window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
     // Configure metrics
     this.mainMetric = this.metricsPriority()[0];
     this.getMainMetric = function(d) {
-      if (d.measures[widget.mainMetric]) {
-        return d.measures[widget.mainMetric].val;
-      } else {
-        return 0;
-      }
+      return d.measures[widget.mainMetric].val;
     };
 
 
index 993a6b05db419081d797800a4fca837bf92f5bdc..29f718d1857fa0aeb1265a4e78fb554919f56529 100644 (file)
@@ -69,6 +69,17 @@ window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
 
     container = d3.select(container);
 
+
+    var validData = this.components().reduce(function(p, c) {
+      return p && !!c.measures[widget.metricsPriority()[0]]
+    }, true);
+
+    if (!validData) {
+      container.text(this.options().noMainMetric);
+      return;
+    }
+
+
     this.width(container.property('offsetWidth'));
 
     this.svg = container.append('svg')
@@ -85,11 +96,7 @@ window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
     // Configure metrics
     this.mainMetric = this.metricsPriority()[0];
     this.getMainMetric = function(d) {
-      if (d.measures[widget.mainMetric]) {
-        return d.measures[widget.mainMetric].val;
-      } else {
-        return 0;
-      }
+      return d.measures[widget.mainMetric].val;
     };
 
 
@@ -248,7 +255,7 @@ window.SonarWidgets = window.SonarWidgets == null ? {} : window.SonarWidgets;
             var metrics = widget.metricsPriority().map(function(m) {
               return {
                 name: widget.metrics()[m].name,
-                value: d.measures[m].fval
+                value: (!!d.measures[m] ? d.measures[m].fval : '–')
               };
             });
             metrics.unshift({ name: d.name });