From 941f1d819b0ef30709396e699a9e0261d73f194a Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Tue, 19 May 2026 12:31:39 +0200 Subject: [PATCH] =?UTF-8?q?KI-AGENT:=20Leite=20Termine=20nach=20dem=20Spei?= =?UTF-8?q?chern=20zur=C3=BCck=20zur=20Plantafel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/components/EntityEdit.vue | 33 +++++++++++++++++++++-- frontend/pages/organisation/plantafel.vue | 18 ++++++++++--- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/frontend/components/EntityEdit.vue b/frontend/components/EntityEdit.vue index ed27a12..205da09 100644 --- a/frontend/components/EntityEdit.vue +++ b/frontend/components/EntityEdit.vue @@ -378,6 +378,21 @@ const getEntityModalCreateQuery = (datapoint) => { return datapoint.entityModalCreateQuery || {} } +const getPostSaveRoute = () => { + if (type !== "events") return null + + if (route.query.returnTo === "plantafel") { + return { + path: "/organisation/plantafel", + query: { + date: route.query.returnDate || undefined, + view: route.query.returnView || undefined + } + } + } + + return null +} const createItem = async () => { let ret = null @@ -386,7 +401,14 @@ const createItem = async () => { ret = await useEntities(type).create(item.value, true) } else { - ret = await useEntities(type).create(item.value)//dataStore.createNewItem(type,item.value) + const postSaveRoute = getPostSaveRoute() + + if (postSaveRoute) { + ret = await useEntities(type).create(item.value, true) + await router.push(postSaveRoute) + } else { + ret = await useEntities(type).create(item.value)//dataStore.createNewItem(type,item.value) + } } emit('returnData', ret) @@ -401,7 +423,14 @@ const updateItem = async () => { emit('returnData', ret) modal.close() } else { - ret = await useEntities(type).update(item.value.id, item.value) + const postSaveRoute = getPostSaveRoute() + + if (postSaveRoute) { + ret = await useEntities(type).update(item.value.id, item.value, true) + await router.push(postSaveRoute) + } else { + ret = await useEntities(type).update(item.value.id, item.value) + } emit('returnData', ret) } } diff --git a/frontend/pages/organisation/plantafel.vue b/frontend/pages/organisation/plantafel.vue index 9f33883..4864768 100644 --- a/frontend/pages/organisation/plantafel.vue +++ b/frontend/pages/organisation/plantafel.vue @@ -8,6 +8,7 @@ import { useDraggable } from "@vueuse/core" import { expandRecurringEvent } from "~/utils/eventRecurrence" const router = useRouter() +const route = useRoute() const auth = useAuthStore() const profileStore = useProfileStore() const toast = useToast() @@ -15,12 +16,16 @@ const { $api, $dayjs } = useNuxtApp() const { create: createEvent } = useEntities("events") const { list: listStaffTimeSpans, createEntry, update: updateStaffTimeEntry } = useStaffTime() +const allowedCalendarViews = ["resourceTimelineDay", "resourceTimelineWeek", "resourceTimelineMonth"] +const initialRouteDate = /^\d{4}-\d{2}-\d{2}$/.test(String(route.query.date || "")) ? String(route.query.date) : null +const initialRouteView = allowedCalendarViews.includes(String(route.query.view || "")) ? String(route.query.view) : null + const loading = ref(true) const savingAbsence = ref(false) const selectedType = ref("all") const calendarRef = ref(null) -const calendarView = ref("resourceTimelineWeek") -const calendarCurrentDate = ref($dayjs().format("YYYY-MM-DD")) +const calendarView = ref(initialRouteView || "resourceTimelineWeek") +const calendarCurrentDate = ref(initialRouteDate || $dayjs().format("YYYY-MM-DD")) const calendarTitle = ref("") const visibleRange = ref({ from: $dayjs().startOf("month").format("YYYY-MM-DD"), @@ -370,7 +375,14 @@ const calendarOptions = computed(() => ({ return } - router.push(`/standardEntity/events/edit/${info.event.extendedProps.eventId}`) + router.push({ + path: `/standardEntity/events/edit/${info.event.extendedProps.eventId}`, + query: { + returnTo: "plantafel", + returnDate: calendarCurrentDate.value, + returnView: calendarView.value + } + }) }, datesSet(info) { const nextFrom = $dayjs(info.start).format("YYYY-MM-DD")