feat(frontend): refonte mobile planning et ameliorations suivi pedagogique [#NEWTS-4]

Fonction PWA et ajout du responsive design

Planning mobile :
- Nouvelle vue DayView avec bandeau semaine scrollable, date picker natif et navigation integree
- ScheduleNavigation converti en drawer overlay sur mobile, sidebar fixe sur desktop
- Suppression double barre navigation mobile, controles deplaces dans DayView
- Date picker natif via label+input sur mobile

Suivi pedagogique :
- Refactorisation page grades avec composant Table partage
- Colonnes stats par periode, absences, actions (Fiche + Evaluer)
- Lien cliquable sur la classe vers SchoolClassManagement

feat(backend): ajout associated_class_id dans StudentByRFCreationSerializer [#NEWTS-4]

UI global :
- Remplacement fleches texte par icones Lucide ChevronDown/ChevronRight
- Pagination conditionnelle sur tous les tableaux plats
- Layout responsive mobile : cartes separees fond transparent
- Table.js : pagination optionnelle, wrapper md uniquement
This commit is contained in:
Luc SORIGNET
2026-03-16 12:25:37 +01:00
parent 7464b19de5
commit 4248a589c5
44 changed files with 1596 additions and 771 deletions

View File

@ -137,6 +137,12 @@ const TeachersSection = ({
const [removePopupVisible, setRemovePopupVisible] = useState(false);
const [removePopupMessage, setRemovePopupMessage] = useState('');
const [removePopupOnConfirm, setRemovePopupOnConfirm] = useState(() => {});
const ITEMS_PER_PAGE = 10;
const [currentPage, setCurrentPage] = useState(1);
useEffect(() => { setCurrentPage(1); }, [teachers]);
useEffect(() => { if (newTeacher) setCurrentPage(1); }, [newTeacher]);
const totalPages = Math.ceil(teachers.length / ITEMS_PER_PAGE);
const pagedTeachers = teachers.slice((currentPage - 1) * ITEMS_PER_PAGE, currentPage * ITEMS_PER_PAGE);
const { selectedEstablishmentId, profileRole } = useEstablishment();
@ -535,7 +541,7 @@ const TeachersSection = ({
onClick={handleAddTeacher}
/>
<Table
data={newTeacher ? [newTeacher, ...teachers] : teachers}
data={newTeacher ? [newTeacher, ...pagedTeachers] : pagedTeachers}
columns={columns}
renderCell={renderTeacherCell}
emptyMessage={
@ -545,6 +551,10 @@ const TeachersSection = ({
message="Veuillez procéder à la création d'un nouvel enseignant."
/>
}
itemsPerPage={ITEMS_PER_PAGE}
currentPage={currentPage}
totalPages={totalPages}
onPageChange={setCurrentPage}
/>
<Popup
isOpen={popupVisible}