Compare commits
	
		
			21 Commits
		
	
	
		
			ef81b8adf9
			...
			0.14.0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 9c5fc6b61c | |||
| 302caf015f | |||
| e11296071a | |||
| 112eb29f93 | |||
| c6c97516b3 | |||
| 03676b2894 | |||
| 9ca57fac2e | |||
| 18f151c1fb | |||
| e90e56d8b2 | |||
| d241ca5698 | |||
| b512cf8667 | |||
| a24d2923c6 | |||
| 467808abef | |||
| 861f1f2216 | |||
| 509b22bea0 | |||
| 7447b2f4c1 | |||
| fef14b6e4f | |||
| 01d2a7e6aa | |||
| ac586fec5a | |||
| 5476808683 | |||
| 331d737796 | 
@@ -27,7 +27,7 @@ name: build:dev
 | 
			
		||||
steps:
 | 
			
		||||
  - name: run full license export
 | 
			
		||||
    depends_on: ["clone"]
 | 
			
		||||
    image: node:alpine
 | 
			
		||||
    image: registry.odit.services/hub/library/node:alpine
 | 
			
		||||
    commands:
 | 
			
		||||
      - yarn
 | 
			
		||||
      - yarn licenses:export
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										44
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -2,8 +2,52 @@
 | 
			
		||||
 | 
			
		||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
 | 
			
		||||
 | 
			
		||||
#### [0.14.0](https://git.odit.services/lfk/frontend/compare/0.13.1...0.14.0)
 | 
			
		||||
 | 
			
		||||
