11 Commits

Author SHA1 Message Date
b287db4d0a pin clock to bottom
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-15 20:34:14 +02:00
b3ce711e6b fix: width of general container 2023-04-15 20:26:22 +02:00
456c0635a4 reload data every 90s
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-15 20:02:06 +02:00
b50398f6eb monospace clock 2023-04-15 20:01:55 +02:00
e04e6713bc default fallback on no data 2023-04-15 20:01:49 +02:00
de373390ba updated pnpm lock 2023-04-15 20:01:34 +02:00
5be665b65f 🚀Bumped version to 0.1.5
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-29 20:09:39 +02:00
324612b5dd Switched ci over to pnpm cache
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-29 20:08:19 +02:00
ca1c96b252 Docker copy all 2023-03-29 20:06:46 +02:00
d284e8184c pinned dependencies 2023-03-29 20:06:26 +02:00
701aae9ed4 Switched dockerfile over to pnpm + cache
And bumped build image to fresh node
2023-03-29 20:05:12 +02:00
7 changed files with 2949 additions and 6231 deletions

View File

@@ -12,6 +12,13 @@ get:
path: odit-registry-builder path: odit-registry-builder
name: password name: password
---
kind: secret
name: npm_url
get:
path: odit-npm-cache
name: url
--- ---
kind: pipeline kind: pipeline
type: kubernetes type: kubernetes
@@ -26,6 +33,9 @@ steps:
from_secret: docker_username from_secret: docker_username
password: password:
from_secret: docker_password from_secret: docker_password
build_args:
- NPM_REGISTRY_URL:
from_secret: npm_url
repo: registry.odit.services/lfk/beamershow repo: registry.odit.services/lfk/beamershow
tags: tags:
- dev - dev
@@ -37,6 +47,34 @@ trigger:
event: event:
- push - push
---
kind: pipeline
type: kubernetes
name: build:latest
steps:
- name: build latest
image: plugins/docker
depends_on: [clone]
settings:
username:
from_secret: docker_username
password:
from_secret: docker_password
build_args:
- NPM_REGISTRY_URL:
from_secret: npm_url
repo: registry.odit.services/lfk/beamershow
tags:
- latest
registry: registry.odit.services
mtu: 1000
trigger:
branch:
- main
event:
- push
--- ---
kind: pipeline kind: pipeline
type: kubernetes type: kubernetes
@@ -50,6 +88,9 @@ steps:
from_secret: docker_username from_secret: docker_username
password: password:
from_secret: docker_password from_secret: docker_password
build_args:
- NPM_REGISTRY_URL:
from_secret: npm_url
repo: registry.odit.services/lfk/beamershow repo: registry.odit.services/lfk/beamershow
tags: tags:
- '${DRONE_TAG}' - '${DRONE_TAG}'

View File

