feat: configure planning board week end
This commit is contained in:
@@ -185,7 +185,9 @@ const resolvedPlanningBoardConfig = computed(() => {
|
|||||||
const normalizedEndTime = /^\d{2}:\d{2}$/.test(String(config.endTime || "")) ? String(config.endTime) : "21:00"
|
const normalizedEndTime = /^\d{2}:\d{2}$/.test(String(config.endTime || "")) ? String(config.endTime) : "21:00"
|
||||||
const normalizedSlotMinutes = Number(config.slotMinutes)
|
const normalizedSlotMinutes = Number(config.slotMinutes)
|
||||||
const normalizedWeekStartsOn = Number(config.weekStartsOn)
|
const normalizedWeekStartsOn = Number(config.weekStartsOn)
|
||||||
|
const normalizedWeekEndsOn = Number(config.weekEndsOn)
|
||||||
const allowedSlotMinutes = [15, 30, 60, 120, 180]
|
const allowedSlotMinutes = [15, 30, 60, 120, 180]
|
||||||
|
const allowedWeekEndDays = [5, 6, 0]
|
||||||
|
|
||||||
return {
|
return {
|
||||||
startTime: normalizedStartTime,
|
startTime: normalizedStartTime,
|
||||||
@@ -193,10 +195,24 @@ const resolvedPlanningBoardConfig = computed(() => {
|
|||||||
slotMinutes: allowedSlotMinutes.includes(normalizedSlotMinutes) ? normalizedSlotMinutes : 180,
|
slotMinutes: allowedSlotMinutes.includes(normalizedSlotMinutes) ? normalizedSlotMinutes : 180,
|
||||||
weekStartsOn: Number.isInteger(normalizedWeekStartsOn) && normalizedWeekStartsOn >= 1 && normalizedWeekStartsOn <= 5
|
weekStartsOn: Number.isInteger(normalizedWeekStartsOn) && normalizedWeekStartsOn >= 1 && normalizedWeekStartsOn <= 5
|
||||||
? normalizedWeekStartsOn
|
? 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 resolvedQuickEntryConfig = computed(() => {
|
||||||
const config = tenantCalendarConfig.value?.quickEntry || {}
|
const config = tenantCalendarConfig.value?.quickEntry || {}
|
||||||
|
|
||||||
@@ -358,7 +374,7 @@ const calendarOptions = computed(() => ({
|
|||||||
buttonText: "Woche",
|
buttonText: "Woche",
|
||||||
slotDuration: { minutes: resolvedPlanningBoardConfig.value.slotMinutes },
|
slotDuration: { minutes: resolvedPlanningBoardConfig.value.slotMinutes },
|
||||||
snapDuration: { minutes: resolvedPlanningBoardConfig.value.slotMinutes },
|
snapDuration: { minutes: resolvedPlanningBoardConfig.value.slotMinutes },
|
||||||
weekends: false,
|
hiddenDays: planningBoardHiddenDays.value,
|
||||||
slotMinTime: `${resolvedPlanningBoardConfig.value.startTime}:00`,
|
slotMinTime: `${resolvedPlanningBoardConfig.value.startTime}:00`,
|
||||||
slotMaxTime: `${resolvedPlanningBoardConfig.value.endTime}:00`
|
slotMaxTime: `${resolvedPlanningBoardConfig.value.endTime}:00`
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -138,11 +138,18 @@ const planningBoardWeekStartOptions = [
|
|||||||
{ label: "Freitag", value: 5 }
|
{ label: "Freitag", value: 5 }
|
||||||
]
|
]
|
||||||
|
|
||||||
|
const planningBoardWeekEndOptions = [
|
||||||
|
{ label: "Freitag", value: 5 },
|
||||||
|
{ label: "Samstag", value: 6 },
|
||||||
|
{ label: "Sonntag", value: 0 }
|
||||||
|
]
|
||||||
|
|
||||||
const planningBoardConfig = reactive({
|
const planningBoardConfig = reactive({
|
||||||
startTime: auth.activeTenantData?.calendarConfig?.planningBoard?.startTime || "06:00",
|
startTime: auth.activeTenantData?.calendarConfig?.planningBoard?.startTime || "06:00",
|
||||||
endTime: auth.activeTenantData?.calendarConfig?.planningBoard?.endTime || "21:00",
|
endTime: auth.activeTenantData?.calendarConfig?.planningBoard?.endTime || "21:00",
|
||||||
slotMinutes: auth.activeTenantData?.calendarConfig?.planningBoard?.slotMinutes || 180,
|
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")))
|
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.endTime = auth.activeTenantData?.calendarConfig?.planningBoard?.endTime || "21:00"
|
||||||
planningBoardConfig.slotMinutes = auth.activeTenantData?.calendarConfig?.planningBoard?.slotMinutes || 180
|
planningBoardConfig.slotMinutes = auth.activeTenantData?.calendarConfig?.planningBoard?.slotMinutes || 180
|
||||||
planningBoardConfig.weekStartsOn = auth.activeTenantData?.calendarConfig?.planningBoard?.weekStartsOn ?? 1
|
planningBoardConfig.weekStartsOn = auth.activeTenantData?.calendarConfig?.planningBoard?.weekStartsOn ?? 1
|
||||||
|
planningBoardConfig.weekEndsOn = auth.activeTenantData?.calendarConfig?.planningBoard?.weekEndsOn ?? 5
|
||||||
}
|
}
|
||||||
|
|
||||||
const features = ref({ ...defaultFeatures, ...(auth.activeTenantData?.features || {}) })
|
const features = ref({ ...defaultFeatures, ...(auth.activeTenantData?.features || {}) })
|
||||||
@@ -582,7 +590,8 @@ const savePlanningBoardConfig = async () => {
|
|||||||
startTime: planningBoardConfig.startTime || "06:00",
|
startTime: planningBoardConfig.startTime || "06:00",
|
||||||
endTime: planningBoardConfig.endTime || "21:00",
|
endTime: planningBoardConfig.endTime || "21:00",
|
||||||
slotMinutes: Number(planningBoardConfig.slotMinutes) || 180,
|
slotMinutes: Number(planningBoardConfig.slotMinutes) || 180,
|
||||||
weekStartsOn: Number(planningBoardConfig.weekStartsOn)
|
weekStartsOn: Number(planningBoardConfig.weekStartsOn),
|
||||||
|
weekEndsOn: Number(planningBoardConfig.weekEndsOn)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -789,6 +798,17 @@ onMounted(() => {
|
|||||||
/>
|
/>
|
||||||
</UFormField>
|
</UFormField>
|
||||||
|
|
||||||
|
<UFormField
|
||||||
|
label="Letzter angezeigter Wochentag:"
|
||||||
|
>
|
||||||
|
<USelectMenu
|
||||||
|
v-model="planningBoardConfig.weekEndsOn"
|
||||||
|
:items="planningBoardWeekEndOptions"
|
||||||
|
label-key="label"
|
||||||
|
value-key="value"
|
||||||
|
/>
|
||||||
|
</UFormField>
|
||||||
|
|
||||||
<UButton
|
<UButton
|
||||||
class="mt-1"
|
class="mt-1"
|
||||||
@click="savePlanningBoardConfig"
|
@click="savePlanningBoardConfig"
|
||||||
|
|||||||
Reference in New Issue
Block a user