diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookControls.vue b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookControls.vue index e7dd45acd6446b258615452d7be02b08692202c6..96bf15d75ac030201f46c2d2e96ed20b066aa39d 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookControls.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookControls.vue @@ -72,6 +72,8 @@ import CoursebookPrintDialog from "./CoursebookPrintDialog.vue"; <coursebook-print-dialog v-if="pageType === 'documentations'" :loading="selectLoading" + :available-groups="groups" + :value="currentGroups" /> </div> </div> @@ -135,6 +137,13 @@ export default { o.id === this.value.objId, ); }, + currentGroups() { + return this.groups.filter( + (o) => + TYPENAMES_TO_TYPES[o.__typename] === this.value.objType && + o.id === this.value.objId, + ); + }, pageTypeButtonText() { if (this.value.pageType === "documentations") { return this.$t("alsijil.coursebook.filter.page_type.absences"); diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue index ddf50d1231fa40d05debf59ce0b629471b421b0c..2972c41b9f16ba22e4d601b945e04f24bf7ec3bc 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue @@ -19,6 +19,19 @@ import SecondaryActionButton from "aleksis.core/components/generic/buttons/Secon <template #title> {{ $t("alsijil.coursebook.print_title") }} </template> + <template #content> + <v-autocomplete + :items="availableGroups" + item-text="name" + item-value="id" + :value="value" + @input="setGroupSelection" + @click:clear="setGroupSelection" + multiple + chips + deletable-chips + /> + </template> </mobile-fullscreen-dialog> </template> @@ -29,6 +42,21 @@ import SecondaryActionButton from "aleksis.core/components/generic/buttons/Secon export default { name: "CoursebookPrintDialog", props: { + /** + * Groups available for selection + */ + availableGroups: { + type: Array, + required: true, + }, + /** + * Initially selected groups + */ + value: { + type: Array, + required: false, + default: [], + }, /** * Loading state */ @@ -38,10 +66,28 @@ export default { default: false, }, }, + emits: ["input"], data() { return { dialog: false, + currentGroupSelection: [], }; }, + computed: { + selectedGroups() { + if (this.currentGroupSelection.length == 0) { + return this.value.map((group) => group.id); + } else { + return this.currentGroupSelection; + } + }, + }, + methods: { + setGroupSelection(groups) { + this.$emit("input", groups); + this.currentGroupSelection=groups; + console.log(groups); + }, + }, }; </script>