correction ressource list, clean composant

This commit is contained in:
trochas
2026-01-08 12:41:25 +01:00
parent 7c6ee6b65f
commit be4ab7d7cf
16 changed files with 491 additions and 228 deletions

View File

@@ -0,0 +1,127 @@
import { useEffect, useState } from 'react';
import { Activite, Admin, Athlete, Coach, Session, User } from '../../classes';
import { dateToString, hoursToString } from '../edt';
import '../style/objectList.css';
import { Modal } from '../Modal';
import Loading from '../loading';
import {delay} from "../../requetes";
import CreateActivite from '../createActivite';
import { useLocalData } from '../../context/useLocalData';
import ObjectSession from './session';
type Props = {
admin?:Admin|null;
athlete?:Athlete|null;
coach?:Coach|null;
}
function ObjectUser({admin=null,athlete=null,coach=null}:Props){
const {user,setUser} = useLocalData()
const[user2,setUser2]= useState<User>(getUser());
const [open, setOpen] = useState<boolean>(false);
const [open2, setOpen2] = useState<boolean>(false);
const [loading,setLoading] = useState<boolean>(false);
const [sessions,setSessions] = useState<Session[]>([]);
function getUser(): User{
if(admin!=null) return admin;
if(athlete!=null) return athlete;
if(coach!=null) return coach;
else return new User();
}
function handleOpen(): void {
setOpen(!open);
}
function handleDeleteSession(session:Session): void {
if(athlete!==null){
athlete.sessions.splice(athlete.sessions.indexOf(session), 1);
setSessions([...athlete.sessions])
}
if(coach!==null){
coach.sessions.splice(coach.sessions.indexOf(session), 1);
setSessions([...coach.sessions])
}
}
function handleAddSession(): void {
if(athlete!==null){
setOpen2(true)
}
}
async function updateSession(){
if(athlete!==null){
//TODO
await delay(2000);
//await update ... (athlete);
setLoading(false);
}
}
useEffect(() => {
if(open){
setLoading(true);
updateSession()
}
},[open])
useEffect(() => {
if(!loading){
if(athlete!==null){
setSessions([...athlete.sessions])
}
if(coach!==null){
setSessions([...coach.sessions])
}
}
},[loading])
function returnSession(session: Session|null){
if(session!==null){
if(athlete!==null){
athlete.sessions.push(session);
setSessions([...athlete.sessions])
}
if(coach!==null){
coach.sessions.push(session);
setSessions([...coach.sessions])
}
}
setOpen2(false);
}
return(
<div>
<div className="object" onClick={() => handleOpen()}>
<div>{user2.nom} ({user2.role})</div>
{/* <div>{user2.role}</div> */}
</div>
{open &&
<Modal isOpen={open} onClose={() => setOpen(false)}>
<div className="object_modal">
<div>{user2.nom} ({user2.role})</div>
<div>{user2.email}</div>
<div className='list_object'>
<div>Sessions :</div>
{user.sessions.map((session,index)=>(
<ObjectSession session={session}/>
))}
</div>
</div>
</Modal>
}
</div>
)
}
export default ObjectUser