From 7c6ee6b65fdca932cf12c8c1c3568b49ec79777e Mon Sep 17 00:00:00 2001 From: trochas Date: Wed, 7 Jan 2026 18:31:25 +0100 Subject: [PATCH 1/2] clean ressourcePanel --- front_end/src/components/ressourcePanel.tsx | 73 ++++----------------- front_end/src/index.css | 12 +++- 2 files changed, 24 insertions(+), 61 deletions(-) diff --git a/front_end/src/components/ressourcePanel.tsx b/front_end/src/components/ressourcePanel.tsx index 57f8661..1b9c462 100644 --- a/front_end/src/components/ressourcePanel.tsx +++ b/front_end/src/components/ressourcePanel.tsx @@ -2,14 +2,14 @@ import { useLocalData } from "../context/useLocalData"; import { AthleteList, ActiviteList, CoachList, SessionList, LigneList} from "./ressourceList"; import { Activite, Athlete, Coach , Session, Ligne } from "../classes"; +import { keyboard } from "@testing-library/user-event/dist/keyboard"; + + + export type keyWord = "athletes" | "activites" | "coachs" | "sessions"| "lignes"; export default function RessourcePanel() { const { user } = useLocalData(); - const [showAthletes, setShowAthletes] = useState(false); - const [showActivites, setShowActivites] = useState(false); - const [showCoachs,setShowCoachs] = useState(false); - const [showSessions, setShowSessions] = useState(false); - const [showLignes, setShowLignes] = useState(false); + const [value,setValue] = useState("athletes"); console.log("Rôle utilisateur:", user.role); if (user.role === "Athlete") return null; @@ -54,48 +54,6 @@ const allLignes: Ligne[] = Array.from(ligneMap.values()); - function onAthletesClick(): void { - setShowAthletes(prev => !prev); - setShowActivites(false); - setShowCoachs(false); - setShowSessions(false); - setShowLignes(false); - - } - function onActivitiesClick(): void { - setShowActivites(prev => !prev); - setShowAthletes(false); - setShowCoachs(false); - setShowSessions(false); - setShowLignes(false); - - - } - function onCoachClick(): void { - setShowCoachs(prev => !prev); - setShowActivites(false); - setShowAthletes(false); - setShowSessions(false); - setShowLignes(false); - - } - - function onSessionClick(): void { - setShowSessions(prev => !prev); - setShowActivites(false); - setShowAthletes(false); - setShowCoachs(false); - setShowLignes(false); - - } - - function onLigneClick():void{ - setShowLignes(prev => !prev); - setShowAthletes(false); - setShowActivites(false); - setShowCoachs(false); - setShowSessions(false); - } return ( @@ -106,50 +64,45 @@ - {showAthletes && ( + {value==="athletes" && (

Liste des athlètes

)} - {showActivites && ( + {value==="activites" && (

Liste des activités

)} - {showCoachs && ( + {value==="coachs" && (

Liste des coachs

)} - {showSessions && ( + {value==="sessions" && (

Liste des sessions

)} - {showLignes && ( + {value==="lignes" && (

Liste des lignes

diff --git a/front_end/src/index.css b/front_end/src/index.css index 414bda6..a52953a 100644 --- a/front_end/src/index.css +++ b/front_end/src/index.css @@ -68,7 +68,17 @@ code { input{ background-color: var(--tint2); - color: var(--test); + color: var(--text); border-color: var(--tint5); border-radius: 8px; +} + +button{ + color: var(--text); + background-color: var(--tint3); +} + +select{ + color: var(--text); + background-color: var(--tint3); } \ No newline at end of file From 0a5d7bccd5568b016105cc3a89646e9262408fc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ama=C3=ABl=20Kesteman?= Date: Thu, 8 Jan 2026 08:58:26 +0100 Subject: [PATCH 2/2] Feat: Calcul de temps de jeu total pour les lignes --- front_end/src/classes.tsx | 5 ++++- front_end/src/components/ressourceList.tsx | 9 +++++--- front_end/src/components/ressourcePanel.tsx | 24 +++++++++++++++------ front_end/src/utils/ligneUtils.tsx | 16 ++++++++++++++ 4 files changed, 44 insertions(+), 10 deletions(-) create mode 100644 front_end/src/utils/ligneUtils.tsx diff --git a/front_end/src/classes.tsx b/front_end/src/classes.tsx index a22ad88..a7aa095 100644 --- a/front_end/src/classes.tsx +++ b/front_end/src/classes.tsx @@ -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; diff --git a/front_end/src/components/ressourceList.tsx b/front_end/src/components/ressourceList.tsx index b21912a..0eca026 100644 --- a/front_end/src/components/ressourceList.tsx +++ b/front_end/src/components/ressourceList.tsx @@ -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 }; function AthleteList({ athletes }: AthleteListProps) { return ( @@ -81,7 +83,7 @@ function SessionList({ sessions }: SessionListProps) { ); } -function LigneList({ lignes }: LigneListProps) { +function LigneList({ lignes, tempsDeJeuParLigne }: LigneListProps) { return (
    {lignes.map((lignes) => ( @@ -102,7 +104,8 @@ function LigneList({ lignes }: LigneListProps) {
- Temps de jeu: {lignes.tempsDeJeu} + Temps de jeu total :{" "} + {tempsDeJeuParLigne.get(lignes.id) ?? 0} min
))} diff --git a/front_end/src/components/ressourcePanel.tsx b/front_end/src/components/ressourcePanel.tsx index 1b9c462..63b1ab7 100644 --- a/front_end/src/components/ressourcePanel.tsx +++ b/front_end/src/components/ressourcePanel.tsx @@ -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("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 = 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" && (

Liste des lignes

- +
)} diff --git a/front_end/src/utils/ligneUtils.tsx b/front_end/src/utils/ligneUtils.tsx new file mode 100644 index 0000000..629c5b4 --- /dev/null +++ b/front_end/src/utils/ligneUtils.tsx @@ -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; +} \ No newline at end of file