UNPKG

dygraphs

Version:

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

85 lines (82 loc) 10.6 kB
'use strict'; /** * @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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIl9kYXRhaGFuZGxlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2RlZmF1bHQyIiwiZSIsIl9fZXNNb2R1bGUiLCJEZWZhdWx0RnJhY3Rpb25IYW5kbGVyIiwicHJvdG90eXBlIiwiRGVmYXVsdEhhbmRsZXIiLCJleHRyYWN0U2VyaWVzIiwicmF3RGF0YSIsImkiLCJvcHRpb25zIiwic2VyaWVzIiwieCIsInkiLCJwb2ludCIsIm51bSIsImRlbiIsIm11bHQiLCJzZXJpZXNMYWJlbCIsImdldCIsImxvZ1NjYWxlIiwiZ2V0Rm9yU2VyaWVzIiwiaiIsImxlbmd0aCIsImlzTmFOIiwicHVzaCIsInJvbGxpbmdBdmVyYWdlIiwib3JpZ2luYWxEYXRhIiwicm9sbFBlcmlvZCIsIk1hdGgiLCJtaW4iLCJyb2xsaW5nRGF0YSIsImRhdGUiLCJfZGVmYXVsdCIsIm1vZHVsZSIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWhhbmRsZXIvZGVmYXVsdC1mcmFjdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgMjAxMyBEYXZpZCBFYmVybGVpbiAoZGF2aWQuZWJlcmxlaW5AY2guc2F1dGVyLWJjLmNvbSlcbiAqIE1JVC1saWNlbmNlZDogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlL01JVFxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBEYXRhSGFuZGxlciBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGZyYWN0aW9ucyBvcHRpb24uXG4gKiBAYXV0aG9yIERhdmlkIEViZXJsZWluIChkYXZpZC5lYmVybGVpbkBjaC5zYXV0ZXItYmMuY29tKVxuICovXG5cbi8qZ2xvYmFsIER5Z3JhcGg6ZmFsc2UgKi9cblxuaW1wb3J0IER5Z3JhcGhEYXRhSGFuZGxlciBmcm9tICcuL2RhdGFoYW5kbGVyJztcbmltcG9ydCBEZWZhdWx0SGFuZGxlciBmcm9tICcuL2RlZmF1bHQnO1xuXG4vKipcbiAqIEBleHRlbmRzIERlZmF1bHRIYW5kbGVyXG4gKiBAY29uc3RydWN0b3JcbiAqL1xudmFyIERlZmF1bHRGcmFjdGlvbkhhbmRsZXIgPSBmdW5jdGlvbigpIHtcbn07XG5cbkRlZmF1bHRGcmFjdGlvbkhhbmRsZXIucHJvdG90eXBlID0gbmV3IERlZmF1bHRIYW5kbGVyKCk7XG5cbkRlZmF1bHRGcmFjdGlvbkhhbmRsZXIucHJvdG90eXBlLmV4dHJhY3RTZXJpZXMgPSBmdW5jdGlvbihyYXdEYXRhLCBpLCBvcHRpb25zKSB7XG4gIC8vIFRPRE8oZGFudmspOiBwcmUtYWxsb2NhdGUgc2VyaWVzIGhlcmUuXG4gIHZhciBzZXJpZXMgPSBbXTtcbiAgdmFyIHgsIHksIHBvaW50LCBudW0sIGRlbiwgdmFsdWU7XG4gIHZhciBtdWx0ID0gMTAwLjA7XG4gIGNvbnN0IHNlcmllc0xhYmVsID0gb3B0aW9ucy5nZXQoXCJsYWJlbHNcIilbaV07XG4gIGNvbnN0IGxvZ1NjYWxlID0gb3B0aW9ucy5nZXRGb3JTZXJpZXMoXCJsb2dzY2FsZVwiLCBzZXJpZXNMYWJlbCk7XG4gIGZvciAoIHZhciBqID0gMDsgaiA8IHJhd0RhdGEubGVuZ3RoOyBqKyspIHtcbiAgICB4ID0gcmF3RGF0YVtqXVswXTtcbiAgICBwb2ludCA9IHJhd0RhdGFbal1baV07XG4gICAgaWYgKGxvZ1NjYWxlICYmIHBvaW50ICE9PSBudWxsKSB7XG4gICAgICAvLyBPbiB0aGUgbG9nIHNjYWxlLCBwb2ludHMgbGVzcyB0aGFuIHplcm8gZG8gbm90IGV4aXN0LlxuICAgICAgLy8gVGhpcyB3aWxsIGNyZWF0ZSBhIGdhcCBpbiB0aGUgY2hhcnQuXG4gICAgICBpZiAocG9pbnRbMF0gPD0gMCB8fCBwb2ludFsxXSA8PSAwKSB7XG4gICAgICAgIHBvaW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRXh0cmFjdCB0byB0aGUgdW5pZmllZCBkYXRhIGZvcm1hdC5cbiAgICBpZiAocG9pbnQgIT09IG51bGwpIHtcbiAgICAgIG51bSA9IHBvaW50WzBdO1xuICAgICAgZGVuID0gcG9pbnRbMV07XG4gICAgICBpZiAobnVtICE9PSBudWxsICYmICFpc05hTihudW0pKSB7XG4gICAgICAgIHZhbHVlID0gZGVuID8gbnVtIC8gZGVuIDogMC4wO1xuICAgICAgICB5ID0gbXVsdCAqIHZhbHVlO1xuICAgICAgICAvLyBwcmVzZXJ2ZSBvcmlnaW5hbCB2YWx1ZXMgaW4gZXh0cmFzIGZvciBmdXJ0aGVyIGZpbHRlcmluZ1xuICAgICAgICBzZXJpZXMucHVzaChbIHgsIHksIFsgbnVtLCBkZW4gXSBdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlcmllcy5wdXNoKFsgeCwgbnVtLCBbIG51bSwgZGVuIF0gXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlcmllcy5wdXNoKFsgeCwgbnVsbCwgWyBudWxsLCBudWxsIF0gXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzZXJpZXM7XG59O1xuXG5EZWZhdWx0RnJhY3Rpb25IYW5kbGVyLnByb3RvdHlwZS5yb2xsaW5nQXZlcmFnZSA9IGZ1bmN0aW9uKG9yaWdpbmFsRGF0YSwgcm9sbFBlcmlvZCxcbiAgICBvcHRpb25zLCBpKSB7XG4gIHJvbGxQZXJpb2QgPSBNYXRoLm1pbihyb2xsUGVyaW9kLCBvcmlnaW5hbERhdGEubGVuZ3RoKTtcbiAgdmFyIHJvbGxpbmdEYXRhID0gW107XG5cbiAgdmFyIGk7XG4gIHZhciBudW0gPSAwO1xuICB2YXIgZGVuID0gMDsgLy8gbnVtZXJhdG9yL2Rlbm9taW5hdG9yXG4gIHZhciBtdWx0ID0gMTAwLjA7XG4gIGZvciAoaSA9IDA7IGkgPCBvcmlnaW5hbERhdGEubGVuZ3RoOyBpKyspIHtcbiAgICBudW0gKz0gb3JpZ2luYWxEYXRhW2ldWzJdWzBdO1xuICAgIGRlbiArPSBvcmlnaW5hbERhdGFbaV1bMl1bMV07XG4gICAgaWYgKGkgLSByb2xsUGVyaW9kID49IDApIHtcbiAgICAgIG51bSAtPSBvcmlnaW5hbERhdGFbaSAtIHJvbGxQZXJpb2RdWzJdWzBdO1xuICAgICAgZGVuIC09IG9yaWdpbmFsRGF0YVtpIC0gcm9sbFBlcmlvZF1bMl1bMV07XG4gICAgfVxuXG4gICAgdmFyIGRhdGUgPSBvcmlnaW5hbERhdGFbaV1bMF07XG4gICAgdmFyIHZhbHVlID0gZGVuID8gbnVtIC8gZGVuIDogMC4wO1xuICAgIHJvbGxpbmdEYXRhW2ldID0gWyBkYXRlLCBtdWx0ICogdmFsdWUgXTtcbiAgfVxuXG4gIHJldHVybiByb2xsaW5nRGF0YTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlZmF1bHRGcmFjdGlvbkhhbmRsZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7O0FBRVo7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUFBQSxNQUFBLENBQUFDLGNBQUEsQ0FBQUMsT0FBQTtFQUFBQyxLQUFBO0FBQUE7QUFBQUQsT0FBQTtBQUVBLElBQUFFLFlBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFNBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUF1QyxTQUFBRCx1QkFBQUcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBRXZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUUsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBQSxFQUFjLENBQ3hDLENBQUM7QUFFREEsc0JBQXNCLENBQUNDLFNBQVMsR0FBRyxJQUFJQyxvQkFBYyxDQUFDLENBQUM7QUFFdkRGLHNCQUFzQixDQUFDQyxTQUFTLENBQUNFLGFBQWEsR0FBRyxVQUFTQyxPQUFPLEVBQUVDLENBQUMsRUFBRUMsT0FBTyxFQUFFO0VBQzdFO0VBQ0EsSUFBSUMsTUFBTSxHQUFHLEVBQUU7RUFDZixJQUFJQyxDQUFDLEVBQUVD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