@netdata/charts
Version:
Netdata frontend SDK and chart utilities
56 lines (55 loc) • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _utilities = require("./utilities");
var _default = exports["default"] = function _default(el, columns, total, _ref) {
var onMouseenter = _ref.onMouseenter,
onMouseout = _ref.onMouseout;
var _ref2 = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {},
cellSize = _ref2.cellSize,
cellPadding = _ref2.cellPadding;
var hoveredIndex = -1;
var getEvent = function getEvent(index) {
var rect = el.getBoundingClientRect();
var offsetX = (0, _utilities.getXPosition)(columns, index, cellSize);
var offsetY = (0, _utilities.getYPosition)(columns, index, cellSize);
var left = rect.left + offsetX;
var top = rect.top + offsetY;
var cellBoxSize = (0, _utilities.getCellBoxSize)(cellSize, cellPadding);
return {
index: index,
left: left,
top: top,
right: left + cellBoxSize,
bottom: top + cellBoxSize,
width: cellBoxSize,
height: cellBoxSize,
offsetX: offsetX,
offsetY: offsetY
};
};
var mouseout = function mouseout() {
onMouseout(getEvent(hoveredIndex));
hoveredIndex = -1;
};
var mousemove = function mousemove(e) {
var offsetX = e.offsetX,
offsetY = e.offsetY;
var x = (0, _utilities.getOffsetPosition)(offsetX, cellSize);
var y = (0, _utilities.getOffsetPosition)(offsetY, cellSize);
var nextHoveredIndex = y * columns + x;
if (nextHoveredIndex === hoveredIndex) return;
if (hoveredIndex !== -1) mouseout();
if (nextHoveredIndex >= total) return;
onMouseenter(getEvent(nextHoveredIndex));
hoveredIndex = nextHoveredIndex;
};
el.addEventListener("mousemove", mousemove);
el.addEventListener("mouseout", mouseout);
return function () {
el.removeEventListener("mousemove", mousemove);
el.removeEventListener("mouseout", mouseout);
};
};