UNPKG

dygraphs

Version:

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

98 lines (93 loc) 11.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 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=