diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue index ecf771d40c7bba48bc9daec58248e853c3379181..21b903a2fd2894249dcd2398518c4e6f9bab96e8 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 177e886f5b7d8e73eb66299738366e9cb22f496a..5b5dd101b76288cd1b09ba5418a452d70a9425fa 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 2f692025e83d2cf3ed951aec38f5e0c34cb59572..a104d84425d8317091d649ce7b0b88919fdf9c52 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 886803b433be0a1372cf2bd27620700b49d24f2f..2b30e38d57a9f803b56a4e0ea1c8f7c5c27dc49f 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, }; }, },