Compare commits

...

4 Commits
1.14.0 ... dev

Author SHA1 Message Date
878d3acc9c
chore(release): 1.14.2
All checks were successful
Build release images / build-container (push) Successful in 1m2s
2025-05-28 13:51:14 +02:00
5a7bc239d2
feat(GenerateRunnerCertificates): support skipping runners without scans 2025-05-28 13:49:21 +02:00
661a698fba
chore(release): 1.14.1
All checks were successful
Build release images / build-container (push) Successful in 1m4s
2025-05-26 16:47:23 +02:00
1b088b87bf
fix: ensure numeric values are parsed as integers in DocumentServer methods 2025-05-26 16:46:58 +02:00
7 changed files with 99 additions and 42 deletions

View File

@ -2,14 +2,28 @@
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
#### [1.14.2](https://git.odit.services/lfk/frontend/compare/1.14.1...1.14.2)
- feat(GenerateRunnerCertificates): support skipping runners without scans [`5a7bc23`](https://git.odit.services/lfk/frontend/commit/5a7bc239d2f93ced9ebdc5b113fe27d0d8d3899c)
#### [1.14.1](https://git.odit.services/lfk/frontend/compare/1.14.0...1.14.1)
> 26 May 2025
- fix: ensure numeric values are parsed as integers in DocumentServer methods [`1b088b8`](https://git.odit.services/lfk/frontend/commit/1b088b87bf6e67796c2509d9c21f21833cb4df0f)
- chore(release): 1.14.1 [`661a698`](https://git.odit.services/lfk/frontend/commit/661a698fbaeb2432bec758ed632a520676ae86b2)
#### [1.14.0](https://git.odit.services/lfk/frontend/compare/1.13.5...1.14.0)
> 20 May 2025
- wip [`564a971`](https://git.odit.services/lfk/frontend/commit/564a971c63403af2e2eb550db814519576d62023)
- wip [`50b5e4e`](https://git.odit.services/lfk/frontend/commit/50b5e4e455ce705fc5ef7f3d069d88c9ff48a6af)
- wip [`2c91f46`](https://git.odit.services/lfk/frontend/commit/2c91f463758c8452561fbcc5dad8412edba8915d)
- wip [`1386b80`](https://git.odit.services/lfk/frontend/commit/1386b80d0c8569cf127f8235b3dd249c2775594a)
- wip [`6ef6dc0`](https://git.odit.services/lfk/frontend/commit/6ef6dc007837c237273a29ca489ef0cdb92f7c6c)
- wip [`3709881`](https://git.odit.services/lfk/frontend/commit/370988117683ab1fdc149a30f920cc6a66575c7a)
- chore(release): 1.14.0 [`d5fecd3`](https://git.odit.services/lfk/frontend/commit/d5fecd3f31916b80c305d76f37c4600f1d242eba)
- wip [`77413c7`](https://git.odit.services/lfk/frontend/commit/77413c7e5350a1d8643d2baf135b531235f78e64)
- wip [`0cb1193`](https://git.odit.services/lfk/frontend/commit/0cb1193269912b047abfacb6012463093c2adcfa)
- wip [`9ef3435`](https://git.odit.services/lfk/frontend/commit/9ef34359d8ac32674c28825b91b6aa2877e63552)

View File

@ -13,7 +13,7 @@
<body>
<span style="display: none; visibility: hidden" id="buildinfo"
>RELEASE_INFO-1.14.0-RELEASE_INFO</span
>RELEASE_INFO-1.14.2-RELEASE_INFO</span
>
<noscript>You need to enable JavaScript to run this app.</noscript>
<script src="/env.js"></script>

View File

@ -1,6 +1,6 @@
{
"name": "@odit/lfk-frontend",
"version": "1.14.0",
"version": "1.14.2",
"type": "module",
"scripts": {
"i18n-order": "node order.js",

View File

@ -1,3 +1,4 @@
class DocumentServer {
baseUrl: string;
apiKey: string;
@ -12,19 +13,19 @@ class DocumentServer {
for (let i = 0; i < cards.length; i++) {
const card = {
id: cards[i].id,
id: parseInt(cards[i].id),
enabled: cards[i].enabled,
code: cards[i].code,
runner: {
id: cards[i]?.runner?.id,
id: parseInt(cards[i]?.runner?.id),
first_name: cards[i]?.runner?.firstname,
middle_name: cards[i]?.runner?.middlename,
last_name: cards[i]?.runner?.lastname,
group: {
id: cards[i]?.runner?.group.id,
id: parseInt(cards[i]?.runner?.group?.id),
name: cards[i]?.runner?.group.name,
parent_group: {
id: cards[i]?.runner?.group?.parentGroup?.id,
id: parseInt(cards[i]?.runner?.group?.parentGroup?.id),
name: cards[i]?.runner?.group?.parentGroup?.name,
},
},
@ -57,15 +58,15 @@ class DocumentServer {
for (let i = 0; i < runners.length; i++) {
console.log(runners[i]);
const card = {
id: runners[i].id,
id: parseInt(runners[i].id),
first_name: runners[i].firstname,
middle_name: runners[i].middlename,
last_name: runners[i].lastname,
group: {
id: runners[i].group.id,
id: parseInt(runners[i].group.id),
name: runners[i].group.name,
parent_group: {
id: runners[i]?.group?.parentGroup?.id,
id: parseInt(runners[i]?.group?.parentGroup?.id),
name: runners[i]?.group?.parentGroup?.name,
},
},
@ -96,28 +97,28 @@ class DocumentServer {
for (let i = 0; i < runners.length; i++) {
const certificate = {
id: runners[i].id,
id: parseInt(runners[i].id),
first_name: runners[i].firstname,
middle_name: runners[i].middlename,
last_name: runners[i].lastname,
self_service_link: runners[i].selfserviceLink,
group: {
id: runners[i].group.id,
id: parseInt(runners[i].group.id),
name: runners[i].group.name,
parent_group: {
id: runners[i]?.group?.parentGroup?.id,
id: parseInt(runners[i]?.group?.parentGroup?.id),
name: runners[i]?.group?.parentGroup?.name,
},
},
distance: runners[i].distance,
distance: parseInt(runners[i].distance),
distance_donations: runners[i].distanceDonations.map(
(distanceDonation: any) => {
return {
id: distanceDonation.id,
amount: distanceDonation.amount,
amount_per_distance: distanceDonation.amountPerDistance,
amount: parseInt(distanceDonation.amount),
amount_per_distance: parseInt(distanceDonation.amountPerDistance),
donor: {
id: distanceDonation.donor.id,
id: parseInt(distanceDonation.donor.id),
first_name: distanceDonation.donor.firstname,
middle_name: distanceDonation.donor.middlename,
last_name: distanceDonation.donor.lastname,

View File

@ -20,13 +20,13 @@
export let generate_orgs = [];
export let generate_teams = [];
function generateCertificates(locale) {
function generateCertificates(locale, include0runners = false) {
if (generate_orgs.length > 0) {
generateOrgCertificates(locale);
generateOrgCertificates(locale, include0runners = false);
} else if (generate_teams.length > 0) {
generateTeamCertificates(locale);
generateTeamCertificates(locale, include0runners = false);
} else {
generateRunnerCertificates(locale);
generateRunnerCertificates(locale, include0runners = false);
}
}
function download(blob, fileName) {
@ -41,7 +41,7 @@
toast.success($_("pdf-successfully-generated"));
}
async function generateRunnerCertificates(locale) {
async function generateRunnerCertificates(locale, include0runners = false) {
toast.loading($_("generating-pdf"));
const current_donations =
(await DonationService.donationControllerGetAll()) || [];
@ -50,7 +50,15 @@
const linkRunner = await RunnerService.runnerControllerGetOne(runner.id)
linkRunner.distanceDonations =
current_donations.filter((d) => d.runner?.id == runner.id) || [];
certificateRunners.push(linkRunner);
// check if linkRunner.distance is 0, if so, and include0runners is false, skip this runner
if (
!include0runners &&
(linkRunner.distance === 0 || linkRunner.distance === null)
) {
continue;
} else {
certificateRunners.push(linkRunner);
}
}
documentServer
.generateCertificates(certificateRunners, locale)
@ -66,7 +74,7 @@
.catch((err) => {});
}
async function generateTeamCertificates(locale) {
async function generateTeamCertificates(locale, include0runners = false) {
toast.loading($_("generating-pdfs"));
let count = 0;
const current_donations =
@ -80,7 +88,15 @@
for (let runner of runners) {
runner.distanceDonations =
current_donations.filter((d) => d.runner?.id == runner.id) || [];
certificateRunners.push(runner);
// check if runner.distance is 0, if so, and include0runners is false, skip this runner
if (
!include0runners &&
(runner.distance === 0 || runner.distance === null)
) {
continue;
} else {
certificateRunners.push(runner);
}
}
documentServer
.generateCertificates(certificateRunners, locale)
@ -95,7 +111,7 @@
}
}
async function generateOrgCertificates(locale) {
async function generateOrgCertificates(locale, include0runners = false) {
toast.loading($_("generating-pdfs"));
const current_donations =
(await DonationService.donationControllerGetAll()) || [];
@ -114,7 +130,15 @@
for (let runner of runners) {
runner.distanceDonations =
current_donations.filter((d) => d.runner?.id == runner.id) || [];
certificateRunners.push(runner);
// check if runner.distance is 0, if so, and include0runners is false, skip this runner
if (
!include0runners &&
(runner.distance === 0 || runner.distance === null)
) {
continue;
} else {
certificateRunners.push(runner);
}
}
await documentServer
.generateCertificates(certificateRunners, locale)
@ -161,20 +185,36 @@
</script>
{#if certificates_show}
<button
on:click={() => {
generateCertificates("de");
}}
class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:w-auto sm:text-sm mb-1 lg:mb-0"
>
{$_("generate-runner-certificates")}: DE
</button>
<button
on:click={() => {
generateCertificates("en");
}}
class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:w-auto sm:text-sm mb-1 lg:mb-0"
>
{$_("generate-runner-certificates")}: EN
</button>
<button
on:click={() => {
generateCertificates("de", true);
}}
class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:w-auto sm:text-sm mb-1 lg:mb-0"
>
{$_("generate-runner-certificates")}: DE
</button>
<button
on:click={() => {
generateCertificates("de", false);
}}
class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:w-auto sm:text-sm mb-1 lg:mb-0"
>
{$_("generate-runner-certificates")}: DE [{$_('exclude_0m_runners_certificate')}]
</button>
<button
on:click={() => {
generateCertificates("en", true);
}}
class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:w-auto sm:text-sm mb-1 lg:mb-0"
>
{$_("generate-runner-certificates")}: EN
</button>
<button
on:click={() => {
generateCertificates("en", false);
}}
class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:w-auto sm:text-sm mb-1 lg:mb-0"
>
{$_("generate-runner-certificates")}: EN [{$_('exclude_0m_runners_certificate')}]
</button>
{/if}

View File

@ -232,6 +232,7 @@
"error-whyile-copying-to-clipboard": "Fehler beim Kopieren in die Zwischenablage",
"error_on_login": "😢Fehler beim Login",
"everything-concerning-your-profile": "Alles zu deinem Profil",
"exclude_0m_runners_certificate": "ohne 0m Läufer",
"existing-donor": "Existierende Sponsor:in",
"faq": "FAQ",
"fast_card_replacement": "Karten-Schnellzusweisung (Mit Mobilgeräteunterstützung)",

View File

@ -232,6 +232,7 @@
"error-whyile-copying-to-clipboard": "Error while copying to clipboard",
"error_on_login": "Error on login",
"everything-concerning-your-profile": "Everything concerning your profile",
"exclude_0m_runners_certificate": "exclude runners without scans",
"existing-donor": "Existing Donor",
"faq": "FAQ",
"fast_card_replacement": "Fast card replacement (with mobile support)",