From 69b592d3133edca2435f817ce3827e52445d6bfa Mon Sep 17 00:00:00 2001 From: Hangzhi Yu <hangzhi@protonmail.com> Date: Wed, 4 Dec 2024 20:01:15 +0100 Subject: [PATCH] Re-set start datetime when end datetime gets set to an earlier value (and vice versa) in absence creation dialog --- .../absences/AbsenceCreationForm.vue | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue index 74f07cc4..6da4703e 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/AbsenceCreationForm.vue @@ -30,9 +30,10 @@ :label="$t('forms.labels.start')" :max-date="endDate" :max-time="maxStartTime" + :limit-selectable-range="false" :rules="$rules().required.build()" :value="startDate" - @input="$emit('start-date', $event)" + @input="handleStartDate" /> </div> </v-col> @@ -42,9 +43,10 @@ :label="$t('forms.labels.end')" :min-date="startDate" :min-time="minEndTime" + :limit-selectable-range="false" :rules="$rules().required.build()" :value="endDate" - @input="$emit('end-date', $event)" + @input="handleEndDate" /> </div> </v-col> @@ -141,5 +143,23 @@ export default { return start.plus({ minutes: 5 }).toFormat("HH:mm"); }, }, + methods: { + handleStartDate(startDate) { + const parsedStart = DateTime.fromISO(startDate); + const parsedEnd = DateTime.fromISO(this.endDate); + if (parsedStart >= parsedEnd) { + this.$emit('end-date', parsedStart.plus({ minutes: 5 }).toISO({ suppressSeconds: true })); + } + this.$emit('start-date', startDate); + }, + handleEndDate(endDate) { + const parsedStart = DateTime.fromISO(this.startDate); + const parsedEnd = DateTime.fromISO(endDate); + if (parsedEnd <= parsedStart) { + this.$emit('start-date', parsedEnd.minus({ minutes: 5 }).toISO({ suppressSeconds: true })); + } + this.$emit('end-date', endDate); + }, + }, }; </script> -- GitLab