Link hompeage eventlist to backend

This commit is contained in:
T'JAMPENS QUENTIN p2406187
2026-01-07 14:55:57 +01:00
parent 1936151267
commit 929ef5fa82
3 changed files with 56 additions and 24 deletions
+32 -19
View File
@@ -1,37 +1,50 @@
import {useMemo} from "react"; import { useMemo, useEffect, useState } from "react";
import styles from "./eventList.module.css"; import styles from "./eventList.module.css";
import formatDateLetter from "../../utils/date/formatDateLetter.js"; import formatDateLetter from "../../utils/date/formatDateLetter.js";
function eventList() { import getAllEvents from "../../utils/event/getAllEvents.js";
const events = {
"2025-11-07": ["Réunion de projet", "Anniversaire de Marie"],
"2025-11-10": ["Cours de React", "Rendez-vous médecin"], function EventList() {
"2025-11-14": ["Sortie cinéma"],
"2025-11-15": ["Sortie cinéma"], const [events, setEvents] = useState([]);
"2025-11-17": ["Sortie cinéma"],
}; useEffect(() => {
(async () => {
const data = await getAllEvents();
setEvents(data.data);
console.log(data.data);
}) ()
}, [])
const sortedEvents = useMemo(() => { const sortedEvents = useMemo(() => {
return Object.entries(events) return [...events].sort(
.map(([dateKey, eventList]) => ({date: dateKey, events: eventList})) (a, b) => new Date(a.start) - new Date(b.start)
.sort((a, b) => new Date(a.date) - new Date(b.date)); );
}, [events]); }, [events]);
return ( return (
<div className={styles.glassCard}> <div className={styles.glassCard}>
<h2>Liste des événements à venir</h2> <h2>Liste des événements à venir</h2>
{sortedEvents.length > 0 ? ( {sortedEvents.length > 0 ? (
<ul className={styles.eventList}> <ul className={styles.eventList}>
{sortedEvents.map((eventGroup) => ( {sortedEvents.map((eventGroup, index) => (
<li key={eventGroup.date} className={styles.eventGroup}>
<div className={styles.eventDate}> <li key={index} className={styles.eventGroup}>
<strong>{formatDateLetter(eventGroup.date)}</strong> <div className={styles.eventTitle}>
<p className={styles.title}>{eventGroup.name}</p>
<p>{formatDateLetter(eventGroup.start)} - {formatDateLetter(eventGroup.end)}</p>
</div> </div>
<ul className={styles.eventDetails}> <ul className={styles.eventDetails}>
{eventGroup.events.map((event, i) => ( {eventGroup.tasks.map((task, i) => (
<li key={i}>- {event}</li> <li key={i} className={styles.eventTasks}>
<p>- {task.name} - {task.description}</p>
<p>{formatDateLetter(task.start)} - {formatDateLetter(task.end)}</p>
</li>
))} ))}
</ul> </ul>
</li> </li>
))} ))}
</ul> </ul>
) : ( ) : (
@@ -42,4 +55,4 @@ function eventList() {
); );
} }
export default eventList; export default EventList;
+17 -2
View File
@@ -35,9 +35,8 @@
} }
.eventDetails { .eventDetails {
list-style: none; margin-top: 10px;
padding: 0; padding: 0;
margin: 0;
} }
.dateSelected{ .dateSelected{
@@ -63,6 +62,22 @@ h2{
inset 0.25px -0.25px 1px rgba(0, 0, 0, 0.2); inset 0.25px -0.25px 1px rgba(0, 0, 0, 0.2);
} }
.eventTitle {
display: flex;
flex-direction: row;
justify-content: space-between;
}
.title {
font-weight: bold;
}
.eventTasks {
display: flex;
flex-direction: row;
justify-content: space-between;
}
@media (max-width: 768px) { @media (max-width: 768px) {
.glassCard { .glassCard {
width: 100%; width: 100%;
+7 -3
View File
@@ -3,6 +3,10 @@ export default function formatDateLetter(d) {
"Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin",
"Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre" "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"
]; ];
const [year, month, day] = d.split('-');
return `${day} ${monthNames[parseInt(month) - 1]} ${year}`; const [datePart, timePart] = d.split(' ');
}; const [year, month, day] = datePart.split('-');
const [hours, minutes] = timePart.split(':');
return `${day} ${monthNames[parseInt(month, 10) - 1]} ${year} à ${hours}:${minutes}`;
}