Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
ae056cd88c | |||
7f989b206b | |||
65ce02e777 | |||
878d9714cb | |||
f99b7f4bb8 | |||
e23098410c |
18
CHANGELOG.md
18
CHANGELOG.md
@ -2,13 +2,31 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
||||||
|
|
||||||
|
#### [1.7.0](https://git.odit.services/lfk/frontend/compare/1.6.0...1.7.0)
|
||||||
|
|
||||||
|
- refactor(pdfgeneration): Switch cards over to new service [`e230984`](https://git.odit.services/lfk/frontend/commit/e23098410c7d0b326cdbbb3a4b63fed10611e252)
|
||||||
|
- refactor(pdfgeneration): Switch to new document-server api [`878d971`](https://git.odit.services/lfk/frontend/commit/878d9714cbc0a60cfd96bd1faf8af6af46e6fb5e)
|
||||||
|
- refactor(pdfgeneration): Switched contract generation over to new document-server [`f99b7f4`](https://git.odit.services/lfk/frontend/commit/f99b7f4bb8f166bb966022ddd10689c082d248f0)
|
||||||
|
- refactor(cards): Switched over to new document-server api [`65ce02e`](https://git.odit.services/lfk/frontend/commit/65ce02e777e6e9b3cfed248de680e5f292b3a639)
|
||||||
|
- fix(pdfgeneration): Added parent_group [`7f989b2`](https://git.odit.services/lfk/frontend/commit/7f989b206b16e2687d01a38da8e3ea9be0a52ba5)
|
||||||
|
|
||||||
|
#### [1.6.0](https://git.odit.services/lfk/frontend/compare/1.5.3...1.6.0)
|
||||||
|
|
||||||
|
> 11 December 2024
|
||||||
|
|
||||||
|
- refactor(orgs): Swtich to new selfservice baseurl [`e2d6fbb`](https://git.odit.services/lfk/frontend/commit/e2d6fbb513dc9fe7ce05855edb4b0b4b5daeb07a)
|
||||||
|
- chore: bump [`04494d2`](https://git.odit.services/lfk/frontend/commit/04494d2a2a542f25f785f3bb23e49e5eb0691c0a)
|
||||||
|
|
||||||
#### [1.5.3](https://git.odit.services/lfk/frontend/compare/1.5.2...1.5.3)
|
#### [1.5.3](https://git.odit.services/lfk/frontend/compare/1.5.2...1.5.3)
|
||||||
|
|
||||||
|
> 26 November 2024
|
||||||
|
|
||||||
- feat(dx): Yarn support [`fc15c68`](https://git.odit.services/lfk/frontend/commit/fc15c68cba0d1986563eaf63da3a68784a685a9e)
|
- feat(dx): Yarn support [`fc15c68`](https://git.odit.services/lfk/frontend/commit/fc15c68cba0d1986563eaf63da3a68784a685a9e)
|
||||||
- feat(about): cleanup ui [`84aa846`](https://git.odit.services/lfk/frontend/commit/84aa846b87186b52a2f8632724d4f2cb70af062b)
|
- feat(about): cleanup ui [`84aa846`](https://git.odit.services/lfk/frontend/commit/84aa846b87186b52a2f8632724d4f2cb70af062b)
|
||||||
- feat(dashboard): reorder menu items [`e967d8d`](https://git.odit.services/lfk/frontend/commit/e967d8d20c6972b64b0096594a09043553e9c7e5)
|
- feat(dashboard): reorder menu items [`e967d8d`](https://git.odit.services/lfk/frontend/commit/e967d8d20c6972b64b0096594a09043553e9c7e5)
|
||||||
- fix: unexpected/ missing props [`d803f3d`](https://git.odit.services/lfk/frontend/commit/d803f3d4905d6f792b77d17025467ac13c29068b)
|
- fix: unexpected/ missing props [`d803f3d`](https://git.odit.services/lfk/frontend/commit/d803f3d4905d6f792b77d17025467ac13c29068b)
|
||||||
- chore(deps): bump some [`68b4309`](https://git.odit.services/lfk/frontend/commit/68b4309164eac40b6fda969b60a7e238985d49f8)
|
- chore(deps): bump some [`68b4309`](https://git.odit.services/lfk/frontend/commit/68b4309164eac40b6fda969b60a7e238985d49f8)
|
||||||
|
- 🚀RELEASE v1.5.3 [`477c650`](https://git.odit.services/lfk/frontend/commit/477c650f3f6dd2eadf5f1cc404e8fc9b02a7841b)
|
||||||
- fix(ci): Switch over to new woodpecker version [`7ba890d`](https://git.odit.services/lfk/frontend/commit/7ba890dfd7ba908ebef0338f6faa5e7d804cb5ef)
|
- fix(ci): Switch over to new woodpecker version [`7ba890d`](https://git.odit.services/lfk/frontend/commit/7ba890dfd7ba908ebef0338f6faa5e7d804cb5ef)
|
||||||
- refactor(ci): Only build licences, don't export [`32b5f54`](https://git.odit.services/lfk/frontend/commit/32b5f5420bf9ff656b713d61b3a0113b9d6cb69f)
|
- refactor(ci): Only build licences, don't export [`32b5f54`](https://git.odit.services/lfk/frontend/commit/32b5f5420bf9ff656b713d61b3a0113b9d6cb69f)
|
||||||
- feat: cleanup random page toasts [`ad4db88`](https://git.odit.services/lfk/frontend/commit/ad4db882f0f4d00a80ae5e0072e09c071c07ffa2)
|
- feat: cleanup random page toasts [`ad4db88`](https://git.odit.services/lfk/frontend/commit/ad4db882f0f4d00a80ae5e0072e09c071c07ffa2)
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
<body>
|
<body>
|
||||||
<span style="display: none; visibility: hidden" id="buildinfo"
|
<span style="display: none; visibility: hidden" id="buildinfo"
|
||||||
>RELEASE_INFO-1.5.3-RELEASE_INFO</span
|
>RELEASE_INFO-1.7.0-RELEASE_INFO</span
|
||||||
>
|
>
|
||||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
<script src="/env.js"></script>
|
<script src="/env.js"></script>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@odit/lfk-frontend",
|
"name": "@odit/lfk-frontend",
|
||||||
"version": "1.6.0",
|
"version": "1.7.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"i18n-order": "node order.js",
|
"i18n-order": "node order.js",
|
||||||
|
@ -5,8 +5,11 @@
|
|||||||
import { RunnerCardService } from "@odit/lfk-client-js";
|
import { RunnerCardService } from "@odit/lfk-client-js";
|
||||||
import { createEventDispatcher } from "svelte";
|
import { createEventDispatcher } from "svelte";
|
||||||
import toast from "svelte-french-toast";
|
import toast from "svelte-french-toast";
|
||||||
|
import DocumentServer from "../pdf_generation/DocumentServer";
|
||||||
export let bulk_modal_open;
|
export let bulk_modal_open;
|
||||||
const dispatch = createEventDispatcher();
|
const dispatch = createEventDispatcher();
|
||||||
|
const documentServer = new DocumentServer(config.baseurl_documentserver,config.documentserver_key);
|
||||||
|
|
||||||
|
|
||||||
$: card_count = 0;
|
$: card_count = 0;
|
||||||
$: is_card_count_valid = card_count > 0;
|
$: is_card_count_valid = card_count > 0;
|
||||||
@ -60,24 +63,7 @@
|
|||||||
toast.success($_("created-blanco-cards"));
|
toast.success($_("created-blanco-cards"));
|
||||||
toast.loading($_("generating-pdf"));
|
toast.loading($_("generating-pdf"));
|
||||||
dispatch("created", { cards: result });
|
dispatch("created", { cards: result });
|
||||||
fetch(
|
documentServer.generateCards(result, "de")
|
||||||
`${config.baseurl_documentserver}/cards?&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(result),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
const url = window.URL.createObjectURL(blob);
|
const url = window.URL.createObjectURL(blob);
|
||||||
let a = document.createElement("a");
|
let a = document.createElement("a");
|
||||||
|
142
src/components/pdf_generation/DocumentServer.ts
Normal file
142
src/components/pdf_generation/DocumentServer.ts
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
class DocumentServer {
|
||||||
|
baseUrl: string;
|
||||||
|
apiKey: string;
|
||||||
|
|
||||||
|
constructor(baseUrl: string, apiKey: string){
|
||||||
|
this.baseUrl = baseUrl;
|
||||||
|
this.apiKey = apiKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
async generateCards(cards: any[], locale: string) {
|
||||||
|
const generateCards = new Array<any>();
|
||||||
|
|
||||||
|
for (let i = 0; i < cards.length; i++) {
|
||||||
|
const card = {
|
||||||
|
id: cards[i].id,
|
||||||
|
enabled: cards[i].enabled,
|
||||||
|
code: cards[i].code,
|
||||||
|
runner: {
|
||||||
|
id: 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,
|
||||||
|
name: cards[i]?.runner?.group.name,
|
||||||
|
parent_group: {
|
||||||
|
id: cards[i]?.runner?.group?.parentGroup?.id,
|
||||||
|
name: cards[i]?.runner?.group?.parentGroup?.name,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
generateCards.push(card)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await fetch(`${this.baseUrl}/v1/pdfs/cards?key=${this.apiKey}`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
locale,
|
||||||
|
cards: generateCards,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
const blob = await response.blob();
|
||||||
|
return blob;
|
||||||
|
}
|
||||||
|
|
||||||
|
async generateContracts(runners: any[], locale: string) {
|
||||||
|
const generateRunners = new Array<any>();
|
||||||
|
|
||||||
|
for (let i = 0; i < runners.length; i++) {
|
||||||
|
console.log(runners[i])
|
||||||
|
const card = {
|
||||||
|
id: runners[i].id,
|
||||||
|
first_name: runners[i].firstname,
|
||||||
|
middle_name: runners[i].middlename,
|
||||||
|
last_name: runners[i].lastname,
|
||||||
|
group: {
|
||||||
|
id: runners[i].group.id,
|
||||||
|
name: runners[i].group.name,
|
||||||
|
parent_group: {
|
||||||
|
id: runners[i]?.group?.parentGroup?.id,
|
||||||
|
name: runners[i]?.group?.parentGroup?.name,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
generateRunners.push(card)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await fetch(`${this.baseUrl}/v1/pdfs/contracts?key=${this.apiKey}`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
locale,
|
||||||
|
runners: generateRunners,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
const blob = await response.blob();
|
||||||
|
return blob;
|
||||||
|
}
|
||||||
|
|
||||||
|
async generateCertificates(runners: any[], locale: string) {
|
||||||
|
const generateRunners = new Array<any>();
|
||||||
|
|
||||||
|
for (let i = 0; i < runners.length; i++) {
|
||||||
|
const certificate = {
|
||||||
|
id: runners[i].id,
|
||||||
|
first_name: runners[i].firstname,
|
||||||
|
middle_name: runners[i].middlename,
|
||||||
|
last_name: runners[i].lastname,
|
||||||
|
group: {
|
||||||
|
id: runners[i].group.id,
|
||||||
|
name: runners[i].group.name,
|
||||||
|
parent_group: {
|
||||||
|
id: runners[i]?.group?.parentGroup?.id,
|
||||||
|
name: runners[i]?.group?.parentGroup?.name,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
distance: runners[i].distance,
|
||||||
|
distance_donations: runners[i].distanceDonations.map((distanceDonation: any) =>{
|
||||||
|
return {
|
||||||
|
id: distanceDonation.id,
|
||||||
|
amount: distanceDonation.amount,
|
||||||
|
amount_per_distance: distanceDonation.amountPerDistance,
|
||||||
|
donor: {
|
||||||
|
id: distanceDonation.donor.id,
|
||||||
|
first_name: distanceDonation.donor.firstname,
|
||||||
|
middle_name: distanceDonation.donor.middlename,
|
||||||
|
last_name: distanceDonation.donor.lastname,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
generateRunners.push(certificate)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await fetch(`${this.baseUrl}/v1/pdfs/certificates?key=${this.apiKey}`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
locale,
|
||||||
|
runners: generateRunners,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
const blob = await response.blob();
|
||||||
|
return blob;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default DocumentServer;
|
@ -6,9 +6,11 @@
|
|||||||
RunnerTeamService,
|
RunnerTeamService,
|
||||||
} from "@odit/lfk-client-js";
|
} from "@odit/lfk-client-js";
|
||||||
import toast from 'svelte-french-toast'
|
import toast from 'svelte-french-toast'
|
||||||
|
import DocumentServer from "./DocumentServer.ts"
|
||||||
|
|
||||||
import { init } from "@paralleldrive/cuid2";
|
import { init } from "@paralleldrive/cuid2";
|
||||||
const createId = init({ length: 10, fingerprint: "lfk-frontend" });
|
const createId = init({ length: 10, fingerprint: "lfk-frontend" });
|
||||||
|
const documentServer = new DocumentServer(config.baseurl_documentserver,config.documentserver_key);
|
||||||
|
|
||||||
export let cards_show = false;
|
export let cards_show = false;
|
||||||
export let generate_cards = [];
|
export let generate_cards = [];
|
||||||
@ -25,6 +27,18 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function download (blob, fileName){
|
||||||
|
const url = window.URL.createObjectURL(blob);
|
||||||
|
let a = document.createElement("a");
|
||||||
|
a.href = url;
|
||||||
|
a.download = fileName;
|
||||||
|
document.body.appendChild(a);
|
||||||
|
a.click();
|
||||||
|
a.remove();
|
||||||
|
toast.dismiss();
|
||||||
|
toast($_("pdf-successfully-generated"));
|
||||||
|
}
|
||||||
|
|
||||||
function generateRunnerCards(locale) {
|
function generateRunnerCards(locale) {
|
||||||
cards_dropdown_open = false;
|
cards_dropdown_open = false;
|
||||||
|
|
||||||
@ -41,34 +55,9 @@
|
|||||||
|
|
||||||
function generateCards(locale) {
|
function generateCards(locale) {
|
||||||
toast.loading($_("generating-pdf"));
|
toast.loading($_("generating-pdf"));
|
||||||
fetch(
|
documentServer.generateCards(generate_cards, locale)
|
||||||
`${config.baseurl_documentserver}/cards?locale=${locale}&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(generate_cards),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
const url = window.URL.createObjectURL(blob);
|
download(blob, `${$_("runnercards")}-${locale}-${createId()}.pdf`);
|
||||||
let a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
a.download = `${$_("runnercards")}-${locale}-${createId()}.pdf`;
|
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
toast.dismiss();
|
|
||||||
toast($_("pdf-successfully-generated"));
|
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
@ -88,40 +77,15 @@
|
|||||||
}
|
}
|
||||||
cards.push(card);
|
cards.push(card);
|
||||||
}
|
}
|
||||||
fetch(
|
documentServer.generateCards(cards, locale)
|
||||||
`${config.baseurl_documentserver}/cards?locale=${locale}&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(cards),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
const url = window.URL.createObjectURL(blob);
|
let fileName = `${$_("runnercards")}-${locale}-${createId()}.pdf`;
|
||||||
let a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
if (generate_runners.length == 1) {
|
if (generate_runners.length == 1) {
|
||||||
a.download = `${$_("runnercards")}_${generate_runners[0].firstname}_${
|
fileName = `${$_("runnercards")}_${generate_runners[0].firstname}_${
|
||||||
generate_runners[0].lastname
|
generate_runners[0].lastname
|
||||||
}-${locale}-${createId()}.pdf`;
|
}-${locale}-${createId()}.pdf`;
|
||||||
} else {
|
|
||||||
a.download = `${$_("runnercards")}-${locale}-${createId()}.pdf`;
|
|
||||||
}
|
}
|
||||||
document.body.appendChild(a);
|
download(blob, fileName);
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
toast.dismiss();
|
|
||||||
toast($_("pdf-successfully-generated"));
|
|
||||||
})
|
})
|
||||||
.catch((err) => {});
|
.catch((err) => {});
|
||||||
}
|
}
|
||||||
@ -144,39 +108,11 @@
|
|||||||
}
|
}
|
||||||
cards.push(card);
|
cards.push(card);
|
||||||
}
|
}
|
||||||
fetch(
|
documentServer.generateCards(cards, locale)
|
||||||
`${config.baseurl_documentserver}/cards?locale=${locale}&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(cards),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
count++;
|
download(blob, `${$_("runnercards")}_${
|
||||||
const url = window.URL.createObjectURL(blob);
|
|
||||||
let a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
a.download = `${$_("runnercards")}_${
|
|
||||||
t.name
|
t.name
|
||||||
}-${locale}-${createId()}.pdf`;
|
}-${locale}-${createId()}.pdf`)
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
if (count === generate_teams.length) {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.success($_("pdfs-successfully-generated"));
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.catch((err) => {});
|
.catch((err) => {});
|
||||||
}
|
}
|
||||||
@ -205,38 +141,11 @@
|
|||||||
}
|
}
|
||||||
cards.push(card);
|
cards.push(card);
|
||||||
}
|
}
|
||||||
await fetch(
|
await documentServer.generateCards(cards, locale)
|
||||||
`${config.baseurl_documentserver}/cards?locale=${locale}&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(cards),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
const url = window.URL.createObjectURL(blob);
|
download(blob, `${$_("runnercards")}_${
|
||||||
let a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
a.download = `${$_("runnercards")}_${
|
|
||||||
o.name
|
o.name
|
||||||
}_direct-${locale}-${createId()}.pdf`;
|
}_direct-${locale}-${createId()}.pdf`)
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
if (count === o.teams.length && count_orgs === generate_orgs.length) {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.success($_("pdfs-successfully-generated"));
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.catch((err) => {});
|
.catch((err) => {});
|
||||||
for (const t of o.teams) {
|
for (const t of o.teams) {
|
||||||
@ -254,41 +163,11 @@
|
|||||||
}
|
}
|
||||||
cards.push(card);
|
cards.push(card);
|
||||||
}
|
}
|
||||||
await fetch(
|
await documentServer.generateCards(cards, locale)
|
||||||
`${config.baseurl_documentserver}/cards?locale=${locale}&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(cards),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
const url = window.URL.createObjectURL(blob);
|
download(blob, `${$_("runnercards")}_${o.name}_${
|
||||||
let a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
a.download = `${$_("runnercards")}_${o.name}_${
|
|
||||||
t.name
|
t.name
|
||||||
}-${locale}-${createId()}.pdf`;
|
}-${locale}-${createId()}.pdf`)
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
if (
|
|
||||||
count === o.teams.length &&
|
|
||||||
count_orgs === generate_orgs.length
|
|
||||||
) {
|
|
||||||
toast.dismiss();
|
|
||||||
toast($_("pdfs-successfully-generated"));
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.catch((err) => {});
|
.catch((err) => {});
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,10 @@
|
|||||||
} from "@odit/lfk-client-js";
|
} from "@odit/lfk-client-js";
|
||||||
import { init } from "@paralleldrive/cuid2";
|
import { init } from "@paralleldrive/cuid2";
|
||||||
import toast from "svelte-french-toast";
|
import toast from "svelte-french-toast";
|
||||||
|
import DocumentServer from "./DocumentServer";
|
||||||
const createId = init({ length: 10, fingerprint: "lfk-frontend" });
|
const createId = init({ length: 10, fingerprint: "lfk-frontend" });
|
||||||
|
const documentServer = new DocumentServer(config.baseurl_documentserver,config.documentserver_key);
|
||||||
|
|
||||||
|
|
||||||
export let certificates_show = false;
|
export let certificates_show = false;
|
||||||
export let generate_runners = [];
|
export let generate_runners = [];
|
||||||
@ -34,6 +37,17 @@
|
|||||||
generateRunnerCertificates(locale);
|
generateRunnerCertificates(locale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function download (blob, fileName){
|
||||||
|
const url = window.URL.createObjectURL(blob);
|
||||||
|
let a = document.createElement("a");
|
||||||
|
a.href = url;
|
||||||
|
a.download = fileName;
|
||||||
|
document.body.appendChild(a);
|
||||||
|
a.click();
|
||||||
|
a.remove();
|
||||||
|
toast.dismiss();
|
||||||
|
toast($_("pdf-successfully-generated"));
|
||||||
|
}
|
||||||
|
|
||||||
async function generateRunnerCertificates(locale) {
|
async function generateRunnerCertificates(locale) {
|
||||||
toast.loading($_("generating-pdf"));
|
toast.loading($_("generating-pdf"));
|
||||||
@ -45,40 +59,15 @@
|
|||||||
current_donations.filter((d) => d.runner?.id == runner.id) || [];
|
current_donations.filter((d) => d.runner?.id == runner.id) || [];
|
||||||
certificateRunners.push(runner);
|
certificateRunners.push(runner);
|
||||||
}
|
}
|
||||||
fetch(
|
documentServer.generateCertificates(certificateRunners, locale)
|
||||||
`${config.baseurl_documentserver}/certificates?locale=${locale}&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(certificateRunners),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
const url = window.URL.createObjectURL(blob);
|
let fileName = `${$_("certificates")}-${locale}.pdf`
|
||||||
let a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
if (generate_runners.length == 1) {
|
if (generate_runners.length == 1) {
|
||||||
a.download = `${$_("certificates")}_${
|
fileName = `${$_("certificates")}_${
|
||||||
generate_runners[0].firstname
|
generate_runners[0].firstname
|
||||||
}_${generate_runners[0].lastname}-${locale}-${createId()}.pdf`;
|
}_${generate_runners[0].lastname}-${locale}-${createId()}.pdf`;
|
||||||
} else {
|
|
||||||
a.download = `${$_("certificates")}-${locale}.pdf`;
|
|
||||||
}
|
}
|
||||||
document.body.appendChild(a);
|
download(blob, fileName);
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
toast.dismiss();
|
|
||||||
toast($_("pdf-successfully-generated"));
|
|
||||||
})
|
})
|
||||||
.catch((err) => {});
|
.catch((err) => {});
|
||||||
}
|
}
|
||||||
@ -98,39 +87,12 @@
|
|||||||
current_donations.filter((d) => d.runner?.id == runner.id) || [];
|
current_donations.filter((d) => d.runner?.id == runner.id) || [];
|
||||||
certificateRunners.push(runner);
|
certificateRunners.push(runner);
|
||||||
}
|
}
|
||||||
fetch(
|
documentServer.generateCertificates(certificateRunners, locale)
|
||||||
`${config.baseurl_documentserver}/certificates?locale=${locale}&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(certificateRunners),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
count++;
|
count++;
|
||||||
const url = window.URL.createObjectURL(blob);
|
download(blob, `${$_("certificates")}_${
|
||||||
let a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
a.download = `${$_("certificates")}_${
|
|
||||||
t.name
|
t.name
|
||||||
}-${locale}-${createId()}.pdf`;
|
}-${locale}-${createId()}.pdf`)
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
if (count === generate_teams.length) {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.success($_("pdfs-successfully-generated"));
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.catch((err) => {});
|
.catch((err) => {});
|
||||||
}
|
}
|
||||||
@ -156,38 +118,11 @@
|
|||||||
current_donations.filter((d) => d.runner?.id == runner.id) || [];
|
current_donations.filter((d) => d.runner?.id == runner.id) || [];
|
||||||
certificateRunners.push(runner);
|
certificateRunners.push(runner);
|
||||||
}
|
}
|
||||||
await fetch(
|
await documentServer.generateCertificates(certificateRunners, locale)
|
||||||
`${config.baseurl_documentserver}/certificates?locale=${locale}&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(certificateRunners),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
const url = window.URL.createObjectURL(blob);
|
download(blob, `${$_("certificates")}_${
|
||||||
let a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
a.download = `${$_("certificates")}_${
|
|
||||||
o.name
|
o.name
|
||||||
}-${locale}-${createId()}.pdf`;
|
}-${locale}-${createId()}.pdf`)
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
if (count === o.teams.length && count_orgs === generate_orgs.length) {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.success($_("pdfs-successfully-generated"));
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.catch((err) => {});
|
.catch((err) => {});
|
||||||
for (const t of o.teams) {
|
for (const t of o.teams) {
|
||||||
@ -201,34 +136,11 @@
|
|||||||
current_donations.filter((d) => d.runner?.id == runner.id) || [];
|
current_donations.filter((d) => d.runner?.id == runner.id) || [];
|
||||||
certificateRunners.push(runner);
|
certificateRunners.push(runner);
|
||||||
}
|
}
|
||||||
await fetch(
|
await documentServer.generateCertificates(certificateRunners, locale)
|
||||||
`${config.baseurl_documentserver}/certificates?locale=${locale}&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(certificateRunners),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
const url = window.URL.createObjectURL(blob);
|
download(blob, `${$_("certificates")}_${o.name}_${
|
||||||
let a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
a.download = `${$_("certificates")}_${o.name}_${
|
|
||||||
t.name
|
t.name
|
||||||
}-${locale}-${createId()}.pdf`;
|
}-${locale}-${createId()}.pdf`)
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
if (
|
if (
|
||||||
count === o.teams.length &&
|
count === o.teams.length &&
|
||||||
count_orgs === generate_orgs.length
|
count_orgs === generate_orgs.length
|
||||||
|
@ -4,10 +4,12 @@
|
|||||||
RunnerOrganizationService,
|
RunnerOrganizationService,
|
||||||
RunnerTeamService,
|
RunnerTeamService,
|
||||||
} from "@odit/lfk-client-js";
|
} from "@odit/lfk-client-js";
|
||||||
|
import DocumentServer from "./DocumentServer";
|
||||||
import { init } from "@paralleldrive/cuid2";
|
import { init } from "@paralleldrive/cuid2";
|
||||||
import toast from "svelte-french-toast";
|
import toast from "svelte-french-toast";
|
||||||
const createId = init({ length: 10, fingerprint: "lfk-frontend" });
|
const createId = init({ length: 10, fingerprint: "lfk-frontend" });
|
||||||
|
const documentServer = new DocumentServer(config.baseurl_documentserver,config.documentserver_key);
|
||||||
|
|
||||||
|
|
||||||
export let sponsoring_contracts_show = false;
|
export let sponsoring_contracts_show = false;
|
||||||
export let generate_runners = [];
|
export let generate_runners = [];
|
||||||
@ -34,6 +36,17 @@
|
|||||||
generateRunnerContracts(locale);
|
generateRunnerContracts(locale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function download (blob, fileName){
|
||||||
|
const url = window.URL.createObjectURL(blob);
|
||||||
|
let a = document.createElement("a");
|
||||||
|
a.href = url;
|
||||||
|
a.download = fileName;
|
||||||
|
document.body.appendChild(a);
|
||||||
|
a.click();
|
||||||
|
a.remove();
|
||||||
|
toast.dismiss();
|
||||||
|
toast($_("pdf-successfully-generated"));
|
||||||
|
}
|
||||||
|
|
||||||
async function generateTeamContracts(locale) {
|
async function generateTeamContracts(locale) {
|
||||||
toast.loading($_("generating-pdfs"));
|
toast.loading($_("generating-pdfs"));
|
||||||
@ -43,38 +56,11 @@
|
|||||||
const runners = await RunnerTeamService.runnerTeamControllerGetRunners(
|
const runners = await RunnerTeamService.runnerTeamControllerGetRunners(
|
||||||
t.id
|
t.id
|
||||||
);
|
);
|
||||||
fetch(
|
documentServer.generateContracts(runners, locale)
|
||||||
`${config.baseurl_documentserver}/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(runners),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
const url = window.URL.createObjectURL(blob);
|
download(blob, `${$_("sponsorings")}_${
|
||||||
let a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
a.download = `${$_("sponsorings")}_${
|
|
||||||
t.name
|
t.name
|
||||||
}-${locale}-${createId()}.pdf`;
|
}-${locale}-${createId()}.pdf`)
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
if (count === generate_teams.length) {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.success($_("pdfs-successfully-generated"));
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.catch((err) => {});
|
.catch((err) => {});
|
||||||
}
|
}
|
||||||
@ -91,38 +77,11 @@
|
|||||||
o.id,
|
o.id,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
await fetch(
|
await documentServer.generateContracts(runners, locale)
|
||||||
`${config.baseurl_documentserver}/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(runners),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
const url = window.URL.createObjectURL(blob);
|
download(blob, `${$_("sponsorings")}_${
|
||||||
let a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
a.download = `${$_("sponsorings")}_${
|
|
||||||
o.name
|
o.name
|
||||||
}_direct-${locale}-${createId()}.pdf`;
|
}_direct-${locale}-${createId()}.pdf`)
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
if (count === o.teams.length && count_orgs === generate_orgs.length) {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.success($_("pdfs-successfully-generated"));
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.catch((err) => {});
|
.catch((err) => {});
|
||||||
for (const t of o.teams) {
|
for (const t of o.teams) {
|
||||||
@ -130,41 +89,11 @@
|
|||||||
let runners = await RunnerTeamService.runnerTeamControllerGetRunners(
|
let runners = await RunnerTeamService.runnerTeamControllerGetRunners(
|
||||||
t.id
|
t.id
|
||||||
);
|
);
|
||||||
await fetch(
|
await documentServer.generateContracts(runners, locale)
|
||||||
`${config.baseurl_documentserver}/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(runners),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
const url = window.URL.createObjectURL(blob);
|
download(blob, `${$_("sponsorings")}_${o.name}_${
|
||||||
let a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
a.download = `${$_("sponsorings")}_${o.name}_${
|
|
||||||
t.name
|
t.name
|
||||||
}-${locale}-${createId()}.pdf`;
|
}-${locale}-${createId()}.pdf`)
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
if (
|
|
||||||
count === o.teams.length &&
|
|
||||||
count_orgs === generate_orgs.length
|
|
||||||
) {
|
|
||||||
toast.dismiss();
|
|
||||||
toast($_("pdfs-successfully-generated"));
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.catch((err) => {});
|
.catch((err) => {});
|
||||||
}
|
}
|
||||||
@ -173,39 +102,15 @@
|
|||||||
|
|
||||||
function generateRunnerContracts(locale) {
|
function generateRunnerContracts(locale) {
|
||||||
toast.loading($_("generating-pdf"));
|
toast.loading($_("generating-pdf"));
|
||||||
fetch(
|
documentServer.generateContracts(generate_runners, locale)
|
||||||
`${config.baseurl_documentserver}/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
|
|
||||||
{
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(generate_runners),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
.then((response) => {
|
|
||||||
if (response.status != "200") {
|
|
||||||
toast.dismiss();
|
|
||||||
toast.error($_("pdf-generation-failed"));
|
|
||||||
} else {
|
|
||||||
return response.blob();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then((blob) => {
|
.then((blob) => {
|
||||||
const url = window.URL.createObjectURL(blob);
|
let fileName = `${$_("sponsorings")}-${locale}-${createId()}.pdf`
|
||||||
let a = document.createElement("a");
|
|
||||||
a.href = url;
|
|
||||||
if (generate_runners.length == 1) {
|
if (generate_runners.length == 1) {
|
||||||
a.download = `${$_("sponsorings")}_${generate_runners[0].firstname}_${
|
fileName= `${$_("sponsorings")}_${generate_runners[0].firstname}_${
|
||||||
generate_runners[0].lastname
|
generate_runners[0].lastname
|
||||||
}-${locale}-${createId()}.pdf`;
|
}-${locale}-${createId()}.pdf`;
|
||||||
}
|
}
|
||||||
a.download = `${$_("sponsorings")}-${locale}-${createId()}.pdf`;
|
download(blob, fileName);
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
a.remove();
|
|
||||||
toast.dismiss();
|
|
||||||
toast($_("pdf-successfully-generated"));
|
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user