dygraphs
Version:
dygraphs is a fast, flexible open source JavaScript charting library.
98 lines (93 loc) • 11.6 kB
JavaScript
;
/**
* @license
* Copyright 2013 David Eberlein (david.eberlein@ch.sauter-bc.com)
* MIT-licenced: https://opensource.org/license/MIT
*/
/**
* @fileoverview DataHandler implementation for the custom bars option.
* @author David Eberlein (david.eberlein@ch.sauter-bc.com)
*/
/*global Dygraph:false */
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _bars = _interopRequireDefault(require("./bars"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
/**
* @constructor
* @extends Dygraph.DataHandlers.BarsHandler
*/
var CustomBarsHandler = function CustomBarsHandler() {};
CustomBarsHandler.prototype = new _bars["default"]();
/** @inheritDoc */
CustomBarsHandler.prototype.extractSeries = function (rawData, i, options) {
// TODO(danvk): pre-allocate series here.
var series = [];
var x, y, point;
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[2] <= 0) {
point = null;
}
}
// Extract to the unified data format.
if (point !== null) {
y = point[1];
if (y !== null && !isNaN(y)) {
series.push([x, y, [point[0], point[2]]]);
} else {
series.push([x, y, [y, y]]);
}
} else {
series.push([x, null, [null, null]]);
}
}
return series;
};
/** @inheritDoc */
CustomBarsHandler.prototype.rollingAverage = function (originalData, rollPeriod, options, i) {
rollPeriod = Math.min(rollPeriod, originalData.length);
var rollingData = [];
var y, low, high, mid, count, i, extremes;
low = 0;
mid = 0;
high = 0;
count = 0;
for (i = 0; i < originalData.length; i++) {
y = originalData[i][1];
extremes = originalData[i][2];
rollingData[i] = originalData[i];
if (y !== null && !isNaN(y)) {
low += extremes[0];
mid += y;
high += extremes[1];
count += 1;
}
if (i - rollPeriod >= 0) {
var prev = originalData[i - rollPeriod];
if (prev[1] !== null && !isNaN(prev[1])) {
low -= prev[2][0];
mid -= prev[1];
high -= prev[2][1];
count -= 1;
}
}
if (count) {
rollingData[i] = [originalData[i][0], 1.0 * mid / count, [1.0 * low / count, 1.0 * high / count]];
} else {
rollingData[i] = [originalData[i][0], null, [null, null]];
}
}
return rollingData;
};
var _default = exports["default"] = CustomBarsHandler;
module.exports = exports.default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsIl9iYXJzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsIkN1c3RvbUJhcnNIYW5kbGVyIiwicHJvdG90eXBlIiwiQmFyc0hhbmRsZXIiLCJleHRyYWN0U2VyaWVzIiwicmF3RGF0YSIsImkiLCJvcHRpb25zIiwic2VyaWVzIiwieCIsInkiLCJwb2ludCIsInNlcmllc0xhYmVsIiwiZ2V0IiwibG9nU2NhbGUiLCJnZXRGb3JTZXJpZXMiLCJqIiwibGVuZ3RoIiwiaXNOYU4iLCJwdXNoIiwicm9sbGluZ0F2ZXJhZ2UiLCJvcmlnaW5hbERhdGEiLCJyb2xsUGVyaW9kIiwiTWF0aCIsIm1pbiIsInJvbGxpbmdEYXRhIiwibG93IiwiaGlnaCIsIm1pZCIsImNvdW50IiwiZXh0cmVtZXMiLCJwcmV2IiwiX2RlZmF1bHQiLCJtb2R1bGUiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGFoYW5kbGVyL2JhcnMtY3VzdG9tLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IDIwMTMgRGF2aWQgRWJlcmxlaW4gKGRhdmlkLmViZXJsZWluQGNoLnNhdXRlci1iYy5jb20pXG4gKiBNSVQtbGljZW5jZWQ6IGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZS9NSVRcbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgRGF0YUhhbmRsZXIgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBjdXN0b20gYmFycyBvcHRpb24uXG4gKiBAYXV0aG9yIERhdmlkIEViZXJsZWluIChkYXZpZC5lYmVybGVpbkBjaC5zYXV0ZXItYmMuY29tKVxuICovXG5cbi8qZ2xvYmFsIER5Z3JhcGg6ZmFsc2UgKi9cblxuaW1wb3J0IEJhcnNIYW5kbGVyIGZyb20gJy4vYmFycyc7XG5cbi8qKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAZXh0ZW5kcyBEeWdyYXBoLkRhdGFIYW5kbGVycy5CYXJzSGFuZGxlclxuICovXG52YXIgQ3VzdG9tQmFyc0hhbmRsZXIgPSBmdW5jdGlvbigpIHtcbn07XG5cbkN1c3RvbUJhcnNIYW5kbGVyLnByb3RvdHlwZSA9IG5ldyBCYXJzSGFuZGxlcigpO1xuXG4vKiogQGluaGVyaXREb2MgKi9cbkN1c3RvbUJhcnNIYW5kbGVyLnByb3RvdHlwZS5leHRyYWN0U2VyaWVzID0gZnVuY3Rpb24ocmF3RGF0YSwgaSwgb3B0aW9ucykge1xuICAvLyBUT0RPKGRhbnZrKTogcHJlLWFsbG9jYXRlIHNlcmllcyBoZXJlLlxuICB2YXIgc2VyaWVzID0gW107XG4gIHZhciB4LCB5LCBwb2ludDtcbiAgY29uc3Qgc2VyaWVzTGFiZWwgPSBvcHRpb25zLmdldChcImxhYmVsc1wiKVtpXTtcbiAgY29uc3QgbG9nU2NhbGUgPSBvcHRpb25zLmdldEZvclNlcmllcyhcImxvZ3NjYWxlXCIsIHNlcmllc0xhYmVsKTtcbiAgZm9yICggdmFyIGogPSAwOyBqIDwgcmF3RGF0YS5sZW5ndGg7IGorKykge1xuICAgIHggPSByYXdEYXRhW2pdWzBdO1xuICAgIHBvaW50ID0gcmF3RGF0YVtqXVtpXTtcbiAgICBpZiAobG9nU2NhbGUgJiYgcG9pbnQgIT09IG51bGwpIHtcbiAgICAgIC8vIE9uIHRoZSBsb2cgc2NhbGUsIHBvaW50cyBsZXNzIHRoYW4gemVybyBkbyBub3QgZXhpc3QuXG4gICAgICAvLyBUaGlzIHdpbGwgY3JlYXRlIGEgZ2FwIGluIHRoZSBjaGFydC5cbiAgICAgIGlmIChwb2ludFswXSA8PSAwIHx8IHBvaW50WzFdIDw9IDAgfHwgcG9pbnRbMl0gPD0gMCkge1xuICAgICAgICBwb2ludCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEV4dHJhY3QgdG8gdGhlIHVuaWZpZWQgZGF0YSBmb3JtYXQuXG4gICAgaWYgKHBvaW50ICE9PSBudWxsKSB7XG4gICAgICB5ID0gcG9pbnRbMV07XG4gICAgICBpZiAoeSAhPT0gbnVsbCAmJiAhaXNOYU4oeSkpIHtcbiAgICAgICAgc2VyaWVzLnB1c2goWyB4LCB5LCBbIHBvaW50WzBdLCBwb2ludFsyXSBdIF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VyaWVzLnB1c2goWyB4LCB5LCBbIHksIHkgXSBdKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2VyaWVzLnB1c2goWyB4LCBudWxsLCBbIG51bGwsIG51bGwgXSBdKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNlcmllcztcbn07XG5cbi8qKiBAaW5oZXJpdERvYyAqL1xuQ3VzdG9tQmFyc0hhbmRsZXIucHJvdG90eXBlLnJvbGxpbmdBdmVyYWdlID1cbiAgICBmdW5jdGlvbihvcmlnaW5hbERhdGEsIHJvbGxQZXJpb2QsIG9wdGlvbnMsIGkpIHtcbiAgcm9sbFBlcmlvZCA9IE1hdGgubWluKHJvbGxQZXJpb2QsIG9yaWdpbmFsRGF0YS5sZW5ndGgpO1xuICB2YXIgcm9sbGluZ0RhdGEgPSBbXTtcbiAgdmFyIHksIGxvdywgaGlnaCwgbWlkLGNvdW50LCBpLCBleHRyZW1lcztcblxuICBsb3cgPSAwO1xuICBtaWQgPSAwO1xuICBoaWdoID0gMDtcbiAgY291bnQgPSAwO1xuICBmb3IgKGkgPSAwOyBpIDwgb3JpZ2luYWxEYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgeSA9IG9yaWdpbmFsRGF0YVtpXVsxXTtcbiAgICBleHRyZW1lcyA9IG9yaWdpbmFsRGF0YVtpXVsyXTtcbiAgICByb2xsaW5nRGF0YVtpXSA9IG9yaWdpbmFsRGF0YVtpXTtcblxuICAgIGlmICh5ICE9PSBudWxsICYmICFpc05hTih5KSkge1xuICAgICAgbG93ICs9IGV4dHJlbWVzWzBdO1xuICAgICAgbWlkICs9IHk7XG4gICAgICBoaWdoICs9IGV4dHJlbWVzWzFdO1xuICAgICAgY291bnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKGkgLSByb2xsUGVyaW9kID49IDApIHtcbiAgICAgIHZhciBwcmV2ID0gb3JpZ2luYWxEYXRhW2kgLSByb2xsUGVyaW9kXTtcbiAgICAgIGlmIChwcmV2WzFdICE9PSBudWxsICYmICFpc05hTihwcmV2WzFdKSkge1xuICAgICAgICBsb3cgLT0gcHJldlsyXVswXTtcbiAgICAgICAgbWlkIC09IHByZXZbMV07XG4gICAgICAgIGhpZ2ggLT0gcHJldlsyXVsxXTtcbiAgICAgICAgY291bnQgLT0gMTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNvdW50KSB7XG4gICAgICByb2xsaW5nRGF0YVtpXSA9IFtcbiAgICAgICAgICBvcmlnaW5hbERhdGFbaV1bMF0sXG4gICAgICAgICAgMS4wICogbWlkIC8gY291bnQsXG4gICAgICAgICAgWyAxLjAgKiBsb3cgLyBjb3VudCxcbiAgICAgICAgICAgIDEuMCAqIGhpZ2ggLyBjb3VudCBdIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvbGxpbmdEYXRhW2ldID0gWyBvcmlnaW5hbERhdGFbaV1bMF0sIG51bGwsIFsgbnVsbCwgbnVsbCBdIF07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJvbGxpbmdEYXRhO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tQmFyc0hhbmRsZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7O0FBRVo7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUFBQSxNQUFBLENBQUFDLGNBQUEsQ0FBQUMsT0FBQTtFQUFBQyxLQUFBO0FBQUE7QUFBQUQsT0FBQTtBQUVBLElBQUFFLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUFpQyxTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLGdCQUFBQSxDQUFBO0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSUUsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBQSxFQUFjLENBQ25DLENBQUM7QUFFREEsaUJBQWlC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N0JtQixXQUFXLENBQUNuQixDQUFDLENBQUMsR0FBR2UsWUFBWSxDQUFDZixDQUFDLENBQUM7SUFFaEMsSUFBSUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDUSxLQUFLLENBQUNSLENBQUMsQ0FBQyxFQUFFO01BQzNCZ0IsR0FBRyxJQUFJSSxRQUFRLENBQUMsQ0FBQyxDQUFDO01BQ2xCRixHQUFHLElBQUlsQixDQUFDO01BQ1JpQixJQUFJLElBQUlHLFFBQVEsQ0FBQyxDQUFDLENBQUM7TUFDbkJELEtBQUssSUFBSSxDQUFDO0lBQ1o7SUFDQSxJQUFJdkIsQ0FBQyxHQUFHZ0IsVUFBVSxJQUFJLENBQUMsRUFBRTtNQUN2QixJQUFJUyxJQUFJLEdBQUdWLFlBQVksQ0FBQ2YsQ0FBQyxHQUFHZ0IsVUFBVSxDQUFDO01BQ3ZDLElBQUlTLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQ2IsS0FBSyxDQUFDYSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUN2Q0wsR0FBRyxJQUFJSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pCSCxHQUFHLElBQUlHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDZEosSUFBSSxJQUFJSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCRixLQUFLLElBQUksQ0FBQztNQUNaO0lBQ0Y7SUFDQSxJQUFJQSxLQUFLLEVBQUU7TUFDVEosV0FBVyxDQUFDbkIsQ0FBQyxDQUFDLEdBQUcsQ0FDYmUsWUFBWSxDQUFDZixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbEIsR0FBRyxHQUFHc0IsR0FBRyxHQUFHQyxLQUFLLEVBQ2pCLENBQUUsR0FBRyxHQUFHSCxHQUFHLEdBQUdHLEtBQUssRUFDakIsR0FBRyxHQUFHRixJQUFJLEdBQUdFLEtBQUssQ0FBRSxDQUFFO0lBQzlCLENBQUMsTUFBTTtNQUNMSixXQUFXLENBQUNuQixDQUFDLENBQUMsR0FBRyxDQUFFZSxZQUFZLENBQUNmLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFFLElBQUksRUFBRSxJQUFJLENBQUUsQ0FBRTtJQUMvRDtFQUNGO0VBRUEsT0FBT21CLFdBQVc7QUFDcEIsQ0FBQztBQUFDLElBQUFPLFFBQUEsR0FBQXRDLE9BQUEsY0FFYU8saUJBQWlCO0FBQUFnQyxNQUFBLENBQUF2QyxPQUFBLEdBQUFBLE9BQUEsQ0FBQXdDLE9BQUEiLCJpZ25vcmVMaXN0IjpbXX0=