diff options
| author | Viktoria Wiebe <wiebe@elan-ev.de> | 2024-09-18 11:14:07 +0200 |
|---|---|---|
| committer | Viktoria Wiebe <wiebe@elan-ev.de> | 2024-09-19 09:45:03 +0200 |
| commit | e7cfa5354d3598d1508e1aadb51781ac2e6c018d (patch) | |
| tree | 4c5e7d84e7ba029f5b49189aa5ef8f08a9c30371 /resources/vue/components/courseware/tasks | |
| parent | fa2e6a9438fcb1a8347ce68a8df66748e9f1a8c7 (diff) | |
fix js errors when wrong date is typed in and show error messagebiest-2553
Diffstat (limited to 'resources/vue/components/courseware/tasks')
| -rw-r--r-- | resources/vue/components/courseware/tasks/PagesTaskGroupsShow.vue | 20 | ||||
| -rw-r--r-- | resources/vue/components/courseware/tasks/RenewalDialog.vue | 28 |
2 files changed, 38 insertions, 10 deletions
diff --git a/resources/vue/components/courseware/tasks/PagesTaskGroupsShow.vue b/resources/vue/components/courseware/tasks/PagesTaskGroupsShow.vue index e17d18e..bd29b24 100644 --- a/resources/vue/components/courseware/tasks/PagesTaskGroupsShow.vue +++ b/resources/vue/components/courseware/tasks/PagesTaskGroupsShow.vue @@ -50,10 +50,11 @@ <RenewalDialog v-if="renewalTask" - :renewalDate="renewalDate" :renewalState="renewalTask.attributes.renewal" + :submissionDate="renewalTask.attributes['submission-date']" @update="updateRenewal" @close="closeDialogs" + @nullDate="nullDate" /> <TaskGroupsAddSolversDialog v-if="showTaskGroupsAddSolversDialog" :taskGroup="taskGroup" @newtask="reloadTasks" /> @@ -130,6 +131,7 @@ export default { methods: { ...mapActions({ companionError: 'companionError', + companionWarning: 'companionWarning', companionSuccess: 'companionSuccess', createTaskFeedback: 'createTaskFeedback', deleteTaskFeedback: 'deleteTaskFeedback', @@ -186,7 +188,15 @@ export default { }, }); }, - updateRenewal({ state, date }) { + updateRenewal({ state, date, warn }) { + if (warn) { + this.closeDialogs(); + this.companionWarning({ + info: this.$gettext('Die Verlängerungsfrist darf nicht vor dem Abgabedatum liegen.') + }); + return; + } + const attributes = { renewal: state }; if (date) { attributes['renewal-date'] = date.toISOString(); @@ -210,6 +220,12 @@ export default { } this.closeDialogs(); }, + nullDate() { + this.closeDialogs(); + this.companionError({ + info: this.$gettext('Die Datumsangabe ist ungültig.') + }); + } }, }; </script> diff --git a/resources/vue/components/courseware/tasks/RenewalDialog.vue b/resources/vue/components/courseware/tasks/RenewalDialog.vue index f08719e..c033e56 100644 --- a/resources/vue/components/courseware/tasks/RenewalDialog.vue +++ b/resources/vue/components/courseware/tasks/RenewalDialog.vue @@ -24,7 +24,7 @@ </label> <label v-if="state === 'granted'"> {{ $gettext('neue Frist') }} - <DateInput v-model="date" class="size-l" /> + <DateInput v-model="date" class="size-l" :min="submissionDate" @nullDate="nullDate = true" /> </label> </form> </template> @@ -32,31 +32,43 @@ </template> <script> +import { mapActions } from 'vuex'; import DateInput from '../layouts/CoursewareDateInput.vue'; + export default { - props: ['renewalDate', 'renewalState'], + props: ['renewalState', 'submissionDate'], components: { DateInput, }, data: () => ({ date: null, state: null, + nullDate: false, }), methods: { resetLocalVars() { - this.date = this.renewalDate ?? null; + this.date = this.submissionDate ?? null; this.state = this.renewalState; }, updateRenewal() { + if (this.nullDate) { + this.$emit('nullDate'); + return; + } + const date = new Date(this.date); - date.setHours(23); - date.setMinutes(59); - date.setSeconds(59); - date.setMilliseconds(999); + + if (date > new Date(this.submissionDate)) { + date.setHours(23); + date.setMinutes(59); + date.setSeconds(59); + date.setMilliseconds(999); + } this.$emit('update', { state: this.state, date: this.state === 'granted' ? date || Date.now() : null, + warn: date < new Date(this.submissionDate) }); }, }, @@ -64,7 +76,7 @@ export default { this.resetLocalVars(); }, watch: { - renewalDate(newValue) { + submissionDate(newValue) { if (newValue !== this.date) { this.resetLocalVars(); } |
