From acf78ee853949c92ea58e1d07657ad002ac3aa5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Z=C3=BCndorf?= Date: Sat, 21 May 2022 03:48:52 +0200 Subject: [PATCH] =?UTF-8?q?Ausgabe=20von=20=20Fehlermeldungen=20bei=20Doku?= =?UTF-8?q?mentverarbeitung=20Suchpfade=20f=C3=BCr=20imports=20erg=C3=A4nz?= =?UTF-8?q?t=20Sch=C3=BClermodel=20erweitert=20Substitution=20von=20rootdi?= =?UTF-8?q?r/bassdir=20erm=C3=B6glicht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 ++- src/components/Dokument.svelte | 29 ++++++++++++------ src/document_models/dschueler.js | 52 +++++++++++++++++++++++++------- src/preload.js | 4 +-- src/rollup_worker.js | 20 ++++++++++++ 5 files changed, 85 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index f5872c8..4b9afbb 100644 --- a/package.json +++ b/package.json @@ -30,19 +30,21 @@ "@rollup/plugin-commonjs": "^21.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.0.0", + "@rollup/plugin-replace": "^4.0.0", "bulma": "^0.9.1", "cheap-watch": "^1.0.2", "comlink": "^4.3.0", "electron-store": "^8.0.0", "electron-util": "^0.17.0", "idb-keyval": "^6.0.2", - "mark.js": "^8.11.1", "knex": "^1.0.3", + "mark.js": "^8.11.1", "mysql": "^2.18.1", "objection": "^3.0.0", "pg": "^8.4.1", "require-from-string": "^2.0.2", "rollup": "^2.42.0", + "rollup-plugin-includepaths": "^0.2.4", "rollup-plugin-svelte": "^7.0.0", "schild": "^0.8.0", "serialize-error": "^9.0.0", diff --git a/src/components/Dokument.svelte b/src/components/Dokument.svelte index bc3107e..79523fb 100644 --- a/src/components/Dokument.svelte +++ b/src/components/Dokument.svelte @@ -44,6 +44,7 @@ const options = { source: join($configData.reports, args.repo, args.file), basedir: join($configData.reports, args.repo), + rootdir: join($configData.reports), dest: join($configData.userData), debug: $configData.debug, cache: $configData.cache, @@ -151,11 +152,14 @@ - + {#if $error}
-

{$error.message}

-
{$error.stack}
+
Bei der Verarbeitung des Dokuments ist folgender Fehler aufgetreten:
+
+
{$error.message}
+
{$error.stack}
+
{/if} @@ -164,12 +168,17 @@ height: -webkit-fill-available; } .fehlermeldung { - position: absolute; - left: 250px; - bottom: 0; - background: rgba(255, 255, 255, 0.9); - width: 100%; - height: 200px; - overflow: auto; + position: sticky; + margin: auto; + width: 90%; + left: auto; + height: 30%; + border: 2px solid red; + bottom: 1em; + padding: 1em; + background: rgba(255, 255, 255, 0.7); + display: flex; + flex-direction: column; + justify-content: stretch; } diff --git a/src/document_models/dschueler.js b/src/document_models/dschueler.js index 0332329..1526b91 100644 --- a/src/document_models/dschueler.js +++ b/src/document_models/dschueler.js @@ -21,17 +21,17 @@ export class DSchueler { } while(s) return na } + get gewaehltesSchuljahrStartDatum() { + return new Date(this.gewaehltesJahr,7,1) // 1.8. des Schuljahres + } + get gewaehltesSchuljahrEndDatum() { + return new Date(this.gewaehltesJahr+1,6,31) // 31.7. des Schuljahres + } get naechsterAbschnitt () { let na= this.abschnitte.find(a => a.Jahr === this.gewaehltesJahr && a.Abschnitt === this.gewaehlteAbschnittsNummer+1) if(na) return na return this.abschnitte.find(a => a.Jahr === this.gewaehltesJahr+1 && a.Abschnitt === 0) } - volljaehrigAm (datum) { - if (!datum || !this.Geburtsdatum) return false - var g = new Date(this.Geburtsdatum) - var d = new Date(datum) - return (d.getFullYear() - g.getFullYear() - ((d.getMonth() > g.getMonth() || (d.getMonth() === g.getMonth() && d.getDay() >= g.getDay())) ? 0 : 1)) >= 18 - } get gewaehlterAbschnitt () { return this.abschnitte.find(a => a.Jahr === this.gewaehltesJahr && a.Abschnitt === this.gewaehlteAbschnittsNummer) @@ -39,24 +39,54 @@ export class DSchueler { get gewaehlterJahrgang () { return this.gewaehlterAbschnitt.Jahrgang } - get anrede () { + get VollstaendigerName () { + return (this.Vorname + " "+ (this.Zusatz ? (this.Zusatz+" ") : "") +this.Name) + } + get VollstaendigeAnrede () { + return ((this.Geschlecht === 3 ? 'Herr ' : 'Frau ' ) + this.Vorname + " "+ (this.Zusatz ? (this.Zusatz+" ") : "") +this.Name) + } + get VollstaendigeBriefAnrede () { + return ((this.Geschlecht === 3 ? 'Sehr geehrter Herr ' : 'Sehr geehrte Frau ')+ (this.Zusatz ? (this.Zusatz+" ") : "") + this.Name) + } + get Anrede () { return (this.Geschlecht === 3 ? 'Herr' : 'Frau') } get geehrte_r () { return this.Geschlecht === 3 ? 'geehrter Herr' : 'geehrte Frau' } - get schueler_in () { + get Schueler_in () { return (this.Geschlecht === 3 ? 'Schüler' : 'Schülerin') } - get studierende_r () { + get artikel () { + return (this.Geschlecht === 3 ? 'der' : 'die') + } + get Artikel () { + return (this.Geschlecht === 3 ? 'Der' : 'Die') + } + get geschlecht () { + return (this.Geschlecht === 3 ? 'männlich' : 'weiblich') + } + get pronomen () { + return (this.Geschlecht === 3 ? 'er' : 'sie') + } + get Pronomen () { + return (this.Geschlecht === 3 ? 'Er' : 'Sie') + } + get Studierende_r () { return (this.Geschlecht === 3 ? 'Studierender' : 'Studierende') } - get berufsbezeichnung_mw () { + get Berufsbezeichnung_mw () { if (this.fachklasse) return this.Geschlecht === 3 ? this.fachklasse.Bezeichnung : this.fachklasse.Beschreibung_W else return 'Keine Fachklasse zugeordnet' } - get volljaehrig () { + get istVolljaehrig () { return this.Volljaehrig === '+' } + istVolljaehrigAm (datum) { + if (!datum || !this.Geburtsdatum) return false + var g = new Date(this.Geburtsdatum) + var d = new Date(datum) + return (d.getFullYear() - g.getFullYear() - ((d.getMonth() > g.getMonth() || (d.getMonth() === g.getMonth() && d.getDay() >= g.getDay())) ? 0 : 1)) >= 18 + } } \ No newline at end of file diff --git a/src/preload.js b/src/preload.js index 25a04ef..a92af7e 100644 --- a/src/preload.js +++ b/src/preload.js @@ -6,6 +6,7 @@ const Mark = require('mark.js') const requireFromString = require('require-from-string'); global.R = (lib) => require(lib) + let svelte, props, Component, componentPath, mark, compiled_module function runMark () { @@ -39,9 +40,8 @@ ipcRenderer.on('set_dokument', async () => { generic_pdf: svelte.generic_pdf }) } catch (error) { - // const { serializeError } = await import('serialize-error') console.log('Das Svelte-Dokument konnte nicht geladen werden:', error) - // ipcRenderer.sendToHost('error_message', serializeError(error)) + ipcRenderer.sendToHost('error_message', error) } runMark() }) diff --git a/src/rollup_worker.js b/src/rollup_worker.js index 078c46e..5748322 100644 --- a/src/rollup_worker.js +++ b/src/rollup_worker.js @@ -6,6 +6,8 @@ import resolve from "@rollup/plugin-node-resolve"; import commonjs from "@rollup/plugin-commonjs"; import json from "@rollup/plugin-json"; import { get, set } from 'idb-keyval'; +import includePaths from 'rollup-plugin-includepaths' +import replace from '@rollup/plugin-replace' // svelte components möchten svelte importieren. Da wir aber auch components // ohne node_modules zulassen, müssen wir das Verzeichnis an svelte weiterreichen @@ -13,6 +15,7 @@ const __nodeModules = process.env.PROD ? presolve(__dirname, "node_modules/svelte") : presolve(__dirname, "../node_modules/svelte"); + class RollupBuild { async build(options, callback) { let cache @@ -23,11 +26,28 @@ class RollupBuild { console.log('Komponente wurde im Cache gefunden') } } + console.log(`${options.rootdir}/.js`) this.input = { input: presolve(options.source), perf: true, treeshake: false, plugins: [ + includePaths({ + include: {}, + paths: [`${options.rootdir}/.js`], + external: [], + extensions: ['.js'] + }), + includePaths({ + include: {}, + paths: [`${options.rootdir}/.vorlagen`], + external: [], + extensions: ['.svelte'] + }), + replace({ + "__rootdir":options.rootdir.replace(/\\/g, "/"), + "__basedir":options.basedir.replace("\\","/"), + }), json({ preferConst: true }), svelte({ emitCss: false,