Commit c0beef75 by Torkel Ödegaard

Merge pull request #3252 from alechenninger/avg-ignore-null

Ignore nulls unless 'null as zero' for series.stats.avg
parents 5ec44886 2a600b25
...@@ -101,6 +101,7 @@ class TimeSeries { ...@@ -101,6 +101,7 @@ class TimeSeries {
var nullAsZero = fillStyle === 'null as zero'; var nullAsZero = fillStyle === 'null as zero';
var currentTime; var currentTime;
var currentValue; var currentValue;
var nonNulls = 0;
for (var i = 0; i < this.datapoints.length; i++) { for (var i = 0; i < this.datapoints.length; i++) {
currentValue = this.datapoints[i][0]; currentValue = this.datapoints[i][0];
...@@ -117,6 +118,7 @@ class TimeSeries { ...@@ -117,6 +118,7 @@ class TimeSeries {
if (_.isNumber(currentValue)) { if (_.isNumber(currentValue)) {
this.stats.total += currentValue; this.stats.total += currentValue;
this.allIsNull = false; this.allIsNull = false;
nonNulls++;
} }
if (currentValue > this.stats.max) { if (currentValue > this.stats.max) {
...@@ -139,7 +141,7 @@ class TimeSeries { ...@@ -139,7 +141,7 @@ class TimeSeries {
if (this.stats.min === Number.MAX_VALUE) { this.stats.min = null; } if (this.stats.min === Number.MAX_VALUE) { this.stats.min = null; }
if (result.length) { if (result.length) {
this.stats.avg = (this.stats.total / result.length); this.stats.avg = (this.stats.total / nonNulls);
this.stats.current = result[result.length-1][1]; this.stats.current = result[result.length-1][1];
if (this.stats.current === null && result.length > 1) { if (this.stats.current === null && result.length > 1) {
this.stats.current = result[result.length-2][1]; this.stats.current = result[result.length-2][1];
......
...@@ -43,6 +43,17 @@ define([ ...@@ -43,6 +43,17 @@ define([
expect(series.stats.max).to.be(-4); expect(series.stats.max).to.be(-4);
}); });
it('average value should ignore nulls', function() {
series = new TimeSeries(testData);
series.getFlotPairs('null', yAxisFormats);
expect(series.stats.avg).to.be(6.333333333333333);
});
it('with null as zero style, average value should treat nulls as 0', function() {
series = new TimeSeries(testData);
series.getFlotPairs('null as zero', yAxisFormats);
expect(series.stats.avg).to.be(4.75);
});
}); });
describe('series overrides', function() { describe('series overrides', function() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment