15 Commits

Author SHA1 Message Date
9125dec45b 🚀Bumped version to 0.1.2 2021-04-08 17:34:52 +02:00
94ceca9454 🚀Bumped version to 0.1.1 2021-04-07 20:57:48 +02:00
2119e9b231 Merge branch 'main' of git.odit.services:lfk/beamershow into main
# Conflicts:
#	package.json
2021-04-07 20:57:00 +02:00
cfd64c2f19 Updated release-it config 2021-04-07 20:56:51 +02:00
a7e84c7d42 Updated release-it config 2021-04-07 20:56:21 +02:00
70bfbfcd53 Sorted translations 🌍
closes #1
2021-04-07 20:53:21 +02:00
c5e4facffa i18n run 2021-04-07 20:52:55 +02:00
b36764869b Added/updated settings translations 2021-04-07 20:46:29 +02:00
de7e96cd01 Implemented settings dialog 2021-04-07 20:44:24 +02:00
d5ce648a53 CNF now opens settings 2021-04-07 20:43:53 +02:00
fca7a99689 Formatting 2021-04-07 20:38:10 +02:00
cb559da57c removed unused stuff from the store
ref #1
2021-04-07 20:37:59 +02:00
abdc510305 Added track to config
ref #1
2021-04-07 20:35:46 +02:00
fe0cba9058 removed useless console log 2021-04-07 20:12:28 +02:00
64ce42d8a0 Added url validation fix 2021-04-07 19:58:52 +02:00
10 changed files with 206 additions and 128 deletions

View File

@@ -1,4 +1,5 @@
{ {
"i18n-ally.localesPaths": "src/locales", "i18n-ally.localesPaths": "src/locales",
"i18n-ally.keystyle": "nested" "i18n-ally.keystyle": "nested",
"i18n-ally.sourceLanguage": "de"
} }

43
CHANGELOG.md Normal file
View File

