diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue index cd968ba434855dfc61ed094c955c90f382bd030b..a1fd5ff0e8c1c872e04c3bd824a0ba503b933368 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue @@ -46,10 +46,10 @@ v-for="item in items" :key="item.id" ripple - :readonly="!item.canEdit" + :readonly="!showEdit(item)" > <v-expansion-panel-header - :hide-actions="!item.canEdit" + :hide-actions="!showEdit(item) && !showDelete(item)" disable-icon-rotate > <template #actions> @@ -125,12 +125,19 @@ </v-list-item-content> </v-col> <v-col cols="12" md="6" class="pa-0"> - <v-list-item-action class="full-width justify-md-end"> + <v-list-item-action + class="flex-row full-width justify-md-end ma-0 align-center fill-height" + > <!-- chips: absences & extraMarks --> <absence-reason-chip v-if="item.absenceReason" :absence-reason="item.absenceReason" /> + <tardiness-chip + v-if="item.tardiness" + :tardiness="item.tardiness" + class="ms-1" + /> <extra-mark-chip v-if="item.extraMark" :extra-mark="item.extraMark" @@ -199,10 +206,12 @@ import { import ExtraMarkChip from "../../extra_marks/ExtraMarkChip.vue"; import { MODE } from "./modes.js"; import PersonalNoteChip from "../personal_notes/PersonalNoteChip.vue"; +import TardinessChip from "../absences/TardinessChip.vue"; export default { name: "StatisticsForPersonPage", components: { + TardinessChip, PersonalNoteChip, ActiveSchoolTermSelect, ExtraMarkChip, @@ -277,6 +286,16 @@ export default { }, }); }, + showEdit(item) { + // Notes with ExtraMark cannot be edited, only deleted + return ( + item.canEdit && (item.note || item.absenceReason || item.tardiness) + ); + }, + showDelete(item) { + // Only ExtraMarks can be deleted + return item.canDelete && item.extraMark; + }, }, }; </script> diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index 604cda6cd229533086533d855563a892f440d572..284d8da2d3a2570e57ae902b14302048eba7f3b8 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -309,8 +309,8 @@ class Query(graphene.ObjectType): school_term = get_active_school_term(info.context) return graphene_django_optimizer.query( ParticipationStatus.objects.filter( + Q(absence_reason__isnull=False) | Q(tardiness__isnull=False), person=person, - absence_reason__isnull=False, datetime_start__date__gte=school_term.date_start, datetime_end__date__lte=school_term.date_end, ).order_by("-related_documentation__datetime_start"),