]> arthur.barton.de Git - netdata.git/commitdiff
force zero to always be included in gauge and easypiechart
authorCosta Tsaousis (ktsaou) <costa@tsaousis.gr>
Mon, 19 Dec 2016 23:48:20 +0000 (01:48 +0200)
committerCosta Tsaousis (ktsaou) <costa@tsaousis.gr>
Mon, 19 Dec 2016 23:48:20 +0000 (01:48 +0200)
web/dashboard.js

index 0db567107ae01e9b2c239948fa6f68c5fa2c360d..d7b41cc5aef03225bee0af47d77000715aae99a7 100644 (file)
 
     // ----------------------------------------------------------------------------------------------------------------
 
-    NETDATA.percentFromValueMinMax = function(value, min, max) {
+    NETDATA.easypiechartPercentFromValueMinMax = function(value, min, max) {
         if(typeof value !== 'number') value = 0;
         if(typeof min !== 'number') min = 0;
         if(typeof max !== 'number') max = 0;
 
+        if(min > value) min = value;
+        if(max < value) max = value;
+
+        // make sure it is zero based
+        if(min > 0) min = 0;
+        if(max < 0) max = 0;
+
         var pcent = 0;
         if(value >= 0) {
-            if(max < value) max = value;
-            if(max !== 0) {
+            if(max !== 0)
                 pcent = Math.round(value * 100 / max);
-                if(pcent === 0 && value > 0) pcent = 1;
-            }
+            if(pcent === 0) pcent = 0.1;
         }
         else {
-            if(min > value) min = value;
-            if(min !== 0) {
+            if(min !== 0)
                 pcent = Math.round(-value * 100 / min);
-                if(pcent === 0 && value < 0) pcent = -1;
-            }
+            if(pcent === 0) pcent = -0.1;
         }
 
         return pcent;
         var value = state.data.result[state.data.result.length - 1 - slot];
         var min = (state.easyPieChartMin === null)?NETDATA.commonMin.get(state):state.easyPieChartMin;
         var max = (state.easyPieChartMax === null)?NETDATA.commonMax.get(state):state.easyPieChartMax;
-        var pcent = NETDATA.percentFromValueMinMax(value, min, max);
+        var pcent = NETDATA.easypiechartPercentFromValueMinMax(value, min, max);
 
         state.easyPieChartEvent.value = value;
         state.easyPieChartEvent.pcent = pcent;
             value = data.result[0];
             min = (state.easyPieChartMin === null)?NETDATA.commonMin.get(state):state.easyPieChartMin;
             max = (state.easyPieChartMax === null)?NETDATA.commonMax.get(state):state.easyPieChartMax;
-            pcent = NETDATA.percentFromValueMinMax(value, min, max);
+            pcent = NETDATA.easypiechartPercentFromValueMinMax(value, min, max);
         }
 
         state.easyPieChartLabel.innerHTML = state.legendFormatValue(value);
         else
             state.easyPieChartMax = max;
 
-        var pcent = NETDATA.percentFromValueMinMax(value, min, max);
+        var pcent = NETDATA.easypiechartPercentFromValueMinMax(value, min, max);
 
         chart.data('data-percent', pcent);
 
         var min = (state.gaugeMin === null)?NETDATA.commonMin.get(state):state.gaugeMin;
         var max = (state.gaugeMax === null)?NETDATA.commonMax.get(state):state.gaugeMax;
 
+        // make sure it is zero based
+        if(min > 0) min = 0;
+        if(max < 0) max = 0;
+
+        // make sure zero is in the middle
+        if(min < 0 && max > 0) {
+            min = -min;
+            if(min > max) max = min;
+            min = -max;
+        }
+
         state.gaugeEvent.value = value;
         state.gaugeEvent.min = min;
         state.gaugeEvent.max = max;
             max = (state.gaugeMax === null)?NETDATA.commonMax.get(state):state.gaugeMax;
             if(value < min) min = value;
             if(value > max) max = value;
+
+            // make sure it is zero based
+            if(min > 0) min = 0;
+            if(max < 0) max = 0;
+
+            // make sure zero is in the middle
+            if(min < 0 && max > 0) {
+                min = -min;
+                if(min > max) max = min;
+                min = -max;
+            }
+
             NETDATA.gaugeSetLabels(state, value, min, max);
         }
 
         else
             state.gaugeMax = max;
 
+        // make sure it is zero based
+        if(min > 0) min = 0;
+        if(max < 0) max = 0;
+
+        // make sure zero is in the middle
+        if(min < 0 && max > 0) {
+            min = -min;
+            if(min > max) max = min;
+            min = -max;
+        }
+
         var width = state.chartWidth(), height = state.chartHeight(); //, ratio = 1.5;
         //switch(adjust) {
         //  case 'width': width = height * ratio; break;