10 Commits
0.1.3 ... 0.1.5

Author SHA1 Message Date
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
7f7b743f41 🚀Bumped version to 0.1.4 2023-02-05 13:30:11 +01:00
ee6af3e069 add rst command 2023-02-05 13:29:35 +01:00
ea08127927 bullet-proof login ux 2023-02-05 13:25:22 +01:00
e0f400a800 Settings: reload on lang change 2023-02-05 13:10:53 +01:00
c485898b7d cleanup invalid track stuff (leftovers from scanclient) 2023-02-05 13:10:03 +01:00
9 changed files with 2772 additions and 76 deletions

View File

@@ -12,6 +12,13 @@ get:
path: odit-registry-builder
name: password
---
kind: secret
name: npm_url
get:
path: odit-npm-cache
name: url
---
kind: pipeline
type: kubernetes
@@ -26,6 +33,9 @@ steps:
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:
- dev
@@ -37,6 +47,34 @@ trigger:
event:
- 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
type: kubernetes
@@ -50,6 +88,9 @@ steps:
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:
- '${DRONE_TAG}'

View File

@@ -2,8 +2,28 @@
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)
> 5 February 2023
- 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)
- 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)
#### [0.1.3](https://git.odit.services/lfk/beamershow/compare/0.1.2...0.1.3)
> 8 April 2021
- 🚀Bumped version to 0.1.3 [`80f5c38`](https://git.odit.services/lfk/beamershow/commit/80f5c38c364c02d70a99f0e06ea9153e10438bfb)
- Fixed image name [`205e09e`](https://git.odit.services/lfk/beamershow/commit/205e09e2fc6a2a49251278a8ead31e1718ac7e44)
#### [0.1.2](https://git.odit.services/lfk/beamershow/compare/0.1.1...0.1.2)

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
COPY . .
RUN yarn
RUN yarn build
COPY . ./
RUN npm config set registry $NPM_REGISTRY_URL && npm i -g pnpm@8 && pnpm i
RUN pnpm build
# final image
FROM alpine
COPY --from=0 /app/dist /app
FROM fholzer/nginx-brotli:v1.19.1
COPY --from=1 /app /usr/share/nginx/html
FROM registry.odit.services/library/nginx-brotli:3.15 as final
COPY --from=build /app/dist /usr/share/nginx/html
COPY ./nginx.conf /etc/nginx/nginx.conf

View File

@@ -1,6 +1,6 @@
{
"name": "@lfk/beamershow",
"version": "0.1.3",
"version": "0.1.5",
"scripts": {
"dev": "vite",
"build": "vite build",
@@ -10,20 +10,20 @@
"release": "release-it --only-version"
},
"devDependencies": {
"@odit/license-exporter": "^0.0.11",
"@svitejs/vite-plugin-svelte": "^0.11.1",
"@tsconfig/svelte": "^1.0.10",
"@types/html-minifier": "^4.0.0",
"axios": "^0.21.1",
"html-minifier": "^4.0.0",
"husky": "^5.1.3",
"prettier": "^2.2.1",
"prettier-plugin-svelte": "^2.2.0",
"@odit/license-exporter": "0.0.11",
"@svitejs/vite-plugin-svelte": "0.11.1",
"@tsconfig/svelte": "1.0.10",
"@types/html-minifier": "4.0.0",
"axios": "0.21.1",
"html-minifier": "4.0.0",
"husky": "5.1.3",
"prettier": "2.2.1",
"prettier-plugin-svelte": "2.2.0",
"release-it": "14.5.0",
"svelte": "3.36.0",
"svelte-i18n": "3.3.9",
"svelte-preprocess": "4.7.0",
"validator": "^13.5.2",
"validator": "13.5.2",
"vite": "2.1.4",
"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

@@ -12,12 +12,10 @@
import Login from "./Login.svelte";
import Settings from "./Settings.svelte";
export let settings_open = false;
$: is_configured =
$apikey &&
$apikey !== "null" &&
$apikey !== "" &&
$laptime_track != 0 &&
$laptime_track != null;
$: is_configured = $apikey?.length === 44 && $api_endpoint?.includes("://");
// &&
// $laptime_track != 0 &&
// $laptime_track != null;
init({
fallbackLocale: "en-US",
initialLocale: $lang,
@@ -29,12 +27,12 @@
if (e.key === "Escape") {
modal_open = false;
}
if (e.keyCode === 13) {
if (createbtnenabled === true) {
createbtnenabled = false;
submit();
}
}
// if (e.keyCode === 13) {
// if (createbtnenabled === true) {
// createbtnenabled = false;
// submit();
// }
// }
if (command === "" && e.key === "c") {
command = "c";
} else if (command === "c" && e.key === "n") {

View File

@@ -1,5 +1,5 @@
<script>
import { apikey, lang, api_endpoint, laptime_track } from "./store.js";
import { apikey, lang, api_endpoint, laptime_track, clear } from "./store.js";
import isURL from "validator/lib/isURL";
import isUUID from "validator/lib/isUUID";
import axios from "axios";
@@ -10,10 +10,12 @@
$: error = false;
$: errormessage = "";
$: isTokenValid =
token?.length === 44 &&
token.split(".")[0].length === 7 &&
isUUID(token.split(".")[1]);
$: isEndpointValid = isURL(api_endpoint_input);
token === "rst" ||
(token?.length === 44 &&
token.split(".")[0].length === 7 &&
isUUID(token.split(".")[1]));
$: isEndpointValid =
api_endpoint_input === "rst" || isURL(api_endpoint_input);
</script>
<div class="w-full flex flex-wrap">
@@ -62,11 +64,15 @@
</div>
{/if}
{/if}
{#if $api_endpoint && !$apikey}
{#if $api_endpoint?.includes("://") && (!$apikey || $apikey == null)}
<form
class="flex flex-col pt-3 md:pt-8"
onsubmit="event.preventDefault();"
on:submit={() => {
if (token === "rst") {
clear();
return;
}
axios
.request({
method: "GET",
@@ -112,42 +118,19 @@
>{$_("configure")}</button
>
</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}
<form
class="flex flex-col pt-3 md:pt-8"
onsubmit="event.preventDefault();"
on:submit={() => {
if (api_endpoint_input === "rst") {
clear();
api_endpoint_input = "";
return;
}
if (api_endpoint_input.includes("api/")) {
api_endpoint_input = api_endpoint_input.replace("api/", "");
}
if (api_endpoint_input.substr(-1) !== "/") {
api_endpoint_input = api_endpoint_input + "/";
}

View File

@@ -13,14 +13,13 @@
<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 text-gray-700">{$apikey}</p>
<p class="block text-sm font-bold text-gray-700 mt-2">{$_("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">{$_("language")}</p>
<div class="w-full">
<div class="inline-block mr-2 mt-2">
<button
on:click={() => {
lang.set("de-DE");
location.reload();
}}
type="button"
class:bg-blue-700={$lang === "de-DE"}
@@ -46,6 +45,7 @@
<button
on:click={() => {
lang.set("en-EN");
location.reload();
}}
type="button"
class:bg-blue-700={$lang === "en-EN"}

View File

@@ -1,29 +1,39 @@
import { writable } from 'svelte/store';
const stored_api_endpoint = localStorage.getItem('api_endpoint')||"";
const stored_api_endpoint = localStorage.getItem('api_endpoint');
export const api_endpoint = writable(stored_api_endpoint);
api_endpoint.subscribe((value) => {
localStorage.setItem('api_endpoint', value);
if (value != null) {
localStorage.setItem('api_endpoint', value);
}
});
const stored_apikey = localStorage.getItem('apikey');
export const apikey = writable(stored_apikey);
apikey.subscribe((value) => {
localStorage.setItem('apikey', value);
if (value != null) {
localStorage.setItem('apikey', value);
}
});
const stored_laptime_track = localStorage.getItem('laptime_track');
export const laptime_track = writable(stored_laptime_track);
laptime_track.subscribe((value) => {
localStorage.setItem('laptime_track', value);
if (value != null) {
localStorage.setItem('laptime_track', value);
}
});
const stored_lang = localStorage.getItem('lang') === 'null' ? navigator.language : localStorage.getItem('lang');
export const lang = writable(stored_lang);
lang.subscribe((value) => {
localStorage.setItem('lang', value);
if (value != null) {
localStorage.setItem('lang', value);
}
});
export function clear(){
export function clear() {
api_endpoint.set(null)
api_endpoint.set("")
apikey.set(null);
apikey.set("");
laptime_track.set(null)
localStorage.clear();
}