Skip to content
Snippets Groups Projects
Commit d4c71e45 authored by Julian's avatar Julian
Browse files

Use TardinessField in ManageStudentsDialog.vue

parent 1efecfce
No related branches found
No related tags found
1 merge request!362Resolve "Add personal note management dialog in course book"
...@@ -28,6 +28,7 @@ export default { ...@@ -28,6 +28,7 @@ export default {
LessonInformation, LessonInformation,
MobileFullscreenDialog, MobileFullscreenDialog,
SlideIterator, SlideIterator,
TardinessField,
}, },
mixins: [documentationPartMixin, mutateMixin], mixins: [documentationPartMixin, mutateMixin],
data() { data() {
...@@ -53,14 +54,27 @@ export default { ...@@ -53,14 +54,27 @@ export default {
}, },
methods: { methods: {
sendToServer(participations, field, value) { 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( this.mutate(
updateParticipationStatuses, updateParticipationStatuses,
{ {
input: participations.map((participation) => ({ input: participations.map((participation) => ({
id: participation.id, id: participation.id,
absenceReason: value === "present" ? null : value, ...fieldValue
})), })),
}, },
(storedDocumentations, incomingStatuses) => { (storedDocumentations, incomingStatuses) => {
...@@ -73,6 +87,7 @@ export default { ...@@ -73,6 +87,7 @@ export default {
(part) => part.id === newStatus.id, (part) => part.id === newStatus.id,
); );
participationStatus.absenceReason = newStatus.absenceReason; participationStatus.absenceReason = newStatus.absenceReason;
participationStatus.tardiness = newStatus.tardiness;
participationStatus.isOptimistic = newStatus.isOptimistic; participationStatus.isOptimistic = newStatus.isOptimistic;
}); });
...@@ -156,7 +171,7 @@ export default { ...@@ -156,7 +171,7 @@ export default {
item.absenceReason || item.absenceReason ||
item.notesWithNote?.length > 0 || item.notesWithNote?.length > 0 ||
item.notesWithExtraMark?.length > 0 || item.notesWithExtraMark?.length > 0 ||
item.noteWithTardiness item.tardiness
" "
class="d-flex flex-wrap gap" class="d-flex flex-wrap gap"
> >
...@@ -184,8 +199,8 @@ export default { ...@@ -184,8 +199,8 @@ export default {
small small
/> />
<tardiness-chip <tardiness-chip
v-if="item.noteWithTardiness" v-if="item.tardiness"
:tardiness="item.noteWithTardiness.tardiness" :tardiness="item.tardiness"
small small
/> />
</v-list-item-subtitle> </v-list-item-subtitle>
...@@ -211,6 +226,14 @@ export default { ...@@ -211,6 +226,14 @@ export default {
:value="item.absenceReason?.id || 'present'" :value="item.absenceReason?.id || 'present'"
@input="sendToServer([item], 'absenceReason', $event)" @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-card-text>
<v-divider /> <v-divider />
<v-card-text> <v-card-text>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment