Files
meeting-app/src/components/graph/PieChart.tsx
T
2023-05-19 17:36:29 +02:00

55 lines
1.3 KiB
TypeScript

import React, { useEffect, useState } from 'react';
import { Pie } from 'react-chartjs-2';
const PieChart = () => {
const [userData, setUserData] = useState([]);
useEffect(() => {
// Fonction pour récupérer les données des utilisateurs depuis le backend
const fetchUserData = async () => {
try {
const response = await fetch('/api/users');
const data = await response.json();
setUserData(data);
} catch (error) {
console.error('Failed to fetch user data:', error);
}
};
fetchUserData();
}, []);
// Compter le nombre de chaque genre
const countGenders = () => {
const genders = {
MALE: 0,
FEMALE: 0,
OTHER: 0,
UNKNOWN: 0,
};
userData.forEach((user) => {
if (user.gender in genders) {
genders[user.gender]++;
}
});
return Object.values(genders);
};
// Préparer les données pour le chart
const data = {
labels: ['MALE', 'FEMALE', 'OTHER', 'UNKNOWN'],
datasets: [
{
data: countGenders(),
backgroundColor: ['#FF6384', '#36A2EB', '#FFCE56', '#C0C0C0'],
hoverBackgroundColor: ['#FF6384', '#36A2EB', '#FFCE56', '#C0C0C0'],
},
],
};
return <Pie data={data} />;
};
export default PieChart;