import React from 'react'; import { formatTimeOrDate } from 'App/date'; import cn from 'classnames'; import { ArrowUp, ArrowDown } from 'lucide-react'; interface PayloadItem { hide?: boolean; name: string; value: number; prevValue?: number; } interface Props { active: boolean; payload: PayloadItem[]; label: string; } function CustomTooltip({ active, payload, label }: Props) { if (!active || !payload?.length) return null; const shownPayloads: PayloadItem[] = payload.filter((p) => !p.hide); const currentSeries: PayloadItem[] = []; const previousSeriesMap: Record = {}; shownPayloads.forEach((item) => { if (item.name.startsWith('Previous ')) { const originalName = item.name.replace('Previous ', ''); previousSeriesMap[originalName] = item.value; } else { currentSeries.push(item); } }); const transformedArray = currentSeries.map((item) => { const prevValue = previousSeriesMap[item.name] || null; return { ...item, prevValue, }; }); const isHigher = (item: { value: number; prevValue: number }) => { return item.prevValue !== null && item.prevValue < item.value; }; return (
{transformedArray.map((p, index) => (
{index + 1}
{p.name}
{label}, {formatTimeOrDate(p.payload.timestamp)}
{p.value}
{p.prevValue !== null ? ( ) : null}
))}
); } export function CompareTag({ isHigher, prevValue, }: { isHigher: boolean; prevValue: number | string; }) { return (
{!isHigher ? : }
{prevValue}
); } export default CustomTooltip;