From fb783609465d3387bf9a160bdd2bb1c566bdf4bb Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Sat, 19 Apr 2025 09:24:55 +0200 Subject: [PATCH 1/2] 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"; From b19e8df5616f9dc3bc6776a8ca14b725303bc34c Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Sat, 19 Apr 2025 09:42:25 +0200 Subject: [PATCH 2/2] add send none to newsletter config --- .../newsletterConfig/NewsletterConfigListItem.vue | 8 ++++---- src/enums/newsletterConfigEnum.ts | 5 +++++ src/enums/newsletterConfigType.ts | 4 ---- src/stores/admin/configuration/newsletterConfig.ts | 2 +- .../admin/configuration/newsletterConfig.models.ts | 6 +++--- .../admin/club/newsletter/NewsletterRecipients.vue | 10 ++++++---- 6 files changed, 19 insertions(+), 16 deletions(-) create mode 100644 src/enums/newsletterConfigEnum.ts delete mode 100644 src/enums/newsletterConfigType.ts diff --git a/src/components/admin/configuration/newsletterConfig/NewsletterConfigListItem.vue b/src/components/admin/configuration/newsletterConfig/NewsletterConfigListItem.vue index da19c83..a4e7842 100644 --- a/src/components/admin/configuration/newsletterConfig/NewsletterConfigListItem.vue +++ b/src/components/admin/configuration/newsletterConfig/NewsletterConfigListItem.vue @@ -3,13 +3,13 @@

Newsletter bei Type "{{ comType.type }}" versenden/exportieren als

- -
@@ -36,7 +36,7 @@ import Spinner from "@/components/Spinner.vue"; import SuccessCheckmark from "@/components/SuccessCheckmark.vue"; import FailureXMark from "@/components/FailureXMark.vue"; import { useModalStore } from "@/stores/modal"; -import { NewsletterConfigType } from "@/enums/newsletterConfigType"; +import { NewsletterConfigEnum } from "@/enums/newsletterConfigEnum"; import type { AxiosResponse } from "axios"; import type { CommunicationTypeViewModel } from "@/viewmodels/admin/configuration/communicationType.models"; import { useAbilityStore } from "@/stores/ability"; @@ -62,7 +62,7 @@ export default defineComponent({ }, }, mounted() { - this.configs = Object.values(NewsletterConfigType); + this.configs = Object.values(NewsletterConfigEnum); }, beforeUnmount() { try { diff --git a/src/enums/newsletterConfigEnum.ts b/src/enums/newsletterConfigEnum.ts new file mode 100644 index 0000000..1e7313f --- /dev/null +++ b/src/enums/newsletterConfigEnum.ts @@ -0,0 +1,5 @@ +export enum NewsletterConfigEnum { + pdf = "pdf", + mail = "mail", + none = "none", +} diff --git a/src/enums/newsletterConfigType.ts b/src/enums/newsletterConfigType.ts deleted file mode 100644 index 4703494..0000000 --- a/src/enums/newsletterConfigType.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum NewsletterConfigType { - pdf = "pdf", - mail = "mail", -} diff --git a/src/stores/admin/configuration/newsletterConfig.ts b/src/stores/admin/configuration/newsletterConfig.ts index 3bb12be..eef3687 100644 --- a/src/stores/admin/configuration/newsletterConfig.ts +++ b/src/stores/admin/configuration/newsletterConfig.ts @@ -6,7 +6,7 @@ import type { import { http } from "@/serverCom"; import type { AxiosResponse } from "axios"; -export const useNewsletterConfigStore = defineStore("newsletterConfi", { +export const useNewsletterConfigStore = defineStore("newsletterConfig", { state: () => { return { config: [] as Array, diff --git a/src/viewmodels/admin/configuration/newsletterConfig.models.ts b/src/viewmodels/admin/configuration/newsletterConfig.models.ts index 6d8be6f..a5a0684 100644 --- a/src/viewmodels/admin/configuration/newsletterConfig.models.ts +++ b/src/viewmodels/admin/configuration/newsletterConfig.models.ts @@ -1,13 +1,13 @@ -import type { NewsletterConfigType } from "@/enums/newsletterConfigType"; +import type { NewsletterConfigEnum } from "@/enums/newsletterConfigEnum"; import type { CommunicationTypeViewModel } from "./communicationType.models"; export interface NewsletterConfigViewModel { comTypeId: number; - config: NewsletterConfigType; + config: NewsletterConfigEnum; comType: CommunicationTypeViewModel; } export interface SetNewsletterConfigViewModel { comTypeId: number; - config: NewsletterConfigType; + config: NewsletterConfigEnum; } diff --git a/src/views/admin/club/newsletter/NewsletterRecipients.vue b/src/views/admin/club/newsletter/NewsletterRecipients.vue index c71df25..dac8ed7 100644 --- a/src/views/admin/club/newsletter/NewsletterRecipients.vue +++ b/src/views/admin/club/newsletter/NewsletterRecipients.vue @@ -4,6 +4,7 @@

↺ laden fehlgeschlagen

+