Compare commits

...

42 Commits

Author SHA1 Message Date
983ce56048 Merge branch 'dev' into feature/94-runnercard_mgnt
# Conflicts:
#	src/locales/de.json
#	src/locales/en.json
2021-03-25 18:38:31 +01:00
de2fe0e9f1 Sorted translations
ref #94
2021-03-25 18:36:51 +01:00
c3c95bf291 🚀RELEASE v0.8.6
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-25 18:32:22 +01:00
d2050b5948 Merge pull request 'Know Production Bugs 🐞' (#109) from bugfix/107-prod_issues into dev
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #109
2021-03-25 17:30:27 +00:00
6b92405bae Removed middlename search from all files that had it
ref #107
2021-03-25 18:19:44 +01:00
49e87ccb15 Now disabled search by middlename as a quick workaround 🐞
ref #107
2021-03-25 18:16:12 +01:00
50fffef13b Fixed conflicting css
ref #107
2021-03-25 18:06:28 +01:00
82b1811971 Sorted translations 👀
ref #107
2021-03-25 18:00:11 +01:00
aeadef60bb Fixed missing translations for scanstations🌍
ref #107
2021-03-25 17:59:50 +01:00
a1ab65a0e9 Sorted translations🌍
ref #107
2021-03-25 17:49:13 +01:00
17e0805fe6 Errors now toast errors
ref #107
2021-03-25 17:48:54 +01:00
ddd9c396b6 Fixed runner import getting triggered with invalid information
ref #107
2021-03-25 17:46:14 +01:00
ef49e507c1 Fixed outsideclick not clearing import modal🛠
ref #107
2021-03-25 17:34:25 +01:00
fbe74a5d80 Commented out the buggy runner search to prevent bad UX
ref #107
2021-03-25 17:31:53 +01:00
076893981f Fixed mail login bug🐞📧
ref #107
2021-03-25 17:27:38 +01:00
fac059f02c Now w/working editing
ref #94
2021-03-24 16:58:06 +01:00
0313f8cc49 Added runnercard detail/edit modal
ref #94
2021-03-24 16:43:05 +01:00
7ad6b73574 Implemented bulk creation
ref #94
2021-03-23 19:55:55 +01:00
3cd0468b19 Bumped lfk client lib version
ref #94
2021-03-23 18:57:13 +01:00
f46ccb610e Added bulk creation modal to cards view
ref #94
2021-03-23 18:41:00 +01:00
8a32569a3b Added bulk card creation modal
ref #94
2021-03-23 18:35:21 +01:00
535b23ae91 Implemented Add card modal
ref #94
2021-03-23 17:58:13 +01:00
4715978f81 Added message for missing runner/blanco card)
ref #94
2021-03-23 17:39:14 +01:00
a516aa7775 Formatting
ref #94
2021-03-23 17:34:25 +01:00
77e9c205f9 Now importing runner overview
ref #94
2021-03-23 17:34:01 +01:00
e852305400 Now routing the cards page
ref #94
2021-03-23 17:31:11 +01:00
c6a15264b3 Added basic card overview
ref #94
2021-03-23 17:29:21 +01:00
2d0beaaaad Added CardsEmptyState + Emtystate graphic
ref #94
2021-03-23 17:19:10 +01:00
5c5ef95d2b Added basic cards page
ref #94
2021-03-23 17:13:31 +01:00
e838e6f321 🚀RELEASE v0.8.5
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-20 18:47:28 +01:00
ca983c72d4 Merge branch 'dev' of git.odit.services:lfk/frontend into dev 2021-03-20 18:47:08 +01:00
91dd5256e9 Fixed dupliacate mutation 🐞 2021-03-20 18:47:06 +01:00
3d4dc2d72b 🚀RELEASE v0.8.4
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-20 18:31:46 +01:00
ba3471068a CONFIG: add 'demo' as default username/password 2021-03-20 18:31:31 +01:00
5a7b2cf886 Merge branch 'dev' of https://git.odit.services/lfk/frontend into dev 2021-03-20 18:27:18 +01:00
cc926e84fb CONFIG: default_username + default_password 2021-03-20 18:27:15 +01:00
fff16e6650 🚀RELEASE v0.8.3
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-20 17:51:24 +01:00
d6f6d10cb6 Sorted translation 🌍 2021-03-20 17:50:56 +01:00
1249904582 More small fixes 2021-03-20 17:50:38 +01:00
8e0437728b Smaller bugfixes 2021-03-20 17:41:44 +01:00
fb0c0718e4 🚀RELEASE v0.8.2
All checks were successful
continuous-integration/drone/push Build is passing
2021-03-20 17:29:35 +01:00
aa8196db3a Now using env base url
Some checks failed
continuous-integration/drone/push Build is failing
2021-03-20 17:29:15 +01:00
37 changed files with 1736 additions and 843 deletions

View File

