Files
explore/ui/shared/chart/tooltip/ChartTooltipBackdrop.tsx
T
tom goriunovandGitHub 403bc9e882 Stats: give emphasis to incomplete data days (#2085)
* draw dotted line for incomplete data

* add title to tooltip

* refactor parts into separate components

* move utils

* refactor render logic of tooltip

* more refactoring

* fix issue in safari

* tweaks

* test

* make an approximation as a straight line.

* update screenshots

* fix the tooltip hiding behavior.

* add prop for disabling animation
2024-07-22 14:41:18 +02:00

47 lines
1.2 KiB
TypeScript

import { useToken } from '@chakra-ui/react';
import * as d3 from 'd3';
import React from 'react';
import { calculateContainerHeight } from './utils';
const ChartTooltipBackdrop = () => {
const bgColor = useToken('colors', 'blackAlpha.900');
return (
<rect
className="ChartTooltip__backdrop"
rx={ 12 }
ry={ 12 }
fill={ bgColor }
/>
);
};
export default React.memo(ChartTooltipBackdrop);
interface UseRenderBackdropParams {
seriesNum: number;
transitionDuration: number | null;
}
export function useRenderBackdrop(ref: React.RefObject<SVGGElement>, { seriesNum, transitionDuration }: UseRenderBackdropParams) {
return React.useCallback((width: number, isIncompleteData: boolean) => {
const height = calculateContainerHeight(seriesNum, isIncompleteData);
if (transitionDuration) {
d3.select(ref.current)
.select('.ChartTooltip__backdrop')
.transition()
.duration(transitionDuration)
.ease(d3.easeLinear)
.attr('width', width)
.attr('height', height);
} else {
d3.select(ref.current)
.select('.ChartTooltip__backdrop')
.attr('width', width)
.attr('height', height);
}
}, [ ref, seriesNum, transitionDuration ]);
}