import { ChatContext } from '@/app/chat-context'; import { ChartData } from '@/types/chat'; import { Chart } from '@berryv/g2-react'; import { useContext, useMemo } from 'react'; export default function PieChart({ chart }: { key: string; chart: ChartData }) { const { mode } = useContext(ChatContext); // Transform raw data into pie chart format const pieData = useMemo(() => { if (!chart.values || !Array.isArray(chart.values)) { return []; } return chart.values.map(item => ({ name: item.name, value: Number(item.value) || 0, })); }, [chart.values]); if (!pieData.length) { return null; } // Calculate total for percentage const total = pieData.reduce((sum, item) => sum + item.value, 0); return (
{chart.chart_name}
{chart.chart_desc}
{ const percentage = ((value / total) * 100).toFixed(1); return `${percentage}%`; }, }, }, }, tooltip: { format: { value: (v: number) => `${v}`, }, }, }} />
); }