From ec09021afe12728e1cb61d209ae49621063f16f4 Mon Sep 17 00:00:00 2001 From: Julian Leucker <leuckerj@gmail.com> Date: Fri, 23 Aug 2024 14:07:59 +0200 Subject: [PATCH] Migrate markAsAbsentDay logic to sendToServer hooks --- .../absences/ManageStudentsDialog.vue | 65 ++++--------------- 1 file changed, 13 insertions(+), 52 deletions(-) diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue index 99b7a40c6..38668b1b5 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue @@ -75,58 +75,6 @@ export default { }, }, methods: { - sendToServer(participations, field, value) { - let fieldValue; - - if (field === "absenceReason") { - fieldValue = { - absenceReason: value === "present" ? null : value, - }; - } else if (field === "tardiness") { - fieldValue = { - tardiness: value, - }; - } else { - console.error(`Wrong field '${field}' for sendToServer`); - return; - } - - this.markAsAbsentDay.showAlert = false; - this.markAsAbsentDay.participationIDs = []; - - this.mutate( - updateParticipationStatuses, - { - input: participations.map((participation) => ({ - id: participation.id, - ...fieldValue, - })), - }, - (storedDocumentations, incomingStatuses) => { - const documentation = storedDocumentations.find( - (doc) => doc.id === this.documentation.id, - ); - - incomingStatuses.forEach((newStatus) => { - const participationStatus = documentation.participations.find( - (part) => part.id === newStatus.id, - ); - participationStatus.absenceReason = newStatus.absenceReason; - participationStatus.tardiness = newStatus.tardiness; - participationStatus.isOptimistic = newStatus.isOptimistic; - }); - - this.markAsAbsentDay.reason = incomingStatuses[0].absenceReason?.name; - this.markAsAbsentDay.num = incomingStatuses.length; - - return storedDocumentations; - }, - ); - - if (field === "absenceReason" && value !== "present") { - this.$once("save", this.activateFullDayDialog); - } - }, handleMultipleAction(field, id) { this.loadSelected = true; this.sendToServer(this.selected, field, id); @@ -152,6 +100,19 @@ export default { this.markAsAbsentDay.loading = false; this.markAsAbsentDay.showAlert = true; }, + beforeSendToServer() { + this.markAsAbsentDay.showAlert = false; + this.markAsAbsentDay.participationIDs = []; + }, + duringUpdateSendToServer(_participations, _field, _value, incomingStatuses) { + this.markAsAbsentDay.reason = incomingStatuses[0].absenceReason?.name; + this.markAsAbsentDay.num = incomingStatuses.length; + }, + afterSendToServer(_participations, field, value) { + if (field === "absenceReason" && value !== "present") { + this.$once("save", this.activateFullDayDialog); + } + }, markAsAbsentDayClick() { this.markAsAbsentDay.loading = true; -- GitLab