Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
05c2535698 | |||
e261d5e345 |
@ -2,9 +2,16 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
||||
|
||||
#### [1.9.8](https://git.odit.services/lfk/frontend/compare/1.9.7...1.9.8)
|
||||
|
||||
- feat(GenerateSponsoringContracts): show download progress [`e261d5e`](https://git.odit.services/lfk/frontend/commit/e261d5e345f3175672bf86646ed838dd23400e50)
|
||||
|
||||
#### [1.9.7](https://git.odit.services/lfk/frontend/compare/1.9.6...1.9.7)
|
||||
|
||||
> 2 April 2025
|
||||
|
||||
- fix: ImportRunnerModal scrolling & team select [`766eeab`](https://git.odit.services/lfk/frontend/commit/766eeab49fb3ca5715c19dbf9bc53cb71124d3df)
|
||||
- chore(release): 1.9.7 [`c00497d`](https://git.odit.services/lfk/frontend/commit/c00497d7760a935965cc83213f72f35999a3c168)
|
||||
|
||||
#### [1.9.6](https://git.odit.services/lfk/frontend/compare/1.9.5...1.9.6)
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
<body>
|
||||
<span style="display: none; visibility: hidden" id="buildinfo"
|
||||
>RELEASE_INFO-1.9.7-RELEASE_INFO</span
|
||||
>RELEASE_INFO-1.9.8-RELEASE_INFO</span
|
||||
>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<script src="/env.js"></script>
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@odit/lfk-frontend",
|
||||
"version": "1.9.7",
|
||||
"version": "1.9.8",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"i18n-order": "node order.js",
|
||||
|
81
src/components/pdf_generation/DownloadProgressModal.svelte
Normal file
81
src/components/pdf_generation/DownloadProgressModal.svelte
Normal file
@ -0,0 +1,81 @@
|
||||
<script>
|
||||
import { _ } from "svelte-i18n";
|
||||
import { clickOutside } from "../base/outsideclick";
|
||||
import { onMount } from "svelte";
|
||||
export let download_details = "";
|
||||
export let modal_open;
|
||||
onMount(() => {
|
||||
document.onkeydown = (e) => {
|
||||
e = e || window.event;
|
||||
if (e.key === "Escape") {
|
||||
modal_open = false;
|
||||
}
|
||||
if (e.keyCode === 13) {
|
||||
if (createbtnenabled === true) {
|
||||
createbtnenabled = false;
|
||||
submit();
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
</script>
|
||||
|
||||
{#if modal_open}
|
||||
<div
|
||||
class="fixed z-10 inset-0 overflow-y-hidden"
|
||||
use:clickOutside
|
||||
on:click_outside={() => {
|
||||
modal_open = false;
|
||||
}}
|
||||
>
|
||||
<div
|
||||
class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4"
|
||||
>
|
||||
<div class="fixed inset-0 transition-opacity" aria-hidden="true">
|
||||
<div
|
||||
class="absolute inset-0 bg-gray-500 opacity-75"
|
||||
data-id="modal_backdrop"
|
||||
/>
|
||||
</div>
|
||||
<span
|
||||
class="hidden sm:inline-block sm:align-middle sm:h-screen"
|
||||
aria-hidden="true">​</span
|
||||
>
|
||||
<div
|
||||
class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]"
|
||||
role="dialog"
|
||||
aria-modal="true"
|
||||
aria-labelledby="modal-headline"
|
||||
>
|
||||
<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl">
|
||||
<div class="">
|
||||
<div
|
||||
class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"
|
||||
>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
class="h-6 w-6 text-blue-600"
|
||||
fill="currentColor"
|
||||
width="24"
|
||||
height="24"
|
||||
><path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M9.83 8.79L8 9.456V13H6V8.05h.015l5.268-1.918c.244-.093.51-.14.782-.131a2.616 2.616 0 0 1 2.427 1.82c.186.583.356.977.51 1.182A4.992 4.992 0 0 0 19 11v2a6.986 6.986 0 0 1-5.402-2.547l-.581 3.297L15 15.67V23h-2v-5.986l-2.05-1.987-.947 4.298-6.894-1.215.348-1.97 4.924.868L9.83 8.79zM13.5 5.5a2 2 0 1 1 0-4 2 2 0 0 1 0 4z"
|
||||
/></svg
|
||||
>
|
||||
</div>
|
||||
<div class="mt-3 sm:text-left text-base">
|
||||
<h3 class="text-lg leading-6 font-medium text-gray-900">
|
||||
{$_('download_laeuft')}
|
||||
</h3>
|
||||
<div class="w-full">
|
||||
{download_details}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
@ -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 @@
|
||||
</script>
|
||||
|
||||
{#if sponsoring_contracts_show}
|
||||
<DownloadProgressModal {download_details} modal_open={download_modal_open} />
|
||||
<button
|
||||
on:click={() => {
|
||||
generateSponsoringContract("de");
|
||||
|
@ -204,6 +204,7 @@
|
||||
"donors-are-being-loaded": "Sponsoren werden geladen",
|
||||
"dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?",
|
||||
"dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌",
|
||||
"download_laeuft": "Download läuft...",
|
||||
"e-mail-adress": "E-Mail-Adresse",
|
||||
"edit": "Bearbeiten",
|
||||
"edit-a-card": "Läuferkarte bearbeiten",
|
||||
|
@ -204,6 +204,7 @@
|
||||
"donors-are-being-loaded": "donors are being loaded",
|
||||
"dont-have-your-email-connected": "Don't have your email connected?",
|
||||
"dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌",
|
||||
"download_laeuft": "Download in progress...",
|
||||
"e-mail-adress": "E-Mail Adress",
|
||||
"edit": "Edit",
|
||||
"edit-a-card": "Edit a card",
|
||||
|
Loading…
x
Reference in New Issue
Block a user