Compare commits
	
		
			9 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 51d9b35dc4 | |||
| 16dc789db5 | |||
| e4f9b1a605 | |||
| 3a8533a7ba | |||
| 5ac6fe30b5 | |||
| 14501d3828 | |||
| c78bdfa5e2 | |||
| b2ed2afd8a | |||
| 00d198895e | 
							
								
								
									
										19
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								CHANGELOG.md
									
									
									
									
									
								
							| @@ -2,9 +2,28 @@ | ||||
|  | ||||
| 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) | ||||
|  | ||||
| #### [1.12.6](https://git.odit.services/lfk/frontend/compare/1.12.5...1.12.6) | ||||
|  | ||||
| > 1 May 2025 | ||||
|  | ||||
| - feat(pdfs): Experimental generation of large runner card files [`93422b9`](https://git.odit.services/lfk/frontend/commit/93422b97799c5e45c89acadd34f33b1a11b04617) | ||||
| - chore(release): 1.12.6 [`b5c079d`](https://git.odit.services/lfk/frontend/commit/b5c079da9a0545d146e9f3029a543e04c907add3) | ||||
|  | ||||
| #### [1.12.5](https://git.odit.services/lfk/frontend/compare/1.12.4...1.12.5) | ||||
|  | ||||
|   | ||||
| @@ -13,7 +13,7 @@ | ||||
|  | ||||
|   <body> | ||||
|     <span style="display: none; visibility: hidden" id="buildinfo" | ||||
|       >RELEASE_INFO-1.12.6-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> | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "@odit/lfk-frontend", | ||||
|   "version": "1.12.6", | ||||
|   "version": "1.12.8", | ||||
|   "type": "module", | ||||
|   "scripts": { | ||||
|     "i18n-order": "node order.js", | ||||
|   | ||||
							
								
								
									
										10
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							| @@ -15,8 +15,8 @@ importers: | ||||
|         specifier: ^5.2.5 | ||||
|         version: 5.2.5 | ||||
|       '@odit/lfk-client-js': | ||||
|         specifier: 1.2.5 | ||||
|         version: 1.2.5 | ||||
|         specifier: 1.2.7 | ||||
|         version: 1.2.7 | ||||
|       '@paralleldrive/cuid2': | ||||
|         specifier: 2.2.2 | ||||
|         version: 2.2.2 | ||||
| @@ -491,8 +491,8 @@ packages: | ||||
|   '@octokit/types@13.10.0': | ||||
|     resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} | ||||
|  | ||||
|   '@odit/lfk-client-js@1.2.5': | ||||
|     resolution: {integrity: sha512-a5vwqpjFXB5cVOCmjC/tZVi9OXJS8aMesNidSqwK2cwA/oC5yTJAqxKXGDhq9k/JLLipVGDJdaKMYmYVzRWkgA==} | ||||
|   '@odit/lfk-client-js@1.2.7': | ||||
|     resolution: {integrity: sha512-sqbbTjGlalN32VPshXClR3qM0+TFgWCX9+2UCo7u/tABEIs7hsYTVXKSZ+fJNfAUCK6ZJiZV0ND6+Dcnk7s29A==} | ||||
|  | ||||
|   '@odit/license-exporter@0.2.0': | ||||
|     resolution: {integrity: sha512-RRyfQzDLoyLQlGSd8ThJQ3h0fiCe4tkmm935AUvSVQWP+p88FcnI4iaktKBJJVBnIpDhkv/7sDSA5dFc/QMM5w==} | ||||
| @@ -2412,7 +2412,7 @@ snapshots: | ||||
|     dependencies: | ||||
|       '@octokit/openapi-types': 24.2.0 | ||||
|  | ||||
|   '@odit/lfk-client-js@1.2.5': {} | ||||
|   '@odit/lfk-client-js@1.2.7': {} | ||||
|  | ||||
|   '@odit/license-exporter@0.2.0': | ||||
|     dependencies: | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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" | ||||
|   | ||||
| @@ -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" | ||||
|   | ||||
| @@ -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={() => { | ||||
|   | ||||
| @@ -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", | ||||
|   | ||||
| @@ -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", | ||||
|   | ||||
| @@ -43,8 +43,8 @@ const store = () => { | ||||
|         // | ||||
|         state.refreshInterval = setInterval(() => { | ||||
|           this.refreshAuth(); | ||||
|           // 2min | ||||
|         }, 2 * 60000); | ||||
|           // 60min | ||||
|         }, 60 * 60000); | ||||
|         // | ||||
|         return state; | ||||
|       }); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user