From fb783609465d3387bf9a160bdd2bb1c566bdf4bb Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Sat, 19 Apr 2025 09:24:55 +0200 Subject: [PATCH] show who does not have newsletter configured --- src/components/admin/MemberSearchSelect.vue | 9 +- .../club/newsletter/NewsletterRecipients.vue | 82 +++++++++++-------- 2 files changed, 55 insertions(+), 36 deletions(-) diff --git a/src/components/admin/MemberSearchSelect.vue b/src/components/admin/MemberSearchSelect.vue index 50efd6f..c56b0ef 100644 --- a/src/components/admin/MemberSearchSelect.vue +++ b/src/components/admin/MemberSearchSelect.vue @@ -1,10 +1,11 @@ @@ -67,7 +69,7 @@ import { TransitionRoot, } from "@headlessui/vue"; import { CheckIcon, ChevronUpDownIcon } from "@heroicons/vue/20/solid"; -import { TrashIcon } from "@heroicons/vue/24/outline"; +import { ArchiveBoxIcon, ExclamationTriangleIcon, TrashIcon, UserPlusIcon } from "@heroicons/vue/24/outline"; import { useMemberStore } from "@/stores/admin/club/member/member"; import type { MemberViewModel } from "@/viewmodels/admin/club/member/member.models"; import { useNewsletterStore } from "@/stores/admin/club/newsletter/newsletter"; @@ -93,6 +95,7 @@ export default defineComponent({ return { query: "" as String, members: [] as Array, + showMemberSelect: false as boolean, }; }, computed: { @@ -125,6 +128,17 @@ export default defineComponent({ .some((d) => (d.memberId ?? d.id) == m.id) ); }, + showRecipientsByMode() { + return (this.showMemberSelect ? this.selected : this.queried).sort((a, b) => { + const aHasConfig = a.sendNewsletter?.type.type != null; + const bHasConfig = b.sendNewsletter?.type.type != null; + if (aHasConfig === bHasConfig) return 0; + return aHasConfig ? -1 : 1; + }); + }, + countOfNoConfig() { + return this.showRecipientsByMode.filter((member) => member.sendNewsletter?.type.type == null).length; + }, recipientsByQueryId: { get() { return this.activeNewsletterObj?.recipientsByQueryId ?? "def";