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; activeKey?: string; } function CustomTooltip(props: Props) { const { active, payload, label, activeKey } = 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; }; const getPercentDelta = (val, prevVal) => { return (((val - prevVal) / prevVal) * 100).toFixed(2); }; return (
{transformedArray.map((p, index) => (
{index + 1}
{p.name}
{label}, {formatTimeOrDate(p.payload.timestamp)}
{p.value}
{p.prevValue ? ( ) : null}
))}
); } export function CompareTag({ isHigher, absDelta, delta, }: { isHigher: boolean; absDelta?: number | string; delta?: string; }) { return (
{!isHigher ? : }
{absDelta}
({delta}%)
); } export default CustomTooltip;