From 222391f315318006b7d0dd0dbda9e63f653ac94d Mon Sep 17 00:00:00 2001 From: Arthur Belleville Date: Sun, 5 Oct 2025 23:06:37 +0200 Subject: [PATCH] Tmp --- .../{CreateEventModal.tsx => EventModal.tsx} | 126 ++++++++++++------ ui/src/lib/routes.tsx | 9 +- ui/src/pages/planning.tsx | 29 ++-- 3 files changed, 104 insertions(+), 60 deletions(-) rename ui/src/components/{CreateEventModal.tsx => EventModal.tsx} (74%) diff --git a/ui/src/components/CreateEventModal.tsx b/ui/src/components/EventModal.tsx similarity index 74% rename from ui/src/components/CreateEventModal.tsx rename to ui/src/components/EventModal.tsx index 0346d11..1e67c9f 100644 --- a/ui/src/components/CreateEventModal.tsx +++ b/ui/src/components/EventModal.tsx @@ -1,7 +1,7 @@ import { Event, EventInsert } from "@ui/types/events.types"; -import { useState } from "react"; +import { useState, useEffect } from "react"; import { useTablosList } from "@ui/hooks/tablos"; -import { useCreateEvents } from "@ui/hooks/events"; +import { useCreateEvents, useEvent, useUpdateEvent } from "@ui/hooks/events"; import { useUser } from "@ui/providers/UserStoreProvider"; import { Select, @@ -14,16 +14,21 @@ import { useTimePicker } from "@ui/ui-library/time-picker"; import { DatePicker, DatePickerButton } from "@ui/ui-library/date-picker"; import { Group } from "react-aria-components"; import { getLocalTimeZone, parseDate, today } from "@internationalized/date"; -import { useNavigate, useSearchParams } from "react-router-dom"; +import { useNavigate, useParams, useSearchParams } from "react-router-dom"; + +export const EventModal = ({ mode }: { mode: "create" | "edit" }) => { + const { event_id } = useParams(); + const { data: event } = useEvent(event_id as string); -export const CreateEventModal = () => { const user = useUser(); const [searchParams] = useSearchParams(); const tablo_id = searchParams.get("tablo_id"); - const date = new Date(searchParams.get("date") || ""); + const dateFromParams = searchParams.get("date"); + const date = dateFromParams ? new Date(dateFromParams) : new Date(); const { data: tablos, isLoading: tablosLoading } = useTablosList(); const createEvents = useCreateEvents(); + const updateEvent = useUpdateEvent(); const timeOptions = useTimePicker({ intervalInMinute: 15 }); const navigate = useNavigate(); @@ -62,7 +67,7 @@ export const CreateEventModal = () => { return nearestOption?.id || ""; }; - const [createdEvent, setCreatedEvent] = useState({ + const [formEvent, setFormEvent] = useState({ start_date: date ? getLocalDateString(date) : "", start_time: date ? getNearestTimeOption(date, "start") : "", end_time: date ? getNearestTimeOption(date, "end") : "", @@ -71,13 +76,30 @@ export const CreateEventModal = () => { created_by: user.id, }); + // Initialize form data when in edit mode + useEffect(() => { + if (mode === "edit" && event) { + setFormEvent({ + start_date: event.start_date, + start_time: event.start_time || "", + end_time: event.end_time || "", + tablo_id: event.tablo_id, + title: event.title, + description: event.description || "", + created_by: event.created_by, + }); + } + }, [mode, event]); + return (
{/* Header with colored accent */}
-

Nouvel événement

+

+ {mode === "edit" ? "Modifier l'événement" : "Nouvel événement"} +

- {date.toLocaleDateString("fr-FR", { - weekday: "long", - year: "numeric", - month: "long", - day: "numeric", - })} + {mode === "edit" && event + ? new Date(event.start_date).toLocaleDateString("fr-FR", { + weekday: "long", + year: "numeric", + month: "long", + day: "numeric", + }) + : date.toLocaleDateString("fr-FR", { + weekday: "long", + year: "numeric", + month: "long", + day: "numeric", + })}
@@ -114,10 +143,10 @@ export const CreateEventModal = () => {
- setCreatedEvent({ - ...createdEvent, + setFormEvent({ + ...formEvent, title: e.target.value, } as Event) } @@ -136,10 +165,10 @@ export const CreateEventModal = () => { { const option = timeOptions.find( (option) => option.id === value ); if (option && value) { - setCreatedEvent({ - ...createdEvent, + setFormEvent({ + ...formEvent, start_time: value.toString(), }); } @@ -225,14 +254,14 @@ export const CreateEventModal = () => {