@@ -2,11 +2,21 @@
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.1.5](https://git.odit.services/lfk/beamershow/compare/0.1.4...0.1.5)
- Switched dockerfile over to pnpm + cache [`701aae9`](https://git.odit.services/lfk/beamershow/commit/701aae9ed4af66b973e88fec384e46752fcb9ca2)
- Switched ci over to pnpm cache [`324612b`](https://git.odit.services/lfk/beamershow/commit/324612b5ddc1cf148a7750a02cdce557bef54d38)
- pinned dependencies [`d284e81`](https://git.odit.services/lfk/beamershow/commit/d284e8184c5a3c357398e3ab5a24a2e611001640)
- Docker copy all [`ca1c96b`](https://git.odit.services/lfk/beamershow/commit/ca1c96b252c9665b94dd9ef37c700afbb0039d46)
#### [0.1.4](https://git.odit.services/lfk/beamershow/compare/0.1.3...0.1.4) #### [0.1.4](https://git.odit.services/lfk/beamershow/compare/0.1.3...0.1.4)
> 5 February 2023
- cleanup invalid track stuff (leftovers from scanclient) [`c485898`](https://git.odit.services/lfk/beamershow/commit/c485898b7db7ae09f6e405e12aa6d458833f2dcf) - cleanup invalid track stuff (leftovers from scanclient) [`c485898`](https://git.odit.services/lfk/beamershow/commit/c485898b7db7ae09f6e405e12aa6d458833f2dcf)
- bullet-proof login ux [`ea08127`](https://git.odit.services/lfk/beamershow/commit/ea08127927e2b1ebcbcd7907fbf51a66a43da421) - bullet-proof login ux [`ea08127`](https://git.odit.services/lfk/beamershow/commit/ea08127927e2b1ebcbcd7907fbf51a66a43da421)
- add rst command [`ee6af3e`](https://git.odit.services/lfk/beamershow/commit/ee6af3e06921ef33651076b8767149c2df3a1f2d) - add rst command [`ee6af3e`](https://git.odit.services/lfk/beamershow/commit/ee6af3e06921ef33651076b8767149c2df3a1f2d)
- 🚀Bumped version to 0.1.4 [`7f7b743`](https://git.odit.services/lfk/beamershow/commit/7f7b743f414b77902a358b6bd813412096d195b3)
- Settings: reload on lang change [`e0f400a`](https://git.odit.services/lfk/beamershow/commit/e0f400a800f2652cf3edf2ac0a5f802b65d0c460) - Settings: reload on lang change [`e0f400a`](https://git.odit.services/lfk/beamershow/commit/e0f400a800f2652cf3edf2ac0a5f802b65d0c460)
#### [0.1.3](https://git.odit.services/lfk/beamershow/compare/0.1.2...0.1.3) #### [0.1.3](https://git.odit.services/lfk/beamershow/compare/0.1.2...0.1.3)

View File

@@ -1,12 +1,12 @@
FROM node:15.11.0-alpine3.13 FROM registry.odit.services/hub/library/node:19.8.1-alpine3.16 as build
ARG NPM_REGISTRY_URL=https://registry.npmjs.org
WORKDIR /app WORKDIR /app
COPY . .
RUN yarn COPY . ./
RUN yarn build RUN npm config set registry $NPM_REGISTRY_URL && npm i -g pnpm@8 && pnpm i
RUN pnpm build
# final image # final image
FROM alpine FROM registry.odit.services/library/nginx-brotli:3.15 as final
COPY --from=0 /app/dist /app COPY --from=build /app/dist /usr/share/nginx/html
FROM fholzer/nginx-brotli:v1.19.1
COPY --from=1 /app /usr/share/nginx/html
COPY ./nginx.conf /etc/nginx/nginx.conf COPY ./nginx.conf /etc/nginx/nginx.conf

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "@lfk/beamershow", "name": "@lfk/beamershow",
"version": "0.1.4", "version": "0.1.5",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vite build", "build": "vite build",
@@ -10,20 +10,20 @@
"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"
}, },

2644
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -130,7 +130,7 @@
}, 1000); }, 1000);
setInterval(() => { setInterval(() => {
fetch_all(); fetch_all();
}, 15000); }, 90000);
setInterval(() => { setInterval(() => {
current_page = pages.cycle(current_page); current_page = pages.cycle(current_page);
}, 20000); }, 20000);
@@ -140,228 +140,244 @@
class="min-h-screen flex items-center justify-center bg-gray-100" class="min-h-screen flex items-center justify-center bg-gray-100"
style="background-image: url('/beamershow_background.png');background-position: center;background-size: contain;background-repeat:no-repeat;" style="background-image: url('/beamershow_background.png');background-position: center;background-size: contain;background-repeat:no-repeat;"
> >
<div class="max-w-xl w-full"> <div class="w-full">
{#if current_page === "general"} <div style="width:55vw;" class="mx-auto">
<div transition:slide|local> <!-- -->
<h1 class="mr-6 text-7xl font-semibold text-center text-gray-900"> {#if current_page === "general"}
{hours}:{minutes}:{seconds} <div transition:slide|local>
</h1> <h1 class="mr-6 text-7xl font-semibold text-center text-gray-900">
<!-- --> Statistiken
<div class="flex flex-wrap -mx-1 overflow-hidden mt-5"> </h1>
<div class="my-1 px-1 w-full overflow-hidden sm:w-1/2 md:w-1/3"> <!-- -->
<h1 class="text-5xl font-semibold text-center text-gray-900"> <div class="flex flex-wrap -mx-1 overflow-hidden mt-5">
{general.total_runners} <div class="my-1 px-1 w-full overflow-hidden sm:w-1/2 md:w-1/3">
</h1> <h1 class="text-5xl font-semibold text-center text-gray-900">
<h1 class="text-2xl font-semibold text-center text-gray-900"> {general.total_runners || "0"}
{$_("laeufer")} </h1>
</h1> <h1 class="text-2xl font-semibold text-center text-gray-900">
</div> {$_("laeufer")}
<div class="my-1 px-1 w-full overflow-hidden sm:w-1/2 md:w-1/3"> </h1>
<h1 class="text-5xl font-semibold text-center text-gray-900"> </div>
{general.total_distance} <div class="my-1 px-1 w-full overflow-hidden sm:w-1/2 md:w-1/3">
</h1> <h1 class="text-5xl font-semibold text-center text-gray-900">
<h1 class="text-2xl font-semibold text-center text-gray-900"> {general.total_distance || "0"}
{$_("kilometer-gesamt")} </h1>
</h1> <h1 class="text-2xl font-semibold text-center text-gray-900">
</div> {$_("kilometer-gesamt")}
<div class="my-1 px-1 w-full overflow-hidden sm:w-1/2 md:w-1/3"> </h1>
<h1 class="text-5xl font-semibold text-center text-gray-900"> </div>
{general.total_donation} <div class="my-1 px-1 w-full overflow-hidden sm:w-1/2 md:w-1/3">
</h1> <h1 class="text-5xl font-semibold text-center text-gray-900">
<h1 class="text-2xl font-semibold text-center text-gray-900"> {general.total_donation || "0"}
{$_("spendensumme")} </h1>
</h1> <h1 class="text-2xl font-semibold text-center text-gray-900">
{$_("spendensumme")}
</h1>
</div>
</div> </div>
</div> </div>
</div> {:else if current_page === "runners_distance"}
{:else if current_page === "runners_distance"} <div transition:slide|local>
<div transition:slide|local> <h1
<h1 class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5"> class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5"
{$_("top-laeufer")} ({$_("distanz")}) >
</h1> {$_("top-laeufer")} ({$_("distanz")})
<table class="table p-4 bg-white shadow rounded-lg w-full"> </h1>
<thead> <table class="table p-4 bg-white shadow rounded-lg w-full">
<tr> <thead>
<th <tr>
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" <th
> class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
{$_("platz")} >
</th> {$_("platz")}
<th </th>
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" <th
> class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
{$_("laeufer")} >
</th> {$_("laeufer")}
<th </th>
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" <th
> class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
{$_("organisation")} >
</th> {$_("organisation")}
<th </th>
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" <th
> class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
{$_("kilometer")} >
</th> {$_("kilometer")}
</tr> </th>
</thead>
<tbody>
{#each runners as r, i}
<tr class="text-gray-700">
<td class="border p-4 dark:border-dark-5">
{i + 1}
</td>
<td class="border p-4 dark:border-dark-5">
{r.firstname}
{r.lastname}
</td>
<td class="border p-4 dark:border-dark-5">
{r.group.name}
</td>
<td class="border p-4 dark:border-dark-5">
{r.distance / 1000} km
</td>
</tr> </tr>
{/each} </thead>
</tbody> <tbody>
</table> {#each runners as r, i}
</div> <tr class="text-gray-700">
{:else if current_page === "runners_laptime"} <td class="border p-4 dark:border-dark-5">
<div transition:slide|local> {i + 1}
<h1 class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5"> </td>
{$_("top-laeufer")} ({$_("rundenzeit")}) <td class="border p-4 dark:border-dark-5">
</h1> {r.firstname}
<table class="table p-4 bg-white shadow rounded-lg w-full"> {r.lastname}
<thead> </td>
<tr> <td class="border p-4 dark:border-dark-5">
<th {r.group.name}
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" </td>
> <td class="border p-4 dark:border-dark-5">
{$_("platz")} {r.distance / 1000} km
</th> </td>
<th </tr>
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" {/each}
> </tbody>
{$_("laeufer")} </table>
</th> </div>
<th {:else if current_page === "runners_laptime"}
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" <div transition:slide|local>
> <h1
{$_("organisation")} class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5"
</th> >
<th {$_("top-laeufer")} ({$_("rundenzeit")})
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" </h1>
> <table class="table p-4 bg-white shadow rounded-lg w-full">
{$_("schnellste-rundenzeit")} <thead>
</th> <tr>
</tr> <th
</thead> class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
<tbody> >
{#each runners_by_laptime as r, i} {$_("platz")}
<tr class="text-gray-700"> </th>
<td class="border p-4 dark:border-dark-5"> <th
{i + 1} class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
</td> >
<td class="border p-4 dark:border-dark-5"> {$_("laeufer")}
{r.firstname} </th>
{r.lastname} <th
</td> class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
<td class="border p-4 dark:border-dark-5"> >
{r.group.name} {$_("organisation")}
</td> </th>
<td class="border p-4 dark:border-dark-5"> <th
{format_laptime(r.minLaptime)} class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
</td> >
{$_("schnellste-rundenzeit")}
</th>
</tr> </tr>
{/each} </thead>
</tbody> <tbody>
</table> {#each runners_by_laptime as r, i}
</div> <tr class="text-gray-700">
{:else if current_page === "orgs_distance"} <td class="border p-4 dark:border-dark-5">
<div transition:slide|local> {i + 1}
<h1 class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5"> </td>
{$_("top-organsiationen")} <td class="border p-4 dark:border-dark-5">
</h1> {r.firstname}
<table class="table p-4 bg-white shadow rounded-lg w-full"> {r.lastname}
<thead> </td>
<tr> <td class="border p-4 dark:border-dark-5">
<th {r.group.name}
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" </td>
> <td class="border p-4 dark:border-dark-5">
{$_("platz")} {format_laptime(r.minLaptime)}
</th> </td>
<th </tr>
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" {/each}
> </tbody>
{$_("organsiation")} </table>
</th> </div>
<th {:else if current_page === "orgs_distance"}
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" <div transition:slide|local>
> <h1
{$_("kilometer")} class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5"
</th> >
</tr> {$_("top-organsiationen")}
</thead> </h1>
<tbody> <table class="table p-4 bg-white shadow rounded-lg w-full">
{#each orgs as o, i} <thead>
<tr class="text-gray-700"> <tr>
<td class="border p-4 dark:border-dark-5"> <th
{i + 1} class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
</td> >
<td class="border p-4 dark:border-dark-5"> {$_("platz")}
{o.name} </th>
</td> <th
<td class="border p-4 dark:border-dark-5"> class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
{o.distance / 1000} km >
</td> {$_("organsiation")}
</th>
<th
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
>
{$_("kilometer")}
</th>
</tr> </tr>
{/each} </thead>
</tbody> <tbody>
</table> {#each orgs as o, i}
</div> <tr class="text-gray-700">
{:else if current_page === "teams_distance"} <td class="border p-4 dark:border-dark-5">
<div transition:slide|local> {i + 1}
<h1 class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5"> </td>
{$_("top-teams")} <td class="border p-4 dark:border-dark-5">
</h1> {o.name}
<table class="table p-4 bg-white shadow rounded-lg w-full"> </td>
<thead> <td class="border p-4 dark:border-dark-5">
<tr> {o.distance / 1000} km
<th </td>
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" </tr>
> {/each}
{$_("platz")} </tbody>
</th> </table>
<th </div>
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" {:else if current_page === "teams_distance"}
> <div transition:slide|local>
{$_("team")} <h1
</th> class="mr-6 text-7xl font-semibold text-center text-gray-900 mb-5"
<th >
class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900" {$_("top-teams")}
> </h1>
{$_("kilometer")} <table class="table p-4 bg-white shadow rounded-lg w-full">
</th> <thead>
</tr> <tr>
</thead> <th
<tbody> class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
{#each teams as t, i} >
<tr class="text-gray-700"> {$_("platz")}
<td class="border p-4 dark:border-dark-5"> </th>
{i + 1} <th
</td> class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
<td class="border p-4 dark:border-dark-5"> >
{t.name} {$_("team")}
</td> </th>
<td class="border p-4 dark:border-dark-5"> <th
{t.distance / 1000} km class="border p-4 dark:border-dark-5 whitespace-nowrap font-normal text-gray-900"
</td> >
{$_("kilometer")}
</th>
</tr> </tr>
{/each} </thead>
</tbody> <tbody>
</table> {#each teams as t, i}
</div> <tr class="text-gray-700">
{:else} <td class="border p-4 dark:border-dark-5">
<!-- content here --> {i + 1}
{/if} </td>
<td class="border p-4 dark:border-dark-5">
{t.name}
</td>
<td class="border p-4 dark:border-dark-5">
{t.distance / 1000} km
</td>
</tr>
{/each}
</tbody>
</table>
</div>
{:else}
<!-- content here -->
{/if}
</div>
</div> </div>
<h1
class="text-5xl font-semibold text-center text-gray-900 font-mono bottom-2 w-full fixed"
>
{hours}:{minutes}:{seconds}
</h1>
</div> </div>