Feat: Ajout liste des sessions pour admin et coach
This commit is contained in:
@@ -51,7 +51,7 @@ function EdtSession({session}:Props){
|
|||||||
<div className="edt_session" onClick={() => handleOpen()}>
|
<div className="edt_session" onClick={() => handleOpen()}>
|
||||||
<div className="edt_session_header">
|
<div className="edt_session_header">
|
||||||
<div className="edt_date">{hoursToString(sDate)}</div>
|
<div className="edt_date">{hoursToString(sDate)}</div>
|
||||||
{!session.isRecurrent && <div className="edt_date"> recurrent</div>}
|
{session.isRecurrent && <div className="edt_date"> recurrent</div>}
|
||||||
</div>
|
</div>
|
||||||
<div>{session.name}</div>
|
<div>{session.name}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import { Athlete, Activite, Coach } from "../classes";
|
import { Athlete, Activite, Coach, Session } 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[]};
|
||||||
|
|
||||||
function AthleteList({ athletes }: AthleteListProps) {
|
function AthleteList({ athletes }: AthleteListProps) {
|
||||||
return (
|
return (
|
||||||
@@ -52,4 +53,28 @@ function CoachList({ coachs }: CoachListProps) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export { AthleteList, ActiviteList, CoachList };
|
function SessionList({ sessions }: SessionListProps) {
|
||||||
|
return (
|
||||||
|
<ul className="SessionList">
|
||||||
|
{sessions.map((sessions) => (
|
||||||
|
<li key={sessions.id}>
|
||||||
|
<div>
|
||||||
|
<strong>Nom:</strong> {sessions.name}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<strong>Groupe:</strong> {sessions.groupe}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<strong>Recurrent:</strong> {sessions.isRecurrent ? "Oui" : "Non"}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<strong>Coach:</strong> {sessions.coach ? sessions.coach.nom : "Pas de coach sur la séance"}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export { AthleteList, ActiviteList, CoachList , SessionList };
|
||||||
@@ -1,13 +1,14 @@
|
|||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { useLocalData } from "../context/useLocalData";
|
import { useLocalData } from "../context/useLocalData";
|
||||||
import { AthleteList, ActiviteList, CoachList} from "./ressourceList";
|
import { AthleteList, ActiviteList, CoachList, SessionList} from "./ressourceList";
|
||||||
import { Activite, Athlete, Coach } from "../classes";
|
import { Activite, Athlete, Coach , Session } 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 [showCoach,setShowCoach] = useState(false);
|
const [showCoachs,setShowCoachs] = useState(false);
|
||||||
|
const [showSessions, setShowSessions] = useState(false);
|
||||||
console.log("Rôle utilisateur:", user.role);
|
console.log("Rôle utilisateur:", user.role);
|
||||||
if (user.role === "Athlete") return null;
|
if (user.role === "Athlete") return null;
|
||||||
|
|
||||||
@@ -33,21 +34,41 @@ export default function RessourcePanel() {
|
|||||||
|
|
||||||
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 allSessions: Session[] = Array.from(sessionMap.values());
|
||||||
|
|
||||||
function onAthletesClick(): void {
|
function onAthletesClick(): void {
|
||||||
setShowAthletes(prev => !prev);
|
setShowAthletes(prev => !prev);
|
||||||
setShowActivites(false);
|
setShowActivites(false);
|
||||||
setShowCoach(false);
|
setShowCoachs(false);
|
||||||
|
setShowSessions(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
function onActivitiesClick(): void {
|
function onActivitiesClick(): void {
|
||||||
setShowActivites(prev => !prev);
|
setShowActivites(prev => !prev);
|
||||||
setShowAthletes(false);
|
setShowAthletes(false);
|
||||||
setShowCoach(false);
|
setShowCoachs(false);
|
||||||
|
setShowSessions(false);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
function onCoachClick(): void {
|
function onCoachClick(): void {
|
||||||
setShowCoach(prev => !prev);
|
setShowCoachs(prev => !prev);
|
||||||
setShowActivites(false);
|
setShowActivites(false);
|
||||||
setShowAthletes(false);
|
setShowAthletes(false);
|
||||||
|
setShowSessions(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function onSessionClick(): void {
|
||||||
|
setShowSessions(prev => !prev);
|
||||||
|
setShowActivites(false);
|
||||||
|
setShowAthletes(false);
|
||||||
|
setShowCoachs(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,12 +81,13 @@ export default function RessourcePanel() {
|
|||||||
if (v === "athletes") onAthletesClick();
|
if (v === "athletes") onAthletesClick();
|
||||||
else if (v === "activites") onActivitiesClick();
|
else if (v === "activites") onActivitiesClick();
|
||||||
else if (v === "coach") onCoachClick();
|
else if (v === "coach") onCoachClick();
|
||||||
else {setShowAthletes(false); setShowActivites(false); setShowCoach(false)}
|
else if (v === "session") onSessionClick();
|
||||||
|
else {setShowAthletes(false); setShowActivites(false); setShowCoachs(false); setShowSessions(false)}
|
||||||
}}>
|
}}>
|
||||||
<option>Choissisez la ressource</option>
|
|
||||||
<option value="athletes">Athlètes</option>
|
<option value="athletes">Athlètes</option>
|
||||||
<option value="activites">Activités</option>
|
<option value="activites">Activités</option>
|
||||||
{user.role === "Admin" && <option value="coach"> Coach</option>}
|
{user.role === "Admin" && <option value="coach"> Coach</option>}
|
||||||
|
<option value="session"> Session</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
{showAthletes && (
|
{showAthletes && (
|
||||||
@@ -82,13 +104,20 @@ export default function RessourcePanel() {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{showCoach && (
|
{showCoachs && (
|
||||||
<div className="edt_coach_panel">
|
<div className="edt_coachs_panel">
|
||||||
<h3>Liste des coachs</h3>
|
<h3>Liste des coachs</h3>
|
||||||
<CoachList coachs={allCoachs} />
|
<CoachList coachs={allCoachs} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{showSessions && (
|
||||||
|
<div className="edt_sessions_panel">
|
||||||
|
<h3>Liste des sessions</h3>
|
||||||
|
<SessionList sessions={allSessions} />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user