Compare commits

...

37 Commits

Author SHA1 Message Date
0708cabc75 🚀RELEASE v1.1.0
Some checks failed
continuous-integration/drone/push Build is failing
2023-04-19 16:05:21 +02:00
4fcb26cf93 feat(dashboard): Updated stats icons 2023-04-19 16:04:02 +02:00
269def20d1 feat(dashboard): Added average sponsoring
Some checks failed
continuous-integration/drone/push Build is failing
2023-04-19 15:59:45 +02:00
b8de9e0e42 feat(dashboard): Added average distance 2023-04-19 15:57:46 +02:00
7b2b598588 feat(dashboard): Added total donations 2023-04-19 15:56:21 +02:00
e0b61486b0 feat(dashboar): Added total donors to overview 2023-04-19 15:54:39 +02:00
3f86f7412f Lockfile 2023-04-19 15:53:33 +02:00
6454d960de Bumped client 2023-04-19 15:53:28 +02:00
37154c188b Merge branch 'dev' of git.odit.services:lfk/frontend into dev
Some checks failed
continuous-integration/drone/push Build is failing
2023-04-19 15:38:15 +02:00
8da7578a0a 🚀RELEASE v1.0.0 2023-04-19 15:37:56 +02:00
2a64094006 new license file version [CI SKIP] 2023-04-19 13:37:32 +00:00
e9ce9644ff Merge pull request 'feature/175-request_pagination' (#176) from feature/175-request_pagination into dev
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #176
2023-04-19 13:37:16 +00:00
52439aa5bc Allways set loaded to true
ref #175
2023-04-18 20:47:42 +02:00
ccf865687b Donation paginated loading
ref #175
2023-04-18 20:46:18 +02:00
cac34db1fd Paginated scan loading
ref #175
2023-04-18 20:43:04 +02:00
faf3893180 Paginated runner loading (1000 per page)
ref #175
2023-04-18 20:40:28 +02:00
c33dfcfddd Implemented Async loading of cards via pagination (500 cards per request)
ref #175
2023-04-18 20:38:01 +02:00
019e14ab1f Bumped lfk client
Some checks failed
continuous-integration/drone/push Build is failing
2023-04-18 20:18:46 +02:00
b5790196c6 Merge branch 'dev' of git.odit.services:lfk/frontend into dev
Some checks failed
continuous-integration/drone/push Build is failing
2023-04-17 17:56:42 +02:00
94a64ca690 🚀RELEASE v0.19.0 2023-04-17 17:56:34 +02:00
a6ce04c903 new license file version [CI SKIP] 2023-04-17 15:56:08 +00:00
165c154233 Merge pull request 'feature/173-scanstation_configcodes' (#174) from feature/173-scanstation_configcodes into dev
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #174
2023-04-17 15:55:53 +00:00
318547db46 Adjusted size on smaller devices
ref #173
2023-04-17 17:55:33 +02:00
e60c09e19c I18n
ref #173
2023-04-17 17:52:05 +02:00
4834d1484c Styling
ref #173
2023-04-17 17:51:46 +02:00
4b6342727e Implemented config code generation
ref #173
2023-04-17 17:47:57 +02:00
cb5fa52cd9 Barcode placeholder
ref #173
2023-04-17 17:32:42 +02:00
947d01cf7f Lockfile 2023-04-17 17:32:31 +02:00
3563394fb3 Added bwip-js for barcode generation
ref #173
2023-04-17 17:32:16 +02:00
269d7a7def 🚀RELEASE v0.18.4
Some checks failed
continuous-integration/drone/push Build is failing
2023-04-15 23:32:08 +02:00
e95f2333b0 Hide address2 in orgs by default 2023-04-15 23:30:46 +02:00
950217e0a3 🚀RELEASE v0.18.3
Some checks failed
continuous-integration/drone/push Build is failing
2023-04-15 23:27:36 +02:00
5e65fb3301 Dont show adress 2 in runner overview 2023-04-15 23:27:19 +02:00
2a294cde04 🚀RELEASE v0.18.2
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-15 19:58:14 +02:00
e95420d79c Push in releaseit 2023-04-15 19:57:59 +02:00
cffbd17dc7 Added timestamps to scanoverview 2023-04-15 19:56:55 +02:00
00de8c3d75 🚀RELEASE v0.18.1
Some checks failed
continuous-integration/drone/push Build is failing
2023-04-15 19:44:17 +02:00
15 changed files with 1621 additions and 1323 deletions

View File

@@ -2,10 +2,84 @@
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.1.0](https://git.odit.services/lfk/frontend/compare/1.0.0...1.1.0)
- feat(dashboar): Added total donors to overview [`e0b6148`](https://git.odit.services/lfk/frontend/commit/e0b61486b089aa1e611ef3569b1521fc331ec0e4)
- feat(dashboard): Updated stats icons [`4fcb26c`](https://git.odit.services/lfk/frontend/commit/4fcb26cf9371e27e5d7e474b3558ef354e9114c0)
- feat(dashboard): Added average sponsoring [`269def2`](https://git.odit.services/lfk/frontend/commit/269def20d114ededaba3153bbd50ec2ddd70e1c6)
- feat(dashboard): Added total donations [`7b2b598`](https://git.odit.services/lfk/frontend/commit/7b2b59858839b98370af6fb1e6028ba0a1639186)
- feat(dashboard): Added average distance [`b8de9e0`](https://git.odit.services/lfk/frontend/commit/b8de9e0e427b3a8b56e6354ad7168ae12c7cce85)
- Lockfile [`3f86f74`](https://git.odit.services/lfk/frontend/commit/3f86f7412ffc4bc27328ad1f7d3c3118546e7e29)
- Bumped client [`6454d96`](https://git.odit.services/lfk/frontend/commit/6454d960de3f9f5ea86679f157b3b7e7cffde74d)
- new license file version [CI SKIP] [`2a64094`](https://git.odit.services/lfk/frontend/commit/2a640940062765a470387103a72ed14a2411d97b)
### [1.0.0](https://git.odit.services/lfk/frontend/compare/0.19.0...1.0.0)
> 19 April 2023
- 🚀RELEASE v1.0.0 [`8da7578`](https://git.odit.services/lfk/frontend/commit/8da7578a0a46a3e97d8c870e29399f6e8821c9fa)
- Merge pull request 'feature/175-request_pagination' (#176) from feature/175-request_pagination into dev [`e9ce964`](https://git.odit.services/lfk/frontend/commit/e9ce9644ff03f981cec6e9ad56aa5fdf0ff71ef4)
- Donation paginated loading [`ccf8656`](https://git.odit.services/lfk/frontend/commit/ccf865687b34016931a702c0a9b98a0a18e2b03a)
- Paginated scan loading [`cac34db`](https://git.odit.services/lfk/frontend/commit/cac34db1fd3bf5dc7c7be64b3a76ca4c8c77938d)
- Implemented Async loading of cards via pagination (500 cards per request) [`c33dfcf`](https://git.odit.services/lfk/frontend/commit/c33dfcfddddfed0902f3fa9b1d8a1d3e1560262f)
- Paginated runner loading (1000 per page) [`faf3893`](https://git.odit.services/lfk/frontend/commit/faf3893180bb735bea6f1ea58c896686b89949fe)
- Allways set loaded to true [`52439aa`](https://git.odit.services/lfk/frontend/commit/52439aa5bc8cfb1d78d5dfce55b1a0df640ad8f5)
- Bumped lfk client [`019e14a`](https://git.odit.services/lfk/frontend/commit/019e14ab1f99906f13d36c7148d0f4b7894072f2)
- new license file version [CI SKIP] [`a6ce04c`](https://git.odit.services/lfk/frontend/commit/a6ce04c90386f16abf235cc7b2f95aeea5011c7d)
#### [0.19.0](https://git.odit.services/lfk/frontend/compare/0.18.4...0.19.0)
> 17 April 2023
- 🚀RELEASE v0.19.0 [`94a64ca`](https://git.odit.services/lfk/frontend/commit/94a64ca69078c7fe2935eeb5f955fab95a79cb85)
- Merge pull request 'feature/173-scanstation_configcodes' (#174) from feature/173-scanstation_configcodes into dev [`165c154`](https://git.odit.services/lfk/frontend/commit/165c1542338c58f2abf42fef2e7b84b40d1e2d9c)
- I18n [`e60c09e`](https://git.odit.services/lfk/frontend/commit/e60c09e19c9cc20338906e84f4db4e009d926360)
- Implemented config code generation [`4b63427`](https://git.odit.services/lfk/frontend/commit/4b6342727ee0ea38597750d8c99edc301f1ccc2d)
- Styling [`4834d14`](https://git.odit.services/lfk/frontend/commit/4834d1484c3fb6ecd4a1b56aa9fbb8125c641a62)
- Adjusted size on smaller devices [`318547d`](https://git.odit.services/lfk/frontend/commit/318547db46045e41de64d5688368e85cd6fb8035)
- Lockfile [`947d01c`](https://git.odit.services/lfk/frontend/commit/947d01cf7fc7fe2ee88c56e017b0d663f1f3b4f9)
- Barcode placeholder [`cb5fa52`](https://git.odit.services/lfk/frontend/commit/cb5fa52cd9a97490b50fb0c02c26615b49650c08)
- Added bwip-js for barcode generation [`3563394`](https://git.odit.services/lfk/frontend/commit/3563394fb33d661890327e2ae08c400830b37844)
#### [0.18.4](https://git.odit.services/lfk/frontend/compare/0.18.3...0.18.4)
> 15 April 2023
- 🚀RELEASE v0.18.4 [`269d7a7`](https://git.odit.services/lfk/frontend/commit/269d7a7defdde059ef2bb5103262cf734e9babe9)
- Hide address2 in orgs by default [`e95f233`](https://git.odit.services/lfk/frontend/commit/e95f2333b0b958ed00c0e097b43aac2e70ad0d38)
#### [0.18.3](https://git.odit.services/lfk/frontend/compare/0.18.2...0.18.3)
> 15 April 2023
- 🚀RELEASE v0.18.3 [`950217e`](https://git.odit.services/lfk/frontend/commit/950217e0a350f9999b879475edf41f2f11c48179)
- Dont show adress 2 in runner overview [`5e65fb3`](https://git.odit.services/lfk/frontend/commit/5e65fb33013c3dad38e7ad6740b017ae206f278f)
#### [0.18.2](https://git.odit.services/lfk/frontend/compare/0.18.1...0.18.2)
> 15 April 2023
- 🚀RELEASE v0.18.2 [`2a294cd`](https://git.odit.services/lfk/frontend/commit/2a294cde040044bbebfb9c8b34b6c91b27772741)
- Added timestamps to scanoverview [`cffbd17`](https://git.odit.services/lfk/frontend/commit/cffbd17dc77054048cc9b14891f960f9a3fd18cb)
- Push in releaseit [`e95420d`](https://git.odit.services/lfk/frontend/commit/e95420d79c3227c0ca0cf0c0b599970c2b7d690e)
#### [0.18.1](https://git.odit.services/lfk/frontend/compare/0.18.0...0.18.1)
> 15 April 2023
- 🚀RELEASE v0.18.1 [`00de8c3`](https://git.odit.services/lfk/frontend/commit/00de8c3d75e90cd4614f42111f5f45bedde64130)
- Missing scanstation translations [`30e3396`](https://git.odit.services/lfk/frontend/commit/30e33968978bf33cedb31bcbf63fac273e1664f5)
- fix: button onclick a11y [`9fe53b0`](https://git.odit.services/lfk/frontend/commit/9fe53b0b9c71e8a6b4aa3f317327ffe729df0834)
- fix(ConfirmStatsClientDeletion): ScanStationService -> StatsClientService [`5291e04`](https://git.odit.services/lfk/frontend/commit/5291e049a1d2e880fbe277095da91b70d4812c3f)
- fix(ConfirmScanStationDeletion): donorControllerRemove -> scanStationControllerRemove [`08fbb50`](https://git.odit.services/lfk/frontend/commit/08fbb504c958415ce75e1e426296f870f0f1358d)
#### [0.18.0](https://git.odit.services/lfk/frontend/compare/0.17.3...0.18.0) #### [0.18.0](https://git.odit.services/lfk/frontend/compare/0.17.3...0.18.0)
> 12 April 2023
- Moved filter function to typed version [`#171`](https://git.odit.services/lfk/frontend/issues/171) - Moved filter function to typed version [`#171`](https://git.odit.services/lfk/frontend/issues/171)
- ScansOverview: migrate to datatable [`#168`](https://git.odit.services/lfk/frontend/issues/168) - ScansOverview: migrate to datatable [`#168`](https://git.odit.services/lfk/frontend/issues/168)
- 🚀RELEASE v0.18.0 [`eb80406`](https://git.odit.services/lfk/frontend/commit/eb80406fdb8abf3f76bca742095e8f1f03480a56)
- wip: ScansOverview -> new datatable [`c87561f`](https://git.odit.services/lfk/frontend/commit/c87561f63b90ab951daf91d9b8b54ba96a94cc7f) - wip: ScansOverview -> new datatable [`c87561f`](https://git.odit.services/lfk/frontend/commit/c87561f63b90ab951daf91d9b8b54ba96a94cc7f)
- Basic card table replace [`5662c3b`](https://git.odit.services/lfk/frontend/commit/5662c3b6da67c00c94254bf39f8820e531fc93ef) - Basic card table replace [`5662c3b`](https://git.odit.services/lfk/frontend/commit/5662c3b6da67c00c94254bf39f8820e531fc93ef)
- RunnersOverview: table responsiveness [`bf1e715`](https://git.odit.services/lfk/frontend/commit/bf1e715261c0076fd8543dd1187c516209a73b16) - RunnersOverview: table responsiveness [`bf1e715`](https://git.odit.services/lfk/frontend/commit/bf1e715261c0076fd8543dd1187c516209a73b16)

View File

@@ -13,7 +13,7 @@
</head> </head>
<body> <body>
<span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-0.18.0-RELEASE_INFO</span> <span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-1.1.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>
<script type="module" src="/src/main.js"></script> <script type="module" src="/src/main.js"></script>

View File

@@ -1,6 +1,6 @@
{ {
"name": "@odit/lfk-frontend", "name": "@odit/lfk-frontend",
"version": "0.18.0", "version": "1.1.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"i18n-order": "node order.js", "i18n-order": "node order.js",
@@ -26,7 +26,7 @@
"commit": true, "commit": true,
"requireCleanWorkingDir": false, "requireCleanWorkingDir": false,
"commitMessage": "🚀RELEASE v${version}", "commitMessage": "🚀RELEASE v${version}",
"push": false, "push": true,
"tag": true, "tag": true,
"tagName": null, "tagName": null,
"tagAnnotation": "v${version}" "tagAnnotation": "v${version}"
@@ -39,9 +39,10 @@
} }
}, },
"dependencies": { "dependencies": {
"@odit/lfk-client-js": "0.14.3", "@odit/lfk-client-js": "1.1.0",
"@paralleldrive/cuid2": "^2.2.0", "@paralleldrive/cuid2": "^2.2.0",
"@tanstack/svelte-table": "^8.8.5", "@tanstack/svelte-table": "^8.8.5",
"bwip-js": "^3.4.0",
"check-password-strength": "2.0.7", "check-password-strength": "2.0.7",
"csvtojson": "2.0.10", "csvtojson": "2.0.10",
"gridjs": "3.4.0", "gridjs": "3.4.0",

16
pnpm-lock.yaml generated
View File

@@ -2,14 +2,17 @@ lockfileVersion: '6.0'
dependencies: dependencies:
'@odit/lfk-client-js': '@odit/lfk-client-js':
specifier: 0.14.3 specifier: 1.1.0
version: 0.14.3 version: 1.1.0
'@paralleldrive/cuid2': '@paralleldrive/cuid2':
specifier: ^2.2.0 specifier: ^2.2.0
version: 2.2.0 version: 2.2.0
'@tanstack/svelte-table': '@tanstack/svelte-table':
specifier: ^8.8.5 specifier: ^8.8.5
version: 8.8.5(svelte@3.58.0) version: 8.8.5(svelte@3.58.0)
bwip-js:
specifier: ^3.4.0
version: 3.4.0
check-password-strength: check-password-strength:
specifier: 2.0.7 specifier: 2.0.7
version: 2.0.7 version: 2.0.7
@@ -507,8 +510,8 @@ packages:
'@octokit/openapi-types': 16.0.0 '@octokit/openapi-types': 16.0.0
dev: true dev: true
/@odit/lfk-client-js@0.14.3: /@odit/lfk-client-js@1.1.0:
resolution: {integrity: sha512-oOZ9jjzqcbMA0Sfwxn4q9+8hHckMU2IhAn7v0OAS54zcnquYQANnY4RMEoNIyXd0oEe1z8QewBjyBvFEDg6BmA==} resolution: {integrity: sha512-yhjsi7YMzL9/fJ7o06yszzw15iZhao3VmX0G9oqZWFwYJd1M2td3Lvm76mXNzTVlbdG6W0W3+eEjcalBdo51Pg==}
dev: false dev: false
/@odit/license-exporter@0.0.12: /@odit/license-exporter@0.0.12:
@@ -847,6 +850,11 @@ packages:
run-applescript: 5.0.0 run-applescript: 5.0.0
dev: true dev: true
/bwip-js@3.4.0:
resolution: {integrity: sha512-Gx9LIBhmEFmNH4FJsS+Rs+bG5hUcs+OBemEEQ2ZTLz8tue0PA/lM692Gf2yuYJ2yUpLGtK9tAexs85tXBPG/ww==}
hasBin: true
dev: false
/bytes@3.1.2: /bytes@3.1.2:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}

File diff suppressed because one or more lines are too long

View File

@@ -32,7 +32,7 @@
export let original_data = {}; export let original_data = {};
export let current_cards = []; export let current_cards = [];
export const addCards = (cards) => { export const addCards = (cards) => {
console.log(cards) console.log(cards);
current_cards = current_cards.concat(...cards); current_cards = current_cards.concat(...cards);
options.update((options) => ({ options.update((options) => ({
...options, ...options,
@@ -155,15 +155,27 @@
}).showToast(); }).showToast();
} }
onMount(() => { onMount(async () => {
RunnerCardService.runnerCardControllerGetAll().then((val) => { let page = 0;
current_cards = val; while (page >= 0) {
const cards = await RunnerCardService.runnerCardControllerGetAll(
page,
500
);
if (cards.length == 0) {
page = -2;
}
current_cards = current_cards.concat(...cards);
options.update((options) => ({ options.update((options) => ({
...options, ...options,
data: current_cards, data: current_cards,
})); }));
dataLoaded = true; dataLoaded = true;
}); page++;
}
console.log("All cards loaded");
}); });
</script> </script>
@@ -229,7 +241,7 @@
...options, ...options,
data: current_cards, data: current_cards,
})); }));
$table.resetRowSelection() $table.resetRowSelection();
}} }}
> >
{$_("delete-cards")} {$_("delete-cards")}
@@ -249,7 +261,10 @@
</svg> </svg>
</button> </button>
{/if} {/if}
<GenerateRunnerCards cards_show={selected.length>0} bind:generate_cards={selectedCards} /> <GenerateRunnerCards
cards_show={selected.length > 0}
bind:generate_cards={selectedCards}
/>
</div> </div>
<div class="overflow-x-auto"> <div class="overflow-x-auto">
<table class="w-full"> <table class="w-full">

View File

@@ -35,7 +35,9 @@
<p class="text-sm">{$_("this-might-take-a-moment")}</p> <p class="text-sm">{$_("this-might-take-a-moment")}</p>
</div> </div>
{:then stats} {:then stats}
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5 2xl:grid-cols-6 gap-4"> <div
class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5 2xl:grid-cols-6 gap-4"
>
<StatCard <StatCard
title={$_("runners")} title={$_("runners")}
value={stats.total_runners} value={stats.total_runners}
@@ -59,18 +61,67 @@
href="/scans/" href="/scans/"
> >
<svg <svg
stroke="currentColor"
fill="currentColor" fill="currentColor"
stroke-width="2"
viewBox="0 0 24 24"
stroke-linecap="round"
stroke-linejoin="round"
size="24"
class="stroke-current text-grey-500"
height="24"
width="24" width="24"
height="24"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
><polyline points="22 12 18 12 15 21 9 3 6 12 2 12" /></svg viewBox="0 0 24 24"
><path fill="none" d="M0 0h24v24H0z" />
<path
fill="currentColor"
d="M2 4h2v16H2V4zm4 0h1v16H6V4zm2 0h2v16H8V4zm3 0h2v16h-2V4zm3 0h2v16h-2V4zm3 0h1v16h-1V4zm2 0h3v16h-3V4z"
/></svg
>
</StatCard>
<StatCard
title={$_("total-donors")}
value={stats.total_donors}
href="/donors/"
>
<svg
fill="currentColor"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
width="24"
height="24"
><path fill="none" d="M0 0h24v24H0z" />
<path
d="M9.33 11.5h2.17A4.5 4.5 0 0 1 16 16H8.999L9 17h8v-1a5.578 5.578 0 0 0-.886-3H19a5 5 0 0 1 4.516 2.851C21.151 18.972 17.322 21 13 21c-2.761 0-5.1-.59-7-1.625L6 10.071A6.967 6.967 0 0 1 9.33 11.5zM5 19a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1v-9a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v9zM18 5a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm-7-3a3 3 0 1 1 0 6 3 3 0 0 1 0-6z"
/></svg
>
</StatCard>
<StatCard
title={$_("total-donation-count")}
value={stats.total_donations}
href="/donations/"
>
<svg
fill="currentColor"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
width="24"
height="24"
><path fill="none" d="M0 0h24v24H0z" />
<path
d="M14 2a8 8 0 013.3 15.3A8 8 0 116.7 6.7 8 8 0 0114 2zm-3 7H9v1a2.5 2.5 0 00-.16 5h2.25a.5.5 0 010 1H7v2h2v1h2v-1a2.5 2.5 0 00.16-5H8.91a.5.5 0 010-1H13v-2h-2V9zm3-5a5.99 5.99 0 00-4.48 2.01 8 8 0 018.47 8.47A6 6 0 0014 4z"
/></svg
>
</StatCard>
<StatCard
title={$_("average-donation")}
value={`${(stats.average_donation / 100).toFixed(2)} €`}
href="/donations/"
>
<svg
fill="currentColor"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
width="24"
height="24"
><path fill="none" d="M0 0h24v24H0z" />
<path
d="M14 2a8 8 0 013.3 15.3A8 8 0 116.7 6.7 8 8 0 0114 2zm-3 7H9v1a2.5 2.5 0 00-.16 5h2.25a.5.5 0 010 1H7v2h2v1h2v-1a2.5 2.5 0 00.16-5H8.91a.5.5 0 010-1H13v-2h-2V9zm3-5a5.99 5.99 0 00-4.48 2.01 8 8 0 018.47 8.47A6 6 0 0014 4z"
/></svg
> >
</StatCard> </StatCard>
<StatCard <StatCard
@@ -105,6 +156,22 @@
/></svg /></svg
> >
</StatCard> </StatCard>
<StatCard
title={$_("average-distance")}
value={`${(stats.average_distance / 1000).toFixed(2)} km`}
href="#"
>
<svg
fill="currentColor"
xmlns="http://www.w3.org/2000/svg"
height="24"
width="24"
><path d="M0 0h24v24H0z" fill="none" />
<path
d="M21 6H3c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 10H3V8h2v4h2V8h2v4h2V8h2v4h2V8h2v4h2V8h2v8z"
/></svg
>
</StatCard>
<StatCard <StatCard
title={$_("count_teams")} title={$_("count_teams")}
value={stats.total_teams} value={stats.total_teams}

View File

@@ -5,18 +5,16 @@
import Toastify from "toastify-js"; import Toastify from "toastify-js";
import DonationsEmptyState from "./DonationsEmptyState.svelte"; import DonationsEmptyState from "./DonationsEmptyState.svelte";
import AddDonationPaymentModal from "./AddDonationPaymentModal.svelte"; import AddDonationPaymentModal from "./AddDonationPaymentModal.svelte";
import { onMount } from "svelte";
$: searchvalue = ""; $: searchvalue = "";
$: active_deletes = []; $: active_deletes = [];
$: dataLoaded = false;
export let current_donations = []; export let current_donations = [];
export let payment_modal_open = false; export let payment_modal_open = false;
export let editable = {}; export let editable = {};
export let original_data = {}; export let original_data = {};
export let paid_amount_input = 0; export let paid_amount_input = 0;
const donations_promise = DonationService.donationControllerGetAll().then(
(val) => {
current_donations = val;
}
);
function should_display_based_on_id(id) { function should_display_based_on_id(id) {
if (searchvalue.toString().slice(-1) === "*") { if (searchvalue.toString().slice(-1) === "*") {
return id.toString().startsWith(searchvalue.replace("*", "")); return id.toString().startsWith(searchvalue.replace("*", ""));
@@ -26,210 +24,250 @@
function open_payment_modal(donation) { function open_payment_modal(donation) {
editable = Object.assign({}, donation); editable = Object.assign({}, donation);
original_data = Object.assign({}, donation); original_data = Object.assign({}, donation);
paid_amount_input = (donation.paidAmount/100).toFixed(2); paid_amount_input = (donation.paidAmount / 100).toFixed(2);
payment_modal_open = true; payment_modal_open = true;
} }
onMount(async () => {
let page = 0;
while (page >= 0) {
const donations = await DonationService.donationControllerGetAll(
page,
500
);
if (donations.length == 0) {
page = -2;
}
current_donations = current_donations.concat(...donations);
dataLoaded = true;
page++;
}
console.log("All donations loaded");
});
</script> </script>
<AddDonationPaymentModal bind:current_donations bind:original_data bind:editable bind:paid_amount_input bind:payment_modal_open /> <AddDonationPaymentModal
{#if store.state.jwtinfo.userdetails.permissions.includes('DONATION:GET')} bind:current_donations
{#await donations_promise} bind:original_data
bind:editable
bind:paid_amount_input
bind:payment_modal_open
/>
{#if store.state.jwtinfo.userdetails.permissions.includes("DONATION:GET")}
{#if !dataLoaded}
<div <div
class="bg-teal-lightest border-t-4 border-teal rounded-b text-teal-darkest px-4 py-3 shadow-md my-2" class="bg-teal-lightest border-t-4 border-teal rounded-b text-teal-darkest px-4 py-3 shadow-md my-2"
role="alert"> role="alert"
>
<p class="font-bold">donations are being loaded</p> <p class="font-bold">donations are being loaded</p>
<p class="text-sm">{$_('this-might-take-a-moment')}</p> <p class="text-sm">{$_("this-might-take-a-moment")}</p>
</div> </div>
{:then} {:else if current_donations.length === 0}
{#if current_donations.length === 0} <DonationsEmptyState />
<DonationsEmptyState /> {:else}
{:else} <input
<input type="search"
type="search" bind:value={searchvalue}
bind:value={searchvalue} placeholder={$_("datatable.search")}
placeholder={$_('datatable.search')} aria-label={$_("datatable.search")}
aria-label={$_('datatable.search')} class="mb-4"
class="mb-4" /> />
<div <div
class="shadow border-b border-gray-200 sm:rounded-lg overflow-x-scroll"> class="shadow border-b border-gray-200 sm:rounded-lg overflow-x-scroll"
<table class="divide-y divide-gray-200 w-full"> >
<thead class="bg-gray-50"> <table class="divide-y divide-gray-200 w-full">
<tr> <thead class="bg-gray-50">
<th <tr>
scope="col" <th
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"> scope="col"
{$_('donor')} class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
</th> >
<th {$_("donor")}
scope="col" </th>
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"> <th
{$_('runner')} scope="col"
</th> class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
<th >
scope="col" {$_("runner")}
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"> </th>
{$_('amount-per-kilometer')} <th
</th> scope="col"
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
scope="col" >
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"> {$_("amount-per-kilometer")}
{$_('donation-amount')} </th>
</th> <th
<th scope="col"
scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"> >
{$_('paid-amount')} {$_("donation-amount")}
</th> </th>
<th <th
scope="col" scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"> class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
{$_('status')} >
</th> {$_("paid-amount")}
<th scope="col" class="relative px-6 py-3"> </th>
<span class="sr-only">{$_('action')}</span> <th
</th> scope="col"
</tr> class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider"
</thead> >
<tbody class="divide-y divide-gray-200"> {$_("status")}
{#each current_donations as donation} </th>
{#if donation.donor.firstname <th scope="col" class="relative px-6 py-3">
<span class="sr-only">{$_("action")}</span>
</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
{#each current_donations as donation}
{#if donation.donor.firstname
.toLowerCase()
.includes(searchvalue.toLowerCase()) || donation.donor.lastname
.toLowerCase() .toLowerCase()
.includes( .includes(searchvalue.toLowerCase()) || donation.runner?.firstname
searchvalue.toLowerCase() .toLowerCase()
) || donation.donor.lastname .includes(searchvalue.toLowerCase()) || donation.runner?.lastname
.toLowerCase() .toLowerCase()
.includes( .includes(searchvalue.toLowerCase()) || should_display_based_on_id(donation.id)}
searchvalue.toLowerCase() <tr data-rowid="donation_{donation.id}">
) || donation.runner?.firstname <td class="px-6 py-4 whitespace-nowrap">
.toLowerCase() <div class="flex items-center">
.includes( <a
searchvalue.toLowerCase() href="../donors/{donation.donor.id}"
) || donation.runner?.lastname class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800"
.toLowerCase() >{donation.donor.firstname}
.includes( {donation.donor.middlename || ""}
searchvalue.toLowerCase() {donation.donor.lastname}</a
) || should_display_based_on_id(donation.id)} >
<tr data-rowid="donation_{donation.id}"> </div>
<td class="px-6 py-4 whitespace-nowrap"> </td>
<div class="flex items-center"> <td class="px-6 py-4 whitespace-nowrap">
{#if donation.runner}
<div class="text-sm font-medium text-gray-900">
<a <a
href="../donors/{donation.donor.id}" href="../runners/{donation.runner.id}"
class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800">{donation.donor.firstname} class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800"
{donation.donor.middlename || ''} >{donation.runner.firstname}
{donation.donor.lastname}</a> {donation.runner.middlename || ""}
{donation.runner.lastname}</a
>
</div> </div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
{#if donation.runner}
<div class="text-sm font-medium text-gray-900">
<a
href="../runners/{donation.runner.id}"
class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800">{donation.runner.firstname}
{donation.runner.middlename || ''}
{donation.runner.lastname}</a>
</div>
{:else}
<div class="text-sm font-medium text-gray-900">
{$_('fixed-donation')}
</div>
{/if}
</td>
<td class="px-6 py-4 whitespace-nowrap">
{#if donation.amountPerDistance}
<div class="text-sm font-medium text-gray-900">
{(donation.amountPerDistance / 100)
.toFixed(2)
.toLocaleString('de-DE', { valute: 'EUR' })}
</div>
{:else}
<div class="text-sm font-medium text-gray-900">
{$_('fixed-donation')}
</div>
{/if}
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm font-medium text-gray-900">
{(donation.amount / 100)
.toFixed(2)
.toLocaleString('de-DE', { valute: 'EUR' })}
</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm font-medium text-gray-900">
{(donation.paidAmount / 100)
.toFixed(2)
.toLocaleString('de-DE', { valute: 'EUR' })}
</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
{#if donation.status =="PAID"}
<span
class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">{$_('paid')}</span>
{:else}
<span
class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-red-100 text-red-800">{$_('open')}</span>
{/if}
</td>
{#if active_deletes[donation.id] === true}
<td
class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
<button
on:click={() => {
active_deletes[donation.id] = false;
}}
tabindex="0"
class="ml-4 text-indigo-600 hover:text-indigo-900 cursor-pointer">{$_('cancel-delete')}</button>
<button
on:click={() => {
DonationService.donationControllerRemove(donation.id, false).then(
(resp) => {
current_donations = current_donations.filter(
(obj) => obj.id !== donation.id
);
Toastify({
text: $_('donation-deleted'),
duration: 500,
backgroundColor:
'linear-gradient(to right, #00b09b, #96c93d)',
}).showToast();
}
);
}}
tabindex="0"
class="ml-4 text-red-600 hover:text-red-900 cursor-pointer">{$_('confirm-delete')}</button>
</td>
{:else} {:else}
<td <div class="text-sm font-medium text-gray-900">
class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium"> {$_("fixed-donation")}
<button </div>
on:click={() => {open_payment_modal(donation);}}
class="text-[#025a21] hover:text-green-900 mr-4">{$_('enter-payment')}</button>
<a
href="./{donation.id}"
class="text-indigo-600 hover:text-indigo-900">{$_('details')}</a>
{#if store.state.jwtinfo.userdetails.permissions.includes('DONATION:DELETE')}
<button
on:click={() => {
active_deletes[donation.id] = true;
}}
tabindex="0"
class="ml-4 text-red-600 hover:text-red-900 cursor-pointer">{$_('delete')}</button>
{/if}
</td>
{/if} {/if}
</tr> </td>
{/if} <td class="px-6 py-4 whitespace-nowrap">
{/each} {#if donation.amountPerDistance}
</tbody> <div class="text-sm font-medium text-gray-900">
</table> {(donation.amountPerDistance / 100)
</div> .toFixed(2)
{/if} .toLocaleString("de-DE", { valute: "EUR" })}
{:catch error} </div>
<div class="text-white px-6 py-4 border-0 rounded relative mb-4 bg-red-500"> {:else}
<span class="inline-block align-middle mr-8"> <div class="text-sm font-medium text-gray-900">
<b class="capitalize">{$_('general_promise_error')}</b> {$_("fixed-donation")}
{error} </div>
</span> {/if}
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm font-medium text-gray-900">
{(donation.amount / 100)
.toFixed(2)
.toLocaleString("de-DE", { valute: "EUR" })}
</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm font-medium text-gray-900">
{(donation.paidAmount / 100)
.toFixed(2)
.toLocaleString("de-DE", { valute: "EUR" })}
</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
{#if donation.status == "PAID"}
<span
class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800"
>{$_("paid")}</span
>
{:else}
<span
class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-red-100 text-red-800"
>{$_("open")}</span
>
{/if}
</td>
{#if active_deletes[donation.id] === true}
<td
class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium"
>
<button
on:click={() => {
active_deletes[donation.id] = false;
}}
tabindex="0"
class="ml-4 text-indigo-600 hover:text-indigo-900 cursor-pointer"
>{$_("cancel-delete")}</button
>
<button
on:click={() => {
DonationService.donationControllerRemove(
donation.id,
false
).then((resp) => {
current_donations = current_donations.filter(
(obj) => obj.id !== donation.id
);
Toastify({
text: $_("donation-deleted"),
duration: 500,
backgroundColor:
"linear-gradient(to right, #00b09b, #96c93d)",
}).showToast();
});
}}
tabindex="0"
class="ml-4 text-red-600 hover:text-red-900 cursor-pointer"
>{$_("confirm-delete")}</button
>
</td>
{:else}
<td
class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium"
>
<button
on:click={() => {
open_payment_modal(donation);
}}
class="text-[#025a21] hover:text-green-900 mr-4"
>{$_("enter-payment")}</button
>
<a
href="./{donation.id}"
class="text-indigo-600 hover:text-indigo-900"
>{$_("details")}</a
>
{#if store.state.jwtinfo.userdetails.permissions.includes("DONATION:DELETE")}
<button
on:click={() => {
active_deletes[donation.id] = true;
}}
tabindex="0"
class="ml-4 text-red-600 hover:text-red-900 cursor-pointer"
>{$_("delete")}</button
>
{/if}
</td>
{/if}
</tr>
{/if}
{/each}
</tbody>
</table>
</div> </div>
{/await} {/if}
{/if} {/if}

View File

@@ -119,7 +119,7 @@
{/if} {/if}
{#if donor.address.address1 !== null} {#if donor.address.address1 !== null}
{donor.address.address1}<br /> {donor.address.address1}<br />
{donor.address.address2 || ''}<br /> <!-- {donor.address.address2 || ''}<br /> -->
{donor.address.postalcode} {donor.address.postalcode}
{donor.address.city} {donor.address.city}
{donor.address.country} {donor.address.country}

View File

@@ -132,7 +132,7 @@
<div class="text-sm font-medium text-gray-900"> <div class="text-sm font-medium text-gray-900">
{#if o.address.address1 !== null} {#if o.address.address1 !== null}
{o.address.address1}<br /> {o.address.address1}<br />
{o.address.address2 || ''}<br /> <!-- {o.address.address2 || ''}<br /> -->
{o.address.postalcode} {o.address.postalcode}
{o.address.city} {o.address.city}
{o.address.country} {o.address.country}

View File

@@ -50,7 +50,6 @@
})); }));
}; };
//Section table //Section table
const columns = [ const columns = [
{ {
@@ -157,16 +156,7 @@
}).showToast(); }).showToast();
} }
onMount(() => { onMount(async () => {
RunnerService.runnerControllerGetAll().then((val) => {
current_runners = val;
dataLoaded = true;
options.update((options) => ({
...options,
data: current_runners,
}));
});
RunnerTeamService.runnerTeamControllerGetAll().then((val) => { RunnerTeamService.runnerTeamControllerGetAll().then((val) => {
teams = val; teams = val;
}); });
@@ -175,6 +165,24 @@
orgs = val; orgs = val;
} }
); );
let page = 0;
while (page >= 0) {
const runners = await RunnerService.runnerControllerGetAll(page, 1000);
if (runners.length == 0) {
page = -2;
}
current_runners = current_runners.concat(...runners);
options.update((options) => ({
...options,
data: current_runners,
}));
dataLoaded = true;
page++;
}
console.log("All runners loaded");
}); });
</script> </script>

View File

@@ -30,6 +30,7 @@
$table?.getSelectedRowModel().rows.map((row) => row.index) || []; $table?.getSelectedRowModel().rows.map((row) => row.index) || [];
$: active_delete = undefined; $: active_delete = undefined;
$: dataLoaded = false;
export let current_scans = []; export let current_scans = [];
export const addScans = (scans) => { export const addScans = (scans) => {
current_scans = current_scans.concat(...scans); current_scans = current_scans.concat(...scans);
@@ -39,15 +40,6 @@
})); }));
}; };
const scans_promise = ScanService.scanControllerGetAll().then((val) => {
current_scans = val;
// handler.setRows(val);
current_scans = val;
options.update((options) => ({
...options,
data: current_scans,
}));
});
let allTracks = []; let allTracks = [];
TrackService.trackControllerGetAll().then((val) => { TrackService.trackControllerGetAll().then((val) => {
allTracks = val; allTracks = val;
@@ -95,6 +87,14 @@
}, },
enableColumnFilter: false, enableColumnFilter: false,
}, },
{
accessorKey: "timestamp",
header: () => $_("timestamp"),
cell: (info) => {
return new Date(parseInt(info.getValue()) * 1000).toLocaleString();
},
enableColumnFilter: false,
},
{ {
accessorKey: "distance", accessorKey: "distance",
header: () => $_("distance"), header: () => $_("distance"),
@@ -175,6 +175,26 @@
backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)",
}).showToast(); }).showToast();
} }
onMount(async () => {
let page = 0;
while (page >= 0) {
const scans = await ScanService.scanControllerGetAll(page, 500);
if (scans.length == 0) {
page = -2;
}
current_scans = current_scans.concat(...scans);
options.update((options) => ({
...options,
data: current_scans,
}));
dataLoaded = true;
page++;
}
console.log("All scans loaded");
});
</script> </script>
<DeleteScanModal <DeleteScanModal
@@ -185,7 +205,7 @@
}} }}
/> />
{#if store.state.jwtinfo.userdetails.permissions.includes("SCAN:GET")} {#if store.state.jwtinfo.userdetails.permissions.includes("SCAN:GET")}
{#await scans_promise} {#if !dataLoaded}
<div <div
class="bg-teal-lightest border-t-4 border-teal rounded-b text-teal-darkest px-4 py-3 shadow-md my-2" class="bg-teal-lightest border-t-4 border-teal rounded-b text-teal-darkest px-4 py-3 shadow-md my-2"
role="alert" role="alert"
@@ -193,105 +213,96 @@
<p class="font-bold">{$_("scans-are-being-loaded")}</p> <p class="font-bold">{$_("scans-are-being-loaded")}</p>
<p class="text-sm">{$_("this-might-take-a-moment")}</p> <p class="text-sm">{$_("this-might-take-a-moment")}</p>
</div> </div>
{:then} {:else if current_scans.length === 0}
{#if current_scans.length === 0} <ScansEmptyState />
<ScansEmptyState /> {:else}
{:else} {#if selected.length > 0}
{#if selected.length > 0} <button
<button type="button"
type="button" class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm inline-flex"
class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm inline-flex" id="options-menu"
id="options-menu" on:click={async () => {
on:click={async () => { const prom = [];
const prom = []; for (const scan of selectedScans) {
for (const scan of selectedScans) { prom.push(ScanService.scanControllerRemove(scan.id, true));
prom.push(ScanService.scanControllerRemove(scan.id, true)); }
} await Promise.all(prom);
await Promise.all(prom); for (const scan of selectedScans) {
for (const scan of selectedScans) { current_scans = current_scans.filter((r) => r.id !== scan.id);
current_scans = current_scans.filter((r) => r.id !== scan.id); }
} options.update((options) => ({
options.update((options) => ({ ...options,
...options, data: current_scans,
data: current_scans, }));
})); $table.resetRowSelection();
$table.resetRowSelection(); Toastify({
Toastify({ text: $_("scan-deleted"),
text: $_("scan-deleted"), duration: 3500,
duration: 3500, backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)",
backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", }).showToast();
}).showToast(); }}
}} >
{$_("delete-scans")}
<svg
xmlns="http://www.w3.org/2000/svg"
fill="none"
viewBox="0 0 24 24"
stroke-width="1.5"
stroke="currentColor"
class="w-5 h-5"
> >
{$_("delete-scans")} <path
<svg stroke-linecap="round"
xmlns="http://www.w3.org/2000/svg" stroke-linejoin="round"
fill="none" d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0"
viewBox="0 0 24 24" />
stroke-width="1.5" </svg>
stroke="currentColor" </button>
class="w-5 h-5" {/if}
> <div class="overflow-x-auto">
<path <table class="w-full">
stroke-linecap="round" <thead>
stroke-linejoin="round" {#each $table.getHeaderGroups() as headerGroup}
d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0" <tr class="select-none">
/> <th class="inset-y-0 left-0 px-4 py-2 text-left w-px">
</svg> <InputElement
</button> type="checkbox"
{/if} checked={$table.getIsAllRowsSelected()}
<div class="overflow-x-auto"> indeterminate={$table.getIsSomeRowsSelected()}
<table class="w-full"> on:change={() => $table.toggleAllRowsSelected()}
<thead> />
{#each $table.getHeaderGroups() as headerGroup} </th>
<tr class="select-none"> {#each headerGroup.headers as header}
<th class="inset-y-0 left-0 px-4 py-2 text-left w-px"> <TableHeader {header} />
<InputElement {/each}
type="checkbox" </tr>
checked={$table.getIsAllRowsSelected()} {/each}
indeterminate={$table.getIsSomeRowsSelected()} </thead>
on:change={() => $table.toggleAllRowsSelected()} <tbody>
/> {#each $table.getRowModel().rows as row}
</th> <tr>
{#each headerGroup.headers as header} <td class="inset-y-0 left-0 px-4 py-2 text-center w-px">
<TableHeader {header} /> <InputElement
{/each} type="checkbox"
</tr> checked={row.getIsSelected()}
{/each} on:change={() => row.toggleSelected()}
</thead> />
<tbody> </td>
{#each $table.getRowModel().rows as row} {#each row.getVisibleCells() as cell}
<tr> <td>
<td class="inset-y-0 left-0 px-4 py-2 text-center w-px"> <svelte:component
<InputElement this={flexRender(
type="checkbox" cell.column.columnDef.cell,
checked={row.getIsSelected()} cell.getContext()
on:change={() => row.toggleSelected()} )}
/> />
</td> </td>
{#each row.getVisibleCells() as cell} {/each}
<td> </tr>
<svelte:component {/each}
this={flexRender( </tbody>
cell.column.columnDef.cell, </table>
cell.getContext()
)}
/>
</td>
{/each}
</tr>
{/each}
</tbody>
</table>
</div>
<TableBottom {table} {selected} />
{/if}
{:catch error}
<div class="text-white px-6 py-4 border-0 rounded relative mb-4 bg-red-500">
<span class="inline-block align-middle mr-8">
<b class="capitalize">{$_("general_promise_error")}</b>
{error}
</span>
</div> </div>
{/await} <TableBottom {table} {selected} />
{/if}
{/if} {/if}

View File

@@ -1,14 +1,18 @@
<script> <script>
import { _ } from "svelte-i18n"; import { _ } from "svelte-i18n";
import Toastify from "toastify-js"; import Toastify from "toastify-js";
import { tick, createEventDispatcher } from "svelte"; import { tick, createEventDispatcher } from "svelte";
import bwipjs from "bwip-js";
export let copy_modal_open; export let copy_modal_open;
export let new_station; export let new_station;
const dispatch = createEventDispatcher(); const dispatch = createEventDispatcher();
let valueCopy = null; let valueCopy = null;
let areaDom; let areaDom;
let copied = false; let copied = false;
$: is_qrcode = false;
$: barcode = textToBase64Barcode(new_station.key, is_qrcode);
function close() { function close() {
copy_modal_open = false; copy_modal_open = false;
} }
@@ -36,10 +40,30 @@
"linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)", "linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
}).showToast(); }).showToast();
} }
// we can notifi by event or storage about copy status // we can notifi by event or storage about copy status
valueCopy = null; valueCopy = null;
} }
function textToBase64Barcode(text, is_qrcode) {
const canvas = document.createElement("canvas");
let bcid = "code128";
if (is_qrcode) {
bcid = "qrcode";
}
let codeconfig = {
bcid,
text: `${text}`,
scale: 4,
includetext: true,
textxalign: "center",
backgroundcolor: "ffffff",
};
if (bcid == "code128") {
codeconfig.height = 10;
}
bwipjs.toCanvas(canvas, codeconfig);
return canvas.toDataURL("image/png");
}
</script> </script>
{#if copy_modal_open} {#if copy_modal_open}
@@ -131,6 +155,44 @@
</div> </div>
</div> </div>
</div> </div>
<div class="mx-auto text-center items-center">
<h2 class="text-lg leading-6 font-medium text-gray-900">
{$_("config-codes")}
</h2>
<span class="flex items-center text-center">
<p class="text-md text-gray-900 mr-3">Format:</p>
<label for="codeswitch" class="text-md text-gray-900 mr-3"
>Code128</label
>
<input
id="codeswitch"
type="checkbox"
bind:checked={is_qrcode}
class="relative shrink-0 w-[3.25rem] h-7 bg-gray-100 checked:bg-none checked:bg-blue-600 border-2 border-transparent rounded-full cursor-pointer transition-colors ease-in-out duration-200 border border-transparent ring-1 ring-transparent focus:border-blue-600 focus:ring-blue-600 ring-offset-white focus:outline-none appearance-none before:inline-block before:w-6 before:h-6 before:bg-white checked:before:bg-blue-200 before:translate-x-0 checked:before:translate-x-full before:shadow before:rounded-full before:transform before:ring-0 before:transition before:ease-in-out before:duration-200 dark:before:bg-gray-400 dark:checked:before:bg-blue-200"
/>
<label for="codeswitch" class="text-md text-gray-900 ml-3"
>QR-Code</label
>
</span>
<h3 class="leading-6 font-medium text-gray-900">
{$_("api-endpoint")}
</h3>
<img
class:w-[50%]={is_qrcode}
class:w-full={!is_qrcode}
class="md:w-auto mb-2 mx-auto"
alt="Registrierungscode"
src={textToBase64Barcode(config.baseurl, is_qrcode)}
/>
<h3 class="leading-6 font-medium text-gray-900">{$_("token")}</h3>
<img
class:w-[50%]={is_qrcode}
class:w-full={!is_qrcode}
class="md:w-auto mb-2 mx-auto"
alt="Registrierungscode"
src={barcode}
/>
</div>
</div> </div>
<div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse"> <div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse">
<button <button

View File

@@ -1,490 +1,497 @@
{ {
"404message": "Die gesuchte Seite wurde leider nicht gefunden.", "404message": "Die gesuchte Seite wurde leider nicht gefunden.",
"404title": "Fehler 404", "404title": "Fehler 404",
"about": "Über", "about": "Über",
"action": "Aktionen", "action": "Aktionen",
"active": "Aktiv", "active": "Aktiv",
"add-card": "Karte erstellen", "add-card": "Karte erstellen",
"add-donation": "Sponsoring erstellen", "add-donation": "Sponsoring erstellen",
"add-donor": "Sponsor:in erstellen", "add-donor": "Sponsor:in erstellen",
"add-or-update-a-payment": "Zahlung hinzufügen oder bearbeiten", "add-or-update-a-payment": "Zahlung hinzufügen oder bearbeiten",
"add-scan": "Scan erstellen", "add-scan": "Scan erstellen",
"add-the-first-scanstation": "Erstelle deine erste Scannerstation.", "add-the-first-scanstation": "Erstelle deine erste Scannerstation.",
"add-the-first-statsclient": "Erstelle deinen ersten Statsclient.", "add-the-first-statsclient": "Erstelle deinen ersten Statsclient.",
"add-user-group": "Neue Gruppe erstellen", "add-user-group": "Neue Gruppe erstellen",
"add-your-first-card": "Erstelle deine erste Läuferkarte", "add-your-first-card": "Erstelle deine erste Läuferkarte",
"add-your-first-contact": "Erstelle den ersten Kontakt", "add-your-first-contact": "Erstelle den ersten Kontakt",
"add-your-first-donor": "Erstelle die erste Sponsor:in", "add-your-first-donor": "Erstelle die erste Sponsor:in",
"add-your-first-group": "Erstelle die erste Gruppe", "add-your-first-group": "Erstelle die erste Gruppe",
"add-your-first-organization": "Erstelle die erste Organisation", "add-your-first-organization": "Erstelle die erste Organisation",
"add-your-first-runner": "Erstelle die erste Läufer:in", "add-your-first-runner": "Erstelle die erste Läufer:in",
"add-your-first-team": "Erstelle das erste Team", "add-your-first-team": "Erstelle das erste Team",
"add-your-first-track": "Erstelle den ersten Track (Laufstrecke).", "add-your-first-track": "Erstelle den ersten Track (Laufstrecke).",
"add-your-first-user": "Erstelle die erste Benutzer:in", "add-your-first-user": "Erstelle die erste Benutzer:in",
"add-your-fist-donation": "Erstelle dein erstes Sponsoring", "add-your-fist-donation": "Erstelle dein erstes Sponsoring",
"add-your-fist-scan": "Füge deinen ersten Scan hinzu", "add-your-fist-scan": "Füge deinen ersten Scan hinzu",
"adding-card": "Karte wird erstellt", "adding-card": "Karte wird erstellt",
"adding-donation": "Sponsoring wird erstellt...", "adding-donation": "Sponsoring wird erstellt...",
"adding-scan": "Scan wird hinzugefügt", "adding-scan": "Scan wird hinzugefügt",
"address": "Adresse", "address": "Adresse",
"address-is-required": "Du musst eine Adresse angeben", "address-is-required": "Du musst eine Adresse angeben",
"after-deletion-we-cant-restore-your-old-profile": "Nach der Löschung können auch die Admins dein Profil nicht wiederherstellen!", "after-deletion-we-cant-restore-your-old-profile": "Nach der Löschung können auch die Admins dein Profil nicht wiederherstellen!",
"after-the-update-youll-get-logged-out-please-login-with-your-new-password-after-that": "Nach der Änderung wirst du abgemeldet - bitte melde dich dann mit deinem neuen Passwort an.", "after-the-update-youll-get-logged-out-please-login-with-your-new-password-after-that": "Nach der Änderung wirst du abgemeldet - bitte melde dich dann mit deinem neuen Passwort an.",
"all": "Alle", "all": "Alle",
"all-associated-donations-will-get-deleted-as-well": "Alle Sponsorings dieser Sponsor:in werden ebenfalls gelöscht", "all-associated-donations-will-get-deleted-as-well": "Alle Sponsorings dieser Sponsor:in werden ebenfalls gelöscht",
"all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!", "all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!",
"all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!", "all-associated-scans-will-get-deleted-as-well": "Alle Scans dieser Station werden ebenfalls gelöscht",
"already-paid": "Bereits bezahlt", "all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!",
"amount": "Anzahl", "already-paid": "Bereits bezahlt",
"amount-per-kilometer": "Betrag pro Kilometer", "amount": "Anzahl",
"apartment-suite-etc": "Apartment, Wohnung, etc.", "amount-per-kilometer": "Betrag pro Kilometer",
"application_name": "Lauf für Kaya! - Admin", "apartment-suite-etc": "Apartment, Wohnung, etc.",
"applying-changes": "Änderungen anwenden", "api-endpoint": "API-Endpunkt",
"attention": "Achtung!", "application_name": "Lauf für Kaya! - Admin",
"author": "Autor:in", "applying-changes": "Änderungen anwenden",
"bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.", "attention": "Achtung!",
"by": "von", "author": "Autor:in",
"cancel": "Abbrechen", "average-distance": "Durchschnittliche Strecke/Läufer:in",
"cancel-delete": "Löschen abbrechen", "average-donation": "Durchschnittliches Sponsoring",
"cancel-keep-donor": "Abbrechen, Sponsor:in behalten", "bitte-bestaetige-diese-laeufer-fuer-den-import": "Bitte die Läufer:innen für den Import bestätigen.",
"cancel-keep-my-profile": "Abbrechen, mein Profil behalten", "by": "von",
"cancel-keep-organization": "Abbrechen und Organisation bearbeiten", "cancel": "Abbrechen",
"cancel-keep-statsclient": "Abbrechen und Statsclient behalten", "cancel-delete": "Löschen abbrechen",
"cancel-keep-team": "Abbrechen, Team behalten", "cancel-keep-donor": "Abbrechen, Sponsor:in behalten",
"cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.", "cancel-keep-my-profile": "Abbrechen, mein Profil behalten",
"card": "Läuferkarte", "cancel-keep-organization": "Abbrechen und Organisation bearbeiten",
"card-added": "Karte wurde hinzugefügt", "cancel-keep-station": "Abbrechen und Station behalten",
"card-deleted": "Karte gelöscht", "cancel-keep-statsclient": "Abbrechen und Statsclient behalten",
"card-updated": "Karte aktualisiert", "cancel-keep-team": "Abbrechen, Team behalten",
"cards": "Läuferkarten", "cannot-reset-your-password-directly": "Schade. \nWir können das Passwort leider nicht direkt zurücksetzen.\nBitte sende uns eine Mail in der du deine Identität bestätigst.",
"cards-deleted": "Karten gelöscht", "card": "Läuferkarte",
"certificates": "Urkunden", "card-added": "Karte wurde hinzugefügt",
"change-your-password-here": "Hier kannst du dein Passwort ändern", "card-deleted": "Karte gelöscht",
"changing-your-password": "Passwort wird geändert", "card-updated": "Karte aktualisiert",
"city": "Stadt", "cards": "Läuferkarten",
"click-to-copy-the-link-into-your-clipboard": "Klicke auf den Link, um ihn in deine Zwischenablage zu kopieren", "cards-deleted": "Karten gelöscht",
"click-to-copy-token-to-clipboard": "Klicke auf den Token, um ihn in deine Zwischenablage zu kopieren", "certificates": "Urkunden",
"close": "Schließen", "change-your-password-here": "Hier kannst du dein Passwort ändern",
"code": "Code", "changing-your-password": "Passwort wird geändert",
"configure-the-tracks-and-minimum-lap-times": "Bearbeite die Tracks und ihre minimale Rundenzeit", "city": "Stadt",
"confirm": "Bestätigen", "click-to-copy-the-link-into-your-clipboard": "Klicke auf den Link, um ihn in deine Zwischenablage zu kopieren",
"confirm-delete": "Löschung Bestätigen", "click-to-copy-token-to-clipboard": "Klicke auf den Token, um ihn in deine Zwischenablage zu kopieren",
"confirm-delete-donor-with-all-donations": "Bestätigen, Sponsor:in mit allen Sponsorings löschen", "close": "Schließen",
"confirm-delete-my-user-profile": "Bestätigung, mein Benutzerprofil löschen", "code": "Code",
"confirm-delete-organization-and-associated-teams-runners": "Bestätugung, lösche die Organisation und alle zugehörigen Teams und Läufer:innen.", "config-codes": "Konfigurations-Codes",
"confirm-delete-statsclient": "Bestätigung, Statsclient löschen", "configure-the-tracks-and-minimum-lap-times": "Bearbeite die Tracks und ihre minimale Rundenzeit",
"confirm-delete-team-and-associated-runners": "Bestätigung, lösche das Team mitsamt seinen Läufer:innen.", "confirm": "Bestätigen",
"confirm-deletion": "Löschung Bestätigen", "confirm-delete": "Löschung Bestätigen",
"confirm-the-new-password": "Neues Passwort bestätigen", "confirm-delete-donor-with-all-donations": "Bestätigen, Sponsor:in mit allen Sponsorings löschen",
"contact": "Kontakt", "confirm-delete-my-user-profile": "Bestätigung, mein Benutzerprofil löschen",
"contact-added": "Kontakt wurde hinzugefügt", "confirm-delete-organization-and-associated-teams-runners": "Bestätugung, lösche die Organisation und alle zugehörigen Teams und Läufer:innen.",
"contact-deleted": "Kontakt gelöscht", "confirm-delete-station-with-all-scans": "Löschen der Scannerstation mit allen Scans bestätigen",
"contact-information": "Kontaktinformation", "confirm-delete-statsclient": "Bestätigung, Statsclient löschen",
"contact-is-being-added": "Kontakt wird erstellt...", "confirm-delete-team-and-associated-runners": "Bestätigung, lösche das Team mitsamt seinen Läufer:innen.",
"contact-is-being-updated": "Kontakt wird aktualisiert ...", "confirm-deletion": "Löschung Bestätigen",
"contact-is-not-a-member-in-any-group": "Kontakt gehört zu keiner Gruppe", "confirm-the-new-password": "Neues Passwort bestätigen",
"contacts": "Kontakte", "contact": "Kontakt",
"contacts-are-being-loaded": "Kontakte werden geladen ...", "contact-added": "Kontakt wurde hinzugefügt",
"copied-link-to-clipboard": "Link wurde in die Zwischenablage kopiert", "contact-deleted": "Kontakt gelöscht",
"copied-token-to-clipboard": "Token wurde in die Zwischenablage kopiert", "contact-information": "Kontaktinformation",
"count_organizations": "Organisationen (Anzahl)", "contact-is-being-added": "Kontakt wird erstellt...",
"count_teams": "Teams (Anzahl)", "contact-is-being-updated": "Kontakt wird aktualisiert ...",
"create": "Erstellen", "contact-is-not-a-member-in-any-group": "Kontakt gehört zu keiner Gruppe",
"create-a-new": "Erstelle eine neue", "contacts": "Kontakte",
"create-a-new-card": "Neue Läuferkarte erstellen", "contacts-are-being-loaded": "Kontakte werden geladen ...",
"create-a-new-contact": "Kontakt erstellen", "copied-link-to-clipboard": "Link wurde in die Zwischenablage kopiert",
"create-a-new-distance-donation": "Erstelle ein neues Sponsoring", "copied-token-to-clipboard": "Token wurde in die Zwischenablage kopiert",
"create-a-new-donor": "Neue Sponsor:in erstellen", "count_organizations": "Organisationen (Anzahl)",
"create-a-new-fixed-donation": "Erstelle eine neue Festbetragsspende", "count_teams": "Teams (Anzahl)",
"create-a-new-organization": "Neue Organisation anlegen", "create": "Erstellen",
"create-a-new-runner": "Neue Läufer:in erstellen", "create-a-new": "Erstelle eine neue",
"create-a-new-scan-fixed-only": "Neuen Scan erstellen (nur mit Festdistanz)", "create-a-new-card": "Neue Läuferkarte erstellen",
"create-a-new-scanstation": "Neue Station erstellen", "create-a-new-contact": "Kontakt erstellen",
"create-a-new-statsclient": "Neuen Statsclient erstellen", "create-a-new-distance-donation": "Erstelle ein neues Sponsoring",
"create-a-new-team": "Erstelle ein neues Team", "create-a-new-donor": "Neue Sponsor:in erstellen",
"create-a-new-track": "Neuen Track erstellen", "create-a-new-fixed-donation": "Erstelle eine neue Festbetragsspende",
"create-a-new-user": "Neue Benutzer:in anlegen", "create-a-new-organization": "Neue Organisation anlegen",
"create-a-new-user-group": "Erstelle eine neue Gruppe", "create-a-new-runner": "Neue Läufer:in erstellen",
"create-and-generate-pdf": "Erstellen und PDF herunterladen", "create-a-new-scan-fixed-only": "Neuen Scan erstellen (nur mit Festdistanz)",
"create-bulk-blanco-cards": "Blankokarten erstellen", "create-a-new-scanstation": "Neue Station erstellen",
"create-bulk-cards": "Blankokarten erstellen", "create-a-new-statsclient": "Neuen Statsclient erstellen",
"create-organization": "Organisation erstellen", "create-a-new-team": "Erstelle ein neues Team",
"create-team": "Team erstellen", "create-a-new-track": "Neuen Track erstellen",
"create-track": "Track erstellen", "create-a-new-user": "Neue Benutzer:in anlegen",
"create-user": "Benutzer anlegen", "create-a-new-user-group": "Erstelle eine neue Gruppe",
"create-without-pdf": "Ohne PDF erstellen", "create-and-generate-pdf": "Erstellen und PDF herunterladen",
"created-blanco-cards": "Blankokarten wurden erstellt", "create-bulk-blanco-cards": "Blankokarten erstellen",
"creating-blanco-cards": "Erstelle Blankokarten", "create-bulk-cards": "Blankokarten erstellen",
"credits": "Credits", "create-organization": "Organisation erstellen",
"csv_import__class": "Klasse", "create-team": "Team erstellen",
"csv_import__firstname": "Vorname", "create-track": "Track erstellen",
"csv_import__lastname": "Nachname", "create-user": "Benutzer anlegen",
"csv_import__middlename": "Mittelname", "create-without-pdf": "Ohne PDF erstellen",
"csv_import__team": "Team", "created-blanco-cards": "Blankokarten wurden erstellt",
"danger-zone": "Gefahrenzone", "creating-blanco-cards": "Erstelle Blankokarten",
"dashboard-greeting": "Hallo", "credits": "Credits",
"dashboard-title": "Dashboard", "csv_import__class": "Klasse",
"datatable": { "csv_import__firstname": "Vorname",
"search": "🔍 Suche ...", "csv_import__lastname": "Nachname",
"an_error_happened_while_fetching_the_data": "Beim Abrufen der Daten ist ein Fehler aufgetreten", "csv_import__middlename": "Mittelname",
"loading": "Wird geladen...", "csv_import__team": "Team",
"next": "Nächste", "danger-zone": "Gefahrenzone",
"of": "von", "dashboard-greeting": "Hallo",
"previous": "Vorherige", "dashboard-title": "Dashboard",
"to": "bis", "datatable": {
"showing": "Zeige", "search": "🔍 Suche ...",
"no_matching_records_found": "Keine passenden Einträge gefunden", "an_error_happened_while_fetching_the_data": "Beim Abrufen der Daten ist ein Fehler aufgetreten",
"page": "Seite", "loading": "Wird geladen...",
"records": "Einträge", "next": "Nächste",
"sort_column_ascending": "Spalte aufsteigend sortieren", "of": "von",
"sort_column_descending": "Spalte absteigend sortieren" "previous": "Vorherige",
}, "to": "bis",
"delete": "Löschen", "showing": "Zeige",
"delete-cards": "Karten löschen", "no_matching_records_found": "Keine passenden Einträge gefunden",
"delete-contact": "Kontakt löschen", "page": "Seite",
"delete-donation": "Sponsoring löschen", "records": "Einträge",
"delete-donor": "Sponsor:in löschen", "sort_column_ascending": "Spalte aufsteigend sortieren",
"delete-group": "Gruppe löschen", "sort_column_descending": "Spalte absteigend sortieren"
"delete-organization": "Organisation löschen", },
"delete-profile": "Profil löschen", "delete": "Löschen",
"delete-runner": "Läufer:in löschen", "delete-cards": "Karten löschen",
"delete-scan": "Scan löschen", "delete-contact": "Kontakt löschen",
"delete-scans": "Scans löschen", "delete-donation": "Sponsoring löschen",
"delete-station": "Station löschen", "delete-donor": "Sponsor:in löschen",
"delete-statsclient": "Statsclient löschen", "delete-group": "Gruppe löschen",
"delete-team": "Team Löschen", "delete-organization": "Organisation löschen",
"delete-user": "Benutzer:in löschen", "delete-profile": "Profil löschen",
"deleted-scan": "Scan wurde gelöscht", "delete-runner": "Läufer:in löschen",
"dependency_name": "Name", "delete-scan": "Scan löschen",
"description": "Beschreibung", "delete-scans": "Scans löschen",
"description-optional": "Beschreibung (optional)", "delete-station": "Station löschen",
"deselect-all": "Alle abwählen", "delete-statsclient": "Statsclient löschen",
"details": "Details", "delete-team": "Team Löschen",
"disabled": "deaktiviert", "delete-user": "Benutzer:in löschen",
"distance": "Distanz", "deleted-scan": "Scan wurde gelöscht",
"distance-donation": "Sponsoring", "dependency_name": "Name",
"distance-in-km": "Distanz (in KM)", "description": "Beschreibung",
"distance-track": "Distanz (+Track)", "description-optional": "Beschreibung (optional)",
"do-you-really-want-to-delete-your-profile": "Möchtest du dein Profil wirklich löschen?", "deselect-all": "Alle abwählen",
"do-you-want-to-delete-the-organization-delete_org-name": "Möchtest du die Organisation {orgname} löschen?", "details": "Details",
"do-you-want-to-delete-the-team-delete_team-name": "Möchtest du das Team {teamname} löschen?", "disabled": "deaktiviert",
"do-you-want-to-delete-this-donor-with-all-related-donations": "Möchtest du diese Sponsor:in mit all ihren Sponsorings löschen?", "distance": "Distanz",
"documentation": "Dokumentation", "distance-donation": "Sponsoring",
"donation-amount": "Sponsoringbetrag", "distance-in-km": "Distanz (in KM)",
"donation-amount-must-be-greater-that-0-00eur": "Der Sponsoringbetrag muss größer als 0.00€ sein.", "distance-track": "Distanz (+Track)",
"donation-deleted": "Sponsoring gelöscht", "do-you-really-want-to-delete-your-profile": "Möchtest du dein Profil wirklich löschen?",
"donation-updated": "Sponsoring wurde aktualisiert", "do-you-want-to-delete-the-organization-delete_org-name": "Möchtest du die Organisation {orgname} löschen?",
"donation_added": "Sponsoring hinzugefügt", "do-you-want-to-delete-the-team-delete_team-name": "Möchtest du das Team {teamname} löschen?",
"donations": "Sponsorings", "do-you-want-to-delete-this-donor-with-all-related-donations": "Möchtest du diese Sponsor:in mit all ihren Sponsorings löschen?",
"donor": "Sponsor:in", "documentation": "Dokumentation",
"donor-added": "Sponsor:in hinzugefügt", "donation-amount": "Sponsoringbetrag",
"donor-deleted": "Sponsor:in gelöscht", "donation-amount-must-be-greater-that-0-00eur": "Der Sponsoringbetrag muss größer als 0.00€ sein.",
"donor-has-no-associated-donations": "Zur Sponsor:in gibt es noch keine Sponsorings", "donation-deleted": "Sponsoring gelöscht",
"donor-is-being-added": "Sponsor:in wird hinzugefügt...", "donation-updated": "Sponsoring wurde aktualisiert",
"donor-is-being-updated": "Sponsor:in wird aktualisiert", "donation_added": "Sponsoring hinzugefügt",
"donors": "Sponsor:innen", "donations": "Sponsorings",
"donors-are-being-loaded": "Sponsor:innen werden geladen", "donor": "Sponsor:in",
"dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", "donor-added": "Sponsor:in hinzugefügt",
"dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", "donor-deleted": "Sponsor:in gelöscht",
"e-mail-adress": "E-Mail-Adresse", "donor-has-no-associated-donations": "Zur Sponsor:in gibt es noch keine Sponsorings",
"edit": "Bearbeiten", "donor-is-being-added": "Sponsor:in wird hinzugefügt...",
"edit-a-card": "Läuferkarte bearbeiten", "donor-is-being-updated": "Sponsor:in wird aktualisiert",
"edit-permissions": "Berechtigungen bearbeiten", "donors": "Sponsor:innen",
"email_address_or_username": "E-Mail-Adresse/ Benutzername", "donors-are-being-loaded": "Sponsor:innen werden geladen",
"enabled": "aktiviert", "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?",
"enabled_large": "Aktiviert", "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌",
"english": "Englisch", "e-mail-adress": "E-Mail-Adresse",
"enter-payment": "Zahlung eingeben", "edit": "Bearbeiten",
"error-during-import": "Fehler beim Importieren", "edit-a-card": "Läuferkarte bearbeiten",
"error-whyile-copying-to-clipboard": "Fehler beim Kopieren in die Zwischenablage", "edit-permissions": "Berechtigungen bearbeiten",
"error_on_login": "😢Fehler beim Login", "email_address_or_username": "E-Mail-Adresse/ Benutzername",
"erteilte": "Direkt erteilte", "enabled": "aktiviert",
"everything-concerning-your-profile": "Alles zu deinem Profil", "enabled_large": "Aktiviert",
"everything-is-more-fun-together": "Im Team macht's mehr Spaß 🏃‍♂️🏃‍♀️🏃‍♂️", "english": "Englisch",
"faq": "FAQ", "enter-payment": "Zahlung eingeben",
"filename_sponsoringquittungsliste": "SponsoringQuittungsListe", "error-during-import": "Fehler beim Importieren",
"filter-by-organization-team": "Filtern nach Organisation / Team", "error-whyile-copying-to-clipboard": "Fehler beim Kopieren in die Zwischenablage",
"first-name": "Vorname", "error_on_login": "😢Fehler beim Login",
"first-name-is-required": "Vorname muss angegeben werden", "erteilte": "Direkt erteilte",
"first-scan-of-the-day": "Erster Scan des Tages", "everything-concerning-your-profile": "Alles zu deinem Profil",
"fixed-donation": "Festbetragsspende", "everything-is-more-fun-together": "Im Team macht's mehr Spaß 🏃‍♂️🏃‍♀️🏃‍♂️",
"forgot_password": "Passwort vergessen?", "faq": "FAQ",
"geerbte": "geerbte", "filename_sponsoringquittungsliste": "SponsoringQuittungsListe",
"general-stats": "Allgemeine Statistiken", "filter-by-organization-team": "Filtern nach Organisation / Team",
"general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten", "first-name": "Vorname",
"generate-runner-certificate": "Urkunde generieren", "first-name-is-required": "Vorname muss angegeben werden",
"generate-runner-certificates": "Urkunden generieren", "first-scan-of-the-day": "Erster Scan des Tages",
"generate-runnercards": "Läuferkarten generieren", "fixed-donation": "Festbetragsspende",
"generate-sponsoring-contract": "Sponsoringvertrag generieren", "forgot_password": "Passwort vergessen?",
"generate-sponsoring-contracts": "Sponsoringverträge generieren", "geerbte": "geerbte",
"generating-pdf": "PDF wird generiert...", "general-stats": "Allgemeine Statistiken",
"generating-pdfs": "PDFs werden generiert...", "general_promise_error": "😢 Ein unbekannter Fehler ist aufgetreten",
"generic-ui-logic-error": "Etwas ist in der Benutzeroberfläche schiefgelaufen.", "generate-runner-certificate": "Urkunde generieren",
"german": "Deutsch", "generate-runner-certificates": "Urkunden generieren",
"go-to-login": "Zum Login", "generate-runnercards": "Läuferkarten generieren",
"goback": "Zur Startseite", "generate-sponsoring-contract": "Sponsoringvertrag generieren",
"granted": "Gewährt", "generate-sponsoring-contracts": "Sponsoringverträge generieren",
"group": "Gruppe", "generating-pdf": "PDF wird generiert...",
"group-added": "Gruppe hinzugefügt", "generating-pdfs": "PDFs werden generiert...",
"group-is-being-added": "Gruppe wird erstellt", "generic-ui-logic-error": "Etwas ist in der Benutzeroberfläche schiefgelaufen.",
"group-name-is-required": "Der Gruppenname muss angegeben werden.", "german": "Deutsch",
"group-updated": "Gruppe aktualisiert", "go-to-login": "Zum Login",
"groups": "Gruppen", "goback": "Zur Startseite",
"groups-are-being-loaded": "Gruppen werden geladen", "granted": "Gewährt",
"home": "Start", "group": "Gruppe",
"icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:", "group-added": "Gruppe hinzugefügt",
"if-you-want-to-create-multiple-blanco-cards-try-the-add-bulk-button": "Wenn du mehrere Blankokarten erstellen willst, nutze doch den \"Blankokarten erstellen\" Knopf.", "group-is-being-added": "Gruppe wird erstellt",
"import-finished": "Import abgeschlossen", "group-name-is-required": "Der Gruppenname muss angegeben werden.",
"import-runners": "Läufer:innen importieren", "group-updated": "Gruppe aktualisiert",
"import__target-organization": "Ziel Organisation", "groups": "Gruppen",
"imprint": "Impressum ", "groups-are-being-loaded": "Gruppen werden geladen",
"imprint-loading": "Impressum lädt...", "home": "Start",
"inactive": "Inaktiv", "icon-image-credits": "Wir möchten uns außerdem für die verwendeten Icons und Bilder bedanken bei:",
"installed-version": "Installierte Version", "if-you-want-to-create-multiple-blanco-cards-try-the-add-bulk-button": "Wenn du mehrere Blankokarten erstellen willst, nutze doch den \"Blankokarten erstellen\" Knopf.",
"internal-error": "Interner Fehler", "import-finished": "Import abgeschlossen",
"invalid": "Ungültig", "import-runners": "Läufer:innen importieren",
"invalid-mail-reset": "Das ist keine gültige E-Mail", "import__target-organization": "Ziel Organisation",
"just-enter-how-many-you-want-and-the-system-will-create-them": "Gebe einfach ein, wie viele Blankokarten das System erstellen soll.", "imprint": "Impressum ",
"key": "Schlüssel", "imprint-loading": "Impressum lädt...",
"laeufer-hinzufuegen": "Läufer:in hinzufügen", "inactive": "Inaktiv",
"laeufer-importieren": "Läufer:innen importieren", "installed-version": "Installierte Version",
"laptime": "Rundenzeit", "internal-error": "Interner Fehler",
"last-name": "Nachname", "invalid": "Ungültig",
"last-name-is-required": "Nachname muss angegeben werden", "invalid-mail-reset": "Das ist keine gültige E-Mail",
"lfk-is-os": "Das \"Lauf für Kaya!\" Frontend ist (wie alle anderen Projekte für den \"LfK!\" auch) ein OpenSource Projekt.", "just-enter-how-many-you-want-and-the-system-will-create-them": "Gebe einfach ein, wie viele Blankokarten das System erstellen soll.",
"license": "Lizenz", "key": "Schlüssel",
"licenses-are-being-loaded": "Lizenzen werden geladen...", "laeufer-hinzufuegen": "Läufer:in hinzufügen",
"loading-cards": "Läuferkarten werden geladen", "laeufer-importieren": "Läufer:innen importieren",
"loading-contact-details": "Kontaktdaten werden geladen ...", "laptime": "Rundenzeit",
"loading-donation-details": "Lade Sponsoringdetails", "last-name": "Nachname",
"loading-donor-details": "Lade Details", "last-name-is-required": "Nachname muss angegeben werden",
"loading-group-detail": "Lade Gruppendetails...", "lfk-is-os": "Das \"Lauf für Kaya!\" Frontend ist (wie alle anderen Projekte für den \"LfK!\" auch) ein OpenSource Projekt.",
"loading-profile-data": "Lade Profildaten", "license": "Lizenz",
"loading-runners": "Läufer:innen werden geladen...", "licenses-are-being-loaded": "Lizenzen werden geladen...",
"loading-station-details": "Lade Scanstation-Details ...", "loading-cards": "Läuferkarten werden geladen",
"log_in": "Anmelden", "loading-contact-details": "Kontaktdaten werden geladen ...",
"log_in_to_your_account": "Bitte melde dich an", "loading-donation-details": "Lade Sponsoringdetails",
"login_is_checked": "Login wird überprüft", "loading-donor-details": "Lade Details",
"logout": "Abmelden", "loading-group-detail": "Lade Gruppendetails...",
"mail-validation-in-progress": "E-Mail Verifizierung läuft... ", "loading-profile-data": "Lade Profildaten",
"manage-admin-users": "Nutzer verwalten", "loading-runners": "Läufer:innen werden geladen...",
"middle-name": "Mittelname", "loading-station-details": "Lade Scanstation-Details ...",
"minimum-lap-time-in-s": "Minimale Rundenzeit (in Sekunden)", "log_in": "Anmelden",
"minimum-lap-time-must-be-a-positive-number-or-0": "Die minimale Rundenzeit muss eine positive Zahl oder 0 sein", "log_in_to_your_account": "Bitte melde dich an",
"must-be-at-least-10-characters-long": "Passwort muss mindestens 10 Zeichen lang sein!", "login_is_checked": "Login wird überprüft",
"must-contain-a-lowercase-letter": "Passwort muss einen Großbuchstaben enthalten!", "logout": "Abmelden",
"must-contain-a-number": "Passwort muss eine Zahl enthalten!", "mail-validation-in-progress": "E-Mail Verifizierung läuft... ",
"must-contain-a-uppercase-letter": "Passwort muss einen Kleinbuchstaben enthalten!", "manage-admin-users": "Nutzer verwalten",
"name": "Name", "middle-name": "Mittelname",
"name-is-required": "Der Gruppenname muss angegeben werden", "minimum-lap-time-in-s": "Minimale Rundenzeit (in Sekunden)",
"new-password": "Neues Passwort", "minimum-lap-time-must-be-a-positive-number-or-0": "Die minimale Rundenzeit muss eine positive Zahl oder 0 sein",
"no-contact-found": "Keine Kontakte gefunden", "must-be-at-least-10-characters-long": "Passwort muss mindestens 10 Zeichen lang sein!",
"no-contact-selected": "Kein Kontakt ausgewählt", "must-contain-a-lowercase-letter": "Passwort muss einen Großbuchstaben enthalten!",
"no-contact-specified": "Kein Kontakt angegeben", "must-contain-a-number": "Passwort muss eine Zahl enthalten!",
"no-donors-found": "Keine Spender:innen gefunden", "must-contain-a-uppercase-letter": "Passwort muss einen Kleinbuchstaben enthalten!",
"no-license-text-could-be-found": "Kein Lizenz-Text gefunden 😢", "name": "Name",
"no-organization-or-team-found": "Keine Organisationen oder Teams gefunden", "name-is-required": "Der Gruppenname muss angegeben werden",
"no-organization-specified": "Keine Organisation angegeben", "new-password": "Neues Passwort",
"no-organizations-found": "Keine Organisationen gefunden", "no-contact-found": "Keine Kontakte gefunden",
"no-runners-found": "Keine Läufer:innen gefunden", "no-contact-selected": "Kein Kontakt ausgewählt",
"no-tracks-added-yet": "Es wurden noch keine Tracks erstellt.", "no-contact-specified": "Kein Kontakt angegeben",
"non-blanko": "Keine/Blankokarte", "no-donors-found": "Keine Spender:innen gefunden",
"open": "OFFEN", "no-license-text-could-be-found": "Kein Lizenz-Text gefunden 😢",
"organization": "Organisation", "no-organization-or-team-found": "Keine Organisationen oder Teams gefunden",
"organization-added": "Organisation hinzugefügt", "no-organization-specified": "Keine Organisation angegeben",
"organization-deleted": "Organisation gelöscht", "no-organizations-found": "Keine Organisationen gefunden",
"organization-detail-is-being-loaded": "Organisationsdetails werden geladen ...", "no-runners-found": "Keine Läufer:innen gefunden",
"organization-is-being-added": "Organisation wird hinzugefügt ...", "no-tracks-added-yet": "Es wurden noch keine Tracks erstellt.",
"organization-name-is-required": "Der Name muss angegeben werden", "non-blanko": "Keine/Blankokarte",
"organizations": "Organisationen", "open": "OFFEN",
"organizations-are-being-loaded": "Organisationen werden geladen ...", "organization": "Organisation",
"orgs": "Organisationen", "organization-added": "Organisation hinzugefügt",
"oss_credit_description": "Wir verwenden eine Menge Open Source-Software bei diesen Projekten und möchten uns bei den folgenden Projekten und Mitwirkenden bedanken, die dazu beitragen, Open Source großartig zu machen!", "organization-deleted": "Organisation gelöscht",
"paid": "BEZAHLT", "organization-detail-is-being-loaded": "Organisationsdetails werden geladen ...",
"paid-amount": "Gezahlter Betrag", "organization-is-being-added": "Organisation wird hinzugefügt ...",
"password": "Passwort", "organization-name-is-required": "Der Name muss angegeben werden",
"password-changed": "Passwort wurde aktualisiert!", "organizations": "Organisationen",
"password-is-required": "Passwort muss angegeben werden", "organizations-are-being-loaded": "Organisationen werden geladen ...",
"password-reset-failed": "Passwort zurücksetzen ist fehlgeschlagen!", "orgs": "Organisationen",
"password-reset-in-progress": "Passwort wird zurückgesetzt...", "oss_credit_description": "Wir verwenden eine Menge Open Source-Software bei diesen Projekten und möchten uns bei den folgenden Projekten und Mitwirkenden bedanken, die dazu beitragen, Open Source großartig zu machen!",
"password-reset-mail-sent": "Passwort-Reset Mail wurde an \"{usersEmail}\" geschickt.", "paid": "BEZAHLT",
"password-reset-successful": "Passwort erfolgreich zurückgesetzt!", "paid-amount": "Gezahlter Betrag",
"passwords-dont-match": "Die Passwörter stimmen nicht überein!", "password": "Passwort",
"payment-amount-must-be-greater-than-0-00eur": "Der Zahlungsbetrag muss größer als 0.00€ sein!", "password-changed": "Passwort wurde aktualisiert!",
"pdf-generation-failed": "PDF Generierung fehlgeschlagen!", "password-is-required": "Passwort muss angegeben werden",
"pdf-successfully-generated": "PDF wurde erfolgreich generiert!", "password-reset-failed": "Passwort zurücksetzen ist fehlgeschlagen!",
"pdfs-successfully-generated": "Alle PDFs wurden generiert!", "password-reset-in-progress": "Passwort wird zurückgesetzt...",
"per-kilometer": "pro Kilometer", "password-reset-mail-sent": "Passwort-Reset Mail wurde an \"{usersEmail}\" geschickt.",
"permissions": "Berechtigungen", "password-reset-successful": "Passwort erfolgreich zurückgesetzt!",
"permissions-updated": "Berechtigungen aktualisiert!", "passwords-dont-match": "Die Passwörter stimmen nicht überein!",
"phone": "Telefon", "payment-amount-must-be-greater-than-0-00eur": "Der Zahlungsbetrag muss größer als 0.00€ sein!",
"please-confirm-the-deletion-of-card": "Bitte bestätige die Löschung der Karte", "pdf-generation-failed": "PDF Generierung fehlgeschlagen!",
"please-confirm-the-deletion-of-runner": "Bitte bestätige die Löschung der Läufer:in", "pdf-successfully-generated": "PDF wurde erfolgreich generiert!",
"please-confirm-the-deletion-of-scan": "Bitte bestätige die Löschung des Scans", "pdfs-successfully-generated": "Alle PDFs wurden generiert!",
"please-copy-the-token-and-store-it-somewhere-save": "Bitte kopiere dir den Token und bewahre ihn gut auf.", "per-kilometer": "pro Kilometer",
"please-provide-a-password": "Bitte gebe ein Passwort an...", "permissions": "Berechtigungen",
"please-provide-the-nessecary-information-to-add-a-new-donor": "Bitte mach die Notwendigen Angaben, um eine neue Sponsor:in zu erstellen", "permissions-updated": "Berechtigungen aktualisiert!",
"please-provide-the-nessecary-information-to-create-a-new-donation": "Bitte gebe alle für das Sponsoring notwendigen Daten an.", "phone": "Telefon",
"please-provide-the-nessecary-information-to-create-a-new-scan": "Bitte gebe alle notwendigen Informationen an, um einen neuen Scan zu erstellen.", "please-confirm-the-deletion-of-card": "Bitte bestätige die Löschung der Karte",
"please-provide-the-required-csv-xlsx-file": "Bitte eine CSV oder XLSX Datei hochladen.", "please-confirm-the-deletion-of-runner": "Bitte bestätige die Löschung der Läufer:in",
"please-provide-the-required-information-for-creating-a-new-user-group": "Bitte gebe alle für eine neue Gruppe notwendigen Informationen an.", "please-confirm-the-deletion-of-scan": "Bitte bestätige die Löschung des Scans",
"please-provide-the-required-information-to-add-a-new-contact": "Bitte gebe alle nötigen Informationen an, im den neuen Kontakt zu erstellen.", "please-copy-the-token-and-store-it-somewhere-save": "Bitte kopiere dir den Token und bewahre ihn gut auf.",
"please-provide-the-required-information-to-add-a-new-organization": "Bitte gebe alle nötigen Informationen an, im die neue Organisation zu erstellen.", "please-provide-a-password": "Bitte gebe ein Passwort an...",
"please-provide-the-required-information-to-add-a-new-runner": "Bitte die benötigten Informationen angeben.", "please-provide-the-nessecary-information-to-add-a-new-donor": "Bitte mach die Notwendigen Angaben, um eine neue Sponsor:in zu erstellen",
"please-provide-the-required-information-to-add-a-new-team": "Bitte gebe alle nötigen Informationen an, im das neue Team zu erstellen.", "please-provide-the-nessecary-information-to-create-a-new-donation": "Bitte gebe alle für das Sponsoring notwendigen Daten an.",
"please-provide-the-required-information-to-add-a-new-track": "Bitte die benötigten Informationen angeben.", "please-provide-the-nessecary-information-to-create-a-new-scan": "Bitte gebe alle notwendigen Informationen an, um einen neuen Scan zu erstellen.",
"please-provide-the-required-information-to-add-a-new-user": "Bitte gebe alle nötigen Informationen an, im die neue Benutzer:in zu erstellen.", "please-provide-the-required-csv-xlsx-file": "Bitte eine CSV oder XLSX Datei hochladen.",
"please-provide-the-required-information-to-create-a-new-scanstation": "Bitte gebe alle für eine Scannerstation notwendigen Informationen an", "please-provide-the-required-information-for-creating-a-new-user-group": "Bitte gebe alle für eine neue Gruppe notwendigen Informationen an.",
"please-provide-the-required-information-to-create-a-new-statsclient": "Bitte gebe alle für einen Statsclient notwendigen Informationen an", "please-provide-the-required-information-to-add-a-new-contact": "Bitte gebe alle nötigen Informationen an, im den neuen Kontakt zu erstellen.",
"please-request-a-new-reset-mail": "Bitte eine neue Passwortreset-Mail anfordern...", "please-provide-the-required-information-to-add-a-new-organization": "Bitte gebe alle nötigen Informationen an, im die neue Organisation zu erstellen.",
"please-wait-a-moment-your-login-is-still-being-processed": "Bitte warte einen Moment, deine Anmeldung wird verarbeitet", "please-provide-the-required-information-to-add-a-new-runner": "Bitte die benötigten Informationen angeben.",
"prefix": "Prefix", "please-provide-the-required-information-to-add-a-new-team": "Bitte gebe alle nötigen Informationen an, im das neue Team zu erstellen.",
"privacy": "Datenschutz", "please-provide-the-required-information-to-add-a-new-track": "Bitte die benötigten Informationen angeben.",
"privacy-loading": "Datenschutzerklärung lädt...", "please-provide-the-required-information-to-add-a-new-user": "Bitte gebe alle nötigen Informationen an, im die neue Benutzer:in zu erstellen.",
"profile": "Profil", "please-provide-the-required-information-to-create-a-new-scanstation": "Bitte gebe alle für eine Scannerstation notwendigen Informationen an",
"profile-deleted": "Profil gelöscht!", "please-provide-the-required-information-to-create-a-new-statsclient": "Bitte gebe alle für einen Statsclient notwendigen Informationen an",
"profile-picture": "Profilbild", "please-request-a-new-reset-mail": "Bitte eine neue Passwortreset-Mail anfordern...",
"profile-updated": "Profil wurde aktualisiert!", "please-wait-a-moment-your-login-is-still-being-processed": "Bitte warte einen Moment, deine Anmeldung wird verarbeitet",
"read-license": "Lizenz-Text lesen", "prefix": "Prefix",
"receipt-needed": "Spendenquittung benötigt", "privacy": "Datenschutz",
"repo_link": "Link", "privacy-loading": "Datenschutzerklärung lädt...",
"request-a-new-reset-mail": "Neue Reset-Mail anfordern", "profile": "Profil",
"reset-my-password": "Passwort zurücksetzen", "profile-deleted": "Profil gelöscht!",
"reset-password": "Passwort zurücksetzen", "profile-picture": "Profilbild",
"runner": "Läufer:in", "profile-updated": "Profil wurde aktualisiert!",
"runner-added": "Läufer:in hinzugefügt", "read-license": "Lizenz-Text lesen",
"runner-deleted": "Läufer:in gelöscht", "receipt-needed": "Spendenquittung benötigt",
"runner-import": "Läufer:innen Import", "repo_link": "Link",
"runner-is-being-added": "Läufer:in wird hinzugefügt...", "request-a-new-reset-mail": "Neue Reset-Mail anfordern",
"runner-updated": "Läufer:in aktualisiert!", "reset-my-password": "Passwort zurücksetzen",
"runnercards": "Laeuferkarten", "reset-password": "Passwort zurücksetzen",
"runnerimport_verify_runners_org": "Bitte die Läufer:innen für den Import in die Organisation \"{org_name}\" bestätigen", "runner": "Läufer:in",
"runners": "Läufer", "runner-added": "Läufer:in hinzugefügt",
"runners-are-being-imported": "Läufer:innen werden importiert ...", "runner-deleted": "Läufer:in gelöscht",
"runners-are-being-loaded": "Läufer:innen werden geladen ...", "runner-import": "Läufer:innen Import",
"save": "Speichern", "runner-is-being-added": "Läufer:in wird hinzugefügt...",
"save-changes": "Änderungen speichern", "runner-updated": "Läufer:in aktualisiert!",
"scan-added": "Scan hinzugefügt", "runnercards": "Laeuferkarten",
"scan-deleted": "Scan gelöscht", "runnerimport_verify_runners_org": "Bitte die Läufer:innen für den Import in die Organisation \"{org_name}\" bestätigen",
"scan-is-being-updated": "Scan wird aktualisiert", "runners": "Läufer",
"scan-with-fixed-distance": "Scan mit Festdistanz", "runners-are-being-imported": "Läufer:innen werden importiert ...",
"scans": "Scans", "runners-are-being-loaded": "Läufer:innen werden geladen ...",
"scans-are-being-loaded": "Scans werden geladen", "save": "Speichern",
"scanstation": "Scanner Station", "save-changes": "Änderungen speichern",
"scanstation-added": "Station wurde erstellt", "scan-added": "Scan hinzugefügt",
"scanstation-is-being-added": "Scannerstation wird angelegt...", "scan-deleted": "Scan gelöscht",
"scanstations": "Scanner Stationen", "scan-is-being-updated": "Scan wird aktualisiert",
"scanstations-are-being-loaded": "Scannerstationen werden geladen...", "scan-with-fixed-distance": "Scan mit Festdistanz",
"search-for-an-organization-by-name-or-id": "Suche eine Organisation (via Name oder Id)", "scans": "Scans",
"search-for-an-organization-or-team-by-name-or-id": "Suche eine Organisation oder ein Team (via Name oder Id)", "scans-are-being-loaded": "Scans werden geladen",
"search-for-donor-name-or-id": "Suche eine Spender:in (via Name oder Id)", "scanstation": "Scanner Station",
"search-for-permission": "Berechtigungen durchsuchen", "scanstation-added": "Station wurde erstellt",
"search-for-runner-by-name-or-id": "Suche eine Läufer:in (via Name oder Id)", "scanstation-is-being-added": "Scannerstation wird angelegt...",
"select-all": "Alle auswählen", "scanstations": "Scanner Stationen",
"select-language": "Sprache auswählen", "scanstations-are-being-loaded": "Scannerstationen werden geladen...",
"selfservice-registration": "Selfservice Registrierung", "search-for-an-organization-by-name-or-id": "Suche eine Organisation (via Name oder Id)",
"send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services", "search-for-an-organization-or-team-by-name-or-id": "Suche eine Organisation oder ein Team (via Name oder Id)",
"set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen", "search-for-donor-name-or-id": "Suche eine Spender:in (via Name oder Id)",
"settings": "Einstellungen", "search-for-permission": "Berechtigungen durchsuchen",
"settings-for-your-profile": "Die Einstellungen deines Accounts", "search-for-runner-by-name-or-id": "Suche eine Läufer:in (via Name oder Id)",
"something-about-the-group": "Infos zur Gruppe", "select-all": "Alle auswählen",
"sponsoring-quittungs-liste_herunterladen": "Sponsoring-Quittungs-Liste herunterladen", "select-language": "Sprache auswählen",
"sponsorings": "Sponsoringerklaerungen", "selfservice-registration": "Selfservice Registrierung",
"stats-are-being-loaded": "Die Statistiken werden geladen...", "send-a-mail-to-lfk-odit-services": "Sende eine Mail an lfk@odit.services",
"statsclient-deleted": "Statsclient wurde gelöscht", "set-the-user-active-inactive": "Den Benutzer auf (in)aktiv setzen",
"statsclient-is-being-added": "Statsclient wird angelegt...", "settings": "Einstellungen",
"statsclients": "Statsclient (aka Beamershow)", "settings-for-your-profile": "Die Einstellungen deines Accounts",
"statsclients-are-being-loaded": "Statsclients werden geladen", "something-about-the-group": "Infos zur Gruppe",
"status": "Status", "sponsoring-quittungs-liste_herunterladen": "Sponsoring-Quittungs-Liste herunterladen",
"stuff-that-could-harm-your-profile": "Einstellungen, die deinem Profil nachhaltig schaden können", "sponsorings": "Sponsoringerklaerungen",
"successful-password-reset": "Passwort erfolgreich zurückgesetzt!", "station-deleted": "Scannerstation gelöscht",
"team": "Team", "stats-are-being-loaded": "Die Statistiken werden geladen...",
"team-added": "Team wurde hinzugefügt", "statsclient-deleted": "Statsclient wurde gelöscht",
"team-deleted": "Team gelöscht", "statsclient-is-being-added": "Statsclient wird angelegt...",
"team-detail-is-being-loaded": "Team wird geladen...", "statsclients": "Statsclient (aka Beamershow)",
"team-is-being-added": "Team wird erstellt...", "statsclients-are-being-loaded": "Statsclients werden geladen",
"team-name": "Teamname", "status": "Status",
"team-name-is-required": "Teamname ist erforderlich", "stuff-that-could-harm-your-profile": "Einstellungen, die deinem Profil nachhaltig schaden können",
"teams": "Teams", "successful-password-reset": "Passwort erfolgreich zurückgesetzt!",
"teams-are-being-loaded": "Teams werden geladen ...", "team": "Team",
"the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "Die angegebene Telefonnummer ist nicht korrekt. <br /> Bitte gebe eine Telefonnummer im internationalen Format an...", "team-added": "Team wurde hinzugefügt",
"the-scans-distance-must-be-greater-than-0m": "Die Distanz muss größer als 0m sein.", "team-deleted": "Team gelöscht",
"the-scanstations-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again": "Der Scannerstation Token wird nur einmal angezeigt - du kannst ihn nicht ändern oder ihn dir nochmal anzeigen lassen!", "team-detail-is-being-loaded": "Team wird geladen...",
"the-statsclient-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again": "Der Statsclient Token wird nur einmal angezeigt - du kannst ihn nicht ändern oder ihn dir nochmal anzeigen lassen!", "team-is-being-added": "Team wird erstellt...",
"there-are-no-cards-yet": "Es gibt noch keine Läuferkarten.", "team-name": "Teamname",
"there-are-no-contacts-added-yet": "Es wurden noch keine Kontakte hinzugefügt.", "team-name-is-required": "Teamname ist erforderlich",
"there-are-no-donations-yet": "Es gibt noch keine Sponsorings", "teams": "Teams",
"there-are-no-donors-yet": "Es gibt noch keine Sponsor:innen", "teams-are-being-loaded": "Teams werden geladen ...",
"there-are-no-groups-yet": "Es gibt noch keine Gruppen", "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "Die angegebene Telefonnummer ist nicht korrekt. <br /> Bitte gebe eine Telefonnummer im internationalen Format an...",
"there-are-no-organizations-added-yet": "Es wurden noch keine Organisationen hinzugefügt.", "the-scans-distance-must-be-greater-than-0m": "Die Distanz muss größer als 0m sein.",
"there-are-no-runners-added-yet": "Es wurden noch keine Läufer:innen hinzugefügt.", "the-scanstations-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again": "Der Scannerstation Token wird nur einmal angezeigt - du kannst ihn nicht ändern oder ihn dir nochmal anzeigen lassen!",
"there-are-no-scans-yet": "Es gibt noch keine Scans", "the-statsclient-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again": "Der Statsclient Token wird nur einmal angezeigt - du kannst ihn nicht ändern oder ihn dir nochmal anzeigen lassen!",
"there-are-no-teams-added-yet": "Es wurden noch keine Teams hinzugefügt.", "there-are-no-cards-yet": "Es gibt noch keine Läuferkarten.",
"there-are-no-users-added-yet": "Es wurden noch keine Benutzer hinzugefügt.", "there-are-no-contacts-added-yet": "Es wurden noch keine Kontakte hinzugefügt.",
"this-card-is": "Diese Karte ist", "there-are-no-donations-yet": "Es gibt noch keine Sponsorings",
"this-might-take-a-moment": "Das könnte einen kleinen Moment dauern", "there-are-no-donors-yet": "Es gibt noch keine Sponsor:innen",
"this-scanstation-is": "Diese Station ist", "there-are-no-groups-yet": "Es gibt noch keine Gruppen",
"token": "Token", "there-are-no-organizations-added-yet": "Es wurden noch keine Organisationen hinzugefügt.",
"total-distance": "gelaufene Strecke", "there-are-no-runners-added-yet": "Es wurden noch keine Läufer:innen hinzugefügt.",
"total-donation-amount": "Gesamtbetrag", "there-are-no-scans-yet": "Es gibt noch keine Scans",
"total-donations": "Spendensumme", "there-are-no-teams-added-yet": "Es wurden noch keine Teams hinzugefügt.",
"total-paid-amount": "Gezahlter Gesamtbetrag", "there-are-no-users-added-yet": "Es wurden noch keine Benutzer hinzugefügt.",
"total-scans": "gesamte Scans", "this-card-is": "Diese Karte ist",
"total_donation_amount_in_eur": "Gesamtbetrag in €", "this-might-take-a-moment": "Das könnte einen kleinen Moment dauern",
"track": "Track", "this-scanstation-is": "Diese Station ist",
"track-added": "Track hinzugefügt", "timestamp": "Timestamp",
"track-data-is-being-loaded": "Trackdaten werden geladen", "token": "Token",
"track-is-being-added": "Track wird hinzugefügt...", "total-distance": "gelaufene Strecke",
"track-is-being-updated": "Track wird aktualisiert...", "total-donation-amount": "Gesamtbetrag",
"track-length-in-m": "Tracklänge (in Metern)", "total-donation-count": "Gesamte Sponsorings",
"track-length-must-be-greater-than-0": "Die Länge muss größer als 0 (Meter) sein", "total-donations": "Spendensumme",
"track-name": "Trackname", "total-donors": "gesamte Sponsor:innen",
"track-name-must-not-be-empty": "Der Name muss angegeben werden", "total-paid-amount": "Gezahlter Gesamtbetrag",
"track-was-updated": "Track wurde aktualisiert", "total-scans": "gesamte Scans",
"tracks": "Tracks", "total_donation_amount_in_eur": "Gesamtbetrag in €",
"unpaid": "Offen", "track": "Track",
"update-card": "Karte aktualisieren", "track-added": "Track hinzugefügt",
"update-password": "Passwort ändern", "track-data-is-being-loaded": "Trackdaten werden geladen",
"updated-contact": "Kontakt aktualisiert!", "track-is-being-added": "Track wird hinzugefügt...",
"updated-donor": "Sponsor:in wurde aktualisiert", "track-is-being-updated": "Track wird aktualisiert...",
"updated-organization": "Organisation wurde aktualisiert", "track-length-in-m": "Tracklänge (in Metern)",
"updated-scan": "Scan wurde aktualisiert", "track-length-must-be-greater-than-0": "Die Länge muss größer als 0 (Meter) sein",
"updated-team": "Team wurde aktualisiert", "track-name": "Trackname",
"updateing-group": "Gruppe wird aktualisiert...", "track-name-must-not-be-empty": "Der Name muss angegeben werden",
"updating-card": "Karte wird aktualisiert", "track-was-updated": "Track wurde aktualisiert",
"updating-donation": "Sponsoring wird aktualisiert", "tracks": "Tracks",
"updating-organization": "Organisation wird aktualisiert", "unpaid": "Offen",
"updating-permissions": "Berechtigungen werden aktualisiert...", "update-card": "Karte aktualisieren",
"updating-runner": "Läufer:in wird aktualisiert.", "update-password": "Passwort ändern",
"updating-team": "Team wird aktualisiert", "updated-contact": "Kontakt aktualisiert!",
"updating-user": "Benutzer:in wird aktualisiert...", "updated-donor": "Sponsor:in wurde aktualisiert",
"updating-your-profile": "Profil wird aktualisiert...", "updated-organization": "Organisation wurde aktualisiert",
"user-added": "Benutzer hinzugefügt", "updated-scan": "Scan wurde aktualisiert",
"user-groups": "Benutzergruppen", "updated-team": "Team wurde aktualisiert",
"user-is-being-added": "Benutzer wird hinzugefügt ...", "updateing-group": "Gruppe wird aktualisiert...",
"user-updated": "Benutzer:in wurde aktualisiert", "updating-card": "Karte wird aktualisiert",
"username": "Benutzername", "updating-donation": "Sponsoring wird aktualisiert",
"users": "Benutzer", "updating-organization": "Organisation wird aktualisiert",
"valid": "Gültig", "updating-permissions": "Berechtigungen werden aktualisiert...",
"valid-city-is-required": "Du musst eine Stadt angeben", "updating-runner": "Läufer:in wird aktualisiert.",
"valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt", "updating-team": "Team wird aktualisiert",
"valid-international-phone-number-is-required": "Du musst eine Telefonnummer im internationalen Format angeben...", "updating-user": "Benutzer:in wird aktualisiert...",
"valid-zipcode-postal-code-is-required": "Du musst eine valide Postleitzahl angeben", "updating-your-profile": "Profil wird aktualisiert...",
"verfuegbare": "Verfügbar", "user-added": "Benutzer hinzugefügt",
"welcome_wavinghand": "Willkommen 👋", "user-groups": "Benutzergruppen",
"yes-i-copied-the-token": "Ja, ich habe den Token kopiert", "user-is-being-added": "Benutzer wird hinzugefügt ...",
"you-are-going-to-loose-all-permissions-and-access-to-the-runner-system": "Du wirst all deine Berechtigungen und den Zugriff aufs Läufersystem verlieren!", "user-updated": "Benutzer:in wurde aktualisiert",
"you-can-enter-the-donations-paid-amount-manually-or-use-the-max-button-to-use-the-donations-exact-amount": "Du kannst den Betrag der Zahlung entweder manuell eingeben oder über den MAX Button auf den Spendenbetrag setzen", "username": "Benutzername",
"you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉", "users": "Benutzer",
"you-can-provide-a-runner-but-you-dont-have-to": "Du kannst eine Läufer:in angeben, musst aber nicht.", "valid": "Gültig",
"you-dont-have-any-scanclients-yet": "Es gibt noch keine Statsclients", "valid-city-is-required": "Du musst eine Stadt angeben",
"you-dont-have-any-scanstations-yet": "Es gibt noch keine Scannerstationen", "valid-email-is-required": "Es wird eine valide E-Mail Adresse benötigt",
"you-have-to-provide-an-organization": "Du musst eine Organisation angeben", "valid-international-phone-number-is-required": "Du musst eine Telefonnummer im internationalen Format angeben...",
"you-have-to-save-your-changes-to-generate-a-link": "Du musst deine Änderungen speichern, um einen Link zu generieren.", "valid-zipcode-postal-code-is-required": "Du musst eine valide Postleitzahl angeben",
"you-must-create-at-least-one-card-or-cancel": "Du musst mindestens eine Blankokarte erstellen (oder abbrechen).", "verfuegbare": "Verfügbar",
"zip-postal-code": "Postleitzahl", "welcome_wavinghand": "Willkommen 👋",
"all-associated-scans-will-get-deleted-as-well": "Alle Scans dieser Station werden ebenfalls gelöscht", "yes-i-copied-the-token": "Ja, ich habe den Token kopiert",
"confirm-delete-station-with-all-scans": "Löschen der Scannerstation mit allen Scans bestätigen", "you-are-going-to-loose-all-permissions-and-access-to-the-runner-system": "Du wirst all deine Berechtigungen und den Zugriff aufs Läufersystem verlieren!",
"cancel-keep-station": "Abbrechen und Station behalten", "you-can-enter-the-donations-paid-amount-manually-or-use-the-max-button-to-use-the-donations-exact-amount": "Du kannst den Betrag der Zahlung entweder manuell eingeben oder über den MAX Button auf den Spendenbetrag setzen",
"station-deleted": "Scannerstation gelöscht" "you-can-now-use-your-new-password-to-log-in-to-your-account": "Du kannst dich jetzt mit deinem neuen Passwort anmelden! 🎉",
"you-can-provide-a-runner-but-you-dont-have-to": "Du kannst eine Läufer:in angeben, musst aber nicht.",
"you-dont-have-any-scanclients-yet": "Es gibt noch keine Statsclients",
"you-dont-have-any-scanstations-yet": "Es gibt noch keine Scannerstationen",
"you-have-to-provide-an-organization": "Du musst eine Organisation angeben",
"you-have-to-save-your-changes-to-generate-a-link": "Du musst deine Änderungen speichern, um einen Link zu generieren.",
"you-must-create-at-least-one-card-or-cancel": "Du musst mindestens eine Blankokarte erstellen (oder abbrechen).",
"zip-postal-code": "Postleitzahl"
} }

View File

@@ -1,490 +1,497 @@
{ {
"404message": "Sorry, the page you are looking for could not be found.", "404message": "Sorry, the page you are looking for could not be found.",
"404title": "Error 404", "404title": "Error 404",
"about": "About", "about": "About",
"action": "Action", "action": "Action",
"active": "Active", "active": "Active",
"add-card": "Add Card", "add-card": "Add Card",
"add-donation": "Add donation", "add-donation": "Add donation",
"add-donor": "Add donor", "add-donor": "Add donor",
"add-or-update-a-payment": "Add or update a payment", "add-or-update-a-payment": "Add or update a payment",
"add-scan": "Add scan", "add-scan": "Add scan",
"add-the-first-scanstation": "Add your first scanstation.", "add-the-first-scanstation": "Add your first scanstation.",
"add-the-first-statsclient": "Add your first statsclient.", "add-the-first-statsclient": "Add your first statsclient.",
"add-user-group": "Add User Group", "add-user-group": "Add User Group",
"add-your-first-card": "Add your first card", "add-your-first-card": "Add your first card",
"add-your-first-contact": "Add your first contact", "add-your-first-contact": "Add your first contact",
"add-your-first-donor": "add your first donor", "add-your-first-donor": "add your first donor",
"add-your-first-group": "Add your first group", "add-your-first-group": "Add your first group",
"add-your-first-organization": "Add your first organization", "add-your-first-organization": "Add your first organization",
"add-your-first-runner": "Add your first runner", "add-your-first-runner": "Add your first runner",
"add-your-first-team": "Add your first team", "add-your-first-team": "Add your first team",
"add-your-first-track": "Add your first track.", "add-your-first-track": "Add your first track.",
"add-your-first-user": "Add your first user", "add-your-first-user": "Add your first user",
"add-your-fist-donation": "Add your fist donation", "add-your-fist-donation": "Add your fist donation",
"add-your-fist-scan": "Add your fist scan", "add-your-fist-scan": "Add your fist scan",
"adding-card": "Adding Card", "adding-card": "Adding Card",
"adding-donation": "Adding donation...", "adding-donation": "Adding donation...",
"adding-scan": "Adding Scan", "adding-scan": "Adding Scan",
"address": "Address", "address": "Address",
"address-is-required": "Address is required", "address-is-required": "Address is required",
"after-deletion-we-cant-restore-your-old-profile": "After deletion we can't restore your old profile!", "after-deletion-we-cant-restore-your-old-profile": "After deletion we can't restore your old profile!",
"after-the-update-youll-get-logged-out-please-login-with-your-new-password-after-that": "After the update you'll get logged out - Please login with your new password after that.", "after-the-update-youll-get-logged-out-please-login-with-your-new-password-after-that": "After the update you'll get logged out - Please login with your new password after that.",
"all": "all", "all": "all",
"all-associated-donations-will-get-deleted-as-well": "All associated donations will get deleted as well", "all-associated-donations-will-get-deleted-as-well": "All associated donations will get deleted as well",
"all-associated-runners-will-be-deleted-too": "All associated runners will be deleted too!", "all-associated-runners-will-be-deleted-too": "All associated runners will be deleted too!",
"all-associated-teams-and-runners-will-be-deleted-too": "All associated teams and runners will be deleted too!", "all-associated-scans-will-get-deleted-as-well": "All associated scans will get deleted as well",
"already-paid": "Already paid", "all-associated-teams-and-runners-will-be-deleted-too": "All associated teams and runners will be deleted too!",
"amount": "Amount", "already-paid": "Already paid",
"amount-per-kilometer": "Amount per kilometer", "amount": "Amount",
"apartment-suite-etc": "Apartment, suite, etc.", "amount-per-kilometer": "Amount per kilometer",
"application_name": "Lauf für Kaya! - Admin", "apartment-suite-etc": "Apartment, suite, etc.",
"applying-changes": "Applying Changes", "api-endpoint": "API-Endpoint",
"attention": "Attention!", "application_name": "Lauf für Kaya! - Admin",
"author": "Author", "applying-changes": "Applying Changes",
"bitte-bestaetige-diese-laeufer-fuer-den-import": "Please confirm these runners for import.", "attention": "Attention!",
"by": "by", "author": "Author",
"cancel": "Cancel", "average-distance": "average distance",
"cancel-delete": "Cancel Delete", "average-donation": "average donation",
"cancel-keep-donor": "Cancel, keep donor", "bitte-bestaetige-diese-laeufer-fuer-den-import": "Please confirm these runners for import.",
"cancel-keep-my-profile": "Cancel, keep my profile", "by": "by",
"cancel-keep-organization": "Cancel, keep organization", "cancel": "Cancel",
"cancel-keep-statsclient": "Cancel and keep statsclient", "cancel-delete": "Cancel Delete",
"cancel-keep-team": "Cancel, keep team", "cancel-keep-donor": "Cancel, keep donor",
"cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity", "cancel-keep-my-profile": "Cancel, keep my profile",
"card": "card", "cancel-keep-organization": "Cancel, keep organization",
"card-added": "Card added", "cancel-keep-station": "Cancel, keep station",
"card-deleted": "Card deleted", "cancel-keep-statsclient": "Cancel and keep statsclient",
"card-updated": "Card updated", "cancel-keep-team": "Cancel, keep team",
"cards": "Cards", "cannot-reset-your-password-directly": "Bummer. We unfortunately cannot reset your password directly. Please send us a mail and confirm your identity",
"cards-deleted": "Cards deleted", "card": "card",
"certificates": "Certificates", "card-added": "Card added",
"change-your-password-here": "Change your password here", "card-deleted": "Card deleted",
"changing-your-password": "Changing your password", "card-updated": "Card updated",
"city": "City", "cards": "Cards",
"click-to-copy-the-link-into-your-clipboard": "Click to copy the link into your clipboard", "cards-deleted": "Cards deleted",
"click-to-copy-token-to-clipboard": "Click to copy the token to your clipboard", "certificates": "Certificates",
"close": "Close", "change-your-password-here": "Change your password here",
"code": "Code", "changing-your-password": "Changing your password",
"configure-the-tracks-and-minimum-lap-times": "configure the tracks & minimum lap times", "city": "City",
"confirm": "Confirm", "click-to-copy-the-link-into-your-clipboard": "Click to copy the link into your clipboard",
"confirm-delete": "Confirm Delete", "click-to-copy-token-to-clipboard": "Click to copy the token to your clipboard",
"confirm-delete-donor-with-all-donations": "Confirm, delete donor with all donations", "close": "Close",
"confirm-delete-my-user-profile": "Confirm, delete my user profile", "code": "Code",
"confirm-delete-organization-and-associated-teams-runners": "Confirm, delete organization and associated teams+runners.", "config-codes": "Config codes",
"confirm-delete-statsclient": "Confirm, delete statsclient", "configure-the-tracks-and-minimum-lap-times": "configure the tracks & minimum lap times",
"confirm-delete-team-and-associated-runners": "Confirm, delete team and associated runners.", "confirm": "Confirm",
"confirm-deletion": "Confirm Deletion", "confirm-delete": "Confirm Delete",
"confirm-the-new-password": "Confirm the new password", "confirm-delete-donor-with-all-donations": "Confirm, delete donor with all donations",
"contact": "Contact", "confirm-delete-my-user-profile": "Confirm, delete my user profile",
"contact-added": "Contact added", "confirm-delete-organization-and-associated-teams-runners": "Confirm, delete organization and associated teams+runners.",
"contact-deleted": "Contact deleted", "confirm-delete-station-with-all-scans": "Confirm deletion of station with all scans",
"contact-information": "Contact Information", "confirm-delete-statsclient": "Confirm, delete statsclient",
"contact-is-being-added": "Contact is being added...", "confirm-delete-team-and-associated-runners": "Confirm, delete team and associated runners.",
"contact-is-being-updated": "Contact is being updated...", "confirm-deletion": "Confirm Deletion",
"contact-is-not-a-member-in-any-group": "Contact is not a member in any group", "confirm-the-new-password": "Confirm the new password",
"contacts": "Contacts", "contact": "Contact",
"contacts-are-being-loaded": "contacts are being loaded...", "contact-added": "Contact added",
"copied-link-to-clipboard": "Copied link to clipboard", "contact-deleted": "Contact deleted",
"copied-token-to-clipboard": "Copied token to clipboard", "contact-information": "Contact Information",
"count_organizations": "# Organizations", "contact-is-being-added": "Contact is being added...",
"count_teams": "# Teams", "contact-is-being-updated": "Contact is being updated...",
"create": "Create", "contact-is-not-a-member-in-any-group": "Contact is not a member in any group",
"create-a-new": "Create a new", "contacts": "Contacts",
"create-a-new-card": "Create a new card", "contacts-are-being-loaded": "contacts are being loaded...",
"create-a-new-contact": "Create a new contact", "copied-link-to-clipboard": "Copied link to clipboard",
"create-a-new-distance-donation": "Create a new distance donation", "copied-token-to-clipboard": "Copied token to clipboard",
"create-a-new-donor": "Create a new donor", "count_organizations": "# Organizations",
"create-a-new-fixed-donation": "Create a new fixed donation", "count_teams": "# Teams",
"create-a-new-organization": "Create a new Organization", "create": "Create",
"create-a-new-runner": "Create a new Runner", "create-a-new": "Create a new",
"create-a-new-scan-fixed-only": "Create a new scan (fixed only)", "create-a-new-card": "Create a new card",
"create-a-new-scanstation": "Create a new station", "create-a-new-contact": "Create a new contact",
"create-a-new-statsclient": "Create a new statsclient", "create-a-new-distance-donation": "Create a new distance donation",
"create-a-new-team": "Create a new team", "create-a-new-donor": "Create a new donor",
"create-a-new-track": "Create a new Track", "create-a-new-fixed-donation": "Create a new fixed donation",
"create-a-new-user": "Create a new User", "create-a-new-organization": "Create a new Organization",
"create-a-new-user-group": "Create a new user group", "create-a-new-runner": "Create a new Runner",
"create-and-generate-pdf": "Create and generate PDF", "create-a-new-scan-fixed-only": "Create a new scan (fixed only)",
"create-bulk-blanco-cards": "Create bulk blanco cards", "create-a-new-scanstation": "Create a new station",
"create-bulk-cards": "Add blanco cards", "create-a-new-statsclient": "Create a new statsclient",
"create-organization": "Create Organization", "create-a-new-team": "Create a new team",
"create-team": "Create Team", "create-a-new-track": "Create a new Track",
"create-track": "Create Track", "create-a-new-user": "Create a new User",
"create-user": "Create User", "create-a-new-user-group": "Create a new user group",
"create-without-pdf": "Create without PDF", "create-and-generate-pdf": "Create and generate PDF",
"created-blanco-cards": "Created blanco cards", "create-bulk-blanco-cards": "Create bulk blanco cards",
"creating-blanco-cards": "Creating blanco cards", "create-bulk-cards": "Add blanco cards",
"credits": "Credits", "create-organization": "Create Organization",
"csv_import__class": "Class", "create-team": "Create Team",
"csv_import__firstname": "Firstname", "create-track": "Create Track",
"csv_import__lastname": "Lastname", "create-user": "Create User",
"csv_import__middlename": "Middlename", "create-without-pdf": "Create without PDF",
"csv_import__team": "Team", "created-blanco-cards": "Created blanco cards",
"danger-zone": "Danger zone", "creating-blanco-cards": "Creating blanco cards",
"dashboard-greeting": "Hello", "credits": "Credits",
"dashboard-title": "Dashboard", "csv_import__class": "Class",
"datatable": { "csv_import__firstname": "Firstname",
"search": "🔍 Search...", "csv_import__lastname": "Lastname",
"sort_column_ascending": "Sort column ascending", "csv_import__middlename": "Middlename",
"sort_column_descending": "Sort column descending", "csv_import__team": "Team",
"previous": "Previous", "danger-zone": "Danger zone",
"next": "Next", "dashboard-greeting": "Hello",
"page": "Page", "dashboard-title": "Dashboard",
"showing": "Showing", "datatable": {
"records": "Records", "search": "🔍 Search...",
"of": "of", "sort_column_ascending": "Sort column ascending",
"to": "to", "sort_column_descending": "Sort column descending",
"loading": "Loading...", "previous": "Previous",
"no_matching_records_found": "No matching records found", "next": "Next",
"an_error_happened_while_fetching_the_data": "An error happened while fetching the data" "page": "Page",
}, "showing": "Showing",
"delete": "Delete", "records": "Records",
"delete-cards": "Delete cards", "of": "of",
"delete-contact": "Delete Contact", "to": "to",
"delete-donation": "Delete Donation", "loading": "Loading...",
"delete-donor": "Delete donor", "no_matching_records_found": "No matching records found",
"delete-group": "Delete Group", "an_error_happened_while_fetching_the_data": "An error happened while fetching the data"
"delete-organization": "Delete Organization", },
"delete-profile": "Delete Profile", "delete": "Delete",
"delete-runner": "Delete Runner", "delete-cards": "Delete cards",
"delete-scan": "Delete scan", "delete-contact": "Delete Contact",
"delete-scans": "Delete scans", "delete-donation": "Delete Donation",
"delete-station": "Delete station", "delete-donor": "Delete donor",
"delete-statsclient": "Delete statsclient", "delete-group": "Delete Group",
"delete-team": "Delete Team", "delete-organization": "Delete Organization",
"delete-user": "Delete User", "delete-profile": "Delete Profile",
"deleted-scan": "Deleted scan", "delete-runner": "Delete Runner",
"dependency_name": "Name", "delete-scan": "Delete scan",
"description": "description", "delete-scans": "Delete scans",
"description-optional": "Description (optional)", "delete-station": "Delete station",
"deselect-all": "deselect all", "delete-statsclient": "Delete statsclient",
"details": "Details", "delete-team": "Delete Team",
"disabled": "disabled", "delete-user": "Delete User",
"distance": "Distance", "deleted-scan": "Deleted scan",
"distance-donation": "distance donation", "dependency_name": "Name",
"distance-in-km": "Distance in km", "description": "description",
"distance-track": "Distance (+Track)", "description-optional": "Description (optional)",
"do-you-really-want-to-delete-your-profile": "Do you really want to delete your profile?", "deselect-all": "deselect all",
"do-you-want-to-delete-the-organization-delete_org-name": "Do you want to delete the organization {orgname}?", "details": "Details",
"do-you-want-to-delete-the-team-delete_team-name": "Do you want to delete the team {teamname}?", "disabled": "disabled",
"do-you-want-to-delete-this-donor-with-all-related-donations": "Do you want to delete this donor with all related donations", "distance": "Distance",
"documentation": "Documentation", "distance-donation": "distance donation",
"donation-amount": "Donation amount", "distance-in-km": "Distance in km",
"donation-amount-must-be-greater-that-0-00eur": "Donation amount must be greater that 0.00€", "distance-track": "Distance (+Track)",
"donation-deleted": "Donation deleted", "do-you-really-want-to-delete-your-profile": "Do you really want to delete your profile?",
"donation-updated": "Donation updated", "do-you-want-to-delete-the-organization-delete_org-name": "Do you want to delete the organization {orgname}?",
"donation_added": "Donation_added", "do-you-want-to-delete-the-team-delete_team-name": "Do you want to delete the team {teamname}?",
"donations": "Donations", "do-you-want-to-delete-this-donor-with-all-related-donations": "Do you want to delete this donor with all related donations",
"donor": "Donor", "documentation": "Documentation",
"donor-added": "Donor added", "donation-amount": "Donation amount",
"donor-deleted": "donor deleted", "donation-amount-must-be-greater-that-0-00eur": "Donation amount must be greater that 0.00€",
"donor-has-no-associated-donations": "Donor has no associated donations.", "donation-deleted": "Donation deleted",
"donor-is-being-added": "Donor is being added...", "donation-updated": "Donation updated",
"donor-is-being-updated": "Donor is being updated", "donation_added": "Donation_added",
"donors": "Donors", "donations": "Donations",
"donors-are-being-loaded": "donors are being loaded", "donor": "Donor",
"dont-have-your-email-connected": "Don't have your email connected?", "donor-added": "Donor added",
"dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌", "donor-deleted": "donor deleted",
"e-mail-adress": "E-Mail Adress", "donor-has-no-associated-donations": "Donor has no associated donations.",
"edit": "Edit", "donor-is-being-added": "Donor is being added...",
"edit-a-card": "Edit a card", "donor-is-being-updated": "Donor is being updated",
"edit-permissions": "edit permissions", "donors": "Donors",
"email_address_or_username": "Email / username", "donors-are-being-loaded": "donors are being loaded",
"enabled": "enabled", "dont-have-your-email-connected": "Don't have your email connected?",
"enabled_large": "Enabled", "dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌",
"english": "English", "e-mail-adress": "E-Mail Adress",
"enter-payment": "Enter payment", "edit": "Edit",
"error-during-import": "Error during import", "edit-a-card": "Edit a card",
"error-whyile-copying-to-clipboard": "Error while copying to clipboard", "edit-permissions": "edit permissions",
"error_on_login": "Error on login", "email_address_or_username": "Email / username",
"erteilte": "Directly granted", "enabled": "enabled",
"everything-concerning-your-profile": "Everything concerning your profile", "enabled_large": "Enabled",
"everything-is-more-fun-together": "everything is more fun together 🏃‍♂️🏃‍♀️🏃‍♂️", "english": "English",
"faq": "FAQ", "enter-payment": "Enter payment",
"filename_sponsoringquittungsliste": "DonorReceiptList", "error-during-import": "Error during import",
"filter-by-organization-team": "Filter by Organization/ Team", "error-whyile-copying-to-clipboard": "Error while copying to clipboard",
"first-name": "First name", "error_on_login": "Error on login",
"first-name-is-required": "First Name is required", "erteilte": "Directly granted",
"first-scan-of-the-day": "First scan of the day.", "everything-concerning-your-profile": "Everything concerning your profile",
"fixed-donation": "fixed donation", "everything-is-more-fun-together": "everything is more fun together 🏃‍♂️🏃‍♀️🏃‍♂️",
"forgot_password": "Forgot your password?", "faq": "FAQ",
"geerbte": "inherited", "filename_sponsoringquittungsliste": "DonorReceiptList",
"general-stats": "General Stats", "filter-by-organization-team": "Filter by Organization/ Team",
"general_promise_error": "😢 Error", "first-name": "First name",
"generate-runner-certificate": "Generate runner certificate", "first-name-is-required": "First Name is required",
"generate-runner-certificates": "Generate runner certificates", "first-scan-of-the-day": "First scan of the day.",
"generate-runnercards": "Generate Runnercards", "fixed-donation": "fixed donation",
"generate-sponsoring-contract": "generate sponsoring contract", "forgot_password": "Forgot your password?",
"generate-sponsoring-contracts": "generate sponsoring contracts", "geerbte": "inherited",
"generating-pdf": "generating PDF...", "general-stats": "General Stats",
"generating-pdfs": "generating PDFs...", "general_promise_error": "😢 Error",
"generic-ui-logic-error": "Something went wrong in the UI logic", "generate-runner-certificate": "Generate runner certificate",
"german": "German", "generate-runner-certificates": "Generate runner certificates",
"go-to-login": "Go To Login", "generate-runnercards": "Generate Runnercards",
"goback": "Go Home", "generate-sponsoring-contract": "generate sponsoring contract",
"granted": "granted", "generate-sponsoring-contracts": "generate sponsoring contracts",
"group": "Group", "generating-pdf": "generating PDF...",
"group-added": "Group added", "generating-pdfs": "generating PDFs...",
"group-is-being-added": "Group is being added...", "generic-ui-logic-error": "Something went wrong in the UI logic",
"group-name-is-required": "Group name is required", "german": "German",
"group-updated": "group updated", "go-to-login": "Go To Login",
"groups": "Groups", "goback": "Go Home",
"groups-are-being-loaded": "Groups are being loaded", "granted": "granted",
"home": "Home", "group": "Group",
"icon-image-credits": "We also want to thank these projects for illustrations and icons:", "group-added": "Group added",
"if-you-want-to-create-multiple-blanco-cards-try-the-add-bulk-button": "If you want to create multiple blanco cards: Try the 'Add blanco cards' button.", "group-is-being-added": "Group is being added...",
"import-finished": "Import finished", "group-name-is-required": "Group name is required",
"import-runners": "Import runners", "group-updated": "group updated",
"import__target-organization": "Target Organization", "groups": "Groups",
"imprint": "Imprint", "groups-are-being-loaded": "Groups are being loaded",
"imprint-loading": "Imprint loading...", "home": "Home",
"inactive": "Inactive", "icon-image-credits": "We also want to thank these projects for illustrations and icons:",
"installed-version": "Installed version", "if-you-want-to-create-multiple-blanco-cards-try-the-add-bulk-button": "If you want to create multiple blanco cards: Try the 'Add blanco cards' button.",
"internal-error": "Internal Error", "import-finished": "Import finished",
"invalid": "Invalid", "import-runners": "Import runners",
"invalid-mail-reset": "the provided email is invalid", "import__target-organization": "Target Organization",
"just-enter-how-many-you-want-and-the-system-will-create-them": "Just enter how many you want and the system will create them", "imprint": "Imprint",
"key": "Key", "imprint-loading": "Imprint loading...",
"laeufer-hinzufuegen": "Add runner", "inactive": "Inactive",
"laeufer-importieren": "Läufer importieren", "installed-version": "Installed version",
"laptime": "Laptime", "internal-error": "Internal Error",
"last-name": "Last name", "invalid": "Invalid",
"last-name-is-required": "Last Name is required", "invalid-mail-reset": "the provided email is invalid",
"lfk-is-os": "The \"Lauf für Kaya!\" Frontend is (like all other projects for the \"LfK!\" Also) an open source project.", "just-enter-how-many-you-want-and-the-system-will-create-them": "Just enter how many you want and the system will create them",
"license": "License", "key": "Key",
"licenses-are-being-loaded": "Licenses are being loaded...", "laeufer-hinzufuegen": "Add runner",
"loading-cards": "Loading cards", "laeufer-importieren": "Läufer importieren",
"loading-contact-details": "Loading contact details...", "laptime": "Laptime",
"loading-donation-details": "Loading donation details", "last-name": "Last name",
"loading-donor-details": "Loading donor details", "last-name-is-required": "Last Name is required",
"loading-group-detail": "Loading group detail...", "lfk-is-os": "The \"Lauf für Kaya!\" Frontend is (like all other projects for the \"LfK!\" Also) an open source project.",
"loading-profile-data": "Loading profile data", "license": "License",
"loading-runners": "loading runners...", "licenses-are-being-loaded": "Licenses are being loaded...",
"loading-station-details": "Loading station details", "loading-cards": "Loading cards",
"log_in": "Log in", "loading-contact-details": "Loading contact details...",
"log_in_to_your_account": "Log in to your account", "loading-donation-details": "Loading donation details",
"login_is_checked": "Login is being checked...", "loading-donor-details": "Loading donor details",
"logout": "Logout", "loading-group-detail": "Loading group detail...",
"mail-validation-in-progress": "mail validation in progress...", "loading-profile-data": "Loading profile data",
"manage-admin-users": "manage admin users", "loading-runners": "loading runners...",
"middle-name": "Middle name", "loading-station-details": "Loading station details",
"minimum-lap-time-in-s": "minimum lap time in s", "log_in": "Log in",
"minimum-lap-time-must-be-a-positive-number-or-0": "minimum lap time must be a positive number or 0", "log_in_to_your_account": "Log in to your account",
"must-be-at-least-10-characters-long": "Must be at least 10 characters long!", "login_is_checked": "Login is being checked...",
"must-contain-a-lowercase-letter": "Must contain a lowercase letter!", "logout": "Logout",
"must-contain-a-number": "Must contain a number!", "mail-validation-in-progress": "mail validation in progress...",
"must-contain-a-uppercase-letter": "Must contain a uppercase letter!", "manage-admin-users": "manage admin users",
"name": "Name", "middle-name": "Middle name",
"name-is-required": "Name is required", "minimum-lap-time-in-s": "minimum lap time in s",
"new-password": "New password", "minimum-lap-time-must-be-a-positive-number-or-0": "minimum lap time must be a positive number or 0",
"no-contact-found": "No contacts found", "must-be-at-least-10-characters-long": "Must be at least 10 characters long!",
"no-contact-selected": "No contact selected", "must-contain-a-lowercase-letter": "Must contain a lowercase letter!",
"no-contact-specified": "no contact specified", "must-contain-a-number": "Must contain a number!",
"no-donors-found": "No donors found", "must-contain-a-uppercase-letter": "Must contain a uppercase letter!",
"no-license-text-could-be-found": "No license text could be found 😢", "name": "Name",
"no-organization-or-team-found": "No organization or team found", "name-is-required": "Name is required",
"no-organization-specified": "no organization specified", "new-password": "New password",
"no-organizations-found": "No organizations found", "no-contact-found": "No contacts found",
"no-runners-found": "No runners found", "no-contact-selected": "No contact selected",
"no-tracks-added-yet": "there are no tracks added yet.", "no-contact-specified": "no contact specified",
"non-blanko": "Non/Blanko", "no-donors-found": "No donors found",
"open": "OPEN", "no-license-text-could-be-found": "No license text could be found 😢",
"organization": "Organization", "no-organization-or-team-found": "No organization or team found",
"organization-added": "Organization added", "no-organization-specified": "no organization specified",
"organization-deleted": "Organization deleted", "no-organizations-found": "No organizations found",
"organization-detail-is-being-loaded": "organization detail is being loaded...", "no-runners-found": "No runners found",
"organization-is-being-added": "Organization is being added...", "no-tracks-added-yet": "there are no tracks added yet.",
"organization-name-is-required": "Organization name is required", "non-blanko": "Non/Blanko",
"organizations": "Organizations", "open": "OPEN",
"organizations-are-being-loaded": "organizations are being loaded...", "organization": "Organization",
"orgs": "Organizations", "organization-added": "Organization added",
"oss_credit_description": "We use a lot of open source software on these projects, and would like to thank the following projects and contributors who help make open source great!", "organization-deleted": "Organization deleted",
"paid": "PAID", "organization-detail-is-being-loaded": "organization detail is being loaded...",
"paid-amount": "Paid amount", "organization-is-being-added": "Organization is being added...",
"password": "Password", "organization-name-is-required": "Organization name is required",
"password-changed": "Password changed!", "organizations": "Organizations",
"password-is-required": "Password is required", "organizations-are-being-loaded": "organizations are being loaded...",
"password-reset-failed": "Password reset failed!", "orgs": "Organizations",
"password-reset-in-progress": "Password Reset in Progress...", "oss_credit_description": "We use a lot of open source software on these projects, and would like to thank the following projects and contributors who help make open source great!",
"password-reset-mail-sent": "Password reset mail was sent to \"{usersEmail}\".", "paid": "PAID",
"password-reset-successful": "Password Reset successful!", "paid-amount": "Paid amount",
"passwords-dont-match": "Passwords don't match!", "password": "Password",
"payment-amount-must-be-greater-than-0-00eur": "Payment amount must be greater than 0.00€!", "password-changed": "Password changed!",
"pdf-generation-failed": "PDF generation failed!", "password-is-required": "Password is required",
"pdf-successfully-generated": "PDF successfully generated!", "password-reset-failed": "Password reset failed!",
"pdfs-successfully-generated": "PDFs successfully generated!", "password-reset-in-progress": "Password Reset in Progress...",
"per-kilometer": "per Kilometer", "password-reset-mail-sent": "Password reset mail was sent to \"{usersEmail}\".",
"permissions": "Permissions", "password-reset-successful": "Password Reset successful!",
"permissions-updated": "Permissions updated!", "passwords-dont-match": "Passwords don't match!",
"phone": "Phone", "payment-amount-must-be-greater-than-0-00eur": "Payment amount must be greater than 0.00€!",
"please-confirm-the-deletion-of-card": "Please confirm the deletion of this card", "pdf-generation-failed": "PDF generation failed!",
"please-confirm-the-deletion-of-runner": "Please confirm the deletion of this runner", "pdf-successfully-generated": "PDF successfully generated!",
"please-confirm-the-deletion-of-scan": "Please confirm the deletion of scan", "pdfs-successfully-generated": "PDFs successfully generated!",
"please-copy-the-token-and-store-it-somewhere-save": "Please copy the token and store it somewhere safe.", "per-kilometer": "per Kilometer",
"please-provide-a-password": "Please provide a password...", "permissions": "Permissions",
"please-provide-the-nessecary-information-to-add-a-new-donor": "Please provide the nessecary information to add a new donor", "permissions-updated": "Permissions updated!",
"please-provide-the-nessecary-information-to-create-a-new-donation": "Please provide the nessecary information to create a new donation", "phone": "Phone",
"please-provide-the-nessecary-information-to-create-a-new-scan": "Please provide the nessecary information to create a new scan.", "please-confirm-the-deletion-of-card": "Please confirm the deletion of this card",
"please-provide-the-required-csv-xlsx-file": "Please provide the required csv/ xlsx file", "please-confirm-the-deletion-of-runner": "Please confirm the deletion of this runner",
"please-provide-the-required-information-for-creating-a-new-user-group": "Please provide the required information for creating a new user group.", "please-confirm-the-deletion-of-scan": "Please confirm the deletion of scan",
"please-provide-the-required-information-to-add-a-new-contact": "Please provide the required information to add a new contact.", "please-copy-the-token-and-store-it-somewhere-save": "Please copy the token and store it somewhere safe.",
"please-provide-the-required-information-to-add-a-new-organization": "Please provide the required information to add a new organization.", "please-provide-a-password": "Please provide a password...",
"please-provide-the-required-information-to-add-a-new-runner": "Please provide the required information to add a new runner.", "please-provide-the-nessecary-information-to-add-a-new-donor": "Please provide the nessecary information to add a new donor",
"please-provide-the-required-information-to-add-a-new-team": "Please provide the required information to add a new team.", "please-provide-the-nessecary-information-to-create-a-new-donation": "Please provide the nessecary information to create a new donation",
"please-provide-the-required-information-to-add-a-new-track": "Please provide the required information to add a new track.", "please-provide-the-nessecary-information-to-create-a-new-scan": "Please provide the nessecary information to create a new scan.",
"please-provide-the-required-information-to-add-a-new-user": "Please provide the required information to add a new user.", "please-provide-the-required-csv-xlsx-file": "Please provide the required csv/ xlsx file",
"please-provide-the-required-information-to-create-a-new-scanstation": "Please provide the required information to create a new scanstation", "please-provide-the-required-information-for-creating-a-new-user-group": "Please provide the required information for creating a new user group.",
"please-provide-the-required-information-to-create-a-new-statsclient": "Please provide the required information to create a new statsclient", "please-provide-the-required-information-to-add-a-new-contact": "Please provide the required information to add a new contact.",
"please-request-a-new-reset-mail": "Please request a new reset mail...", "please-provide-the-required-information-to-add-a-new-organization": "Please provide the required information to add a new organization.",
"please-wait-a-moment-your-login-is-still-being-processed": "Please wait a moment, your login is still being processed", "please-provide-the-required-information-to-add-a-new-runner": "Please provide the required information to add a new runner.",
"prefix": "Prefix", "please-provide-the-required-information-to-add-a-new-team": "Please provide the required information to add a new team.",
"privacy": "Privacy", "please-provide-the-required-information-to-add-a-new-track": "Please provide the required information to add a new track.",
"privacy-loading": "Privacy loading...", "please-provide-the-required-information-to-add-a-new-user": "Please provide the required information to add a new user.",
"profile": "Profile", "please-provide-the-required-information-to-create-a-new-scanstation": "Please provide the required information to create a new scanstation",
"profile-deleted": "Profile deleted!", "please-provide-the-required-information-to-create-a-new-statsclient": "Please provide the required information to create a new statsclient",
"profile-picture": "Profile Picture", "please-request-a-new-reset-mail": "Please request a new reset mail...",
"profile-updated": "Profile updated!", "please-wait-a-moment-your-login-is-still-being-processed": "Please wait a moment, your login is still being processed",
"read-license": "Read License", "prefix": "Prefix",
"receipt-needed": "Receipt needed", "privacy": "Privacy",
"repo_link": "Link", "privacy-loading": "Privacy loading...",
"request-a-new-reset-mail": "Request a new reset mail", "profile": "Profile",
"reset-my-password": "Reset my password", "profile-deleted": "Profile deleted!",
"reset-password": "Reset your password", "profile-picture": "Profile Picture",
"runner": "Runner", "profile-updated": "Profile updated!",
"runner-added": "Runner added", "read-license": "Read License",
"runner-deleted": "runner deleted", "receipt-needed": "Receipt needed",
"runner-import": "Runner Import", "repo_link": "Link",
"runner-is-being-added": "Runner is being added...", "request-a-new-reset-mail": "Request a new reset mail",
"runner-updated": "Runner updated!", "reset-my-password": "Reset my password",
"runnercards": "Runnercards", "reset-password": "Reset your password",
"runnerimport_verify_runners_org": "Please confirm these runners for import into the organization \"{org_name}\"", "runner": "Runner",
"runners": "Runners", "runner-added": "Runner added",
"runners-are-being-imported": "Runners are being imported...", "runner-deleted": "runner deleted",
"runners-are-being-loaded": "runners are being loaded...", "runner-import": "Runner Import",
"save": "Save", "runner-is-being-added": "Runner is being added...",
"save-changes": "Save Changes", "runner-updated": "Runner updated!",
"scan-added": "Scan added", "runnercards": "Runnercards",
"scan-deleted": "scan deleted", "runnerimport_verify_runners_org": "Please confirm these runners for import into the organization \"{org_name}\"",
"scan-is-being-updated": "Scan is being updated", "runners": "Runners",
"scan-with-fixed-distance": "Scan with fixed distance", "runners-are-being-imported": "Runners are being imported...",
"scans": "Scans", "runners-are-being-loaded": "runners are being loaded...",
"scans-are-being-loaded": "Scans are being loaded", "save": "Save",
"scanstation": "Scanstation", "save-changes": "Save Changes",
"scanstation-added": "Scanstation added", "scan-added": "Scan added",
"scanstation-is-being-added": "Adding scanstation...", "scan-deleted": "scan deleted",
"scanstations": "Scanstations", "scan-is-being-updated": "Scan is being updated",
"scanstations-are-being-loaded": "Loading scanstations...", "scan-with-fixed-distance": "Scan with fixed distance",
"search-for-an-organization-by-name-or-id": "Search for an organization (by name or id)", "scans": "Scans",
"search-for-an-organization-or-team-by-name-or-id": "Search for an organization or team (by name or id)", "scans-are-being-loaded": "Scans are being loaded",
"search-for-donor-name-or-id": "Search for donor (by name or id)", "scanstation": "Scanstation",
"search-for-permission": "Search for permission", "scanstation-added": "Scanstation added",
"search-for-runner-by-name-or-id": "Search for runner (by name or id)", "scanstation-is-being-added": "Adding scanstation...",
"select-all": "select all", "scanstations": "Scanstations",
"select-language": "Select language", "scanstations-are-being-loaded": "Loading scanstations...",
"selfservice-registration": "Selfservice registration", "search-for-an-organization-by-name-or-id": "Search for an organization (by name or id)",
"send-a-mail-to-lfk-odit-services": "send a mail to lfk@odit.services", "search-for-an-organization-or-team-by-name-or-id": "Search for an organization or team (by name or id)",
"set-the-user-active-inactive": "set the user active/ inactive", "search-for-donor-name-or-id": "Search for donor (by name or id)",
"settings": "Settings", "search-for-permission": "Search for permission",
"settings-for-your-profile": "Settings for your profile", "search-for-runner-by-name-or-id": "Search for runner (by name or id)",
"something-about-the-group": "Something about the group...", "select-all": "select all",
"sponsoring-quittungs-liste_herunterladen": "Download donor receipt list", "select-language": "Select language",
"sponsorings": "Sponsorings", "selfservice-registration": "Selfservice registration",
"stats-are-being-loaded": "stats are being loaded...", "send-a-mail-to-lfk-odit-services": "send a mail to lfk@odit.services",
"statsclient-deleted": "Deleted statsclient", "set-the-user-active-inactive": "set the user active/ inactive",
"statsclient-is-being-added": "Statsclient is being added...", "settings": "Settings",
"statsclients": "Statsclients (aka Beamershow)", "settings-for-your-profile": "Settings for your profile",
"statsclients-are-being-loaded": "Loading statsclients", "something-about-the-group": "Something about the group...",
"status": "Status", "sponsoring-quittungs-liste_herunterladen": "Download donor receipt list",
"stuff-that-could-harm-your-profile": "Stuff that could harm your profile", "sponsorings": "Sponsorings",
"successful-password-reset": "Successful password reset!", "station-deleted": "station deleted",
"team": "Team", "stats-are-being-loaded": "stats are being loaded...",
"team-added": "Team added", "statsclient-deleted": "Deleted statsclient",
"team-deleted": "Team deleted", "statsclient-is-being-added": "Statsclient is being added...",
"team-detail-is-being-loaded": "team detail is being loaded...", "statsclients": "Statsclients (aka Beamershow)",
"team-is-being-added": "Team is being added...", "statsclients-are-being-loaded": "Loading statsclients",
"team-name": "Team name", "status": "Status",
"team-name-is-required": "team name is required", "stuff-that-could-harm-your-profile": "Stuff that could harm your profile",
"teams": "Teams", "successful-password-reset": "Successful password reset!",
"teams-are-being-loaded": "teams are being loaded...", "team": "Team",
"the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "the provided phone number is invalid.<br />please enter a valid international number...", "team-added": "Team added",
"the-scans-distance-must-be-greater-than-0m": "The scan's distance must be greater than 0m", "team-deleted": "Team deleted",
"the-scanstations-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again": "The scanstation api token will only get displayed once - you won't be able to change or view it again!", "team-detail-is-being-loaded": "team detail is being loaded...",
"the-statsclient-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again": "The statsclient api token will only get displayed once - you won't be able to change or view it again!", "team-is-being-added": "Team is being added...",
"there-are-no-cards-yet": "There are no cards yet.", "team-name": "Team name",
"there-are-no-contacts-added-yet": "There are no contacts added yet.", "team-name-is-required": "team name is required",
"there-are-no-donations-yet": "There are no donations yet", "teams": "Teams",
"there-are-no-donors-yet": "There are no donors yet", "teams-are-being-loaded": "teams are being loaded...",
"there-are-no-groups-yet": "There are no groups yet", "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number": "the provided phone number is invalid.<br />please enter a valid international number...",
"there-are-no-organizations-added-yet": "There are no organizations added yet.", "the-scans-distance-must-be-greater-than-0m": "The scan's distance must be greater than 0m",
"there-are-no-runners-added-yet": "There are no runners added yet.", "the-scanstations-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again": "The scanstation api token will only get displayed once - you won't be able to change or view it again!",
"there-are-no-scans-yet": "There are no scans yet", "the-statsclient-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again": "The statsclient api token will only get displayed once - you won't be able to change or view it again!",
"there-are-no-teams-added-yet": "There are no teams added yet.", "there-are-no-cards-yet": "There are no cards yet.",
"there-are-no-users-added-yet": "There are no users added yet.", "there-are-no-contacts-added-yet": "There are no contacts added yet.",
"this-card-is": "This card is", "there-are-no-donations-yet": "There are no donations yet",
"this-might-take-a-moment": "This might take a moment 👀", "there-are-no-donors-yet": "There are no donors yet",
"this-scanstation-is": "This scanstation is", "there-are-no-groups-yet": "There are no groups yet",
"token": "Token", "there-are-no-organizations-added-yet": "There are no organizations added yet.",
"total-distance": "total distance", "there-are-no-runners-added-yet": "There are no runners added yet.",
"total-donation-amount": "total donation amount", "there-are-no-scans-yet": "There are no scans yet",
"total-donations": "total donations", "there-are-no-teams-added-yet": "There are no teams added yet.",
"total-paid-amount": "Total paid amount", "there-are-no-users-added-yet": "There are no users added yet.",
"total-scans": "total scans", "this-card-is": "This card is",
"total_donation_amount_in_eur": "Total donation amount in €", "this-might-take-a-moment": "This might take a moment 👀",
"track": "Track", "this-scanstation-is": "This scanstation is",
"track-added": "Track added", "timestamp": "timestamp",
"track-data-is-being-loaded": "Track data is being loaded", "token": "Token",
"track-is-being-added": "Track is being added...", "total-distance": "total distance",
"track-is-being-updated": "Track is being updated...", "total-donation-amount": "total donation amount",
"track-length-in-m": "Track Length in m", "total-donation-count": "total donations (count)",
"track-length-must-be-greater-than-0": "Track length must be greater than 0", "total-donations": "total donations",
"track-name": "Track name", "total-donors": "total donors",
"track-name-must-not-be-empty": "Track name must not be empty", "total-paid-amount": "Total paid amount",
"track-was-updated": "Track was updated!", "total-scans": "total scans",
"tracks": "Tracks", "total_donation_amount_in_eur": "Total donation amount in €",
"unpaid": "Unpaid", "track": "Track",
"update-card": "Update Card", "track-added": "Track added",
"update-password": "Update password", "track-data-is-being-loaded": "Track data is being loaded",
"updated-contact": "Updated contact!", "track-is-being-added": "Track is being added...",
"updated-donor": "updated donor", "track-is-being-updated": "Track is being updated...",
"updated-organization": "updated organization", "track-length-in-m": "Track Length in m",
"updated-scan": "updated scan", "track-length-must-be-greater-than-0": "Track length must be greater than 0",
"updated-team": "Updated team", "track-name": "Track name",
"updateing-group": "updateing group...", "track-name-must-not-be-empty": "Track name must not be empty",
"updating-card": "Updating card", "track-was-updated": "Track was updated!",
"updating-donation": "Updating donation", "tracks": "Tracks",
"updating-organization": "updating organization", "unpaid": "Unpaid",
"updating-permissions": "updating permissions...", "update-card": "Update Card",
"updating-runner": "Updating runner...", "update-password": "Update password",
"updating-team": "Updating team", "updated-contact": "Updated contact!",
"updating-user": "updating user...", "updated-donor": "updated donor",
"updating-your-profile": "Updating your profile...", "updated-organization": "updated organization",
"user-added": "User added", "updated-scan": "updated scan",
"user-groups": "User Groups", "updated-team": "Updated team",
"user-is-being-added": "User is being added...", "updateing-group": "updateing group...",
"user-updated": "User updated", "updating-card": "Updating card",
"username": "Username", "updating-donation": "Updating donation",
"users": "Users", "updating-organization": "updating organization",
"valid": "Valid", "updating-permissions": "updating permissions...",
"valid-city-is-required": "Valid city is required", "updating-runner": "Updating runner...",
"valid-email-is-required": "valid email is required", "updating-team": "Updating team",
"valid-international-phone-number-is-required": "valid international phone number is required...", "updating-user": "updating user...",
"valid-zipcode-postal-code-is-required": "Valid zipcode/ postal code is required", "updating-your-profile": "Updating your profile...",
"verfuegbare": "availdable", "user-added": "User added",
"welcome_wavinghand": "Welcome 👋", "user-groups": "User Groups",
"yes-i-copied-the-token": "Yes, I copied the token", "user-is-being-added": "User is being added...",
"you-are-going-to-loose-all-permissions-and-access-to-the-runner-system": "You are going to loose all permissions and access to the runner system!", "user-updated": "User updated",
"you-can-enter-the-donations-paid-amount-manually-or-use-the-max-button-to-use-the-donations-exact-amount": "You can enter the donation's paid amount manually or use the MAX button to use the donation's exact amount.", "username": "Username",
"you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! 🎉", "users": "Users",
"you-can-provide-a-runner-but-you-dont-have-to": "You can provide a runner, but you don't have to.", "valid": "Valid",
"you-dont-have-any-scanclients-yet": "You don't have any statsclients yet", "valid-city-is-required": "Valid city is required",
"you-dont-have-any-scanstations-yet": "You don't have any scanstations yet", "valid-email-is-required": "valid email is required",
"you-have-to-provide-an-organization": "You have to provide an organization", "valid-international-phone-number-is-required": "valid international phone number is required...",
"you-have-to-save-your-changes-to-generate-a-link": "You have to save your changes to generate a link.", "valid-zipcode-postal-code-is-required": "Valid zipcode/ postal code is required",
"you-must-create-at-least-one-card-or-cancel": "You must create at least one card (or cancel).", "verfuegbare": "availdable",
"zip-postal-code": "ZIP/ postal code", "welcome_wavinghand": "Welcome 👋",
"all-associated-scans-will-get-deleted-as-well": "All associated scans will get deleted as well", "yes-i-copied-the-token": "Yes, I copied the token",
"confirm-delete-station-with-all-scans": "Confirm deletion of station with all scans", "you-are-going-to-loose-all-permissions-and-access-to-the-runner-system": "You are going to loose all permissions and access to the runner system!",
"cancel-keep-station": "Cancel, keep station", "you-can-enter-the-donations-paid-amount-manually-or-use-the-max-button-to-use-the-donations-exact-amount": "You can enter the donation's paid amount manually or use the MAX button to use the donation's exact amount.",
"station-deleted": "station deleted" "you-can-now-use-your-new-password-to-log-in-to-your-account": "You can now use your new password to log in to your account! 🎉",
"you-can-provide-a-runner-but-you-dont-have-to": "You can provide a runner, but you don't have to.",
"you-dont-have-any-scanclients-yet": "You don't have any statsclients yet",
"you-dont-have-any-scanstations-yet": "You don't have any scanstations yet",
"you-have-to-provide-an-organization": "You have to provide an organization",
"you-have-to-save-your-changes-to-generate-a-link": "You have to save your changes to generate a link.",
"you-must-create-at-least-one-card-or-cancel": "You must create at least one card (or cancel).",
"zip-postal-code": "ZIP/ postal code"
} }