From ab7085e203e9dc8f64870de7e0027cad8634afc2 Mon Sep 17 00:00:00 2001 From: Julian Leucker <leuckerj@gmail.com> Date: Mon, 9 Dec 2024 16:44:46 +0100 Subject: [PATCH] Create component to delete personal notes --- .../DeleteExtraMarkPersonalNote.vue | 70 +++++++++++++++++++ .../statistics/StatisticsForPersonPage.vue | 19 +++-- 2 files changed, 82 insertions(+), 7 deletions(-) create mode 100644 aleksis/apps/alsijil/frontend/components/coursebook/personal_notes/DeleteExtraMarkPersonalNote.vue diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/personal_notes/DeleteExtraMarkPersonalNote.vue b/aleksis/apps/alsijil/frontend/components/coursebook/personal_notes/DeleteExtraMarkPersonalNote.vue new file mode 100644 index 000000000..7666c60f4 --- /dev/null +++ b/aleksis/apps/alsijil/frontend/components/coursebook/personal_notes/DeleteExtraMarkPersonalNote.vue @@ -0,0 +1,70 @@ +<script> +import { deletePersonalNotes } from "./personal_notes.graphql"; +import ConfirmDialog from "aleksis.core/components/generic/dialogs/ConfirmDialog.vue"; +import mutateMixin from "aleksis.core/mixins/mutateMixin.js"; +import personalNoteRelatedMixin from "./personalNoteRelatedMixin"; + +export default { + name: "DeleteAssignedExtraMark", + components: { + ConfirmDialog, + }, + mixins: [mutateMixin, personalNoteRelatedMixin], + props: { + personalNote: { + type: Object, + required: true, + }, + person: { + type: Object, + required: true, + }, + }, + data() { + return { + showDeleteConfirm: false, + }; + }, + methods: { + deleteNote() { + this.mutate( + deletePersonalNotes, + { + ids: [this.personalNote.id], + }, + (storedPersonalNotes) => { + const index = storedPersonalNotes.findIndex( + (n) => n.id === this.personalNote.id, + ); + storedPersonalNotes.splice(index, 1); + + return storedPersonalNotes; + }, + ); + }, + }, +}; +</script> + +<template> + <v-btn color="error" icon @click.prevent.stop="showDeleteConfirm = true"> + <v-icon color="error">$deleteContent</v-icon> + <confirm-dialog + v-model="showDeleteConfirm" + @confirm="deleteNote" + @cancel="showDeleteConfirm = false" + > + <template #title> + {{ $t("alsijil.personal_notes.confirm_delete") }} + </template> + <template #text> + {{ + $t("alsijil.personal_notes.confirm_delete_extra_mark", { + extraMark: personalNote.extraMark.name, + name: person.firstName || person.fullName, + }) + }} + </template> + </confirm-dialog> + </v-btn> +</template> diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue index b82b76b7f..c84bbfc7a 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue @@ -57,14 +57,17 @@ <v-btn v-if="showEdit(item)" color="primary" icon> <v-icon> $edit </v-icon> </v-btn> - <v-btn + <delete-assigned-extra-mark v-if="showDelete(item)" - color="error" - icon - @click.prevent.stop - > - <v-icon color="error">$deleteContent</v-icon> - </v-btn> + :personal-note="item" + :participation="item.participation || {}" + :subjects="[]" + :absence-reasons="[]" + :extra-marks="[]" + :affected-query="lastQuery" + :documentation="item.relatedDocumentation" + :person="personName" + /> </template> <v-row class="mr-2"> <v-col cols="12" md="6" class="pa-0"> @@ -239,10 +242,12 @@ import PersonalNoteChip from "../personal_notes/PersonalNoteChip.vue"; import TextNote from "../personal_notes/TextNote.vue"; import UpdateParticipation from "../absences/UpdateParticipation.vue"; import TardinessChip from "../absences/TardinessChip.vue"; +import DeleteAssignedExtraMark from "../personal_notes/DeleteExtraMarkPersonalNote.vue"; export default { name: "StatisticsForPersonPage", components: { + DeleteAssignedExtraMark, TardinessChip, UpdateParticipation, TextNote, -- GitLab