UNPKG

dygraphs

Version:

dygraphs is a fast, flexible open source JavaScript charting library.

86 lines (83 loc) 10 kB
/** * @license * Copyright 2013 David Eberlein (david.eberlein@ch.sauter-bc.com) * MIT-licenced: https://opensource.org/licenses/MIT */ /** * @fileoverview DataHandler implementation for the fractions option. * @author David Eberlein (david.eberlein@ch.sauter-bc.com) */ /*global Dygraph:false */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _datahandler = _interopRequireDefault(require("./datahandler")); var _default2 = _interopRequireDefault(require("./default")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } /** * @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 = DefaultFractionHandler; exports["default"] = _default; module.exports = exports.default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZWZhdWx0RnJhY3Rpb25IYW5kbGVyIiwicHJvdG90eXBlIiwiRGVmYXVsdEhhbmRsZXIiLCJleHRyYWN0U2VyaWVzIiwicmF3RGF0YSIsImkiLCJvcHRpb25zIiwic2VyaWVzIiwieCIsInkiLCJwb2ludCIsIm51bSIsImRlbiIsInZhbHVlIiwibXVsdCIsInNlcmllc0xhYmVsIiwiZ2V0IiwibG9nU2NhbGUiLCJnZXRGb3JTZXJpZXMiLCJqIiwibGVuZ3RoIiwiaXNOYU4iLCJwdXNoIiwicm9sbGluZ0F2ZXJhZ2UiLCJvcmlnaW5hbERhdGEiLCJyb2xsUGVyaW9kIiwiTWF0aCIsIm1pbiIsInJvbGxpbmdEYXRhIiwiZGF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhaGFuZGxlci9kZWZhdWx0LWZyYWN0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAxMyBEYXZpZCBFYmVybGVpbiAoZGF2aWQuZWJlcmxlaW5AY2guc2F1dGVyLWJjLmNvbSlcbiAqIE1JVC1saWNlbmNlZDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVRcbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgRGF0YUhhbmRsZXIgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBmcmFjdGlvbnMgb3B0aW9uLlxuICogQGF1dGhvciBEYXZpZCBFYmVybGVpbiAoZGF2aWQuZWJlcmxlaW5AY2guc2F1dGVyLWJjLmNvbSlcbiAqL1xuXG4vKmdsb2JhbCBEeWdyYXBoOmZhbHNlICovXG5cInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IER5Z3JhcGhEYXRhSGFuZGxlciBmcm9tICcuL2RhdGFoYW5kbGVyJztcbmltcG9ydCBEZWZhdWx0SGFuZGxlciBmcm9tICcuL2RlZmF1bHQnO1xuXG4vKipcbiAqIEBleHRlbmRzIERlZmF1bHRIYW5kbGVyXG4gKiBAY29uc3RydWN0b3JcbiAqL1xudmFyIERlZmF1bHRGcmFjdGlvbkhhbmRsZXIgPSBmdW5jdGlvbigpIHtcbn07XG5cbkRlZmF1bHRGcmFjdGlvbkhhbmRsZXIucHJvdG90eXBlID0gbmV3IERlZmF1bHRIYW5kbGVyKCk7XG5cbkRlZmF1bHRGcmFjdGlvbkhhbmRsZXIucHJvdG90eXBlLmV4dHJhY3RTZXJpZXMgPSBmdW5jdGlvbihyYXdEYXRhLCBpLCBvcHRpb25zKSB7XG4gIC8vIFRPRE8oZGFudmspOiBwcmUtYWxsb2NhdGUgc2VyaWVzIGhlcmUuXG4gIHZhciBzZXJpZXMgPSBbXTtcbiAgdmFyIHgsIHksIHBvaW50LCBudW0sIGRlbiwgdmFsdWU7XG4gIHZhciBtdWx0ID0gMTAwLjA7XG4gIGNvbnN0IHNlcmllc0xhYmVsID0gb3B0aW9ucy5nZXQoXCJsYWJlbHNcIilbaV07XG4gIGNvbnN0IGxvZ1NjYWxlID0gb3B0aW9ucy5nZXRGb3JTZXJpZXMoXCJsb2dzY2FsZVwiLCBzZXJpZXNMYWJlbCk7XG4gIGZvciAoIHZhciBqID0gMDsgaiA8IHJhd0RhdGEubGVuZ3RoOyBqKyspIHtcbiAgICB4ID0gcmF3RGF0YVtqXVswXTtcbiAgICBwb2ludCA9IHJhd0RhdGFbal1baV07XG4gICAgaWYgKGxvZ1NjYWxlICYmIHBvaW50ICE9PSBudWxsKSB7XG4gICAgICAvLyBPbiB0aGUgbG9nIHNjYWxlLCBwb2ludHMgbGVzcyB0aGFuIHplcm8gZG8gbm90IGV4aXN0LlxuICAgICAgLy8gVGhpcyB3aWxsIGNyZWF0ZSBhIGdhcCBpbiB0aGUgY2hhcnQuXG4gICAgICBpZiAocG9pbnRbMF0gPD0gMCB8fCBwb2ludFsxXSA8PSAwKSB7XG4gICAgICAgIHBvaW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRXh0cmFjdCB0byB0aGUgdW5pZmllZCBkYXRhIGZvcm1hdC5cbiAgICBpZiAocG9pbnQgIT09IG51bGwpIHtcbiAgICAgIG51bSA9IHBvaW50WzBdO1xuICAgICAgZGVuID0gcG9pbnRbMV07XG4gICAgICBpZiAobnVtICE9PSBudWxsICYmICFpc05hTihudW0pKSB7XG4gICAgICAgIHZhbHVlID0gZGVuID8gbnVtIC8gZGVuIDogMC4wO1xuICAgICAgICB5ID0gbXVsdCAqIHZhbHVlO1xuICAgICAgICAvLyBwcmVzZXJ2ZSBvcmlnaW5hbCB2YWx1ZXMgaW4gZXh0cmFzIGZvciBmdXJ0aGVyIGZpbHRlcmluZ1xuICAgICAgICBzZXJpZXMucHVzaChbIHgsIHksIFsgbnVtLCBkZW4gXSBdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlcmllcy5wdXNoKFsgeCwgbnVtLCBbIG51bSwgZGVuIF0gXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcmllcy5wdXNoKFsgeCwgbnVsbCwgWyBudWxsLCBudWxsIF0gXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzZXJpZXM7XG59O1xuXG5EZWZhdWx0RnJhY3Rpb25IYW5kbGVyLnByb3RvdHlwZS5yb2xsaW5nQXZlcmFnZSA9IGZ1bmN0aW9uKG9yaWdpbmFsRGF0YSwgcm9sbFBlcmlvZCxcbiAgICBvcHRpb25zLCBpKSB7XG4gIHJvbGxQZXJpb2QgPSBNYXRoLm1pbihyb2xsUGVyaW9kLCBvcmlnaW5hbERhdGEubGVuZ3RoKTtcbiAgdmFyIHJvbGxpbmdEYXRhID0gW107XG5cbiAgdmFyIGk7XG4gIHZhciBudW0gPSAwO1xuICB2YXIgZGVuID0gMDsgLy8gbnVtZXJhdG9yL2Rlbm9taW5hdG9yXG4gIHZhciBtdWx0ID0gMTAwLjA7XG4gIGZvciAoaSA9IDA7IGkgPCBvcmlnaW5hbERhdGEubGVuZ3RoOyBpKyspIHtcbiAgICBudW0gKz0gb3JpZ2luYWxEYXRhW2ldWzJdWzBdO1xuICAgIGRlbiArPSBvcmlnaW5hbERhdGFbaV1bMl1bMV07XG4gICAgaWYgKGkgLSByb2xsUGVyaW9kID49IDApIHtcbiAgICAgIG51bSAtPSBvcmlnaW5hbERhdGFbaSAtIHJvbGxQZXJpb2RdWzJdWzBdO1xuICAgICAgZGVuIC09IG9yaWdpbmFsRGF0YVtpIC0gcm9sbFBlcmlvZF1bMl1bMV07XG4gICAgfVxuXG4gICAgdmFyIGRhdGUgPSBvcmlnaW5hbERhdGFbaV1bMF07XG4gICAgdmFyIHZhbHVlID0gZGVuID8gbnVtIC8gZGVuIDogMC4wO1xuICAgIHJvbGxpbmdEYXRhW2ldID0gWyBkYXRlLCBtdWx0ICogdmFsdWUgXTtcbiAgfVxuXG4gIHJldHVybiByb2xsaW5nRGF0YTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlZmF1bHRGcmFjdGlvbkhhbmRsZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZOztBQUFDO0VBQUE7QUFBQTtBQUFBO0FBRWI7QUFDQTtBQUF1QztBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlBLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0IsR0FBYyxDQUN4QyxDQUFDO0FBRURBLHNCQUFzQixDQUFDQyxTQUFTLEdBQUcsSUFBSUMsb0JBQWMsRUFBRTtBQUV2REYsc0JBQXNCLENBQUNDLFNBQVMsQ0FBQ0UsYUFBYSxHQUFHLFVBQVNDLE9BQU8sRUFBRUMsQ0FBQyxFQUFFQyxPQUFPLEVBQUU7RUFDN0U7RUFDQSxJQUFJQyxNQUFNLEdBQUcsRUFBRTtFQUNmLElBQUlDLENBQUMsRUFBRUMsQ0FBQyxFQUFFQyxLQUFLLEVBQUVDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxLQUFLO0VBQ2hDLElBQUlDLElBQUksR0FBRyxLQUFLO0VBQ2hCLElBQU1DLFdBQVcsR0FBR1QsT0FBTyxDQUFDVSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUNYLENBQUMsQ0FBQztFQUM1QyxJQUFNWSxRQUFRLEdBQUdYLE9BQU8sQ0FBQ1ksWUFBWSxDQUFDLFVBQVUsRUFBRUgsV0FBVyxDQUFDO0VBQzlELEtBQU0sSUFBSUksQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHZixPQUFPLENBQUNnQixNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO0lBQ3hDWCxDQUFDLEdBQUdKLE9BQU8sQ0FBQ2UsQ0FBQyxDQUFD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