@future-grid/fgp-graph
Version:
fgp-graph is a chart lib based on Dygraphs
133 lines (105 loc) • 13.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var utils =
/*#__PURE__*/
function () {
function utils() {
_classCallCheck(this, utils);
}
_createClass(utils, null, [{
key: "getContextPixelRatio",
value: function getContextPixelRatio(context) {
try {
var devicePixelRatio = window.devicePixelRatio;
var backingStoreRatio = context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1;
if (devicePixelRatio !== undefined) {
return devicePixelRatio / backingStoreRatio;
} else {
// At least devicePixelRatio must be defined for this ratio to make sense.
// We default backingStoreRatio to 1: this does not exist on some browsers
// (i.e. desktop Chrome).
return 1;
}
} catch (e) {
return 1;
}
}
}]);
return utils;
}();
exports["default"] = utils;
_defineProperty(utils, "getContext", function (canvas) {
return canvas.getContext("2d");
});
_defineProperty(utils, "createCanvas", function () {
return document.createElement('canvas');
});
_defineProperty(utils, "findPos", function (obj) {
var p = obj.getBoundingClientRect(),
w = window,
d = document.documentElement;
return {
x: p.left + (w.pageXOffset || d.scrollLeft),
y: p.top + (w.pageYOffset || d.scrollTop)
};
});
_defineProperty(utils, "cancelEvent", function (e) {
e = e ? e : window.event;
if (e.stopPropagation) {
e.stopPropagation();
}
if (e.preventDefault) {
e.preventDefault();
}
e.cancelBubble = true;
e.cancel = true;
e.returnValue = false;
return false;
});
_defineProperty(utils, "addEvent", function (element, type, fn) {
element.addEventListener(type, fn, false);
});
_defineProperty(utils, "removeEvent", function (elem, type, fn) {
elem.removeEventListener(type, fn, false);
});
_defineProperty(utils, "pageX", function (e) {
return !e.pageX || e.pageX < 0 ? 0 : e.pageX;
});
_defineProperty(utils, "pageY", function (e) {
return !e.pageY || e.pageY < 0 ? 0 : e.pageX;
});
_defineProperty(utils, "dragGetX", function (e, context) {
return utils.pageX(e) - context.px;
});
_defineProperty(utils, "dragGetY", function (e, context) {
return utils.pageY(e) - context.px;
});
_defineProperty(utils, "log10", function (x) {
return Math.log(x);
});
_defineProperty(utils, "LOG_SCALE", 10);
_defineProperty(utils, "LN_TEN", Math.log(utils.LOG_SCALE));
_defineProperty(utils, "findBestCollection", function (collection, dateWindow) {
// find if there is someone locked.
var chosenCollection = collection.find(function (value, index, obj) {
return !!value.locked;
});
if (chosenCollection) {
return chosenCollection;
} else {
chosenCollection = collection.find(function (value, index, obj) {
if (value.threshold) {
return dateWindow[1] - (dateWindow[0] - value.interval) <= value.threshold.max;
}
});
return chosenCollection;
}
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHRyYXMvdXRpbHMudHMiXSwibmFtZXMiOlsidXRpbHMiLCJjb250ZXh0IiwiZGV2aWNlUGl4ZWxSYXRpbyIsIndpbmRvdyIsImJhY2tpbmdTdG9yZVJhdGlvIiwid2Via2l0QmFja2luZ1N0b3JlUGl4ZWxSYXRpbyIsIm1vekJhY2tpbmdTdG9yZVBpeGVsUmF0aW8iLCJtc0JhY2tpbmdTdG9yZVBpeGVsUmF0aW8iLCJvQmFja2luZ1N0b3JlUGl4ZWxSYXRpbyIsImJhY2tpbmdTdG9yZVBpeGVsUmF0aW8iLCJ1bmRlZmluZWQiLCJlIiwiY2FudmFzIiwiZ2V0Q29udGV4dCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsIm9iaiIsInAiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ3IiwiZCIsImRvY3VtZW50RWxlbWVudCIsIngiLCJsZWZ0IiwicGFnZVhPZmZzZXQiLCJzY3JvbGxMZWZ0IiwieSIsInRvcCIsInBhZ2VZT2Zmc2V0Iiwic2Nyb2xsVG9wIiwiZXZlbnQiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImNhbmNlbEJ1YmJsZSIsImNhbmNlbCIsInJldHVyblZhbHVlIiwiZWxlbWVudCIsInR5cGUiLCJmbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJlbGVtIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInBhZ2VYIiwicGFnZVkiLCJweCIsIk1hdGgiLCJsb2ciLCJMT0dfU0NBTEUiLCJjb2xsZWN0aW9uIiwiZGF0ZVdpbmRvdyIsImNob3NlbkNvbGxlY3Rpb24iLCJmaW5kIiwidmFsdWUiLCJpbmRleCIsImxvY2tlZCIsInRocmVzaG9sZCIsImludGVydmFsIiwibWF4Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7SUFFcUJBLEs7Ozs7Ozs7Ozt5Q0FxQldDLE8sRUFBc0I7QUFDOUMsVUFBSTtBQUNBLFlBQUlDLGdCQUFnQixHQUFHQyxNQUFNLENBQUNELGdCQUE5QjtBQUNBLFlBQUlFLGlCQUFpQixH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LENBQWdCRSxHQUE5RTtBQUNIO0FBQ0osS0FKa0IsQ0FBbkI7QUFLQSxXQUFPUCxnQkFBUDtBQUNIO0FBRUosQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7R3JhcGhDb2xsZWN0aW9ufSBmcm9tIFwiLi4vbWV0YWRhdGEvY29uZmlndXJhdGlvbnNcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgdXRpbHMge1xuXG4gICAgc3RhdGljIGdldENvbnRleHQgPSAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgICB9O1xuXG4gICAgc3RhdGljIGNyZWF0ZUNhbnZhcyA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIH07XG5cbiAgICBzdGF0aWMgZmluZFBvcyA9IChvYmo6IEhUTUxFbGVtZW50KTogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9ID0+IHtcbiAgICAgICAgY29uc3QgcCA9IG9iai5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgICAgIHcgPSB3aW5kb3csXG4gICAgICAgICAgICBkID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBwLmxlZnQgKyAody5wYWdlWE9mZnNldCB8fCBkLnNjcm9sbExlZnQpLFxuICAgICAgICAgICAgeTogcC50b3AgKyAody5wYWdlWU9mZnNldCB8fCBkLnNjcm9sbFRvcClcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgc3RhdGljIGdldENvbnRleHRQaXhlbFJhdGlvKGNvbnRleHQ6IGFueSk6IG51bWJlciB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgZGV2aWNlUGl4ZWxSYXRpbyA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO1xuICAgICAgICAgICAgbGV0IGJhY2tpbmdTdG9yZVJhdGlvID0gY29udGV4dC53ZWJraXRCYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8XG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3pCYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8XG4gICAgICAgICAgICAgICAgY29udGV4dC5tc0JhY2tpbmdTdG9yZVBpeGVsUmF0aW8gfHxcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9CYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8XG4gICAgICAgICAgICAgICAgY29udGV4dC5iYWNraW5nU3RvcmVQaXhlbFJhdGlvIHx8IDE7XG4gICAgICAgICAgICBpZiAoZGV2aWNlUGl4ZWxSYXRpbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRldmljZVBpeGVsUmF0aW8gLyBiYWNraW5nU3RvcmVSYXRpbztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gQXQgbGVhc3QgZGV2aWNlUGl4ZWxSYXRpbyBtdXN0IGJlIGRlZmluZWQgZm9yIHRoaXMgcmF0aW8gdG8gbWFrZSBzZW5zZS5cbiAgICAgICAgICAgICAgICAvLyBXZSBkZWZhdWx0IGJhY2tpbmdTdG9yZVJhdGlvIHRvIDE6IHRoaXMgZG9lcyBub3QgZXhpc3Qgb24gc29tZSBicm93c2Vyc1xuICAgICAgICAgICAgICAgIC8vIChpLmUuIGRlc2t0b3AgQ2hyb21lKS5cbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgc3RhdGljIGNhbmNlbEV2ZW50ID0gKGU6IGFueSkgPT4ge1xuICAgICAgICBlID0gZSA/IGUgOiB3aW5kb3cuZXZlbnQ7XG4gICAgICAgIGlmIChlLnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZS5wcmV2ZW50RGVmYXVsdCkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGUuY2FuY2VsQnViYmxlID0gdHJ1ZTtcbiAgICAgICAgZS5jYW5jZWwgPSB0cnVlO1xuICAgICAgICBlLnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuXG4gICAgc3RhdGljIGFkZEV2ZW50ID0gKGVsZW1lbnQ6IERvY3VtZW50LCB0eXBlOiBhbnksIGZuOiBhbnkpID0+IHtcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGZuLCBmYWxzZSk7XG4gICAgfTtcblxuICAgIHN0YXRpYyByZW1vdmVFdmVudCA9IChlbGVtOiBEb2N1bWVudCwgdHlwZTogYW55LCBmbjogYW55KSA9PiB7XG4gICAgICAgIGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBmbiwgZmFsc2UpO1xuICAgIH07XG5cbiAgICBzdGF0aWMgcGFnZVggPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICByZXR1cm4gKCFlLnBhZ2VYIHx8IGUucGFnZVggPCAwKSA/IDAgOiBlLnBhZ2VYO1xuICAgIH07XG5cbiAgICBzdGF0aWMgcGFnZVkgPSAoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICByZXR1cm4gKCFlLnBhZ2VZIHx8IGUucGFnZVkgPCAwKSA/IDAgOiBlLnBhZ2VYO1xuICAgIH07XG5cbiAgICBzdGF0aWMgZHJhZ0dldFggPSAoZTogTW91c2VFdmVudCwgY29udGV4dDogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB1dGlscy5wYWdlWChlKSAtIGNvbnRleHQucHg7XG4gICAgfTtcblxuICAgIHN0YXRpYyBkcmFnR2V0WSA9IChlOiBNb3VzZUV2ZW50LCBjb250ZXh0OiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHV0aWxzLnBhZ2VZKGUpIC0gY29udGV4dC5weDtcbiAgICB9O1xuXG4gICAgc3RhdGljIGxvZzEwID0gKHg6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4gTWF0aC5sb2coeCk7XG4gICAgfTtcblxuICAgIHN0YXRpYyBMT0dfU0NBTEUgPSAxMDtcblxuICAgIHN0YXRpYyBMTl9URU4gPSBNYXRoLmxvZyh1dGlscy5MT0dfU0NBTEUpO1xuXG4gICAgc3RhdGljIGZpbmRCZXN0Q29sbGVjdGlvbiA9IChjb2xsZWN0aW9uOiBHcmFwaENvbGxlY3Rpb25bXSwgZGF0ZVdpbmRvdzogW251bWJlciwgbnVtYmVyXSk6IEdyYXBoQ29sbGVjdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG5cbiAgICAgICAgLy8gZmluZCBpZiB0aGVyZSBpcyBzb21lb25lIGxvY2tlZC5cbiAgICAgICAgbGV0IGNob3NlbkNvbGxlY3Rpb24gPSBjb2xsZWN0aW9uLmZpbmQoKHZhbHVlOiBHcmFwaENvbGxlY3Rpb24sIGluZGV4OiBudW1iZXIsIG9iajogR3JhcGhDb2xsZWN0aW9uW10pID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhIXZhbHVlLmxvY2tlZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGNob3NlbkNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBjaG9zZW5Db2xsZWN0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hvc2VuQ29sbGVjdGlvbiA9IGNvbGxlY3Rpb24uZmluZCgodmFsdWU6IEdyYXBoQ29sbGVjdGlvbiwgaW5kZXg6IG51bWJlciwgb2JqOiBHcmFwaENvbGxlY3Rpb25bXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZS50aHJlc2hvbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChkYXRlV2luZG93WzFdIC0gKGRhdGVXaW5kb3dbMF0gLSB2YWx1ZS5pbnRlcnZhbCkpIDw9ICh2YWx1ZS50aHJlc2hvbGQubWF4KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBjaG9zZW5Db2xsZWN0aW9uO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG59Il19