// src/components/SentimentPieChart.tsx import React from 'react'; import { PieChart, Pie, Cell, Tooltip, ResponsiveContainer, Legend } from 'recharts'; import { type ChartConfig, ChartContainer, ChartTooltipContent } from '@/components/ui/chart'; // Sesuaikan path jika perlu interface SentimentPieChartProps { positive: number; neutral: number; negative: number; } const chartConfig = { positive: { label: 'Positif', color: 'hsl(var(--chart-green))', // Anda perlu definisikan warna ini di CSS Anda }, neutral: { label: 'Netral', color: 'hsl(var(--chart-gray))', // Anda perlu definisikan warna ini di CSS Anda }, negative: { label: 'Negatif', color: 'hsl(var(--chart-red))', // Anda perlu definisikan warna ini di CSS Anda }, } satisfies ChartConfig; const SentimentPieChart: React.FC = ({ positive, neutral, negative }) => { const data = [ { name: 'Positif', value: positive, fill: chartConfig.positive.color }, { name: 'Negatif', value: negative, fill: chartConfig.negative.color }, { name: 'Netral', value: neutral, fill: chartConfig.neutral.color }, ].filter((item) => item.value > 0); // Hanya tampilkan slice jika nilainya > 0 if (data.length === 0 && positive === 0 && neutral === 0 && negative === 0) { return (
Belum ada data sentimen untuk ditampilkan.
); } // Jika semua value 0 tapi ada histori (misal dari API defaultnya 0 semua) // Atau jika total curhat > 0 tapi semua sentimen 0 (jarang terjadi tapi mungkin) // Anda bisa tambahkan penanganan khusus jika ingin, misal placeholder chart kosong. // Untuk sekarang, jika semua value 0, data akan kosong dan chart tidak tampil. return ( } /> {data.map((entry, index) => ( ))} {/* Anda bisa menambahkan Legend jika diinginkan { return (
    {payload?.map((entry, index) => (
  • {String(entry.value)}: {entry.payload?.value}%
  • ))}
) }} /> */}
); }; export default SentimentPieChart;