X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=web%2Fdashboard.js;h=b34accdecb0948a45a1769631e1f2d5a02681b8a;hb=8679670bdbe3c5928ec2e266d9c72e1a758fdf37;hp=6dcbce7f8085a3845328b453a6349191d7250dcf;hpb=b88d7cee8220ec068e7024f6ed868ef9e3a92ccf;p=netdata.git diff --git a/web/dashboard.js b/web/dashboard.js index 6dcbce7f..b34accde 100644 --- a/web/dashboard.js +++ b/web/dashboard.js @@ -130,7 +130,7 @@ var NETDATA = window.NETDATA || {}; NETDATA.peity_js = NETDATA.serverDefault + 'lib/jquery.peity-3.2.0.min.js'; NETDATA.sparkline_js = NETDATA.serverDefault + 'lib/jquery.sparkline-2.1.2.min.js'; NETDATA.easypiechart_js = NETDATA.serverDefault + 'lib/jquery.easypiechart-97b5824.min.js'; - NETDATA.gauge_js = NETDATA.serverDefault + 'lib/gauge-1.3.1.min.js'; + NETDATA.gauge_js = NETDATA.serverDefault + 'lib/gauge-1.3.2.min.js'; NETDATA.dygraph_js = NETDATA.serverDefault + 'lib/dygraph-combined-dd74404.js'; NETDATA.dygraph_smooth_js = NETDATA.serverDefault + 'lib/dygraph-smooth-plotter-dd74404.js'; NETDATA.raphael_js = NETDATA.serverDefault + 'lib/raphael-2.2.4-min.js'; @@ -1363,9 +1363,7 @@ var NETDATA = window.NETDATA || {}; this.value_decimal_detail = -1; var d = self.data('decimal-digits'); if(typeof d === 'number') { - this.value_decimal_detail = 1; - while(d-- > 0) - this.value_decimal_detail *= 10; + this.value_decimal_detail = d; } this.auto = { @@ -2247,20 +2245,36 @@ var NETDATA = window.NETDATA || {}; return ret; }; - this.legendFormatValueChartDecimals = -1; + var __legendFormatValueChartDecimalsLastMin = undefined; + var __legendFormatValueChartDecimalsLastMax = undefined; + var __legendFormatValueChartDecimals = -1; this.legendFormatValueDecimalsFromMinMax = function(min, max) { - var delta; + if(min === __legendFormatValueChartDecimalsLastMin && max === __legendFormatValueChartDecimalsLastMax) + return; - if(min === max) - delta = Math.abs(min); - else - delta = Math.abs(max - min); + __legendFormatValueChartDecimalsLastMin = min; + __legendFormatValueChartDecimalsLastMax = max; + + if(this.data !== null && this.data.min === this.data.max) + __legendFormatValueChartDecimals = -1; + + else if(this.value_decimal_detail !== -1) + __legendFormatValueChartDecimals = this.value_decimal_detail; + + else { + var delta; + + if (min === max) + delta = Math.abs(min); + else + delta = Math.abs(max - min); - if(delta > 1000) this.legendFormatValueChartDecimals = 0; - else if(delta > 10 ) this.legendFormatValueChartDecimals = 1; - else if(delta > 1 ) this.legendFormatValueChartDecimals = 2; - else if(delta > 0.1 ) this.legendFormatValueChartDecimals = 3; - else this.legendFormatValueChartDecimals = 4; + if (delta > 1000) __legendFormatValueChartDecimals = 0; + else if (delta > 10) __legendFormatValueChartDecimals = 1; + else if (delta > 1) __legendFormatValueChartDecimals = 2; + else if (delta > 0.1) __legendFormatValueChartDecimals = 2; + else __legendFormatValueChartDecimals = 4; + } }; this.legendFormatValue = function(value) { @@ -2268,21 +2282,21 @@ var NETDATA = window.NETDATA || {}; var dmin, dmax; - if(this.value_decimal_detail !== -1) { - dmin = dmax = this.value_decimal_detail; - } - - if(this.legendFormatValueChartDecimals < 0) { + if(__legendFormatValueChartDecimals < 0) { dmin = 0; var abs = value; if(abs > 1000) dmax = 0; else if(abs > 10 ) dmax = 1; else if(abs > 1) dmax = 2; - else if(abs > 0.1) dmax = 3; + else if(abs > 0.1) dmax = 2; else dmax = 4; } else { - dmin = dmax = this.legendFormatValueChartDecimals; + dmin = dmax = __legendFormatValueChartDecimals; + } + + if(this.value_decimal_detail !== -1) { + dmin = dmax = this.value_decimal_detail; } return value.toLocaleString(undefined, { @@ -3125,7 +3139,8 @@ var NETDATA = window.NETDATA || {}; if(this.debug === true) this.log('max updates of ' + this.updates_since_last_creation.toString() + ' reached. Forcing re-generation.'); - this.chart_created = false; + init(); + return; } // check and update the legend @@ -4246,12 +4261,6 @@ var NETDATA = window.NETDATA || {}; dygraph.updateOptions(options); } - // decide the decimal points on the legend of the chart - state.legendFormatValueDecimalsFromMinMax( - state.dygraph_instance.axes_[0].extremeRange[0], - state.dygraph_instance.axes_[0].extremeRange[1] - ); - state.dygraph_last_rendered = Date.now(); return true; }; @@ -4425,7 +4434,7 @@ var NETDATA = window.NETDATA || {}; || 2, valueFormatter: self.data('dygraph-valueformatter') - || function(x){ return x.toFixed(2); }, + || undefined, highlightCircleSize: self.data('dygraph-highlightcirclesize') || highlightCircleSize, @@ -4440,6 +4449,7 @@ var NETDATA = window.NETDATA || {}; || undefined, visibility: state.dimensions_visibility.selected2BooleanArray(state.data.dimension_names), + axes: { x: { pixelsPerLabel: 50, @@ -4447,25 +4457,19 @@ var NETDATA = window.NETDATA || {}; axisLabelFormatter: function (d, gran) { void(gran); return NETDATA.zeropad(d.getHours()) + ":" + NETDATA.zeropad(d.getMinutes()) + ":" + NETDATA.zeropad(d.getSeconds()); - }, - valueFormatter: function (ms) { - void(ms); - //var d = new Date(ms); - //return d.toLocaleDateString() + ' ' + d.toLocaleTimeString(); - - // no need to return anything here - return ' '; - } }, y: { pixelsPerLabel: 15, - valueFormatter: function (x) { - // we format legends with the state object - // no need to do anything here - // return (Math.round(x*100) / 100).toLocaleString(); - // return state.legendFormatValue(x); - return x; + axisLabelFormatter: function (y) { + + // unfortunately, we have to call this every single time + state.legendFormatValueDecimalsFromMinMax( + this.axes_[0].extremeRange[0], + this.axes_[0].extremeRange[1] + ); + + return state.legendFormatValue(y); } } }, @@ -4859,12 +4863,6 @@ var NETDATA = window.NETDATA || {}; state.__commonMax = null; } - // decide the decimal points on the legend of the chart - state.legendFormatValueDecimalsFromMinMax( - state.dygraph_instance.axes_[0].extremeRange[0], - state.dygraph_instance.axes_[0].extremeRange[1] - ); - return true; }; @@ -5791,7 +5789,7 @@ var NETDATA = window.NETDATA || {}; var len = generateGradient.length; while(len--) { var pcent = generateGradient[len]; - var color = self.data('gauge-gradient-percent-color-' + pcent.toString()) || false; + var color = self.attr('data-gauge-gradient-percent-color-' + pcent.toString()) || false; if(color !== false) { var a = []; a[0] = pcent / 100;