14 Commits
0.4.0 ... 0.5.0

Author SHA1 Message Date
58830c5db3 🚀Bumped version to 0.5.0
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-19 17:07:08 +02:00
066e67c64f feat(registration): support next input element with ENTER key
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-19 17:06:55 +02:00
5f5b03a8a0 feat(registration): disabled done button for 7.5s
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-19 17:04:36 +02:00
cbfbd92d0e feat(registration): autofocus input fields + done button
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-19 16:58:35 +02:00
418fe7773f feat(registration): disable text select
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-19 16:58:08 +02:00
4b6e11d8d2 🚀Bumped version to 0.4.4
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-19 13:08:38 +02:00
0698038523 fix(registration): Added missing dark styling 2023-04-19 13:08:29 +02:00
297b88016b 🚀Bumped version to 0.4.3
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-19 13:04:53 +02:00
8959223016 fix(href): replaced location.replace with goto 2023-04-19 13:04:44 +02:00
a3e437d966 🚀Bumped version to 0.4.2
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-19 13:00:04 +02:00
19c9fa339b fix(hrefs): Fixed relative locations 2023-04-19 12:59:52 +02:00
8017f009e4 🚀Bumped version to 0.4.1
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-19 12:57:15 +02:00
482d6387fa Redirects/links relative 2023-04-19 12:57:02 +02:00
ff36691ada fix(userstore): Prefix localstorage keys with kiosk- 2023-04-19 12:56:19 +02:00
7 changed files with 91 additions and 11 deletions

View File

