dygraphs
Version:
dygraphs is a fast, flexible open source JavaScript charting library.
86 lines (83 loc) • 10 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(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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