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

Touch documentations when opening manage students dialog

parent e5b9a0ff
No related branches found
No related tags found
1 merge request!362Resolve "Add personal note management dialog in course book"
......@@ -2,11 +2,13 @@
import { DateTime } from "luxon";
import ManageStudentsDialog from "./ManageStudentsDialog.vue";
import documentationPartMixin from "../documentation/documentationPartMixin";
import { touchDocumentation } from "./participationStatus.graphql";
import mutateMixin from "aleksis.core/mixins/mutateMixin.js";
export default {
name: "ManageStudentsTrigger",
components: { ManageStudentsDialog },
mixins: [documentationPartMixin],
mixins: [documentationPartMixin, mutateMixin],
data() {
return {
canOpenParticipation: false,
......@@ -30,6 +32,26 @@ export default {
clearTimeout(this.timeout);
}
},
methods: {
touchDocumentation() {
this.mutate(
touchDocumentation,
{
documentationId: this.documentation.id,
},
(storedDocumentations, incoming) => {
// ID may be different now
console.log("incoming:", incoming);
return storedDocumentations.map((doc) =>
doc.id === this.documentation.id
? Object.assign(doc, incoming, { oldId: doc.id })
: doc,
);
},
);
},
},
};
</script>
......@@ -40,9 +62,10 @@ export default {
dense
color="primary"
outlined
:disabled="!canOpenParticipation"
:disabled="!canOpenParticipation || loading"
v-bind="attrs"
v-on="on"
@click="touchDocumentation"
>
<v-icon>$edit</v-icon>
</v-chip>
......
......@@ -16,3 +16,24 @@ mutation updateParticipationStatuses(
}
}
}
mutation touchDocumentation($documentationId: ID!) {
touchDocumentation(documentationId: $documentationId) {
items: documentation {
id
participations {
id
person {
id
fullName
}
absenceReason {
id
name
shortName
}
isOptimistic
}
}
}
}
......@@ -708,6 +708,12 @@ class Documentation(CalendarEvent):
return cls.objects.get(id=_id)
def touch(self):
# TODO: check if participation statuses etc. are created correctly.
# might require some extra work, as the object may have been created
# recently, so checking again would be overkill.
pass
class ParticipationStatus(CalendarEvent):
"""A participation or absence record about a single person.
......
......@@ -18,6 +18,7 @@ from .documentation import (
DocumentationBatchCreateOrUpdateMutation,
DocumentationType,
LessonsForPersonType,
TouchDocumentationMutation,
)
from .participation_status import ParticipationStatusBatchPatchMutation
......
......@@ -139,3 +139,15 @@ class DocumentationBatchCreateOrUpdateMutation(graphene.Mutation):
objs = [cls.create_or_update(info, doc) for doc in input]
return DocumentationBatchCreateOrUpdateMutation(documentations=objs)
class TouchDocumentationMutation(graphene.Mutation):
class Arguments:
documentation_id = graphene.ID(required=True)
documentation = graphene.Field(DocumentationType)
def mutate(root, info, documentation_id):
documentation = Documentation.get_or_create_by_id(documentation_id, info.context.user)
documentation.touch()
return TouchDocumentationMutation(documentation=documentation)
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