Display data
This commit is contained in:
@@ -1,37 +1,24 @@
|
|||||||
import {useState} from "react";
|
import { useState, useEffect } from "react";
|
||||||
import styles from "./eventDetail.module.css";
|
import styles from "./eventDetail.module.css";
|
||||||
import { useParams } from "react-router";
|
import { useParams } from "react-router";
|
||||||
|
import getEventById from "../../utils/event/getEventById.js";
|
||||||
|
import { formatDateLetter } from "../../utils/date/formatDateLetter.js";
|
||||||
|
import Button from "../../components/ui/button/button.jsx";
|
||||||
|
|
||||||
|
|
||||||
function eventDetail() {
|
function EventDetail() {
|
||||||
|
|
||||||
const params = useParams();
|
const params = useParams();
|
||||||
const id = params.id;
|
const id = params.id;
|
||||||
|
|
||||||
const [tasks, setTasks] = useState([
|
const [event, setEvent] = useState(null);
|
||||||
{ text: "Préparer les slides", registered: false },
|
|
||||||
{ text: "Réserver la salle", registered: false },
|
|
||||||
{ text: "Envoyer les invitations", registered: false },
|
|
||||||
{ text: "Tester la configuration technique", registered: false },
|
|
||||||
{ text: "Organiser le catering", registered: false },
|
|
||||||
]);
|
|
||||||
|
|
||||||
const event = {
|
useEffect(() => {
|
||||||
title: "Conférence React 2025",
|
(async () => {
|
||||||
date: "27 Décembre 2025",
|
const e = await getEventById(id);
|
||||||
location: "Paris, France",
|
setEvent(e);
|
||||||
description: "azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop azertyuiop"
|
}) ()
|
||||||
};
|
}, [])
|
||||||
|
|
||||||
const toggleRegister = (index) => {
|
|
||||||
setTasks((prevTasks) =>
|
|
||||||
prevTasks.map((task, i) =>
|
|
||||||
i === index
|
|
||||||
? { ...task, registered: !task.registered }
|
|
||||||
: task
|
|
||||||
)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.allContent}>
|
<div className={styles.allContent}>
|
||||||
@@ -39,25 +26,24 @@ function eventDetail() {
|
|||||||
<div className={styles.textImage}>
|
<div className={styles.textImage}>
|
||||||
<img src="/public/icons/theme/dark.svg" alt="Illustration événement" className={styles.eventImage}/>
|
<img src="/public/icons/theme/dark.svg" alt="Illustration événement" className={styles.eventImage}/>
|
||||||
<div className={styles.eventInfo}>
|
<div className={styles.eventInfo}>
|
||||||
<h2>{event.title}</h2>
|
<h2>{event?.name}</h2>
|
||||||
<p>Date: {event.date}</p>
|
<p>{event && formatDateLetter(event.start)}</p>
|
||||||
<p>Lieu: {event.location}</p>
|
<p>{event?.description}</p>
|
||||||
<p>Description: {event.description}</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2>Tâches</h2>
|
<h2>Tâches</h2>
|
||||||
<ul className={styles.tasks}>
|
<ul className={styles.tasks}>
|
||||||
{tasks.map((task, index) => (
|
{event?.tasks?.map((task, index) => (
|
||||||
<li style={{"--i": index}} key={index}>
|
<li style={{"--i": index}} key={index}>
|
||||||
<div className={styles.tasksButton}>
|
<div className={styles.task}>
|
||||||
<span><strong>{task.text}</strong></span>
|
<div>
|
||||||
<button
|
<span><strong>{task.name}</strong></span>
|
||||||
className={styles.registerButton}
|
<p className={styles.taskDate}> {event && formatDateLetter(task.start)} - {event && formatDateLetter(task.end)} </p>
|
||||||
onClick={() => toggleRegister(index)}
|
<p>{task.description}</p>
|
||||||
>
|
</div>
|
||||||
{task.registered ? "Se désinscrire" : "S’inscrire"}
|
|
||||||
</button>
|
<Button> {task.registered ? "Se désinscrire" : "S’inscrire"} </Button>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
@@ -67,4 +53,4 @@ function eventDetail() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default eventDetail;
|
export default EventDetail;
|
||||||
@@ -38,24 +38,14 @@
|
|||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.registerButton {
|
|
||||||
margin-left: auto;
|
|
||||||
padding: 5px 10px;
|
|
||||||
border-radius: 12px;
|
|
||||||
border: none;
|
|
||||||
cursor: pointer;
|
|
||||||
background: #019AFF;
|
|
||||||
color: white;
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
|
|
||||||
.registerButton:hover {
|
.registerButton:hover {
|
||||||
opacity: 0.85;
|
opacity: 0.85;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tasksButton {
|
.task {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
gap: 16px;
|
gap: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,6 +54,10 @@
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.taskDate {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
.tasks li {
|
.tasks li {
|
||||||
margin: 16px 0px 16px 0px;
|
margin: 16px 0px 16px 0px;
|
||||||
padding: 10px 20px 10px 20px;
|
padding: 10px 20px 10px 20px;
|
||||||
|
|||||||
Reference in New Issue
Block a user