- Merge pull request 'added donor receipt list download to DonorsOverview' (#134) from feature/132-export-donors-receipt-list into dev [`#132`](https://git.odit.services/lfk/frontend/issues/132)
 | 
			
		||||
- Sorted translations 🌎 [`c6c9751`](https://git.odit.services/lfk/frontend/commit/c6c97516b3981ef580d620c0c8a6fcc42f26facd)
 | 
			
		||||
- Fixed typos in translations [`03676b2`](https://git.odit.services/lfk/frontend/commit/03676b2894892c3559118b93e969c063b53b081e)
 | 
			
		||||
- added donor receipt list download to DonorsOverview [`d241ca5`](https://git.odit.services/lfk/frontend/commit/d241ca569838abbe9581fbd319f7f3b563cb7dcc)
 | 
			
		||||
- ⏫ general version bump [`18f151c`](https://git.odit.services/lfk/frontend/commit/18f151c1fb878a74c3d1a2c2a2debf7913739417)
 | 
			
		||||
- new license file version [CI SKIP] [`302caf0`](https://git.odit.services/lfk/frontend/commit/302caf015f88f77e2b2ae2b67680e79f987ad81e)
 | 
			
		||||
- Switched to selfhosted images [`112eb29`](https://git.odit.services/lfk/frontend/commit/112eb29f932cd936f1d6c2308dcaeaf8cb642490)
 | 
			
		||||
- ⏫ bump @odit/lfk-client-js@0.11.0 [`9ca57fa`](https://git.odit.services/lfk/frontend/commit/9ca57fac2eeabbf25142a507fb9c0fa3c90b4e74)
 | 
			
		||||
- replace donationAmount with paidDonationAmount [`e90e56d`](https://git.odit.services/lfk/frontend/commit/e90e56d8b26aef23aba2bbb0c3942ba4d7feb224)
 | 
			
		||||
 | 
			
		||||
#### [0.13.1](https://git.odit.services/lfk/frontend/compare/0.13.0...0.13.1)
 | 
			
		||||
 | 
			
		||||
> 11 April 2021
 | 
			
		||||
 | 
			
		||||
- 🚀RELEASE v0.13.1 [`b512cf8`](https://git.odit.services/lfk/frontend/commit/b512cf86674f1c60b5ac790985ededdfd6554185)
 | 
			
		||||
- For await fix [`a24d292`](https://git.odit.services/lfk/frontend/commit/a24d2923c6e6da90d610c05183d29d47eaf2ed30)
 | 
			
		||||
 | 
			
		||||
#### [0.13.0](https://git.odit.services/lfk/frontend/compare/0.12.5...0.13.0)
 | 
			
		||||
 | 
			
		||||
> 11 April 2021
 | 
			
		||||
 | 
			
		||||
- 🚀RELEASE v0.13.0 [`467808a`](https://git.odit.services/lfk/frontend/commit/467808abefe127dac66a2837fcce3197dddb140f)
 | 
			
		||||
- Merge pull request 'Better org pdf generation feature/130-org_doc_splitting' (#131) from feature/130-org_doc_splitting into dev [`861f1f2`](https://git.odit.services/lfk/frontend/commit/861f1f221653283e7586aa2c67b205337fd44398)
 | 
			
		||||
- Org card generation now runs in sequence [`fef14b6`](https://git.odit.services/lfk/frontend/commit/fef14b6e4fb47ad92da61de91fedce96aea26b2c)
 | 
			
		||||
- Org certificate generation now runs in sequence [`509b22b`](https://git.odit.services/lfk/frontend/commit/509b22bea0dd3e4446e6ecc37d27644e9bf2ad50)
 | 
			
		||||
- Org contract generation now runs in sequence [`01d2a7e`](https://git.odit.services/lfk/frontend/commit/01d2a7e6aa709b3f2d71575f705fc962e97e2742)
 | 
			
		||||
- Emergency document server url change [`5476808`](https://git.odit.services/lfk/frontend/commit/5476808683a919bc34dbaea1f1ed276d49750096)
 | 
			
		||||
- Fixed const -> let [`7447b2f`](https://git.odit.services/lfk/frontend/commit/7447b2f4c134a585905db6733093eab13e6f7c47)
 | 
			
		||||
- Hotfix: Org * generation🐞 [`ac586fe`](https://git.odit.services/lfk/frontend/commit/ac586fec5abd324d590ba99cdfe8ddddefbf95e6)
 | 
			
		||||
 | 
			
		||||
#### [0.12.5](https://git.odit.services/lfk/frontend/compare/0.12.4...0.12.5)
 | 
			
		||||
 | 
			
		||||
> 8 April 2021
 | 
			
		||||
 | 
			
		||||
- 🚀RELEASE v0.12.5 [`331d737`](https://git.odit.services/lfk/frontend/commit/331d737796c82454b1c19fa1840ccc20e36d2626)
 | 
			
		||||
- Merge pull request 'Added runner team's parentorg name to runenr overciew' (#129) from feature/128-runner_orgs into dev [`ef81b8a`](https://git.odit.services/lfk/frontend/commit/ef81b8adf9bef685a55936d7544bf645c0d6ecbe)
 | 
			
		||||
- Switched to html entity [`8a7d635`](https://git.odit.services/lfk/frontend/commit/8a7d635cef2d465e70c84e1f7a7b90b98a8dbab1)
 | 
			
		||||
- Added runner team's parentorg name to runenr overciew [`4c259c1`](https://git.odit.services/lfk/frontend/commit/4c259c1eef2b0166ce6a8493d0c9e9d5ede11146)
 | 
			
		||||
 | 
			
		||||
#### [0.12.4](https://git.odit.services/lfk/frontend/compare/0.12.3...0.12.4)
 | 
			
		||||
 | 
			
		||||
> 8 April 2021
 | 
			
		||||
 | 
			
		||||
- 🚀RELEASE v0.12.4 [`5b4ede5`](https://git.odit.services/lfk/frontend/commit/5b4ede5e2f6a26b475a7a4b430a4146d21fb9671)
 | 
			
		||||
- 🚑 [HOTFIX] - drop "svelte-infinite-loading" [`d0ab3dd`](https://git.odit.services/lfk/frontend/commit/d0ab3dda78bbad2cea18a2491056530897d56607)
 | 
			
		||||
 | 
			
		||||
#### [0.12.3](https://git.odit.services/lfk/frontend/compare/0.12.2...0.12.3)
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
  <span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-0.12.4-RELEASE_INFO</span>
 | 
			
		||||
  <span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-0.14.0-RELEASE_INFO</span>
 | 
			
		||||
  <noscript>You need to enable JavaScript to run this app.</noscript>
 | 
			
		||||
  <script src="/env.js"></script>
 | 
			
		||||
  <script type="module" src="/src/main.js"></script>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								package.json
									
									
									
									
									
								
							@@ -1,6 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
	"name": "@odit/lfk-frontend",
 | 
			
		||||
	"version": "0.12.4",
 | 
			
		||||
	"version": "0.14.0",
 | 
			
		||||
	"scripts": {
 | 
			
		||||
		"i18n-order": "node order.js",
 | 
			
		||||
		"dev": "vite",
 | 
			
		||||
@@ -11,7 +11,7 @@
 | 
			
		||||
	"license": "CC-BY-NC-SA-4.0",
 | 
			
		||||
	"devDependencies": {
 | 
			
		||||
		"check-password-strength": "2.0.2",
 | 
			
		||||
		"@odit/lfk-client-js": "0.10.1",
 | 
			
		||||
		"@odit/lfk-client-js": "0.11.0",
 | 
			
		||||
		"@odit/license-exporter": "0.0.11",
 | 
			
		||||
		"@sveltejs/vite-plugin-svelte": "1.0.0-next.6",
 | 
			
		||||
		"@types/html-minifier": "4.0.0",
 | 
			
		||||
@@ -21,8 +21,8 @@
 | 
			
		||||
		"gridjs": "3.4.0",
 | 
			
		||||
		"html-minifier": "4.0.0",
 | 
			
		||||
		"localforage": "1.9.0",
 | 
			
		||||
		"marked": "2.0.1",
 | 
			
		||||
		"release-it": "14.5.1",
 | 
			
		||||
		"marked": "2.0.3",
 | 
			
		||||
		"release-it": "14.6.1",
 | 
			
		||||
		"svelte": "3.37.0",
 | 
			
		||||
		"svelte-focus-trap": "1.2.0",
 | 
			
		||||
		"svelte-i18n": "3.3.9",
 | 
			
		||||
@@ -33,7 +33,7 @@
 | 
			
		||||
		"toastify-js": "1.10.0",
 | 
			
		||||
		"validator": "13.5.2",
 | 
			
		||||
		"vite": "2.1.5",
 | 
			
		||||
		"vite-plugin-windicss": "0.12.5",
 | 
			
		||||
		"vite-plugin-windicss": "0.14.0",
 | 
			
		||||
		"xlsx": "0.16.9"
 | 
			
		||||
	},
 | 
			
		||||
	"release-it": {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
const config = {
 | 
			
		||||
	baseurl: 'http://localhost:4010',
 | 
			
		||||
	baseurl_documentserver: 'http://localhost:4010/documents',
 | 
			
		||||
	documentserver_key: 'NqZSYTy5AFQ7MppbLW5moqpTk7u7YrNUHKYhKYuThnnya2WpCOIU694hIZT1FzYe',
 | 
			
		||||
	// optional
 | 
			
		||||
	default_username: 'demo',
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -77,7 +77,7 @@
 | 
			
		||||
            duration: -1,
 | 
			
		||||
          }).showToast();
 | 
			
		||||
          fetch(
 | 
			
		||||
            `${config.baseurl}/documents/cards?&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
            `${config.baseurl_documentserver}/cards?&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
            {
 | 
			
		||||
              method: "POST",
 | 
			
		||||
              headers: {
 | 
			
		||||
 
 | 
			
		||||
@@ -20,6 +20,31 @@
 | 
			
		||||
        {$_('add-donor')}
 | 
			
		||||
      </button>
 | 
			
		||||
    {/if}
 | 
			
		||||
    {#if store.state.jwtinfo.userdetails.permissions.includes('DONOR:GET')}
 | 
			
		||||
      <button
 | 
			
		||||
        on:click={() => {
 | 
			
		||||
          const data = (current_donors.filter(d=>d.receiptNeeded===true)).map(function (d) {
 | 
			
		||||
            d.address.address2=d.address.address2===""?"":" "+d.address.address2;
 | 
			
		||||
            const address=`${d.address.address1}${d.address.address2}, ${d.address.postalcode} ${d.address.city}, ${d.address.country}`;
 | 
			
		||||
            return [d.firstname,d.middlename,d.lastname,d.paidDonationAmount,address];
 | 
			
		||||
          })
 | 
			
		||||
          let csv = `${$_('csv_import__firstname')};${$_('csv_import__middlename')};${$_('csv_import__lastname')};${$_('total_donation_amount_in_eur')};${$_('address')}\n`;
 | 
			
		||||
    data.forEach(function(row) {
 | 
			
		||||
            csv += row.join(';');
 | 
			
		||||
            csv += "\n";
 | 
			
		||||
    });
 | 
			
		||||
    let hiddenElement = document.createElement('a');
 | 
			
		||||
    hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
 | 
			
		||||
    hiddenElement.target = '_blank';
 | 
			
		||||
    hiddenElement.download = `${$_('filename_sponsoringquittungsliste')}.csv`;
 | 
			
		||||
    hiddenElement.click();
 | 
			
		||||
    hiddenElement.remove();
 | 
			
		||||
        }}
 | 
			
		||||
        type="button"
 | 
			
		||||
        class="w-full inline-flex 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:ml-3 sm:w-auto sm:text-sm">
 | 
			
		||||
        {$_('sponsoring-quittungs-liste_herunterladen')}
 | 
			
		||||
      </button>
 | 
			
		||||
    {/if}
 | 
			
		||||
  </span>
 | 
			
		||||
  <DonorsOverview bind:current_donors />
 | 
			
		||||
</section>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
<script>
 | 
			
		||||
  import { getLocaleFromNavigator, _ } from "svelte-i18n";
 | 
			
		||||
  import { _ } from "svelte-i18n";
 | 
			
		||||
  import { DonationService, DonorService } from "@odit/lfk-client-js";
 | 
			
		||||
  import store from "../../store";
 | 
			
		||||
  import DonorsEmptyState from "./DonorsEmptyState.svelte";
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
  $: active_deletes = [];
 | 
			
		||||
  $: sponsoring_contracts_show = current_organizations.some((r) => r.is_selected === true);
 | 
			
		||||
  $: cards_show = current_organizations.some((r) => r.is_selected === true);
 | 
			
		||||
  $: generate_orgs = current_organizations.some((r) => r.is_selected === true);
 | 
			
		||||
  $: generate_orgs = current_organizations.filter((r) => r.is_selected === true);
 | 
			
		||||
  $: certificates_show = current_organizations.some(
 | 
			
		||||
    (r) => r.is_selected === true
 | 
			
		||||
  );
 | 
			
		||||
 
 | 
			
		||||
@@ -41,7 +41,7 @@
 | 
			
		||||
            duration: -1,
 | 
			
		||||
        }).showToast();
 | 
			
		||||
        fetch(
 | 
			
		||||
            `${config.baseurl}/documents/cards?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
            `${config.baseurl_documentserver}/cards?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
            {
 | 
			
		||||
                method: "POST",
 | 
			
		||||
                headers: {
 | 
			
		||||
@@ -101,7 +101,7 @@
 | 
			
		||||
            cards.push(card);
 | 
			
		||||
        }
 | 
			
		||||
        fetch(
 | 
			
		||||
            `${config.baseurl}/documents/cards?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
            `${config.baseurl_documentserver}/cards?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
            {
 | 
			
		||||
                method: "POST",
 | 
			
		||||
                headers: {
 | 
			
		||||
@@ -169,7 +169,7 @@
 | 
			
		||||
                cards.push(card);
 | 
			
		||||
            }
 | 
			
		||||
            fetch(
 | 
			
		||||
                `${config.baseurl}/documents/cards?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
                `${config.baseurl_documentserver}/cards?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
                {
 | 
			
		||||
                    method: "POST",
 | 
			
		||||
                    headers: {
 | 
			
		||||
@@ -216,15 +216,16 @@
 | 
			
		||||
 | 
			
		||||
    async function generateOrgCards(locale) {
 | 
			
		||||
        const toast = Toastify({
 | 
			
		||||
            text: $_("generating-pdf"),
 | 
			
		||||
            text: $_("generating-pdfs"),
 | 
			
		||||
            duration: -1,
 | 
			
		||||
        }).showToast();
 | 
			
		||||
        let count = 0;
 | 
			
		||||
        const current_cards = await RunnerCardService.runnerCardControllerGetAll();
 | 
			
		||||
        let count = 0;
 | 
			
		||||
        let count_orgs =0;
 | 
			
		||||
        for (const o of generate_orgs) {
 | 
			
		||||
            const runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners(
 | 
			
		||||
                o.id
 | 
			
		||||
            );
 | 
			
		||||
            count_orgs++;
 | 
			
		||||
            let count = 0;
 | 
			
		||||
            let runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners(o.id, true)
 | 
			
		||||
            let cards = [];
 | 
			
		||||
            for (let runner of runners) {
 | 
			
		||||
                let card = current_cards.find((c) => c.runner?.id == runner.id);
 | 
			
		||||
@@ -235,8 +236,8 @@
 | 
			
		||||
                }
 | 
			
		||||
                cards.push(card);
 | 
			
		||||
            }
 | 
			
		||||
            fetch(
 | 
			
		||||
                `${config.baseurl}/documents/cards?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
            await fetch(
 | 
			
		||||
                `${config.baseurl_documentserver}/cards?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
                {
 | 
			
		||||
                    method: "POST",
 | 
			
		||||
                    headers: {
 | 
			
		||||
@@ -245,39 +246,97 @@
 | 
			
		||||
                    body: JSON.stringify(cards),
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
                .then((response) => {
 | 
			
		||||
                    if (response.status != "200") {
 | 
			
		||||
                        toast.hideToast();
 | 
			
		||||
                        Toastify({
 | 
			
		||||
                            text: $_("pdf-generation-failed"),
 | 
			
		||||
                            duration: 3500,
 | 
			
		||||
                            backgroundColor:
 | 
			
		||||
                                "linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
 | 
			
		||||
                        }).showToast();
 | 
			
		||||
                    } else {
 | 
			
		||||
                        return response.blob();
 | 
			
		||||
                    }
 | 
			
		||||
                })
 | 
			
		||||
                .then((blob) => {
 | 
			
		||||
                    count++;
 | 
			
		||||
                    const url = window.URL.createObjectURL(blob);
 | 
			
		||||
                    let a = document.createElement("a");
 | 
			
		||||
                    a.href = url;
 | 
			
		||||
                    a.download = `${$_('runnercards')}_${o.name}-${locale}.pdf`;
 | 
			
		||||
                    document.body.appendChild(a);
 | 
			
		||||
                    a.click();
 | 
			
		||||
                    a.remove();
 | 
			
		||||
                    if (count === generate_orgs.length) {
 | 
			
		||||
                        toast.hideToast();
 | 
			
		||||
                        Toastify({
 | 
			
		||||
                            text: $_("pdfs-successfully-generated"),
 | 
			
		||||
                            duration: 3500,
 | 
			
		||||
                            backgroundColor:
 | 
			
		||||
                                "linear-gradient(to right, #00b09b, #96c93d)",
 | 
			
		||||
                        }).showToast();
 | 
			
		||||
                    }
 | 
			
		||||
                })
 | 
			
		||||
                .catch((err) => {});
 | 
			
		||||
            .then((response) => {
 | 
			
		||||
                if (response.status != "200") {
 | 
			
		||||
                    toast.hideToast();
 | 
			
		||||
                    Toastify({
 | 
			
		||||
                        text: $_("pdf-generation-failed"),
 | 
			
		||||
                        duration: 3500,
 | 
			
		||||
                        backgroundColor:
 | 
			
		||||
                            "linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
 | 
			
		||||
                    }).showToast();
 | 
			
		||||
                } else {
 | 
			
		||||
                    return response.blob();
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
            .then((blob) => {
 | 
			
		||||
                const url = window.URL.createObjectURL(blob);
 | 
			
		||||
                let a = document.createElement("a");
 | 
			
		||||
                a.href = url;
 | 
			
		||||
                a.download = `${$_('runnercards')}_${o.name}_direct-${locale}.pdf`;
 | 
			
		||||
                document.body.appendChild(a);
 | 
			
		||||
                a.click();
 | 
			
		||||
                a.remove();
 | 
			
		||||
                if (count === o.teams.length && count_orgs === generate_orgs.length) {
 | 
			
		||||
                    toast.hideToast();
 | 
			
		||||
                    console.log("here")
 | 
			
		||||
                    Toastify({
 | 
			
		||||
                        text: $_("pdfs-successfully-generated"),
 | 
			
		||||
                        duration: 3500,
 | 
			
		||||
                        backgroundColor:
 | 
			
		||||
                        "linear-gradient(to right, #00b09b, #96c93d)",
 | 
			
		||||
                    }).showToast();
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
            .catch((err) => {});
 | 
			
		||||
            for (const t of o.teams) {
 | 
			
		||||
                count++;
 | 
			
		||||
                let runners = await RunnerTeamService.runnerTeamControllerGetRunners(
 | 
			
		||||
                    t.id
 | 
			
		||||
                );
 | 
			
		||||
            let cards = [];
 | 
			
		||||
            for (let runner of runners) {
 | 
			
		||||
                let card = current_cards.find((c) => c.runner?.id == runner.id);
 | 
			
		||||
                if (!card) {
 | 
			
		||||
                    card = await RunnerCardService.runnerCardControllerPost({
 | 
			
		||||
                        runner: runner.id,
 | 
			
		||||
                    });
 | 
			
		||||
                }
 | 
			
		||||
                cards.push(card);
 | 
			
		||||
            }
 | 
			
		||||
            await fetch(
 | 
			
		||||
                `${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.hideToast();
 | 
			
		||||
                    Toastify({
 | 
			
		||||
                        text: $_("pdf-generation-failed"),
 | 
			
		||||
                        duration: 3500,
 | 
			
		||||
                        backgroundColor:
 | 
			
		||||
                            "linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
 | 
			
		||||
                    }).showToast();
 | 
			
		||||
                } else {
 | 
			
		||||
                    return response.blob();
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
            .then((blob) => {
 | 
			
		||||
                const url = window.URL.createObjectURL(blob);
 | 
			
		||||
                let a = document.createElement("a");
 | 
			
		||||
                a.href = url;
 | 
			
		||||
                a.download = `${$_('runnercards')}_${o.name}_${t.name}-${locale}.pdf`;
 | 
			
		||||
                document.body.appendChild(a);
 | 
			
		||||
                a.click();
 | 
			
		||||
                a.remove();
 | 
			
		||||
                if (count === o.teams.length && count_orgs === generate_orgs.length) {
 | 
			
		||||
                    toast.hideToast();
 | 
			
		||||
                    Toastify({
 | 
			
		||||
                        text: $_("pdfs-successfully-generated"),
 | 
			
		||||
                        duration: 3500,
 | 
			
		||||
                        backgroundColor:
 | 
			
		||||
                            "linear-gradient(to right, #00b09b, #96c93d)",
 | 
			
		||||
                    }).showToast();
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
            .catch((err) => {});
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -37,14 +37,14 @@
 | 
			
		||||
            text: $_("generating-pdf"),
 | 
			
		||||
            duration: -1,
 | 
			
		||||
        }).showToast();
 | 
			
		||||
        const current_donations = await DonationService.donationControllerGetAll();
 | 
			
		||||
        const current_donations = (await DonationService.donationControllerGetAll()) || [];
 | 
			
		||||
        let certificateRunners = [];
 | 
			
		||||
        for (let runner of generate_runners) {
 | 
			
		||||
            runner.distanceDonations = current_donations.find((d) => d.runner?.id == runner.id) || [];
 | 
			
		||||
            certificateRunners.push(runner);
 | 
			
		||||
        }
 | 
			
		||||
        fetch(
 | 
			
		||||
            `${config.baseurl}/documents/certificates?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
            `${config.baseurl_documentserver}/certificates?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
            {
 | 
			
		||||
                method: "POST",
 | 
			
		||||
                headers: {
 | 
			
		||||
@@ -96,7 +96,7 @@
 | 
			
		||||
            duration: -1,
 | 
			
		||||
        }).showToast();
 | 
			
		||||
        let count = 0;
 | 
			
		||||
        const current_donations = await DonationService.donationControllerGetAll();
 | 
			
		||||
        const current_donations = (await DonationService.donationControllerGetAll()) || [];
 | 
			
		||||
        for (const t of generate_teams) {
 | 
			
		||||
            const runners = await RunnerTeamService.runnerTeamControllerGetRunners(
 | 
			
		||||
                t.id
 | 
			
		||||
@@ -107,7 +107,7 @@
 | 
			
		||||
                certificateRunners.push(runner);
 | 
			
		||||
            }
 | 
			
		||||
            fetch(
 | 
			
		||||
                `${config.baseurl}/documents/certificates?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
                `${config.baseurl_documentserver}/certificates?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
                {
 | 
			
		||||
                    method: "POST",
 | 
			
		||||
                    headers: {
 | 
			
		||||
@@ -154,22 +154,23 @@
 | 
			
		||||
 | 
			
		||||
    async function generateOrgCertificates(locale) {
 | 
			
		||||
        const toast = Toastify({
 | 
			
		||||
            text: $_("generating-pdf"),
 | 
			
		||||
            text: $_("generating-pdfs"),
 | 
			
		||||
            duration: -1,
 | 
			
		||||
        }).showToast();
 | 
			
		||||
        const current_donations = (await DonationService.donationControllerGetAll()) || [];
 | 
			
		||||
        let count = 0;
 | 
			
		||||
        const current_donations = await DonationService.donationControllerGetAll();
 | 
			
		||||
        let count_orgs =0;
 | 
			
		||||
        for (const o of generate_orgs) {
 | 
			
		||||
            const runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners(
 | 
			
		||||
                o.id
 | 
			
		||||
            );
 | 
			
		||||
            count_orgs++;
 | 
			
		||||
            let count = 0;
 | 
			
		||||
            let runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners(o.id, true)
 | 
			
		||||
            let certificateRunners = [];
 | 
			
		||||
            for (let runner of runners) {
 | 
			
		||||
                runner.distanceDonations = current_donations.find((d) => d.runner?.id == runner.id) || [];
 | 
			
		||||
                certificateRunners.push(runner);
 | 
			
		||||
            }
 | 
			
		||||
            fetch(
 | 
			
		||||
                `${config.baseurl}/documents/certificates?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
            await fetch(
 | 
			
		||||
                `${config.baseurl_documentserver}/certificates?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
                {
 | 
			
		||||
                    method: "POST",
 | 
			
		||||
                    headers: {
 | 
			
		||||
@@ -178,39 +179,92 @@
 | 
			
		||||
                    body: JSON.stringify(certificateRunners),
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
                .then((response) => {
 | 
			
		||||
                    if (response.status != "200") {
 | 
			
		||||
                        toast.hideToast();
 | 
			
		||||
                        Toastify({
 | 
			
		||||
                            text: $_("pdf-generation-failed"),
 | 
			
		||||
                            duration: 3500,
 | 
			
		||||
                            backgroundColor:
 | 
			
		||||
                                "linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
 | 
			
		||||
                        }).showToast();
 | 
			
		||||
                    } else {
 | 
			
		||||
                        return response.blob();
 | 
			
		||||
                    }
 | 
			
		||||
                })
 | 
			
		||||
                .then((blob) => {
 | 
			
		||||
                    count++;
 | 
			
		||||
                    const url = window.URL.createObjectURL(blob);
 | 
			
		||||
                    let a = document.createElement("a");
 | 
			
		||||
                    a.href = url;
 | 
			
		||||
                    a.download = `${$_('certificates')}_${o.name}-${locale}.pdf`;
 | 
			
		||||
                    document.body.appendChild(a);
 | 
			
		||||
                    a.click();
 | 
			
		||||
                    a.remove();
 | 
			
		||||
                    if (count === generate_orgs.length) {
 | 
			
		||||
                        toast.hideToast();
 | 
			
		||||
                        Toastify({
 | 
			
		||||
                            text: $_("pdfs-successfully-generated"),
 | 
			
		||||
                            duration: 3500,
 | 
			
		||||
                            backgroundColor:
 | 
			
		||||
                                "linear-gradient(to right, #00b09b, #96c93d)",
 | 
			
		||||
                        }).showToast();
 | 
			
		||||
                    }
 | 
			
		||||
                })
 | 
			
		||||
                .catch((err) => {});
 | 
			
		||||
            .then((response) => {
 | 
			
		||||
                if (response.status != "200") {
 | 
			
		||||
                    toast.hideToast();
 | 
			
		||||
                    Toastify({
 | 
			
		||||
                        text: $_("pdf-generation-failed"),
 | 
			
		||||
                        duration: 3500,
 | 
			
		||||
                        backgroundColor:
 | 
			
		||||
                            "linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
 | 
			
		||||
                    }).showToast();
 | 
			
		||||
                } else {
 | 
			
		||||
                    return response.blob();
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
            .then((blob) => {
 | 
			
		||||
                const url = window.URL.createObjectURL(blob);
 | 
			
		||||
                let a = document.createElement("a");
 | 
			
		||||
                a.href = url;
 | 
			
		||||
                a.download = `${$_('certificates')}_${o.name}_direct-${locale}.pdf`;
 | 
			
		||||
                document.body.appendChild(a);
 | 
			
		||||
                a.click();
 | 
			
		||||
                a.remove();
 | 
			
		||||
                if (count === o.teams.length && count_orgs === generate_orgs.length) {
 | 
			
		||||
                    toast.hideToast();
 | 
			
		||||
                    console.log("here")
 | 
			
		||||
                    Toastify({
 | 
			
		||||
                        text: $_("pdfs-successfully-generated"),
 | 
			
		||||
                        duration: 3500,
 | 
			
		||||
                        backgroundColor:
 | 
			
		||||
                        "linear-gradient(to right, #00b09b, #96c93d)",
 | 
			
		||||
                    }).showToast();
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
            .catch((err) => {});
 | 
			
		||||
            for (const t of o.teams) {
 | 
			
		||||
                count++;
 | 
			
		||||
                let runners = await RunnerTeamService.runnerTeamControllerGetRunners(
 | 
			
		||||
                    t.id
 | 
			
		||||
                );
 | 
			
		||||
                let certificateRunners = [];
 | 
			
		||||
            for (let runner of runners) {
 | 
			
		||||
                runner.distanceDonations = current_donations.find((d) => d.runner?.id == runner.id) || [];
 | 
			
		||||
                certificateRunners.push(runner);
 | 
			
		||||
            }
 | 
			
		||||
            await fetch(
 | 
			
		||||
                `${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.hideToast();
 | 
			
		||||
                    Toastify({
 | 
			
		||||
                        text: $_("pdf-generation-failed"),
 | 
			
		||||
                        duration: 3500,
 | 
			
		||||
                        backgroundColor:
 | 
			
		||||
                            "linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
 | 
			
		||||
                    }).showToast();
 | 
			
		||||
                } else {
 | 
			
		||||
                    return response.blob();
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
            .then((blob) => {
 | 
			
		||||
                const url = window.URL.createObjectURL(blob);
 | 
			
		||||
                let a = document.createElement("a");
 | 
			
		||||
                a.href = url;
 | 
			
		||||
                a.download = `${$_('certificates')}_${o.name}_${t.name}-${locale}.pdf`;
 | 
			
		||||
                document.body.appendChild(a);
 | 
			
		||||
                a.click();
 | 
			
		||||
                a.remove();
 | 
			
		||||
                if (count === o.teams.length && count_orgs === generate_orgs.length) {
 | 
			
		||||
                    toast.hideToast();
 | 
			
		||||
                    Toastify({
 | 
			
		||||
                        text: $_("pdfs-successfully-generated"),
 | 
			
		||||
                        duration: 3500,
 | 
			
		||||
                        backgroundColor:
 | 
			
		||||
                            "linear-gradient(to right, #00b09b, #96c93d)",
 | 
			
		||||
                    }).showToast();
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
            .catch((err) => {});
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@
 | 
			
		||||
                t.id
 | 
			
		||||
            );
 | 
			
		||||
            fetch(
 | 
			
		||||
                `${config.baseurl}/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
                `${config.baseurl_documentserver}/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
                {
 | 
			
		||||
                    method: "POST",
 | 
			
		||||
                    headers: {
 | 
			
		||||
@@ -92,12 +92,13 @@
 | 
			
		||||
            text: $_("generating-pdf"),
 | 
			
		||||
            duration: -1,
 | 
			
		||||
        }).showToast();
 | 
			
		||||
        let count_orgs =0;
 | 
			
		||||
        for (const o of generate_orgs) {
 | 
			
		||||
            const runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners(
 | 
			
		||||
                o.id
 | 
			
		||||
            );
 | 
			
		||||
            fetch(
 | 
			
		||||
                `${config.baseurl}/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
            count_orgs++;
 | 
			
		||||
            let count = 0;
 | 
			
		||||
            let runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners(o.id, true)
 | 
			
		||||
            await fetch(
 | 
			
		||||
                `${config.baseurl_documentserver}/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
                {
 | 
			
		||||
                    method: "POST",
 | 
			
		||||
                    headers: {
 | 
			
		||||
@@ -106,39 +107,87 @@
 | 
			
		||||
                    body: JSON.stringify(runners),
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
                .then((response) => {
 | 
			
		||||
                    if (response.status != "200") {
 | 
			
		||||
                        toast.hideToast();
 | 
			
		||||
                        Toastify({
 | 
			
		||||
                            text: $_("pdf-generation-failed"),
 | 
			
		||||
                            duration: 3500,
 | 
			
		||||
                            backgroundColor:
 | 
			
		||||
                                "linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
 | 
			
		||||
                        }).showToast();
 | 
			
		||||
                    } else {
 | 
			
		||||
                        return response.blob();
 | 
			
		||||
                    }
 | 
			
		||||
                })
 | 
			
		||||
                .then((blob) => {
 | 
			
		||||
                    count++;
 | 
			
		||||
                    const url = window.URL.createObjectURL(blob);
 | 
			
		||||
                    let a = document.createElement("a");
 | 
			
		||||
                    a.href = url;
 | 
			
		||||
                    a.download = `${$_('sponsorings')}_${o.name}-${locale}.pdf`;
 | 
			
		||||
                    document.body.appendChild(a);
 | 
			
		||||
                    a.click();
 | 
			
		||||
                    a.remove();
 | 
			
		||||
                    if (count === generate_orgs.length) {
 | 
			
		||||
                        toast.hideToast();
 | 
			
		||||
                        Toastify({
 | 
			
		||||
                            text: $_("pdfs-successfully-generated"),
 | 
			
		||||
                            duration: 3500,
 | 
			
		||||
                            backgroundColor:
 | 
			
		||||
                                "linear-gradient(to right, #00b09b, #96c93d)",
 | 
			
		||||
                        }).showToast();
 | 
			
		||||
                    }
 | 
			
		||||
                })
 | 
			
		||||
                .catch((err) => {});
 | 
			
		||||
            .then((response) => {
 | 
			
		||||
                if (response.status != "200") {
 | 
			
		||||
                    toast.hideToast();
 | 
			
		||||
                    Toastify({
 | 
			
		||||
                        text: $_("pdf-generation-failed"),
 | 
			
		||||
                        duration: 3500,
 | 
			
		||||
                        backgroundColor:
 | 
			
		||||
                            "linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
 | 
			
		||||
                    }).showToast();
 | 
			
		||||
                } else {
 | 
			
		||||
                    return response.blob();
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
            .then((blob) => {
 | 
			
		||||
                const url = window.URL.createObjectURL(blob);
 | 
			
		||||
                let a = document.createElement("a");
 | 
			
		||||
                a.href = url;
 | 
			
		||||
                a.download = `${$_('sponsorings')}_${o.name}_direct-${locale}.pdf`;
 | 
			
		||||
                document.body.appendChild(a);
 | 
			
		||||
                a.click();
 | 
			
		||||
                a.remove();
 | 
			
		||||
                if (count === o.teams.length && count_orgs === generate_orgs.length) {
 | 
			
		||||
                    toast.hideToast();
 | 
			
		||||
                    console.log("here")
 | 
			
		||||
                    Toastify({
 | 
			
		||||
                        text: $_("pdfs-successfully-generated"),
 | 
			
		||||
                        duration: 3500,
 | 
			
		||||
                        backgroundColor:
 | 
			
		||||
                        "linear-gradient(to right, #00b09b, #96c93d)",
 | 
			
		||||
                    }).showToast();
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
            .catch((err) => {});
 | 
			
		||||
            for (const t of o.teams) {
 | 
			
		||||
                count++;
 | 
			
		||||
                let runners = await RunnerTeamService.runnerTeamControllerGetRunners(
 | 
			
		||||
                    t.id
 | 
			
		||||
                );
 | 
			
		||||
            await fetch(
 | 
			
		||||
                `${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.hideToast();
 | 
			
		||||
                    Toastify({
 | 
			
		||||
                        text: $_("pdf-generation-failed"),
 | 
			
		||||
                        duration: 3500,
 | 
			
		||||
                        backgroundColor:
 | 
			
		||||
                            "linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
 | 
			
		||||
                    }).showToast();
 | 
			
		||||
                } else {
 | 
			
		||||
                    return response.blob();
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
            .then((blob) => {
 | 
			
		||||
                const url = window.URL.createObjectURL(blob);
 | 
			
		||||
                let a = document.createElement("a");
 | 
			
		||||
                a.href = url;
 | 
			
		||||
                a.download = `${$_('sponsorings')}_${o.name}_${t.name}-${locale}.pdf`;
 | 
			
		||||
                document.body.appendChild(a);
 | 
			
		||||
                a.click();
 | 
			
		||||
                a.remove();
 | 
			
		||||
                if (count === o.teams.length && count_orgs === generate_orgs.length) {
 | 
			
		||||
                    toast.hideToast();
 | 
			
		||||
                    Toastify({
 | 
			
		||||
                        text: $_("pdfs-successfully-generated"),
 | 
			
		||||
                        duration: 3500,
 | 
			
		||||
                        backgroundColor:
 | 
			
		||||
                            "linear-gradient(to right, #00b09b, #96c93d)",
 | 
			
		||||
                    }).showToast();
 | 
			
		||||
                }
 | 
			
		||||
            })
 | 
			
		||||
            .catch((err) => {});
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -148,7 +197,7 @@
 | 
			
		||||
            duration: -1,
 | 
			
		||||
        }).showToast();
 | 
			
		||||
        fetch(
 | 
			
		||||
            `${config.baseurl}/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
            `${config.baseurl_documentserver}/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
 | 
			
		||||
            {
 | 
			
		||||
                method: "POST",
 | 
			
		||||
                headers: {
 | 
			
		||||
 
 | 
			
		||||
@@ -183,6 +183,7 @@
 | 
			
		||||
    "everything-concerning-your-profile": "Alles zu deinem Profil",
 | 
			
		||||
    "everything-is-more-fun-together": "Im Team macht's mehr Spaß 🏃♂️🏃♀️🏃♂️",
 | 
			
		||||
    "faq": "FAQ",
 | 
			
		||||
    "filename_sponsoringquittungsliste": "SponsoringQuittungsListe",
 | 
			
		||||
    "filter-by-organization-team": "Filtern nach Organisation / Team",
 | 
			
		||||
    "first-name": "Vorname",
 | 
			
		||||
    "first-name-is-required": "Vorname muss angegeben werden",
 | 
			
		||||
@@ -354,6 +355,7 @@
 | 
			
		||||
    "settings": "Einstellungen",
 | 
			
		||||
    "settings-for-your-profile": "Die Einstellungen deines Accounts",
 | 
			
		||||
    "something-about-the-group": "Infos zur Gruppe",
 | 
			
		||||
    "sponsoring-quittungs-liste_herunterladen": "Sponsoring-Quittungs-Liste herunterladen",
 | 
			
		||||
    "sponsorings": "Sponsoringerklaerungen",
 | 
			
		||||
    "stats-are-being-loaded": "Die Statistiken werden geladen...",
 | 
			
		||||
    "status": "Status",
 | 
			
		||||
@@ -386,6 +388,7 @@
 | 
			
		||||
    "total-donation-amount": "Gesamtbetrag",
 | 
			
		||||
    "total-donations": "Spendensumme",
 | 
			
		||||
    "total-scans": "gesamte Scans",
 | 
			
		||||
    "total_donation_amount_in_eur": "Gesamtbetrag in €",
 | 
			
		||||
    "track": "Track",
 | 
			
		||||
    "track-added": "Track hinzugefügt",
 | 
			
		||||
    "track-data-is-being-loaded": "Trackdaten werden geladen",
 | 
			
		||||
@@ -395,6 +398,7 @@
 | 
			
		||||
    "track-name": "Trackname",
 | 
			
		||||
    "track-name-must-not-be-empty": "Der Name muss angegeben werden",
 | 
			
		||||
    "tracks": "Tracks",
 | 
			
		||||
    "update-card": "Karte aktualisieren",
 | 
			
		||||
    "update-password": "Passwort ändern",
 | 
			
		||||
    "updated-contact": "Kontakt aktualisiert!",
 | 
			
		||||
    "updated-donor": "Sponsor:in wurde aktualisiert",
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
    "active": "Active",
 | 
			
		||||
    "add-card": "Add Card",
 | 
			
		||||
    "add-donation": "Add donation",
 | 
			
		||||
    "add-donor": "add donor",
 | 
			
		||||
    "add-donor": "Add donor",
 | 
			
		||||
    "add-scan": "Add scan",
 | 
			
		||||
    "add-the-first-scanstation": "Add your first scanstation.",
 | 
			
		||||
    "add-user-group": "Add User Group",
 | 
			
		||||
@@ -183,6 +183,7 @@
 | 
			
		||||
    "everything-concerning-your-profile": "Everything concerning your profile",
 | 
			
		||||
    "everything-is-more-fun-together": "everything is more fun together 🏃♂️🏃♀️🏃♂️",
 | 
			
		||||
    "faq": "FAQ",
 | 
			
		||||
    "filename_sponsoringquittungsliste": "DonorReceiptList",
 | 
			
		||||
    "filter-by-organization-team": "Filter by Organization/ Team",
 | 
			
		||||
    "first-name": "First name",
 | 
			
		||||
    "first-name-is-required": "First Name is required",
 | 
			
		||||
@@ -354,6 +355,7 @@
 | 
			
		||||
    "settings": "Settings",
 | 
			
		||||
    "settings-for-your-profile": "Settings for your profile",
 | 
			
		||||
    "something-about-the-group": "Something about the group...",
 | 
			
		||||
    "sponsoring-quittungs-liste_herunterladen": "Download donor receipt list",
 | 
			
		||||
    "sponsorings": "Sponsorings",
 | 
			
		||||
    "stats-are-being-loaded": "stats are being loaded...",
 | 
			
		||||
    "status": "Status",
 | 
			
		||||
@@ -386,6 +388,7 @@
 | 
			
		||||
    "total-donation-amount": "total donation amount",
 | 
			
		||||
    "total-donations": "total donations",
 | 
			
		||||
    "total-scans": "total scans",
 | 
			
		||||
    "total_donation_amount_in_eur": "Total donation amount in €",
 | 
			
		||||
    "track": "Track",
 | 
			
		||||
    "track-added": "Track added",
 | 
			
		||||
    "track-data-is-being-loaded": "Track data is being loaded",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user