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;
+ }}
+ >
+
+
+
+
+
+
+
+
+
+ {$_('download_laeuft')}
+
+
+ {download_details}
+
+
+
+
+
+
+
+{/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}
+