From 16ddfe709026701963516a1484dfba86cbfff4b1 Mon Sep 17 00:00:00 2001 From: Hangzhi Yu <hangzhi@protonmail.com> Date: Wed, 19 Jun 2024 20:40:05 +0200 Subject: [PATCH] Reformat --- .../components/coursebook/Coursebook.vue | 35 +++++++++++++++---- .../coursebook/CoursebookFilters.vue | 5 ++- .../absences/DocumentationAbsences.vue | 7 +++- .../absences/DocumentationAbsencesModal.vue | 13 +++++-- .../coursebook/absences/ParticipationList.vue | 25 +++++++------ .../absences/selectParticipationMixin.js | 8 ++--- .../absences/updateParticipationMixin.js | 12 ++++--- .../coursebook/documentation/LessonNotes.vue | 14 ++++---- aleksis/apps/alsijil/frontend/index.js | 2 +- aleksis/apps/alsijil/models.py | 8 ++++- aleksis/apps/alsijil/schema/__init__.py | 6 ++-- 11 files changed, 95 insertions(+), 40 deletions(-) diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue index 9685fe60e..6ced8cee9 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue @@ -16,9 +16,18 @@ <template #additionalActions="{ attrs, on }"> <coursebook-filters :page-type="pageType" v-model="filters" /> <v-expand-transition> - <v-card outlined class="full-width" v-show="pageType === 'absences' && selectedParticipations.length"> + <v-card + outlined + class="full-width" + v-show="pageType === 'absences' && selectedParticipations.length" + > <v-card-text> - {{ $tc('alsijil.coursebook.absences.action_for_selected', selectedParticipations.length) }} + {{ + $tc( + "alsijil.coursebook.absences.action_for_selected", + selectedParticipations.length, + ) + }} </v-card-text> <v-card-actions> <absence-reason-buttons @@ -32,7 +41,13 @@ </template> <template #item="{ item, lastQuery }"> - <component :is="itemComponent" :documentation="item" :affectedQuery="lastQuery" @select="addSelectedParticipation" @deselect="removeSelectedParticipation" /> + <component + :is="itemComponent" + :documentation="item" + :affectedQuery="lastQuery" + @select="addSelectedParticipation" + @deselect="removeSelectedParticipation" + /> </template> <template #loading> @@ -203,7 +218,7 @@ export default { }, }, itemComponent() { - if (this.pageType === 'documentations') { + if (this.pageType === "documentations") { return "DocumentationModal"; } else { return "DocumentationAbsencesModal"; @@ -212,17 +227,23 @@ export default { }, methods: { addSelectedParticipation(participation) { - this.selectedParticipations = [...new Set([...this.selectedParticipations, participation])]; + this.selectedParticipations = [ + ...new Set([...this.selectedParticipations, participation]), + ]; }, removeSelectedParticipation(participation) { const index = this.selectedParticipations.indexOf(participation); - if (index>=0) { + if (index >= 0) { this.selectedParticipations.splice(index, 1); } }, handleMultipleAction(absenceReasonId) { this.loadSelectedParticiptions = true; - this.sendToServer(this.selectedParticipations, "absenceReason", absenceReasonId); + this.sendToServer( + this.selectedParticipations, + "absenceReason", + absenceReasonId, + ); this.$once("save", this.resetMultipleAction); }, resetMultipleAction() { diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookFilters.vue b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookFilters.vue index d67a388ea..ee867e831 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookFilters.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookFilters.vue @@ -146,7 +146,10 @@ export default { }, togglePageType() { this.$emit("input", { - pageType: this.value.pageType === "documentations" ? "absences" : "documentations", + pageType: + this.value.pageType === "documentations" + ? "absences" + : "documentations", objType: this.value.objType, objId: this.value.objId, }); diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/DocumentationAbsences.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/DocumentationAbsences.vue index 12f1ad919..d9013806d 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/DocumentationAbsences.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/DocumentationAbsences.vue @@ -14,7 +14,12 @@ <lesson-information v-if="compact" v-bind="documentationPartProps" /> <v-spacer /> <lesson-notes v-bind="documentationPartProps" /> - <participation-list :include-present="false" class="participation-list" v-bind="documentationPartProps" v-on="selectListeners" /> + <participation-list + :include-present="false" + class="participation-list" + v-bind="documentationPartProps" + v-on="selectListeners" + /> </v-card-text> <v-spacer /> <v-divider /> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/DocumentationAbsencesModal.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/DocumentationAbsencesModal.vue index 86403a022..92bd289b5 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/DocumentationAbsencesModal.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/DocumentationAbsencesModal.vue @@ -4,11 +4,20 @@ <mobile-fullscreen-dialog v-model="popup" max-width="500px"> <template #activator="activator"> <!-- list view -> activate dialog --> - <documentation-absences compact v-bind="$attrs" :dialog-activator="activator" v-on="selectListeners" /> + <documentation-absences + compact + v-bind="$attrs" + :dialog-activator="activator" + v-on="selectListeners" + /> </template> <!-- dialog view -> deactivate dialog --> <!-- cancel | save (through lesson-summary) --> - <documentation-absences v-bind="$attrs" @close="popup = false" v-on="selectListeners" /> + <documentation-absences + v-bind="$attrs" + @close="popup = false" + v-on="selectListeners" + /> </mobile-fullscreen-dialog> </template> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/ParticipationList.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/ParticipationList.vue index 223ba0097..3c0d1c019 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/ParticipationList.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/ParticipationList.vue @@ -20,18 +20,22 @@ import documentationPartMixin from "../documentation/documentationPartMixin"; > <template #default="{ active }"> <v-list-item-action> - <v-checkbox :input-value="active" @change="handleParticipationSelect($event, participation)" /> + <v-checkbox + :input-value="active" + @change="handleParticipationSelect($event, participation)" + /> </v-list-item-action> <v-list-item-title> {{ participation.person.fullName }} </v-list-item-title> <v-list-item-subtitle v-if="participation.absenceReason"> - <absence-reason-chip small :absence-reason="participation.absenceReason" /> + <absence-reason-chip + small + :absence-reason="participation.absenceReason" + /> </v-list-item-subtitle> <v-list-item-action> - <v-icon> - mdi-chevron-right - </v-icon> + <v-icon> mdi-chevron-right </v-icon> </v-list-item-action> </template> </v-list-item> @@ -42,8 +46,7 @@ import documentationPartMixin from "../documentation/documentationPartMixin"; <mobile-fullscreen-dialog v-model="participationDialogs" max-width="500px"> test </mobile-fullscreen-dialog> - - + <!--<template #expandedItem="{ item, close }">--> <!-- <v-card-title>--> <!-- <v-tooltip bottom>--> @@ -90,7 +93,9 @@ export default { computed: { filteredParticipations() { if (!this.includePresent) { - return this.documentation.participations.filter((p) => !!p.absenceReason); + return this.documentation.participations.filter( + (p) => !!p.absenceReason, + ); } else { return this.documentation.participations; } @@ -104,6 +109,6 @@ export default { this.handleDeselect(participation.id); } }, - } + }, }; -</script> \ No newline at end of file +</script> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/selectParticipationMixin.js b/aleksis/apps/alsijil/frontend/components/coursebook/absences/selectParticipationMixin.js index 0dc139db3..2d6d52269 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/selectParticipationMixin.js +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/selectParticipationMixin.js @@ -1,6 +1,6 @@ /** * Mixin to provide passing through functionality for the events emitted when (de)selecting participations on the absence overview page -*/ + */ export default { emits: ["select", "deselect"], methods: { @@ -14,9 +14,9 @@ export default { computed: { /** - * All necessary listeners bundled together to easily pass to child components - * @returns {{select: Function, deselect: Function}} - */ + * All necessary listeners bundled together to easily pass to child components + * @returns {{select: Function, deselect: Function}} + */ selectListeners() { return { select: this.handleSelect, diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/updateParticipationMixin.js b/aleksis/apps/alsijil/frontend/components/coursebook/absences/updateParticipationMixin.js index 6aab0c9bf..ca44b374f 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/updateParticipationMixin.js +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/updateParticipationMixin.js @@ -1,6 +1,6 @@ /** * Mixin to provide shared functionality needed to update participations -*/ + */ import { updateParticipationStatuses } from "./participationStatus.graphql"; import mutateMixin from "aleksis.core/mixins/mutateMixin.js"; import documentationPartMixin from "../documentation/documentationPartMixin"; @@ -10,12 +10,14 @@ export default { methods: { sendToServer(participations, field, value) { if (field !== "absenceReason") return; - + this.mutate( updateParticipationStatuses, { input: participations.map((participation) => ({ - id: Object.hasOwn(participation, "id") ? participation.id : participation, + id: Object.hasOwn(participation, "id") + ? participation.id + : participation, absenceReason: value === "present" ? null : value, })), }, @@ -23,7 +25,7 @@ export default { const documentation = storedDocumentations.find( (doc) => doc.id === this.documentation.id, ); - + incomingStatuses.forEach((newStatus) => { const participationStatus = documentation.participations.find( (part) => part.id === newStatus.id, @@ -31,7 +33,7 @@ export default { participationStatus.absenceReason = newStatus.absenceReason; participationStatus.isOptimistic = newStatus.isOptimistic; }); - + return storedDocumentations; }, // { diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue index 880e92f4c..72781ec62 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue @@ -7,16 +7,14 @@ import AbsenceReasonChip from "aleksis.apps.kolego/components/AbsenceReasonChip. class="d-flex align-center justify-space-between justify-md-end flex-wrap gap" > <v-chip dense color="success" outlined v-if="total > 0"> - {{ $t("alsijil.coursebook.present_number", { present, total })}} + {{ $t("alsijil.coursebook.present_number", { present, total }) }} </v-chip> <absence-reason-chip v-for="participation in absences" :absence-reason="participation.absenceReason" dense > - <template #prepend> - {{ participation.person.fullName }}: - </template> + <template #prepend> {{ participation.person.fullName }}: </template> </absence-reason-chip> <manage-students-trigger v-bind="documentationPartProps" /> @@ -36,11 +34,15 @@ export default { return this.documentation.participations.length; }, present() { - return this.documentation.participations.filter(p => p.absenceReason === null).length; + return this.documentation.participations.filter( + (p) => p.absenceReason === null, + ).length; }, absences() { // Get all course attendants who have an absence reason - return this.documentation.participations.filter(p => p.absenceReason !== null); + return this.documentation.participations.filter( + (p) => p.absenceReason !== null, + ); }, }, }; diff --git a/aleksis/apps/alsijil/frontend/index.js b/aleksis/apps/alsijil/frontend/index.js index 6f1ec9b3d..a1dfdf84d 100644 --- a/aleksis/apps/alsijil/frontend/index.js +++ b/aleksis/apps/alsijil/frontend/index.js @@ -63,7 +63,7 @@ export default { name: "alsijil.coursebook", params: { filterType: "my", - pageType: "documentations" + pageType: "documentations", }, hash: "#" + DateTime.now().toISODate(), }; diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index 94c1a1f88..b30c8d794 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -551,7 +551,13 @@ class Documentation(CalendarEvent): if existing_documentations.exists(): doc = existing_documentations.first() - if (incomplete and doc.topic) or (absences_exist and (not doc.participations.exists or not doc.participations.filter(absence_reason__isnull=False).exists())): + if (incomplete and doc.topic) or ( + absences_exist + and ( + not doc.participations.exists + or not doc.participations.filter(absence_reason__isnull=False).exists() + ) + ): continue docs.append(doc) elif not absences_exist: diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index c46fbc45f..7ddf37b68 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -36,7 +36,7 @@ class Query(graphene.ObjectType): date_start=graphene.Date(required=True), date_end=graphene.Date(required=True), incomplete=graphene.Boolean(required=False), - absences_exist=graphene.Boolean(required=False) + absences_exist=graphene.Boolean(required=False), ) groups_by_person = FilterOrderList(GroupType, person=graphene.ID()) @@ -110,7 +110,9 @@ class Query(graphene.ObjectType): ) # Lookup or create documentations and return them all. - docs, dummies = Documentation.get_documentations_for_events(events, incomplete, absences_exist) + docs, dummies = Documentation.get_documentations_for_events( + events, incomplete, absences_exist + ) return docs + dummies @staticmethod -- GitLab