Feat: Ajout de la classe ligne pour la partie 2.
This commit is contained in:
@@ -8,6 +8,13 @@ export class User{
|
|||||||
role!: Role;
|
role!: Role;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class Ligne{
|
||||||
|
id!: number;
|
||||||
|
nom!: String;
|
||||||
|
composition!: Athlete[] //les joueurs compososant la ligne
|
||||||
|
tempsDeJeu!: number; // en minutes
|
||||||
|
}
|
||||||
|
|
||||||
export class Admin extends User{
|
export class Admin extends User{
|
||||||
role!: Role;
|
role!: Role;
|
||||||
|
|
||||||
@@ -37,6 +44,7 @@ export class Session{
|
|||||||
athletes!: Athlete[]
|
athletes!: Athlete[]
|
||||||
duree! : number;
|
duree! : number;
|
||||||
groupe! : Groupe;
|
groupe! : Groupe;
|
||||||
|
ligne! : Ligne[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Activite{
|
export class Activite{
|
||||||
@@ -54,24 +62,6 @@ export function getUserTest():User{
|
|||||||
const s1 = new Session();
|
const s1 = new Session();
|
||||||
const s2 = new Session();
|
const s2 = new Session();
|
||||||
const s3 = new Session();
|
const s3 = new Session();
|
||||||
user.id = 0;
|
|
||||||
user.nom = "Emilien-Yee NootNoot";
|
|
||||||
user.role = "Coach"
|
|
||||||
s1.creneau = new Date();
|
|
||||||
s1.id = 1;
|
|
||||||
s1.name = "Entrainement Frisbee"
|
|
||||||
s1.isRecurrent = true;
|
|
||||||
var date2 = new Date();
|
|
||||||
date2.setDate(date2.getDate() + 2);
|
|
||||||
s2.creneau = date2;
|
|
||||||
s2.id = 2;
|
|
||||||
s2.isRecurrent = false;
|
|
||||||
s2.name = "entraintement 2"
|
|
||||||
s3.creneau = date2;
|
|
||||||
s3.id = 3;
|
|
||||||
s3.isRecurrent = false;
|
|
||||||
s3.name = "entraintement 3"
|
|
||||||
|
|
||||||
const athlete1 = new Athlete();
|
const athlete1 = new Athlete();
|
||||||
athlete1.id = 1;
|
athlete1.id = 1;
|
||||||
athlete1.nom = "Alice Dupont";
|
athlete1.nom = "Alice Dupont";
|
||||||
@@ -87,6 +77,49 @@ export function getUserTest():User{
|
|||||||
athlete3.nom = "Clara Lopez";
|
athlete3.nom = "Clara Lopez";
|
||||||
athlete3.groupe = "Loisir";
|
athlete3.groupe = "Loisir";
|
||||||
|
|
||||||
|
const ligne1 = new Ligne();
|
||||||
|
ligne1.id = 1;
|
||||||
|
ligne1.nom = "Ligne A";
|
||||||
|
ligne1.composition = [athlete1, athlete2]; // Alice + Bob
|
||||||
|
ligne1.tempsDeJeu = 45;
|
||||||
|
|
||||||
|
const ligne2 = new Ligne();
|
||||||
|
ligne2.id = 2;
|
||||||
|
ligne2.nom = "Ligne B";
|
||||||
|
ligne2.composition = [athlete2, athlete3]; // Bob + Clara
|
||||||
|
ligne2.tempsDeJeu = 40;
|
||||||
|
|
||||||
|
const ligne3 = new Ligne();
|
||||||
|
ligne3.id = 3;
|
||||||
|
ligne3.nom = "Ligne C";
|
||||||
|
ligne3.composition = [athlete1, athlete3]; // Alice + Clara
|
||||||
|
ligne3.tempsDeJeu = 50;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
user.id = 0;
|
||||||
|
user.nom = "Emilien-Yee NootNoot";
|
||||||
|
user.role = "Coach"
|
||||||
|
s1.creneau = new Date();
|
||||||
|
s1.id = 1;
|
||||||
|
s1.name = "Entrainement Frisbee"
|
||||||
|
s1.isRecurrent = true;
|
||||||
|
s1.ligne = [ligne1];
|
||||||
|
var date2 = new Date();
|
||||||
|
date2.setDate(date2.getDate() + 2);
|
||||||
|
s2.creneau = date2;
|
||||||
|
s2.id = 2;
|
||||||
|
s2.isRecurrent = false;
|
||||||
|
s2.name = "entraintement 2"
|
||||||
|
s2.ligne = [ligne2];
|
||||||
|
s3.creneau = date2;
|
||||||
|
s3.id = 3;
|
||||||
|
s3.isRecurrent = false;
|
||||||
|
s3.name = "entraintement 3"
|
||||||
|
s3.ligne = [ligne3];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
s1.athletes = [athlete1, athlete2];
|
s1.athletes = [athlete1, athlete2];
|
||||||
s2.athletes = [athlete2, athlete3];
|
s2.athletes = [athlete2, athlete3];
|
||||||
s3.athletes = [athlete1, athlete3];
|
s3.athletes = [athlete1, athlete3];
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
import { Athlete, Activite, Coach, Session } from "../classes";
|
import { Athlete, Activite, Coach, Session, Ligne } from "../classes";
|
||||||
|
|
||||||
type AthleteListProps = { athletes: Athlete[] };
|
type AthleteListProps = { athletes: Athlete[] };
|
||||||
type ActiviteListProps = { activites: Activite[] };
|
type ActiviteListProps = { activites: Activite[] };
|
||||||
type CoachListProps = { coachs: Coach[] };
|
type CoachListProps = { coachs: Coach[] };
|
||||||
type SessionListProps = { sessions: Session[]};
|
type SessionListProps = { sessions: Session[]};
|
||||||
|
type LigneListProps = { lignes: Ligne[]};
|
||||||
|
|
||||||
function AthleteList({ athletes }: AthleteListProps) {
|
function AthleteList({ athletes }: AthleteListProps) {
|
||||||
return (
|
return (
|
||||||
@@ -70,6 +71,9 @@ function SessionList({ sessions }: SessionListProps) {
|
|||||||
<div>
|
<div>
|
||||||
<strong>Coach:</strong> {sessions.coach ? sessions.coach.nom : "Pas de coach sur la séance"}
|
<strong>Coach:</strong> {sessions.coach ? sessions.coach.nom : "Pas de coach sur la séance"}
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<strong>Ligne:</strong> {sessions.ligne ? sessions.ligne.map(ligne => ligne.nom).join(", ") : "Pas de ligne sur la séance"}
|
||||||
|
</div>
|
||||||
|
|
||||||
</li>
|
</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 };
|
||||||
@@ -1,125 +1,163 @@
|
|||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { useLocalData } from "../context/useLocalData";
|
import { useLocalData } from "../context/useLocalData";
|
||||||
import { AthleteList, ActiviteList, CoachList, SessionList} from "./ressourceList";
|
import { AthleteList, ActiviteList, CoachList, SessionList, LigneList} from "./ressourceList";
|
||||||
import { Activite, Athlete, Coach , Session } from "../classes";
|
import { Activite, Athlete, Coach , Session, Ligne } from "../classes";
|
||||||
|
|
||||||
export default function RessourcePanel() {
|
export default function RessourcePanel() {
|
||||||
const { user } = useLocalData();
|
const { user } = useLocalData();
|
||||||
const [showAthletes, setShowAthletes] = useState(false);
|
const [showAthletes, setShowAthletes] = useState(false);
|
||||||
const [showActivites, setShowActivites] = useState(false);
|
const [showActivites, setShowActivites] = useState(false);
|
||||||
const [showCoachs,setShowCoachs] = useState(false);
|
const [showCoachs,setShowCoachs] = useState(false);
|
||||||
const [showSessions, setShowSessions] = useState(false);
|
const [showSessions, setShowSessions] = useState(false);
|
||||||
console.log("Rôle utilisateur:", user.role);
|
const [showLignes, setShowLignes] = useState(false);
|
||||||
if (user.role === "Athlete") return null;
|
console.log("Rôle utilisateur:", user.role);
|
||||||
|
if (user.role === "Athlete") return null;
|
||||||
|
|
||||||
|
|
||||||
const athleteMap: Map<number, Athlete> = new Map();
|
const athleteMap: Map<number, Athlete> = new Map();
|
||||||
user.sessions.forEach(session => {
|
user.sessions.forEach(session => {
|
||||||
session.athletes?.forEach(a => athleteMap.set(a.id, a));
|
session.athletes?.forEach(a => athleteMap.set(a.id, a));
|
||||||
});
|
});
|
||||||
const allAthletes: Athlete[] = Array.from(athleteMap.values());
|
const allAthletes: Athlete[] = Array.from(athleteMap.values());
|
||||||
|
|
||||||
const activiteMap: Map<number, Activite> = new Map();
|
const activiteMap: Map<number, Activite> = new Map();
|
||||||
user.sessions.forEach(session => {
|
user.sessions.forEach(session => {
|
||||||
session.activites?.forEach(act => activiteMap.set(act.id, act));
|
session.activites?.forEach(act => activiteMap.set(act.id, act));
|
||||||
});
|
});
|
||||||
const allActivites: Activite[] = Array.from(activiteMap.values());
|
const allActivites: Activite[] = Array.from(activiteMap.values());
|
||||||
|
|
||||||
const coachMap: Map<number, Coach> = new Map();
|
const coachMap: Map<number, Coach> = new Map();
|
||||||
user.sessions.forEach(session => {
|
user.sessions.forEach(session => {
|
||||||
if (session.coach) {
|
if (session.coach) {
|
||||||
coachMap.set(session.coach.id, 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();
|
const sessionMap: Map<number, Session> = new Map();
|
||||||
user.sessions.forEach(session => {
|
user.sessions.forEach(session => {
|
||||||
sessionMap.set(session.id, session);
|
sessionMap.set(session.id, session);
|
||||||
});
|
});
|
||||||
|
|
||||||
const allSessions: Session[] = Array.from(sessionMap.values());
|
const allSessions: Session[] = Array.from(sessionMap.values());
|
||||||
|
|
||||||
function onAthletesClick(): void {
|
const ligneMap: Map<number, Ligne> = new Map();
|
||||||
setShowAthletes(prev => !prev);
|
user.sessions.forEach(session => {
|
||||||
setShowActivites(false);
|
if (session.ligne) {
|
||||||
setShowCoachs(false);
|
|
||||||
setShowSessions(false);
|
|
||||||
|
|
||||||
}
|
session.ligne.forEach(ligne => {
|
||||||
function onActivitiesClick(): void {
|
ligneMap.set(ligne.id, ligne);
|
||||||
setShowActivites(prev => !prev);
|
});
|
||||||
setShowAthletes(false);
|
}
|
||||||
setShowCoachs(false);
|
});
|
||||||
setShowSessions(false);
|
|
||||||
|
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 {
|
function onCoachClick(): void {
|
||||||
setShowCoachs(prev => !prev);
|
setShowCoachs(prev => !prev);
|
||||||
setShowActivites(false);
|
setShowActivites(false);
|
||||||
setShowAthletes(false);
|
setShowAthletes(false);
|
||||||
setShowSessions(false);
|
setShowSessions(false);
|
||||||
|
setShowLignes(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function onSessionClick(): void {
|
function onSessionClick(): void {
|
||||||
setShowSessions(prev => !prev);
|
setShowSessions(prev => !prev);
|
||||||
setShowActivites(false);
|
setShowActivites(false);
|
||||||
setShowAthletes(false);
|
setShowAthletes(false);
|
||||||
setShowCoachs(false);
|
setShowCoachs(false);
|
||||||
|
setShowLignes(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onLigneClick():void{
|
||||||
|
setShowLignes(prev => !prev);
|
||||||
|
setShowAthletes(false);
|
||||||
|
setShowActivites(false);
|
||||||
|
setShowCoachs(false);
|
||||||
|
setShowSessions(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="ressource_panel">
|
<div className="ressource_panel">
|
||||||
<select
|
<div>
|
||||||
onChange={(e) => {
|
Sélectionner une ressource:
|
||||||
const v = (e.target as HTMLSelectElement).value;
|
</div>
|
||||||
if (v === "athletes") onAthletesClick();
|
<select
|
||||||
else if (v === "activites") onActivitiesClick();
|
onChange={(e) => {
|
||||||
else if (v === "coach") onCoachClick();
|
const v = (e.target as HTMLSelectElement).value;
|
||||||
else if (v === "session") onSessionClick();
|
if (v === "athletes") onAthletesClick();
|
||||||
else {setShowAthletes(false); setShowActivites(false); setShowCoachs(false); setShowSessions(false)}
|
else if (v === "activites") onActivitiesClick();
|
||||||
}}>
|
else if (v === "coach") onCoachClick();
|
||||||
<option value="athletes">Athlètes</option>
|
else if (v === "session") onSessionClick();
|
||||||
<option value="activites">Activités</option>
|
else if (v === "lignes") onLigneClick();
|
||||||
{user.role === "Admin" && <option value="coach"> Coach</option>}
|
else {setShowAthletes(false); setShowActivites(false); setShowCoachs(false); setShowSessions(false)}
|
||||||
<option value="session"> Session</option>
|
}}>
|
||||||
</select>
|
<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 && (
|
</select>
|
||||||
<div className="edt_athletes_panel">
|
|
||||||
<h3>Liste des athlètes</h3>
|
|
||||||
<AthleteList athletes={allAthletes} />
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{showActivites && (
|
{showAthletes && (
|
||||||
<div className="edt_activites_panel">
|
<div className="edt_athletes_panel">
|
||||||
<h3>Liste des activités</h3>
|
<h3>Liste des athlètes</h3>
|
||||||
<ActiviteList activites={allActivites} />
|
<AthleteList athletes={allAthletes} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{showCoachs && (
|
{showActivites && (
|
||||||
<div className="edt_coachs_panel">
|
<div className="edt_activites_panel">
|
||||||
<h3>Liste des coachs</h3>
|
<h3>Liste des activités</h3>
|
||||||
<CoachList coachs={allCoachs} />
|
<ActiviteList activites={allActivites} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{showSessions && (
|
{showCoachs && (
|
||||||
<div className="edt_sessions_panel">
|
<div className="edt_coachs_panel">
|
||||||
<h3>Liste des sessions</h3>
|
<h3>Liste des coachs</h3>
|
||||||
<SessionList sessions={allSessions} />
|
<CoachList coachs={allCoachs} />
|
||||||
</div>
|
</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>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user