Feat: Ajout des types de sessions en map

This commit is contained in:
Amaël Kesteman
2026-01-08 12:04:05 +01:00
parent 1eef3c4944
commit 40c9d091b8
3 changed files with 19 additions and 14 deletions

View File

@@ -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<String,String>;
theme!: string;
data!: Map<string,string>;
duree!: number;
}

View File

@@ -72,6 +72,7 @@ function AthleteList({ athletes, sessions }: AthleteListProps) {
<div><strong>Nombre de sessions:</strong> {stats.nbSessions}</div>
<div><strong>Sessions/semaine:</strong> {stats.nbSessionsPerWeek.toFixed(2)}</div>
<div><strong>Alerte:</strong> {alerte}</div>
<div><strong>Distribuion des activités:</strong> {stats.distributions}</div>
</li>
);
})}

View File

@@ -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<string, number>; //le nom de l'activité et son nombre
distributions: Map<String, number>; //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;