dygraphs
Version:
dygraphs is a fast, flexible open source JavaScript charting library.
85 lines (82 loc) • 10.6 kB
JavaScript
;
/**
* @license
* Copyright 2013 David Eberlein (david.eberlein@ch.sauter-bc.com)
* MIT-licenced: https://opensource.org/license/MIT
*/
/**
* @fileoverview DataHandler implementation for the fractions option.
* @author David Eberlein (david.eberlein@ch.sauter-bc.com)
*/
/*global Dygraph:false */
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _datahandler = _interopRequireDefault(require("./datahandler"));
var _default2 = _interopRequireDefault(require("./default"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
/**
* @extends DefaultHandler
* @constructor
*/
var DefaultFractionHandler = function DefaultFractionHandler() {};
DefaultFractionHandler.prototype = new _default2["default"]();
DefaultFractionHandler.prototype.extractSeries = function (rawData, i, options) {
// TODO(danvk): pre-allocate series here.
var series = [];
var x, y, point, num, den, value;
var mult = 100.0;
var seriesLabel = options.get("labels")[i];
var logScale = options.getForSeries("logscale", seriesLabel);
for (var j = 0; j < rawData.length; j++) {
x = rawData[j][0];
point = rawData[j][i];
if (logScale && point !== null) {
// On the log scale, points less than zero do not exist.
// This will create a gap in the chart.
if (point[0] <= 0 || point[1] <= 0) {
point = null;
}
}
// Extract to the unified data format.
if (point !== null) {
num = point[0];
den = point[1];
if (num !== null && !isNaN(num)) {
value = den ? num / den : 0.0;
y = mult * value;
// preserve original values in extras for further filtering
series.push([x, y, [num, den]]);
} else {
series.push([x, num, [num, den]]);
}
} else {
series.push([x, null, [null, null]]);
}
}
return series;
};
DefaultFractionHandler.prototype.rollingAverage = function (originalData, rollPeriod, options, i) {
rollPeriod = Math.min(rollPeriod, originalData.length);
var rollingData = [];
var i;
var num = 0;
var den = 0; // numerator/denominator
var mult = 100.0;
for (i = 0; i < originalData.length; i++) {
num += originalData[i][2][0];
den += originalData[i][2][1];
if (i - rollPeriod >= 0) {
num -= originalData[i - rollPeriod][2][0];
den -= originalData[i - rollPeriod][2][1];
}
var date = originalData[i][0];
var value = den ? num / den : 0.0;
rollingData[i] = [date, mult * value];
}
return rollingData;
};
var _default = exports["default"] = DefaultFractionHandler;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIl9kYXRhaGFuZGxlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2RlZmF1bHQyIiwiZSIsIl9fZXNNb2R1bGUiLCJEZWZhdWx0RnJhY3Rpb25IYW5kbGVyIiwicHJvdG90eXBlIiwiRGVmYXVsdEhhbmRsZXIiLCJleHRyYWN0U2VyaWVzIiwicmF3RGF0YSIsImkiLCJvcHRpb25zIiwic2VyaWVzIiwieCIsInkiLCJwb2ludCIsIm51bSIsImRlbiIsIm11bHQiLCJzZXJpZXNMYWJlbCIsImdldCIsImxvZ1NjYWxlIiwiZ2V0Rm9yU2VyaWVzIiwiaiIsImxlbmd0aCIsImlzTmFOIiwicHVzaCIsInJvbGxpbmdBdmVyYWdlIiwib3JpZ2luYWxEYXRhIiwicm9sbFBlcmlvZCIsIk1hdGgiLCJtaW4iLCJyb2xsaW5nRGF0YSIsImRhdGUiLCJfZGVmYXVsdCIsIm1vZHVsZSIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWhhbmRsZXIvZGVmYXVsdC1mcmFjdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAxMyBEYXZpZCBFYmVybGVpbiAoZGF2aWQuZWJlcmxlaW5AY2guc2F1dGVyLWJjLmNvbSlcbiAqIE1JVC1saWNlbmNlZDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlL01JVFxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBEYXRhSGFuZGxlciBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGZyYWN0aW9ucyBvcHRpb24uXG4gKiBAYXV0aG9yIERhdmlkIEViZXJsZWluIChkYXZpZC5lYmVybGVpbkBjaC5zYXV0ZXItYmMuY29tKVxuICovXG5cbi8qZ2xvYmFsIER5Z3JhcGg6ZmFsc2UgKi9cblxuaW1wb3J0IER5Z3JhcGhEYXRhSGFuZGxlciBmcm9tICcuL2RhdGFoYW5kbGVyJztcbmltcG9ydCBEZWZhdWx0SGFuZGxlciBmcm9tICcuL2RlZmF1bHQnO1xuXG4vKipcbiAqIEBleHRlbmRzIERlZmF1bHRIYW5kbGVyXG4gKiBAY29uc3RydWN0b3JcbiAqL1xudmFyIERlZmF1bHRGcmFjdGlvbkhhbmRsZXIgPSBmdW5jdGlvbigpIHtcbn07XG5cbkRlZmF1bHRGcmFjdGlvbkhhbmRsZXIucHJvdG90eXBlID0gbmV3IERlZmF1bHRIYW5kbGVyKCk7XG5cbkRlZmF1bHRGcmFjdGlvbkhhbmRsZXIucHJvdG90eXBlLmV4dHJhY3RTZXJpZXMgPSBmdW5jdGlvbihyYXdEYXRhLCBpLCBvcHRpb25zKSB7XG4gIC8vIFRPRE8oZGFudmspOiBwcmUtYWxsb2NhdGUgc2VyaWVzIGhlcmUuXG4gIHZhciBzZXJpZXMgPSBbXTtcbiAgdmFyIHgsIHksIHBvaW50LCBudW0sIGRlbiwgdmFsdWU7XG4gIHZhciBtdWx0ID0gMTAwLjA7XG4gIGNvbnN0IHNlcmllc0xhYmVsID0gb3B0aW9ucy5nZXQoXCJsYWJlbHNcIilbaV07XG4gIGNvbnN0IGxvZ1NjYWxlID0gb3B0aW9ucy5nZXRGb3JTZXJpZXMoXCJsb2dzY2FsZVwiLCBzZXJpZXNMYWJlbCk7XG4gIGZvciAoIHZhciBqID0gMDsgaiA8IHJhd0RhdGEubGVuZ3RoOyBqKyspIHtcbiAgICB4ID0gcmF3RGF0YVtqXVswXTtcbiAgICBwb2ludCA9IHJhd0RhdGFbal1baV07XG4gICAgaWYgKGxvZ1NjYWxlICYmIHBvaW50ICE9PSBudWxsKSB7XG4gICAgICAvLyBPbiB0aGUgbG9nIHNjYWxlLCBwb2ludHMgbGVzcyB0aGFuIHplcm8gZG8gbm90IGV4aXN0LlxuICAgICAgLy8gVGhpcyB3aWxsIGNyZWF0ZSBhIGdhcCBpbiB0aGUgY2hhcnQuXG4gICAgICBpZiAocG9pbnRbMF0gPD0gMCB8fCBwb2ludFsxXSA8PSAwKSB7XG4gICAgICAgIHBvaW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRXh0cmFjdCB0byB0aGUgdW5pZmllZCBkYXRhIGZvcm1hdC5cbiAgICBpZiAocG9pbnQgIT09IG51bGwpIHtcbiAgICAgIG51bSA9IHBvaW50WzBdO1xuICAgICAgZGVuID0gcG9pbnRbMV07XG4gICAgICBpZiAobnVtICE9PSBudWxsICYmICFpc05hTihudW0pKSB7XG4gICAgICAgIHZhbHVlID0gZGVuID8gbnVtIC8gZGVuIDogMC4wO1xuICAgICAgICB5ID0gbXVsdCAqIHZhbHVlO1xuICAgICAgICAvLyBwcmVzZXJ2ZSBvcmlnaW5hbCB2YWx1ZXMgaW4gZXh0cmFzIGZvciBmdXJ0aGVyIGZpbHRlcmluZ1xuICAgICAgICBzZXJpZXMucHVzaChbIHgsIHksIFsgbnVtLCBkZW4gXSBdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlcmllcy5wdXNoKFsgeCwgbnVtLCBbIG51bSwgZGVuIF0gXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcmllcy5wdXNoKFsgeCwgbnVsbCwgWyBudWxsLCBudWxsIF0gXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzZXJpZXM7XG59O1xuXG5EZWZhdWx0RnJhY3Rpb25IYW5kbGVyLnByb3RvdHlwZS5yb2xsaW5nQXZlcmFnZSA9IGZ1bmN0aW9uKG9yaWdpbmFsRGF0YSwgcm9sbFBlcmlvZCxcbiAgICBvcHRpb25zLCBpKSB7XG4gIHJvbGxQZXJpb2QgPSBNYXRoLm1pbihyb2xsUGVyaW9kLCBvcmlnaW5hbERhdGEubGVuZ3RoKTtcbiAgdmFyIHJvbGxpbmdEYXRhID0gW107XG5cbiAgdmFyIGk7XG4gIHZhciBudW0gPSAwO1xuICB2YXIgZGVuID0gMDsgLy8gbnVtZXJhdG9yL2Rlbm9taW5hdG9yXG4gIHZhciBtdWx0ID0gMTAwLjA7XG4gIGZvciAoaSA9IDA7IGkgPCBvcmlnaW5hbERhdGEubGVuZ3RoOyBpKyspIHtcbiAgICBudW0gKz0gb3JpZ2luYWxEYXRhW2ldWzJdWzBdO1xuICAgIGRlbiArPSBvcmlnaW5hbERhdGFbaV1bMl1bMV07XG4gICAgaWYgKGkgLSByb2xsUGVyaW9kID49IDApIHtcbiAgICAgIG51bSAtPSBvcmlnaW5hbERhdGFbaSAtIHJvbGxQZXJpb2RdWzJdWzBdO1xuICAgICAgZGVuIC09IG9yaWdpbmFsRGF0YVtpIC0gcm9sbFBlcmlvZF1bMl1bMV07XG4gICAgfVxuXG4gICAgdmFyIGRhdGUgPSBvcmlnaW5hbERhdGFbaV1bMF07XG4gICAgdmFyIHZhbHVlID0gZGVuID8gbnVtIC8gZGVuIDogMC4wO1xuICAgIHJvbGxpbmdEYXRhW2ldID0gWyBkYXRlLCBtdWx0ICogdmFsdWUgXTtcbiAgfVxuXG4gIHJldHVybiByb2xsaW5nRGF0YTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlZmF1bHRGcmFjdGlvbkhhbmRsZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7O0FBRVo7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUFBQSxNQUFBLENBQUFDLGNBQUEsQ0FBQUMsT0FBQTtFQUFBQyxLQUFBO0FBQUE7QUFBQUQsT0FBQTtBQUVBLElBQUFFLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFNBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUF1QyxTQUFBRCx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUUsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBQSxFQUFjLENBQ3hDLENBQUM7QUFFREEsc0JBQXNCLENBQUNDLFNBQVMsR0FBRyxJQUFJQyxvQkFBYyxDQUFDLENBQUM7QUFFdkRGLHNCQUFzQixDQUFDQyxTQUFTLENBQUNFLGFBQWEsR0FBRyxVQUFTQyxPQUFPLEVBQUVDLENBQUMsRUFBRUMsT0FBTyxFQUFFO0VBQzdFO0VBQ0EsSUFBSUMsTUFBTSxHQUFHLEVBQUU7RUFDZixJQUFJQyxDQUFDLEVBQUVDLENBQUMsRUFBRUMsS0FBSyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsRUFBRW5CLEtBQUs7RUFDaEMsSUFBSW9CLElBQUksR0FBRyxLQUFLO0VBQ2hCLElBQU1DLFdBQVcsR0FBR1IsT0FBTyxDQUFDUyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUNWLENBQUMsQ0FBQztFQUM1QyxJQUFNVyxRQUFRLEdBQUdWLE9BQU8sQ0FBQ1csWUFBWSxDQUFDLFVBQVUsRUFBRUgsV0FBVyxDQUFDO0VBQzlELEtBQU0sSUFBSUksQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHZCxPQUFPLENBQUNlLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7SUFDeENWLENBQUMsR0FBR0osT0FBTyxDQUFDYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakJSLEtBQUssR0FBR04sT0FBTyxDQUFDYyxDQUFDLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDO0lBQ3JCLElBQUlXLFFBQVEsSUFBSU4sS0FBSyxLQUFLLElBQUksRUFBRTtNQUM5QjtNQUNBO01BQ0EsSUFBSUEsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSUEsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNsQ0EsS0FBSyxHQUFHLElBQUk7TUFDZDtJQUNGO0lBQ0E7SUFDQSxJQUFJQSxLQUFLLEtBQUssSUFBSSxFQUFFO01BQ2xCQyxHQUFHLEdBQUdELEtBQUssQ0FBQyxDQUFDLENBQUM7TUFDZEUsR0FBRyxHQUFHRixLQUFLLENBQUMsQ0FBQyxDQUFDO01BQ2QsSUFBSUMsR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDUyxLQUFLLENBQUNULEdBQUcsQ0FBQyxFQUFFO1FBQy9CbEIsS0FBSyxHQUFHbUIsR0FBRyxHQUFHRCxHQUFHLEdBQUdDLEdBQUcsR0FBRyxHQUFHO1FBQzdCSCxDQUFDLEdBQUdJLElBQUksR0FBR3BCLEtBQUs7UUFDaEI7UUFDQWMsTUFBTSxDQUFDYyxJQUFJLENBQUMsQ0FBRWIsQ0FBQyxFQUFFQyxDQUFDLEVBQUUsQ0FBRUUsR0FBRyxFQUFFQyxHQUFHLENBQUUsQ0FBRSxDQUFDO01BQ3JDLENBQUMsTUFBTTtRQUNMTCxNQUFNLENBQUNjLElBQUksQ0FBQyxDQUFFYixDQUFDLEVBQUVHLEdBQUcsRUFBRSxDQUFFQSxHQUFHLEVBQUVDLEdBQUcsQ0FBRSxDQUFFLENBQUM7TUFDdkM7SUFDRixDQUFDLE1BQU07TUFDTEwsTUFBTSxDQUFDYyxJQUFJLENBQUMsQ0FBRWIsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFFLElBQUksRUFBRSxJQUFJLENBQUUsQ0FBRSxDQUFDO0lBQzFDO0VBQ0Y7RUFDQSxPQUFPRCxNQUFNO0FBQ2YsQ0FBQztBQUVEUCxzQkFBc0IsQ0FBQ0MsU0FBUyxDQUFDcUIsY0FBYyxHQUFHLFVBQVNDLFlBQVksRUFBRUMsVUFBVSxFQUMvRWxCLE9BQU8sRUFBRUQsQ0FBQyxFQUFFO0VBQ2RtQixVQUFVLEdBQUdDLElBQUksQ0FBQ0MsR0FBRyxDQUFDRixVQUFVLEVBQUVELFlBQVksQ0FBQ0osTUFBTSxDQUFDO0VBQ3RELElBQUlRLFdBQVcsR0FBRyxFQUFFO0VBRXBCLElBQUl0QixDQUFDO0VBQ0wsSUFBSU0sR0FBRyxHQUFHLENBQUM7RUFDWCxJQUFJQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDYixJQUFJQyxJQUFJLEdBQUcsS0FBSztFQUNoQixLQUFLUixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdrQixZQUFZLENBQUNKLE1BQU0sRUFBRWQsQ0FBQyxFQUFFLEVBQUU7SUFDeENNLEdBQUcsSUFBSVksWUFBWSxDQUFDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCTyxHQUFHLElBQUlXLFlBQVksQ0FBQ2xCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixJQUFJQSxDQUFDLEdBQUdtQixVQUFVLElBQUksQ0FBQyxFQUFFO01BQ3ZCYixHQUFHLElBQUlZLFlBQVksQ0FBQ2xCLENBQUMsR0FBR21CLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUN6Q1osR0FBRyxJQUFJVyxZQUFZLENBQUNsQixDQUFDLEdBQUdtQixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0M7SUFFQSxJQUFJSSxJQUFJLEdBQUdMLFlBQVksQ0FBQ2xCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixJQUFJWixLQUFLLEdBQUdtQixHQUFHLEdBQUdELEdBQUcsR0FBR0MsR0FBRyxHQUFHLEdBQUc7SUFDakNlLFdBQVcsQ0FBQ3RCLENBQUMsQ0FBQyxHQUFHLENBQUV1QixJQUFJLEVBQUVmLElBQUksR0FBR3BCLEtBQUssQ0FBRTtFQUN6QztFQUVBLE9BQU9rQyxXQUFXO0FBQ3BCLENBQUM7QUFBQyxJQUFBRSxRQUFBLEdBQUFyQyxPQUFBLGNBRWFRLHNCQUFzQjtBQUFBOEIsTUFBQSxDQUFBdEMsT0FBQSxHQUFBQSxPQUFBLENBQUF1QyxPQUFBIiwiaWdub3JlTGlzdCI6W119