"use client"; import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from "recharts"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import type { RouterOutputs } from "@calcom/trpc/react"; import { useInsightsBookingParameters } from "@calcom/web/modules/insights/hooks/useInsightsBookingParameters"; import { ChartCard } from "../ChartCard"; const COLOR = { AVERAGE: "#3b82f6", }; type AverageEventDurationData = RouterOutputs["viewer"]["insights"]["averageEventDuration"][number]; // Custom duration formatter that shows hours and minutes const formatDuration = (minutes: number) => { if (!minutes) return "0m"; const hours = Math.floor(minutes / 60); const remainingMinutes = minutes % 60; const remainingMinutesStr = remainingMinutes.toFixed(1); if (hours > 0 && remainingMinutes > 0) { return `${hours}h ${remainingMinutesStr}m`; } else if (hours > 0) { return `${hours}h`; } else { return `${remainingMinutesStr}m`; } }; // Custom Tooltip component const CustomTooltip = ({ active, payload, label, }: { active?: boolean; payload?: Array<{ value: number; dataKey: string; name: string; color: string; payload: AverageEventDurationData; }>; label?: string; }) => { if (!active || !payload?.length) { return null; } return (
{label}
{payload.map((entry, index: number) => ({entry.name}: {formatDuration(entry.value)}
))}{t("insights_no_data_found_for_filter")}