From e261d5e345f3175672bf86646ed838dd23400e50 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Wed, 2 Apr 2025 22:03:47 +0200 Subject: [PATCH] feat(GenerateSponsoringContracts): show download progress commit c3226c37c901ab7e2aadb0ec11fb87a6e0610fe2 Author: Philipp Dormann Date: Wed Apr 2 22:03:06 2025 +0200 wip commit 210140fd67322c4052120c48f835b34e0f4993a9 Author: Philipp Dormann Date: Wed Apr 2 21:58:07 2025 +0200 wip commit 35e58d233eff076efb62722c76a11e22b6e14441 Author: Philipp Dormann Date: Wed Apr 2 21:55:21 2025 +0200 wip commit a09bf31e220cf17cdc4159e6f1beb7dbbefb6114 Author: Philipp Dormann Date: Wed Apr 2 21:48:51 2025 +0200 wip commit 7c31fba83a4105df7738bd8e47a7feb11284cd0c Author: Philipp Dormann Date: Wed Apr 2 21:48:37 2025 +0200 wip --- .../DownloadProgressModal.svelte | 81 +++++++++++++++++++ .../GenerateSponsoringContracts.svelte | 37 +++++++-- src/locales/de.json | 1 + src/locales/en.json | 1 + 4 files changed, 114 insertions(+), 6 deletions(-) create mode 100644 src/components/pdf_generation/DownloadProgressModal.svelte diff --git a/src/components/pdf_generation/DownloadProgressModal.svelte b/src/components/pdf_generation/DownloadProgressModal.svelte new file mode 100644 index 00000000..243a5a3c --- /dev/null +++ b/src/components/pdf_generation/DownloadProgressModal.svelte @@ -0,0 +1,81 @@ + + +{#if modal_open} +
{ + modal_open = false; + }} + > +
+ +
+{/if} diff --git a/src/components/pdf_generation/GenerateSponsoringContracts.svelte b/src/components/pdf_generation/GenerateSponsoringContracts.svelte index 1e79916c..05e3ba7c 100644 --- a/src/components/pdf_generation/GenerateSponsoringContracts.svelte +++ b/src/components/pdf_generation/GenerateSponsoringContracts.svelte @@ -7,6 +7,7 @@ import DocumentServer from "./DocumentServer"; import { init } from "@paralleldrive/cuid2"; import toast from "svelte-french-toast"; + import DownloadProgressModal from "./DownloadProgressModal.svelte"; const createId = init({ length: 10, fingerprint: "lfk-frontend" }); const documentServer = new DocumentServer( config.baseurl_documentserver, @@ -17,8 +18,12 @@ export let generate_runners = []; export let generate_orgs = []; export let generate_teams = []; + // + export let download_modal_open = false; + export let download_details = ""; function generateSponsoringContract(locale) { + download_modal_open = true; if (generate_orgs.length > 0) { generateOrgContracts(locale); } else if (generate_teams.length > 0) { @@ -41,19 +46,24 @@ async function generateTeamContracts(locale) { toast.loading($_("generating-pdfs")); + let totalCount = generate_teams.length; let count = 0; for (const t of generate_teams) { count++; + download_details = `${t.parentGroup.name} > ${t.name}`; const runners = await RunnerTeamService.runnerTeamControllerGetRunners( t.id ); - documentServer + await documentServer .generateContracts(runners, locale) .then((blob) => { download( blob, `${$_("sponsorings")}_${t.name}-${locale}-${createId()}.pdf` ); + if (count === totalCount) { + download_modal_open = false; + } }) .catch((err) => {}); } @@ -61,15 +71,23 @@ async function generateOrgContracts(locale) { toast.loading($_("generating-pdf")); - let count_orgs = 0; + let totalCount = 0; for (const o of generate_orgs) { - count_orgs++; - let count = 0; + totalCount++; + for (const t of o.teams) { + totalCount++; + } + } + console.log({ totalCount }); + let count = 0; + for (const o of generate_orgs) { + count++; let runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners( o.id, true ); + download_details = o.name; await documentServer .generateContracts(runners, locale) .then((blob) => { @@ -84,6 +102,7 @@ let runners = await RunnerTeamService.runnerTeamControllerGetRunners( t.id ); + download_details = `${o.name} > ${t.name}`; await documentServer .generateContracts(runners, locale) .then((blob) => { @@ -93,15 +112,19 @@ t.name }-${locale}-${createId()}.pdf` ); + console.log({ count }); + if (count === totalCount) { + download_modal_open = false; + } }) .catch((err) => {}); } } } - function generateRunnerContracts(locale) { + async function generateRunnerContracts(locale) { toast.loading($_("generating-pdf")); - documentServer + await documentServer .generateContracts(generate_runners, locale) .then((blob) => { let fileName = `${$_("sponsorings")}-${locale}-${createId()}.pdf`; @@ -111,6 +134,7 @@ }-${locale}-${createId()}.pdf`; } download(blob, fileName); + download_modal_open = false; }) .catch((err) => { console.error(err); @@ -119,6 +143,7 @@ {#if sponsoring_contracts_show} +