diff --git a/frontend/pages/organisation/plantafel.vue b/frontend/pages/organisation/plantafel.vue
index 499dc0fa..74d40edf 100644
--- a/frontend/pages/organisation/plantafel.vue
+++ b/frontend/pages/organisation/plantafel.vue
@@ -185,7 +185,9 @@ const resolvedPlanningBoardConfig = computed(() => {
const normalizedEndTime = /^\d{2}:\d{2}$/.test(String(config.endTime || "")) ? String(config.endTime) : "21:00"
const normalizedSlotMinutes = Number(config.slotMinutes)
const normalizedWeekStartsOn = Number(config.weekStartsOn)
+ const normalizedWeekEndsOn = Number(config.weekEndsOn)
const allowedSlotMinutes = [15, 30, 60, 120, 180]
+ const allowedWeekEndDays = [5, 6, 0]
return {
startTime: normalizedStartTime,
@@ -193,10 +195,24 @@ const resolvedPlanningBoardConfig = computed(() => {
slotMinutes: allowedSlotMinutes.includes(normalizedSlotMinutes) ? normalizedSlotMinutes : 180,
weekStartsOn: Number.isInteger(normalizedWeekStartsOn) && normalizedWeekStartsOn >= 1 && normalizedWeekStartsOn <= 5
? normalizedWeekStartsOn
- : 1
+ : 1,
+ weekEndsOn: allowedWeekEndDays.includes(normalizedWeekEndsOn) ? normalizedWeekEndsOn : 5
}
})
+const planningBoardHiddenDays = computed(() => {
+ const visibleDays = new Set()
+ let day = resolvedPlanningBoardConfig.value.weekStartsOn
+
+ for (let index = 0; index < 7; index += 1) {
+ visibleDays.add(day)
+ if (day === resolvedPlanningBoardConfig.value.weekEndsOn) break
+ day = (day + 1) % 7
+ }
+
+ return [0, 1, 2, 3, 4, 5, 6].filter((weekday) => !visibleDays.has(weekday))
+})
+
const resolvedQuickEntryConfig = computed(() => {
const config = tenantCalendarConfig.value?.quickEntry || {}
@@ -358,7 +374,7 @@ const calendarOptions = computed(() => ({
buttonText: "Woche",
slotDuration: { minutes: resolvedPlanningBoardConfig.value.slotMinutes },
snapDuration: { minutes: resolvedPlanningBoardConfig.value.slotMinutes },
- weekends: false,
+ hiddenDays: planningBoardHiddenDays.value,
slotMinTime: `${resolvedPlanningBoardConfig.value.startTime}:00`,
slotMaxTime: `${resolvedPlanningBoardConfig.value.endTime}:00`
},
diff --git a/frontend/pages/settings/tenant.vue b/frontend/pages/settings/tenant.vue
index 391fdfb0..d6dc10fd 100644
--- a/frontend/pages/settings/tenant.vue
+++ b/frontend/pages/settings/tenant.vue
@@ -138,11 +138,18 @@ const planningBoardWeekStartOptions = [
{ label: "Freitag", value: 5 }
]
+const planningBoardWeekEndOptions = [
+ { label: "Freitag", value: 5 },
+ { label: "Samstag", value: 6 },
+ { label: "Sonntag", value: 0 }
+]
+
const planningBoardConfig = reactive({
startTime: auth.activeTenantData?.calendarConfig?.planningBoard?.startTime || "06:00",
endTime: auth.activeTenantData?.calendarConfig?.planningBoard?.endTime || "21:00",
slotMinutes: auth.activeTenantData?.calendarConfig?.planningBoard?.slotMinutes || 180,
- weekStartsOn: auth.activeTenantData?.calendarConfig?.planningBoard?.weekStartsOn ?? 1
+ weekStartsOn: auth.activeTenantData?.calendarConfig?.planningBoard?.weekStartsOn ?? 1,
+ weekEndsOn: auth.activeTenantData?.calendarConfig?.planningBoard?.weekEndsOn ?? 5
})
const canManageMcpTokens = computed(() => Boolean(auth.user?.is_admin || auth.hasPermission("mcp.tokens.write")))
@@ -248,6 +255,7 @@ const setupPage = async () => {
planningBoardConfig.endTime = auth.activeTenantData?.calendarConfig?.planningBoard?.endTime || "21:00"
planningBoardConfig.slotMinutes = auth.activeTenantData?.calendarConfig?.planningBoard?.slotMinutes || 180
planningBoardConfig.weekStartsOn = auth.activeTenantData?.calendarConfig?.planningBoard?.weekStartsOn ?? 1
+ planningBoardConfig.weekEndsOn = auth.activeTenantData?.calendarConfig?.planningBoard?.weekEndsOn ?? 5
}
const features = ref({ ...defaultFeatures, ...(auth.activeTenantData?.features || {}) })
@@ -582,7 +590,8 @@ const savePlanningBoardConfig = async () => {
startTime: planningBoardConfig.startTime || "06:00",
endTime: planningBoardConfig.endTime || "21:00",
slotMinutes: Number(planningBoardConfig.slotMinutes) || 180,
- weekStartsOn: Number(planningBoardConfig.weekStartsOn)
+ weekStartsOn: Number(planningBoardConfig.weekStartsOn),
+ weekEndsOn: Number(planningBoardConfig.weekEndsOn)
}
}
})
@@ -789,6 +798,17 @@ onMounted(() => {
/>
+
+
+
+