@netdata/charts
Version:
Netdata frontend SDK and chart utilities
37 lines (36 loc) • 1.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _default = exports["default"] = function _default(chart) {
var cachedHoverTimestamp = -1;
var cachedHoverRow = -1;
chart.invalidateClosestRowCache = function () {
cachedHoverTimestamp = -1;
cachedHoverRow = -1;
};
var getClosestRowBinary = function getClosestRowBinary(timestamp) {
var _chart$getPayload = chart.getPayload(),
data = _chart$getPayload.data;
if (data.length === 0) return -1;
if (timestamp < data[0][0]) return 0;
if (timestamp > data[data.length - 1][0]) return data.length - 1;
var start = 0;
var end = data.length - 1;
var closest = 0;
while (start <= end) {
var mid = Math.floor((start + end) / 2);
if (Math.abs(data[mid][0] - timestamp) < Math.abs(data[closest][0] - timestamp)) closest = mid;
if (data[mid][0] === timestamp) return mid;
if (data[mid][0] < timestamp) start = mid + 1;else end = mid - 1;
}
return closest;
};
chart.getClosestRow = function (timestamp) {
if (cachedHoverTimestamp === timestamp) return cachedHoverRow;
cachedHoverTimestamp = timestamp;
cachedHoverRow = getClosestRowBinary(timestamp);
return cachedHoverRow;
};
};