@@ -2,8 +2,47 @@
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.5.0](https://git.odit.services/lfk/kiosk/compare/0.4.4...0.5.0)
- feat(registration): autofocus input fields + done button [`cbfbd92`](https://git.odit.services/lfk/kiosk/commit/cbfbd92d0e4f9735a2192125f267f651ed36c9b1)
- feat(registration): disabled done button for 7.5s [`5f5b03a`](https://git.odit.services/lfk/kiosk/commit/5f5b03a8a086799543cf675ccc3a973b781d1987)
- feat(registration): support next input element with ENTER key [`066e67c`](https://git.odit.services/lfk/kiosk/commit/066e67c64f48b00673f2de7727acb230c94c3c13)
- feat(registration): disable text select [`418fe77`](https://git.odit.services/lfk/kiosk/commit/418fe7773fbc981186909a1f7c262c3c1fa1ece2)
#### [0.4.4](https://git.odit.services/lfk/kiosk/compare/0.4.3...0.4.4)
> 19 April 2023
- 🚀Bumped version to 0.4.4 [`4b6e11d`](https://git.odit.services/lfk/kiosk/commit/4b6e11d8d271c638b3c2e4cd3dc887680023dd5e)
- fix(registration): Added missing dark styling [`0698038`](https://git.odit.services/lfk/kiosk/commit/06980385230e32dffe1083ceb4f88e86a9197aef)
#### [0.4.3](https://git.odit.services/lfk/kiosk/compare/0.4.2...0.4.3)
> 19 April 2023
- 🚀Bumped version to 0.4.3 [`297b880`](https://git.odit.services/lfk/kiosk/commit/297b88016bce1619d55bd6dc05f993f59f86382a)
- fix(href): replaced location.replace with goto [`8959223`](https://git.odit.services/lfk/kiosk/commit/8959223016b2bbe8ebae79f55a489cc0503b3c78)
#### [0.4.2](https://git.odit.services/lfk/kiosk/compare/0.4.1...0.4.2)
> 19 April 2023
- 🚀Bumped version to 0.4.2 [`a3e437d`](https://git.odit.services/lfk/kiosk/commit/a3e437d9665e9ee1836770618c10adbbd1c8f7d6)
- fix(hrefs): Fixed relative locations [`19c9fa3`](https://git.odit.services/lfk/kiosk/commit/19c9fa339b3ddc4adef39d5783346bfd0db904af)
#### [0.4.1](https://git.odit.services/lfk/kiosk/compare/0.4.0...0.4.1)
> 19 April 2023
- 🚀Bumped version to 0.4.1 [`8017f00`](https://git.odit.services/lfk/kiosk/commit/8017f009e4ba452b22dd84b1f777f4e0b2f5e8b9)
- fix(userstore): Prefix localstorage keys with `kiosk-` [`ff36691`](https://git.odit.services/lfk/kiosk/commit/ff36691ada802fc1560c430beb865246dff782ed)
- Redirects/links relative [`482d638`](https://git.odit.services/lfk/kiosk/commit/482d6387fac83a05ebaaf762cde7a68818ecf31f)
#### [0.4.0](https://git.odit.services/lfk/kiosk/compare/0.3.0...0.4.0) #### [0.4.0](https://git.odit.services/lfk/kiosk/compare/0.3.0...0.4.0)
> 19 April 2023
- 🚀Bumped version to 0.4.0 [`8ec4fc0`](https://git.odit.services/lfk/kiosk/commit/8ec4fc0c835b4eb2fc634fba8d04d301d72fb3fd)
- Merge pull request 'branding' (#1) from branding into main [`a07eb4d`](https://git.odit.services/lfk/kiosk/commit/a07eb4ddf52c31b391ea14d13c129282b5e344c3) - Merge pull request 'branding' (#1) from branding into main [`a07eb4d`](https://git.odit.services/lfk/kiosk/commit/a07eb4ddf52c31b391ea14d13c129282b5e344c3)
- chore(deps): update all [`a610c6a`](https://git.odit.services/lfk/kiosk/commit/a610c6abd1887bf450294fff15db6eca7d99919c) - chore(deps): update all [`a610c6a`](https://git.odit.services/lfk/kiosk/commit/a610c6abd1887bf450294fff15db6eca7d99919c)
- branding [`0a883ce`](https://git.odit.services/lfk/kiosk/commit/0a883ce7fbd3defccbe7be70ce6affcab281c9c5) - branding [`0a883ce`](https://git.odit.services/lfk/kiosk/commit/0a883ce7fbd3defccbe7be70ce6affcab281c9c5)

View File

@@ -1,6 +1,6 @@
{ {
"name": "@lfk/kiosk", "name": "@lfk/kiosk",
"version": "0.4.0", "version": "0.5.0",
"private": false, "private": false,
"license": "MIT", "license": "MIT",
"repository": "https://git.odit.services/lfk/kiosk", "repository": "https://git.odit.services/lfk/kiosk",

View File

@@ -32,8 +32,8 @@ const userStore = () => {
this.refreshAuth(); this.refreshAuth();
}, 2 * 60000) }, 2 * 60000)
localStorage.setItem('userdata', JSON.stringify(state)); localStorage.setItem('kiosk-userdata', JSON.stringify(state));
localStorage.setItem('access_token', state.access_token); localStorage.setItem('kiosk-access_token', state.access_token);
OpenAPI.TOKEN = resAuth.access_token; OpenAPI.TOKEN = resAuth.access_token;
return state; return state;
}); });
@@ -48,12 +48,12 @@ const userStore = () => {
}, },
async loginFromStorage() { async loginFromStorage() {
console.log('loginFromStorage'); console.log('loginFromStorage');
const access_token = localStorage.getItem('access_token'); const access_token = localStorage.getItem('kiosk-access_token');
if (!access_token) { if (!access_token) {
throw new Error('Unauthorized'); throw new Error('Unauthorized');
} }
const storagedata = localStorage.getItem('userdata'); const storagedata = localStorage.getItem('kiosk-userdata');
const userdata = JSON.parse(storagedata || '{}') as UserState; const userdata = JSON.parse(storagedata || '{}') as UserState;
update((state: UserState) => { update((state: UserState) => {

View File

@@ -22,7 +22,7 @@
<div class="mt-8 grid gap-3 w-full sm:inline-flex sm:justify-center"> <div class="mt-8 grid gap-3 w-full sm:inline-flex sm:justify-center">
<a <a
class="inline-flex justify-center items-center gap-x-3 text-center bg-gradient-to-tl from-blue-600 to-violet-600 hover:from-violet-600 hover:to-blue-600 border border-transparent text-white text-sm font-medium rounded-md focus:outline-none focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:ring-offset-white py-3 px-4 dark:focus:ring-offset-gray-800" class="inline-flex justify-center items-center gap-x-3 text-center bg-gradient-to-tl from-blue-600 to-violet-600 hover:from-violet-600 hover:to-blue-600 border border-transparent text-white text-sm font-medium rounded-md focus:outline-none focus:ring-2 focus:ring-blue-600 focus:ring-offset-2 focus:ring-offset-white py-3 px-4 dark:focus:ring-offset-gray-800"
href="/login" href="./login"
> >
Kiosk starten Kiosk starten
<svg class="w-3 h-3" width="16" height="16" viewBox="0 0 16 16" fill="none"> <svg class="w-3 h-3" width="16" height="16" viewBox="0 0 16 16" fill="none">

View File

@@ -1,4 +1,5 @@
<script lang="ts"> <script lang="ts">
import { goto } from '$app/navigation';
import userstore from '$lib/userstore'; import userstore from '$lib/userstore';
import { AuthService } from '@odit/lfk-client-js'; import { AuthService } from '@odit/lfk-client-js';
@@ -14,7 +15,7 @@
})) as import('@odit/lfk-client-js').ResponseAuth; })) as import('@odit/lfk-client-js').ResponseAuth;
loginError=false; loginError=false;
await userstore.login(auth); await userstore.login(auth);
location.replace('/registration'); goto('./registration', {replaceState: true})
} catch (error) { } catch (error) {
console.log(error); console.log(error);
loginError = true; loginError = true;

View File

@@ -1,4 +1,5 @@
<script lang="ts"> <script lang="ts">
import { goto } from '$app/navigation';
import userstore from '$lib/userstore'; import userstore from '$lib/userstore';
import { onMount } from 'svelte'; import { onMount } from 'svelte';
@@ -11,7 +12,7 @@
} catch (error) { } catch (error) {
console.log(error); console.log(error);
userstore.logout(); userstore.logout();
location.replace(`/login`); goto('./login', {replaceState: true})
} }
}); });
</script> </script>

View File

@@ -2,15 +2,34 @@
import { RunnerService, type ResponseRunner } from '@odit/lfk-client-js'; import { RunnerService, type ResponseRunner } from '@odit/lfk-client-js';
import bwipjs from 'bwip-js'; import bwipjs from 'bwip-js';
import lfkbackground from './background.png'; import lfkbackground from './background.png';
import { onMount } from 'svelte';
$: firstname = ''; $: firstname = '';
$: lastname = ''; $: lastname = '';
$: doneButtonEnabled = false;
$: showResult = false; $: showResult = false;
$: showError = false; $: showError = false;
let response: ResponseRunner; let response: ResponseRunner;
const group = 1; //Default to Bürgerlauf const group = 1; //Default to Bürgerlauf
function focusFirstName() {
setTimeout(() => {
document.getElementById('firstname')?.focus();
}, 50);
setTimeout(() => {
document.getElementById('firstname')?.focus();
}, 100);
}
function focusDoneButton() {
setTimeout(() => {
document.getElementById('done')?.focus();
}, 50);
setTimeout(() => {
document.getElementById('done')?.focus();
}, 100);
}
async function register() { async function register() {
try { try {
response = (await RunnerService.runnerControllerPost({ response = (await RunnerService.runnerControllerPost({
@@ -20,6 +39,12 @@
})) as ResponseRunner; })) as ResponseRunner;
showError = false; showError = false;
showResult = true; showResult = true;
setTimeout(() => {
doneButtonEnabled = true;
setTimeout(() => {
focusDoneButton();
}, 25);
}, 7500);
} catch (error) { } catch (error) {
console.log(error); console.log(error);
showError = true; showError = true;
@@ -46,10 +71,14 @@
}); });
return canvas.toDataURL('image/png'); return canvas.toDataURL('image/png');
} }
onMount(() => {
focusFirstName();
});
</script> </script>
<div <div
class="dark:bg-slate-900 bg-gray-100 flex h-full items-center py-16" class="dark:bg-slate-900 bg-gray-100 flex h-full items-center py-16 select-none"
style="background: url({lfkbackground});background-position: center center!important;background-size: contain!important;background-repeat: no-repeat!important;" style="background: url({lfkbackground});background-position: center center!important;background-size: contain!important;background-repeat: no-repeat!important;"
> >
<div class="w-full max-w-md mx-auto p-6"> <div class="w-full max-w-md mx-auto p-6">
@@ -72,6 +101,11 @@
<label for="firstname" class="block text-lg font-bold mb-2 sr-only">Vorname</label> <label for="firstname" class="block text-lg font-bold mb-2 sr-only">Vorname</label>
<div class="relative"> <div class="relative">
<input <input
on:keydown={(e) => {
if (e.keyCode === 13) {
document.getElementById('lastname')?.focus();
}
}}
type="text" type="text"
id="firstname" id="firstname"
name="firstname" name="firstname"
@@ -154,7 +188,7 @@
<button <button
type="submit" type="submit"
disabled={!firstname || !lastname} disabled={!firstname || !lastname}
class="py-3 px-4 inline-flex justify-center items-center gap-2 rounded-md border border-transparent font-semibold disabled:opacity-70 bg-blue-600 text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-all dark:focus:ring-offset-gray-800" class="py-3 px-4 inline-flex justify-center items-center gap-2 rounded-md border border-transparent font-semibold disabled:opacity-70 bg-blue-600 text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-all dark:focus:ring-offset-gray-800"
>Anmelden</button >Anmelden</button
> >
</div> </div>
@@ -178,8 +212,13 @@
<div class="mx-auto text-center items-center"> <div class="mx-auto text-center items-center">
<button <button
class:opacity-50={!doneButtonEnabled}
disabled={!doneButtonEnabled}
id="done"
on:click={() => { on:click={() => {
doneButtonEnabled = false;
showResult = false; showResult = false;
focusFirstName();
}} }}
class="w-full py-3 px-4 inline-flex justify-center items-center gap-2 rounded-md border border-transparent font-semibold bg-blue-500 text-white hover:bg-blue-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-all text-sm dark:focus:ring-offset-gray-800" class="w-full py-3 px-4 inline-flex justify-center items-center gap-2 rounded-md border border-transparent font-semibold bg-blue-500 text-white hover:bg-blue-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-all text-sm dark:focus:ring-offset-gray-800"
>Fertig</button >Fertig</button
@@ -191,7 +230,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="fixed bottom-0 w-full text-center text-xl p-4"> <div class="fixed bottom-0 w-full text-center text-xl p-4 dark:text-white select-none">
<a <a
rel="noopener noreferrer" rel="noopener noreferrer"
target="_blank" target="_blank"