Feat: Ajout de la classe ligne pour la partie 2.

This commit is contained in:
Amaël Kesteman
2026-01-07 17:57:18 +01:00
parent 816b1e3965
commit cd4fb99429
3 changed files with 225 additions and 121 deletions

View File

@@ -1,9 +1,10 @@
import { Athlete, Activite, Coach, Session } from "../classes";
import { Athlete, Activite, Coach, Session, Ligne } from "../classes";
type AthleteListProps = { athletes: Athlete[] };
type ActiviteListProps = { activites: Activite[] };
type CoachListProps = { coachs: Coach[] };
type SessionListProps = { sessions: Session[]};
type LigneListProps = { lignes: Ligne[]};
function AthleteList({ athletes }: AthleteListProps) {
return (
@@ -70,6 +71,9 @@ function SessionList({ sessions }: SessionListProps) {
<div>
<strong>Coach:</strong> {sessions.coach ? sessions.coach.nom : "Pas de coach sur la séance"}
</div>
<div>
<strong>Ligne:</strong> {sessions.ligne ? sessions.ligne.map(ligne => ligne.nom).join(", ") : "Pas de ligne sur la séance"}
</div>
</li>
))}
@@ -77,4 +81,33 @@ function SessionList({ sessions }: SessionListProps) {
);
}
export { AthleteList, ActiviteList, CoachList , SessionList };
function LigneList({ lignes }: LigneListProps) {
return (
<ul className="LigneList">
{lignes.map((lignes) => (
<li key={lignes.id}>
<div>
<strong>Nom:</strong> {lignes.nom}
</div>
<div>
<div>
<strong>Composition :</strong>
<ul>
{lignes.composition.map((athlete) => (
<li key={athlete.id}>
{athlete.nom}
</li>
))}
</ul>
</div>
</div>
<div>
<strong>Temps de jeu: {lignes.tempsDeJeu}</strong>
</div>
</li>
))}
</ul>
);
}
export { AthleteList, ActiviteList, CoachList , SessionList, LigneList };

View File

@@ -1,125 +1,163 @@
import { useState } from "react";
import { useLocalData } from "../context/useLocalData";
import { AthleteList, ActiviteList, CoachList, SessionList} from "./ressourceList";
import { Activite, Athlete, Coach , Session } 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";
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);
console.log("Rôle utilisateur:", user.role);
if (user.role === "Athlete") return null;
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);
console.log("Rôle utilisateur:", user.role);
if (user.role === "Athlete") return null;
const athleteMap: Map<number, Athlete> = new Map();
user.sessions.forEach(session => {
session.athletes?.forEach(a => athleteMap.set(a.id, a));
});
const allAthletes: Athlete[] = Array.from(athleteMap.values());
const athleteMap: Map<number, Athlete> = new Map();
user.sessions.forEach(session => {
session.athletes?.forEach(a => athleteMap.set(a.id, a));
});
const allAthletes: Athlete[] = Array.from(athleteMap.values());
const activiteMap: Map<number, Activite> = new Map();
user.sessions.forEach(session => {
session.activites?.forEach(act => activiteMap.set(act.id, act));
});
const allActivites: Activite[] = Array.from(activiteMap.values());
const activiteMap: Map<number, Activite> = new Map();
user.sessions.forEach(session => {
session.activites?.forEach(act => activiteMap.set(act.id, act));
});
const allActivites: Activite[] = Array.from(activiteMap.values());
const coachMap: Map<number, Coach> = new Map();
user.sessions.forEach(session => {
if (session.coach) {
coachMap.set(session.coach.id, session.coach);
}
});
const coachMap: Map<number, Coach> = new Map();
user.sessions.forEach(session => {
if (session.coach) {
coachMap.set(session.coach.id, session.coach);
}
});
const allCoachs: Coach[] = Array.from(coachMap.values());
const allCoachs: Coach[] = Array.from(coachMap.values());
const sessionMap: Map<number, Session> = new Map();
user.sessions.forEach(session => {
sessionMap.set(session.id, session);
});
const sessionMap: Map<number, Session> = new Map();
user.sessions.forEach(session => {
sessionMap.set(session.id, session);
});
const allSessions: Session[] = Array.from(sessionMap.values());
const allSessions: Session[] = Array.from(sessionMap.values());
function onAthletesClick(): void {
setShowAthletes(prev => !prev);
setShowActivites(false);
setShowCoachs(false);
setShowSessions(false);
const ligneMap: Map<number, Ligne> = new Map();
user.sessions.forEach(session => {
if (session.ligne) {
}
function onActivitiesClick(): void {
setShowActivites(prev => !prev);
setShowAthletes(false);
setShowCoachs(false);
setShowSessions(false);
session.ligne.forEach(ligne => {
ligneMap.set(ligne.id, ligne);
});
}
});
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);
}
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);
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 (
<div className="ressource_panel">
<select
onChange={(e) => {
const v = (e.target as HTMLSelectElement).value;
if (v === "athletes") onAthletesClick();
else if (v === "activites") onActivitiesClick();
else if (v === "coach") onCoachClick();
else if (v === "session") onSessionClick();
else {setShowAthletes(false); setShowActivites(false); setShowCoachs(false); setShowSessions(false)}
}}>
<option value="athletes">Athlètes</option>
<option value="activites">Activités</option>
{user.role === "Admin" && <option value="coach"> Coach</option>}
<option value="session"> Session</option>
</select>
return (
<div className="ressource_panel">
<div>
Sélectionner une ressource:
</div>
<select
onChange={(e) => {
const v = (e.target as HTMLSelectElement).value;
if (v === "athletes") onAthletesClick();
else if (v === "activites") onActivitiesClick();
else if (v === "coach") onCoachClick();
else if (v === "session") onSessionClick();
else if (v === "lignes") onLigneClick();
else {setShowAthletes(false); setShowActivites(false); setShowCoachs(false); setShowSessions(false)}
}}>
<option value="athletes">Athlètes</option>
<option value="activites">Activités</option>
{user.role === "Admin" && <option value="coach"> Coach</option>}
<option value="session"> Session</option>
<option value="lignes"> Lignes</option>
{showAthletes && (
<div className="edt_athletes_panel">
<h3>Liste des athlètes</h3>
<AthleteList athletes={allAthletes} />
</div>
)}
</select>
{showActivites && (
<div className="edt_activites_panel">
<h3>Liste des activités</h3>
<ActiviteList activites={allActivites} />
</div>
)}
{showAthletes && (
<div className="edt_athletes_panel">
<h3>Liste des athlètes</h3>
<AthleteList athletes={allAthletes} />
</div>
)}
{showCoachs && (
<div className="edt_coachs_panel">
<h3>Liste des coachs</h3>
<CoachList coachs={allCoachs} />
</div>
)}
{showActivites && (
<div className="edt_activites_panel">
<h3>Liste des activités</h3>
<ActiviteList activites={allActivites} />
</div>
)}
{showSessions && (
<div className="edt_sessions_panel">
<h3>Liste des sessions</h3>
<SessionList sessions={allSessions} />
</div>
)}
{showCoachs && (
<div className="edt_coachs_panel">
<h3>Liste des coachs</h3>
<CoachList coachs={allCoachs} />
</div>
)}
{showSessions && (
<div className="edt_sessions_panel">
<h3>Liste des sessions</h3>
<SessionList sessions={allSessions} />
</div>
)}
{showLignes && (
<div className="edt_lignes_panel">
<h3>Liste des lignes</h3>
<LigneList lignes={allLignes} />
</div>
)}
</div>
);
}
</div>
);
}