UNPKG

@netdata/charts

Version:

Netdata frontend SDK and chart utilities

31 lines 1.15 kB
export default (function (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; }; });