Compare commits

..

6 Commits

12 changed files with 835 additions and 807 deletions

View File

@ -2,8 +2,19 @@
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
#### [1.12.8](https://git.odit.services/lfk/frontend/compare/1.12.7...1.12.8)
- feat(dasboard): Added section headers to main nav [`3a8533a`](https://git.odit.services/lfk/frontend/commit/3a8533a7baef02f7bc9780ce37be1a350bd92270)
- fic(locales): Updated dashboard translations [`5ac6fe3`](https://git.odit.services/lfk/frontend/commit/5ac6fe30b5b9e34043c734d51d5da137fdf7ac38)
- feat(runners): Created_via filters can now be set via query params [`14501d3`](https://git.odit.services/lfk/frontend/commit/14501d3828dd0d48ba0baeeddf936ba275f7b9b7)
- refactor(tools): Move tools to tools route [`16dc789`](https://git.odit.services/lfk/frontend/commit/16dc789db5d9ea41774c77622a579cc0d9bd95f2)
- refactor(tools): Move tools into shared directory instead of the non-descript "general" [`e4f9b1a`](https://git.odit.services/lfk/frontend/commit/e4f9b1a60551d7955def4d068d534cf17b1ea640)
#### [1.12.7](https://git.odit.services/lfk/frontend/compare/1.12.6...1.12.7)
> 1 May 2025
- chore(release): 1.12.7 [`c78bdfa`](https://git.odit.services/lfk/frontend/commit/c78bdfa5e24ada4909455064dd6b05cf34fc6df3)
- fix(deps): fresh lockfile [`b2ed2af`](https://git.odit.services/lfk/frontend/commit/b2ed2afd8a45a1a01ac6118b27941e3b4b3b611f)
- refactor(store): update refresh interval from 2min to 60min [`00d1988`](https://git.odit.services/lfk/frontend/commit/00d198895e15174b70a8d229974b4baa7d0ed8fc)

View File

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

View File

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

View File

@ -41,7 +41,7 @@
import Settings from "./components/settings/Settings.svelte";
import Transition from "./components/base/Transition.svelte";
import Orgs from "./components/orgs/Orgs.svelte";
import CardAssignment from "./components/general/CardAssignment.svelte";
import CardAssignment from "./components/tools/CardAssignment.svelte";
import Runners from "./components/runners/Runners.svelte";
import Footer from "./components/general/Footer.svelte";
import TracksOverview from "./components/tracks/TracksOverview.svelte";
@ -70,7 +70,7 @@
import Cards from "./components/cards/Cards.svelte";
import StatsClients from "./components/statsclients/StatsClients.svelte";
import StatsClientDetail from "./components/statsclients/StatsClientDetail.svelte";
import CardReplacement from "./components/general/CardReplacement.svelte";
import CardReplacement from "./components/tools/CardReplacement.svelte";
store.init();
</script>
@ -126,20 +126,18 @@
<Route path="/:trackid" let:params />
</Route>
<Route path="/runners/*">
<Route path="/">
<Runners created_via="all" />
<Route path="/" let:meta>
<Runners created_via={meta.query.created_via} />
</Route>
<Route path="/:runnerid" let:params>
<RunnerDetail {params} />
</Route>
</Route>
<Route path="/cardassignment/*">
<Route path="/">
<Route path="/tools/*">
<Route path="/cardassignment/">
<CardAssignment />
</Route>
</Route>
<Route path="/cardreplacement/*">
<Route path="/">
<Route path="/cardreplacement/">
<CardReplacement />
</Route>
</Route>

View File

@ -41,11 +41,14 @@
</svg>
<span>{$_("dashboard-title")}</span>
</a>
<h2 class="px-4 py-2 text-xs font-semibold text-gray-600 uppercase">
{$_("quick-tools")}
</h2>
{#if store.state.jwtinfo.userdetails.permissions.includes("RUNNER:GET") && store.state.jwtinfo.userdetails.permissions.includes("CARD:GET")}
<a
class:activenav={$router.path.includes("/cardassignment/")}
class:activenav={$router.path.includes("/tools/cardassignment/")}
class="flex items-center px-4 py-3 transition cursor-pointer group hover:bg-gray-200 hover:text-gray-900 w-full font-semibold"
href="/cardassignment/"
href="/tools/cardassignment/"
>
<svg
xmlns="http://www.w3.org/2000/svg"
@ -60,12 +63,12 @@
/>
</svg>
<span>{$_('card_assignment_menu')}</span>
<span>{$_("card_assignment_menu")}</span>
</a>
<a
class:activenav={$router.path.includes("/cardreplacement/")}
class:activenav={$router.path.includes("/tools/cardreplacement/")}
class="flex items-center px-4 py-3 transition cursor-pointer group hover:bg-gray-200 hover:text-gray-900 w-full font-semibold"
href="/cardreplacement/"
href="/tools/cardreplacement/"
>
<svg
xmlns="http://www.w3.org/2000/svg"
@ -80,8 +83,11 @@
/>
</svg>
<span>{$_('card-replacement-menu')}</span>
<span>{$_("card-replacement-menu")}</span>
</a>
<h2 class="px-4 py-2 text-xs font-semibold text-gray-600 uppercase">
{$_("management")}
</h2>
<a
class:activenav={$router.path.includes("/runners/")}
class="flex items-center px-4 py-3 transition cursor-pointer group hover:bg-gray-200 hover:text-gray-900 w-full font-semibold"
@ -359,6 +365,9 @@
<span>{$_("user-groups")}</span>
</a>
{/if}
<h2 class="px-4 py-2 text-xs font-semibold text-gray-600 uppercase">
{$_("system")}
</h2>
<a
class:activenav={$router.path === "/settings/"}
class="flex items-center px-4 py-3 transition cursor-pointer group hover:bg-gray-200 hover:text-gray-900 w-full font-semibold"

View File

@ -220,7 +220,7 @@
<StatCard
title={$_("runner_via_selfservice")}
value={stats.runnersViaSelfservice}
href="/runners/"
href="/runners/?created_via=selfservice"
>
<svg
height="24"
@ -237,7 +237,7 @@
<StatCard
title={$_('runners_via_kiosk')}
value={stats.runnersViaKiosk}
href="/runners/"
href="/runners/?created_via=kiosk"
>
<svg
height="24"

View File

@ -176,7 +176,6 @@
const runners = await RunnerService.runnerControllerGetAll(
page,
500,
created_via
);
if (runners.length == 0) {
page = -2;
@ -200,15 +199,21 @@
$: current_runners = [];
export let modal_open = false;
export let import_modal_open = false;
if (created_via != "all") {
$table.setColumnFilters([
{
id: "created_via",
value: created_via,
},
]);
}
</script>
<section class="container p-5">
<h4 class="mb-1 text-3xl font-extrabold leading-tight">
{$_("runners")}
</h4>
{#if created_via !== "all"}
<p>created_via={created_via}</p>
{/if}
{#if store.state.jwtinfo.userdetails.permissions.includes("RUNNER:CREATE")}
<button
on:click={() => {

View File

@ -296,6 +296,7 @@
"logout": "Abmelden",
"mail-validation-in-progress": "E-Mail Verifizierung läuft... ",
"manage-admin-users": "Nutzer verwalten",
"management": "Verwaltung",
"middle-name": "Mittelname",
"minimum-lap-time-in-s": "Minimale Rundenzeit (in Sekunden)",
"minimum-lap-time-must-be-a-positive-number-or-0": "Die minimale Rundenzeit muss eine positive Zahl oder 0 sein",
@ -375,6 +376,7 @@
"profile-deleted": "Profil gelöscht!",
"profile-picture": "Profilbild",
"profile-updated": "Profil wurde aktualisiert!",
"quick-tools": "Werkzeuge",
"read-license": "Lizenz-Text lesen",
"receipt-needed": "Spendenquittung benötigt",
"repo_link": "Link",
@ -439,6 +441,7 @@
"status": "Status",
"stuff-that-could-harm-your-profile": "Einstellungen, die deinem Profil nachhaltig schaden können",
"successful-password-reset": "Passwort erfolgreich zurückgesetzt!",
"system": "System",
"team": "Team",
"team-added": "Team wurde erstellt",
"team-deleted": "Team gelöscht",

View File

@ -51,7 +51,7 @@
"author": "Author",
"available-permissions": "available",
"average-distance": "∅ distance",
"average-donation": "∅ donation",
"average-donation": "∅ Donation",
"barcode_scanner": "Scan via barcode scanner",
"by": "by",
"cancel": "Cancel",
@ -375,6 +375,7 @@
"profile-deleted": "Profile deleted!",
"profile-picture": "Profile Picture",
"profile-updated": "Profile updated!",
"quick-tools": "Tools",
"read-license": "Read License",
"receipt-needed": "Receipt needed",
"repo_link": "Link",
@ -388,7 +389,7 @@
"runner-is-being-added": "Runner is being added...",
"runner-updated": "Runner updated!",
"runner_not_found": "Runner not found...",
"runner_via_selfservice": "Runner via Selfservice",
"runner_via_selfservice": "Runners via Selfservice",
"runnercards": "Runnercards",
"runnerimport_verify_runners_org": "Please confirm these runners for import into the organization \"{org_name}\"",
"runners": "Runners",
@ -439,6 +440,7 @@
"status": "Status",
"stuff-that-could-harm-your-profile": "Stuff that could harm your profile",
"successful-password-reset": "Successful password reset!",
"system": "System",
"team": "Team",
"team-added": "Team added",
"team-deleted": "Team deleted",
@ -469,11 +471,11 @@
"token": "Token",
"total-distance": "total distance",
"total-donation-amount": "Total donations",
"total-donation-count": "total donations (count)",
"total-donations": "total donations",
"total-donors": "total donors",
"total-donation-count": "Donations (count)",
"total-donations": "Donations (amount)",
"total-donors": "Donors",
"total-paid-amount": "Paid",
"total-scans": "total scans",
"total-scans": "Scans",
"total_donation_amount_in_eur": "Total donation amount in €",
"track": "Track",
"track-added": "Track added",