Feat: ajout de la liste pour voir les activités et les athlètes en tant que coach/ admin
This commit is contained in:
27
front_end/src/components/dropdownButton.tsx
Normal file
27
front_end/src/components/dropdownButton.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
import Dropdown from 'react-bootstrap/Dropdown';
|
||||
import { Athlete } from '../classes';
|
||||
|
||||
type Props = {
|
||||
onAthletesClick: () => void;
|
||||
onActivitiesClick: () => void;
|
||||
}
|
||||
|
||||
function ListButton({ onAthletesClick, onActivitiesClick }: Props) {
|
||||
return (
|
||||
<Dropdown>
|
||||
<Dropdown.Toggle>
|
||||
Sélectionner la ressource
|
||||
</Dropdown.Toggle>
|
||||
<Dropdown.Menu>
|
||||
<Dropdown.Item as="button" onClick={onAthletesClick}>
|
||||
Athlètes
|
||||
</Dropdown.Item>
|
||||
<Dropdown.Item as="button" onClick={onActivitiesClick}>
|
||||
Activités
|
||||
</Dropdown.Item>
|
||||
</Dropdown.Menu>
|
||||
</Dropdown>
|
||||
);
|
||||
}
|
||||
|
||||
export default ListButton;
|
||||
47
front_end/src/components/ressourceList.tsx
Normal file
47
front_end/src/components/ressourceList.tsx
Normal file
@@ -0,0 +1,47 @@
|
||||
import ListGroup from "react-bootstrap/ListGroup";
|
||||
import { Athlete, Activite } from "../classes";
|
||||
|
||||
type Props = {
|
||||
athletes: Athlete[];
|
||||
activites: Activite[];
|
||||
|
||||
};
|
||||
|
||||
function AthleteList({ athletes }: Props) {
|
||||
return (
|
||||
<ListGroup>
|
||||
{athletes.map((athlete) => (
|
||||
<ListGroup.Item key={athlete.id}>
|
||||
<div>
|
||||
<strong>Nom:</strong> {athlete.nom}
|
||||
</div>
|
||||
<div>
|
||||
<strong>Groupe:</strong> {athlete.groupe}
|
||||
</div>
|
||||
</ListGroup.Item>
|
||||
))}
|
||||
</ListGroup>
|
||||
);
|
||||
}
|
||||
|
||||
function ActiviteList({ activites }: Props) {
|
||||
return (
|
||||
<ListGroup>
|
||||
{activites.map((activite) => (
|
||||
<ListGroup.Item key={activite.id}>
|
||||
<div>
|
||||
<strong>Nom:</strong> {activite.nom}
|
||||
</div>
|
||||
<div>
|
||||
<strong>Thème:</strong> {activite.theme}
|
||||
</div>
|
||||
<div>
|
||||
<strong>Durée:</strong> {activite.duree} minutes
|
||||
</div>
|
||||
</ListGroup.Item>
|
||||
))}
|
||||
</ListGroup>
|
||||
);
|
||||
}
|
||||
|
||||
export { AthleteList, ActiviteList };
|
||||
52
front_end/src/components/ressourcePanel.tsx
Normal file
52
front_end/src/components/ressourcePanel.tsx
Normal file
@@ -0,0 +1,52 @@
|
||||
import { useState } from "react";
|
||||
import { useLocalData } from "../context/useLocalData";
|
||||
import ListButton from "./dropdownButton";
|
||||
import { AthleteList, ActiviteList } from "./ressourceList";
|
||||
import { Activite, Athlete } from "../classes";
|
||||
|
||||
export default function RessourcePanel() {
|
||||
const { user } = useLocalData();
|
||||
const [showAthletes, setShowAthletes] = useState(false);
|
||||
const [showActivites, setShowActivites] = useState(false);
|
||||
|
||||
|
||||
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());
|
||||
|
||||
return (
|
||||
<div className="ressource_panel">
|
||||
<ListButton
|
||||
onAthletesClick={() => {
|
||||
setShowAthletes(prev => !prev);
|
||||
setShowActivites(false);
|
||||
}}
|
||||
onActivitiesClick={() => {
|
||||
setShowActivites(prev => !prev);
|
||||
setShowAthletes(false);
|
||||
}}
|
||||
/>
|
||||
{showAthletes && (
|
||||
<div className="edt_athletes_panel">
|
||||
<h3>Liste des athlètes</h3>
|
||||
<AthleteList athletes={allAthletes} activites={[]}/>
|
||||
</div>
|
||||
)}
|
||||
{showActivites && (
|
||||
<div className="edt_activites_panel">
|
||||
<h3>Liste des activités</h3>
|
||||
<ActiviteList athletes={[]} activites={allActivites} />
|
||||
</div>
|
||||
)}
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user