diff --git a/Front-End/src/app/[locale]/admin/structure/SchoolClassManagement/page.js b/Front-End/src/app/[locale]/admin/structure/SchoolClassManagement/page.js index 7d1f4d1..1c3d26a 100644 --- a/Front-End/src/app/[locale]/admin/structure/SchoolClassManagement/page.js +++ b/Front-End/src/app/[locale]/admin/structure/SchoolClassManagement/page.js @@ -1,7 +1,7 @@ 'use client'; import React, { useState, useEffect } from 'react'; -import { Plus, Users, Layers } from 'lucide-react'; +import { Plus, Users, Layers, CheckCircle } from 'lucide-react'; import Table from '@/components/Table'; import MultiSelect from '@/components/MultiSelect'; import InputText from '@/components/InputText'; @@ -27,9 +27,31 @@ export default function Page() { }); const [popupVisible, setPopupVisible] = useState(false); const [popupMessage, setPopupMessage] = useState(''); + const [selectedLevels, setSelectedLevels] = useState([]); // Par défaut, tous les niveaux sont sélectionnés + const [filteredStudents, setFilteredStudents] = useState([]); + + useEffect(() => { + // Initialiser les niveaux sélectionnés avec tous les niveaux disponibles + if (classe?.levels?.length > 0) { + const initialLevels = getNiveauxLabels(classe.levels); + setSelectedLevels(initialLevels); + } + }, [classe]); + + useEffect(() => { + // Filtrer les élèves en fonction des niveaux sélectionnés + if (selectedLevels.length > 0) { + const filtered = classe.students.filter((student) => + selectedLevels.includes(getNiveauLabel(student.level)) + ); + setFilteredStudents(filtered); + } else { + setFilteredStudents([]); // Aucun élève si aucun niveau n'est sélectionné + } + }, [selectedLevels, classe]); const handleCreateGroup = () => { - if (!newGroup.name || !newGroup.level || newGroup.students.length === 0) { + if (!newGroup.name || !newGroup.level || !newGroup.students.length) { setPopupMessage( 'Tous les champs doivent être remplis pour créer un groupe.' ); @@ -42,6 +64,15 @@ export default function Page() { setNewGroup({ name: '', level: null, students: [] }); }; + const handleLevelClick = (label) => { + setSelectedLevels( + (prev) => + prev.includes(label) + ? prev.filter((level) => level !== label) // Retirer le niveau si déjà sélectionné + : [...prev, label] // Ajouter le niveau si non sélectionné + ); + }; + const requestErrorHandler = (err) => { logger.error('Error fetching data:', err); }; @@ -51,6 +82,7 @@ export default function Page() { .then((classeData) => { logger.debug('Classes récupérées :', classeData); setClasse(classeData); + setFilteredStudents(classeData.students); }) .catch(requestErrorHandler); }, []); @@ -59,43 +91,62 @@ export default function Page() {
+ Filtrer les élèves par niveau +
+Liste des enseignants
+