Compare commits
11 Commits
1.3.3
...
d32eb8266b
| Author | SHA1 | Date | |
|---|---|---|---|
|
d32eb8266b
|
|||
|
bc4ac0f316
|
|||
|
6952b8727f
|
|||
|
81d4da6550
|
|||
|
6154ca7ddf
|
|||
|
8fb1e0ca0f
|
|||
|
763a01af09
|
|||
|
663cb29ccd
|
|||
|
56c3365656
|
|||
|
e7b2c64798
|
|||
|
7cb6b63eb9
|
@@ -2,8 +2,15 @@
|
|||||||
|
|
||||||
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.
|
||||||
|
|
||||||
|
#### [1.3.4](https://git.odit.services/lfk/frontend/compare/1.3.3...1.3.4)
|
||||||
|
|
||||||
|
- Smaller sponsoring page size [`7cb6b63`](https://git.odit.services/lfk/frontend/commit/7cb6b63eb9596da4ee84369b220c3e680c607032)
|
||||||
|
|
||||||
#### [1.3.3](https://git.odit.services/lfk/frontend/compare/1.3.2...1.3.3)
|
#### [1.3.3](https://git.odit.services/lfk/frontend/compare/1.3.2...1.3.3)
|
||||||
|
|
||||||
|
> 19 April 2023
|
||||||
|
|
||||||
|
- 🚀RELEASE v1.3.3 [`d6d88f5`](https://git.odit.services/lfk/frontend/commit/d6d88f5f60716ca496a17f09b835b23223ec495d)
|
||||||
- bumped lfk-client-js [`2c208c4`](https://git.odit.services/lfk/frontend/commit/2c208c438185892270a0ebd37deb6a7c9ac08fc0)
|
- bumped lfk-client-js [`2c208c4`](https://git.odit.services/lfk/frontend/commit/2c208c438185892270a0ebd37deb6a7c9ac08fc0)
|
||||||
|
|
||||||
#### [1.3.2](https://git.odit.services/lfk/frontend/compare/1.3.1...1.3.2)
|
#### [1.3.2](https://git.odit.services/lfk/frontend/compare/1.3.1...1.3.2)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM registry.odit.services/hub/library/node:19.7.0-alpine3.16 as build
|
FROM registry.odit.services/hub/library/node:20.0.0-alpine3.17 as build
|
||||||
ARG NPM_REGISTRY_URL=https://registry.npmjs.org
|
ARG NPM_REGISTRY_URL=https://registry.npmjs.org
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
|||||||
@@ -2,21 +2,20 @@
|
|||||||
|
|
||||||
## ✒️ Overview
|
## ✒️ Overview
|
||||||
This is an API client for [https://git.odit.services/lfk/backend](@lfk/backend)
|
This is an API client for [https://git.odit.services/lfk/backend](@lfk/backend)
|
||||||
- WebApp built with [Svelte](https://svelte.dev), [WindiCSS](https://windicss.org/) (to compile [TailwindCSS](https://tailwindcss.com/)) and [Vite](https://vitejs.dev).
|
|
||||||
|
|
||||||
This application is intended for use by admin users/ members only.
|
This application is intended for use by admin users/ members only.
|
||||||
|
|
||||||
## 🚀 Getting Started
|
## 🚀 Getting Started
|
||||||
```
|
```
|
||||||
yarn
|
pnpm i
|
||||||
```
|
```
|
||||||
## Development
|
## Development
|
||||||
```
|
```
|
||||||
yarn dev
|
pnpm dev
|
||||||
/
|
/
|
||||||
yarn dev --open
|
pnpm dev --open
|
||||||
```
|
```
|
||||||
## Build
|
## Build
|
||||||
```
|
```
|
||||||
yarn build
|
pnpm build
|
||||||
```
|
```
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-1.3.3-RELEASE_INFO</span>
|
<span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-1.3.4-RELEASE_INFO</span>
|
||||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
<script src="/env.js"></script>
|
<script src="/env.js"></script>
|
||||||
<script type="module" src="/src/main.js"></script>
|
<script type="module" src="/src/main.js"></script>
|
||||||
|
|||||||
11
package.json
11
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@odit/lfk-frontend",
|
"name": "@odit/lfk-frontend",
|
||||||
"version": "1.3.3",
|
"version": "1.3.4",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"i18n-order": "node order.js",
|
"i18n-order": "node order.js",
|
||||||
@@ -12,14 +12,14 @@
|
|||||||
"license": "CC-BY-NC-SA-4.0",
|
"license": "CC-BY-NC-SA-4.0",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@odit/license-exporter": "0.0.12",
|
"@odit/license-exporter": "0.0.12",
|
||||||
"@sveltejs/vite-plugin-svelte": "2.0.4",
|
"@sveltejs/vite-plugin-svelte": "2.1.0",
|
||||||
"auto-changelog": "2.4.0",
|
"auto-changelog": "2.4.0",
|
||||||
"autoprefixer": "10.4.14",
|
"autoprefixer": "10.4.14",
|
||||||
"postcss": "8.4.21",
|
"postcss": "8.4.23",
|
||||||
"release-it": "15.10.1",
|
"release-it": "15.10.1",
|
||||||
"svelte-select": "3.17.0",
|
"svelte-select": "3.17.0",
|
||||||
"tailwindcss": "3.3.1",
|
"tailwindcss": "3.3.1",
|
||||||
"vite": "4.2.1"
|
"vite": "4.3.1"
|
||||||
},
|
},
|
||||||
"release-it": {
|
"release-it": {
|
||||||
"git": {
|
"git": {
|
||||||
@@ -49,6 +49,7 @@
|
|||||||
"localforage": "1.10.0",
|
"localforage": "1.10.0",
|
||||||
"marked": "2.0.3",
|
"marked": "2.0.3",
|
||||||
"svelte": "3.58.0",
|
"svelte": "3.58.0",
|
||||||
|
"svelte-french-toast": "1.0.4-beta.0",
|
||||||
"svelte-i18n": "3.6.0",
|
"svelte-i18n": "3.6.0",
|
||||||
"tinro": "0.6.12",
|
"tinro": "0.6.12",
|
||||||
"toastify-js": "1.12.0",
|
"toastify-js": "1.12.0",
|
||||||
@@ -56,6 +57,6 @@
|
|||||||
"xlsx": "0.18.5"
|
"xlsx": "0.18.5"
|
||||||
},
|
},
|
||||||
"volta": {
|
"volta": {
|
||||||
"node": "19.7.0"
|
"node": "20.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
99
pnpm-lock.yaml
generated
99
pnpm-lock.yaml
generated
@@ -2,8 +2,8 @@ lockfileVersion: '6.0'
|
|||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
'@odit/lfk-client-js':
|
'@odit/lfk-client-js':
|
||||||
specifier: 1.1.0
|
specifier: 1.1.1
|
||||||
version: 1.1.0
|
version: 1.1.1
|
||||||
'@paralleldrive/cuid2':
|
'@paralleldrive/cuid2':
|
||||||
specifier: ^2.2.0
|
specifier: ^2.2.0
|
||||||
version: 2.2.0
|
version: 2.2.0
|
||||||
@@ -31,6 +31,9 @@ dependencies:
|
|||||||
svelte:
|
svelte:
|
||||||
specifier: 3.58.0
|
specifier: 3.58.0
|
||||||
version: 3.58.0
|
version: 3.58.0
|
||||||
|
svelte-french-toast:
|
||||||
|
specifier: 1.0.4-beta.0
|
||||||
|
version: 1.0.4-beta.0(svelte@3.58.0)
|
||||||
svelte-i18n:
|
svelte-i18n:
|
||||||
specifier: 3.6.0
|
specifier: 3.6.0
|
||||||
version: 3.6.0(svelte@3.58.0)
|
version: 3.6.0(svelte@3.58.0)
|
||||||
@@ -52,17 +55,17 @@ devDependencies:
|
|||||||
specifier: 0.0.12
|
specifier: 0.0.12
|
||||||
version: 0.0.12
|
version: 0.0.12
|
||||||
'@sveltejs/vite-plugin-svelte':
|
'@sveltejs/vite-plugin-svelte':
|
||||||
specifier: 2.0.4
|
specifier: 2.1.0
|
||||||
version: 2.0.4(svelte@3.58.0)(vite@4.2.1)
|
version: 2.1.0(svelte@3.58.0)(vite@4.3.1)
|
||||||
auto-changelog:
|
auto-changelog:
|
||||||
specifier: 2.4.0
|
specifier: 2.4.0
|
||||||
version: 2.4.0
|
version: 2.4.0
|
||||||
autoprefixer:
|
autoprefixer:
|
||||||
specifier: 10.4.14
|
specifier: 10.4.14
|
||||||
version: 10.4.14(postcss@8.4.21)
|
version: 10.4.14(postcss@8.4.23)
|
||||||
postcss:
|
postcss:
|
||||||
specifier: 8.4.21
|
specifier: 8.4.23
|
||||||
version: 8.4.21
|
version: 8.4.23
|
||||||
release-it:
|
release-it:
|
||||||
specifier: 15.10.1
|
specifier: 15.10.1
|
||||||
version: 15.10.1
|
version: 15.10.1
|
||||||
@@ -71,10 +74,10 @@ devDependencies:
|
|||||||
version: 3.17.0
|
version: 3.17.0
|
||||||
tailwindcss:
|
tailwindcss:
|
||||||
specifier: 3.3.1
|
specifier: 3.3.1
|
||||||
version: 3.3.1(postcss@8.4.21)
|
version: 3.3.1(postcss@8.4.23)
|
||||||
vite:
|
vite:
|
||||||
specifier: 4.2.1
|
specifier: 4.3.1
|
||||||
version: 4.2.1
|
version: 4.3.1
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
|
|
||||||
@@ -510,8 +513,8 @@ packages:
|
|||||||
'@octokit/openapi-types': 16.0.0
|
'@octokit/openapi-types': 16.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@odit/lfk-client-js@1.1.0:
|
/@odit/lfk-client-js@1.1.1:
|
||||||
resolution: {integrity: sha512-yhjsi7YMzL9/fJ7o06yszzw15iZhao3VmX0G9oqZWFwYJd1M2td3Lvm76mXNzTVlbdG6W0W3+eEjcalBdo51Pg==}
|
resolution: {integrity: sha512-EVwK/kT8VBs0vLk64KgCsHCl2heWHJMWAmZAghEDZWPCPQWX9xL6UzRuKewLXl36/T9YKqZLfDyM5e3WfgLyOg==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@odit/license-exporter@0.0.12:
|
/@odit/license-exporter@0.0.12:
|
||||||
@@ -553,8 +556,8 @@ packages:
|
|||||||
engines: {node: '>=14.16'}
|
engines: {node: '>=14.16'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@sveltejs/vite-plugin-svelte@2.0.4(svelte@3.58.0)(vite@4.2.1):
|
/@sveltejs/vite-plugin-svelte@2.1.0(svelte@3.58.0)(vite@4.3.1):
|
||||||
resolution: {integrity: sha512-pjqhW00KwK2uzDGEr+yJBwut+D+4XfJO/+bHHdHzPRXn9+1Jeq5JcFHyrUiYaXgHtyhX0RsllCTm4ssAx4ZY7Q==}
|
resolution: {integrity: sha512-Bc9A8mtTGlhTICdLL/aZ+jyHI3kwtkcXremOH5xwjbNNKOTOtY8nMyG8/oZ5KK8IuUfAn1WL58Bp2tofDJBW0w==}
|
||||||
engines: {node: ^14.18.0 || >= 16}
|
engines: {node: ^14.18.0 || >= 16}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
svelte: ^3.54.0
|
svelte: ^3.54.0
|
||||||
@@ -566,8 +569,8 @@ packages:
|
|||||||
magic-string: 0.30.0
|
magic-string: 0.30.0
|
||||||
svelte: 3.58.0
|
svelte: 3.58.0
|
||||||
svelte-hmr: 0.15.1(svelte@3.58.0)
|
svelte-hmr: 0.15.1(svelte@3.58.0)
|
||||||
vite: 4.2.1
|
vite: 4.3.1
|
||||||
vitefu: 0.2.4(vite@4.2.1)
|
vitefu: 0.2.4(vite@4.3.1)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
@@ -735,7 +738,7 @@ packages:
|
|||||||
- encoding
|
- encoding
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/autoprefixer@10.4.14(postcss@8.4.21):
|
/autoprefixer@10.4.14(postcss@8.4.23):
|
||||||
resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==}
|
resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==}
|
||||||
engines: {node: ^10 || ^12 || >=14}
|
engines: {node: ^10 || ^12 || >=14}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -747,7 +750,7 @@ packages:
|
|||||||
fraction.js: 4.2.0
|
fraction.js: 4.2.0
|
||||||
normalize-range: 0.1.2
|
normalize-range: 0.1.2
|
||||||
picocolors: 1.0.0
|
picocolors: 1.0.0
|
||||||
postcss: 8.4.21
|
postcss: 8.4.23
|
||||||
postcss-value-parser: 4.2.0
|
postcss-value-parser: 4.2.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
@@ -2846,29 +2849,29 @@ packages:
|
|||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/postcss-import@14.1.0(postcss@8.4.21):
|
/postcss-import@14.1.0(postcss@8.4.23):
|
||||||
resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==}
|
resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==}
|
||||||
engines: {node: '>=10.0.0'}
|
engines: {node: '>=10.0.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
postcss: ^8.0.0
|
postcss: ^8.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 8.4.21
|
postcss: 8.4.23
|
||||||
postcss-value-parser: 4.2.0
|
postcss-value-parser: 4.2.0
|
||||||
read-cache: 1.0.0
|
read-cache: 1.0.0
|
||||||
resolve: 1.22.2
|
resolve: 1.22.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/postcss-js@4.0.1(postcss@8.4.21):
|
/postcss-js@4.0.1(postcss@8.4.23):
|
||||||
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
|
resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
|
||||||
engines: {node: ^12 || ^14 || >= 16}
|
engines: {node: ^12 || ^14 || >= 16}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
postcss: ^8.4.21
|
postcss: ^8.4.21
|
||||||
dependencies:
|
dependencies:
|
||||||
camelcase-css: 2.0.1
|
camelcase-css: 2.0.1
|
||||||
postcss: 8.4.21
|
postcss: 8.4.23
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/postcss-load-config@3.1.4(postcss@8.4.21):
|
/postcss-load-config@3.1.4(postcss@8.4.23):
|
||||||
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
|
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -2881,17 +2884,17 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
lilconfig: 2.1.0
|
lilconfig: 2.1.0
|
||||||
postcss: 8.4.21
|
postcss: 8.4.23
|
||||||
yaml: 1.10.2
|
yaml: 1.10.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/postcss-nested@6.0.0(postcss@8.4.21):
|
/postcss-nested@6.0.0(postcss@8.4.23):
|
||||||
resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==}
|
resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==}
|
||||||
engines: {node: '>=12.0'}
|
engines: {node: '>=12.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
postcss: ^8.2.14
|
postcss: ^8.2.14
|
||||||
dependencies:
|
dependencies:
|
||||||
postcss: 8.4.21
|
postcss: 8.4.23
|
||||||
postcss-selector-parser: 6.0.11
|
postcss-selector-parser: 6.0.11
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
@@ -2907,8 +2910,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
|
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/postcss@8.4.21:
|
/postcss@8.4.23:
|
||||||
resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==}
|
resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==}
|
||||||
engines: {node: ^10 || ^12 || >=14}
|
engines: {node: ^10 || ^12 || >=14}
|
||||||
dependencies:
|
dependencies:
|
||||||
nanoid: 3.3.6
|
nanoid: 3.3.6
|
||||||
@@ -3443,6 +3446,15 @@ packages:
|
|||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/svelte-french-toast@1.0.4-beta.0(svelte@3.58.0):
|
||||||
|
resolution: {integrity: sha512-PkYNukEQAPZyV5ei+JzeYEsbaXFSbJS8/SDTdC8giYa5Atxp2SRepFnPDWx6mu7rV53g886FNLktPMLwRljkpw==}
|
||||||
|
peerDependencies:
|
||||||
|
svelte: ^3.57.0
|
||||||
|
dependencies:
|
||||||
|
svelte: 3.58.0
|
||||||
|
svelte-writable-derived: 3.0.1(svelte@3.58.0)
|
||||||
|
dev: false
|
||||||
|
|
||||||
/svelte-hmr@0.15.1(svelte@3.58.0):
|
/svelte-hmr@0.15.1(svelte@3.58.0):
|
||||||
resolution: {integrity: sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==}
|
resolution: {integrity: sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==}
|
||||||
engines: {node: ^12.20 || ^14.13.1 || >= 16}
|
engines: {node: ^12.20 || ^14.13.1 || >= 16}
|
||||||
@@ -3472,11 +3484,19 @@ packages:
|
|||||||
resolution: {integrity: sha512-ITmX/XUiSdkaILmsTviKRkZPaXckM5/FA7Y8BhiUPoamaZG/ZDyOo6ydjFu9fDVFTbwoAUGUi6HBjs+ZdK2AwA==}
|
resolution: {integrity: sha512-ITmX/XUiSdkaILmsTviKRkZPaXckM5/FA7Y8BhiUPoamaZG/ZDyOo6ydjFu9fDVFTbwoAUGUi6HBjs+ZdK2AwA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/svelte-writable-derived@3.0.1(svelte@3.58.0):
|
||||||
|
resolution: {integrity: sha512-zBWCS5c3MA9o4NT/UJHP3KoPOhtmH2ZQ/QRK31w9LzLdPP7MNncUcBGIu4iH2RVt17iRfR6agm7nEqwNvsYuMw==}
|
||||||
|
peerDependencies:
|
||||||
|
svelte: ^3.2.1
|
||||||
|
dependencies:
|
||||||
|
svelte: 3.58.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/svelte@3.58.0:
|
/svelte@3.58.0:
|
||||||
resolution: {integrity: sha512-brIBNNB76mXFmU/Kerm4wFnkskBbluBDCjx/8TcpYRb298Yh2dztS2kQ6bhtjMcvUhd5ynClfwpz5h2gnzdQ1A==}
|
resolution: {integrity: sha512-brIBNNB76mXFmU/Kerm4wFnkskBbluBDCjx/8TcpYRb298Yh2dztS2kQ6bhtjMcvUhd5ynClfwpz5h2gnzdQ1A==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
|
|
||||||
/tailwindcss@3.3.1(postcss@8.4.21):
|
/tailwindcss@3.3.1(postcss@8.4.23):
|
||||||
resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==}
|
resolution: {integrity: sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==}
|
||||||
engines: {node: '>=12.13.0'}
|
engines: {node: '>=12.13.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -3497,11 +3517,11 @@ packages:
|
|||||||
normalize-path: 3.0.0
|
normalize-path: 3.0.0
|
||||||
object-hash: 3.0.0
|
object-hash: 3.0.0
|
||||||
picocolors: 1.0.0
|
picocolors: 1.0.0
|
||||||
postcss: 8.4.21
|
postcss: 8.4.23
|
||||||
postcss-import: 14.1.0(postcss@8.4.21)
|
postcss-import: 14.1.0(postcss@8.4.23)
|
||||||
postcss-js: 4.0.1(postcss@8.4.21)
|
postcss-js: 4.0.1(postcss@8.4.23)
|
||||||
postcss-load-config: 3.1.4(postcss@8.4.21)
|
postcss-load-config: 3.1.4(postcss@8.4.23)
|
||||||
postcss-nested: 6.0.0(postcss@8.4.21)
|
postcss-nested: 6.0.0(postcss@8.4.23)
|
||||||
postcss-selector-parser: 6.0.11
|
postcss-selector-parser: 6.0.11
|
||||||
postcss-value-parser: 4.2.0
|
postcss-value-parser: 4.2.0
|
||||||
quick-lru: 5.1.1
|
quick-lru: 5.1.1
|
||||||
@@ -3717,8 +3737,8 @@ packages:
|
|||||||
engines: {node: '>= 0.10'}
|
engines: {node: '>= 0.10'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/vite@4.2.1:
|
/vite@4.3.1:
|
||||||
resolution: {integrity: sha512-7MKhqdy0ISo4wnvwtqZkjke6XN4taqQ2TBaTccLIpOKv7Vp2h4Y+NpmWCnGDeSvvn45KxvWgGyb0MkHvY1vgbg==}
|
resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==}
|
||||||
engines: {node: ^14.18.0 || >=16.0.0}
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -3743,14 +3763,13 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: 0.17.16
|
esbuild: 0.17.16
|
||||||
postcss: 8.4.21
|
postcss: 8.4.23
|
||||||
resolve: 1.22.2
|
|
||||||
rollup: 3.20.2
|
rollup: 3.20.2
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents: 2.3.2
|
fsevents: 2.3.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vitefu@0.2.4(vite@4.2.1):
|
/vitefu@0.2.4(vite@4.3.1):
|
||||||
resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==}
|
resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
vite: ^3.0.0 || ^4.0.0
|
vite: ^3.0.0 || ^4.0.0
|
||||||
@@ -3758,7 +3777,7 @@ packages:
|
|||||||
vite:
|
vite:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
vite: 4.2.1
|
vite: 4.3.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/vm2@3.9.16:
|
/vm2@3.9.16:
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
import { OpenAPI, AuthService } from "@odit/lfk-client-js";
|
import { OpenAPI, AuthService } from "@odit/lfk-client-js";
|
||||||
import Footer from "../general/Footer.svelte";
|
import Footer from "../general/Footer.svelte";
|
||||||
import isEmail from "validator/es/lib/isEmail";
|
import isEmail from "validator/es/lib/isEmail";
|
||||||
import Toastify from "toastify-js";
|
import toast from "svelte-french-toast";
|
||||||
// ------
|
// ------
|
||||||
let username = config.default_username || "";
|
let username = config.default_username || "";
|
||||||
let password = config.default_password || "";
|
let password = config.default_password || "";
|
||||||
@@ -20,11 +20,7 @@
|
|||||||
OpenAPI.TOKEN = value.access_token;
|
OpenAPI.TOKEN = value.access_token;
|
||||||
const jwtinfo = JSON.parse(atob(OpenAPI.TOKEN.split(".")[1]));
|
const jwtinfo = JSON.parse(atob(OpenAPI.TOKEN.split(".")[1]));
|
||||||
store.login(value, jwtinfo);
|
store.login(value, jwtinfo);
|
||||||
Toastify({
|
toast($_("welcome_wavinghand"));
|
||||||
text: $_("welcome_wavinghand"),
|
|
||||||
duration: 500,
|
|
||||||
backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)",
|
|
||||||
}).showToast();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -33,10 +29,7 @@
|
|||||||
// prevent login button spamming
|
// prevent login button spamming
|
||||||
if (last_loginclick_processed && is_blocked_by_autologin === false) {
|
if (last_loginclick_processed && is_blocked_by_autologin === false) {
|
||||||
last_loginclick_processed = false;
|
last_loginclick_processed = false;
|
||||||
Toastify({
|
toast.loading($_("login_is_checked"));
|
||||||
text: $_("login_is_checked"),
|
|
||||||
duration: 500,
|
|
||||||
}).showToast();
|
|
||||||
let postdata = {};
|
let postdata = {};
|
||||||
if (isEmail(username)) {
|
if (isEmail(username)) {
|
||||||
postdata = {
|
postdata = {
|
||||||
@@ -56,31 +49,19 @@
|
|||||||
const jwtinfo = JSON.parse(atob(OpenAPI.TOKEN.split(".")[1]));
|
const jwtinfo = JSON.parse(atob(OpenAPI.TOKEN.split(".")[1]));
|
||||||
store.login(result.access_token, jwtinfo);
|
store.login(result.access_token, jwtinfo);
|
||||||
location.replace("/");
|
location.replace("/");
|
||||||
Toastify({
|
toast.dismiss();
|
||||||
text: $_("welcome_wavinghand"),
|
toast($_("welcome_wavinghand"));
|
||||||
duration: 500,
|
|
||||||
backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)",
|
|
||||||
}).showToast();
|
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
Toastify({
|
toast.dismiss();
|
||||||
text: $_("error_on_login"),
|
toast.error($_("error_on_login"));
|
||||||
duration: 500,
|
|
||||||
backgroundColor:
|
|
||||||
"linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
|
|
||||||
}).showToast();
|
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
last_loginclick_processed = true;
|
last_loginclick_processed = true;
|
||||||
});
|
});
|
||||||
// last login was not processed yet
|
// last login was not processed yet
|
||||||
} else {
|
} else {
|
||||||
Toastify({
|
toast($_("please-wait-a-moment-your-login-is-still-being-processed"));
|
||||||
text: $_('please-wait-a-moment-your-login-is-still-being-processed'),
|
|
||||||
duration: 1500,
|
|
||||||
backgroundColor:
|
|
||||||
"linear-gradient(90deg, hsla(281, 37%, 45%, 1) 0%, hsla(1, 62%, 48%, 1) 100%)",
|
|
||||||
}).showToast();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
function handleKeydown(e) {
|
function handleKeydown(e) {
|
||||||
@@ -91,34 +72,37 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="min-h-screen flex items-center justify-center bg-gray-100 text-gray-900">
|
class="min-h-screen flex items-center justify-center bg-gray-100 text-gray-900"
|
||||||
|
>
|
||||||
<div class="max-w-md w-full py-12 px-6" role="main">
|
<div class="max-w-md w-full py-12 px-6" role="main">
|
||||||
<img style="height:10rem;" class="mx-auto" src="/lfk-logo.png" alt="" />
|
<img style="height:10rem;" class="mx-auto" src="/lfk-logo.png" alt="" />
|
||||||
<p class="mt-6 text-lg text-center font-bold">{$_('application_name')}</p>
|
<p class="mt-6 text-lg text-center font-bold">{$_("application_name")}</p>
|
||||||
<p class="mt-6 text-sm text-center">{$_('log_in_to_your_account')}</p>
|
<p class="mt-6 text-sm text-center">{$_("log_in_to_your_account")}</p>
|
||||||
<div>
|
<div>
|
||||||
<div class="rounded-md shadow-sm">
|
<div class="rounded-md shadow-sm">
|
||||||
<div>
|
<div>
|
||||||
<!-- svelte-ignore a11y-autofocus -->
|
<!-- svelte-ignore a11y-autofocus -->
|
||||||
<input
|
<input
|
||||||
autofocus
|
autofocus
|
||||||
aria-label={$_('email_address_or_username')}
|
aria-label={$_("email_address_or_username")}
|
||||||
type="text"
|
type="text"
|
||||||
required=""
|
required=""
|
||||||
class="border-gray-300 placeholder-gray-500 appearance-none rounded-none relative block w-full px-3 py-2 border rounded-t-md focus:outline-none focus:shadow-outline-blue focus:border-blue-300 focus:z-10 sm:text-sm"
|
class="border-gray-300 placeholder-gray-500 appearance-none rounded-none relative block w-full px-3 py-2 border rounded-t-md focus:outline-none focus:shadow-outline-blue focus:border-blue-300 focus:z-10 sm:text-sm"
|
||||||
on:keydown={handleKeydown}
|
on:keydown={handleKeydown}
|
||||||
placeholder={$_('email_address_or_username')}
|
placeholder={$_("email_address_or_username")}
|
||||||
bind:value={username} />
|
bind:value={username}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="-mt-px relative">
|
<div class="-mt-px relative">
|
||||||
<input
|
<input
|
||||||
aria-label={$_('password')}
|
aria-label={$_("password")}
|
||||||
type="password"
|
type="password"
|
||||||
required=""
|
required=""
|
||||||
bind:value={password}
|
bind:value={password}
|
||||||
class="border-gray-300 placeholder-gray-500 appearance-none rounded-none relative block w-full px-3 py-2 border rounded-b-md focus:outline-none focus:shadow-outline-blue focus:border-blue-300 focus:z-10 sm:text-sm"
|
class="border-gray-300 placeholder-gray-500 appearance-none rounded-none relative block w-full px-3 py-2 border rounded-b-md focus:outline-none focus:shadow-outline-blue focus:border-blue-300 focus:z-10 sm:text-sm"
|
||||||
on:keydown={handleKeydown}
|
on:keydown={handleKeydown}
|
||||||
placeholder={$_('password')} />
|
placeholder={$_("password")}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -126,27 +110,31 @@
|
|||||||
<button
|
<button
|
||||||
on:click={login}
|
on:click={login}
|
||||||
type="submit"
|
type="submit"
|
||||||
class="relative block w-full py-2 px-3 border border-transparent rounded-md text-white font-semibold bg-gray-800 hover:bg-gray-700 focus:bg-gray-900 focus:outline-none focus:shadow-outline sm:text-sm">
|
class="relative block w-full py-2 px-3 border border-transparent rounded-md text-white font-semibold bg-gray-800 hover:bg-gray-700 focus:bg-gray-900 focus:outline-none focus:shadow-outline sm:text-sm"
|
||||||
|
>
|
||||||
<span class="absolute left-0 inset-y pl-3">
|
<span class="absolute left-0 inset-y pl-3">
|
||||||
<svg
|
<svg
|
||||||
class="h-5 w-5 text-gray-500"
|
class="h-5 w-5 text-gray-500"
|
||||||
fill="currentColor"
|
fill="currentColor"
|
||||||
viewBox="0 0 20 20">
|
viewBox="0 0 20 20"
|
||||||
|
>
|
||||||
<path
|
<path
|
||||||
fill-rule="evenodd"
|
fill-rule="evenodd"
|
||||||
d="M5 9V7a5 5 0 0110 0v2a2 2 0 012 2v5a2 2 0 01-2 2H5a2 2 0 01-2-2v-5a2 2 0 012-2zm8-2v2H7V7a3 3 0 016 0z"
|
d="M5 9V7a5 5 0 0110 0v2a2 2 0 012 2v5a2 2 0 01-2 2H5a2 2 0 01-2-2v-5a2 2 0 012-2zm8-2v2H7V7a3 3 0 016 0z"
|
||||||
clip-rule="evenodd" />
|
clip-rule="evenodd"
|
||||||
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
</span>
|
</span>
|
||||||
{$_('log_in')}
|
{$_("log_in")}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-2">
|
<div class="mt-2">
|
||||||
<a
|
<a
|
||||||
href="/forgot_password"
|
href="/forgot_password"
|
||||||
class="block w-full text-center py-2 px-3 border border-gray-300 rounded-md font-medium hover:border-gray-400 focus:outline-none focus:border-gray-400 sm:text-sm">
|
class="block w-full text-center py-2 px-3 border border-gray-300 rounded-md font-medium hover:border-gray-400 focus:outline-none focus:border-gray-400 sm:text-sm"
|
||||||
{$_('forgot_password')}
|
>
|
||||||
|
{$_("forgot_password")}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
import { _ } from "svelte-i18n";
|
import { _ } from "svelte-i18n";
|
||||||
import { RunnerCardService } from "@odit/lfk-client-js";
|
import { RunnerCardService } from "@odit/lfk-client-js";
|
||||||
import store from "../../store";
|
import store from "../../store";
|
||||||
import Toastify from "toastify-js";
|
import toast from "svelte-french-toast";
|
||||||
import CardsEmptyState from "./CardsEmptyState.svelte";
|
import CardsEmptyState from "./CardsEmptyState.svelte";
|
||||||
import CardDetailModal from "./CardDetailModal.svelte";
|
import CardDetailModal from "./CardDetailModal.svelte";
|
||||||
import GenerateRunnerCards from "../pdf_generation/GenerateRunnerCards.svelte";
|
import GenerateRunnerCards from "../pdf_generation/GenerateRunnerCards.svelte";
|
||||||
@@ -148,14 +148,11 @@
|
|||||||
...options,
|
...options,
|
||||||
data: current_cards,
|
data: current_cards,
|
||||||
}));
|
}));
|
||||||
Toastify({
|
toast.success($_("card-deleted"));
|
||||||
text: $_("card-deleted"),
|
|
||||||
duration: 3500,
|
|
||||||
backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)",
|
|
||||||
}).showToast();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
|
toast.loading($_("loading-cards"));
|
||||||
let page = 0;
|
let page = 0;
|
||||||
while (page >= 0) {
|
while (page >= 0) {
|
||||||
const cards = await RunnerCardService.runnerCardControllerGetAll(
|
const cards = await RunnerCardService.runnerCardControllerGetAll(
|
||||||
@@ -175,7 +172,8 @@
|
|||||||
dataLoaded = true;
|
dataLoaded = true;
|
||||||
page++;
|
page++;
|
||||||
}
|
}
|
||||||
console.log("All cards loaded");
|
toast.dismiss();
|
||||||
|
toast.success($_('all-cards-loaded'));
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -1,57 +0,0 @@
|
|||||||
<script>
|
|
||||||
export let handler;
|
|
||||||
let filterValue = "";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<th>
|
|
||||||
<input
|
|
||||||
on:input={() => {
|
|
||||||
setTimeout(() => {
|
|
||||||
const v = filterValue.toLowerCase();
|
|
||||||
handler.filter(v, (c) => {
|
|
||||||
// if (v === "") {
|
|
||||||
// return c;
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (!c.runner && v === "blanko") {
|
|
||||||
return "blanko";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (v.startsWith("#")) {
|
|
||||||
return `#${c.runner?.id}`;
|
|
||||||
}
|
|
||||||
if (c.runner) {
|
|
||||||
let runnerName = `${c.runner.firstname} ${c.runner.lastname}`;
|
|
||||||
if (c.runner.middlename) {
|
|
||||||
runnerName = `${c.runner.firstname} ${c.runner.middlename} ${c.runner.lastname}`;
|
|
||||||
}
|
|
||||||
runnerName = runnerName.toLowerCase();
|
|
||||||
return runnerName;
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
});
|
|
||||||
}, 150);
|
|
||||||
}}
|
|
||||||
bind:value={filterValue}
|
|
||||||
type="text"
|
|
||||||
name="runnerfilter"
|
|
||||||
id="runnerfilter"
|
|
||||||
/>
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
th {
|
|
||||||
border-bottom: 1px solid #e0e0e0;
|
|
||||||
}
|
|
||||||
input {
|
|
||||||
margin: -1px 0 0 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 24px;
|
|
||||||
border: none;
|
|
||||||
text-align: left;
|
|
||||||
background: inherit;
|
|
||||||
outline: 0;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
<script>
|
|
||||||
import { _ } from "svelte-i18n";
|
|
||||||
export let handler;
|
|
||||||
let selected = "all";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<th>
|
|
||||||
<select
|
|
||||||
on:input={() => {
|
|
||||||
setTimeout(() => {
|
|
||||||
if (`${selected}`.trim()) {
|
|
||||||
if (selected === "all") {
|
|
||||||
handler.filter("", "enabled");
|
|
||||||
} else {
|
|
||||||
handler.filter(selected, "enabled");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, 50);
|
|
||||||
}}
|
|
||||||
bind:value={selected}
|
|
||||||
name="statusfilter"
|
|
||||||
id="statusfilter"
|
|
||||||
>
|
|
||||||
<option value="all">{$_("all")}</option>
|
|
||||||
<option value="true">{$_("enabled")}</option>
|
|
||||||
<option value="false">{$_("disabled")}</option>
|
|
||||||
</select>
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
th {
|
|
||||||
border-bottom: 1px solid #e0e0e0;
|
|
||||||
}
|
|
||||||
select {
|
|
||||||
margin: -1px 0 0 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 24px;
|
|
||||||
border: none;
|
|
||||||
text-align: left;
|
|
||||||
background: inherit;
|
|
||||||
outline: 0;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
import { router } from "tinro";
|
import { router } from "tinro";
|
||||||
import NoComponentLoaded from "../base/NoComponentLoaded.svelte";
|
import NoComponentLoaded from "../base/NoComponentLoaded.svelte";
|
||||||
import { AuthService } from "@odit/lfk-client-js";
|
import { AuthService } from "@odit/lfk-client-js";
|
||||||
|
import { Toaster } from 'svelte-french-toast';
|
||||||
$: navOpen = false;
|
$: navOpen = false;
|
||||||
function logout() {
|
function logout() {
|
||||||
localForage.clear();
|
localForage.clear();
|
||||||
@@ -345,6 +346,7 @@
|
|||||||
d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4A1 1 0 013 5zm0 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm0 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z"
|
d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4A1 1 0 013 5zm0 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zm0 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z"
|
||||||
clip-rule="evenodd" /></svg></button>
|
clip-rule="evenodd" /></svg></button>
|
||||||
</header>
|
</header>
|
||||||
|
<Toaster position="top-right" />
|
||||||
<slot>
|
<slot>
|
||||||
<NoComponentLoaded />
|
<NoComponentLoaded />
|
||||||
</slot>
|
</slot>
|
||||||
|
|||||||
@@ -143,7 +143,7 @@
|
|||||||
<StatCard
|
<StatCard
|
||||||
title={$_("total-distance")}
|
title={$_("total-distance")}
|
||||||
value={`${stats.total_distance / 1000} km`}
|
value={`${stats.total_distance / 1000} km`}
|
||||||
href="#"
|
href="/scans/"
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
fill="currentColor"
|
fill="currentColor"
|
||||||
@@ -159,7 +159,7 @@
|
|||||||
<StatCard
|
<StatCard
|
||||||
title={$_("average-distance")}
|
title={$_("average-distance")}
|
||||||
value={`${(stats.average_distance / 1000).toFixed(2)} km`}
|
value={`${(stats.average_distance / 1000).toFixed(2)} km`}
|
||||||
href="#"
|
href="/scans/"
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
fill="currentColor"
|
fill="currentColor"
|
||||||
|
|||||||
@@ -23,7 +23,10 @@
|
|||||||
import DonationStatus from "./DonationStatus.svelte";
|
import DonationStatus from "./DonationStatus.svelte";
|
||||||
import DonationTableAction from "./DonationTableAction.svelte";
|
import DonationTableAction from "./DonationTableAction.svelte";
|
||||||
import DeleteDonationModal from "./DeleteDonationModal.svelte";
|
import DeleteDonationModal from "./DeleteDonationModal.svelte";
|
||||||
import { donationDonorFilter, donationRunnerFilter } from "../shared/tablefilters";
|
import {
|
||||||
|
donationDonorFilter,
|
||||||
|
donationRunnerFilter,
|
||||||
|
} from "../shared/tablefilters";
|
||||||
$: searchvalue = "";
|
$: searchvalue = "";
|
||||||
$: active_deletes = [];
|
$: active_deletes = [];
|
||||||
$: active_edits = [];
|
$: active_edits = [];
|
||||||
@@ -173,7 +176,7 @@
|
|||||||
while (page >= 0) {
|
while (page >= 0) {
|
||||||
const donations = await DonationService.donationControllerGetAll(
|
const donations = await DonationService.donationControllerGetAll(
|
||||||
page,
|
page,
|
||||||
500
|
100
|
||||||
);
|
);
|
||||||
if (donations.length == 0) {
|
if (donations.length == 0) {
|
||||||
page = -2;
|
page = -2;
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
<script>
|
|
||||||
import { _ } from "svelte-i18n";
|
|
||||||
export let groups;
|
|
||||||
export let handler;
|
|
||||||
let selected = "all";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<th style="border-bottom: 1px solid #ddd;">
|
|
||||||
<select
|
|
||||||
on:input={() => {
|
|
||||||
setTimeout(() => {
|
|
||||||
if (`${selected}`.trim()) {
|
|
||||||
const value = selected;
|
|
||||||
handler.filter(value, (runner) => {
|
|
||||||
if (
|
|
||||||
runner.group.id === value ||
|
|
||||||
runner?.group?.parentGroup?.id === value ||
|
|
||||||
value === "all"
|
|
||||||
)
|
|
||||||
return runner;
|
|
||||||
return "";
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, 50);
|
|
||||||
}}
|
|
||||||
bind:value={selected}
|
|
||||||
name="groupfilter"
|
|
||||||
id="groupfilter"
|
|
||||||
>
|
|
||||||
<option value="all">{$_('all')}</option>
|
|
||||||
{#each groups as g}
|
|
||||||
<option value={g.value}>{g.label}</option>
|
|
||||||
{/each}
|
|
||||||
</select>
|
|
||||||
</th>
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
<script>
|
|
||||||
export let handler;
|
|
||||||
let filterValue = "";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<th>
|
|
||||||
<input
|
|
||||||
on:input={() => {
|
|
||||||
setTimeout(() => {
|
|
||||||
const v = filterValue.toLowerCase();
|
|
||||||
handler.filter(v, (c) => {
|
|
||||||
if (v.startsWith("#")) {
|
|
||||||
return `#${c.runner?.id}`;
|
|
||||||
}
|
|
||||||
if (c.runner) {
|
|
||||||
let runnerName = `${c.runner.firstname} ${c.runner.lastname}`;
|
|
||||||
if (c.runner.middlename) {
|
|
||||||
runnerName = `${c.runner.firstname} ${c.runner.middlename} ${c.runner.lastname}`;
|
|
||||||
}
|
|
||||||
runnerName = runnerName.toLowerCase();
|
|
||||||
return runnerName;
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
});
|
|
||||||
}, 150);
|
|
||||||
}}
|
|
||||||
placeholder="Filter"
|
|
||||||
bind:value={filterValue}
|
|
||||||
type="text"
|
|
||||||
name="runnerfilter"
|
|
||||||
id="runnerfilter"
|
|
||||||
/>
|
|
||||||
</th>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
th {
|
|
||||||
border-bottom: 1px solid #e0e0e0;
|
|
||||||
}
|
|
||||||
input {
|
|
||||||
margin: -1px 0 0 0;
|
|
||||||
padding: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 24px;
|
|
||||||
border: none;
|
|
||||||
text-align: left;
|
|
||||||
background: inherit;
|
|
||||||
outline: 0;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
<script>
|
|
||||||
import { _ } from "svelte-i18n";
|
|
||||||
export let tracks;
|
|
||||||
export let handler;
|
|
||||||
let selected = "all";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<th style="border-bottom: 1px solid #ddd;">
|
|
||||||
<select
|
|
||||||
on:input={() => {
|
|
||||||
setTimeout(() => {
|
|
||||||
if (`${selected}`.trim()) {
|
|
||||||
const value = selected;
|
|
||||||
handler.filter(value, (scan) => {
|
|
||||||
// TODO: fix filter
|
|
||||||
if (scan.track.id === value || value === "all") return scan.track.id;
|
|
||||||
return "";
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, 50);
|
|
||||||
}}
|
|
||||||
bind:value={selected}
|
|
||||||
name="trackfilter"
|
|
||||||
id="trackfilter"
|
|
||||||
>
|
|
||||||
<option value="all">{$_("all")}</option>
|
|
||||||
{#each tracks as track}
|
|
||||||
<option value={track.id}>{track.name}</option>
|
|
||||||
{/each}
|
|
||||||
</select>
|
|
||||||
</th>
|
|
||||||
@@ -103,26 +103,6 @@
|
|||||||
<div class="mt-5 md:mt-0 md:col-span-2">
|
<div class="mt-5 md:mt-0 md:col-span-2">
|
||||||
<div class="shadow sm:rounded-md sm:overflow-hidden">
|
<div class="shadow sm:rounded-md sm:overflow-hidden">
|
||||||
<div class="px-4 py-5 bg-white space-y-6 sm:p-6">
|
<div class="px-4 py-5 bg-white space-y-6 sm:p-6">
|
||||||
<div>
|
|
||||||
<!-- svelte-ignore a11y-label-has-associated-control -->
|
|
||||||
<label class="block text-sm font-medium text-gray-700">
|
|
||||||
{$_('profile-picture')}
|
|
||||||
</label>
|
|
||||||
<div class="mt-2 flex items-center">
|
|
||||||
<span
|
|
||||||
class="inline-block h-20 w-20 rounded-full overflow-hidden bg-gray-100">
|
|
||||||
<img
|
|
||||||
alt={$_('profile-picture')}
|
|
||||||
class="h-20 w-20 rounded-full overflow-hidden bg-gray-100"
|
|
||||||
src={editable.profilePic || 'https://lauf-fuer-kaya.de/lfk-logo.png'} />
|
|
||||||
</span>
|
|
||||||
<!-- <button
|
|
||||||
type="button"
|
|
||||||
class="ml-5 bg-white py-2 px-3 border border-gray-300 rounded-md shadow-sm text-sm leading-4 font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
|
|
||||||
Change
|
|
||||||
</button> -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="text-sm w-full">
|
<div class="text-sm w-full">
|
||||||
<label
|
<label
|
||||||
for="username"
|
for="username"
|
||||||
|
|||||||
@@ -191,13 +191,6 @@
|
|||||||
{/if}
|
{/if}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-3 text-sm w-full">
|
|
||||||
<p class="ml-1 font-medium text-gray-700">{$_('profile-picture')}</p>
|
|
||||||
<img
|
|
||||||
alt={$_('profile-picture')}
|
|
||||||
class="h-20 w-20 rounded-full overflow-hidden bg-gray-100"
|
|
||||||
src={editable_userdata.profilePic} />
|
|
||||||
</div>
|
|
||||||
<div class="mt-3 text-sm w-full">
|
<div class="mt-3 text-sm w-full">
|
||||||
<label
|
<label
|
||||||
for="enabled"
|
for="enabled"
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
"all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!",
|
"all-associated-runners-will-be-deleted-too": "Alle zugehörigen Läufer:innen werden auch gelöscht!",
|
||||||
"all-associated-scans-will-get-deleted-as-well": "Alle Scans dieser Station werden ebenfalls gelöscht",
|
"all-associated-scans-will-get-deleted-as-well": "Alle Scans dieser Station werden ebenfalls gelöscht",
|
||||||
"all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!",
|
"all-associated-teams-and-runners-will-be-deleted-too": "Alle assoziierten Teams und Läufer:innen werden auch gelöscht!",
|
||||||
|
"all-cards-loaded": "Alle Karten geladen",
|
||||||
"already-paid": "Bereits bezahlt",
|
"already-paid": "Bereits bezahlt",
|
||||||
"amount": "Anzahl",
|
"amount": "Anzahl",
|
||||||
"amount-per-kilometer": "Betrag pro Kilometer",
|
"amount-per-kilometer": "Betrag pro Kilometer",
|
||||||
@@ -94,8 +95,8 @@
|
|||||||
"contacts-are-being-loaded": "Kontakte werden geladen ...",
|
"contacts-are-being-loaded": "Kontakte werden geladen ...",
|
||||||
"copied-link-to-clipboard": "Link wurde in die Zwischenablage kopiert",
|
"copied-link-to-clipboard": "Link wurde in die Zwischenablage kopiert",
|
||||||
"copied-token-to-clipboard": "Token wurde in die Zwischenablage kopiert",
|
"copied-token-to-clipboard": "Token wurde in die Zwischenablage kopiert",
|
||||||
"count_organizations": "Organisationen (Anzahl)",
|
"count_organizations": "Organisationen",
|
||||||
"count_teams": "Teams (Anzahl)",
|
"count_teams": "Teams",
|
||||||
"create": "Erstellen",
|
"create": "Erstellen",
|
||||||
"create-a-new": "Erstelle eine neue",
|
"create-a-new": "Erstelle eine neue",
|
||||||
"create-a-new-card": "Neue Läuferkarte erstellen",
|
"create-a-new-card": "Neue Läuferkarte erstellen",
|
||||||
@@ -439,11 +440,11 @@
|
|||||||
"token": "Token",
|
"token": "Token",
|
||||||
"total-distance": "gelaufene Strecke",
|
"total-distance": "gelaufene Strecke",
|
||||||
"total-donation-amount": "Gesamtbetrag",
|
"total-donation-amount": "Gesamtbetrag",
|
||||||
"total-donation-count": "Gesamte Sponsorings",
|
"total-donation-count": "Sponsorings",
|
||||||
"total-donations": "Spendensumme",
|
"total-donations": "Spendensumme",
|
||||||
"total-donors": "gesamte Sponsor:innen",
|
"total-donors": "Sponsor:innen",
|
||||||
"total-paid-amount": "Gezahlt",
|
"total-paid-amount": "Gezahlt",
|
||||||
"total-scans": "gesamte Scans",
|
"total-scans": "Scans",
|
||||||
"total_donation_amount_in_eur": "Gesamtbetrag in €",
|
"total_donation_amount_in_eur": "Gesamtbetrag in €",
|
||||||
"track": "Track",
|
"track": "Track",
|
||||||
"track-added": "Track hinzugefügt",
|
"track-added": "Track hinzugefügt",
|
||||||
@@ -495,6 +496,6 @@
|
|||||||
"you-dont-have-any-scanstations-yet": "Es gibt noch keine Scannerstationen",
|
"you-dont-have-any-scanstations-yet": "Es gibt noch keine Scannerstationen",
|
||||||
"you-have-to-provide-an-organization": "Du musst eine Organisation angeben",
|
"you-have-to-provide-an-organization": "Du musst eine Organisation angeben",
|
||||||
"you-have-to-save-your-changes-to-generate-a-link": "Du musst deine Änderungen speichern, um einen Link zu generieren.",
|
"you-have-to-save-your-changes-to-generate-a-link": "Du musst deine Änderungen speichern, um einen Link zu generieren.",
|
||||||
"you-must-create-at-least-one-card-or-cancel": "Du musst mindestens eine Blankokarte erstellen (oder abbrechen).",
|
"you-must-create-at-least-one-card-or-cancel": "Du musst mindestens eine Blankokarte erstellen.",
|
||||||
"zip-postal-code": "Postleitzahl"
|
"zip-postal-code": "Postleitzahl"
|
||||||
}
|
}
|
||||||
@@ -35,6 +35,7 @@
|
|||||||
"all-associated-runners-will-be-deleted-too": "All associated runners will be deleted too!",
|
"all-associated-runners-will-be-deleted-too": "All associated runners will be deleted too!",
|
||||||
"all-associated-scans-will-get-deleted-as-well": "All associated scans will get deleted as well",
|
"all-associated-scans-will-get-deleted-as-well": "All associated scans will get deleted as well",
|
||||||
"all-associated-teams-and-runners-will-be-deleted-too": "All associated teams and runners will be deleted too!",
|
"all-associated-teams-and-runners-will-be-deleted-too": "All associated teams and runners will be deleted too!",
|
||||||
|
"all-cards-loaded": "All cards loaded",
|
||||||
"already-paid": "Already paid",
|
"already-paid": "Already paid",
|
||||||
"amount": "Amount",
|
"amount": "Amount",
|
||||||
"amount-per-kilometer": "Amount per kilometer",
|
"amount-per-kilometer": "Amount per kilometer",
|
||||||
@@ -495,6 +496,6 @@
|
|||||||
"you-dont-have-any-scanstations-yet": "You don't have any scanstations yet",
|
"you-dont-have-any-scanstations-yet": "You don't have any scanstations yet",
|
||||||
"you-have-to-provide-an-organization": "You have to provide an organization",
|
"you-have-to-provide-an-organization": "You have to provide an organization",
|
||||||
"you-have-to-save-your-changes-to-generate-a-link": "You have to save your changes to generate a link.",
|
"you-have-to-save-your-changes-to-generate-a-link": "You have to save your changes to generate a link.",
|
||||||
"you-must-create-at-least-one-card-or-cancel": "You must create at least one card (or cancel).",
|
"you-must-create-at-least-one-card-or-cancel": "You must create at least one card.",
|
||||||
"zip-postal-code": "ZIP/ postal code"
|
"zip-postal-code": "ZIP/ postal code"
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user