@netdata/charts
Version:
Netdata frontend SDK and chart utilities
64 lines (63 loc) • 2.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _dygraphs = _interopRequireDefault(require("dygraphs"));
var _dygraphUtils = require("dygraphs/src/dygraph-utils");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
var _default = exports["default"] = function _default(chartUI) {
var startX;
var endX;
var mousedown = function mousedown(event, g, context) {
chartUI.sdk.trigger("highlightStart", chartUI.chart);
context.initializeMouseDown(event, g, context);
_dygraphs["default"].startZoom(event, g, context);
startX = context.dragStartX;
endX = -1;
chartUI.on("mousemove", mousemove).on("mouseup", _mouseup);
};
var mousemove = function mousemove(event, g, context) {
if (!context.isZooming) return;
var ctx = g.canvas_ctx_,
canvas = g.canvas_;
var area = g.getArea();
var rect = canvas.getBoundingClientRect();
var areaRect = {
left: rect.left + area.x,
top: rect.top + area.y,
width: area.w,
height: area.h
};
if (event.pageX < areaRect.left || event.pageX > areaRect.left + areaRect.width) return;
context.zoomMoved = true;
context.dragEndX = (0, _dygraphUtils.dragGetX_)(event, context);
var dragStartX = context.dragStartX,
dragEndX = context.dragEndX;
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "rgba(128,128,128,0.3)";
ctx.fillRect(Math.min(dragStartX, dragEndX), area.y, Math.abs(dragEndX - dragStartX), area.h);
context.prevEndX = dragEndX;
endX = dragEndX;
};
var getRange = function getRange(g) {
if (endX === -1 || Math.abs(startX - endX) < 5) return null;
var after = Math.round(g.toDataXCoord(startX) / 1000);
var before = Math.round(g.toDataXCoord(endX) / 1000);
return [after, before].sort(function (a, b) {
return a - b;
});
};
var _mouseup = function mouseup(event, g, context) {
if (context.isZooming) {
g.clearZoomRect_();
context.destroy();
var range = getRange(g);
chartUI.sdk.trigger("highlightEnd", chartUI.chart, range);
chartUI.chart.trigger("highlightEnd", range);
}
chartUI.off("mousemove", mousemove);
chartUI.off("mouseup", _mouseup);
};
return chartUI.on("mousedown", mousedown);
};