Compare commits
7 Commits
0.8.5
...
0cd3e937d8
| Author | SHA1 | Date | |
|---|---|---|---|
| 0cd3e937d8 | |||
| 6be2ee626a | |||
| 008027db0e | |||
| aec5e3473e | |||
| 95c8fde72f | |||
| 0f32968fae | |||
| ae79e9fea1 |
@@ -1,3 +1 @@
|
||||
public/env.sample.js
|
||||
public/workbox-*.js
|
||||
public/workbox-*.js.map
|
||||
public/env.sample.js
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -6,6 +6,6 @@ yarn.lock
|
||||
public/env.js
|
||||
public/sw.js
|
||||
public/index.html
|
||||
public/workbox-*.js
|
||||
svelte.config.js
|
||||
public/index.html
|
||||
/dist
|
||||
3
.vscode/extensions.json
vendored
3
.vscode/extensions.json
vendored
@@ -5,7 +5,8 @@
|
||||
"remimarsal.prettier-now",
|
||||
"svelte.svelte-vscode",
|
||||
"lokalise.i18n-ally",
|
||||
"fivethree.vscode-svelte-snippets"
|
||||
"fivethree.vscode-svelte-snippets",
|
||||
"voorjaar.windicss-intellisense"
|
||||
],
|
||||
"unwantedRecommendations": [
|
||||
"antfu.i18n-ally"
|
||||
|
||||
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -1,4 +1,5 @@
|
||||
{
|
||||
"i18n-ally.localesPaths": "src/locales",
|
||||
"i18n-ally.keystyle": "nested"
|
||||
"i18n-ally.keystyle": "nested",
|
||||
"windicss.enableCodeFolding": false,
|
||||
}
|
||||
@@ -2,16 +2,9 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
||||
|
||||
#### [0.8.5](https://git.odit.services/lfk/frontend/compare/0.8.4...0.8.5)
|
||||
|
||||
- Fixed dupliacate mutation 🐞 [`91dd525`](https://git.odit.services/lfk/frontend/commit/91dd5256e9545f62e4342ae5477c36262d6e3401)
|
||||
|
||||
#### [0.8.4](https://git.odit.services/lfk/frontend/compare/0.8.3...0.8.4)
|
||||
|
||||
> 20 March 2021
|
||||
|
||||
- CONFIG: default_username + default_password [`cc926e8`](https://git.odit.services/lfk/frontend/commit/cc926e84fb8bd9d6c9fd37349e25eb802e1bb324)
|
||||
- 🚀RELEASE v0.8.4 [`3d4dc2d`](https://git.odit.services/lfk/frontend/commit/3d4dc2d72b129f0134ae9f230810c3301dbd5caa)
|
||||
- CONFIG: add 'demo' as default username/password [`ba34710`](https://git.odit.services/lfk/frontend/commit/ba3471068ab00e2d5dbe21d6d763094e662f8347)
|
||||
|
||||
#### [0.8.3](https://git.odit.services/lfk/frontend/compare/0.8.2...0.8.3)
|
||||
|
||||
12
Dockerfile
12
Dockerfile
@@ -1,18 +1,14 @@
|
||||
FROM node:15.5.1-alpine3.12
|
||||
WORKDIR /app
|
||||
RUN npm i -g pnpm
|
||||
COPY package.json ./
|
||||
RUN pnpm i
|
||||
COPY package.json *.config.js workbox-config.js template-copy.js index.template.html s-config.template.js ./
|
||||
RUN yarn
|
||||
COPY package.json *.config.js index.html ./
|
||||
COPY src ./src
|
||||
COPY public ./public
|
||||
RUN pnpm run build
|
||||
RUN yarn build
|
||||
# final image
|
||||
FROM alpine
|
||||
COPY --from=0 /app/build /app
|
||||
RUN rm -rf /app/build/_dist_/components
|
||||
RUN rm -rf /app/build/_dist_/locales
|
||||
RUN rm -rf /app/build-manifest.json
|
||||
COPY --from=0 /app/dist /app
|
||||
FROM fholzer/nginx-brotli:v1.19.1
|
||||
COPY --from=1 /app /usr/share/nginx/html
|
||||
COPY ./nginx.conf /etc/nginx/nginx.conf
|
||||
@@ -1,23 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="/favicon.png" />
|
||||
<link rel="manifest" href="/manifest.webmanifest">
|
||||
<link rel="apple-touch-icon" href="/lfk-logo.png">
|
||||
<meta name="theme-color" content="#FFFFFF">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="description" content="Lauf Für Kaya! - Admin" />
|
||||
<title>Lauf für Kaya! - Admin</title>
|
||||
__TAILWIND_INSERT__
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-0.8.5-RELEASE_INFO</span>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<script src="/env.js"></script>
|
||||
<script defer type="module" src="/_dist_/index.js"></script>
|
||||
</body>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="/favicon.png" />
|
||||
<link rel="manifest" href="/manifest.webmanifest">
|
||||
<link rel="apple-touch-icon" href="/lfk-logo.png">
|
||||
<meta name="theme-color" content="#FFFFFF">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="description" content="Lauf Für Kaya! - Admin" />
|
||||
<title>Lauf für Kaya! - Admin</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<span style="display: none;visibility: hidden;" id="buildinfo">RELEASE_INFO-0.8.4-RELEASE_INFO</span>
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<script src="/env.js"></script>
|
||||
<script type="module" src="./src/main.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -6,6 +6,14 @@ http {
|
||||
server {
|
||||
error_page 404 /index.html;
|
||||
root /usr/share/nginx/html;
|
||||
location = /index.html {
|
||||
internal;
|
||||
add_header Cache-Control 'no-store';
|
||||
}
|
||||
location = / {
|
||||
internal;
|
||||
add_header Cache-Control 'no-store';
|
||||
}
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
}
|
||||
|
||||
25
package.json
25
package.json
@@ -1,18 +1,15 @@
|
||||
{
|
||||
"name": "@odit/lfk-frontend",
|
||||
"version": "0.8.5",
|
||||
"version": "0.8.4",
|
||||
"scripts": {
|
||||
"i18n-order": "node order.js",
|
||||
"dev:all": "yarn prebuild && snowpack dev",
|
||||
"dev": "cross-env NODE_ENV_ODIT=development_fast node template-copy.js && yarn build:sw && snowpack dev",
|
||||
"build": "yarn prebuild && snowpack build",
|
||||
"prebuild": "cross-env NODE_ENV_ODIT=production node template-copy.js && yarn build:sw",
|
||||
"build:sw": "workbox generateSW workbox-config.js",
|
||||
"dev": "vite dev",
|
||||
"build": "vite build",
|
||||
"release": "release-it",
|
||||
"licenses:export": "license-exporter --json -o public"
|
||||
},
|
||||
"license": "CC-BY-NC-SA-4.0",
|
||||
"dependencies": {
|
||||
"devDependencies": {
|
||||
"@odit/lfk-client-js": "0.6.4",
|
||||
"csvtojson": "^2.0.10",
|
||||
"gridjs": "3.3.0",
|
||||
@@ -25,21 +22,21 @@
|
||||
"tinro": "0.6.1",
|
||||
"toastify-js": "1.9.3",
|
||||
"validator": "13.5.2",
|
||||
"xlsx": "^0.16.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
"xlsx": "^0.16.9",
|
||||
"@odit/license-exporter": "^0.0.11",
|
||||
"@snowpack/plugin-svelte": "3.5.2",
|
||||
"auto-changelog": "^2.2.1",
|
||||
"autoprefixer": "10.2.5",
|
||||
"cross-env": "^7.0.3",
|
||||
"postcss": "8.2.8",
|
||||
"postcss-load-config": "3.0.1",
|
||||
"release-it": "^14.4.1",
|
||||
"snowpack": "3.0.13",
|
||||
"svelte": "3.35.0",
|
||||
"svelte-preprocess": "4.6.9",
|
||||
"workbox-cli": "6.1.2"
|
||||
"vite": "2.1.3",
|
||||
"vite-plugin-windicss": "^0.9.6",
|
||||
"@svitejs/vite-plugin-svelte": "^0.11.1",
|
||||
"@types/html-minifier": "^4.0.0",
|
||||
"html-minifier": "^4.0.0"
|
||||
},
|
||||
"release-it": {
|
||||
"git": {
|
||||
@@ -55,7 +52,7 @@
|
||||
"publish": false
|
||||
},
|
||||
"hooks": {
|
||||
"after:bump": "npx auto-changelog --commit-limit false -p -u --hide-credit && git add CHANGELOG.md && node versionbuilder.js && git add index.template.html && node order.js && git add src/locales"
|
||||
"after:bump": "npx auto-changelog --commit-limit false -p -u --hide-credit && git add CHANGELOG.md && node versionbuilder.js && git add index.html && node order.js && git add src/locales"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1
public/imprint_en.md
Normal file
1
public/imprint_en.md
Normal file
@@ -0,0 +1 @@
|
||||
Nostrud tempor dolor aute ea excepteur aute mollit elit eiusmod exercitation. Magna laborum pariatur adipisicing pariatur cupidatat exercitation duis aliquip pariatur sint exercitation deserunt labore. Consectetur id laboris dolore nostrud do velit ipsum. Eu laboris velit do commodo ad ea sint ex cillum. Cillum ipsum qui eiusmod laborum mollit sunt dolore incididunt. Cillum sunt culpa veniam voluptate et qui ut magna anim occaecat ut mollit dolor. Duis irure proident eu incididunt dolore sunt nisi aute dolore amet eu fugiat laboris quis.
|
||||
@@ -1,6 +0,0 @@
|
||||
const sveltePreprocess = require('svelte-preprocess');
|
||||
const preprocess = sveltePreprocess(__insert__);
|
||||
|
||||
module.exports = {
|
||||
preprocess
|
||||
};
|
||||
@@ -1,26 +0,0 @@
|
||||
/** @type {import("snowpack").SnowpackUserConfig } */
|
||||
module.exports = {
|
||||
mount: {
|
||||
public: '/',
|
||||
src: '/_dist_'
|
||||
},
|
||||
plugins: [ '@snowpack/plugin-svelte' ],
|
||||
routes: [
|
||||
/* Enable an SPA Fallback in development: */
|
||||
{ match: 'routes', src: '.*', dest: '/index.html' }
|
||||
],
|
||||
packageOptions: {
|
||||
/* ... */
|
||||
sourceMap: false
|
||||
},
|
||||
devOptions: {
|
||||
/* ... */
|
||||
},
|
||||
buildOptions: {
|
||||
/* ... */
|
||||
},
|
||||
alias: {
|
||||
/* ... */
|
||||
},
|
||||
optimize: { bundle: true, minify: true }
|
||||
};
|
||||
@@ -1,7 +1,4 @@
|
||||
<script>
|
||||
import "./TailwindStyles.svelte";
|
||||
import "toastify-js/src/toastify.css";
|
||||
import "gridjs/dist/theme/mermaid.css";
|
||||
import { Route, router } from "tinro";
|
||||
router.subscribe((routeInfo) => {
|
||||
window.scrollTo(0, 0);
|
||||
@@ -53,7 +50,6 @@
|
||||
import { OpenAPI } from "@odit/lfk-client-js";
|
||||
import UserDetail from "./components/users/UserDetail.svelte";
|
||||
OpenAPI.BASE = config.baseurl;
|
||||
import { register as registerSW } from "./swmodule";
|
||||
import TeamDetail from "./components/teams/TeamDetail.svelte";
|
||||
import UserPermissions from "./components/users/UserPermissions.svelte";
|
||||
import GroupPermissions from "./components/groups/GroupPermissions.svelte";
|
||||
@@ -75,7 +71,6 @@
|
||||
import Scans from "./components/scans/Scans.svelte";
|
||||
import ScanDetail from "./components/scans/ScanDetail.svelte";
|
||||
store.init();
|
||||
registerSW();
|
||||
</script>
|
||||
|
||||
<Route>
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
<style global>
|
||||
/*! @import */
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
</style>
|
||||
@@ -6,15 +6,13 @@
|
||||
let html = "";
|
||||
async function load() {
|
||||
let md = await fetch("/imprint_" + getLocaleFromNavigator() + ".md");
|
||||
let text = (await md.text()).toString();
|
||||
if(text.includes("<meta")){
|
||||
if((await md.text()).includes("<meta")){
|
||||
md.ok=false
|
||||
}
|
||||
if (!md.ok) {
|
||||
md = await fetch("/imprint_en.md");
|
||||
text = await md.text();
|
||||
}
|
||||
html = marked(text);
|
||||
html = marked(await md.text());
|
||||
}
|
||||
const promise = load();
|
||||
</script>
|
||||
|
||||
@@ -6,15 +6,13 @@
|
||||
let html = "";
|
||||
async function load() {
|
||||
let md = await fetch("/privacy_" + getLocaleFromNavigator() + ".md");
|
||||
let text = (await md.text()).toString();
|
||||
if(text.includes("<meta")){
|
||||
if((await md.text()).includes("<meta")){
|
||||
md.ok=false
|
||||
}
|
||||
if (!md.ok) {
|
||||
md = await fetch("/privacy_en.md");
|
||||
text = await md.text();
|
||||
}
|
||||
html = marked(text);
|
||||
html = marked(await md.text());
|
||||
}
|
||||
const promise = load();
|
||||
</script>
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
duration: -1,
|
||||
}).showToast();
|
||||
let count = 0;
|
||||
for await (const o of orgs) {
|
||||
for (const o of orgs) {
|
||||
const runners = await RunnerOrganizationService.runnerOrganizationControllerGetRunners(
|
||||
o.id
|
||||
);
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
duration: -1,
|
||||
}).showToast();
|
||||
let count = 0;
|
||||
for await (const t of teams) {
|
||||
for (const t of teams) {
|
||||
count++;
|
||||
const runners = await RunnerTeamService.runnerTeamControllerGetRunners(
|
||||
t.id
|
||||
|
||||
14
src/index.js
14
src/index.js
@@ -1,14 +0,0 @@
|
||||
import App from './App.svelte';
|
||||
|
||||
const app = new App({
|
||||
target: document.body
|
||||
});
|
||||
|
||||
export default app;
|
||||
// HMR
|
||||
if (import.meta.hot) {
|
||||
import.meta.hot.accept();
|
||||
import.meta.hot.dispose(() => {
|
||||
app.$destroy();
|
||||
});
|
||||
}
|
||||
9
src/main.js
Normal file
9
src/main.js
Normal file
@@ -0,0 +1,9 @@
|
||||
import 'windi.css';
|
||||
import "toastify-js/src/toastify.css";
|
||||
import "gridjs/dist/theme/mermaid.css";
|
||||
import App from './App.svelte';
|
||||
|
||||
const app = new App({
|
||||
target: document.body
|
||||
});
|
||||
export default app;
|
||||
@@ -1,14 +0,0 @@
|
||||
export const register = () => {
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', () => {
|
||||
navigator.serviceWorker.register('/sw.js').then(
|
||||
(registration) => {
|
||||
// console.log(`sw successful with scope: ${registration.scope}`);
|
||||
},
|
||||
(err) => {
|
||||
// console.log(`sw failed: ${err}`);
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -1,14 +1,13 @@
|
||||
module.exports = {
|
||||
purge: {
|
||||
content: [ './src/**/*.svelte' ]
|
||||
},
|
||||
// darkMode: 'media',
|
||||
variants: {},
|
||||
plugins: [],
|
||||
theme: {
|
||||
container: {
|
||||
center: true,
|
||||
padding: '1.5rem'
|
||||
extend: {
|
||||
colors: {
|
||||
reepolee: {
|
||||
500: '#b40000',
|
||||
600: '#9c0000',
|
||||
700: '#750000'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
const fs = require('fs');
|
||||
let content_svelteconfig = fs.readFileSync('./s-config.template.js', { encoding: 'utf8' });
|
||||
let content_html = fs.readFileSync('./index.template.html', { encoding: 'utf8' });
|
||||
if (process.env.NODE_ENV_ODIT == 'development_fast') {
|
||||
content_html = content_html.replace(
|
||||
'__TAILWIND_INSERT__',
|
||||
'<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tailwindcss@2.0.2/dist/tailwind.min.css">'
|
||||
);
|
||||
content_svelteconfig = content_svelteconfig.replace('__insert__', '{postcss:{}}');
|
||||
} else {
|
||||
content_html = content_html.replace('__TAILWIND_INSERT__', '');
|
||||
content_svelteconfig = content_svelteconfig.replace(
|
||||
'__insert__',
|
||||
"{postcss:{plugins:[require('tailwindcss'),require('autoprefixer')]}}"
|
||||
);
|
||||
}
|
||||
fs.writeFileSync('./public/index.html', content_html);
|
||||
fs.writeFileSync('./svelte.config.js', content_svelteconfig);
|
||||
console.info('dev setup script done');
|
||||
@@ -1,5 +1,5 @@
|
||||
const fs = require('fs');
|
||||
const package = JSON.parse(fs.readFileSync(`./package.json`, { encoding: 'utf-8' }));
|
||||
const original = fs.readFileSync(`./index.template.html`, { encoding: 'utf-8' });
|
||||
const original = fs.readFileSync(`./index.html`, { encoding: 'utf-8' });
|
||||
let out = original.replace(/RELEASE_INFO-(\S)+-RELEASE_INFO/gi, 'RELEASE_INFO-' + package.version + '-RELEASE_INFO');
|
||||
fs.writeFileSync(`./index.template.html`, out);
|
||||
fs.writeFileSync(`./index.html`, out);
|
||||
|
||||
50
vite.config.js
Normal file
50
vite.config.js
Normal file
@@ -0,0 +1,50 @@
|
||||
import svelte from '@svitejs/vite-plugin-svelte';
|
||||
import windiCSS from 'vite-plugin-windicss';
|
||||
import { minify } from 'html-minifier';
|
||||
import { defineConfig } from 'vite';
|
||||
//
|
||||
const indexReplace = () => {
|
||||
return {
|
||||
name: 'html-transform',
|
||||
transformIndexHtml(html) {
|
||||
return minify(html, {
|
||||
collapseWhitespace: true
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
export default defineConfig(({ command, mode }) => {
|
||||
const isProduction = mode === 'production';
|
||||
return {
|
||||
base: './',
|
||||
build: {
|
||||
polyfillDynamicImport: false,
|
||||
cssCodeSplit: false,
|
||||
minify: isProduction
|
||||
},
|
||||
plugins: [
|
||||
windiCSS({
|
||||
//@ts-ignore
|
||||
verbose: true,
|
||||
silent: false,
|
||||
debug: true,
|
||||
config: 'tailwind.config.js', // tailwind config file path (optional)
|
||||
compile: false, // false: interpretation mode; true: compilation mode
|
||||
prefix: 'windi-', // set compilation mode style prefix
|
||||
globalPreflight: true, // set preflight style is global or scoped
|
||||
globalUtility: true // set utility style is global or scoped
|
||||
}),
|
||||
svelte({
|
||||
//@ts-ignore
|
||||
hot: !isProduction,
|
||||
emitCss: true,
|
||||
extensions: [ '.md', '.svx', '.svelte' ],
|
||||
preprocess: [
|
||||
//
|
||||
]
|
||||
}),
|
||||
indexReplace()
|
||||
]
|
||||
};
|
||||
});
|
||||
@@ -1,9 +0,0 @@
|
||||
module.exports = {
|
||||
globDirectory: 'public',
|
||||
globPatterns: [ '**/*.{js,ico,png,svg,html,webmanifest,txt,json}' ],
|
||||
globIgnores: [ 'env.js', 'env.sample.js' ],
|
||||
swDest: 'public/sw.js',
|
||||
cleanupOutdatedCaches: true,
|
||||
mode: 'production',
|
||||
sourcemap: false
|
||||
};
|
||||
Reference in New Issue
Block a user