UNPKG

@qogni/dygraphs

Version:

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

85 lines (82 loc) 10.6 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(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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIl9kYXRhaGFuZGxlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2RlZmF1bHQyIiwiZSIsIl9fZXNNb2R1bGUiLCJEZWZhdWx0RnJhY3Rpb25IYW5kbGVyIiwicHJvdG90eXBlIiwiRGVmYXVsdEhhbmRsZXIiLCJleHRyYWN0U2VyaWVzIiwicmF3RGF0YSIsImkiLCJvcHRpb25zIiwic2VyaWVzIiwieCIsInkiLCJwb2ludCIsIm51bSIsImRlbiIsIm11bHQiLCJzZXJpZXNMYWJlbCIsImdldCIsImxvZ1NjYWxlIiwiZ2V0Rm9yU2VyaWVzIiwiaiIsImxlbmd0aCIsImlzTmFOIiwicHVzaCIsInJvbGxpbmdBdmVyYWdlIiwib3JpZ2luYWxEYXRhIiwicm9sbFBlcmlvZCIsIk1hdGgiLCJtaW4iLCJyb2xsaW5nRGF0YSIsImRhdGUiLCJfZGVmYXVsdCIsIm1vZHVsZSIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWhhbmRsZXIvZGVmYXVsdC1mcmFjdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMTMgRGF2aWQgRWJlcmxlaW4gKGRhdmlkLmViZXJsZWluQGNoLnNhdXRlci1iYy5jb20pXG4gKiBNSVQtbGljZW5jZWQ6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IERhdGFIYW5kbGVyIGltcGxlbWVudGF0aW9uIGZvciB0aGUgZnJhY3Rpb25zIG9wdGlvbi5cbiAqIEBhdXRob3IgRGF2aWQgRWJlcmxlaW4gKGRhdmlkLmViZXJsZWluQGNoLnNhdXRlci1iYy5jb20pXG4gKi9cblxuLypnbG9iYWwgRHlncmFwaDpmYWxzZSAqL1xuXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBEeWdyYXBoRGF0YUhhbmRsZXIgZnJvbSAnLi9kYXRhaGFuZGxlcic7XG5pbXBvcnQgRGVmYXVsdEhhbmRsZXIgZnJvbSAnLi9kZWZhdWx0JztcblxuLyoqXG4gKiBAZXh0ZW5kcyBEZWZhdWx0SGFuZGxlclxuICogQGNvbnN0cnVjdG9yXG4gKi9cbnZhciBEZWZhdWx0RnJhY3Rpb25IYW5kbGVyID0gZnVuY3Rpb24oKSB7XG59O1xuXG5EZWZhdWx0RnJhY3Rpb25IYW5kbGVyLnByb3RvdHlwZSA9IG5ldyBEZWZhdWx0SGFuZGxlcigpO1xuXG5EZWZhdWx0RnJhY3Rpb25IYW5kbGVyLnByb3RvdHlwZS5leHRyYWN0U2VyaWVzID0gZnVuY3Rpb24ocmF3RGF0YSwgaSwgb3B0aW9ucykge1xuICAvLyBUT0RPKGRhbnZrKTogcHJlLWFsbG9jYXRlIHNlcmllcyBoZXJlLlxuICB2YXIgc2VyaWVzID0gW107XG4gIHZhciB4LCB5LCBwb2ludCwgbnVtLCBkZW4sIHZhbHVlO1xuICB2YXIgbXVsdCA9IDEwMC4wO1xuICBjb25zdCBzZXJpZXNMYWJlbCA9IG9wdGlvbnMuZ2V0KFwibGFiZWxzXCIpW2ldO1xuICBjb25zdCBsb2dTY2FsZSA9IG9wdGlvbnMuZ2V0Rm9yU2VyaWVzKFwibG9nc2NhbGVcIiwgc2VyaWVzTGFiZWwpO1xuICBmb3IgKCB2YXIgaiA9IDA7IGogPCByYXdEYXRhLmxlbmd0aDsgaisrKSB7XG4gICAgeCA9IHJhd0RhdGFbal1bMF07XG4gICAgcG9pbnQgPSByYXdEYXRhW2pdW2ldO1xuICAgIGlmIChsb2dTY2FsZSAmJiBwb2ludCAhPT0gbnVsbCkge1xuICAgICAgLy8gT24gdGhlIGxvZyBzY2FsZSwgcG9pbnRzIGxlc3MgdGhhbiB6ZXJvIGRvIG5vdCBleGlzdC5cbiAgICAgIC8vIFRoaXMgd2lsbCBjcmVhdGUgYSBnYXAgaW4gdGhlIGNoYXJ0LlxuICAgICAgaWYgKHBvaW50WzBdIDw9IDAgfHwgcG9pbnRbMV0gPD0gMCkge1xuICAgICAgICBwb2ludCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEV4dHJhY3QgdG8gdGhlIHVuaWZpZWQgZGF0YSBmb3JtYXQuXG4gICAgaWYgKHBvaW50ICE9PSBudWxsKSB7XG4gICAgICBudW0gPSBwb2ludFswXTtcbiAgICAgIGRlbiA9IHBvaW50WzFdO1xuICAgICAgaWYgKG51bSAhPT0gbnVsbCAmJiAhaXNOYU4obnVtKSkge1xuICAgICAgICB2YWx1ZSA9IGRlbiA/IG51bSAvIGRlbiA6IDAuMDtcbiAgICAgICAgeSA9IG11bHQgKiB2YWx1ZTtcbiAgICAgICAgLy8gcHJlc2VydmUgb3JpZ2luYWwgdmFsdWVzIGluIGV4dHJhcyBmb3IgZnVydGhlciBmaWx0ZXJpbmdcbiAgICAgICAgc2VyaWVzLnB1c2goWyB4LCB5LCBbIG51bSwgZGVuIF0gXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXJpZXMucHVzaChbIHgsIG51bSwgWyBudW0sIGRlbiBdIF0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXJpZXMucHVzaChbIHgsIG51bGwsIFsgbnVsbCwgbnVsbCBdIF0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc2VyaWVzO1xufTtcblxuRGVmYXVsdEZyYWN0aW9uSGFuZGxlci5wcm90b3R5cGUucm9sbGluZ0F2ZXJhZ2UgPSBmdW5jdGlvbihvcmlnaW5hbERhdGEsIHJvbGxQZXJpb2QsXG4gICAgb3B0aW9ucywgaSkge1xuICByb2xsUGVyaW9kID0gTWF0aC5taW4ocm9sbFBlcmlvZCwgb3JpZ2luYWxEYXRhLmxlbmd0aCk7XG4gIHZhciByb2xsaW5nRGF0YSA9IFtdO1xuXG4gIHZhciBpO1xuICB2YXIgbnVtID0gMDtcbiAgdmFyIGRlbiA9IDA7IC8vIG51bWVyYXRvci9kZW5vbWluYXRvclxuICB2YXIgbXVsdCA9IDEwMC4wO1xuICBmb3IgKGkgPSAwOyBpIDwgb3JpZ2luYWxEYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgbnVtICs9IG9yaWdpbmFsRGF0YVtpXVsyXVswXTtcbiAgICBkZW4gKz0gb3JpZ2luYWxEYXRhW2ldWzJdWzFdO1xuICAgIGlmIChpIC0gcm9sbFBlcmlvZCA+PSAwKSB7XG4gICAgICBudW0gLT0gb3JpZ2luYWxEYXRhW2kgLSByb2xsUGVyaW9kXVsyXVswXTtcbiAgICAgIGRlbiAtPSBvcmlnaW5hbERhdGFbaSAtIHJvbGxQZXJpb2RdWzJdWzFdO1xuICAgIH1cblxuICAgIHZhciBkYXRlID0gb3JpZ2luYWxEYXRhW2ldWzBdO1xuICAgIHZhciB2YWx1ZSA9IGRlbiA/IG51bSAvIGRlbiA6IDAuMDtcbiAgICByb2xsaW5nRGF0YVtpXSA9IFsgZGF0ZSwgbXVsdCAqIHZhbHVlIF07XG4gIH1cblxuICByZXR1cm4gcm9sbGluZ0RhdGE7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWZhdWx0RnJhY3Rpb25IYW5kbGVyO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWTs7QUFBQ0EsTUFBQSxDQUFBQyxjQUFBLENBQUFDLE9BQUE7RUFBQUMsS0FBQTtBQUFBO0FBQUFELE9BQUE7QUFFYixJQUFBRSxZQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFBdUMsU0FBQUQsdUJBQUFHLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlFLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUEsRUFBYyxDQUN4QyxDQUFDO0FBRURBLHNCQUFzQixDQUFDQyxTQUFTLEdBQUcsSUFBSUMsb0JBQWMsQ0FBQyxDQUFDO0FBRXZERixzQkFBc0IsQ0FBQ0MsU0FBUyxDQUFDRSxhQUFhLEdBQUcsVUFBU0MsT0FBTyxFQUFFQyxDQUFDLEVBQUVDLE9BQU8sRUFBRTtFQUM3RTtFQUNBLElBQUlDLE1BQU0sR0FBRyxFQUFFO0VBQ2YsSUFBSUMsQ0FBQyxFQUFF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