Change total mahasiswa

This commit is contained in:
Randa Firman Putra
2025-06-24 00:50:02 +07:00
parent fadca46dc1
commit eb7c884c41
19 changed files with 569 additions and 138 deletions

View File

@@ -11,7 +11,7 @@ const Chart = dynamic(() => import('react-apexcharts'), { ssr: false });
interface TingkatPrestasiData {
tahun_angkatan: number;
tingkat: string;
tingkat_prestasi: string;
tingkat_mahasiswa_prestasi: number;
}
@@ -52,6 +52,23 @@ export default function TingkatPrestasiPieChart({ selectedYear, selectedJenisPre
fetchData();
}, [selectedYear, selectedJenisPrestasi]);
// Process data for series
const processSeriesData = () => {
// Data sudah difilter dari API berdasarkan tahun angkatan dan jenis prestasi
// Langsung gunakan data yang diterima dari API
const tingkat = [...new Set(data.map(item => item.tingkat_prestasi))].sort();
const jumlahData = tingkat.map(t => {
const item = data.find(d => d.tingkat_prestasi === t);
return item ? item.tingkat_mahasiswa_prestasi : 0;
});
return {
series: jumlahData,
labels: tingkat
};
};
const { series, labels } = processSeriesData();
const chartOptions: ApexOptions = {
chart: {
type: 'pie',
@@ -69,7 +86,7 @@ export default function TingkatPrestasiPieChart({ selectedYear, selectedJenisPre
}
}
},
labels: [],
labels: labels,
colors: ['#3B82F6', '#10B981', '#F59E0B', '#EF4444', '#8B5CF6', '#EC4899', '#06B6D4'],
legend: {
position: 'bottom',
@@ -110,23 +127,6 @@ export default function TingkatPrestasiPieChart({ selectedYear, selectedJenisPre
}
};
// Process data for series
const processSeriesData = () => {
// Filter data sesuai tahun angkatan
const filtered = data.filter(item => String(item.tahun_angkatan) === String(selectedYear));
const tingkat = [...new Set(filtered.map(item => item.tingkat))].sort();
const jumlahData = tingkat.map(t => {
const item = filtered.find(d => d.tingkat === t);
return item ? item.tingkat_mahasiswa_prestasi : 0;
});
return {
series: jumlahData,
labels: tingkat
};
};
const { series, labels } = processSeriesData();
if (loading) {
return (
<Card className="bg-white dark:bg-slate-900 shadow-lg">
@@ -174,7 +174,7 @@ export default function TingkatPrestasiPieChart({ selectedYear, selectedJenisPre
<div className="h-[350px] w-full max-w-5xl mx-auto">
{typeof window !== 'undefined' && (
<Chart
options={{...chartOptions, labels}}
options={chartOptions}
series={series}
type="pie"
height="100%"