From 4aa505f821ef83c1d1279b0c6e16e40f67ce75fa Mon Sep 17 00:00:00 2001 From: Julian Leucker <leuckerj@gmail.com> Date: Thu, 13 Jun 2024 17:22:38 +0200 Subject: [PATCH] Load extraMarks once for the coursebook --- .../frontend/components/coursebook/Coursebook.vue | 9 +++++++++ .../frontend/components/coursebook/CoursebookDay.vue | 5 +++++ .../coursebook/documentation/DocumentationModal.vue | 8 +++++++- .../documentation/documentationPartMixin.js | 8 ++++++++ .../coursebook/personal_notes/ExtraMarksNote.vue | 11 ----------- 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue index 4e673db88..1403a38bb 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue @@ -34,6 +34,7 @@ @init="transition" :key="'day-' + date" ref="days" + :extra-marks="extraMarks" /> <coursebook-loader /> @@ -73,6 +74,7 @@ import { documentationsForCoursebook } from "./coursebook.graphql"; import CoursebookFilters from "./CoursebookFilters.vue"; import CoursebookLoader from "./CoursebookLoader.vue"; import CoursebookEmptyMessage from "./CoursebookEmptyMessage.vue"; +import { extraMarks } from "../extra_marks/extra_marks.graphql"; export default { name: "Coursebook", @@ -132,8 +134,15 @@ export default { initDate: false, currentDate: "", hashUpdater: false, + extraMarks: [], }; }, + apollo: { + extraMarks: { + query: extraMarks, + update: (data) => data.items, + }, + }, computed: { // Assertion: Should only fire on page load or selection change. // Resets date range. diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookDay.vue b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookDay.vue index 2f15c3fd0..c4a677c9f 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookDay.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookDay.vue @@ -12,6 +12,7 @@ > <documentation-modal :documentation="doc" + :extra-marks="extraMarks" :affected-query="lastQuery" /> </v-list-item> @@ -45,6 +46,10 @@ export default { required: false, default: false, }, + extraMarks: { + type: Array, + required: true, + }, }, emits: ["init"], methods: { diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationModal.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationModal.vue index 460f39f97..c10a5eb55 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationModal.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/DocumentationModal.vue @@ -4,7 +4,7 @@ <mobile-fullscreen-dialog v-model="popup" max-width="500px"> <template #activator="activator"> <!-- list view -> activate dialog --> - <documentation compact v-bind="$attrs" :dialog-activator="activator" /> + <documentation compact v-bind="$attrs" :dialog-activator="activator" :extra-marks="extraMarks" /> </template> <!-- dialog view -> deactivate dialog --> <!-- cancel | save (through lesson-summary) --> @@ -27,5 +27,11 @@ export default { popup: false, }; }, + props: { + extraMarks: { + type: Array, + required: true, + }, + }, }; </script> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/documentationPartMixin.js b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/documentationPartMixin.js index 88a8e852f..35243ee3c 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/documentationPartMixin.js +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/documentationPartMixin.js @@ -33,6 +33,13 @@ export default { required: false, default: () => ({ attrs: {}, on: {} }), }, + /** + * Once loaded list of all extra marks to avoid excessive network and database queries + */ + extraMarks: { + type: Array, + required: true, + }, }, computed: { @@ -46,6 +53,7 @@ export default { compact: this.compact, dialogActivator: this.dialogActivator, affectedQuery: this.affectedQuery, + extraMarks: this.extraMarks, }; }, }, diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/personal_notes/ExtraMarksNote.vue b/aleksis/apps/alsijil/frontend/components/coursebook/personal_notes/ExtraMarksNote.vue index d94a02f73..177b21e80 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/personal_notes/ExtraMarksNote.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/personal_notes/ExtraMarksNote.vue @@ -13,17 +13,6 @@ export default { required: true, }, }, - data() { - return { - extraMarks: [], - }; - }, - apollo: { - extraMarks: { - query: extraMarks, - update: (data) => data.items, - }, - }, }; </script> -- GitLab