force zero to always be included in gauge and easypiechart
Costa Tsaousis (ktsaou) committed
Dec 20, 2016 at 01:48 UTC
c82a0d0b61286810f6ff9fbfcd144e49be981827
1 file changed
+49
-12
web/dashboard.js
+49
-12
@@ -5016,25 +5016,28 @@
5016
5017
// ----------------------------------------------------------------------------------------------------------------
5018
5019
- NETDATA.percentFromValueMinMax = function(value, min, max) {
5019
+ NETDATA.easypiechartPercentFromValueMinMax = function(value, min, max) {
5020
if(typeof value !== 'number') value = 0;
5021
if(typeof min !== 'number') min = 0;
5022
if(typeof max !== 'number') max = 0;
5023
5024
+ if(min > value) min = value;
5025
+ if(max < value) max = value;
5026
+
5027
+ // make sure it is zero based
5028
+ if(min > 0) min = 0;
5029
+ if(max < 0) max = 0;
5030
+
5031
var pcent = 0;
5032
if(value >= 0) {
5026
- if(max < value) max = value;
5027
- if(max !== 0) {
5033
+ if(max !== 0)
5034
pcent = Math.round(value * 100 / max);
5029
- if(pcent === 0 && value > 0) pcent = 1;
5030
- }
5035
+ if(pcent === 0) pcent = 0.1;
5036
}
5037
else {
5033
- if(min > value) min = value;
5034
- if(min !== 0) {
5038
+ if(min !== 0)
5039
pcent = Math.round(-value * 100 / min);
5036
- if(pcent === 0 && value < 0) pcent = -1;
5037
- }
5040
+ if(pcent === 0) pcent = -0.1;
5041
}
5042
5043
return pcent;
@@ -5109,7 +5112,7 @@
5112
var value = state.data.result[state.data.result.length - 1 - slot];
5113
var min = (state.easyPieChartMin === null)?NETDATA.commonMin.get(state):state.easyPieChartMin;
5114
var max = (state.easyPieChartMax === null)?NETDATA.commonMax.get(state):state.easyPieChartMax;
5112
- var pcent = NETDATA.percentFromValueMinMax(value, min, max);
5115
+ var pcent = NETDATA.easypiechartPercentFromValueMinMax(value, min, max);
5116
5117
state.easyPieChartEvent.value = value;
5118
state.easyPieChartEvent.pcent = pcent;
@@ -5138,7 +5141,7 @@
5141
value = data.result[0];
5142
min = (state.easyPieChartMin === null)?NETDATA.commonMin.get(state):state.easyPieChartMin;
5143
max = (state.easyPieChartMax === null)?NETDATA.commonMax.get(state):state.easyPieChartMax;
5141
- pcent = NETDATA.percentFromValueMinMax(value, min, max);
5144
+ pcent = NETDATA.easypiechartPercentFromValueMinMax(value, min, max);
5145
}
5146
5147
state.easyPieChartLabel.innerHTML = state.legendFormatValue(value);
@@ -5169,7 +5172,7 @@
5172
else
5173
state.easyPieChartMax = max;
5174
5172
- var pcent = NETDATA.percentFromValueMinMax(value, min, max);
5175
+ var pcent = NETDATA.easypiechartPercentFromValueMinMax(value, min, max);
5176
5177
chart.data('data-percent', pcent);
5178
@@ -5388,6 +5391,17 @@
5391
var min = (state.gaugeMin === null)?NETDATA.commonMin.get(state):state.gaugeMin;
5392
var max = (state.gaugeMax === null)?NETDATA.commonMax.get(state):state.gaugeMax;
5393
5394
+ // make sure it is zero based
5395
+ if(min > 0) min = 0;
5396
+ if(max < 0) max = 0;
5397
+
5398
+ // make sure zero is in the middle
5399
+ if(min < 0 && max > 0) {
5400
+ min = -min;
5401
+ if(min > max) max = min;
5402
+ min = -max;
5403
+ }
5404
+
5405
state.gaugeEvent.value = value;
5406
state.gaugeEvent.min = min;
5407
state.gaugeEvent.max = max;
@@ -5420,6 +5434,18 @@
5434
max = (state.gaugeMax === null)?NETDATA.commonMax.get(state):state.gaugeMax;
5435
if(value < min) min = value;
5436
if(value > max) max = value;
5437
+
5438
+ // make sure it is zero based
5439
+ if(min > 0) min = 0;
5440
+ if(max < 0) max = 0;
5441
+
5442
+ // make sure zero is in the middle
5443
+ if(min < 0 && max > 0) {
5444
+ min = -min;
5445
+ if(min > max) max = min;
5446
+ min = -max;
5447
+ }
5448
+
5449
NETDATA.gaugeSetLabels(state, value, min, max);
5450
}
5451
@@ -5455,6 +5481,17 @@
5481
else
5482
state.gaugeMax = max;
5483
5484
+ // make sure it is zero based
5485
+ if(min > 0) min = 0;
5486
+ if(max < 0) max = 0;
5487
+
5488
+ // make sure zero is in the middle
5489
+ if(min < 0 && max > 0) {
5490
+ min = -min;
5491
+ if(min > max) max = min;
5492
+ min = -max;
5493
+ }
5494
+
5495
var width = state.chartWidth(), height = state.chartHeight(); //, ratio = 1.5;
5496
//switch(adjust) {
5497
// case 'width': width = height * ratio; break;