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} +