From 48e2944eba984bd79c344811c313ae007fe02e37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Kr=C4=8Dek?= Date: Sat, 12 Jul 2025 15:03:23 +0200 Subject: [PATCH] Event view impovements --- .../events/event/archived/+page.svelte | 62 ++------- .../components/EventInformation.svelte | 28 ++++ .../archived/components/Statistics.svelte | 73 ++++++++++ .../private/events/event/view/+page.svelte | 27 +++- .../view/components/EmailSendingFixed.svelte | 94 +++++++++++++ .../view/components/ParticipantsTable.svelte | 2 +- .../event/view/components/Statistics.svelte | 127 ++++++++++++++++++ 7 files changed, 357 insertions(+), 56 deletions(-) create mode 100644 src/routes/private/events/event/archived/components/EventInformation.svelte create mode 100644 src/routes/private/events/event/archived/components/Statistics.svelte create mode 100644 src/routes/private/events/event/view/components/EmailSendingFixed.svelte create mode 100644 src/routes/private/events/event/view/components/Statistics.svelte diff --git a/src/routes/private/events/event/archived/+page.svelte b/src/routes/private/events/event/archived/+page.svelte index 37cdb56..050d66d 100644 --- a/src/routes/private/events/event/archived/+page.svelte +++ b/src/routes/private/events/event/archived/+page.svelte @@ -1,6 +1,8 @@ + +
+
+ {#if loading} +
+
+ {:else} +

{event?.name}

+
+
+ Date: + {event?.date} +
+
+ {/if} +
+
diff --git a/src/routes/private/events/event/archived/components/Statistics.svelte b/src/routes/private/events/event/archived/components/Statistics.svelte new file mode 100644 index 0000000..526483b --- /dev/null +++ b/src/routes/private/events/event/archived/components/Statistics.svelte @@ -0,0 +1,73 @@ + + +
+ + + + + + + + + + + + + + + + + + + + +
CategoryCount
+
+ + + + Total participants +
+
+ {#if loading} +
+ {:else} + {totalParticipants} + {/if} +
+
+ + + + Scanned participants +
+
+ {#if loading} +
+ {:else} + {scannedParticipants} + {/if} +
+
diff --git a/src/routes/private/events/event/view/+page.svelte b/src/routes/private/events/event/view/+page.svelte index d9f4413..5a36662 100644 --- a/src/routes/private/events/event/view/+page.svelte +++ b/src/routes/private/events/event/view/+page.svelte @@ -10,6 +10,7 @@ import EmailSending from './components/EmailSending.svelte'; import EmailResults from './components/EmailResults.svelte'; import ErrorMessage from './components/ErrorMessage.svelte'; + import Statistics from './components/Statistics.svelte'; let { data } = $props(); @@ -262,7 +263,6 @@ - +
+

Statistics

+ p.scanned).length} + emailSentCount={participants.filter(p => p.email_sent).length} + pendingCount={participants.filter(p => !p.email_sent).length} + /> +
+ + + + interface Participant { + id: string; + email_sent: boolean; + } + + interface EmailProgress { + sent: number; + total: number; + } + + let { + loading, + participants, + sendingEmails, + emailProgress, + event, + onSendEmails + } = $props<{ + loading: boolean; + participants: Participant[]; + sendingEmails: boolean; + emailProgress: EmailProgress; + event: any | null; + onSendEmails: () => void; + }>(); + + // Using the $derived rune to calculate uncontacted participants + let uncontactedParticipantsCount = $derived(participants.filter(p => !p.email_sent).length); + + +
+
+

Send Emails

+ {#if !loading} +
+ {uncontactedParticipantsCount} uncontacted participants +
+ {:else} +
+ Loading participants... +
+ {/if} +
+ + {#if loading} +
+ {:else if sendingEmails} +
+
+ + + + + Sending {emailProgress.total} emails... Please wait. +
+
+ {:else} +
+ {#if uncontactedParticipantsCount > 0} +
+
+ + + + + Warning: Do not close this window while emails are being sent. The process may take several minutes. + +
+
+ +
+ +
+ {:else} +
+
+ + + +
+

All participants have been contacted!

+

No pending emails to send.

+
+ {/if} +
+ {/if} +
diff --git a/src/routes/private/events/event/view/components/ParticipantsTable.svelte b/src/routes/private/events/event/view/components/ParticipantsTable.svelte index 5595401..1660920 100644 --- a/src/routes/private/events/event/view/components/ParticipantsTable.svelte +++ b/src/routes/private/events/event/view/components/ParticipantsTable.svelte @@ -30,7 +30,7 @@ }>(); -
+

Participants