From 40c9d091b8f356293c4d43cfa3e8782cdfd8c5a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ama=C3=ABl=20Kesteman?= Date: Thu, 8 Jan 2026 12:04:05 +0100 Subject: [PATCH] Feat: Ajout des types de sessions en map --- front_end/src/classes.tsx | 20 ++++++++++---------- front_end/src/components/ressourceList.tsx | 1 + front_end/src/utils/athleteUtils.tsx | 12 ++++++++---- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/front_end/src/classes.tsx b/front_end/src/classes.tsx index 011a8fc..9639d09 100644 --- a/front_end/src/classes.tsx +++ b/front_end/src/classes.tsx @@ -4,16 +4,16 @@ export type Role = "Admin" | "Athlete" | "Coach"; export class User{ id!: number; keycloakId!: String; - nom!: String; - prenom!:String; + nom!: string; + prenom!:string; sessions: Session[] = []; //nb: Admin liaison non symétrique /!\ - email!: String; + email!: string; role!: Role; } export class Ligne{ id!: number; - nom!: String; + nom!: string; composition!: Athlete[] //les joueurs compososant la ligne tempsDeJeu!: number; // en minutes } @@ -23,19 +23,19 @@ export class Admin extends User{ } export class Athlete extends User{ - nom!: String; + nom!: string; groupe!: Groupe; role!: Role; } export class Coach extends User{ - nom!: String; + nom!: string; role!: Role; } export class Session{ id!: number; - name!: String; + name!: string; activites: Activite[] = []; isRecurrent! : Boolean; creneau!: Date; @@ -48,10 +48,10 @@ export class Session{ export class Activite{ id!: number; - nom!: String; + nom!: string; session!: Session; - theme!: String; - data!: Map; + theme!: string; + data!: Map; duree!: number; } diff --git a/front_end/src/components/ressourceList.tsx b/front_end/src/components/ressourceList.tsx index 3788295..44bc5f1 100644 --- a/front_end/src/components/ressourceList.tsx +++ b/front_end/src/components/ressourceList.tsx @@ -72,6 +72,7 @@ function AthleteList({ athletes, sessions }: AthleteListProps) {
Nombre de sessions: {stats.nbSessions}
Sessions/semaine: {stats.nbSessionsPerWeek.toFixed(2)}
Alerte: {alerte}
+
Distribuion des activités: {stats.distributions}
); })} diff --git a/front_end/src/utils/athleteUtils.tsx b/front_end/src/utils/athleteUtils.tsx index 1a870cb..893bd68 100644 --- a/front_end/src/utils/athleteUtils.tsx +++ b/front_end/src/utils/athleteUtils.tsx @@ -1,10 +1,10 @@ -import { Athlete, Session } from '../classes'; +import { Athlete, Session , Activite} from '../classes'; export interface StatsAthlete { nbSessions: number; nbSessionsPerWeek: number; isAlerte: boolean; - distributions: Map; //le nom de l'activité et son nombre + distributions: Map; //le nom de l'activité et son nombre } export function niveauAlerte(stats: StatsAthlete, seuilCritique = 0, seuilMax = 0) { @@ -30,9 +30,13 @@ export function calculStatsAthlete(sessions: Session[], athlete: Athlete, debut: //incrementation (verifie si recurent ou non) const increment = session.isRecurrent ? nb_semaine : 1; nb_sessions += increment; + //distribution des activités + session.activites.forEach(activite => { + const currentCount = distributions.get(activite.nom) || 0; + distributions.set(activite.nom, currentCount + increment); + }); - } - ); + }); const nbSessionsPerWeek = nb_sessions / nb_semaine; const isAlerte = nbSessionsPerWeek > 8;