@@ -2,9 +2,58 @@
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.
#### [0.8.6](https://git.odit.services/lfk/frontend/compare/0.8.5...0.8.6)
- Merge pull request 'Know Production Bugs 🐞' (#109) from bugfix/107-prod_issues into dev [`d2050b5`](https://git.odit.services/lfk/frontend/commit/d2050b5948890a6077cbb41d82d1a6a1d1106652)
- Errors now toast errors❌ [`17e0805`](https://git.odit.services/lfk/frontend/commit/17e0805fe64f6d181f55b81afa502ee6443ebabe)
- Sorted translations 👀 [`82b1811`](https://git.odit.services/lfk/frontend/commit/82b1811971b974b686e7618b8a381e1589c168f6)
- Fixed missing translations for scanstations🌍 [`aeadef6`](https://git.odit.services/lfk/frontend/commit/aeadef60bbe71da09bb569d20ca7377645beba7f)
- Sorted translations🌍 [`a1ab65a`](https://git.odit.services/lfk/frontend/commit/a1ab65a0e975c02c01c603bf6d95a79ada1caa0b)
- Fixed runner import getting triggered with invalid information [`ddd9c39`](https://git.odit.services/lfk/frontend/commit/ddd9c396b6bfd39a7b1627d4975151943b367ebf)
- Removed middlename search from all files that had it [`6b92405`](https://git.odit.services/lfk/frontend/commit/6b92405bae21e78d694601cbc0b33eed56ef4533)
- Fixed mail login bug🐞📧 [`0768939`](https://git.odit.services/lfk/frontend/commit/076893981ff4f7f17330746c561acc570339adac)
- Now disabled search by middlename as a quick workaround 🐞 [`49e87cc`](https://git.odit.services/lfk/frontend/commit/49e87ccb15a7ed5edea22a3c3e235f7bee07d3f4)
- Fixed conflicting css [`50fffef`](https://git.odit.services/lfk/frontend/commit/50fffef13b8fce885964d8ac277b4ca24d944b2b)
- Commented out the buggy runner search to prevent bad UX [`fbe74a5`](https://git.odit.services/lfk/frontend/commit/fbe74a5d8090553a35576a17c97019939cf4f386)
- Fixed outsideclick not clearing import modal🛠 [`ef49e50`](https://git.odit.services/lfk/frontend/commit/ef49e507c175510eeb466d33f222755fac8a2a0b)
#### [0.8.5](https://git.odit.services/lfk/frontend/compare/0.8.4...0.8.5)
> 20 March 2021
- 🚀RELEASE v0.8.5 [`e838e6f`](https://git.odit.services/lfk/frontend/commit/e838e6f321bef1565a7e4316890a3c600b242e5a)
- Fixed dupliacate mutation 🐞 [`91dd525`](https://git.odit.services/lfk/frontend/commit/91dd5256e9545f62e4342ae5477c36262d6e3401)
#### [0.8.4](https://git.odit.services/lfk/frontend/compare/0.8.3...0.8.4)
> 20 March 2021
- CONFIG: default_username + default_password [`cc926e8`](https://git.odit.services/lfk/frontend/commit/cc926e84fb8bd9d6c9fd37349e25eb802e1bb324)
- 🚀RELEASE v0.8.4 [`3d4dc2d`](https://git.odit.services/lfk/frontend/commit/3d4dc2d72b129f0134ae9f230810c3301dbd5caa)
- CONFIG: add 'demo' as default username/password [`ba34710`](https://git.odit.services/lfk/frontend/commit/ba3471068ab00e2d5dbe21d6d763094e662f8347)
#### [0.8.3](https://git.odit.services/lfk/frontend/compare/0.8.2...0.8.3)
> 20 March 2021
- Sorted translation 🌍 [`d6f6d10`](https://git.odit.services/lfk/frontend/commit/d6f6d10cb6b639a1f988e0da4811355750b0f027)
- Smaller bugfixes [`8e04377`](https://git.odit.services/lfk/frontend/commit/8e0437728bd04223a23cdf1879c6c739ca8ebef7)
- More small fixes [`1249904`](https://git.odit.services/lfk/frontend/commit/12499045824c13a3ee35c6cc8c3c3a3130dbec12)
- 🚀RELEASE v0.8.3 [`fff16e6`](https://git.odit.services/lfk/frontend/commit/fff16e6650cce1231a8d0db43531bf8e3e01f84a)
#### [0.8.2](https://git.odit.services/lfk/frontend/compare/0.8.1...0.8.2)
> 20 March 2021
- Now using env base url [`aa8196d`](https://git.odit.services/lfk/frontend/commit/aa8196db3a9ff1bcd2b5f0ce655957bfa4e310ab)
- 🚀RELEASE v0.8.2 [`fb0c071`](https://git.odit.services/lfk/frontend/commit/fb0c0718e405312f239bc3829b3d9c203d246458)
#### [0.8.1](https://git.odit.services/lfk/frontend/compare/0.8.0...0.8.1) #### [0.8.1](https://git.odit.services/lfk/frontend/compare/0.8.0...0.8.1)
> 20 March 2021
- ⚡ CI - add build:tags pipeline [`910a086`](https://git.odit.services/lfk/frontend/commit/910a0860a0bd240c5ff9d23dc33923f941b1e10b) - ⚡ CI - add build:tags pipeline [`910a086`](https://git.odit.services/lfk/frontend/commit/910a0860a0bd240c5ff9d23dc33923f941b1e10b)
- 🚀RELEASE v0.8.1 [`b2223b5`](https://git.odit.services/lfk/frontend/commit/b2223b5110cc31740e69de66c74ab3f83a046308)
#### [0.8.0](https://git.odit.services/lfk/frontend/compare/0.7.0...0.8.0) #### [0.8.0](https://git.odit.services/lfk/frontend/compare/0.7.0...0.8.0)

View File

@@ -1,7 +0,0 @@
const config = {
baseurl: 'https://dev.lauf-fuer-kaya.de',
documentserver_key: 'NqZSYTy5AFQ7MppbLW5moqpTk7u7YrNUHKYhKYuThnnya2WpCOIU694hIZT1FzYe',
fallback_username: 'admin',
fallback_password: '72fpTzsev4xUu78QPs2FCbwZ3',
prefersHashRouting: true
};

View File

@@ -14,7 +14,7 @@
</head> </head>
<body> <body>
<span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-0.8.1-RELEASE_INFO</span> <span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-0.8.6-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 defer type="module" src="/_dist_/index.js"></script> <script defer type="module" src="/_dist_/index.js"></script>

View File

@@ -1,6 +1,6 @@
{ {
"name": "@odit/lfk-frontend", "name": "@odit/lfk-frontend",
"version": "0.8.1", "version": "0.8.6",
"scripts": { "scripts": {
"i18n-order": "node order.js", "i18n-order": "node order.js",
"dev:all": "yarn prebuild && snowpack dev", "dev:all": "yarn prebuild && snowpack dev",
@@ -13,7 +13,7 @@
}, },
"license": "CC-BY-NC-SA-4.0", "license": "CC-BY-NC-SA-4.0",
"dependencies": { "dependencies": {
"@odit/lfk-client-js": "0.6.4", "@odit/lfk-client-js": "0.7.0",
"csvtojson": "^2.0.10", "csvtojson": "^2.0.10",
"gridjs": "3.3.0", "gridjs": "3.3.0",
"localforage": "1.9.0", "localforage": "1.9.0",

View File

@@ -1,6 +1,8 @@
const config = { const config = {
baseurl: 'http://localhost:4010', baseurl: 'http://localhost:4010',
documentserver_key: 'NqZSYTy5AFQ7MppbLW5moqpTk7u7YrNUHKYhKYuThnnya2WpCOIU694hIZT1FzYe' documentserver_key: 'NqZSYTy5AFQ7MppbLW5moqpTk7u7YrNUHKYhKYuThnnya2WpCOIU694hIZT1FzYe',
// optional // optional
default_username: 'demo',
default_password: 'demo',
prefersHashRouting: true prefersHashRouting: true
}; };

View File

@@ -1 +0,0 @@
Nostrud tempor dolor aute ea excepteur aute mollit elit eiusmod exercitation. Magna laborum pariatur adipisicing pariatur cupidatat exercitation duis aliquip pariatur sint exercitation deserunt labore. Consectetur id laboris dolore nostrud do velit ipsum. Eu laboris velit do commodo ad ea sint ex cillum. Cillum ipsum qui eiusmod laborum mollit sunt dolore incididunt. Cillum sunt culpa veniam voluptate et qui ut magna anim occaecat ut mollit dolor. Duis irure proident eu incididunt dolore sunt nisi aute dolore amet eu fugiat laboris quis.

View File

@@ -69,11 +69,11 @@
import Donations from "./components/donations/Donations.svelte"; import Donations from "./components/donations/Donations.svelte";
import DonationDetail from "./components/donations/DonationDetail.svelte"; import DonationDetail from "./components/donations/DonationDetail.svelte";
import GroupDetail from "./components/groups/GroupDetail.svelte"; import GroupDetail from "./components/groups/GroupDetail.svelte";
import ScanStationsOverview from "./components/scanstations/ScanStationsOverview.svelte";
import ScanStations from "./components/scanstations/ScanStations.svelte"; import ScanStations from "./components/scanstations/ScanStations.svelte";
import ScanStationDetail from "./components/scanstations/ScanStationDetail.svelte"; import ScanStationDetail from "./components/scanstations/ScanStationDetail.svelte";
import Scans from "./components/scans/Scans.svelte"; import Scans from "./components/scans/Scans.svelte";
import ScanDetail from "./components/scans/ScanDetail.svelte"; import ScanDetail from "./components/scans/ScanDetail.svelte";
import Cards from "./components/cards/Cards.svelte";
store.init(); store.init();
registerSW(); registerSW();
</script> </script>
@@ -185,6 +185,14 @@ import ScanDetail from "./components/scans/ScanDetail.svelte";
<DonationDetail {params} /> <DonationDetail {params} />
</Route> </Route>
</Route> </Route>
<Route path="/cards/*">
<Route path="/">
<Cards />
</Route>
<!-- <Route path="/:scanid" let:params>
<ScanDetail {params} />
</Route> -->
</Route>
<Route path="/scans/*"> <Route path="/scans/*">
<Route path="/"> <Route path="/">
<Scans /> <Scans />

View File

@@ -9,7 +9,7 @@
let usersEmail = ""; let usersEmail = "";
function reset() { function reset() {
if (isEmail(usersEmail)) { if (isEmail(usersEmail)) {
AuthService.authControllerGetResetToken({ email: usersEmail }) AuthService.authControllerGetResetToken("de", { email: usersEmail })
.then((resp) => { .then((resp) => {
Toastify({ Toastify({
text: $_("mail-validation-in-progress"), text: $_("mail-validation-in-progress"),

View File

@@ -5,10 +5,11 @@
store.init(); store.init();
import { OpenAPI, AuthService } from "@odit/lfk-client-js"; import { OpenAPI, AuthService } from "@odit/lfk-client-js";
import Footer from "../general/Footer.svelte"; import Footer from "../general/Footer.svelte";
import isEmail from "validator/es/lib/isEmail";
import Toastify from "toastify-js"; import Toastify from "toastify-js";
// ------ // ------
let username = "demo"; let username = config.default_username || "";
let password = "demo"; let password = config.default_password || "";
let is_blocked_by_autologin = false; let is_blocked_by_autologin = false;
let last_loginclick_processed = true; let last_loginclick_processed = true;
@@ -36,10 +37,19 @@
text: $_("login_is_checked"), text: $_("login_is_checked"),
duration: 500, duration: 500,
}).showToast(); }).showToast();
AuthService.authControllerLogin({ let postdata = {};
username, if (isEmail(username)) {
password, postdata = {
}) email: username,
password,
};
} else {
postdata = {
username,
password,
};
}
AuthService.authControllerLogin(postdata)
.then(async (result) => { .then(async (result) => {
await localForage.setItem("logindata", result); await localForage.setItem("logindata", result);
OpenAPI.TOKEN = result.access_token; OpenAPI.TOKEN = result.access_token;

View File

@@ -0,0 +1,158 @@
<script>
import { _ } from "svelte-i18n";
import { clickOutside } from "../base/outsideclick";
import { focusTrap } from "svelte-focus-trap";
import { RunnerCardService } from "@odit/lfk-client-js";
import Toastify from "toastify-js";
export let bulk_modal_open;
export let current_cards;
function focus(el) {
el.focus();
}
$: card_count = 0;
$: is_card_count_valid = card_count > 0;
$: processed_last_submit = true;
$: createbtnenabled = is_card_count_valid;
(() => {
document.onkeydown = (e) => {
e = e || window.event;
if (e.key === "Escape") {
bulk_modal_open = false;
}
if (e.keyCode === 13) {
if (createbtnenabled === true) {
createbtnenabled = false;
submit();
}
}
};
})();
function submit() {
if (processed_last_submit === true) {
processed_last_submit = false;
const toast = Toastify({
text: $_("creating-blanco-cards"),
duration: -1,
}).showToast();
RunnerCardService.runnerCardControllerPostBlancoBulk(card_count)
.then((result) => {
bulk_modal_open = false;
//
Toastify({
text: $_("created-blanco-cards"),
duration: 500,
backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)",
}).showToast();
})
.catch((err) => {
//
})
.finally(() => {
processed_last_submit = true;
//
toast.hideToast();
});
}
}
</script>
{#if bulk_modal_open}
<div
class="fixed z-10 inset-0 overflow-y-auto"
use:focusTrap
use:clickOutside
on:click_outside={() => {
bulk_modal_open = false;
}}>
<div
class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0">
<div class="fixed inset-0 transition-opacity" aria-hidden="true">
<div
class="absolute inset-0 bg-gray-500 opacity-75"
data-id="modal_backdrop" />
</div>
<span
class="hidden sm:inline-block sm:align-middle sm:h-screen"
aria-hidden="true">&#8203;</span>
<div
class="inline-block align-bottom bg-white rounded-lg text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full"
role="dialog"
aria-modal="true"
aria-labelledby="modal-headline">
<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4">
<div class="sm:flex sm:items-start">
<div
class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10">
<svg
class="h-6 w-6 text-blue-600"
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
fill="currentColor"
d="M2 4h2v16H2V4zm4 0h1v16H6V4zm2 0h2v16H8V4zm3 0h2v16h-2V4zm3 0h2v16h-2V4zm3 0h1v16h-1V4zm2 0h3v16h-3V4z" /></svg>
</div>
<div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
<h3 class="text-lg leading-6 font-medium text-gray-900">
{$_('create-bulk-blanco-cards')}
</h3>
<div class="mt-2 mb-6">
<p class="text-sm text-gray-500">
{$_('just-enter-how-many-you-want-and-the-system-will-create-them')}
</p>
</div>
<div class="grid grid-cols-6 gap-6">
<div class="col-span-6">
<label
for="amount"
class="block text-sm font-medium text-gray-700">{$_('amount')}</label>
<div class="mt-1 flex rounded-md shadow-sm">
<input
autocomplete="off"
class:border-red-500={!is_card_count_valid}
class:focus:border-red-500={!is_card_count_valid}
class:focus:ring-red-500={!is_card_count_valid}
bind:value={card_count}
type="number"
step="1"
name="amount"
class="focus:ring-indigo-500 focus:border-indigo-500 flex-1 block w-full rounded-none rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 p-2"
placeholder="400" />
<span
class="inline-flex items-center px-3 rounded-r-md border border-gray-300 bg-gray-50 text-gray-500 text-sm">{$_('cards')}</span>
</div>
{#if !is_card_count_valid}
<span
class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1">
{$_('you-must-create-at-least-one-card-or-cancel')}
</span>
{/if}
</div>
</div>
</div>
</div>
</div>
<div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse">
<button
disabled={!createbtnenabled}
class:opacity-50={!createbtnenabled}
on:click={submit}
type="button"
class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm">
{$_('create')}
</button>
<button
on:click={() => {
bulk_modal_open = false;
}}
type="button"
class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm">
{$_('cancel')}
</button>
</div>
</div>
</div>
</div>
{/if}

View File

@@ -0,0 +1,170 @@
<script>
import { _ } from "svelte-i18n";
import { clickOutside } from "../base/outsideclick";
import { focusTrap } from "svelte-focus-trap";
import {
RunnerCardService,
RunnerService,
ScanService,
} from "@odit/lfk-client-js";
import Select from "svelte-select";
import Toastify from "toastify-js";
export let modal_open;
export let current_cards;
const getRunnerLabel = (option) =>
option.firstname + " " + (option.middlename || "") + " " + option.lastname;
const filterRunners = (label, filterText, option) =>
label.toLowerCase().includes(filterText.toLowerCase()) ||
option.value.toString().startsWith(filterText.toLowerCase());
function focus(el) {
el.focus();
}
$: runner = 0;
$: runners = [];
$: enabled = true;
$: processed_last_submit = true;
RunnerService.runnerControllerGetAll().then((val) => {
runners = val.map((r) => {
return { label: getRunnerLabel(r), value: r };
});
});
$: createbtnenabled = true;
(() => {
document.onkeydown = (e) => {
e = e || window.event;
if (e.key === "Escape") {
modal_open = false;
}
if (e.keyCode === 13) {
if (createbtnenabled === true) {
createbtnenabled = false;
submit();
}
}
};
})();
function submit() {
if (processed_last_submit === true) {
processed_last_submit = false;
const toast = Toastify({
text: $_("adding-card"),
duration: -1,
}).showToast();
let postdata = {
runner,
enabled,
};
RunnerCardService.runnerCardControllerPost(postdata)
.then((result) => {
runner = 0;
modal_open = false;
//
Toastify({
text: $_("card-added"),
duration: 500,
backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)",
}).showToast();
current_cards.push(result);
current_cards = current_cards;
})
.catch((err) => {
//
})
.finally(() => {
processed_last_submit = true;
//
toast.hideToast();
});
}
}
</script>
{#if modal_open}
<div
class="fixed z-10 inset-0 overflow-y-auto"
use:focusTrap
use:clickOutside
on:click_outside={() => {
modal_open = false;
}}>
<div
class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0">
<div class="fixed inset-0 transition-opacity" aria-hidden="true">
<div
class="absolute inset-0 bg-gray-500 opacity-75"
data-id="modal_backdrop" />
</div>
<span
class="hidden sm:inline-block sm:align-middle sm:h-screen"
aria-hidden="true">&#8203;</span>
<div
class="inline-block align-bottom bg-white rounded-lg text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full"
role="dialog"
aria-modal="true"
aria-labelledby="modal-headline">
<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4">
<div class="sm:flex sm:items-start">
<div
class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10">
<svg
class="h-6 w-6 text-blue-600"
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
fill="currentColor"
d="M2 4h2v16H2V4zm4 0h1v16H6V4zm2 0h2v16H8V4zm3 0h2v16h-2V4zm3 0h2v16h-2V4zm3 0h1v16h-1V4zm2 0h3v16h-3V4z" /></svg>
</div>
<div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
<h3 class="text-lg leading-6 font-medium text-gray-900">
{$_('create-a-new-card')}
</h3>
<div class="mt-2 mb-6">
<p class="text-sm text-gray-500">
{$_('you-can-provide-a-runner-but-you-dont-have-to')}
{$_('if-you-want-to-create-multiple-blanco-cards-try-the-add-bulk-button')}
</p>
</div>
<div class="grid grid-cols-6 gap-6">
<div class="col-span-6">
<label
for="donor"
class="block text-sm font-medium text-gray-700">{$_('runner')}</label>
<Select
containerClasses="rounded-l-md mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
itemFilter={(label, filterText, option) => filterRunners(label, filterText, option)}
items={runners}
showChevron={true}
placeholder={$_('search-for-runner-by-name-or-id')}
noOptionsMessage={$_('no-runners-found')}
on:select={(selectedValue) => (runner = selectedValue.detail.value.id)}
on:clear={() => (runner = null)} />
</div>
</div>
</div>
</div>
</div>
<div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse">
<button
disabled={!createbtnenabled}
class:opacity-50={!createbtnenabled}
on:click={submit}
type="button"
class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm">
{$_('create')}
</button>
<button
on:click={() => {
modal_open = false;
}}
type="button"
class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm">
{$_('cancel')}
</button>
</div>
</div>
</div>
</div>
{/if}

View File

@@ -0,0 +1,197 @@
<script>
import { _ } from "svelte-i18n";
import { clickOutside } from "../base/outsideclick";
import { focusTrap } from "svelte-focus-trap";
import { RunnerCardService, RunnerService } from "@odit/lfk-client-js";
import Select from "svelte-select";
import Toastify from "toastify-js";
export let edit_modal_open;
export let current_cards;
export let edit_card_id;
const getRunnerLabel = (option) =>
option.firstname + " " + (option.middlename || "") + " " + option.lastname;
const filterRunners = (label, filterText, option) =>
label.toLowerCase().includes(filterText.toLowerCase()) ||
option.value.toString().startsWith(filterText.toLowerCase());
function focus(el) {
el.focus();
}
$: runner = {};
$: runners = [];
$: editable = {};
$: original_data = {};
$: enabled = true;
$: processed_last_submit = true;
RunnerService.runnerControllerGetAll().then((val) => {
runners = val.map((r) => {
return { label: getRunnerLabel(r), value: r };
});
});
RunnerCardService.runnerCardControllerGetOne(edit_card_id).then((val) => {
runner = Object.assign(
{ runner },
{ label: getRunnerLabel(val.runner), value: val.runner }
);
val.runner = val.runner?.id;
editable = Object.assign(editable, val);
original_data = Object.assign(original_data, val);
});
$: createbtnenabled = !(
JSON.stringify(editable) === JSON.stringify(original_data)
);
(() => {
document.onkeydown = (e) => {
e = e || window.event;
if (e.key === "Escape") {
edit_modal_open = false;
}
if (e.keyCode === 13) {
if (createbtnenabled === true) {
createbtnenabled = false;
submit();
}
}
};
})();
function submit() {
if (processed_last_submit === true) {
processed_last_submit = false;
const toast = Toastify({
text: $_("updating-card"),
duration: -1,
}).showToast();
RunnerCardService.runnerCardControllerPut(original_data.id, editable)
.then((result) => {
runner = {};
editable = {};
original_data = {};
edit_modal_open = false;
//
Toastify({
text: $_("card-updated"),
duration: 500,
backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)",
}).showToast();
current_cards[
current_cards.findIndex((c) => c.id === edit_card_id)
] = result;
current_cards = current_cards;
})
.catch((err) => {
//
})
.finally(() => {
processed_last_submit = true;
//
toast.hideToast();
});
}
}
</script>
{#if edit_modal_open}
<div
class="fixed z-10 inset-0 overflow-y-auto"
use:focusTrap
use:clickOutside
on:click_outside={() => {
edit_modal_open = false;
}}>
<div
class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0">
<div class="fixed inset-0 transition-opacity" aria-hidden="true">
<div
class="absolute inset-0 bg-gray-500 opacity-75"
data-id="modal_backdrop" />
</div>
<span
class="hidden sm:inline-block sm:align-middle sm:h-screen"
aria-hidden="true">&#8203;</span>
<div
class="inline-block align-bottom bg-white rounded-lg text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full"
role="dialog"
aria-modal="true"
aria-labelledby="modal-headline">
<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4">
<div class="sm:flex sm:items-start">
<div
class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10">
<svg
class="h-6 w-6 text-blue-600"
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
fill="currentColor"
d="M2 4h2v16H2V4zm4 0h1v16H6V4zm2 0h2v16H8V4zm3 0h2v16h-2V4zm3 0h2v16h-2V4zm3 0h1v16h-1V4zm2 0h3v16h-3V4z" /></svg>
</div>
<div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
<h3 class="text-lg leading-6 font-medium text-gray-900">
{$_('edit-a-card')}
</h3>
<div class="mt-2 mb-6">
<p class="text-sm text-gray-500">
{$_('you-can-provide-a-runner-but-you-dont-have-to')}
</p>
</div>
<div class="grid grid-cols-6 gap-6">
<div class="col-span-6">
<label
for="runner"
class="block text-sm font-medium text-gray-700">{$_('runner')}</label>
<Select
containerClasses="rounded-l-md mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
itemFilter={(label, filterText, option) => filterRunners(label, filterText, option)}
items={runners}
showChevron={true}
placeholder={$_('search-for-runner-by-name-or-id')}
noOptionsMessage={$_('no-runners-found')}
bind:selectedValue={runner}
on:select={(selectedValue) => (editable.runner = selectedValue.detail.value.id)}
on:clear={() => (editable.runner = null)} />
</div>
<div class="col-span-6">
<p class="text-gray-500">
<input
id="enabled"
on:change={() => {
editable.enabled = !editable.enabled;
}}
name="enabled"
type="checkbox"
checked={editable.enabled}
class="focus:ring-indigo-500 h-4 w-4 text-indigo-600 border-gray-300 rounded" />
{$_('this-card-is')}
{#if editable.enabled}
{$_('enabled')}
{:else}{$_('disabled')}{/if}
</p>
</div>
</div>
</div>
</div>
</div>
<div class="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse">
<button
disabled={!createbtnenabled}
class:opacity-50={!createbtnenabled}
on:click={submit}
type="button"
class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm">
{$_('save-changes')}
</button>
<button
on:click={() => {
edit_modal_open = false;
}}
type="button"
class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm">
{$_('cancel')}
</button>
</div>
</div>
</div>
</div>
{/if}

View File

@@ -0,0 +1,46 @@
<script>
import { _ } from "svelte-i18n";
import store from "../../store";
import AddCardBulkModal from "./AddCardBulkModal.svelte";
import AddCardModal from "./AddCardModal.svelte";
import CardDetailModal from "./CardDetailModal.svelte";
import CardsOverview from "./CardsOverview.svelte";
$: current_cards = [];
export let modal_open = false;
export let bulk_modal_open = false;
export let edit_modal_open = true;
export let edit_card_id = 1;
</script>
<section class="container p-5">
<span class="mb-1 text-3xl font-extrabold leading-tight">
{$_('cards')}
{#if store.state.jwtinfo.userdetails.permissions.includes('CARD:CREATE')}
<button
on:click={() => {
modal_open = true;
}}
type="button"
class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm">
{$_('add-card')}
</button>
<button
on:click={() => {
bulk_modal_open = true;
}}
type="button"
class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm">
{$_('create-bulk-cards')}
</button>
{/if}
</span>
<CardsOverview bind:current_cards />
</section>
{#if store.state.jwtinfo.userdetails.permissions.includes('CARD:CREATE')}
<AddCardModal bind:current_cards bind:modal_open />
<AddCardBulkModal bind:current_cards bind:bulk_modal_open />
{/if}
{#if store.state.jwtinfo.userdetails.permissions.includes('CARD:UPDATE')}
<CardDetailModal bind:current_cards bind:edit_modal_open bind:edit_card_id/>
{/if}

View File

@@ -0,0 +1,12 @@
<script>
import { _ } from "svelte-i18n";
import cards_empty from "./cards.svg";
</script>
<div class="text-center items-center justify-center">
<p class="mb-16 text-lg text-gray-500">
<img class="m-auto" style="height:15rem" src={cards_empty} alt="" />
<span class="font-bold">{$_('there-are-no-cards-yet')}</span><br />
<span>{$_('add-your-first-card')}</span>
</p>
</div>

View File

@@ -0,0 +1,171 @@
<script>
import { getLocaleFromNavigator, _ } from "svelte-i18n";
import { RunnerCardService } from "@odit/lfk-client-js";
import store from "../../store";
import Toastify from "toastify-js";
import CardsEmptyState from "./CardsEmptyState.svelte";
$: searchvalue = "";
$: active_deletes = [];
export let current_cards = [];
const cards_promise = RunnerCardService.runnerCardControllerGetAll().then(
(val) => {
current_cards = val;
}
);
function should_display_based_on_id(id) {
if (searchvalue.toString().slice(-1) === "*") {
return id.toString().startsWith(searchvalue.replace("*", ""));
}
return id.toString() === searchvalue;
}
</script>
{#if store.state.jwtinfo.userdetails.permissions.includes('CARD:GET')}
{#await cards_promise}
<div
class="bg-teal-lightest border-t-4 border-teal rounded-b text-teal-darkest px-4 py-3 shadow-md my-2"
role="alert">
<p class="font-bold">{$_('loading-cards')}</p>
<p class="text-sm">{$_('this-might-take-a-moment')}</p>
</div>
{:then}
{#if current_cards.length === 0}
<CardsEmptyState />
{:else}
<input
type="search"
bind:value={searchvalue}
placeholder={$_('datatable.search')}
aria-label={$_('datatable.search')}
class="gridjs-input gridjs-search-input mb-4" />
<div
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">
<tr>
<th
scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
{$_('code')}
</th>
<th
scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
{$_('runner')}
</th>
<th
scope="col"
class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
{$_('status')}
</th>
<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_cards as card}
{#if card.code
.toLowerCase()
.includes(
searchvalue.toLowerCase()
) || card.runner?.firstname
.toLowerCase()
.includes(
searchvalue.toLowerCase()
) || card.runner?.middlename
.toLowerCase()
.includes(
searchvalue.toLowerCase()
) || card.runner?.lastname
.toLowerCase()
.includes(
searchvalue.toLowerCase()
) || should_display_based_on_id(card.id)}
<tr data-rowid="card_{card.id}">
<td class="px-6 py-4 whitespace-nowrap">
<div class="flex items-center">{card.code}</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="flex items-center">
{#if card.runner}
<a
href="../runners/{card.runner.id}"
class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800">{card.runner.firstname}
{card.runner.middlename || ''}
{card.runner.lastname}</a>
{:else}{$_('non-blanko')}{/if}
</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="flex items-center">
{#if card.enabled}
<span
class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">{$_('enabled_large')}</span>
{:else}
<span
class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-red-100 text-red-800">{$_('disabled')}</span>
{/if}
</div>
</td>
{#if active_deletes[card.id] === true}
<td
class="px-6 py-4 whitespace-nowrap text-right text-sm font-medium">
<button
on:click={() => {
active_deletes[card.id] = false;
}}
tabindex="0"
class="ml-4 text-indigo-600 hover:text-indigo-900 cursor-pointer">{$_('cancel-delete')}</button>
<button
on:click={() => {
RunnerCardService.runnerCardControllerRemove(card.id, false).then(
(resp) => {
current_cards = current_cards.filter(
(obj) => obj.id !== card.id
);
Toastify({
text: $_('card-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">
<a
href="./{card.id}"
class="text-indigo-600 hover:text-indigo-900">{$_('details')}</a>
{#if store.state.jwtinfo.userdetails.permissions.includes('CARD:DELETE')}
<button
on:click={() => {
active_deletes[card.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>
{/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>
{/await}
{/if}

View File

@@ -0,0 +1 @@
<svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 653.9 247.6"><path d="M272 211l-53 12s-11-2-1-17l4-4 27-14v-2l-6-41-2-16 17-17 4-3 44 41v1l-19 33z" fill="#ffb7b7"/><path d="M253 198l-54 13a6 6 0 01-5-7 16 16 0 012-5 48 48 0 016-9l28-14-4-24-1-12-2-8-2-16 21-19 22 21 22 20-3 5-3 7-17 30-3 6z" fill="#ffb7b7"/><path d="M346 190s-20-1-28-15a24 24 0 01-3-14l-8-17-11-23-30-4-2 1-21 19-7 6-10 9-49 44a37 37 0 01-7 9 50 50 0 01-9 7c-10 5-24 9-44 7L10 248 0 176l89-29 131-86 89 23 41 58z" fill="#ffb7b7"/><path d="M648 0H275a5 5 0 00-5 5v221a5 5 0 005 6h373a5 5 0 006-6V5a5 5 0 00-6-5z" fill="#fff"/><path d="M648 0H275a5 5 0 00-5 5v221a5 5 0 005 6h373a5 5 0 006-6V5a5 5 0 00-6-5zm4 226a4 4 0 01-4 4H275a4 4 0 01-3-4V5a4 4 0 013-3h373a4 4 0 014 3z" fill="#3f3d56"/><path d="M312 30a9 9 0 119-9 9 9 0 01-9 9zm0-17a8 8 0 107 8 8 8 0 00-7-8z" fill="#6c63ff"/><path d="M297 21a8 8 0 016-8 8 8 0 100 16 8 8 0 01-6-8zM349 130a7 7 0 01-7-7v-20a7 7 0 0114 0v20a7 7 0 01-7 7zM368 130a7 7 0 01-7-7v-20a7 7 0 0114 0v20a7 7 0 01-7 7zM386 130a7 7 0 01-7-7v-20a7 7 0 0114 0v20a7 7 0 01-7 7zM415 130a7 7 0 01-7-7v-20a7 7 0 0114 0v20a7 7 0 01-7 7zM434 130a7 7 0 01-7-7v-20a7 7 0 0113 0v20a7 7 0 01-6 7zM452 130a7 7 0 01-7-7v-20a7 7 0 0114 0v20a7 7 0 01-7 7zM481 130a7 7 0 01-7-7v-20a7 7 0 0114 0v20a7 7 0 01-7 7zM499 130a7 7 0 01-7-7v-20a7 7 0 0114 0v20a7 7 0 01-7 7zM518 130a7 7 0 01-7-7v-20a7 7 0 0114 0v20a7 7 0 01-7 7zM546 130a7 7 0 01-7-7v-20a7 7 0 0114 0v20a7 7 0 01-7 7zM565 130a7 7 0 01-7-7v-20a7 7 0 0114 0v20a7 7 0 01-7 7zM583 130a7 7 0 01-7-7v-20a7 7 0 0114 0v20a7 7 0 01-7 7z" fill="#6c63ff"/><path d="M396 208h-99a5 5 0 110-10h99a5 5 0 010 10zM364 188h-35a5 5 0 110-10h35a5 5 0 110 10z" fill="#e6e6e6"/><path fill="#3f3d56" d="M271 46h381v2H271z"/><path opacity=".1" d="M228 203l-1-2 33-15 8-27-12-10 1-1 13 10-8 30-34 15zM196 199l-9 4-17 2a50 50 0 01-9 7l-16-1-26-1 88-74 18 4-29 59z"/><path d="M318 175l-8 1-47 4-29 1-38 18-9 4-70 8 95-81 11 2 20 5 22 5 18 1 24 1 20 1a13 13 0 0112 13c0 7-5 14-21 17z" fill="#ffb7b7"/><path d="M325 170s-7-2-9-9c-2-4-1-9 3-15l1 1c-3 6-4 10-3 14 2 5 9 7 9 7zM197 197l34-16v2l-33 16zM218 135l48-19v2l-41 16 35 6v2l-42-7z" opacity=".1"/></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -16,8 +16,7 @@
- -
{$_('dashboard-greeting')}, {$_('dashboard-greeting')},
<span <span
class="text-blue-500">{store.state.jwtinfo.userdetails.firstname}</span> class="text-blue-500">{store.state.jwtinfo.userdetails.firstname} {store.state.jwtinfo.userdetails.lastname}</span></span>
👋</span>
</h1> </h1>
<StatCards /> <StatCards />
</div> </div>

View File

@@ -5,8 +5,8 @@
<div class="text-center items-center justify-center"> <div class="text-center items-center justify-center">
<p class="mb-16 text-lg text-gray-500"> <p class="mb-16 text-lg text-gray-500">
<img class="w-full" style="height:15rem" src={donations_empty} alt="" /> <img class="m-auto" style="height:15rem" src={donations_empty} alt="" />
<span class="font-bold">There are no donations yet</span><br /> <span class="font-bold">{$_('there-are-no-donations-yet')}</span><br />
<span>add your fist donation</span> <span>{$_('add-your-fist-donation')}</span>
</p> </p>
</div> </div>

View File

@@ -74,20 +74,12 @@
.toLowerCase() .toLowerCase()
.includes( .includes(
searchvalue.toLowerCase() searchvalue.toLowerCase()
) || donation.donor.middlename ) || donation.donor.lastname
.toLowerCase()
.includes(
searchvalue.toLowerCase()
) || donation.donor.lastname
.toLowerCase() .toLowerCase()
.includes( .includes(
searchvalue.toLowerCase() searchvalue.toLowerCase()
) || donation.runner?.firstname ) || donation.runner?.firstname
.toLowerCase() .toLowerCase()
.includes(
searchvalue.toLowerCase()
) || donation.runner?.middlename
.toLowerCase()
.includes( .includes(
searchvalue.toLowerCase() searchvalue.toLowerCase()
) || donation.runner?.lastname ) || donation.runner?.lastname

View File

@@ -88,11 +88,7 @@
.toLowerCase() .toLowerCase()
.includes( .includes(
searchvalue.toLowerCase() searchvalue.toLowerCase()
) || donor.middlename ) || donor.lastname
.toLowerCase()
.includes(
searchvalue.toLowerCase()
) || donor.lastname
.toLowerCase() .toLowerCase()
.includes( .includes(
searchvalue.toLowerCase() searchvalue.toLowerCase()

View File

@@ -189,34 +189,5 @@
</li> </li>
</ul> </ul>
</div> </div>
<h2 class="mt-4 text-4xl font-display font-semibold md:text-5xl">
{$_('faq')}
</h2>
<div class="mt-6 border-t-2 border-gray-100 pt-10">
<dl class="md:grid md:grid-cols-2 md:gap-8">
<div>
<div>
<dt class="text-lg leading-6 font-medium">Q</dt>
<dd class="mt-2">
<p class="text-base text-gray-500">A</p>
</dd>
</div>
</div>
<div class="mt-12 sm:mt-0">
<div id="team-pricing">
<dt class="text-lg leading-6 font-medium">Q</dt>
<dd class="mt-2">
<p class="text-base text-gray-500">A</p>
</dd>
</div>
<div class="mt-12">
<dt class="text-lg leading-6 font-medium">Q</dt>
<dd class="mt-2">
<p class="text-base text-gray-500">A</p>
</dd>
</div>
</div>
</dl>
</div>
</div> </div>
</div> </div>

View File

@@ -32,6 +32,8 @@
target="_blank" target="_blank"
rel="noopener, noreferrer" rel="noopener, noreferrer"
href="https://git.odit.services/lfk/frontend/src/tag/{releaseinfo}">{releaseinfo}</a> href="https://git.odit.services/lfk/frontend/src/tag/{releaseinfo}">{releaseinfo}</a>
-
<a class="underline" href="https://docs.lauf-fuer-kaya.de" target="_blank">{$_('documentation')}</a>
- -
<a class="underline" href="/privacy">{$_('privacy')}</a> <a class="underline" href="/privacy">{$_('privacy')}</a>
- -

View File

@@ -6,13 +6,15 @@
let html = ""; let html = "";
async function load() { async function load() {
let md = await fetch("/imprint_" + getLocaleFromNavigator() + ".md"); let md = await fetch("/imprint_" + getLocaleFromNavigator() + ".md");
if((await md.text()).includes("<meta")){ let text = (await md.text()).toString();
if(text.includes("<meta")){
md.ok=false md.ok=false
} }
if (!md.ok) { if (!md.ok) {
md = await fetch("/imprint_en.md"); md = await fetch("/imprint_en.md");
text = await md.text();
} }
html = marked(await md.text()); html = marked(text);
} }
const promise = load(); const promise = load();
</script> </script>

View File

@@ -6,13 +6,15 @@
let html = ""; let html = "";
async function load() { async function load() {
let md = await fetch("/privacy_" + getLocaleFromNavigator() + ".md"); let md = await fetch("/privacy_" + getLocaleFromNavigator() + ".md");
if((await md.text()).includes("<meta")){ let text = (await md.text()).toString();
if(text.includes("<meta")){
md.ok=false md.ok=false
} }
if (!md.ok) { if (!md.ok) {
md = await fetch("/privacy_en.md"); md = await fetch("/privacy_en.md");
text = await md.text();
} }
html = marked(await md.text()); html = marked(text);
} }
const promise = load(); const promise = load();
</script> </script>

View File

@@ -125,7 +125,7 @@
duration: -1, duration: -1,
}).showToast(); }).showToast();
fetch( fetch(
`https://dev.lauf-fuer-kaya.de/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`, `${config.baseurl}/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
{ {
method: "POST", method: "POST",
headers: { headers: {

View File

@@ -40,7 +40,7 @@
o.id o.id
); );
fetch( fetch(
`https://dev.lauf-fuer-kaya.de/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`, `${config.baseurl}/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
{ {
method: "POST", method: "POST",
headers: { headers: {

View File

@@ -19,6 +19,11 @@
export let current_runners; export let current_runners;
export let import_modal_open; export let import_modal_open;
$: searchvalue = ""; $: searchvalue = "";
$: importButtonEnabled =
recent_processed &&
(!(selected_org_or_team == "" || selected_org_or_team == null) ||
!(passed_org?.id == null || passed_org?.id == 0) ||
!(passed_team?.id == null || passed_team?.id == 0));
const dispatch = createEventDispatcher(); const dispatch = createEventDispatcher();
function cancelModal() { function cancelModal() {
json_output = []; json_output = [];
@@ -44,7 +49,10 @@
groups = groups.concat(orgs); groups = groups.concat(orgs);
RunnerTeamService.runnerTeamControllerGetAll().then((val) => { RunnerTeamService.runnerTeamControllerGetAll().then((val) => {
const teams = val.map((r) => { const teams = val.map((r) => {
return { label: `${r.parentGroup.name} > ${r.name}`, value: `TEAM_${r.id}` }; return {
label: `${r.parentGroup.name} > ${r.name}`,
value: `TEAM_${r.id}`,
};
}); });
groups = groups.concat(teams); groups = groups.concat(teams);
}); });
@@ -120,6 +128,13 @@
.catch((err) => { .catch((err) => {
toast.hideToast(); toast.hideToast();
recent_processed = true; recent_processed = true;
Toastify({
text: $_("error-during-import"),
duration: 500,
backgroundColor:
"linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
}).showToast();
cancelModal();
}); });
} }
if (opened_from === "TeamDetail") { if (opened_from === "TeamDetail") {
@@ -137,6 +152,13 @@
.catch((err) => { .catch((err) => {
toast.hideToast(); toast.hideToast();
recent_processed = true; recent_processed = true;
Toastify({
text: $_("error-during-import"),
duration: 500,
backgroundColor:
"linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
}).showToast();
cancelModal();
}); });
} }
if (opened_from === "RunnerOverview") { if (opened_from === "RunnerOverview") {
@@ -160,6 +182,13 @@
.catch((err) => { .catch((err) => {
toast.hideToast(); toast.hideToast();
recent_processed = true; recent_processed = true;
Toastify({
text: $_("error-during-import"),
duration: 500,
backgroundColor:
"linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
}).showToast();
cancelModal();
}); });
} }
if (selected_org_or_team.includes("TEAM_")) { if (selected_org_or_team.includes("TEAM_")) {
@@ -182,6 +211,13 @@
.catch((err) => { .catch((err) => {
toast.hideToast(); toast.hideToast();
recent_processed = true; recent_processed = true;
Toastify({
text: $_("error-during-import"),
duration: 500,
backgroundColor:
"linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
}).showToast();
cancelModal();
}); });
} }
} }
@@ -195,7 +231,7 @@
use:focusTrap use:focusTrap
use:clickOutside use:clickOutside
on:click_outside={() => { on:click_outside={() => {
import_modal_open = false; cancelModal();
}}> }}>
<div <div
class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"> class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0">
@@ -349,6 +385,8 @@
</table> </table>
</div> </div>
<button <button
disabled={!importButtonEnabled}
class:opacity-50={!importButtonEnabled}
on:click={importAction} on:click={importAction}
type="button" type="button"
class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm"> class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm">

View File

@@ -97,7 +97,7 @@
duration: -1, duration: -1,
}).showToast(); }).showToast();
fetch( fetch(
`https://dev.lauf-fuer-kaya.de/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`, `${config.baseurl}/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
{ {
method: "POST", method: "POST",
headers: { headers: {

View File

@@ -58,7 +58,7 @@
duration: -1, duration: -1,
}).showToast(); }).showToast();
fetch( fetch(
`https://dev.lauf-fuer-kaya.de/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`, `${config.baseurl}/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
{ {
method: "POST", method: "POST",
headers: { headers: {
@@ -178,7 +178,7 @@
generateSponsoringContract('de'); generateSponsoringContract('de');
}} }}
type="submit" type="submit"
class="block w-full text-left px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900 inline-flex" class="block w-full text-left px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"
role="menuitem"> role="menuitem">
{$_('german')} {$_('german')}
</button> </button>
@@ -187,7 +187,7 @@
generateSponsoringContract('en'); generateSponsoringContract('en');
}} }}
type="submit" type="submit"
class="block w-full text-left px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900 inline-flex" class="block w-full text-left px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"
role="menuitem"> role="menuitem">
{$_('english')} {$_('english')}
</button> </button>
@@ -249,11 +249,7 @@
.toLowerCase() .toLowerCase()
.includes( .includes(
searchvalue.toLowerCase() searchvalue.toLowerCase()
) || runner.middlename ) || runner.lastname
.toLowerCase()
.includes(
searchvalue.toLowerCase()
) || runner.lastname
.toLowerCase() .toLowerCase()
.includes( .includes(
searchvalue.toLowerCase() searchvalue.toLowerCase()

View File

@@ -5,7 +5,7 @@
<div class="text-center items-center justify-center"> <div class="text-center items-center justify-center">
<p class="mb-16 text-lg text-gray-500"> <p class="mb-16 text-lg text-gray-500">
<img class="w-full" style="height:15rem" src={scans_empty} alt="" /> <img class="m-auto" style="height:15rem" src={scans_empty} alt="" />
<span class="font-bold">{$_('there-are-no-scans-yet')}</span><br /> <span class="font-bold">{$_('there-are-no-scans-yet')}</span><br />
<span>{$_('add-your-fist-scan')}</span> <span>{$_('add-your-fist-scan')}</span>
</p> </p>

View File

@@ -81,10 +81,6 @@
.includes( .includes(
searchvalue.toLowerCase() searchvalue.toLowerCase()
) || scan.runner?.firstname ) || scan.runner?.firstname
.toLowerCase()
.includes(
searchvalue.toLowerCase()
) || scan.runner?.middlename
.toLowerCase() .toLowerCase()
.includes( .includes(
searchvalue.toLowerCase() searchvalue.toLowerCase()

View File

@@ -1 +1 @@
<svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="598.11" height="535.11"><path d="M3.35 120.07a4.6 4.6 0 00-3.18 5.66l76.72 273.98a4.6 4.6 0 005.65 3.18l282.82-79.19a4.6 4.6 0 003.18-5.66L291.82 44.07a4.6 4.6 0 00-5.65-3.19z" fill="#e6e6e6"/><path d="M86.1 389.95l269.5-75.46-72.99-260.67-269.5 75.46z" fill="#fff"/><path d="M48.74 164.1c-1.8.5-2.54 3.48-1.65 6.65s3.07 5.33 4.87 4.83l122.91-34.42c1.8-.5 2.54-3.49 1.66-6.65s-3.08-5.34-4.87-4.84zM58.64 199.44c-1.8.5-2.54 3.5-1.65 6.66s3.07 5.34 4.87 4.83l122.91-34.42c1.8-.5 2.54-3.49 1.65-6.65s-3.07-5.34-4.86-4.83zM68.42 234.39c-1.8.5-2.54 3.49-1.65 6.66s3.07 5.33 4.87 4.83l122.92-34.42c1.8-.5 2.54-3.5 1.65-6.66s-3.07-5.33-4.87-4.83zM78.32 269.74c-1.8.5-2.54 3.49-1.65 6.66s3.07 5.33 4.87 4.83l122.92-34.42c1.8-.5 2.54-3.49 1.65-6.66s-3.07-5.33-4.87-4.83zM234.04 112.61a5.97 5.97 0 103.21 11.5l22.98-6.44a5.97 5.97 0 00-3.22-11.49zM243.74 147.28a5.97 5.97 0 103.22 11.49l22.98-6.43a5.97 5.97 0 00-3.22-11.5zM253.45 181.95a5.97 5.97 0 103.22 11.49l22.98-6.44a5.97 5.97 0 00-3.22-11.49zM263.16 216.61a5.97 5.97 0 003.21 11.5l22.98-6.44a5.97 5.97 0 00-3.21-11.49z" fill="#e6e6e6"/><path d="M272.43 276.7a7.6 7.6 0 104.1 14.64l29.28-8.2a7.6 7.6 0 00-4.1-14.64z" fill="#6c63ff"/><path fill="#e6e6e6" d="M85.9 307.81l216.66-60.67.54 1.93-216.67 60.67z"/><path fill="#a0616a" d="M520.2 506.07l-17.38 4.2-24.47-65.02 25.65-6.2 16.2 67.02z"/><path d="M472.85 535.11l-.12-.48a22.23 22.23 0 0116.37-26.8l34-8.23 5.33 22.08z" fill="#2f2e41"/><path fill="#a0616a" d="M443.28 517.91H425.4l-8.5-68.96h26.38v68.96z"/><path d="M447.6 535.01h-57.18v-.5a22.2 22.2 0 0122.2-22.2h34.99zM416.88 490.99l-17.36-206.87 71.86-13.25.28-.05 21.03 13.52-7.32 76.14 33.7 118.7-29.1 7.65-33.75-110.08-7.73-33.48-3.96 43.5 2.94 107.28z" fill="#2f2e41"/><path d="M397.3 288.81l-.2-.24 24.84-186.96.03-.24.17-.18c.37-.36 9.07-8.96 18.02-8.96 1.3 0 2.52-.03 3.7-.06 6.85-.18 12.26-.32 18.69 6.1 6.55 6.56 27.92 30.47 27.92 63.23 0 31.7 2.88 130.22 2.91 131.21l.04 1.4-1.16-.76c-.3-.19-29.03-18.49-53.14-1.48-7.53 5.32-14.3 7.18-20.09 7.18-13.47 0-21.62-10.1-21.73-10.24z" fill="#6c63ff"/><circle cx="737.3" cy="227.82" r="35.82" transform="rotate(-28.66 229.78 725.57)" fill="#a0616a"/><path d="M381.53 328.99a14.66 14.66 0 00.85-22.47l20.34-47.97-26.63 4.9-15.23 44.8A14.74 14.74 0 00381.53 329z" fill="#a0616a"/><path d="M361.88 291.67l6.55-13.83a2.7 2.7 0 01-.97-1c-6.12-10.6 30.84-98.67 33.3-104.51-.37-3.18-4.25-36.85-1.41-48.2 3.34-13.35 10.2-19.58 22.93-20.81 14.04-1.32 17.83 17.75 17.86 17.94l.02 49.02-16.12 56.43-36.75 74.97z" fill="#6c63ff"/><path d="M440.94 58.87c-4.3.56-7.54-3.83-9.04-7.9s-2.64-8.78-6.38-10.98c-5.1-3-11.62.61-17.45-.38-6.59-1.11-10.87-8.1-11.2-14.76s2.31-13.1 4.92-19.24l.9 7.64A15.16 15.16 0 01409.33 0l-1.17 11.22c.73-6.29 7.5-11.16 13.7-9.85l-.19 6.68c7.6-.9 15.28-1.81 22.91-1.12s15.31 3.1 21.1 8.13c8.64 7.51 11.8 19.89 10.74 31.3s-5.77 22.13-10.68 32.48c-1.23 2.6-2.94 5.54-5.8 5.88-2.58.3-4.93-1.86-5.73-4.32s-.41-5.14.07-7.69c.72-3.84 1.63-7.77.95-11.63s-3.45-7.66-7.33-8.13-7.86 3.97-6 7.4z" fill="#2f2e41"/><path fill="#3f3d56" d="M597.73 535.1H339.99v-2.11h258.12l-.38 2.1z"/></svg> <svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 647.6 632.2"><path d="M411 142H237a15 15 0 00-15 15v388l-2 1-43 13a8 8 0 01-10-6L39 137a8 8 0 016-10l66-20 191-58 66-20a8 8 0 0110 5l33 106z" fill="#f2f2f2"/><path d="M449 140L410 12a17 17 0 00-21-11l-93 28-191 59-93 28a17 17 0 00-11 21l134 438a17 17 0 0016 12 17 17 0 005 0l64-20 2-1v-2l-2 1-65 20a15 15 0 01-18-10L3 137a15 15 0 0110-19l92-28 192-59 92-28a15 15 0 015-1 15 15 0 0114 11l39 127 1 2h2z" fill="#3f3d56"/><path d="M123 128a9 9 0 01-9-7l-13-42a9 9 0 016-11l176-54a9 9 0 0111 6l13 42a9 9 0 01-6 12l-176 53a9 9 0 01-2 1z" fill="#6c63ff"/><circle cx="190.2" cy="25" r="20" fill="#6c63ff"/><circle cx="190.2" cy="25" r="12.7" fill="#fff"/><path d="M603 582H265a9 9 0 01-9-8V169a9 9 0 019-9h338a9 9 0 018 9v405a9 9 0 01-8 8z" fill="#e6e6e6"/><path d="M447 140H237a17 17 0 00-17 17v408l2-1V157a15 15 0 0115-15h211zm184 0H237a17 17 0 00-17 17v458a17 17 0 0017 17h394a17 17 0 0017-17V157a17 17 0 00-17-17zm15 475a15 15 0 01-15 15H237a15 15 0 01-15-15V157a15 15 0 0115-15h394a15 15 0 0115 15z" fill="#3f3d56"/><path d="M526 184H342a9 9 0 01-9-9v-44a9 9 0 019-9h184a9 9 0 019 9v44a9 9 0 01-9 9z" fill="#6c63ff"/><circle cx="433.6" cy="105.2" r="20" fill="#6c63ff"/><circle cx="433.6" cy="105.2" r="12.2" fill="#fff"/></svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -86,7 +86,7 @@
<div class="mt-2 mb-6"> <div class="mt-2 mb-6">
<label <label
for="token" for="token"
class="block text-sm font-medium text-gray-700">Token</label> class="block text-sm font-medium text-gray-700">{$_('token')}</label>
<div on:click={copy} class="inline-flex"> <div on:click={copy} class="inline-flex">
<p <p
name="token" name="token"

View File

@@ -111,7 +111,7 @@ import Teams from "./Teams.svelte";
duration: -1, duration: -1,
}).showToast(); }).showToast();
fetch( fetch(
`https://dev.lauf-fuer-kaya.de/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`, `${config.baseurl}/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
{ {
method: "POST", method: "POST",
headers: { headers: {

View File

@@ -41,7 +41,7 @@
t.id t.id
); );
fetch( fetch(
`https://dev.lauf-fuer-kaya.de/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`, `${config.baseurl}/documents/contracts?locale=${locale}&download=true&key=${config.documentserver_key}`,
{ {
method: "POST", method: "POST",
headers: { headers: {

View File

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

View File

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