Feat: Calcul de temps de jeu total pour les lignes

This commit is contained in:
Amaël Kesteman
2026-01-08 08:58:26 +01:00
parent 7c6ee6b65f
commit 0a5d7bccd5
4 changed files with 44 additions and 10 deletions

View File

@@ -106,6 +106,7 @@ export function getUserTest():User{
s1.name = "Entrainement Frisbee"
s1.isRecurrent = true;
s1.ligne = [ligne1];
s1.duree= 90;
var date2 = new Date();
date2.setDate(date2.getDate() + 2);
s2.creneau = date2;
@@ -113,11 +114,13 @@ export function getUserTest():User{
s2.isRecurrent = false;
s2.name = "entraintement 2"
s2.ligne = [ligne2];
s2.duree= 120;
s3.creneau = date2;
s3.id = 3;
s3.isRecurrent = false;
s3.name = "entraintement 3"
s3.ligne = [ligne3];
s3.ligne = [ligne3, ligne1];
s3.duree= 120;

View File

@@ -1,10 +1,12 @@
import { Athlete, Activite, Coach, Session, Ligne } from "../classes";
import {calculTempsDeJeuParLigne} from "../utils/ligneUtils";
type AthleteListProps = { athletes: Athlete[] };
type ActiviteListProps = { activites: Activite[] };
type CoachListProps = { coachs: Coach[] };
type SessionListProps = { sessions: Session[]};
type LigneListProps = { lignes: Ligne[]};
type LigneListProps = { lignes: Ligne[], tempsDeJeuParLigne: Map<number, number> };
function AthleteList({ athletes }: AthleteListProps) {
return (
@@ -81,7 +83,7 @@ function SessionList({ sessions }: SessionListProps) {
);
}
function LigneList({ lignes }: LigneListProps) {
function LigneList({ lignes, tempsDeJeuParLigne }: LigneListProps) {
return (
<ul className="LigneList">
{lignes.map((lignes) => (
@@ -102,7 +104,8 @@ function LigneList({ lignes }: LigneListProps) {
</div>
</div>
<div>
<strong>Temps de jeu: {lignes.tempsDeJeu}</strong>
<strong>Temps de jeu total :</strong>{" "}
{tempsDeJeuParLigne.get(lignes.id) ?? 0} min
</div>
</li>
))}

View File

@@ -1,8 +1,10 @@
import { useState } from "react";
import { useLocalData } from "../context/useLocalData";
import { AthleteList, ActiviteList, CoachList, SessionList, LigneList} from "./ressourceList";
import { Activite, Athlete, Coach , Session, Ligne } from "../classes";
import { useState } from "react";
import { useLocalData } from "../context/useLocalData";
import { AthleteList, ActiviteList, CoachList, SessionList, LigneList} from "./ressourceList";
import { Activite, Athlete, Coach , Session, Ligne } from "../classes";
import {calculTempsDeJeuParLigne} from "../utils/ligneUtils";
import { keyboard } from "@testing-library/user-event/dist/keyboard";
import { unescapeLeadingUnderscores } from "typescript";
export type keyWord = "athletes" | "activites" | "coachs" | "sessions"| "lignes";
@@ -11,6 +13,7 @@ import { keyboard } from "@testing-library/user-event/dist/keyboard";
const { user } = useLocalData();
const [value,setValue] = useState<keyWord>("athletes");
console.log("Rôle utilisateur:", user.role);
console.log("name", user.nom);
if (user.role === "Athlete") return null;
@@ -52,7 +55,16 @@ import { keyboard } from "@testing-library/user-event/dist/keyboard";
}
});
const allLignes: Ligne[] = Array.from(ligneMap.values());
const allLignes: Ligne[] = Array.from(ligneMap.values());
// Calculer le temps de jeu pour chaque ligne
const tempsDeJeuParLigne: Map<number, number> = new Map();
allLignes.forEach(ligne => {
const tempsTotal = calculTempsDeJeuParLigne(allSessions, ligne);
tempsDeJeuParLigne.set(ligne.id, tempsTotal);
ligne.tempsDeJeu = tempsTotal;
});
@@ -105,7 +117,7 @@ import { keyboard } from "@testing-library/user-event/dist/keyboard";
{value==="lignes" && (
<div className="edt_lignes_panel">
<h3>Liste des lignes</h3>
<LigneList lignes={allLignes} />
<LigneList lignes={allLignes} tempsDeJeuParLigne={tempsDeJeuParLigne}/>
</div>
)}

View File

@@ -0,0 +1,16 @@
import {Ligne, Session} from '../classes';
//Temps de jeu cumulé par ligne
export function calculTempsDeJeuParLigne(sessions: Session[], ligne : Ligne): number {
let tempsDeJeuTotal = 0;
sessions.forEach(session => {
// Vérifier si la ligne est présente dans la session
if (session.ligne && session.ligne.some(l => l.id === ligne.id)) {
tempsDeJeuTotal += session.duree;
}
});
return tempsDeJeuTotal;
}