From bb33cf09bea771fc7c6cbaf997dad37bbf323282 Mon Sep 17 00:00:00 2001 From: Hangzhi Yu <hangzhi@protonmail.com> Date: Thu, 15 Aug 2024 13:34:28 +0200 Subject: [PATCH] Open documentation dialog when clicking lesson note chips as participants --- .../coursebook/documentation/LessonNotes.vue | 192 +++++++++++------- 1 file changed, 117 insertions(+), 75 deletions(-) diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue index 490877f22..af954823b 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/documentation/LessonNotes.vue @@ -26,103 +26,145 @@ import PersonalNoteChip from "../personal_notes/PersonalNoteChip.vue"; dense color="success" outlined + @click="$emit('open')" + v-bind="dialogActivator.attrs" + v-on="dialogActivator.on" v-else-if=" total == 1 && present == 1 && !documentation.canViewParticipationStatus " > {{ $t("alsijil.coursebook.participations.present") }} </v-chip> - <absence-reason-chip - v-for="[reasonId, participations] in Object.entries(absences)" - :key="'reason-' + reasonId" - :absence-reason="participations[0].absenceReason" - dense - > - <template v-if="documentation.canViewParticipationStatus" #append> - <span - >: - <span> - {{ - participations - .slice(0, 5) - .map((participation) => participation.person.firstName) - .join(", ") - }} + + <template v-if="documentation.canViewParticipationStatus"> + <absence-reason-chip + v-for="[reasonId, participations] in Object.entries(absences)" + :key="'reason-' + reasonId" + :absence-reason="participations[0].absenceReason" + dense + > + <template #append> + <span + >: + <span> + {{ + participations + .slice(0, 5) + .map((participation) => participation.person.firstName) + .join(", ") + }} + </span> + <span v-if="participations.length > 5"> + <!-- eslint-disable @intlify/vue-i18n/no-raw-text --> + +{{ participations.length - 5 }} + <!-- eslint-enable @intlify/vue-i18n/no-raw-text --> + </span> </span> - <span v-if="participations.length > 5"> - <!-- eslint-disable @intlify/vue-i18n/no-raw-text --> - +{{ participations.length - 5 }} - <!-- eslint-enable @intlify/vue-i18n/no-raw-text --> + </template> + </absence-reason-chip> + </template> + <template v-else> + <absence-reason-chip + v-for="[reasonId, participations] in Object.entries(absences)" + :key="'reason-' + reasonId" + :absence-reason="participations[0].absenceReason" + dense + @click="$emit('open')" + v-bind="dialogActivator.attrs" + v-on="dialogActivator.on" + /> + </template> + + <template v-if="documentation.canViewParticipationStatus"> + <extra-mark-chip + v-for="[markId, [mark, ...participations]] in Object.entries( + extraMarkChips, + )" + :key="'extra-mark-' + markId" + :extra-mark="mark" + dense + > + <template #append> + <span + >: + <span> + {{ + participations + .slice(0, 5) + .map((participation) => participation.person.firstName) + .join(", ") + }} + </span> + <span v-if="participations.length > 5"> + <!-- eslint-disable @intlify/vue-i18n/no-raw-text --> + +{{ participations.length - 5 }} + <!-- eslint-enable @intlify/vue-i18n/no-raw-text --> + </span> </span> - </span> - </template> - </absence-reason-chip> + </template> + </extra-mark-chip> + </template> + <template v-else> + <extra-mark-chip + v-for="[markId, [mark, ...participations]] in Object.entries( + extraMarkChips, + )" + :key="'extra-mark-' + markId" + :extra-mark="mark" + dense + @click="$emit('open')" + v-bind="dialogActivator.attrs" + v-on="dialogActivator.on" + /> + </template> - <extra-mark-chip - v-for="[markId, [mark, ...participations]] in Object.entries( - extraMarkChips, - )" - :key="'extra-mark-' + markId" - :extra-mark="mark" - dense - > - <template v-if="documentation.canViewParticipationStatus" #append> - <span - >: - <span> + <template v-if="documentation.canViewParticipationStatus"> + <tardiness-chip v-if="tardyParticipations.length > 0"> + <template #default> + {{ $t("alsijil.personal_notes.late") }} + </template> + + <template #append> + <span + >: {{ - participations + tardyParticipations .slice(0, 5) .map((participation) => participation.person.firstName) .join(", ") }} - </span> - <span v-if="participations.length > 5"> - <!-- eslint-disable @intlify/vue-i18n/no-raw-text --> - +{{ participations.length - 5 }} - <!-- eslint-enable @intlify/vue-i18n/no-raw-text --> - </span> - </span> - </template> - </extra-mark-chip> - <tardiness-chip - v-if="tardyParticipations.length > 0" - :tardiness=" - !documentation.canViewParticipationStatus && - tardyParticipations.length == 1 - ? tardyParticipations[0].tardiness - : undefined - " - > - <template v-if="documentation.canViewParticipationStatus" #default> - {{ $t("alsijil.personal_notes.late") }} - </template> - - <template v-if="documentation.canViewParticipationStatus" #append> - <span - >: - {{ - tardyParticipations - .slice(0, 5) - .map((participation) => participation.person.firstName) - .join(", ") - }} - - <span v-if="tardyParticipations.length > 5"> - <!-- eslint-disable @intlify/vue-i18n/no-raw-text --> - +{{ tardyParticipations.length - 5 }} - <!-- eslint-enable @intlify/vue-i18n/no-raw-text --> + <span v-if="tardyParticipations.length > 5"> + <!-- eslint-disable @intlify/vue-i18n/no-raw-text --> + +{{ tardyParticipations.length - 5 }} + <!-- eslint-enable @intlify/vue-i18n/no-raw-text --> + </span> </span> - </span> - </template> - </tardiness-chip> + </template> + </tardiness-chip> + </template> + <template v-else> + <tardiness-chip + v-if="tardyParticipations.length > 0" + :tardiness=" + tardyParticipations.length == 1 + ? tardyParticipations[0].tardiness + : undefined + " + @click="$emit('open')" + v-bind="dialogActivator.attrs" + v-on="dialogActivator.on" + /> + </template> <template v-if="!documentation.canViewParticipationStatus && total == 1"> <personal-note-chip v-for="note in documentation?.participations[0]?.notesWithNote" :key="'text-note-note-' + note.id" :note="note" + @click="$emit('open')" + v-bind="dialogActivator.attrs" + v-on="dialogActivator.on" /> </template> -- GitLab