mirror of
https://github.com/LucasVbr/meeting-app.git
synced 2026-05-13 17:21:53 +00:00
55 lines
1.3 KiB
TypeScript
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; |