diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue index 962b04a775382c82fc260698e432a3cfeac48ba5..70033ab8473df0e7892d6d1c2979a27f436a898c 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue @@ -28,6 +28,7 @@ export default { LessonInformation, MobileFullscreenDialog, SlideIterator, + TardinessField, }, mixins: [documentationPartMixin, mutateMixin], data() { @@ -53,14 +54,27 @@ export default { }, methods: { sendToServer(participations, field, value) { - if (field !== "absenceReason") return; + 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.mutate( updateParticipationStatuses, { input: participations.map((participation) => ({ id: participation.id, - absenceReason: value === "present" ? null : value, + ...fieldValue })), }, (storedDocumentations, incomingStatuses) => { @@ -73,6 +87,7 @@ export default { (part) => part.id === newStatus.id, ); participationStatus.absenceReason = newStatus.absenceReason; + participationStatus.tardiness = newStatus.tardiness; participationStatus.isOptimistic = newStatus.isOptimistic; }); @@ -156,7 +171,7 @@ export default { item.absenceReason || item.notesWithNote?.length > 0 || item.notesWithExtraMark?.length > 0 || - item.noteWithTardiness + item.tardiness " class="d-flex flex-wrap gap" > @@ -184,8 +199,8 @@ export default { small /> <tardiness-chip - v-if="item.noteWithTardiness" - :tardiness="item.noteWithTardiness.tardiness" + v-if="item.tardiness" + :tardiness="item.tardiness" small /> </v-list-item-subtitle> @@ -211,6 +226,14 @@ export default { :value="item.absenceReason?.id || 'present'" @input="sendToServer([item], 'absenceReason', $event)" /> + <tardiness-field + v-bind="documentationPartProps" + :loading="loading" + :disabled="loading" + :participation="item" + :value="item.tardiness" + @input="sendToServer([item], 'tardiness', $event)" + /> </v-card-text> <v-divider /> <v-card-text>