import type { MCPTopToolsResponse } from "@/lib/types/logs"; import { useMemo } from "react"; import { Bar, BarChart, CartesianGrid, Cell, ResponsiveContainer, Tooltip, XAxis, YAxis } from "recharts"; import { formatCost, getModelColor } from "../../utils/chartUtils"; import { ChartErrorBoundary } from "./chartErrorBoundary"; interface MCPTopToolsChartProps { data: MCPTopToolsResponse | null; } function CustomTooltip({ active, payload }: any) { if (!active || !payload || !payload.length) return null; const data = payload[0]?.payload; if (!data) return null; return (
{data.tool_name}
Count {data.count.toLocaleString()}
Cost {formatCost(data.cost)}
); } export function MCPTopToolsChart({ data }: MCPTopToolsChartProps) { const chartData = useMemo(() => { if (!data?.tools || data.tools.length === 0) { return []; } return data.tools.slice(0, 10); }, [data]); if (!data?.tools || chartData.length === 0) { return
No data available
; } return ( [tool_name, count, cost]))}> v.toLocaleString()} domain={[0, (dataMax: number) => Math.max(dataMax, 1)]} allowDataOverflow={false} /> } cursor={{ fill: "#8c8c8f", fillOpacity: 0.15 }} /> {chartData.map((_, index) => ( ))} ); }