@@ -0,0 +1,43 @@
### Changelog
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
#### [0.1.2](https://git.odit.services/lfk/beamershow/compare/0.1.1...0.1.2)
#### 0.1.1
> 7 April 2021
- Sorted translations 🌍 [`#1`](https://git.odit.services/lfk/beamershow/issues/1)
- 🎉 initial commit [`b902b08`](https://git.odit.services/lfk/beamershow/commit/b902b081d7e2e80fdf167657f3c2fda79b888985)
- formatting... [`866436f`](https://git.odit.services/lfk/beamershow/commit/866436fa82882dffe6f2f45bd303effc67d92a37)
- Added/updated settings translations [`b367648`](https://git.odit.services/lfk/beamershow/commit/b36764869bf1e302713d457b3ba3ec804c5d38f7)
- 🚀Bumped version to 0.1.1 [`94ceca9`](https://git.odit.services/lfk/beamershow/commit/94ceca9454da77d29f975cf894d2304dcc60c481)
- i18n run [`c5e4fac`](https://git.odit.services/lfk/beamershow/commit/c5e4facffa19578db95315d53bd0befc936016e4)
- Added drone file for dev and tag build [`d809dcb`](https://git.odit.services/lfk/beamershow/commit/d809dcba799a94c6ed5a6cfac551d14c1a2cbadd)
- You can now go back to config by typeing cnf [`9135090`](https://git.odit.services/lfk/beamershow/commit/9135090e73ff6fc021b4f7f80b3780b3ff73ad02)
- Added top teams by distance page [`d78e896`](https://git.odit.services/lfk/beamershow/commit/d78e896fecf5f7975267f3a1c3faf8b5c8728c25)
- Added nginx conf for dockerfile [`b3b06bc`](https://git.odit.services/lfk/beamershow/commit/b3b06bc30e4043d3f7b874e939a090f85841a516)
- Implemented fix for url crashing [`7f6134d`](https://git.odit.services/lfk/beamershow/commit/7f6134d0efd1a6a1161acc2c8bc8c4496c529ffe)
- Added html/template for the top runenry by laptime [`3275ae2`](https://git.odit.services/lfk/beamershow/commit/3275ae2609ef966183ca66a0234ff7f570eaef81)
- Added release comand and config [`ca48959`](https://git.odit.services/lfk/beamershow/commit/ca489595812da8756629a498d673e3206cb66a2f)
- Added track to config [`abdc510`](https://git.odit.services/lfk/beamershow/commit/abdc5103055844da73438e8dfbb0eea2b41105d1)
- removed unused stuff from the store [`cb559da`](https://git.odit.services/lfk/beamershow/commit/cb559da57c58a1998f54beb83bee837e0a8b71e7)
- Implemented settings dialog [`de7e96c`](https://git.odit.services/lfk/beamershow/commit/de7e96cd01f70bfff80f42e7c709e67d44681920)
- Added js part of runners by laptime [`10b862d`](https://git.odit.services/lfk/beamershow/commit/10b862d43ac35122c1cc4eaed30e7ac8228d294f)
- User quickstart docs README [`19cc7d0`](https://git.odit.services/lfk/beamershow/commit/19cc7d0c28ff56481fc37cc98b341259566a39ed)
- Removed license export from drone pipelines [`e5c51b9`](https://git.odit.services/lfk/beamershow/commit/e5c51b956e210f3f4652f020edefb0de5bb789d9)
- Formatting [`fca7a99`](https://git.odit.services/lfk/beamershow/commit/fca7a99689469f8a8b281f643346b3281036ee40)
- added svelte transitions [`1f95b8b`](https://git.odit.services/lfk/beamershow/commit/1f95b8ba53e3152517d730ad6b3b39dc472bb386)
- Added 2-staged dockerfile [`c83ff39`](https://git.odit.services/lfk/beamershow/commit/c83ff39677c4575346a0b7eced95796de90d6fee)
- Precommit hooks doing their best to not die [`85b40c1`](https://git.odit.services/lfk/beamershow/commit/85b40c10bffa15ad381e51fee348bb014780d5d8)
- Renamed Firma -> Organsiation [`3e7b120`](https://git.odit.services/lfk/beamershow/commit/3e7b1201e25da7dcc2f6be2b4b826b90d616dd67)
- Added beamershow docker-compose [`b42684f`](https://git.odit.services/lfk/beamershow/commit/b42684f7fc8e40740a6511d895af03f7f110e2a4)
- Updated release-it config [`cfd64c2`](https://git.odit.services/lfk/beamershow/commit/cfd64c2f19dabd8aa758aefd02342935c54e20de)
- Renamed Firma -Y Organsiation [`662e31b`](https://git.odit.services/lfk/beamershow/commit/662e31b36674f66696a4a4bc3ca4abae3efd93bb)
- CNF now opens settings [`d5ce648`](https://git.odit.services/lfk/beamershow/commit/d5ce648a53bb70a1c4ad7f2b12c334e328e36448)
- Added missing let [`70e5f17`](https://git.odit.services/lfk/beamershow/commit/70e5f172a66dcad64353f8469ebb845a1b4895bb)
- Added missing let [`fa35ac8`](https://git.odit.services/lfk/beamershow/commit/fa35ac8254028570bd3e425276a008fe83887f09)
- Updated release-it config [`a7e84c7`](https://git.odit.services/lfk/beamershow/commit/a7e84c7d426525a5041f0ec260cd57dcfd107afb)
- Added url validation fix [`64ce42d`](https://git.odit.services/lfk/beamershow/commit/64ce42d8a04cc4b149db7f75be5ff0d9fbfb3a75)
- removed useless console log [`fe0cba9`](https://git.odit.services/lfk/beamershow/commit/fe0cba9058a1874058618ef3b697093fcfc78a99)

View File

@@ -1,48 +1,48 @@
{ {
"name": "@lfk/beamershow", "name": "@lfk/beamershow",
"version": "0.0.0", "version": "0.1.2",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vite build", "build": "vite build",
"format": "prettier --write --plugin-search-dir=. ./**/*.html ./**/*.svelte", "format": "prettier --write --plugin-search-dir=. ./**/*.html ./**/*.svelte",
"prepare": "husky install", "prepare": "husky install",
"license:export": "license-exporter --markdown && git stage licenses.md", "license:export": "license-exporter --markdown && git stage licenses.md",
"release": "release-it --only-version" "release": "release-it --only-version"
}, },
"devDependencies": { "devDependencies": {
"@odit/license-exporter": "^0.0.11", "@odit/license-exporter": "^0.0.11",
"@svitejs/vite-plugin-svelte": "^0.11.1", "@svitejs/vite-plugin-svelte": "^0.11.1",
"@tsconfig/svelte": "^1.0.10", "@tsconfig/svelte": "^1.0.10",
"@types/html-minifier": "^4.0.0", "@types/html-minifier": "^4.0.0",
"axios": "^0.21.1", "axios": "^0.21.1",
"html-minifier": "^4.0.0", "html-minifier": "^4.0.0",
"husky": "^5.1.3", "husky": "^5.1.3",
"prettier": "^2.2.1", "prettier": "^2.2.1",
"prettier-plugin-svelte": "^2.2.0", "prettier-plugin-svelte": "^2.2.0",
"release-it": "14.5.0", "release-it": "14.5.0",
"svelte": "3.36.0", "svelte": "3.36.0",
"svelte-i18n": "3.3.9", "svelte-i18n": "3.3.9",
"svelte-preprocess": "4.7.0", "svelte-preprocess": "4.7.0",
"validator": "^13.5.2", "validator": "^13.5.2",
"vite": "2.1.4", "vite": "2.1.4",
"vite-plugin-windicss": "0.11.2" "vite-plugin-windicss": "0.11.2"
}, },
"release-it": { "release-it": {
"git": { "git": {
"commit": true, "commit": true,
"requireCleanWorkingDir": false, "requireCleanWorkingDir": false,
"commitMessage": "🚀Bumped version to v${version}", "commitMessage": "🚀Bumped version to ${version}",
"requireBranch": "dev", "requireBranch": "main",
"push": false, "push": false,
"tag": true, "tag": true,
"tagName": null, "tagName": null,
"tagAnnotation": "v${version}" "tagAnnotation": "${version}"
}, },
"npm": { "npm": {
"publish": false "publish": false
}, },
"hooks": { "hooks": {
"after:bump": "npx auto-changelog --commit-limit false -p -u --hide-credit && git add CHANGELOG.md && node order_i18n.js && git add src/locales" "after:bump": "npx auto-changelog --commit-limit false -p -u --hide-credit && git add CHANGELOG.md && node order.js && git add src/locales"
} }
} }
} }

View File

@@ -1,5 +1,5 @@
<script> <script>
import { apikey, api_endpoint, lang, page, clear } from "./store.js"; import { apikey, api_endpoint, lang, clear, laptime_track } from "./store.js";
import { addMessages, init } from "svelte-i18n"; import { addMessages, init } from "svelte-i18n";
import en from "./locales/en.json"; import en from "./locales/en.json";
import de from "./locales/de.json"; import de from "./locales/de.json";
@@ -11,8 +11,13 @@
import Beamershow from "./Beamershow.svelte"; import Beamershow from "./Beamershow.svelte";
import Login from "./Login.svelte"; import Login from "./Login.svelte";
import Settings from "./Settings.svelte"; import Settings from "./Settings.svelte";
$: is_configured = $apikey && $apikey !== "null" && $apikey !== ""; export let settings_open = false;
$: settings_open = $page === "settings"; $: is_configured =
$apikey &&
$apikey !== "null" &&
$apikey !== "" &&
$laptime_track != 0 &&
$laptime_track != null;
init({ init({
fallbackLocale: "en-US", fallbackLocale: "en-US",
initialLocale: $lang, initialLocale: $lang,
@@ -35,9 +40,7 @@
} else if (command === "c" && e.key === "n") { } else if (command === "c" && e.key === "n") {
command += "n"; command += "n";
} else if (command === "cn" && e.key === "f") { } else if (command === "cn" && e.key === "f") {
clear();
settings_open = true; settings_open = true;
is_configured = true;
command = ""; command = "";
} else { } else {
command = ""; command = "";
@@ -48,7 +51,7 @@
</script> </script>
{#if settings_open && is_configured} {#if settings_open && is_configured}
<Settings /> <Settings bind:settings_open />
{:else if is_configured} {:else if is_configured}
<Beamershow /> <Beamershow />
{:else} {:else}

View File

@@ -1,8 +1,8 @@
<script> <script>
import axios from "axios"; import axios from "axios";
import { _ } from "svelte-i18n"; import { _ } from "svelte-i18n";
import { fade, slide } from "svelte/transition"; import { slide } from "svelte/transition";
import { apikey, api_endpoint, page, stationinfo } from "./store.js"; import { apikey, api_endpoint, laptime_track } from "./store.js";
function init(el) { function init(el) {
el.focus(); el.focus();
} }
@@ -73,7 +73,8 @@
axios axios
.request({ .request({
method: "GET", method: "GET",
url: $api_endpoint + "api/stats/runners/laptime", url:
$api_endpoint + "api/stats/runners/laptime?track=" + $laptime_track,
headers: { Authorization: "Bearer " + $apikey }, headers: { Authorization: "Bearer " + $apikey },
}) })
.then(function ({ data }) { .then(function ({ data }) {
@@ -152,7 +153,7 @@
{general.total_runners} {general.total_runners}
</h1> </h1>
<h1 class="text-2xl font-semibold text-center text-gray-900"> <h1 class="text-2xl font-semibold text-center text-gray-900">
Läufer {$_("laeufer")}
</h1> </h1>
</div> </div>
<div class="my-1 px-1 w-full overflow-hidden sm:w-1/2 md:w-1/3"> <div class="my-1 px-1 w-full overflow-hidden sm:w-1/2 md:w-1/3">
@@ -160,7 +161,7 @@
{general.total_distance} {general.total_distance}
</h1> </h1>
<h1 class="text-2xl font-semibold text-center text-gray-900"> <h1 class="text-2xl font-semibold text-center text-gray-900">
Kilometer gesamt {$_("kilometer-gesamt")}
</h1> </h1>
</div> </div>
<div class="my-1 px-1 w-full overflow-hidden sm:w-1/2 md:w-1/3"> <div class="my-1 px-1 w-full overflow-hidden sm:w-1/2 md:w-1/3">
@@ -168,7 +169,7 @@
{general.total_donation} {general.total_donation}
</h1> </h1>
<h1 class="text-2xl font-semibold text-center text-gray-900"> <h1 class="text-2xl font-semibold text-center text-gray-900">
Spendensumme {$_("spendensumme")}
</h1> </h1>
</div> </div>
</div> </div>
@@ -176,7 +177,7 @@
{:else if current_page === "runners_distance"} {:else if current_page === "runners_distance"}
<div transition:slide|local> <div transition:slide|local>
<h1 class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5"> <h1 class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5">
Top-Läufer (Distanz) {$_("top-laeufer")} ({$_("distanz")})
</h1> </h1>
<table class="table p-4 bg-white shadow rounded-lg w-full"> <table class="table p-4 bg-white shadow rounded-lg w-full">
<thead> <thead>
@@ -184,22 +185,22 @@
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Platz {$_("platz")}
</th> </th>
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Läufer {$_("laeufer")}
</th> </th>
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Organisation {$_("organisation")}
</th> </th>
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Kilometer {$_("kilometer")}
</th> </th>
</tr> </tr>
</thead> </thead>
@@ -227,7 +228,7 @@
{:else if current_page === "runners_laptime"} {:else if current_page === "runners_laptime"}
<div transition:slide|local> <div transition:slide|local>
<h1 class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5"> <h1 class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5">
Top-Läufer (Rundenzeit) {$_("top-laeufer")} ({$_("rundenzeit")})
</h1> </h1>
<table class="table p-4 bg-white shadow rounded-lg w-full"> <table class="table p-4 bg-white shadow rounded-lg w-full">
<thead> <thead>
@@ -235,22 +236,22 @@
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Platz {$_("platz")}
</th> </th>
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Läufer {$_("laeufer")}
</th> </th>
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Organisation {$_("organisation")}
</th> </th>
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Schnellste Rundenzeit {$_("schnellste-rundenzeit")}
</th> </th>
</tr> </tr>
</thead> </thead>
@@ -278,7 +279,7 @@
{:else if current_page === "orgs_distance"} {:else if current_page === "orgs_distance"}
<div transition:slide|local> <div transition:slide|local>
<h1 class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5"> <h1 class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5">
Top-Organsiationen {$_("top-organsiationen")}
</h1> </h1>
<table class="table p-4 bg-white shadow rounded-lg w-full"> <table class="table p-4 bg-white shadow rounded-lg w-full">
<thead> <thead>
@@ -286,17 +287,17 @@
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Platz {$_("platz")}
</th> </th>
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Organsiation {$_("organsiation")}
</th> </th>
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Kilometer {$_("kilometer")}
</th> </th>
</tr> </tr>
</thead> </thead>
@@ -320,7 +321,7 @@
{:else if current_page === "teams_distance"} {:else if current_page === "teams_distance"}
<div transition:slide|local> <div transition:slide|local>
<h1 class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5"> <h1 class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5">
Top-Teams {$_("top-teams")}
</h1> </h1>
<table class="table p-4 bg-white shadow rounded-lg w-full"> <table class="table p-4 bg-white shadow rounded-lg w-full">
<thead> <thead>
@@ -328,17 +329,17 @@
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Platz {$_("platz")}
</th> </th>
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Team {$_("team")}
</th> </th>
<th <th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
> >
Kilometer {$_("kilometer")}
</th> </th>
</tr> </tr>
</thead> </thead>

View File

@@ -1,11 +1,12 @@
<script> <script>
import { apikey, lang, stationinfo, api_endpoint } from "./store.js"; import { apikey, lang, api_endpoint, laptime_track } from "./store.js";
import isURL from "validator/lib/isURL"; import isURL from "validator/lib/isURL";
import isUUID from "validator/lib/isUUID"; import isUUID from "validator/lib/isUUID";
import axios from "axios"; import axios from "axios";
import { _, locale } from "svelte-i18n"; import { _, locale } from "svelte-i18n";
let token; let token;
let api_endpoint_input; let api_endpoint_input = "";
let track;
$: error = false; $: error = false;
$: errormessage = ""; $: errormessage = "";
$: isTokenValid = $: isTokenValid =
@@ -61,13 +62,11 @@
</div> </div>
{/if} {/if}
{/if} {/if}
{#if $api_endpoint} {#if $api_endpoint && !$apikey}
<form <form
class="flex flex-col pt-3 md:pt-8" class="flex flex-col pt-3 md:pt-8"
onsubmit="event.preventDefault();" onsubmit="event.preventDefault();"
on:submit={() => { on:submit={() => {
console.log({ token });
// return
axios axios
.request({ .request({
method: "GET", method: "GET",
@@ -78,7 +77,6 @@
error = false; error = false;
errormessage = ""; errormessage = "";
apikey.set(token); apikey.set(token);
stationinfo.set(JSON.stringify(response.data));
}) })
.catch(function (e) { .catch(function (e) {
error = true; error = true;
@@ -114,6 +112,37 @@
>{$_("configure")}</button >{$_("configure")}</button
> >
</form> </form>
{:else if $api_endpoint && $apikey}
<form
class="flex flex-col pt-3 md:pt-8"
onsubmit="event.preventDefault();"
on:submit={() => {
laptime_track.set(track);
}}
>
<div class="flex flex-col pt-4">
<label for="track" class="text-lg">{$_("track_id")}</label>
<input
type="number"
id="track"
placeholder="Track"
bind:value={track}
class:border-red-500={!isTokenValid}
class:border-solid={!isTokenValid}
class:border-3={!isTokenValid}
class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 mt-1 leading-tight focus:outline-none focus:shadow-outline"
/>
</div>
<button
disabled={!track}
class:cursor-pointer={track}
class:opacity-50={!track}
id="configure"
type="submit"
class="bg-black text-white font-bold text-lg hover:bg-gray-700 p-2 mt-8 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-black"
>{$_("configure")}</button
>
</form>
{:else} {:else}
<form <form
class="flex flex-col pt-3 md:pt-8" class="flex flex-col pt-3 md:pt-8"

View File

@@ -1,7 +1,7 @@
<script> <script>
import { _ } from "svelte-i18n"; import { _ } from "svelte-i18n";
import { apikey, api_endpoint, lang, laptime_track, clear } from "./store.js";
import { apikey, api_endpoint, lang, page, stationinfo } from "./store.js"; export let settings_open = false;
</script> </script>
<div class="p-5 min-h-screen"> <div class="p-5 min-h-screen">
@@ -9,34 +9,12 @@
Lauf Für Kaya! Beamershow Lauf Für Kaya! Beamershow
</h1> </h1>
<h1 class="text-3xl w-full text-center text-gray-900">{$_("settings")}</h1> <h1 class="text-3xl w-full text-center text-gray-900">{$_("settings")}</h1>
<p class="block text-sm font-bold text-gray-700 mt-2">{$_("api_endpoint")}</p>
<p class="block text-sm text-gray-700">{$api_endpoint}</p>
<p class="block text-sm font-bold text-gray-700 mt-2">{$_("api_key")}</p> <p class="block text-sm font-bold text-gray-700 mt-2">{$_("api_key")}</p>
<p class="block text-sm text-gray-700">{$apikey}</p> <p class="block text-sm text-gray-700">{$apikey}</p>
<p class="block text-sm font-bold text-gray-700 mt-2">
{$_("station_description")}
</p>
<p class="block text-sm text-gray-700">
{JSON.parse($stationinfo).description}
</p>
<p class="block text-sm font-bold text-gray-700 mt-2">{$_("station_id")}</p>
<p class="block text-sm text-gray-700">{JSON.parse($stationinfo).id}</p>
<p class="block text-sm font-bold text-gray-700 mt-2">{$_("track_id")}</p> <p class="block text-sm font-bold text-gray-700 mt-2">{$_("track_id")}</p>
<p class="block text-sm text-gray-700">{JSON.parse($stationinfo).track.id}</p> <p class="block text-sm text-gray-700">{$laptime_track}</p>
<p class="block text-sm font-bold text-gray-700 mt-2">{$_("track_name")}</p>
<p class="block text-sm text-gray-700">
{JSON.parse($stationinfo).track.name}
</p>
<p class="block text-sm font-bold text-gray-700 mt-2">
{$_("track_distance")}
</p>
<p class="block text-sm text-gray-700">
{JSON.parse($stationinfo).track.distance}
</p>
<p class="block text-sm font-bold text-gray-700 mt-2">
{$_("minimum_lap_time")}
</p>
<p class="block text-sm text-gray-700">
{JSON.parse($stationinfo).track.minimumLapTime}s
</p>
<p class="block text-sm font-bold text-gray-700 mt-2">{$_("language")}</p> <p class="block text-sm font-bold text-gray-700 mt-2">{$_("language")}</p>
<div class="w-full"> <div class="w-full">
<div class="inline-block mr-2 mt-2"> <div class="inline-block mr-2 mt-2">
@@ -95,16 +73,15 @@
<br /> <br />
<button <button
on:click={() => { on:click={() => {
page.set(""); settings_open = false;
}} }}
class="mb-3 w-full py-3 border-black border-3 text-black focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-black" class="mb-3 w-full py-3 border-black border-3 text-black focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-black"
>{$_("back_to_scanner")}</button >{$_("back_to_scanner")}</button
> >
<button <button
on:click={() => { on:click={() => {
apikey.set(""); clear();
api_endpoint.set(""); settings_open = false;
page.set("");
}} }}
class="w-full py-3 bg-black text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-black" class="w-full py-3 bg-black text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-black"
>{$_("log_out_from_this_client")}</button >{$_("log_out_from_this_client")}</button

View File

@@ -1,27 +1,41 @@
{ {
"api_endpoint": "API-Endpunkt", "api_endpoint": "API-Endpunkt",
"api_key": "API Key", "api_key": "API Key",
"back_to_scanner": "Zurück zum Scanner", "back_to_scanner": "Zurück zur Beamershow",
"client_token": "Client Token", "client_token": "Client Token",
"configuration": "Konfiguration", "configuration": "Konfiguration",
"configure": "Konfigurieren", "configure": "Konfigurieren",
"distanz": "Distanz",
"error": "Error!", "error": "Error!",
"kilometer": "Kilometer",
"kilometer-gesamt": "Kilometer gesamt",
"laeufer": "Läufer",
"language": "Sprache", "language": "Sprache",
"log_out_from_this_client": "Von diesem Scanner abmelden", "log_out_from_this_client": "Von dieser Beamershow abmelden",
"minimum_lap_time": "minimale Rundenzeit", "minimum_lap_time": "minimale Rundenzeit",
"organisation": "Organisation",
"organsiation": "Organsiation",
"platz": "Platz",
"please_check_your_token_and_try_again": "Bitte überprüfe den Token und versuche es erneut...", "please_check_your_token_and_try_again": "Bitte überprüfe den Token und versuche es erneut...",
"please_provide_a_valid_client_api_endpoint": "Bitte gebe einen gültigen API-Endpunkt an ...", "please_provide_a_valid_client_api_endpoint": "Bitte gebe einen gültigen API-Endpunkt an ...",
"please_provide_a_valid_client_token": "Bitte gebe einen gültigen Client-Token an ...", "please_provide_a_valid_client_token": "Bitte gebe einen gültigen Client-Token an ...",
"please_provide_the_scan_client_token": "Bitte gebe den Beamershow-Client-Token an.", "please_provide_the_scan_client_token": "Bitte gebe den Beamershow-Client-Token an.",
"please_scan_a_card": "Bitte scanne eine Karte ...", "please_scan_a_card": "Bitte scanne eine Karte ...",
"rundenzeit": "Rundenzeit",
"runner_card": "Läuferkarte", "runner_card": "Läuferkarte",
"scan": "Scannen!", "scan": "Scannen!",
"schnellste-rundenzeit": "Schnellste Rundenzeit",
"see_our_configuration_guide": "Siehe dir unsere Konfigurationsanleitung an.", "see_our_configuration_guide": "Siehe dir unsere Konfigurationsanleitung an.",
"settings": "Einstellungen", "settings": "Einstellungen",
"spendensumme": "Spendensumme",
"station_description": "Beschreibung der Scanstation", "station_description": "Beschreibung der Scanstation",
"station_id": "Scanstations-ID", "station_id": "Scanstations-ID",
"team": "Team",
"the_provided_scan_station_is_disabled": "Die angegebene Scanstation ist deaktiviert.", "the_provided_scan_station_is_disabled": "Die angegebene Scanstation ist deaktiviert.",
"the_provided_scan_station_token_is_invalid": "Der angegebene Scanstation-Token ist ungültig.", "the_provided_scan_station_token_is_invalid": "Der angegebene Scanstation-Token ist ungültig.",
"top-laeufer": "Top-Läufer",
"top-organsiationen": "Top-Organsiationen",
"top-teams": "Top-Teams",
"track_distance": "Länge des Tracks", "track_distance": "Länge des Tracks",
"track_id": "Track ID", "track_id": "Track ID",
"track_name": "Track Name" "track_name": "Track Name"

View File

@@ -1,27 +1,41 @@
{ {
"api_endpoint": "API Endpoint", "api_endpoint": "API Endpoint",
"api_key": "API Key", "api_key": "API Key",
"back_to_scanner": "Back to Scanner", "back_to_scanner": "Back to Beamershow",
"client_token": "Client Token", "client_token": "Client Token",
"configuration": "Configuration", "configuration": "Configuration",
"configure": "Configure", "configure": "Configure",
"distanz": "distance",
"error": "Error!", "error": "Error!",
"kilometer": "Kilometers",
"kilometer-gesamt": "Kilometers total",
"laeufer": "Runners",
"language": "Language", "language": "Language",
"log_out_from_this_client": "Log Out from this Client", "log_out_from_this_client": "Log Out from this Client",
"minimum_lap_time": "minimum lap time", "minimum_lap_time": "minimum lap time",
"organisation": "Organization",
"organsiation": "Organization",
"platz": "Place",
"please_check_your_token_and_try_again": "Please check your token and try again...", "please_check_your_token_and_try_again": "Please check your token and try again...",
"please_provide_a_valid_client_api_endpoint": "Please provide a valid api endpoint...", "please_provide_a_valid_client_api_endpoint": "Please provide a valid api endpoint...",
"please_provide_a_valid_client_token": "Please provide a valid client token...", "please_provide_a_valid_client_token": "Please provide a valid client token...",
"please_provide_the_scan_client_token": "Please provide the scan client token.", "please_provide_the_scan_client_token": "Please provide the scan client token.",
"please_scan_a_card": "please scan a card...", "please_scan_a_card": "please scan a card...",
"rundenzeit": "fastetst lap",
"runner_card": "Runner Card", "runner_card": "Runner Card",
"scan": "Scan!", "scan": "Scan!",
"schnellste-rundenzeit": "Fastest lap",
"see_our_configuration_guide": "See our configuration guide.", "see_our_configuration_guide": "See our configuration guide.",
"settings": "Settings", "settings": "Settings",
"spendensumme": "Donations",
"station_description": "Station Description", "station_description": "Station Description",
"station_id": "Scanstation ID", "station_id": "Scanstation ID",
"team": "Team",
"the_provided_scan_station_is_disabled": "The provided scan station is disabled.", "the_provided_scan_station_is_disabled": "The provided scan station is disabled.",
"the_provided_scan_station_token_is_invalid": "The provided scan station token is invalid.", "the_provided_scan_station_token_is_invalid": "The provided scan station token is invalid.",
"top-laeufer": "Top runners",
"top-organsiationen": "Top organizations",
"top-teams": "Top teams",
"track_distance": "Track Distance", "track_distance": "Track Distance",
"track_id": "Track ID", "track_id": "Track ID",
"track_name": "Track Name" "track_name": "Track Name"

View File

@@ -10,15 +10,10 @@ export const apikey = writable(stored_apikey);
apikey.subscribe((value) => { apikey.subscribe((value) => {
localStorage.setItem('apikey', value); localStorage.setItem('apikey', value);
}); });
const stored_stationinfo = localStorage.getItem('stationinfo'); const stored_laptime_track = localStorage.getItem('laptime_track');
export const stationinfo = writable(stored_stationinfo); export const laptime_track = writable(stored_laptime_track);
stationinfo.subscribe((value) => { laptime_track.subscribe((value) => {
localStorage.setItem('stationinfo', value); localStorage.setItem('laptime_track', value);
});
const stored_page = localStorage.getItem('page');
export const page = writable(stored_page);
page.subscribe((value) => {
localStorage.setItem('page', value);
}); });
const stored_lang = localStorage.getItem('lang') === 'null' ? navigator.language : localStorage.getItem('lang'); const stored_lang = localStorage.getItem('lang') === 'null' ? navigator.language : localStorage.getItem('lang');
export const lang = writable(stored_lang); export const lang = writable(stored_lang);
@@ -29,5 +24,6 @@ lang.subscribe((value) => {
export function clear(){ export function clear(){
api_endpoint.set(null) api_endpoint.set(null)
apikey.set(null); apikey.set(null);
laptime_track.set(null)
localStorage.clear(); localStorage.clear();
} }