Add rate() function resistant to counter reset

This commit is contained in:
Alexander Zobnin
2017-06-26 11:26:13 +03:00
parent fa12b04650
commit d6b36772b6
12 changed files with 130 additions and 6 deletions

View File

@@ -154,6 +154,10 @@ System.register(['lodash', './utils'], function (_export, _context) {
});
}
/**
* Simple delta. Calculate value delta between points.
* @param {*} datapoints
*/
function delta(datapoints) {
var newSeries = [];
var deltaValue = void 0;
@@ -164,6 +168,33 @@ System.register(['lodash', './utils'], function (_export, _context) {
return newSeries;
}
/**
* Calculates rate per second. Resistant to counter reset.
* @param {*} datapoints
*/
function rate(datapoints) {
var newSeries = [];
var point = void 0,
point_prev = void 0;
var valueDelta = 0;
var timeDelta = 0;
for (var i = 1; i < datapoints.length; i++) {
point = datapoints[i];
point_prev = datapoints[i - 1];
// Convert ms to seconds
timeDelta = (point[POINT_TIMESTAMP] - point_prev[POINT_TIMESTAMP]) / 1000;
// Handle counter reset - use previous value
if (point[POINT_VALUE] >= point_prev[POINT_VALUE]) {
valueDelta = (point[POINT_VALUE] - point_prev[POINT_VALUE]) / timeDelta;
}
newSeries.push([valueDelta, point[POINT_TIMESTAMP]]);
}
return newSeries;
}
function SUM(values) {
var sum = 0;
_.each(values, function (value) {
@@ -292,6 +323,7 @@ System.register(['lodash', './utils'], function (_export, _context) {
sumSeries: sumSeries,
scale: scale,
delta: delta,
rate: rate,
SUM: SUM,
COUNT: COUNT,
AVERAGE: AVERAGE,