diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsAbsencesCard.vue b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsAbsencesCard.vue index e2dd2205e6975e7e2d02c6ec5e96eea38ddb6696..fb8d90a6a8fe80c368f286f9f78bf9e07f1d3e0e 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsAbsencesCard.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsAbsencesCard.vue @@ -4,6 +4,7 @@ <v-card-text class="d-flex flex-column" style="gap: 0.5em"> <absence-reason-chip v-for="absenceReason in absenceReasons" + :key="absenceReason.id" :absenceReason="absenceReason.absenceReason" :count="absenceReason.count" /> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsExtraMarksCard.vue b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsExtraMarksCard.vue index e7ae371559623adb49fb96ee2280d0f303247870..8d778222a09ccbb59bbf148b5495c396a16b601a 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsExtraMarksCard.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsExtraMarksCard.vue @@ -4,6 +4,7 @@ <v-card-text class="d-flex flex-column" style="gap: 0.5em"> <counter-chip v-for="extraMark in extraMarks" + :key="extraMark.id" :value="extraMark.extraMark.id" :color="extraMark.extraMark.colourBg" :text-color="extraMark.extraMark.colourFg" diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForGroupTab.vue b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForGroupTab.vue index 0680a662d815a0b0e87a7c717f6e4bfad1662382..e4be1ec19f62dd3d9537e1ab4b0cc532b86c5696 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForGroupTab.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForGroupTab.vue @@ -10,17 +10,40 @@ :show-select="false" @items="items = $event" > - <template #header.person="header"> - Hello world - {{ header }} - </template> - <template v-for="(extraMark, index) in extraMarks" #[`extraMarks.${index}.count`]="{ item }"> - <extra-mark-chip :extra-mark="extraMark" only-show-count dense :count="item.extraMarks.find(m => extraMark.id === m.extraMark.id).count" /> + <!-- <template #header.person="header">--> + <!-- Hello world--> + <!-- {{ header }}--> + <!-- </template>--> + + <template + v-for="(extraMark, index) in extraMarks" + #[`extraMarks.${index}.count`]="{ item }" + > + <extra-mark-chip + :extra-mark="extraMark" + only-show-count + dense + :count=" + item.extraMarks.find((m) => extraMark.id === m.extraMark.id).count + " + /> </template> - <template v-for="(absenceReason, index) in absenceReasons" #[`absenceReasons.${index}.count`]="{ item }"> - <absence-reason-chip :absence-reason="absenceReason" onlyShowCount dense :count="item.absenceReasons.find(m => absenceReason.id === m.absenceReason.id).count" /> + <template + v-for="(absenceReason, index) in absenceReasons" + #[`absenceReasons.${index}.count`]="{ item }" + > + <absence-reason-chip + :absence-reason="absenceReason" + only-show-count + dense + :count=" + item.absenceReasons.find( + (m) => absenceReason.id === m.absenceReason.id, + ).count + " + /> </template> <template #person="{ item }"> @@ -42,7 +65,10 @@ </template> <template #actions="{ item }"> - <secondary-action-button i18n-key="alsijil.personal_notes.statistics.person_view_details" icon-text="mdi-open-in-new" /> + <secondary-action-button + i18n-key="alsijil.personal_notes.statistics.person_view_details" + icon-text="mdi-open-in-new" + /> </template> </c-r-u-d-list> </template> @@ -86,7 +112,7 @@ export default { text: this.$t("person.name"), value: "person", }, - ...this.absenceReasons.map((reason, index) => { + ...this.absenceReasons.map((reason, index) => { return { text: reason.name, value: `absenceReasons.${index}.count`, @@ -107,19 +133,21 @@ export default { }, { value: "actions", - } + }, ]; }, absenceReasonsFirstHeader() { - return this.absenceReasons.length > 0 ? this.absenceReasons[0].shortName + ".header" : null; + return this.absenceReasons.length > 0 + ? this.absenceReasons[0].shortName + ".header" + : null; }, extraMarksFirstHeader() { - return this.extraMarks.length > 0 ? this.extraMarks[0].shortName + ".header" : null; + return this.extraMarks.length > 0 + ? this.extraMarks[0].shortName + ".header" + : null; }, gqlQueryArgs() { - const term = this.schoolTerm - ? { term: this.schoolTerm.id } - : {}; + const term = this.schoolTerm ? { term: this.schoolTerm.id } : {}; return { group: this.group.id, ...term, diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue index b4fe3e012d2a2235312b802fdab9aca895805ccd..a15eec941683635098b9725753c626f89fb2ac23 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue @@ -41,10 +41,12 @@ <!-- chips: absences & extraMarks --> <absence-reason-chip v-for="absence in items.absences" + :key="absence.id" :absenceReason="absence" /> <v-chip v-for="extraMark in item.extraMarks" + :key="extraMark.id" :value="extraMark.id" :color="extraMark.colourBg" :text-color="extraMark.colourFg" diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/statistics.graphql b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/statistics.graphql index 476209b10262252de4b52664bcf6411aff505ef7..d1f45309f7e9740b8965628fc45acc6bc8fa366e 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/statistics.graphql +++ b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/statistics.graphql @@ -76,10 +76,10 @@ query documentationsByPerson($person: ID!, $term: ID) { query statisticsByGroup($group: ID!, $term: ID) { items: statisticsByGroup(group: $group, term: $term) { -# persons { -# id -# fullName + # persons { + # id + # fullName ...statistics -# } + # } } } diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index d17fe665c35fd074d5c1f369f1942e5e8604408d..b8fe2fcc362be7c46c965e4ac783dca3317d7efe 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -42,7 +42,6 @@ from .personal_note import ( PersonalNoteBatchDeleteMutation, PersonalNoteBatchPatchMutation, ) -from .participation_status import ParticipationStatusBatchPatchMutation from .statistics import ( DocumentationByPersonType, StatisticsByPersonType, @@ -268,7 +267,9 @@ class Query(graphene.ObjectType): @staticmethod def resolve_statistics_by_group(root, info, group, term=None): - school_term = SchoolTerm.objects.get(id=term) if term is not None else SchoolTerm.get_current() + school_term = ( + SchoolTerm.objects.get(id=term) if term is not None else SchoolTerm.get_current() + ) members = Group.objects.get(id=group).members.all() return annotate_person_statistics_for_school_term(members, school_term)