From 7faa1dfbe012c141e6506ddf7ba6a36abe6db412 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Fri, 24 Jan 2025 18:25:53 +0100 Subject: [PATCH] Add print button to coursebook group tab --- .../coursebook/CoursebookPrintDialog.vue | 17 +++++++++++++++-- .../statistics/StatisticsForGroupTab.vue | 9 +++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue index 976dccbeb..8a9058d6d 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue @@ -20,9 +20,10 @@ import CancelButton from "aleksis.core/components/generic/buttons/CancelButton.v {{ $t("alsijil.coursebook.print.title") }} </template> <template #content> - {{ $t("alsijil.coursebook.print.groups") }} <v-autocomplete + v-if="!group" :items="availableGroups" + :label="$t('alsijil.coursebook.print.groups')" item-text="name" item-value="id" :value="value" @@ -87,7 +88,16 @@ export default { */ availableGroups: { type: Array, - required: true, + required: false, + default: () => [], + }, + /** + * Set a group to use this dialog exclusively for + */ + group: { + type: Object, + required: false, + default: null, }, /** * Initially selected groups @@ -121,6 +131,9 @@ export default { }, computed: { selectedGroups() { + if (this.group) { + return [this.group.id]; + } if (this.currentGroupSelection.length == 0) { return this.value.map((group) => group.id); } else { diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForGroupTab.vue b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForGroupTab.vue index 95d377ac6..1575348b9 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForGroupTab.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForGroupTab.vue @@ -10,6 +10,9 @@ :show-select="false" @items="items = $event" > + <template #additionalActions> + <coursebook-print-dialog :group="group" /> + </template> <template v-for="(extraMark, index) in extraMarks" #[`extraMarks.${index}.count`]="{ item }" @@ -67,7 +70,7 @@ :to="{ name: 'core.personById', params: { - personId: item.person.id, + id: item.person.id, }, hash: '#' + MODE.PARTICIPATIONS, }" @@ -81,13 +84,14 @@ import groupOverviewTabMixin from "aleksis.core/mixins/groupOverviewTabMixin.js" import CRUDList from "aleksis.core/components/generic/CRUDList.vue"; import PersonChip from "aleksis.core/components/person/PersonChip.vue"; import SecondaryActionButton from "aleksis.core/components/generic/buttons/SecondaryActionButton.vue"; +import CoursebookPrintDialog from "../CoursebookPrintDialog.vue"; import AbsenceReasonChip from "aleksis.apps.kolego/components/AbsenceReasonChip.vue"; import ExtraMarkChip from "aleksis.apps.alsijil/components/extra_marks/ExtraMarkChip.vue"; import { statisticsByGroup } from "./statistics.graphql"; import { absenceReasons } from "../queries/absenceReasons.graphql"; -import { extraMarks } from "../../extra_marks/extra_marks.graphql"; +import { extraMarks } from "../queries/extraMarks.graphql"; import { MODE } from "./modes"; export default { @@ -99,6 +103,7 @@ export default { ExtraMarkChip, PersonChip, SecondaryActionButton, + CoursebookPrintDialog, }, data() { return { -- GitLab