From e4f5a810a46645c920c82617006a0c515f62324a Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Mon, 15 Mar 2021 14:01:58 +0100 Subject: [PATCH 01/32] =?UTF-8?q?=F0=9F=9A=A7=20basic=20client=20token=20f?= =?UTF-8?q?rontend=20validation=20ui=20logic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #1 --- app/src/App.svelte | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/app/src/App.svelte b/app/src/App.svelte index 4a820f4..21f2e7d 100644 --- a/app/src/App.svelte +++ b/app/src/App.svelte @@ -12,14 +12,27 @@

Configuration

Please provide the scan client token.
See our configuration guide.

-
+ + { + console.log(token); + }}>
-
- + {#if !isTokenValid} + Please provide a valid client token... + {/if} +

\ No newline at end of file +
+ \ No newline at end of file From df3621d08685bc193e543b0c6444223d2d61bf4c Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Mon, 15 Mar 2021 14:11:24 +0100 Subject: [PATCH 02/32] =?UTF-8?q?=F0=9F=92=BE=20added=20basic=20svelte=20s?= =?UTF-8?q?tore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #1 --- app/src/App.svelte | 2 ++ app/src/store.js | 3 +++ 2 files changed, 5 insertions(+) create mode 100644 app/src/store.js diff --git a/app/src/App.svelte b/app/src/App.svelte index 21f2e7d..b0ae2bf 100644 --- a/app/src/App.svelte +++ b/app/src/App.svelte @@ -15,6 +15,7 @@
{ console.log(token); + apikey.set(token) }}>
@@ -75,6 +76,7 @@
\ No newline at end of file +{#if is_configured} + +{:else} + +{/if} + \ No newline at end of file diff --git a/app/src/Login.svelte b/app/src/Login.svelte new file mode 100644 index 0000000..a2cce63 --- /dev/null +++ b/app/src/Login.svelte @@ -0,0 +1,92 @@ +
+ + +
+ +
+
LfK!Scan
+
+ +
+

Configuration

+

Please provide the scan client token.
See our configuration guide.

+ + { + // TODO: validate token with backend api + console.log(token); + apikey.set(token) + }}> +
+ + +
+ {#if !isTokenValid} + Please provide a valid client token... + {/if} + + +
+

+ + powered by ODIT.Services.

+
+
+ +
+
+ +
+
+ +
+
+ +
+ + +
+ +
+
+ \ No newline at end of file diff --git a/app/src/Scanner.svelte b/app/src/Scanner.svelte new file mode 100644 index 0000000..c89e607 --- /dev/null +++ b/app/src/Scanner.svelte @@ -0,0 +1,27 @@ +
+

configured lap: 400m

+

minimum lap time: 10s

+
+
+
+
+
+
+
+

Lauf Für Kaya! Scan 📷

+
+ + +
+
+
+
+ \ No newline at end of file diff --git a/app/src/store.js b/app/src/store.js index 456da4f..84193fd 100644 --- a/app/src/store.js +++ b/app/src/store.js @@ -5,3 +5,8 @@ export const apikey = writable(stored_apikey); apikey.subscribe((value) => { localStorage.setItem('apikey', 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); +}); From 22671156a98f6553980408e368c784ea8b84a3e4 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Mon, 15 Mar 2021 14:55:59 +0100 Subject: [PATCH 06/32] =?UTF-8?q?=E2=8C=9A=20added=20live=20clock=20widget?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #1 --- app/src/Scanner.svelte | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/Scanner.svelte b/app/src/Scanner.svelte index 376abf9..de09e37 100644 --- a/app/src/Scanner.svelte +++ b/app/src/Scanner.svelte @@ -1,4 +1,6 @@
+

Lauf Für Kaya! Scan 📷

+

{hours}:{minutes}:{seconds}

configured lap: 400m

minimum lap time: 10s

@@ -34,4 +36,12 @@ \ No newline at end of file From 0f20996ac326b07759a4f8b0a69a5b6b813d94dc Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Mon, 15 Mar 2021 14:56:13 +0100 Subject: [PATCH 07/32] input autofocus ref #1 --- app/src/Scanner.svelte | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/Scanner.svelte b/app/src/Scanner.svelte index de09e37..fd30a3e 100644 --- a/app/src/Scanner.svelte +++ b/app/src/Scanner.svelte @@ -26,7 +26,7 @@
@@ -36,6 +36,9 @@ \ No newline at end of file diff --git a/app/src/Scanner.svelte b/app/src/Scanner.svelte index 2b32ad4..6cfc7c2 100644 --- a/app/src/Scanner.svelte +++ b/app/src/Scanner.svelte @@ -1,38 +1,23 @@ -
+

Lauf Für Kaya! Scan 📷

{hours}:{minutes}:{seconds}

-

configured lap: 400m

-

minimum lap time: 10s

-
-
-
-
-
{ - console.log(card); - //TODO: hit API for scan entry - lastscan_totaldistance="400m"; + if(card==="cnf"){ + page.set("settings"); + }else{ + console.log(card); + //TODO: hit API for scan entry + lastscan_totaldistance="400m"; let time = new Date(); const hours = (time.getHours()+"").padStart(2,"0"); const minutes = (time.getMinutes()+"").padStart(2,"0"); const seconds = (time.getSeconds()+"").padStart(2,"0"); lastscan_time=hours+":"+minutes+":"+seconds; lastscan_laptime="1min 30s"; + } card=""; }}> {#if lastscan_totaldistance} @@ -55,8 +40,9 @@
+ \ No newline at end of file diff --git a/app/src/store.js b/app/src/store.js index 84193fd..0b93a19 100644 --- a/app/src/store.js +++ b/app/src/store.js @@ -5,6 +5,11 @@ export const apikey = writable(stored_apikey); apikey.subscribe((value) => { localStorage.setItem('apikey', 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'); export const lang = writable(stored_lang); lang.subscribe((value) => { From 7cde92e206080158df74f06d701e385ff6c56e67 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Mon, 15 Mar 2021 15:22:44 +0100 Subject: [PATCH 10/32] added lang option to config page ref #1 --- app/src/Login.svelte | 48 +++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/app/src/Login.svelte b/app/src/Login.svelte index a2cce63..4cf91ed 100644 --- a/app/src/Login.svelte +++ b/app/src/Login.svelte @@ -47,26 +47,32 @@
-
- -
-
- -
+
+ +
+
+ +
@@ -77,7 +83,7 @@
- - - \ No newline at end of file + + + + diff --git a/app/package.json b/app/package.json index 7248b19..bf9d136 100644 --- a/app/package.json +++ b/app/package.json @@ -3,7 +3,8 @@ "version": "0.0.0", "scripts": { "dev": "vite", - "build": "vite build" + "build": "vite build", + "format": "prettier --write --plugin-search-dir=. ./**/*.html ./**/*.svelte" }, "devDependencies": { "@svitejs/vite-plugin-svelte": "^0.11.0", @@ -12,6 +13,8 @@ "axios": "^0.21.1", "glob": "^7.1.6", "html-minifier": "^4.0.0", + "prettier": "^2.2.1", + "prettier-plugin-svelte": "^2.2.0", "svelte": "^3.35.0", "svelte-preprocess": "^4.6.9", "vite": "^2.0.5", diff --git a/app/src/App.svelte b/app/src/App.svelte index 21ed02a..cd24a9f 100644 --- a/app/src/App.svelte +++ b/app/src/App.svelte @@ -1,18 +1,17 @@ -{#if settings_open&&is_configured} - -{:else} - {#if is_configured} - - {:else} - - {/if} -{/if} \ No newline at end of file + import Scanner from "./Scanner.svelte"; + import Login from "./Login.svelte"; + import Settings from "./Settings.svelte"; + import { apikey, lang, page } from "./store.js"; + $: is_configured = $apikey !== "null" && $apikey !== ""; + $: settings_open = $page === "settings"; + console.log($page); + + +{#if settings_open && is_configured} + +{:else if is_configured} + +{:else} + +{/if} diff --git a/app/src/Login.svelte b/app/src/Login.svelte index 4cf91ed..40febb9 100644 --- a/app/src/Login.svelte +++ b/app/src/Login.svelte @@ -1,98 +1,166 @@ -
- - -
- -
-
LfK!Scan
-
- -
-

Configuration

-

Please provide the scan client token.
See our configuration guide.

- - { - // TODO: validate token with backend api - console.log(token); - apikey.set(token) - }}> -
- - -
- {#if !isTokenValid} - Please provide a valid client token... - {/if} - - -
-

- - powered by ODIT.Services.

-
-
- -
-
- -
-
- -
-
- -
- - -
- -
-
- \ No newline at end of file + } + + +
+ +
+
+
+ + LfK!Scan +
+
+ +
+

Configuration

+

+ Please provide the scan client token.
See our configuration guide. +

+
{ + // TODO: validate token with backend api + console.log(token); + apikey.set(token); + }} + > +
+ + +
+ {#if !isTokenValid} + Please provide a valid client token... + {/if} + +
+
+

+ + + powered by ODIT.Services. +

+
+
+ +
+
+ +
+
+ +
+
+
+ + +
+ +
+
diff --git a/app/src/Scanner.svelte b/app/src/Scanner.svelte index 6cfc7c2..741dc92 100644 --- a/app/src/Scanner.svelte +++ b/app/src/Scanner.svelte @@ -1,61 +1,81 @@ + +
-

Lauf Für Kaya! Scan 📷

-

{hours}:{minutes}:{seconds}

-
-
-
- { - if(card==="cnf"){ - page.set("settings"); - }else{ - console.log(card); - //TODO: hit API for scan entry - lastscan_totaldistance="400m"; - let time = new Date(); - const hours = (time.getHours()+"").padStart(2,"0"); - const minutes = (time.getMinutes()+"").padStart(2,"0"); - const seconds = (time.getSeconds()+"").padStart(2,"0"); - lastscan_time=hours+":"+minutes+":"+seconds; - lastscan_laptime="1min 30s"; - } - card=""; - }}> - {#if lastscan_totaldistance} -

last scan

-

{lastscan_time}

-

total distance

-

{lastscan_totaldistance}

-

lap time

-

{lastscan_laptime}

- {:else} -

please scan a card...

- {/if} +

+ Lauf Für Kaya! Scan 📷 +

+

+ {hours}:{minutes}:{seconds} +

+
+
+ { + if (card === "cnf") { + page.set("settings"); + } else { + console.log(card); + //TODO: hit API for scan entry + lastscan_totaldistance = "400m"; + let time = new Date(); + const hours = (time.getHours() + "").padStart(2, "0"); + const minutes = (time.getMinutes() + "").padStart(2, "0"); + const seconds = (time.getSeconds() + "").padStart(2, "0"); + lastscan_time = hours + ":" + minutes + ":" + seconds; + lastscan_laptime = "1min 30s"; + } + card = ""; + }} + > + {#if lastscan_totaldistance} +

last scan

+

{lastscan_time}

+

total distance

+

+ {lastscan_totaldistance} +

+

lap time

+

{lastscan_laptime}

+ {:else} +

please scan a card...

+ {/if} - + +
+
-
-
- - \ No newline at end of file diff --git a/app/src/Settings.svelte b/app/src/Settings.svelte index c6e8145..bed35a9 100644 --- a/app/src/Settings.svelte +++ b/app/src/Settings.svelte @@ -1,48 +1,85 @@ -
-

Lauf Für Kaya! Scan 📷

-

Settings

-

API Key

-

{$apikey}

-
-

Language

-
-
- -
-
- -
-
-
- - -
\ No newline at end of file + import { apikey, lang, page } from "./store.js"; + + +
+

+ Lauf Für Kaya! Scan 📷 +

+

Settings

+

API Key

+

{$apikey}

+
+

Language

+
+
+ +
+
+ +
+
+
+ + +
From f40e6385837d680b0cef7baba9a256c092ec3456 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Tue, 16 Mar 2021 14:25:57 +0100 Subject: [PATCH 12/32] testing husky precommit hook --- .husky/.gitignore | 1 + .husky/pre-commit | 4 ++++ app/package.json | 4 +++- app/src/App.svelte | 2 +- app/src/Scanner.svelte | 4 +--- package.json | 10 +++++++--- 6 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 .husky/.gitignore create mode 100644 .husky/pre-commit diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 0000000..31354ec --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..1b2e1c6 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +cd app && yarn format diff --git a/app/package.json b/app/package.json index bf9d136..12e7b5b 100644 --- a/app/package.json +++ b/app/package.json @@ -4,7 +4,8 @@ "scripts": { "dev": "vite", "build": "vite build", - "format": "prettier --write --plugin-search-dir=. ./**/*.html ./**/*.svelte" + "format": "prettier --write --plugin-search-dir=. ./**/*.html ./**/*.svelte", + "prepare": "husky install" }, "devDependencies": { "@svitejs/vite-plugin-svelte": "^0.11.0", @@ -13,6 +14,7 @@ "axios": "^0.21.1", "glob": "^7.1.6", "html-minifier": "^4.0.0", + "husky": "^5.1.3", "prettier": "^2.2.1", "prettier-plugin-svelte": "^2.2.0", "svelte": "^3.35.0", diff --git a/app/src/App.svelte b/app/src/App.svelte index cd24a9f..c357889 100644 --- a/app/src/App.svelte +++ b/app/src/App.svelte @@ -3,7 +3,7 @@ import Login from "./Login.svelte"; import Settings from "./Settings.svelte"; import { apikey, lang, page } from "./store.js"; - $: is_configured = $apikey !== "null" && $apikey !== ""; + $: is_configured = $apikey && $apikey !== "null" && $apikey !== ""; $: settings_open = $page === "settings"; console.log($page); diff --git a/app/src/Scanner.svelte b/app/src/Scanner.svelte index 741dc92..8b07851 100644 --- a/app/src/Scanner.svelte +++ b/app/src/Scanner.svelte @@ -25,9 +25,7 @@ {hours}:{minutes}:{seconds}
-
+
Date: Tue, 16 Mar 2021 14:26:31 +0100 Subject: [PATCH 13/32] demo for husky precommit formatting --- src/App.svelte | 54 +++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/App.svelte b/src/App.svelte index 6c9cd8d..6be5787 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -1,31 +1,31 @@ + + + +
-
-
-

LogoLfK!Scan

-

Lauf für Kaya! Scanstation

-
+
+
+

LogoLfK!Scan

+

Lauf für Kaya! Scanstation

+
+
+
+ +
+
+ +
-
- -
-
- - -
- -
-
+ +
+
\ No newline at end of file From ffcacd32f6fed018646a0f8839b67659a3d425a1 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Tue, 16 Mar 2021 14:29:39 +0100 Subject: [PATCH 14/32] precommit format --- README.md | 2 +- package.json | 7 +-- public/favicon.png | Bin 72186 -> 0 bytes public/global.css | 1 - public/index.html | 20 ------ public/svelte.png | Bin 21668 -> 0 bytes rollup.config.js | 75 ---------------------- scripts/setupTypeScript.js | 125 ------------------------------------- src/App.svelte | 31 --------- src/main.js | 10 --- 10 files changed, 4 insertions(+), 267 deletions(-) delete mode 100644 public/favicon.png delete mode 100644 public/global.css delete mode 100644 public/index.html delete mode 100644 public/svelte.png delete mode 100644 rollup.config.js delete mode 100644 scripts/setupTypeScript.js delete mode 100644 src/App.svelte delete mode 100644 src/main.js diff --git a/README.md b/README.md index 1cf940e..1dead16 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ## ✒️ Overview This is an API client for @lfk/backend - WebApp built with [Svelte](https://svelte.dev), [WindiCSS](https://windicss.org/) (to compile [TailwindCSS](https://tailwindcss.com/)) and [Vite](https://vitejs.dev). -- Served to clients via by `electron`. +- Served to clients via by [Electron](https://electronjs.org/). ## 🚀 Getting Started ``` diff --git a/package.json b/package.json index 480c750..5037c24 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "dev": "cd app && yarn dev", "electron:start": "cd app && yarn build && cd .. && electron-forge start", "electron:package": "cd app && yarn build && cd .. && electron-forge package", - "prepare": "husky install" + "prepare": "husky install", + "format": "cd app && yarn format" }, "devDependencies": { "@electron-forge/cli": "^6.0.0-beta.54", @@ -27,9 +28,7 @@ "makers": [ { "name": "@electron-forge/maker-zip", - "platforms": [ - "darwin" - ], + "platforms": [ "darwin" ], "config": { "name": "lfk__scanclient" } diff --git a/public/favicon.png b/public/favicon.png deleted file mode 100644 index 481f526383a4191ad31c307c5658b24019cc81cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72186 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 diff --git a/public/global.css b/public/global.css deleted file mode 100644 index 0fe23d9..0000000 --- a/public/global.css +++ /dev/null @@ -1 +0,0 @@ -/*! Spectre.css v0.5.9 | MIT License | github.com/picturepan2/spectre */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}hr{box-sizing:content-box;height:0;overflow:visible}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}address{font-style:normal}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:"SF Mono","Segoe UI Mono","Roboto Mono",Menlo,Courier,monospace;font-size:1em}dfn{font-style:italic}small{font-size:80%;font-weight:400}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}fieldset{border:0;margin:0;padding:0}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item;outline:0}canvas{display:inline-block}template{display:none}[hidden]{display:none}*,::after,::before{box-sizing:inherit}html{box-sizing:border-box;font-size:20px;line-height:1.5;-webkit-tap-highlight-color:transparent}body{background:#fff;color:#3b4351;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;font-size:.8rem;overflow-x:hidden;text-rendering:optimizeLegibility}a{color:#5755d9;outline:0;text-decoration:none}a:focus{box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}a.active,a:active,a:focus,a:hover{color:#302ecd;text-decoration:underline}a:visited{color:#807fe2}h1,h2,h3,h4,h5,h6{color:inherit;font-weight:500;line-height:1.2;margin-bottom:.5em;margin-top:0}.h1,.h2,.h3,.h4,.h5,.h6{font-weight:500}.h1,h1{font-size:2rem}.h2,h2{font-size:1.6rem}.h3,h3{font-size:1.4rem}.h4,h4{font-size:1.2rem}.h5,h5{font-size:1rem}.h6,h6{font-size:.8rem}p{margin:0 0 1.2rem}a,ins,u{-webkit-text-decoration-skip:ink edges;text-decoration-skip:ink edges}abbr[title]{border-bottom:.05rem dotted;cursor:help;text-decoration:none}kbd{background:#303742;border-radius:.1rem;color:#fff;font-size:.7rem;line-height:1.25;padding:.1rem .2rem}mark{background:#ffe9b3;border-bottom:.05rem solid #ffd367;border-radius:.1rem;color:#3b4351;padding:.05rem .1rem 0}blockquote{border-left:.1rem solid #dadee4;margin-left:0;padding:.4rem .8rem}blockquote p:last-child{margin-bottom:0}ol,ul{margin:.8rem 0 .8rem .8rem;padding:0}ol ol,ol ul,ul ol,ul ul{margin:.8rem 0 .8rem .8rem}ol li,ul li{margin-top:.4rem}ul{list-style:disc inside}ul ul{list-style-type:circle}ol{list-style:decimal inside}ol ol{list-style-type:lower-alpha}dl dt{font-weight:700}dl dd{margin:.4rem 0 .8rem 0}.lang-zh,.lang-zh-hans,html:lang(zh),html:lang(zh-Hans){font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",sans-serif}.lang-zh-hant,html:lang(zh-Hant){font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang TC","Hiragino Sans CNS","Microsoft JhengHei","Helvetica Neue",sans-serif}.lang-ja,html:lang(ja){font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Hiragino Sans","Hiragino Kaku Gothic Pro","Yu Gothic",YuGothic,Meiryo,"Helvetica Neue",sans-serif}.lang-ko,html:lang(ko){font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Malgun Gothic","Helvetica Neue",sans-serif}.lang-cjk ins,.lang-cjk u,:lang(ja) ins,:lang(ja) u,:lang(zh) ins,:lang(zh) u{border-bottom:.05rem solid;text-decoration:none}.lang-cjk del+del,.lang-cjk del+s,.lang-cjk ins+ins,.lang-cjk ins+u,.lang-cjk s+del,.lang-cjk s+s,.lang-cjk u+ins,.lang-cjk u+u,:lang(ja) del+del,:lang(ja) del+s,:lang(ja) ins+ins,:lang(ja) ins+u,:lang(ja) s+del,:lang(ja) s+s,:lang(ja) u+ins,:lang(ja) u+u,:lang(zh) del+del,:lang(zh) del+s,:lang(zh) ins+ins,:lang(zh) ins+u,:lang(zh) s+del,:lang(zh) s+s,:lang(zh) u+ins,:lang(zh) u+u{margin-left:.125em}.table{border-collapse:collapse;border-spacing:0;text-align:left;width:100%}.table.table-striped tbody tr:nth-of-type(odd){background:#f7f8f9}.table tbody tr.active,.table.table-striped tbody tr.active{background:#eef0f3}.table.table-hover tbody tr:hover{background:#eef0f3}.table.table-scroll{display:block;overflow-x:auto;padding-bottom:.75rem;white-space:nowrap}.table td,.table th{border-bottom:.05rem solid #dadee4;padding:.6rem .4rem}.table th{border-bottom-width:.1rem}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border:.05rem solid #5755d9;border-radius:.1rem;color:#5755d9;cursor:pointer;display:inline-block;font-size:.8rem;height:1.8rem;line-height:1.2rem;outline:0;padding:.25rem .4rem;text-align:center;text-decoration:none;transition:background .2s,border .2s,box-shadow .2s,color .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.btn:focus{box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.btn:focus,.btn:hover{background:#f1f1fc;border-color:#4b48d6;text-decoration:none}.btn.active,.btn:active{background:#4b48d6;border-color:#3634d2;color:#fff;text-decoration:none}.btn.active.loading::after,.btn:active.loading::after{border-bottom-color:#fff;border-left-color:#fff}.btn.disabled,.btn:disabled,.btn[disabled]{cursor:default;opacity:.5;pointer-events:none}.btn.btn-primary{background:#5755d9;border-color:#4b48d6;color:#fff}.btn.btn-primary:focus,.btn.btn-primary:hover{background:#4240d4;border-color:#3634d2;color:#fff}.btn.btn-primary.active,.btn.btn-primary:active{background:#3a38d2;border-color:#302ecd;color:#fff}.btn.btn-primary.loading::after{border-bottom-color:#fff;border-left-color:#fff}.btn.btn-success{background:#32b643;border-color:#2faa3f;color:#fff}.btn.btn-success:focus{box-shadow:0 0 0 .1rem rgba(50,182,67,.2)}.btn.btn-success:focus,.btn.btn-success:hover{background:#30ae40;border-color:#2da23c;color:#fff}.btn.btn-success.active,.btn.btn-success:active{background:#2a9a39;border-color:#278e34;color:#fff}.btn.btn-success.loading::after{border-bottom-color:#fff;border-left-color:#fff}.btn.btn-error{background:#e85600;border-color:#d95000;color:#fff}.btn.btn-error:focus{box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.btn.btn-error:focus,.btn.btn-error:hover{background:#de5200;border-color:#cf4d00;color:#fff}.btn.btn-error.active,.btn.btn-error:active{background:#c44900;border-color:#b54300;color:#fff}.btn.btn-error.loading::after{border-bottom-color:#fff;border-left-color:#fff}.btn.btn-link{background:0 0;border-color:transparent;color:#5755d9}.btn.btn-link.active,.btn.btn-link:active,.btn.btn-link:focus,.btn.btn-link:hover{color:#302ecd}.btn.btn-sm{font-size:.7rem;height:1.4rem;padding:.05rem .3rem}.btn.btn-lg{font-size:.9rem;height:2rem;padding:.35rem .6rem}.btn.btn-block{display:block;width:100%}.btn.btn-action{padding-left:0;padding-right:0;width:1.8rem}.btn.btn-action.btn-sm{width:1.4rem}.btn.btn-action.btn-lg{width:2rem}.btn.btn-clear{background:0 0;border:0;color:currentColor;height:1rem;line-height:.8rem;margin-left:.2rem;margin-right:-2px;opacity:1;padding:.1rem;text-decoration:none;width:1rem}.btn.btn-clear:focus,.btn.btn-clear:hover{background:rgba(247,248,249,.5);opacity:.95}.btn.btn-clear::before{content:"\2715"}.btn-group{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.btn-group .btn{-ms-flex:1 0 auto;flex:1 0 auto}.btn-group .btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group .btn:not(:first-child):not(:last-child){border-radius:0;margin-left:-.05rem}.btn-group .btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-.05rem}.btn-group .btn.active,.btn-group .btn:active,.btn-group .btn:focus,.btn-group .btn:hover{z-index:1}.btn-group.btn-group-block{display:-ms-flexbox;display:flex}.btn-group.btn-group-block .btn{-ms-flex:1 0 0;flex:1 0 0}.form-group:not(:last-child){margin-bottom:.4rem}fieldset{margin-bottom:.8rem}legend{font-size:.9rem;font-weight:500;margin-bottom:.8rem}.form-label{display:block;line-height:1.2rem;padding:.3rem 0}.form-label.label-sm{font-size:.7rem;padding:.1rem 0}.form-label.label-lg{font-size:.9rem;padding:.4rem 0}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;background-image:none;border:.05rem solid #bcc3ce;border-radius:.1rem;color:#3b4351;display:block;font-size:.8rem;height:1.8rem;line-height:1.2rem;max-width:100%;outline:0;padding:.25rem .4rem;position:relative;transition:background .2s,border .2s,box-shadow .2s,color .2s;width:100%}.form-input:focus{border-color:#5755d9;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-input:-ms-input-placeholder{color:#bcc3ce}.form-input::-ms-input-placeholder{color:#bcc3ce}.form-input::placeholder{color:#bcc3ce}.form-input.input-sm{font-size:.7rem;height:1.4rem;padding:.05rem .3rem}.form-input.input-lg{font-size:.9rem;height:2rem;padding:.35rem .6rem}.form-input.input-inline{display:inline-block;vertical-align:middle;width:auto}.form-input[type=file]{height:auto}textarea.form-input,textarea.form-input.input-lg,textarea.form-input.input-sm{height:auto}.form-input-hint{color:#bcc3ce;font-size:.7rem;margin-top:.2rem}.has-success .form-input-hint,.is-success+.form-input-hint{color:#32b643}.has-error .form-input-hint,.is-error+.form-input-hint{color:#e85600}.form-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff;border:.05rem solid #bcc3ce;border-radius:.1rem;color:inherit;font-size:.8rem;height:1.8rem;line-height:1.2rem;outline:0;padding:.25rem .4rem;vertical-align:middle;width:100%}.form-select:focus{border-color:#5755d9;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-select::-ms-expand{display:none}.form-select.select-sm{font-size:.7rem;height:1.4rem;padding:.05rem 1.1rem .05rem .3rem}.form-select.select-lg{font-size:.9rem;height:2rem;padding:.35rem 1.4rem .35rem .6rem}.form-select[multiple],.form-select[size]{height:auto;padding:.25rem .4rem}.form-select[multiple] option,.form-select[size] option{padding:.1rem .2rem}.form-select:not([multiple]):not([size]){background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%204%205'%3E%3Cpath%20fill='%23667189'%20d='M2%200L0%202h4zm0%205L0%203h4z'/%3E%3C/svg%3E") no-repeat right .35rem center/.4rem .5rem;padding-right:1.2rem}.has-icon-left,.has-icon-right{position:relative}.has-icon-left .form-icon,.has-icon-right .form-icon{height:.8rem;margin:0 .25rem;position:absolute;top:50%;transform:translateY(-50%);width:.8rem;z-index:2}.has-icon-left .form-icon{left:.05rem}.has-icon-left .form-input{padding-left:1.3rem}.has-icon-right .form-icon{right:.05rem}.has-icon-right .form-input{padding-right:1.3rem}.form-checkbox,.form-radio,.form-switch{display:block;line-height:1.2rem;margin:.2rem 0;min-height:1.4rem;padding:.1rem .4rem .1rem 1.2rem;position:relative}.form-checkbox input,.form-radio input,.form-switch input{clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}.form-checkbox input:focus+.form-icon,.form-radio input:focus+.form-icon,.form-switch input:focus+.form-icon{border-color:#5755d9;box-shadow:0 0 0 .1rem rgba(87,85,217,.2)}.form-checkbox input:checked+.form-icon,.form-radio input:checked+.form-icon,.form-switch input:checked+.form-icon{background:#5755d9;border-color:#5755d9}.form-checkbox .form-icon,.form-radio .form-icon,.form-switch .form-icon{border:.05rem solid #bcc3ce;cursor:pointer;display:inline-block;position:absolute;transition:background .2s,border .2s,box-shadow .2s,color .2s}.form-checkbox.input-sm,.form-radio.input-sm,.form-switch.input-sm{font-size:.7rem;margin:0}.form-checkbox.input-lg,.form-radio.input-lg,.form-switch.input-lg{font-size:.9rem;margin:.3rem 0}.form-checkbox .form-icon,.form-radio .form-icon{background:#fff;height:.8rem;left:0;top:.3rem;width:.8rem}.form-checkbox input:active+.form-icon,.form-radio input:active+.form-icon{background:#eef0f3}.form-checkbox .form-icon{border-radius:.1rem}.form-checkbox input:checked+.form-icon::before{background-clip:padding-box;border:.1rem solid #fff;border-left-width:0;border-top-width:0;content:"";height:9px;left:50%;margin-left:-3px;margin-top:-6px;position:absolute;top:50%;transform:rotate(45deg);width:6px}.form-checkbox input:indeterminate+.form-icon{background:#5755d9;border-color:#5755d9}.form-checkbox input:indeterminate+.form-icon::before{background:#fff;content:"";height:2px;left:50%;margin-left:-5px;margin-top:-1px;position:absolute;top:50%;width:10px}.form-radio .form-icon{border-radius:50%}.form-radio input:checked+.form-icon::before{background:#fff;border-radius:50%;content:"";height:6px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:6px}.form-switch{padding-left:2rem}.form-switch .form-icon{background:#bcc3ce;background-clip:padding-box;border-radius:.45rem;height:.9rem;left:0;top:.25rem;width:1.6rem}.form-switch .form-icon::before{background:#fff;border-radius:50%;content:"";display:block;height:.8rem;left:0;position:absolute;top:0;transition:background .2s,border .2s,box-shadow .2s,color .2s,left .2s;width:.8rem}.form-switch input:checked+.form-icon::before{left:14px}.form-switch input:active+.form-icon::before{background:#f7f8f9}.input-group{display:-ms-flexbox;display:flex}.input-group .input-group-addon{background:#f7f8f9;border:.05rem solid #bcc3ce;border-radius:.1rem;line-height:1.2rem;padding:.25rem .4rem;white-space:nowrap}.input-group .input-group-addon.addon-sm{font-size:.7rem;padding:.05rem .3rem}.input-group .input-group-addon.addon-lg{font-size:.9rem;padding:.35rem .6rem}.input-group .form-input,.input-group .form-select{-ms-flex:1 1 auto;flex:1 1 auto;width:1%}.input-group .input-group-btn{z-index:1}.input-group .form-input:first-child:not(:last-child),.input-group .form-select:first-child:not(:last-child),.input-group .input-group-addon:first-child:not(:last-child),.input-group .input-group-btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.input-group .form-input:not(:first-child):not(:last-child),.input-group .form-select:not(:first-child):not(:last-child),.input-group .input-group-addon:not(:first-child):not(:last-child),.input-group .input-group-btn:not(:first-child):not(:last-child){border-radius:0;margin-left:-.05rem}.input-group .form-input:last-child:not(:first-child),.input-group .form-select:last-child:not(:first-child),.input-group .input-group-addon:last-child:not(:first-child),.input-group .input-group-btn:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:-.05rem}.input-group .form-input:focus,.input-group .form-select:focus,.input-group .input-group-addon:focus,.input-group .input-group-btn:focus{z-index:2}.input-group .form-select{width:auto}.input-group.input-inline{display:-ms-inline-flexbox;display:inline-flex}.form-input.is-success,.form-select.is-success,.has-success .form-input,.has-success .form-select{background:#f9fdfa;border-color:#32b643}.form-input.is-success:focus,.form-select.is-success:focus,.has-success .form-input:focus,.has-success .form-select:focus{box-shadow:0 0 0 .1rem rgba(50,182,67,.2)}.form-input.is-error,.form-select.is-error,.has-error .form-input,.has-error .form-select{background:#fffaf7;border-color:#e85600}.form-input.is-error:focus,.form-select.is-error:focus,.has-error .form-input:focus,.has-error .form-select:focus{box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-checkbox.is-error .form-icon,.form-radio.is-error .form-icon,.form-switch.is-error .form-icon,.has-error .form-checkbox .form-icon,.has-error .form-radio .form-icon,.has-error .form-switch .form-icon{border-color:#e85600}.form-checkbox.is-error input:checked+.form-icon,.form-radio.is-error input:checked+.form-icon,.form-switch.is-error input:checked+.form-icon,.has-error .form-checkbox input:checked+.form-icon,.has-error .form-radio input:checked+.form-icon,.has-error .form-switch input:checked+.form-icon{background:#e85600;border-color:#e85600}.form-checkbox.is-error input:focus+.form-icon,.form-radio.is-error input:focus+.form-icon,.form-switch.is-error input:focus+.form-icon,.has-error .form-checkbox input:focus+.form-icon,.has-error .form-radio input:focus+.form-icon,.has-error .form-switch input:focus+.form-icon{border-color:#e85600;box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-checkbox.is-error input:indeterminate+.form-icon,.has-error .form-checkbox input:indeterminate+.form-icon{background:#e85600;border-color:#e85600}.form-input:not(:-ms-input-placeholder):invalid{border-color:#e85600}.form-input:not(:placeholder-shown):invalid{border-color:#e85600}.form-input:not(:-ms-input-placeholder):invalid:focus{background:#fffaf7;box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-input:not(:placeholder-shown):invalid:focus{background:#fffaf7;box-shadow:0 0 0 .1rem rgba(232,86,0,.2)}.form-input:not(:-ms-input-placeholder):invalid+.form-input-hint{color:#e85600}.form-input:not(:placeholder-shown):invalid+.form-input-hint{color:#e85600}.form-input.disabled,.form-input:disabled,.form-select.disabled,.form-select:disabled{background-color:#eef0f3;cursor:not-allowed;opacity:.5}.form-input[readonly]{background-color:#f7f8f9}input.disabled+.form-icon,input:disabled+.form-icon{background:#eef0f3;cursor:not-allowed;opacity:.5}.form-switch input.disabled+.form-icon::before,.form-switch input:disabled+.form-icon::before{background:#fff}.form-horizontal{padding:.4rem 0}.form-horizontal .form-group{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.form-inline{display:inline-block}.label{background:#eef0f3;border-radius:.1rem;color:#455060;display:inline-block;line-height:1.25;padding:.1rem .2rem}.label.label-rounded{border-radius:5rem;padding-left:.4rem;padding-right:.4rem}.label.label-primary{background:#5755d9;color:#fff}.label.label-secondary{background:#f1f1fc;color:#5755d9}.label.label-success{background:#32b643;color:#fff}.label.label-warning{background:#ffb700;color:#fff}.label.label-error{background:#e85600;color:#fff}code{background:#fcf2f2;border-radius:.1rem;color:#d73e48;font-size:85%;line-height:1.25;padding:.1rem .2rem}.code{border-radius:.1rem;color:#3b4351;position:relative}.code::before{color:#bcc3ce;content:attr(data-lang);font-size:.7rem;position:absolute;right:.4rem;top:.1rem}.code code{background:#f7f8f9;color:inherit;display:block;line-height:1.5;overflow-x:auto;padding:1rem;width:100%}.img-responsive{display:block;height:auto;max-width:100%}.img-fit-cover{object-fit:cover}.img-fit-contain{object-fit:contain}.video-responsive{display:block;overflow:hidden;padding:0;position:relative;width:100%}.video-responsive::before{content:"";display:block;padding-bottom:56.25%}.video-responsive embed,.video-responsive iframe,.video-responsive object{border:0;bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}video.video-responsive{height:auto;max-width:100%}video.video-responsive::before{content:none}.video-responsive-4-3::before{padding-bottom:75%}.video-responsive-1-1::before{padding-bottom:100%}.figure{margin:0 0 .4rem 0}.figure .figure-caption{color:#66758c;margin-top:.4rem}.container{margin-left:auto;margin-right:auto;padding-left:.4rem;padding-right:.4rem;width:100%}.container.grid-xl{max-width:1296px}.container.grid-lg{max-width:976px}.container.grid-md{max-width:856px}.container.grid-sm{max-width:616px}.container.grid-xs{max-width:496px}.show-lg,.show-md,.show-sm,.show-xl,.show-xs{display:none!important}.cols,.columns{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-.4rem;margin-right:-.4rem}.cols.col-gapless,.columns.col-gapless{margin-left:0;margin-right:0}.cols.col-gapless>.column,.columns.col-gapless>.column{padding-left:0;padding-right:0}.cols.col-oneline,.columns.col-oneline{-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow-x:auto}.column,[class~=col-]{-ms-flex:1;flex:1;max-width:100%;padding-left:.4rem;padding-right:.4rem}.column.col-1,.column.col-10,.column.col-11,.column.col-12,.column.col-2,.column.col-3,.column.col-4,.column.col-5,.column.col-6,.column.col-7,.column.col-8,.column.col-9,.column.col-auto,[class~=col-].col-1,[class~=col-].col-10,[class~=col-].col-11,[class~=col-].col-12,[class~=col-].col-2,[class~=col-].col-3,[class~=col-].col-4,[class~=col-].col-5,[class~=col-].col-6,[class~=col-].col-7,[class~=col-].col-8,[class~=col-].col-9,[class~=col-].col-auto{-ms-flex:none;flex:none}.col-12{width:100%}.col-11{width:91.66666667%}.col-10{width:83.33333333%}.col-9{width:75%}.col-8{width:66.66666667%}.col-7{width:58.33333333%}.col-6{width:50%}.col-5{width:41.66666667%}.col-4{width:33.33333333%}.col-3{width:25%}.col-2{width:16.66666667%}.col-1{width:8.33333333%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;max-width:none;width:auto}.col-mx-auto{margin-left:auto;margin-right:auto}.col-ml-auto{margin-left:auto}.col-mr-auto{margin-right:auto}@media (max-width:1280px){.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{-ms-flex:none;flex:none}.col-xl-12{width:100%}.col-xl-11{width:91.66666667%}.col-xl-10{width:83.33333333%}.col-xl-9{width:75%}.col-xl-8{width:66.66666667%}.col-xl-7{width:58.33333333%}.col-xl-6{width:50%}.col-xl-5{width:41.66666667%}.col-xl-4{width:33.33333333%}.col-xl-3{width:25%}.col-xl-2{width:16.66666667%}.col-xl-1{width:8.33333333%}.col-xl-auto{width:auto}.hide-xl{display:none!important}.show-xl{display:block!important}}@media (max-width:960px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto{-ms-flex:none;flex:none}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-auto{width:auto}.hide-lg{display:none!important}.show-lg{display:block!important}}@media (max-width:840px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto{-ms-flex:none;flex:none}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-auto{width:auto}.hide-md{display:none!important}.show-md{display:block!important}}@media (max-width:600px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto{-ms-flex:none;flex:none}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-auto{width:auto}.hide-sm{display:none!important}.show-sm{display:block!important}}@media (max-width:480px){.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-auto{-ms-flex:none;flex:none}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-auto{width:auto}.hide-xs{display:none!important}.show-xs{display:block!important}}.hero{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;padding-bottom:4rem;padding-top:4rem}.hero.hero-sm{padding-bottom:2rem;padding-top:2rem}.hero.hero-lg{padding-bottom:8rem;padding-top:8rem}.hero .hero-body{padding:.4rem}.navbar{align-items:stretch;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;-ms-flex-pack:justify;-ms-flex-wrap:wrap;flex-wrap:wrap;justify-content:space-between}.navbar .navbar-section{align-items:center;display:-ms-flexbox;display:flex;-ms-flex:1 0 0;flex:1 0 0;-ms-flex-align:center}.navbar .navbar-section:not(:first-child):last-child{-ms-flex-pack:end;justify-content:flex-end}.navbar .navbar-center{align-items:center;display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-align:center}.navbar .navbar-brand{font-size:.9rem;text-decoration:none}.accordion input:checked~.accordion-header>.icon:first-child,.accordion[open] .accordion-header>.icon:first-child{transform:rotate(90deg)}.accordion input:checked~.accordion-body,.accordion[open] .accordion-body{max-height:50rem}.accordion .accordion-header{display:block;padding:.2rem .4rem}.accordion .accordion-header .icon{transition:transform .25s}.accordion .accordion-body{margin-bottom:.4rem;max-height:0;overflow:hidden;transition:max-height .25s}summary.accordion-header::-webkit-details-marker{display:none}.avatar{background:#5755d9;border-radius:50%;color:rgba(255,255,255,.85);display:inline-block;font-size:.8rem;font-weight:300;height:1.6rem;line-height:1.25;margin:0;position:relative;vertical-align:middle;width:1.6rem}.avatar.avatar-xs{font-size:.4rem;height:.8rem;width:.8rem}.avatar.avatar-sm{font-size:.6rem;height:1.2rem;width:1.2rem}.avatar.avatar-lg{font-size:1.2rem;height:2.4rem;width:2.4rem}.avatar.avatar-xl{font-size:1.6rem;height:3.2rem;width:3.2rem}.avatar img{border-radius:50%;height:100%;position:relative;width:100%;z-index:1}.avatar .avatar-icon,.avatar .avatar-presence{background:#fff;bottom:14.64%;height:50%;padding:.1rem;position:absolute;right:14.64%;transform:translate(50%,50%);width:50%;z-index:2}.avatar .avatar-presence{background:#bcc3ce;border-radius:50%;box-shadow:0 0 0 .1rem #fff;height:.5em;width:.5em}.avatar .avatar-presence.online{background:#32b643}.avatar .avatar-presence.busy{background:#e85600}.avatar .avatar-presence.away{background:#ffb700}.avatar[data-initial]::before{color:currentColor;content:attr(data-initial);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}.badge{position:relative;white-space:nowrap}.badge:not([data-badge])::after,.badge[data-badge]::after{background:#5755d9;background-clip:padding-box;border-radius:.5rem;box-shadow:0 0 0 .1rem #fff;color:#fff;content:attr(data-badge);display:inline-block;transform:translate(-.05rem,-.5rem)}.badge[data-badge]::after{font-size:.7rem;height:.9rem;line-height:1;min-width:.9rem;padding:.1rem .2rem;text-align:center;white-space:nowrap}.badge:not([data-badge])::after,.badge[data-badge=""]::after{height:6px;min-width:6px;padding:0;width:6px}.badge.btn::after{position:absolute;right:0;top:0;transform:translate(50%,-50%)}.badge.avatar::after{position:absolute;right:14.64%;top:14.64%;transform:translate(50%,-50%);z-index:100}.breadcrumb{list-style:none;margin:.2rem 0;padding:.2rem 0}.breadcrumb .breadcrumb-item{color:#66758c;display:inline-block;margin:0;padding:.2rem 0}.breadcrumb .breadcrumb-item:not(:last-child){margin-right:.2rem}.breadcrumb .breadcrumb-item:not(:last-child) a{color:#66758c}.breadcrumb .breadcrumb-item:not(:first-child)::before{color:#66758c;content:"/";padding-right:.4rem}.bar{background:#eef0f3;border-radius:.1rem;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;height:.8rem;width:100%}.bar.bar-sm{height:.2rem}.bar .bar-item{background:#5755d9;color:#fff;display:block;-ms-flex-negative:0;flex-shrink:0;font-size:.7rem;height:100%;line-height:.8rem;position:relative;text-align:center;width:0}.bar .bar-item:first-child{border-bottom-left-radius:.1rem;border-top-left-radius:.1rem}.bar .bar-item:last-child{border-bottom-right-radius:.1rem;border-top-right-radius:.1rem;-ms-flex-negative:1;flex-shrink:1}.bar-slider{height:.1rem;margin:.4rem 0;position:relative}.bar-slider .bar-item{left:0;padding:0;position:absolute}.bar-slider .bar-item:not(:last-child):first-child{background:#eef0f3;z-index:1}.bar-slider .bar-slider-btn{background:#5755d9;border:0;border-radius:50%;height:.6rem;padding:0;position:absolute;right:0;top:50%;transform:translate(50%,-50%);width:.6rem}.bar-slider .bar-slider-btn:active{box-shadow:0 0 0 .1rem #5755d9}.card{background:#fff;border:.05rem solid #dadee4;border-radius:.1rem;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card .card-body,.card .card-footer,.card .card-header{padding:.8rem;padding-bottom:0}.card .card-body:last-child,.card .card-footer:last-child,.card .card-header:last-child{padding-bottom:.8rem}.card .card-body{-ms-flex:1 1 auto;flex:1 1 auto}.card .card-image{padding-top:.8rem}.card .card-image:first-child{padding-top:0}.card .card-image:first-child img{border-top-left-radius:.1rem;border-top-right-radius:.1rem}.card .card-image:last-child img{border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem}.chip{align-items:center;background:#eef0f3;border-radius:5rem;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;font-size:90%;height:1.2rem;line-height:.8rem;margin:.1rem;max-width:320px;overflow:hidden;padding:.2rem .4rem;text-decoration:none;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.chip.active{background:#5755d9;color:#fff}.chip .avatar{margin-left:-.4rem;margin-right:.2rem}.chip .btn-clear{border-radius:50%;transform:scale(.75)}.dropdown{display:inline-block;position:relative}.dropdown .menu{animation:slide-down .15s ease 1;display:none;left:0;max-height:50vh;overflow-y:auto;position:absolute;top:100%}.dropdown.dropdown-right .menu{left:auto;right:0}.dropdown .dropdown-toggle:focus+.menu,.dropdown .menu:hover,.dropdown.active .menu{display:block}.dropdown .btn-group .dropdown-toggle:nth-last-child(2){border-bottom-right-radius:.1rem;border-top-right-radius:.1rem}.empty{background:#f7f8f9;border-radius:.1rem;color:#66758c;padding:3.2rem 1.6rem;text-align:center}.empty .empty-icon{margin-bottom:.8rem}.empty .empty-subtitle,.empty .empty-title{margin:.4rem auto}.empty .empty-action{margin-top:.8rem}.menu{background:#fff;border-radius:.1rem;box-shadow:0 .05rem .2rem rgba(48,55,66,.3);list-style:none;margin:0;min-width:180px;padding:.4rem;transform:translateY(.2rem);z-index:300}.menu.menu-nav{background:0 0;box-shadow:none}.menu .menu-item{margin-top:0;padding:0 .4rem;position:relative;text-decoration:none}.menu .menu-item>a{border-radius:.1rem;color:inherit;display:block;margin:0 -.4rem;padding:.2rem .4rem;text-decoration:none}.menu .menu-item>a:focus,.menu .menu-item>a:hover{background:#f1f1fc;color:#5755d9}.menu .menu-item>a.active,.menu .menu-item>a:active{background:#f1f1fc;color:#5755d9}.menu .menu-item .form-checkbox,.menu .menu-item .form-radio,.menu .menu-item .form-switch{margin:.1rem 0}.menu .menu-item+.menu-item{margin-top:.2rem}.menu .menu-badge{align-items:center;display:-ms-flexbox;display:flex;-ms-flex-align:center;height:100%;position:absolute;right:0;top:0}.menu .menu-badge .label{margin-right:.4rem}.modal{align-items:center;bottom:0;display:none;-ms-flex-align:center;-ms-flex-pack:center;justify-content:center;left:0;opacity:0;overflow:hidden;padding:.4rem;position:fixed;right:0;top:0}.modal.active,.modal:target{display:-ms-flexbox;display:flex;opacity:1;z-index:400}.modal.active .modal-overlay,.modal:target .modal-overlay{background:rgba(247,248,249,.75);bottom:0;cursor:default;display:block;left:0;position:absolute;right:0;top:0}.modal.active .modal-container,.modal:target .modal-container{animation:slide-down .2s ease 1;z-index:1}.modal.modal-sm .modal-container{max-width:320px;padding:0 .4rem}.modal.modal-lg .modal-overlay{background:#fff}.modal.modal-lg .modal-container{box-shadow:none;max-width:960px}.modal-container{background:#fff;border-radius:.1rem;box-shadow:0 .2rem .5rem rgba(48,55,66,.3);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-height:75vh;max-width:640px;padding:0 .8rem;width:100%}.modal-container.modal-fullheight{max-height:100vh}.modal-container .modal-header{color:#303742;padding:.8rem}.modal-container .modal-body{overflow-y:auto;padding:.8rem;position:relative}.modal-container .modal-footer{padding:.8rem;text-align:right}.nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;list-style:none;margin:.2rem 0}.nav .nav-item a{color:#66758c;padding:.2rem .4rem;text-decoration:none}.nav .nav-item a:focus,.nav .nav-item a:hover{color:#5755d9}.nav .nav-item.active>a{color:#505c6e;font-weight:700}.nav .nav-item.active>a:focus,.nav .nav-item.active>a:hover{color:#5755d9}.nav .nav{margin-bottom:.4rem;margin-left:.8rem}.pagination{display:-ms-flexbox;display:flex;list-style:none;margin:.2rem 0;padding:.2rem 0}.pagination .page-item{margin:.2rem .05rem}.pagination .page-item span{display:inline-block;padding:.2rem .2rem}.pagination .page-item a{border-radius:.1rem;display:inline-block;padding:.2rem .4rem;text-decoration:none}.pagination .page-item a:focus,.pagination .page-item a:hover{color:#5755d9}.pagination .page-item.disabled a{cursor:default;opacity:.5;pointer-events:none}.pagination .page-item.active a{background:#5755d9;color:#fff}.pagination .page-item.page-next,.pagination .page-item.page-prev{-ms-flex:1 0 50%;flex:1 0 50%}.pagination .page-item.page-next{text-align:right}.pagination .page-item .page-item-title{margin:0}.pagination .page-item .page-item-subtitle{margin:0;opacity:.5}.panel{border:.05rem solid #dadee4;border-radius:.1rem;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.panel .panel-footer,.panel .panel-header{-ms-flex:0 0 auto;flex:0 0 auto;padding:.8rem}.panel .panel-nav{-ms-flex:0 0 auto;flex:0 0 auto}.panel .panel-body{-ms-flex:1 1 auto;flex:1 1 auto;overflow-y:auto;padding:0 .8rem}.popover{display:inline-block;position:relative}.popover .popover-container{left:50%;opacity:0;padding:.4rem;position:absolute;top:0;transform:translate(-50%,-50%) scale(0);transition:transform .2s;width:320px;z-index:300}.popover :focus+.popover-container,.popover:hover .popover-container{display:block;opacity:1;transform:translate(-50%,-100%) scale(1)}.popover.popover-right .popover-container{left:100%;top:50%}.popover.popover-right :focus+.popover-container,.popover.popover-right:hover .popover-container{transform:translate(0,-50%) scale(1)}.popover.popover-bottom .popover-container{left:50%;top:100%}.popover.popover-bottom :focus+.popover-container,.popover.popover-bottom:hover .popover-container{transform:translate(-50%,0) scale(1)}.popover.popover-left .popover-container{left:0;top:50%}.popover.popover-left :focus+.popover-container,.popover.popover-left:hover .popover-container{transform:translate(-100%,-50%) scale(1)}.popover .card{border:0;box-shadow:0 .2rem .5rem rgba(48,55,66,.3)}.step{display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;list-style:none;margin:.2rem 0;width:100%}.step .step-item{-ms-flex:1 1 0;flex:1 1 0;margin-top:0;min-height:1rem;position:relative;text-align:center}.step .step-item:not(:first-child)::before{background:#5755d9;content:"";height:2px;left:-50%;position:absolute;top:9px;width:100%}.step .step-item a{color:#5755d9;display:inline-block;padding:20px 10px 0;text-decoration:none}.step .step-item a::before{background:#5755d9;border:.1rem solid #fff;border-radius:50%;content:"";display:block;height:.6rem;left:50%;position:absolute;top:.2rem;transform:translateX(-50%);width:.6rem;z-index:1}.step .step-item.active a::before{background:#fff;border:.1rem solid #5755d9}.step .step-item.active~.step-item::before{background:#dadee4}.step .step-item.active~.step-item a{color:#bcc3ce}.step .step-item.active~.step-item a::before{background:#dadee4}.tab{align-items:center;border-bottom:.05rem solid #dadee4;display:-ms-flexbox;display:flex;-ms-flex-align:center;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style:none;margin:.2rem 0 .15rem 0}.tab .tab-item{margin-top:0}.tab .tab-item a{border-bottom:.1rem solid transparent;color:inherit;display:block;margin:0 .4rem 0 0;padding:.4rem .2rem .3rem .2rem;text-decoration:none}.tab .tab-item a:focus,.tab .tab-item a:hover{color:#5755d9}.tab .tab-item a.active,.tab .tab-item.active a{border-bottom-color:#5755d9;color:#5755d9}.tab .tab-item.tab-action{-ms-flex:1 0 auto;flex:1 0 auto;text-align:right}.tab .tab-item .btn-clear{margin-top:-.2rem}.tab.tab-block .tab-item{-ms-flex:1 0 0;flex:1 0 0;text-align:center}.tab.tab-block .tab-item a{margin:0}.tab.tab-block .tab-item .badge[data-badge]::after{position:absolute;right:.1rem;top:.1rem;transform:translate(0,0)}.tab:not(.tab-block) .badge{padding-right:0}.tile{align-content:space-between;align-items:flex-start;display:-ms-flexbox;display:flex;-ms-flex-align:start;-ms-flex-line-pack:justify}.tile .tile-action,.tile .tile-icon{-ms-flex:0 0 auto;flex:0 0 auto}.tile .tile-content{-ms-flex:1 1 auto;flex:1 1 auto}.tile .tile-content:not(:first-child){padding-left:.4rem}.tile .tile-content:not(:last-child){padding-right:.4rem}.tile .tile-subtitle,.tile .tile-title{line-height:1.2rem}.tile.tile-centered{align-items:center;-ms-flex-align:center}.tile.tile-centered .tile-content{overflow:hidden}.tile.tile-centered .tile-subtitle,.tile.tile-centered .tile-title{margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast{background:rgba(48,55,66,.95);border:.05rem solid #303742;border-color:#303742;border-radius:.1rem;color:#fff;display:block;padding:.4rem;width:100%}.toast.toast-primary{background:rgba(87,85,217,.95);border-color:#5755d9}.toast.toast-success{background:rgba(50,182,67,.95);border-color:#32b643}.toast.toast-warning{background:rgba(255,183,0,.95);border-color:#ffb700}.toast.toast-error{background:rgba(232,86,0,.95);border-color:#e85600}.toast a{color:#fff;text-decoration:underline}.toast a.active,.toast a:active,.toast a:focus,.toast a:hover{opacity:.75}.toast .btn-clear{margin:.1rem}.toast p:last-child{margin-bottom:0}.tooltip{position:relative}.tooltip::after{background:rgba(48,55,66,.95);border-radius:.1rem;bottom:100%;color:#fff;content:attr(data-tooltip);display:block;font-size:.7rem;left:50%;max-width:320px;opacity:0;overflow:hidden;padding:.2rem .4rem;pointer-events:none;position:absolute;text-overflow:ellipsis;transform:translate(-50%,.4rem);transition:opacity .2s,transform .2s;white-space:pre;z-index:300}.tooltip:focus::after,.tooltip:hover::after{opacity:1;transform:translate(-50%,-.2rem)}.tooltip.disabled,.tooltip[disabled]{pointer-events:auto}.tooltip.tooltip-right::after{bottom:50%;left:100%;transform:translate(-.2rem,50%)}.tooltip.tooltip-right:focus::after,.tooltip.tooltip-right:hover::after{transform:translate(.2rem,50%)}.tooltip.tooltip-bottom::after{bottom:auto;top:100%;transform:translate(-50%,-.4rem)}.tooltip.tooltip-bottom:focus::after,.tooltip.tooltip-bottom:hover::after{transform:translate(-50%,.2rem)}.tooltip.tooltip-left::after{bottom:50%;left:auto;right:100%;transform:translate(.4rem,50%)}.tooltip.tooltip-left:focus::after,.tooltip.tooltip-left:hover::after{transform:translate(-.2rem,50%)}@keyframes loading{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-1.6rem)}100%{opacity:1;transform:translateY(0)}}.text-primary{color:#5755d9!important}a.text-primary:focus,a.text-primary:hover{color:#4240d4}a.text-primary:visited{color:#6c6ade}.text-secondary{color:#e5e5f9!important}a.text-secondary:focus,a.text-secondary:hover{color:#d1d0f4}a.text-secondary:visited{color:#fafafe}.text-gray{color:#bcc3ce!important}a.text-gray:focus,a.text-gray:hover{color:#adb6c4}a.text-gray:visited{color:#cbd0d9}.text-light{color:#fff!important}a.text-light:focus,a.text-light:hover{color:#f2f2f2}a.text-light:visited{color:#fff}.text-dark{color:#3b4351!important}a.text-dark:focus,a.text-dark:hover{color:#303742}a.text-dark:visited{color:#455060}.text-success{color:#32b643!important}a.text-success:focus,a.text-success:hover{color:#2da23c}a.text-success:visited{color:#39c94b}.text-warning{color:#ffb700!important}a.text-warning:focus,a.text-warning:hover{color:#e6a500}a.text-warning:visited{color:#ffbe1a}.text-error{color:#e85600!important}a.text-error:focus,a.text-error:hover{color:#cf4d00}a.text-error:visited{color:#ff6003}.bg-primary{background:#5755d9!important;color:#fff}.bg-secondary{background:#f1f1fc!important}.bg-dark{background:#303742!important;color:#fff}.bg-gray{background:#f7f8f9!important}.bg-success{background:#32b643!important;color:#fff}.bg-warning{background:#ffb700!important;color:#fff}.bg-error{background:#e85600!important;color:#fff}.c-hand{cursor:pointer}.c-move{cursor:move}.c-zoom-in{cursor:zoom-in}.c-zoom-out{cursor:zoom-out}.c-not-allowed{cursor:not-allowed}.c-auto{cursor:auto}.d-block{display:block}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-flex{display:-ms-flexbox;display:flex}.d-inline-flex{display:-ms-inline-flexbox;display:inline-flex}.d-hide,.d-none{display:none!important}.d-visible{visibility:visible}.d-invisible{visibility:hidden}.text-hide{background:0 0;border:0;color:transparent;font-size:0;line-height:0;text-shadow:none}.text-assistive{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.divider,.divider-vert{display:block;position:relative}.divider-vert[data-content]::after,.divider[data-content]::after{background:#fff;color:#bcc3ce;content:attr(data-content);display:inline-block;font-size:.7rem;padding:0 .4rem;transform:translateY(-.65rem)}.divider{border-top:.05rem solid #f1f3f5;height:.05rem;margin:.4rem 0}.divider[data-content]{margin:.8rem 0}.divider-vert{display:block;padding:.8rem}.divider-vert::before{border-left:.05rem solid #dadee4;bottom:.4rem;content:"";display:block;left:50%;position:absolute;top:.4rem;transform:translateX(-50%)}.divider-vert[data-content]::after{left:50%;padding:.2rem 0;position:absolute;top:50%;transform:translate(-50%,-50%)}.loading{color:transparent!important;min-height:.8rem;pointer-events:none;position:relative}.loading::after{animation:loading .5s infinite linear;background:0 0;border:.1rem solid #5755d9;border-radius:50%;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:.8rem;left:50%;margin-left:-.4rem;margin-top:-.4rem;opacity:1;padding:0;position:absolute;top:50%;width:.8rem;z-index:1}.loading.loading-lg{min-height:2rem}.loading.loading-lg::after{height:1.6rem;margin-left:-.8rem;margin-top:-.8rem;width:1.6rem}.clearfix::after{clear:both;content:"";display:table}.float-left{float:left!important}.float-right{float:right!important}.p-relative{position:relative!important}.p-absolute{position:absolute!important}.p-fixed{position:fixed!important}.p-sticky{position:-webkit-sticky!important;position:sticky!important}.p-centered{display:block;float:none;margin-left:auto;margin-right:auto}.flex-centered{align-items:center;display:-ms-flexbox;display:flex;-ms-flex-align:center;-ms-flex-pack:center;justify-content:center}.m-0{margin:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mr-0{margin-right:0!important}.mt-0{margin-top:0!important}.mx-0{margin-left:0!important;margin-right:0!important}.my-0{margin-bottom:0!important;margin-top:0!important}.m-1{margin:.2rem!important}.mb-1{margin-bottom:.2rem!important}.ml-1{margin-left:.2rem!important}.mr-1{margin-right:.2rem!important}.mt-1{margin-top:.2rem!important}.mx-1{margin-left:.2rem!important;margin-right:.2rem!important}.my-1{margin-bottom:.2rem!important;margin-top:.2rem!important}.m-2{margin:.4rem!important}.mb-2{margin-bottom:.4rem!important}.ml-2{margin-left:.4rem!important}.mr-2{margin-right:.4rem!important}.mt-2{margin-top:.4rem!important}.mx-2{margin-left:.4rem!important;margin-right:.4rem!important}.my-2{margin-bottom:.4rem!important;margin-top:.4rem!important}.p-0{padding:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.pr-0{padding-right:0!important}.pt-0{padding-top:0!important}.px-0{padding-left:0!important;padding-right:0!important}.py-0{padding-bottom:0!important;padding-top:0!important}.p-1{padding:.2rem!important}.pb-1{padding-bottom:.2rem!important}.pl-1{padding-left:.2rem!important}.pr-1{padding-right:.2rem!important}.pt-1{padding-top:.2rem!important}.px-1{padding-left:.2rem!important;padding-right:.2rem!important}.py-1{padding-bottom:.2rem!important;padding-top:.2rem!important}.p-2{padding:.4rem!important}.pb-2{padding-bottom:.4rem!important}.pl-2{padding-left:.4rem!important}.pr-2{padding-right:.4rem!important}.pt-2{padding-top:.4rem!important}.px-2{padding-left:.4rem!important;padding-right:.4rem!important}.py-2{padding-bottom:.4rem!important;padding-top:.4rem!important}.s-rounded{border-radius:.1rem}.s-circle{border-radius:50%}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-normal{font-weight:400}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-large{font-size:1.2em}.text-small{font-size:.9em}.text-tiny{font-size:.8em}.text-muted{opacity:.8}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-clip{overflow:hidden;text-overflow:clip;white-space:nowrap}.text-break{-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;word-break:break-word;word-wrap:break-word} \ No newline at end of file diff --git a/public/index.html b/public/index.html deleted file mode 100644 index 8238596..0000000 --- a/public/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - LfK!Scan - - - - - - - - - - - - \ No newline at end of file diff --git a/public/svelte.png b/public/svelte.png deleted file mode 100644 index 36e6ee676202e7129e03a3e533f1d48d7ee4ffec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21668 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π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 Apa1{> diff --git a/rollup.config.js b/rollup.config.js deleted file mode 100644 index 6a95234..0000000 --- a/rollup.config.js +++ /dev/null @@ -1,75 +0,0 @@ -import svelte from 'rollup-plugin-svelte'; -import resolve from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; -import livereload from 'rollup-plugin-livereload'; -import { terser } from 'rollup-plugin-terser'; - -const production = !process.env.ROLLUP_WATCH; - -function serve() { - let server; - - function toExit() { - if (server) server.kill(0); - } - - return { - writeBundle() { - if (server) return; - server = require('child_process').spawn('npm', ['run', 'start', '--', '--dev'], { - stdio: ['ignore', 'inherit', 'inherit'], - shell: true - }); - - process.on('SIGTERM', toExit); - process.on('exit', toExit); - } - }; -} - -export default { - input: 'src/main.js', - output: { - sourcemap: true, - format: 'iife', - name: 'app', - file: 'public/build/bundle.js' - }, - plugins: [ - svelte({ - // enable run-time checks when not in production - dev: !production, - // we'll extract any component CSS out into - // a separate file - better for performance - css: css => { - css.write('public/build/bundle.css'); - } - }), - - // If you have external dependencies installed from - // npm, you'll most likely need these plugins. In - // some cases you'll need additional configuration - - // consult the documentation for details: - // https://github.com/rollup/plugins/tree/master/packages/commonjs - resolve({ - browser: true, - dedupe: ['svelte'] - }), - commonjs(), - - // In dev mode, call `npm run start` once - // the bundle has been generated - !production && serve(), - - // Watch the `public` directory and refresh the - // browser on changes when not in production - !production && livereload('public'), - - // If we're building for production (npm run build - // instead of npm run dev), minify - production && terser() - ], - watch: { - clearScreen: false - } -}; diff --git a/scripts/setupTypeScript.js b/scripts/setupTypeScript.js deleted file mode 100644 index 964d55b..0000000 --- a/scripts/setupTypeScript.js +++ /dev/null @@ -1,125 +0,0 @@ -// @ts-check - -/** This script modifies the project to support TS code in .svelte files like: - - - - As well as validating the code for CI. - */ - -/** To work on this script: - rm -rf test-template template && git clone sveltejs/template test-template && node scripts/setupTypeScript.js test-template -*/ - -const fs = require("fs") -const path = require("path") -const { argv } = require("process") - -const projectRoot = argv[2] || path.join(__dirname, "..") - -// Add deps to pkg.json -const packageJSON = JSON.parse(fs.readFileSync(path.join(projectRoot, "package.json"), "utf8")) -packageJSON.devDependencies = Object.assign(packageJSON.devDependencies, { - "svelte-check": "^1.0.0", - "svelte-preprocess": "^4.0.0", - "@rollup/plugin-typescript": "^4.0.0", - "typescript": "^3.9.3", - "tslib": "^2.0.0", - "@tsconfig/svelte": "^1.0.0" -}) - -// Add script for checking -packageJSON.scripts = Object.assign(packageJSON.scripts, { - "validate": "svelte-check" -}) - -// Write the package JSON -fs.writeFileSync(path.join(projectRoot, "package.json"), JSON.stringify(packageJSON, null, " ")) - -// mv src/main.js to main.ts - note, we need to edit rollup.config.js for this too -const beforeMainJSPath = path.join(projectRoot, "src", "main.js") -const afterMainTSPath = path.join(projectRoot, "src", "main.ts") -fs.renameSync(beforeMainJSPath, afterMainTSPath) - -// Switch the app.svelte file to use TS -const appSveltePath = path.join(projectRoot, "src", "App.svelte") -let appFile = fs.readFileSync(appSveltePath, "utf8") -appFile = appFile.replace(" {#if settings_open && is_configured} - + {:else if is_configured} - + {:else} - + {/if} From 936f0238862bc9ebb6798015bf81a1794e2da6cf Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Tue, 16 Mar 2021 14:34:27 +0100 Subject: [PATCH 17/32] =?UTF-8?q?[husky=20=F0=9F=90=B6]=20improved=20hook?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .husky/pre-commit | 2 +- app/src/App.svelte | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 1b2e1c6..2b61b57 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -cd app && yarn format +yarn format diff --git a/app/src/App.svelte b/app/src/App.svelte index dccf1cb..c357889 100644 --- a/app/src/App.svelte +++ b/app/src/App.svelte @@ -1,17 +1,17 @@ {#if settings_open && is_configured} - + {:else if is_configured} - + {:else} - + {/if} From 8c465e8b7dae72e5b6436189a282a4ce7c1a5996 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Tue, 16 Mar 2021 14:34:43 +0100 Subject: [PATCH 18/32] =?UTF-8?q?[husky=20=F0=9F=90=B6]=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/App.svelte | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/App.svelte b/app/src/App.svelte index c357889..dccf1cb 100644 --- a/app/src/App.svelte +++ b/app/src/App.svelte @@ -1,17 +1,17 @@ {#if settings_open && is_configured} - + {:else if is_configured} - + {:else} - + {/if} From 42b2390bd76ddc7597f847c3c93aaef3b50940fb Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Tue, 16 Mar 2021 14:39:57 +0100 Subject: [PATCH 19/32] responsiveness of scanner component ref #1 --- app/src/App.svelte | 20 ++++++++++---------- app/src/Scanner.svelte | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/App.svelte b/app/src/App.svelte index dccf1cb..c357889 100644 --- a/app/src/App.svelte +++ b/app/src/App.svelte @@ -1,17 +1,17 @@ {#if settings_open && is_configured} - + {:else if is_configured} - + {:else} - + {/if} diff --git a/app/src/Scanner.svelte b/app/src/Scanner.svelte index 8b07851..340ef3f 100644 --- a/app/src/Scanner.svelte +++ b/app/src/Scanner.svelte @@ -25,7 +25,7 @@ {hours}:{minutes}:{seconds}

-
+
Date: Wed, 17 Mar 2021 18:44:10 +0100 Subject: [PATCH 20/32] add stationinfo persistence ref #1 --- app/src/Login.svelte | 21 ++++++++++++++++++--- app/src/store.js | 5 +++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/src/Login.svelte b/app/src/Login.svelte index 40febb9..9caedba 100644 --- a/app/src/Login.svelte +++ b/app/src/Login.svelte @@ -1,6 +1,9 @@ +
+
+
+ +
+ +
+ Lauf Für Kaya! Scan 📷 +
+ +
+ {JSON.parse($stationinfo).track.name} - #{JSON.parse($stationinfo).track + .id} - {JSON.parse($stationinfo).track.distance}m +
+
+
+
-

- Lauf Für Kaya! Scan 📷 -

+ {$stationinfo}

{hours}:{minutes}:{seconds}

@@ -33,31 +49,37 @@ if (card === "cnf") { page.set("settings"); } else { - console.log(card); - //TODO: hit API for scan entry - lastscan_totaldistance = "400m"; - let time = new Date(); - const hours = (time.getHours() + "").padStart(2, "0"); - const minutes = (time.getMinutes() + "").padStart(2, "0"); - const seconds = (time.getSeconds() + "").padStart(2, "0"); - lastscan_time = hours + ":" + minutes + ":" + seconds; - lastscan_laptime = "1min 30s"; + console.log({ + blubb: { Authorization: "Bearer " + $apikey }, + data: { card, station: JSON.parse($stationinfo).id }, + }); + axios + .request({ + method: "GET", + url: "https://dev.lauf-fuer-kaya.de/api/scans/trackscans", + headers: { Authorization: "Bearer " + $apikey }, + data: { card, station: JSON.parse($stationinfo).id }, + }) + .then(function (response) { + console.log(response.data); + // ------------------------ + console.log(card); + lastscan_totaldistance = "?m"; + let time = new Date(); + const hours = (time.getHours() + "").padStart(2, "0"); + const minutes = (time.getMinutes() + "").padStart(2, "0"); + const seconds = (time.getSeconds() + "").padStart(2, "0"); + lastscan_time = hours + ":" + minutes + ":" + seconds; + lastscan_laptime = response.data.lapTime + "s"; + // ------------------------ + }) + .catch(function (e) { + console.log(e.response); + }); } card = ""; }} > - {#if lastscan_totaldistance} -

last scan

-

{lastscan_time}

-

total distance

-

- {lastscan_totaldistance} -

-

lap time

-

{lastscan_laptime}

- {:else} -

please scan a card...

- {/if} + {#if lastscan_totaldistance} +

last scan

+

{lastscan_time}

+

total distance

+

+ {lastscan_totaldistance} +

+

lap time

+

{lastscan_laptime}

+ {:else} +

please scan a card...

+ {/if} From f5537278ab3a3b22a096e4584ee11deac3a728dc Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Wed, 17 Mar 2021 18:52:17 +0100 Subject: [PATCH 22/32] display station info in settings view ref #1 --- app/src/Settings.svelte | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/Settings.svelte b/app/src/Settings.svelte index bed35a9..f135e4e 100644 --- a/app/src/Settings.svelte +++ b/app/src/Settings.svelte @@ -1,6 +1,5 @@ -
@@ -8,10 +7,21 @@ Lauf Für Kaya! Scan 📷

Settings

-

API Key

+

API Key

{$apikey}

-
-

Language

+

Station Description

+

{JSON.parse($stationinfo).description}

+

Station ID

+

{JSON.parse($stationinfo).id}

+

Track ID

+

{JSON.parse($stationinfo).track.id}

+

Track Name

+

{JSON.parse($stationinfo).track.name}

+

Track Distance

+

{JSON.parse($stationinfo).track.distance}

+

minimum lap time

+

{JSON.parse($stationinfo).track.minimumLapTime}s

+

Language

- {$stationinfo} -

+

{hours}:{minutes}:{seconds}

+ {#if lastscan_error} +
+ + Error!
{lastscan_error} +
+
+ {/if}
API Key

{$apikey}

Station Description

-

{JSON.parse($stationinfo).description}

+

+ {JSON.parse($stationinfo).description} +

Station ID

{JSON.parse($stationinfo).id}

Track ID

{JSON.parse($stationinfo).track.id}

Track Name

-

{JSON.parse($stationinfo).track.name}

+

+ {JSON.parse($stationinfo).track.name} +

Track Distance

-

{JSON.parse($stationinfo).track.distance}

+

+ {JSON.parse($stationinfo).track.distance} +

minimum lap time

-

{JSON.parse($stationinfo).track.minimumLapTime}s

+

+ {JSON.parse($stationinfo).track.minimumLapTime}s +

Language

From 559842d2a6e99f872e35a574bdfc64a60b9b3757 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Wed, 17 Mar 2021 18:55:50 +0100 Subject: [PATCH 24/32] basic Scanner working ref #1 --- app/src/Scanner.svelte | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/app/src/Scanner.svelte b/app/src/Scanner.svelte index d4ed4bc..c49aeed 100644 --- a/app/src/Scanner.svelte +++ b/app/src/Scanner.svelte @@ -58,14 +58,11 @@ if (card === "cnf") { page.set("settings"); } else { - console.log({ - blubb: { Authorization: "Bearer " + $apikey }, - data: { card, station: JSON.parse($stationinfo).id }, - }); + card = parseInt(card); lastscan_error = ""; axios .request({ - method: "GET", + method: "POST", url: "https://dev.lauf-fuer-kaya.de/api/scans/trackscans", headers: { Authorization: "Bearer " + $apikey }, data: { card, station: JSON.parse($stationinfo).id }, From c930d879003d27bccb5e7118ed151e3e20487172 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Wed, 17 Mar 2021 19:06:53 +0100 Subject: [PATCH 25/32] Scanner - display total distance ref #1 --- app/src/Scanner.svelte | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/app/src/Scanner.svelte b/app/src/Scanner.svelte index c49aeed..fc4869b 100644 --- a/app/src/Scanner.svelte +++ b/app/src/Scanner.svelte @@ -67,21 +67,17 @@ headers: { Authorization: "Bearer " + $apikey }, data: { card, station: JSON.parse($stationinfo).id }, }) - .then(function (response) { - console.log(response.data); - // ------------------------ - console.log(card); - lastscan_totaldistance = "?m"; - let time = new Date(); + .then((response) => { + console.log(response.data.runner); + lastscan_totaldistance = response.data.runner.distance + "m"; + const time = new Date(); const hours = (time.getHours() + "").padStart(2, "0"); const minutes = (time.getMinutes() + "").padStart(2, "0"); const seconds = (time.getSeconds() + "").padStart(2, "0"); lastscan_time = hours + ":" + minutes + ":" + seconds; lastscan_laptime = response.data.lapTime + "s"; - // ------------------------ }) - .catch(function (e) { - console.log(e.response); + .catch((e) => { lastscan_error = e.response.data.message; }); } From 0ebabe239c144c16faa23f6537f4b5516c81a033 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Wed, 17 Mar 2021 19:59:07 +0100 Subject: [PATCH 26/32] =?UTF-8?q?working=20scans=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/Scanner.svelte | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/app/src/Scanner.svelte b/app/src/Scanner.svelte index fc4869b..a0ddb72 100644 --- a/app/src/Scanner.svelte +++ b/app/src/Scanner.svelte @@ -19,6 +19,7 @@ }, 1000); +
@@ -36,7 +37,6 @@
-

{hours}:{minutes}:{seconds}

@@ -65,17 +65,17 @@ method: "POST", url: "https://dev.lauf-fuer-kaya.de/api/scans/trackscans", headers: { Authorization: "Bearer " + $apikey }, - data: { card, station: JSON.parse($stationinfo).id }, + data: { card }, }) .then((response) => { - console.log(response.data.runner); - lastscan_totaldistance = response.data.runner.distance + "m"; const time = new Date(); const hours = (time.getHours() + "").padStart(2, "0"); const minutes = (time.getMinutes() + "").padStart(2, "0"); const seconds = (time.getSeconds() + "").padStart(2, "0"); lastscan_time = hours + ":" + minutes + ":" + seconds; - lastscan_laptime = response.data.lapTime + "s"; + response.data.lapTime = Math.floor(response.data.lapTime / 60) + 'min ' + (Math.floor(response.data.lapTime % 60) + "").padStart(2, "0") + "s" + lastscan_laptime = response.data.lapTime; + lastscan_totaldistance = Math.floor(response.data.runner.distance / 1000) + 'km ' + (Math.floor(response.data.runner.distance % 1000) + "").padStart(3, "0") + "m" }) .catch((e) => { lastscan_error = e.response.data.message; @@ -101,15 +101,14 @@

last scan

{lastscan_time}

total distance

-

+

{lastscan_totaldistance}

lap time

-

{lastscan_laptime}

+

{lastscan_laptime}

{:else}

please scan a card...

{/if} -
From 16d9a6dda87c1aabe02f0d058d44b40292f9e8c6 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Thu, 18 Mar 2021 18:15:54 +0100 Subject: [PATCH 27/32] basic i18n ref #1 --- .vscode/i18n-ally-custom-framework.yml | 7 +++++ .vscode/settings.json | 4 +++ app/package.json | 6 ++-- app/src/App.svelte | 13 ++++++++ app/src/Login.svelte | 43 +++++++++++++++----------- app/src/Scanner.svelte | 42 ++++++++++++++++--------- app/src/locales/de.json | 9 ++++++ app/src/locales/en.json | 14 +++++++++ package.json | 10 +++--- 9 files changed, 109 insertions(+), 39 deletions(-) create mode 100644 .vscode/i18n-ally-custom-framework.yml create mode 100644 .vscode/settings.json create mode 100644 app/src/locales/de.json create mode 100644 app/src/locales/en.json diff --git a/.vscode/i18n-ally-custom-framework.yml b/.vscode/i18n-ally-custom-framework.yml new file mode 100644 index 0000000..3fe77a2 --- /dev/null +++ b/.vscode/i18n-ally-custom-framework.yml @@ -0,0 +1,7 @@ +languageIds: + - javascript + - svelte + - html +monopoly: false +refactorTemplates: + - "{$_('$1')}" \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..9143452 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "i18n-ally.localesPaths": "app/src/locales", + "i18n-ally.keystyle": "nested" +} \ No newline at end of file diff --git a/app/package.json b/app/package.json index 12e7b5b..ac4e023 100644 --- a/app/package.json +++ b/app/package.json @@ -8,7 +8,7 @@ "prepare": "husky install" }, "devDependencies": { - "@svitejs/vite-plugin-svelte": "^0.11.0", + "@svitejs/vite-plugin-svelte": "^0.11.1", "@tsconfig/svelte": "^1.0.10", "@types/html-minifier": "^4.0.0", "axios": "^0.21.1", @@ -19,7 +19,7 @@ "prettier-plugin-svelte": "^2.2.0", "svelte": "^3.35.0", "svelte-preprocess": "^4.6.9", - "vite": "^2.0.5", - "vite-plugin-windicss": "^0.8.2" + "vite": "^2.1.2", + "vite-plugin-windicss": "^0.9.2" } } diff --git a/app/src/App.svelte b/app/src/App.svelte index c357889..520f605 100644 --- a/app/src/App.svelte +++ b/app/src/App.svelte @@ -1,4 +1,12 @@ {#if settings_open && is_configured} diff --git a/app/src/Login.svelte b/app/src/Login.svelte index 6f771b8..3945cb0 100644 --- a/app/src/Login.svelte +++ b/app/src/Login.svelte @@ -1,6 +1,7 @@
-
-
-
- -
+
+
+
+ +
-
- Lauf Für Kaya! Scan 📷 -
+
+ Lauf Für Kaya! Scan 📷 +
-
- {JSON.parse($stationinfo).track.name} - #{JSON.parse($stationinfo).track - .id} - {JSON.parse($stationinfo).track.distance}m +
+ {JSON.parse($stationinfo).track.name} - #{JSON.parse($stationinfo).track + .id} - {JSON.parse($stationinfo).track.distance}m +
-

{hours}:{minutes}:{seconds} @@ -73,9 +74,22 @@ const minutes = (time.getMinutes() + "").padStart(2, "0"); const seconds = (time.getSeconds() + "").padStart(2, "0"); lastscan_time = hours + ":" + minutes + ":" + seconds; - response.data.lapTime = Math.floor(response.data.lapTime / 60) + 'min ' + (Math.floor(response.data.lapTime % 60) + "").padStart(2, "0") + "s" + response.data.lapTime = + Math.floor(response.data.lapTime / 60) + + "min " + + (Math.floor(response.data.lapTime % 60) + "").padStart( + 2, + "0" + ) + + "s"; lastscan_laptime = response.data.lapTime; - lastscan_totaldistance = Math.floor(response.data.runner.distance / 1000) + 'km ' + (Math.floor(response.data.runner.distance % 1000) + "").padStart(3, "0") + "m" + lastscan_totaldistance = + Math.floor(response.data.runner.distance / 1000) + + "km " + + ( + Math.floor(response.data.runner.distance % 1000) + "" + ).padStart(3, "0") + + "m"; }) .catch((e) => { lastscan_error = e.response.data.message; diff --git a/app/src/locales/de.json b/app/src/locales/de.json new file mode 100644 index 0000000..2c9df8d --- /dev/null +++ b/app/src/locales/de.json @@ -0,0 +1,9 @@ +{ + "english": "Englisch", + "the_provided_scan_station_token_is_invalid": "", + "configuration": "Konfiguration", + "please_provide_the_scan_client_token": "Bitte gebe den Scan-Client-Token an.", + "the_provided_scan_station_is_disabled": "Die angegebene Scanstation ist deaktiviert.", + "see_our_configuration_guide": "Siehe dir unsere Konfigurationsanleitung an.", + "please_provide_a_valid_client_token": "Bitte gebe einen gültigen Client-Token an ..." +} diff --git a/app/src/locales/en.json b/app/src/locales/en.json new file mode 100644 index 0000000..2b31e66 --- /dev/null +++ b/app/src/locales/en.json @@ -0,0 +1,14 @@ +{ + "please_provide_the_scan_client_token": "Please provide the scan client token.", + "configuration": "Configuration", + "see_our_configuration_guide": "See our configuration guide.", + "error": "Error!", + "the_provided_scan_station_token_is_invalid": "The provided scan station token is invalid.", + "please_check_your_token_and_try_again": "Please check your token and try again...", + "the_provided_scan_station_is_disabled": "The provided scan station is disabled.", + "client_token": "Client Token", + "please_provide_a_valid_client_token": "Please provide a valid client token...", + "configure": "Configure", + "german": "Deutsch", + "english": "English" +} diff --git a/package.json b/package.json index 5037c24..7fef7bc 100644 --- a/package.json +++ b/package.json @@ -16,11 +16,11 @@ "@electron-forge/maker-rpm": "^6.0.0-beta.54", "@electron-forge/maker-squirrel": "^6.0.0-beta.54", "@electron-forge/maker-zip": "^6.0.0-beta.54", - "electron-nightly": "14.0.0-nightly.20210311", - "husky": "^5.1.3" + "electron-nightly": "14.0.0-nightly.20210318" }, "dependencies": { - "electron-squirrel-startup": "^1.0.0" + "electron-squirrel-startup": "^1.0.0", + "svelte-i18n": "^3.3.7" }, "config": { "forge": { @@ -28,7 +28,9 @@ "makers": [ { "name": "@electron-forge/maker-zip", - "platforms": [ "darwin" ], + "platforms": [ + "darwin" + ], "config": { "name": "lfk__scanclient" } From ff99657ab3d29ff8dee3d366db673e5b84716093 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Thu, 18 Mar 2021 18:19:57 +0100 Subject: [PATCH 28/32] =?UTF-8?q?drop=20husky=20=F0=9F=90=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .husky/.gitignore | 1 - .husky/pre-commit | 4 ---- app/package.json | 4 +--- package.json | 1 - 4 files changed, 1 insertion(+), 9 deletions(-) delete mode 100644 .husky/.gitignore delete mode 100644 .husky/pre-commit diff --git a/.husky/.gitignore b/.husky/.gitignore deleted file mode 100644 index 31354ec..0000000 --- a/.husky/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_ diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100644 index 2b61b57..0000000 --- a/.husky/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -yarn format diff --git a/app/package.json b/app/package.json index ac4e023..58b6847 100644 --- a/app/package.json +++ b/app/package.json @@ -4,8 +4,7 @@ "scripts": { "dev": "vite", "build": "vite build", - "format": "prettier --write --plugin-search-dir=. ./**/*.html ./**/*.svelte", - "prepare": "husky install" + "format": "prettier --write --plugin-search-dir=. ./**/*.html ./**/*.svelte" }, "devDependencies": { "@svitejs/vite-plugin-svelte": "^0.11.1", @@ -14,7 +13,6 @@ "axios": "^0.21.1", "glob": "^7.1.6", "html-minifier": "^4.0.0", - "husky": "^5.1.3", "prettier": "^2.2.1", "prettier-plugin-svelte": "^2.2.0", "svelte": "^3.35.0", diff --git a/package.json b/package.json index 7fef7bc..a39a03e 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,6 @@ "dev": "cd app && yarn dev", "electron:start": "cd app && yarn build && cd .. && electron-forge start", "electron:package": "cd app && yarn build && cd .. && electron-forge package", - "prepare": "husky install", "format": "cd app && yarn format" }, "devDependencies": { From 0aea3c1e7ca4f83c0277245f6fa8c7772a152a80 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Thu, 18 Mar 2021 18:29:59 +0100 Subject: [PATCH 29/32] locale persistance ref #1 --- app/src/Login.svelte | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/app/src/Login.svelte b/app/src/Login.svelte index 3945cb0..4a7d07e 100644 --- a/app/src/Login.svelte +++ b/app/src/Login.svelte @@ -141,19 +141,15 @@ return $locale == l;

-{$locale} -{JSON.stringify($locale)}
{/if} @@ -92,11 +97,11 @@ return $locale == l; }} >
- +
{#if !isTokenValid} - {$_('please_provide_a_valid_client_token')} + {$_("please_provide_a_valid_client_token")} {/if} {$_("configure")}
diff --git a/app/src/Scanner.svelte b/app/src/Scanner.svelte index 1c63b0e..d58de3d 100644 --- a/app/src/Scanner.svelte +++ b/app/src/Scanner.svelte @@ -1,7 +1,7 @@ @@ -6,30 +8,30 @@

Lauf Für Kaya! Scan 📷

-

Settings

-

API Key

+

{$_('settings')}

+

{$_('api_key')}

{$apikey}

-

Station Description

+

{$_('station_description')}

{JSON.parse($stationinfo).description}

-

Station ID

+

{$_('station_id')}

{JSON.parse($stationinfo).id}

-

Track ID

+

{$_('track_id')}

{JSON.parse($stationinfo).track.id}

-

Track Name

+

{$_('track_name')}

{JSON.parse($stationinfo).track.name}

-

Track Distance

+

{$_('track_distance')}

{JSON.parse($stationinfo).track.distance}

-

minimum lap time

+

{$_('minimum_lap_time')}

{JSON.parse($stationinfo).track.minimumLapTime}s

-

Language

+

{$_('language')}

{$_('back_to_scanner')} {$_('log_out_from_this_client')}
diff --git a/app/src/locales/de.json b/app/src/locales/de.json index b45fea9..ea1018c 100644 --- a/app/src/locales/de.json +++ b/app/src/locales/de.json @@ -1,12 +1,26 @@ { + "api_key": "API Key", + "back_to_scanner": "Zurück zum Scanner", "client_token": "Client Token", "configuration": "Konfiguration", "configure": "Konfigurieren", "error": "Error!", + "language": "Sprache", + "log_out_from_this_client": "Von diesem Scanner abmelden", + "minimum_lap_time": "minimale Rundenzeit", "please_check_your_token_and_try_again": "Bitte überprüfe den Token und versuche es erneut...", "please_provide_a_valid_client_token": "Bitte gebe einen gültigen Client-Token an ...", "please_provide_the_scan_client_token": "Bitte gebe den Scan-Client-Token an.", + "please_scan_a_card": "Bitte scanne eine Karte ...", + "runner_card": "Läuferkarte", + "scan": "Scannen!", "see_our_configuration_guide": "Siehe dir unsere Konfigurationsanleitung an.", + "settings": "Einstellungen", + "station_description": "Beschreibung der Scanstation", + "station_id": "Scanstations-ID", "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.", + "track_distance": "Länge des Tracks", + "track_id": "Track ID", + "track_name": "Track Name" } \ No newline at end of file diff --git a/app/src/locales/en.json b/app/src/locales/en.json index b304c0b..570495d 100644 --- a/app/src/locales/en.json +++ b/app/src/locales/en.json @@ -1,12 +1,26 @@ { + "api_key": "API Key", + "back_to_scanner": "Back to Scanner", "client_token": "Client Token", "configuration": "Configuration", "configure": "Configure", "error": "Error!", + "language": "Language", + "log_out_from_this_client": "Log Out from this Client", + "minimum_lap_time": "minimum lap time", "please_check_your_token_and_try_again": "Please check your token and try again...", "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_scan_a_card": "please scan a card...", + "runner_card": "Runner Card", + "scan": "Scan!", "see_our_configuration_guide": "See our configuration guide.", + "settings": "Settings", + "station_description": "Station Description", + "station_id": "Scanstation ID", "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.", + "track_distance": "Track Distance", + "track_id": "Track ID", + "track_name": "Track Name" } \ No newline at end of file From f7274378b88126f8640ca76a7285fef83c69f6a0 Mon Sep 17 00:00:00 2001 From: Philipp Dormann Date: Thu, 18 Mar 2021 18:43:37 +0100 Subject: [PATCH 32/32] =?UTF-8?q?=F0=9F=A7=B9=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/index.html | 1 + app/public/env.js | 3 +++ app/public/env.sample.js | 3 +++ app/src/App.svelte | 3 +-- app/src/Login.svelte | 4 +--- app/src/Scanner.svelte | 10 ++++++---- app/src/Settings.svelte | 30 ++++++++++++++++++------------ 7 files changed, 33 insertions(+), 21 deletions(-) create mode 100644 app/public/env.js create mode 100644 app/public/env.sample.js diff --git a/app/index.html b/app/index.html index 506820a..d9f09cb 100644 --- a/app/index.html +++ b/app/index.html @@ -9,6 +9,7 @@ + diff --git a/app/public/env.js b/app/public/env.js new file mode 100644 index 0000000..d10fe2d --- /dev/null +++ b/app/public/env.js @@ -0,0 +1,3 @@ +const config = { + endpoint: 'https://dev.lauf-fuer-kaya.de/' +}; diff --git a/app/public/env.sample.js b/app/public/env.sample.js new file mode 100644 index 0000000..d10fe2d --- /dev/null +++ b/app/public/env.sample.js @@ -0,0 +1,3 @@ +const config = { + endpoint: 'https://dev.lauf-fuer-kaya.de/' +}; diff --git a/app/src/App.svelte b/app/src/App.svelte index 272f76b..0b4f082 100644 --- a/app/src/App.svelte +++ b/app/src/App.svelte @@ -1,4 +1,5 @@ @@ -8,30 +8,36 @@ import { _ } from "svelte-i18n";

Lauf Für Kaya! Scan 📷

-

{$_('settings')}

-

{$_('api_key')}

+

{$_("settings")}

+

{$_("api_key")}

{$apikey}

-

{$_('station_description')}

+

+ {$_("station_description")} +

{JSON.parse($stationinfo).description}

-

{$_('station_id')}

+

{$_("station_id")}

{JSON.parse($stationinfo).id}

-

{$_('track_id')}

+

{$_("track_id")}

{JSON.parse($stationinfo).track.id}

-

{$_('track_name')}

+

{$_("track_name")}

{JSON.parse($stationinfo).track.name}

-

{$_('track_distance')}

+

+ {$_("track_distance")} +

{JSON.parse($stationinfo).track.distance}

-

{$_('minimum_lap_time')}

+

+ {$_("minimum_lap_time")} +

{JSON.parse($stationinfo).track.minimumLapTime}s

-

{$_('language')}

+

{$_("language")}

{$_("back_to_scanner")} {$_("log_out_from_this_client")}