diff --git a/ui/src/pages/planning.tsx b/ui/src/pages/planning.tsx index f9e0b2d..b3f2f75 100644 --- a/ui/src/pages/planning.tsx +++ b/ui/src/pages/planning.tsx @@ -9,6 +9,7 @@ import { SelectListItem, } from "@ui/ui-library/select"; import { Outlet, useNavigate, useParams } from "react-router-dom"; +import { generateICSFromEvents, downloadICSFile } from "@ui/utils/helpers"; type ViewType = "month" | "week" | "day"; @@ -31,6 +32,27 @@ export const PlanningPage = () => { const deleteEvent = useDeleteEvent(); + const handleExportICS = () => { + if (!tabloEvents || tabloEvents.length === 0) { + return; + } + + const calendarName = + selectedTabloId === "all" + ? "Planning - Tous les tablos" + : tablos?.find((t) => t.id === selectedTabloId)?.name || "Planning"; + + const icsContent = generateICSFromEvents(tabloEvents, calendarName); + const filename = + selectedTabloId === "all" + ? "planning-tous-tablos.ics" + : `planning-${ + tablos?.find((t) => t.id === selectedTabloId)?.name || "tablo" + }.ics`; + + downloadICSFile(icsContent, filename); + }; + const navigateToCreateEvent = (date: Date, tablo_id: string) => { if (tablo_id === "all") { navigate({ @@ -732,6 +754,27 @@ export const PlanningPage = () => {
+
{(["month", "week", "day"] as ViewType[]).map((view) => (