From a94e3eabc5a49e50407961af5b8ecaebe3bb2335 Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 3 Mar 2025 18:31:33 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20d'un=20dialogue=20pour=20cr=C3=A9er=20u?= =?UTF-8?q?n=20nouveau=20calendrier=20et=20mise=20=C3=A0=20jour=20de=20la?= =?UTF-8?q?=20logique=20de=20gestion=20des=20calendriers=20dans=20le=20com?= =?UTF-8?q?posant=20client.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ansible/playbooks/5_nextcloud.yml | 4 +- front/components/calendar/calendar-client.tsx | 58 ++++++- front/components/calendar/calendar-dialog.tsx | 114 +++++++++++++ front/components/calendar/event-dialog.tsx | 154 +++++++++++------- 4 files changed, 267 insertions(+), 63 deletions(-) create mode 100644 front/components/calendar/calendar-dialog.tsx diff --git a/ansible/playbooks/5_nextcloud.yml b/ansible/playbooks/5_nextcloud.yml index c8a054e..2c7c263 100644 --- a/ansible/playbooks/5_nextcloud.yml +++ b/ansible/playbooks/5_nextcloud.yml @@ -56,8 +56,8 @@ with_indexed_items: "{{ trusted_domains }}" register: trusted_domains_config until: trusted_domains_config is success - retries: 3 - delay: 5 + retries: 6 + delay: 10 - name: Installer l'application SSO & SAML shell: > diff --git a/front/components/calendar/calendar-client.tsx b/front/components/calendar/calendar-client.tsx index 9de0282..743fc99 100644 --- a/front/components/calendar/calendar-client.tsx +++ b/front/components/calendar/calendar-client.tsx @@ -12,14 +12,16 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Loader2, Plus } from "lucide-react"; import { useCalendarEvents } from "@/hooks/use-calendar-events"; import { EventDialog } from "@/components/calendar/event-dialog"; -import { Calendar as CalendarType } from "@prisma/client"; +import { Calendar, Calendar as CalendarType } from "@prisma/client"; import { useToast } from "@/components/ui/use-toast"; +import { CalendarDialog } from "./calendar-dialog"; interface CalendarClientProps { initialCalendars: CalendarType[]; } export function CalendarClient({ initialCalendars }: CalendarClientProps) { + const [isCalendarDialogOpen, setIsCalendarDialogOpen] = useState(false); const [calendars, setCalendars] = useState(initialCalendars); const [selectedCalendarId, setSelectedCalendarId] = useState( initialCalendars[0]?.id || "" @@ -146,6 +148,43 @@ export function CalendarClient({ initialCalendars }: CalendarClientProps) { setSelectedCalendarId(calendarId); }; + // Fonction pour créer un nouveau calendrier + const handleCreateCalendar = async (calendarData: Partial) => { + try { + const response = await fetch("/api/calendars", { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify(calendarData), + }); + + if (!response.ok) { + throw new Error(`Erreur ${response.status}: ${await response.text()}`); + } + + const newCalendar = await response.json(); + + // Mettre à jour la liste des calendriers + setCalendars([...calendars, newCalendar]); + + // Sélectionner automatiquement le nouveau calendrier + setSelectedCalendarId(newCalendar.id); + + toast({ + title: "Calendrier créé", + description: `Le calendrier "${newCalendar.name}" a été créé avec succès.`, + }); + } catch (error) { + console.error("Erreur lors de la création du calendrier:", error); + toast({ + title: "Erreur", + description: "Impossible de créer le calendrier.", + variant: "destructive", + }); + } + }; + return (
{/* Options et filtres du calendrier */} @@ -169,6 +208,14 @@ export function CalendarClient({ initialCalendars }: CalendarClientProps) { {calendar.name} ))} +