@qogni/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/licenses/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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIl9kYXRhaGFuZGxlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2RlZmF1bHQyIiwiZSIsIl9fZXNNb2R1bGUiLCJEZWZhdWx0RnJhY3Rpb25IYW5kbGVyIiwicHJvdG90eXBlIiwiRGVmYXVsdEhhbmRsZXIiLCJleHRyYWN0U2VyaWVzIiwicmF3RGF0YSIsImkiLCJvcHRpb25zIiwic2VyaWVzIiwieCIsInkiLCJwb2ludCIsIm51bSIsImRlbiIsIm11bHQiLCJzZXJpZXNMYWJlbCIsImdldCIsImxvZ1NjYWxlIiwiZ2V0Rm9yU2VyaWVzIiwiaiIsImxlbmd0aCIsImlzTmFOIiwicHVzaCIsInJvbGxpbmdBdmVyYWdlIiwib3JpZ2luYWxEYXRhIiwicm9sbFBlcmlvZCIsIk1hdGgiLCJtaW4iLCJyb2xsaW5nRGF0YSIsImRhdGUiLCJfZGVmYXVsdCIsIm1vZHVsZSIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YWhhbmRsZXIvZGVmYXVsdC1mcmFjdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMTMgRGF2aWQgRWJlcmxlaW4gKGRhdmlkLmViZXJsZWluQGNoLnNhdXRlci1iYy5jb20pXG4gKiBNSVQtbGljZW5jZWQ6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IERhdGFIYW5kbGVyIGltcGxlbWVudGF0aW9uIGZvciB0aGUgZnJhY3Rpb25zIG9wdGlvbi5cbiAqIEBhdXRob3IgRGF2aWQgRWJlcmxlaW4gKGRhdmlkLmViZXJsZWluQGNoLnNhdXRlci1iYy5jb20pXG4gKi9cblxuLypnbG9iYWwgRHlncmFwaDpmYWxzZSAqL1xuXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBEeWdyYXBoRGF0YUhhbmRsZXIgZnJvbSAnLi9kYXRhaGFuZGxlcic7XG5pbXBvcnQgRGVmYXVsdEhhbmRsZXIgZnJvbSAnLi9kZWZhdWx0JztcblxuLyoqXG4gKiBAZXh0ZW5kcyBEZWZhdWx0SGFuZGxlclxuICogQGNvbnN0cnVjdG9yXG4gKi9cbnZhciBEZWZhdWx0RnJhY3Rpb25IYW5kbGVyID0gZnVuY3Rpb24oKSB7XG59O1xuXG5EZWZhdWx0RnJhY3Rpb25IYW5kbGVyLnByb3RvdHlwZSA9IG5ldyBEZWZhdWx0SGFuZGxlcigpO1xuXG5EZWZhdWx0RnJhY3Rpb25IYW5kbGVyLnByb3RvdHlwZS5leHRyYWN0U2VyaWVzID0gZnVuY3Rpb24ocmF3RGF0YSwgaSwgb3B0aW9ucykge1xuICAvLyBUT0RPKGRhbnZrKTogcHJlLWFsbG9jYXRlIHNlcmllcyBoZXJlLlxuICB2YXIgc2VyaWVzID0gW107XG4gIHZhciB4LCB5LCBwb2ludCwgbnVtLCBkZW4sIHZhbHVlO1xuICB2YXIgbXVsdCA9IDEwMC4wO1xuICBjb25zdCBzZXJpZXNMYWJlbCA9IG9wdGlvbnMuZ2V0KFwibGFiZWxzXCIpW2ldO1xuICBjb25zdCBsb2dTY2FsZSA9IG9wdGlvbnMuZ2V0Rm9yU2VyaWVzKFwibG9nc2NhbGVcIiwgc2VyaWVzTGFiZWwpO1xuICBmb3IgKCB2YXIgaiA9IDA7IGogPCByYXdEYXRhLmxlbmd0aDsgaisrKSB7XG4gICAgeCA9IHJhd0RhdGFbal1bMF07XG4gICAgcG9pbnQgPSByYXdEYXRhW2pdW2ldO1xuICAgIGlmIChsb2dTY2FsZSAmJiBwb2ludCAhPT0gbnVsbCkge1xuICAgICAgLy8gT24gdGhlIGxvZyBzY2FsZSwgcG9pbnRzIGxlc3MgdGhhbiB6ZXJvIGRvIG5vdCBleGlzdC5cbiAgICAgIC8vIFRoaXMgd2lsbCBjcmVhdGUgYSBnYXAgaW4gdGhlIGNoYXJ0LlxuICAgICAgaWYgKHBvaW50WzBdIDw9IDAgfHwgcG9pbnRbMV0gPD0gMCkge1xuICAgICAgICBwb2ludCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEV4dHJhY3QgdG8gdGhlIHVuaWZpZWQgZGF0YSBmb3JtYXQuXG4gICAgaWYgKHBvaW50ICE9PSBudWxsKSB7XG4gICAgICBudW0gPSBwb2ludFswXTtcbiAgICAgIGRlbiA9IHBvaW50WzFdO1xuICAgICAgaWYgKG51bSAhPT0gbnVsbCAmJiAhaXNOYU4obnVtKSkge1xuICAgICAgICB2YWx1ZSA9IGRlbiA/IG51bSAvIGRlbiA6IDAuMDtcbiAgICAgICAgeSA9IG11bHQgKiB2YWx1ZTtcbiAgICAgICAgLy8gcHJlc2VydmUgb3JpZ2luYWwgdmFsdWVzIGluIGV4dHJhcyBmb3IgZnVydGhlciBmaWx0ZXJpbmdcbiAgICAgICAgc2VyaWVzLnB1c2goWyB4LCB5LCBbIG51bSwgZGVuIF0gXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXJpZXMucHVzaChbIHgsIG51bSwgWyBudW0sIGRlbiBdIF0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXJpZXMucHVzaChbIHgsIG51bGwsIFsgbnVsbCwgbnVsbCBdIF0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc2VyaWVzO1xufTtcblxuRGVmYXVsdEZyYWN0aW9uSGFuZGxlci5wcm90b3R5cGUucm9sbGluZ0F2ZXJhZ2UgPSBmdW5jdGlvbihvcmlnaW5hbERhdGEsIHJvbGxQZXJpb2QsXG4gICAgb3B0aW9ucywgaSkge1xuICByb2xsUGVyaW9kID0gTWF0aC5taW4ocm9sbFBlcmlvZCwgb3JpZ2luYWxEYXRhLmxlbmd0aCk7XG4gIHZhciByb2xsaW5nRGF0YSA9IFtdO1xuXG4gIHZhciBpO1xuICB2YXIgbnVtID0gMDtcbiAgdmFyIGRlbiA9IDA7IC8vIG51bWVyYXRvci9kZW5vbWluYXRvclxuICB2YXIgbXVsdCA9IDEwMC4wO1xuICBmb3IgKGkgPSAwOyBpIDwgb3JpZ2luYWxEYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgbnVtICs9IG9yaWdpbmFsRGF0YVtpXVsyXVswXTtcbiAgICBkZW4gKz0gb3JpZ2luYWxEYXRhW2ldWzJdWzFdO1xuICAgIGlmIChpIC0gcm9sbFBlcmlvZCA+PSAwKSB7XG4gICAgICBudW0gLT0gb3JpZ2luYWxEYXRhW2kgLSByb2xsUGVyaW9kXVsyXVswXTtcbiAgICAgIGRlbiAtPSBvcmlnaW5hbERhdGFbaSAtIHJvbGxQZXJpb2RdWzJdWzFdO1xuICAgIH1cblxuICAgIHZhciBkYXRlID0gb3JpZ2luYWxEYXRhW2ldWzBdO1xuICAgIHZhciB2YWx1ZSA9IGRlbiA/IG51bSAvIGRlbiA6IDAuMDtcbiAgICByb2xsaW5nRGF0YVtpXSA9IFsgZGF0ZSwgbXVsdCAqIHZhbHVlIF07XG4gIH1cblxuICByZXR1cm4gcm9sbGluZ0RhdGE7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWZhdWx0RnJhY3Rpb25IYW5kbGVyO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWTs7QUFBQ0EsTUFBQSxDQUFBQyxjQUFBLENBQUFDLE9BQUE7RUFBQUMsS0FBQTtBQUFBO0FBQUFELE9BQUE7QUFFYixJQUFBRSxZQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFBdUMsU0FBQUQsdUJBQUFHLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUV2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUlFLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUEsRUFBYyxDQUN4QyxDQUFDO0FBRURBLHNCQUFzQixDQUFDQyxTQUFTLEdBQUcsSUFBSUMsb0JBQWMsQ0FBQyxDQUFDO0FBRXZERixzQkFBc0IsQ0FBQ0MsU0FBUyxDQUFDRSxhQUFhLEdBQUcsVUFBU0MsT0FBTyxFQUFFQyxDQUFDLEVBQUVDLE9BQU8sRUFBRTtFQUM3RTtFQUNBLElBQUlDLE1BQU0sR0FBRyxFQUFFO0VBQ2YsSUFBSUMsQ0FBQyxFQUFF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