mirror of
https://github.com/bitcoinresearchkit/brk.git
synced 2026-06-10 06:53:33 -07:00
39 lines
1.1 KiB
JavaScript
39 lines
1.1 KiB
JavaScript
import { numberToShortUSFormat } from "../../../scripts/utils/format.js";
|
|
|
|
/**
|
|
* @param {Object} [args]
|
|
* @param {string} [args.valueLabel]
|
|
* @param {(value: number) => string} [args.formatValue]
|
|
* @returns {HeatmapTooltipFn}
|
|
*/
|
|
export function defaultTooltip({
|
|
valueLabel = "Value",
|
|
formatValue = formatNumber,
|
|
} = {}) {
|
|
return ({ option, grid, col, row }) => {
|
|
const dateRange = grid.getDateIndexRange(col);
|
|
const yRange = grid.getYRange(row);
|
|
const value = grid.getValue(col, row);
|
|
const yLabel = option.axis?.y?.label ?? "y";
|
|
const formatY = option.axis?.y?.format ?? formatNumber;
|
|
|
|
const date = grid.dates[dateRange.end] ?? grid.dates[dateRange.start] ?? "";
|
|
|
|
return [
|
|
date,
|
|
`${capitalize(yLabel)}: ${formatY(yRange.start)} to ${formatY(yRange.end)}`,
|
|
`${valueLabel}: ${formatValue(value)}`,
|
|
].join("\n");
|
|
};
|
|
}
|
|
|
|
/** @param {number} value */
|
|
function formatNumber(value) {
|
|
return numberToShortUSFormat(value);
|
|
}
|
|
|
|
/** @param {string} value */
|
|
function capitalize(value) {
|
|
return value ? value[0].toUpperCase() + value.slice(1) : value;
|
|
}
|