From aa68ceacdb6bbd19831628332cc8d6d133a84c48 Mon Sep 17 00:00:00 2001 From: Julian Leucker <leuckerj@gmail.com> Date: Fri, 30 Aug 2024 12:12:30 +0200 Subject: [PATCH] Load subjects once for the entire coursebook --- .../alsijil/frontend/components/coursebook/Coursebook.vue | 7 +++++++ .../coursebook/documentation/DocumentationModal.vue | 6 ++++++ .../coursebook/documentation/LessonInformation.vue | 2 +- .../coursebook/documentation/documentationPartMixin.js | 8 ++++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue index ecf771d40..21b903a2f 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue @@ -53,6 +53,7 @@ :is="itemComponent" :extra-marks="extraMarks" :absence-reasons="absenceReasons" + :subjects="subjects" :documentation="item" :affected-query="lastQuery" :value="(selectedParticipations[item.id] ??= [])" @@ -87,6 +88,7 @@ import { extraMarks } from "../extra_marks/extra_marks.graphql"; import DocumentationLoader from "./documentation/DocumentationLoader.vue"; import sendToServerMixin from "./absences/sendToServerMixin"; import { absenceReasons } from "./absences/absenceReasons.graphql"; +import { subjects } from "aleksis.apps.cursus/components/subject.graphql"; export default { name: "Coursebook", @@ -157,6 +159,7 @@ export default { hashUpdater: false, extraMarks: [], absenceReasons: [], + subjects: [], selectedParticipations: {}, }; }, @@ -169,6 +172,10 @@ export default { query: absenceReasons, update: (data) => data.items, }, + subjects: { + query: subjects, + update: (data) => data.items, + }, }, computed: { // Assertion: Should only fire on page load or selection change. diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationModal.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationModal.vue index 177e886f5..5b5dd101b 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationModal.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationModal.vue @@ -10,6 +10,7 @@ :dialog-activator="activator" :extra-marks="extraMarks" :absence-reasons="absenceReasons" + :subjects="subjects" /> </template> <!-- dialog view -> deactivate dialog --> @@ -18,6 +19,7 @@ v-bind="$attrs" :extra-marks="extraMarks" :absence-reasons="absenceReasons" + :subjects="subjects" @close="popup = false" /> </mobile-fullscreen-dialog> @@ -47,6 +49,10 @@ export default { type: Array, required: true, }, + subjects: { + type: Array, + required: true, + }, }, }; </script> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue index 2f692025e..a104d8442 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonInformation.vue @@ -63,8 +63,8 @@ import SubjectChipSelectField from "aleksis.apps.cursus/components/SubjectChipSe <template v-if="documentation.subject"> <subject-chip-select-field v-if="documentation.canEdit" + :items="subjects" :value="documentation.subject" - :enable-create="false" :disabled="loading" :loading="loading" @input="editSubject" diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/documentationPartMixin.js b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/documentationPartMixin.js index 886803b43..2b30e38d5 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/documentationPartMixin.js +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/documentationPartMixin.js @@ -47,6 +47,13 @@ export default { type: Array, required: true, }, + /** + * Once loaded list of subjects to avoid excessive network and database queries + */ + subjects: { + type: Array, + required: true, + }, }, computed: { @@ -62,6 +69,7 @@ export default { affectedQuery: this.affectedQuery, extraMarks: this.extraMarks, absenceReasons: this.absenceReasons, + subjects: this.subjects, }; }, }, -- GitLab