Skip to content

Commit

Permalink
lehrerimport
Browse files Browse the repository at this point in the history
  • Loading branch information
hmt committed Nov 9, 2020
1 parent c5aa744 commit d3ea2ea
Showing 1 changed file with 109 additions and 40 deletions.
149 changes: 109 additions & 40 deletions src/components/Einstellungen.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
let datensatz_schueler = "",
datensatz_medien = "",
datensatz_sonstige = { nichtschueler: 1, memo: "" },
datensatz_block_sonstige = "",
warten;
const update_sonstige = () => {
Expand All @@ -26,6 +27,32 @@
notifier.fehler(`Fehler beim Hinzufügen des Nutzers: ${e.message}`);
}
};
const block_update_sonstige = async () => {
warten = true;
const { data } = await parse(datensatz_block_sonstige, {
comments: "#",
header: true,
});
try {
$db.prepare(
`DELETE FROM schueler WHERE nichtschueler=1 AND NOT EXISTS (SELECT * FROM ausleihe WHERE ausleihe.schueler_id = schueler.id)`
).run();
const insert = $db.prepare(
`INSERT INTO schueler (schild_id, name, vorname, jahr, nichtschueler) VALUES(:id, :name, :vorname, :jahr, 1)
ON CONFLICT (schild_id) DO UPDATE SET jahr = :jahr`
);
const insertMany = $db.transaction((entries) => {
for (const e of entries) insert.run(e);
});
insertMany(data);
// id|name|vorname|jahr
notifier.fertig(`${data.length || 0} Datensätze verarbeitet.`);
} catch (e) {
notifier.fehler(`Fehler beim Lehrerimport: ${e.message}`);
console.log(e);
}
warten = false;
};
const update_schueler = async () => {
warten = true;
const res = await parse(datensatz_schueler, {
Expand All @@ -34,8 +61,7 @@
});
// id|name|vorname|jahr|klasse|kurs|kurs_lehrer
const values = res.data;
let schueler = {},
kurse = {};
let schueler = {}
values.forEach((v) => {
schueler[v.id] = [v.id, v.jahr, v.klasse, v.name, v.vorname];
});
Expand All @@ -47,7 +73,7 @@
.map((v) => `(${v.id}, '${v.kurs_lehrer || ""}', '${v.kurs || ""}')`)
.join(",");
const query = [
`DELETE FROM schueler WHERE NOT EXISTS ( SELECT * FROM ausleihe WHERE ausleihe.schueler_id = schueler.id)`,
`DELETE FROM schueler WHERE NOT nichtschueler AND NOT EXISTS ( SELECT * FROM ausleihe WHERE ausleihe.schueler_id = schueler.id)`,
`INSERT INTO schueler (schild_id, jahr, klasse, name, vorname) VALUES ${schueler_values}
ON CONFLICT (schild_id) DO UPDATE SET jahr = ${jahr}`,
`DELETE FROM kurszugehoerigkeit`,
Expand All @@ -56,16 +82,20 @@
try {
query.forEach((q) => $db.prepare(q).run());
datensatz_schueler = "";
const res = $db.prepare(`SELECT COUNT(*) as anzahl FROM schueler`).get()
notifier.fertig(`${schueler_values.length || 0} Datensätze verarbeitet; ${res.anzahl} Nutzer in der Datenbank.`);
const res = $db.prepare(`SELECT COUNT(*) as anzahl FROM schueler`).get();
notifier.fertig(
`${schueler_values.length || 0} Datensätze verarbeitet; ${
res.anzahl
} Nutzer in der Datenbank.`
);
} catch (e) {
notifier.fehler(`Fehler beim Schülerimport: ${e.message}`);
console.log(e);
}
warten = false;
};
const update_medien = async () => {
const medien = datensatz_medien.split("\n").filter(a=>a)
const medien = datensatz_medien.split("\n").filter((a) => a);
const insert = $db.prepare(
"INSERT INTO medienbezeichnung (name) VALUES (?)"
);
Expand All @@ -77,9 +107,10 @@
datensatz_medien = "";
notifier.fertig("Medientitel importiert");
} catch (e) {
const msg = e.code === "SQLITE_CONSTRAINT_UNIQUE"
? "Mindestens ein Titel ist bereits vorhanden"
: e.message
const msg =
e.code === "SQLITE_CONSTRAINT_UNIQUE"
? "Mindestens ein Titel ist bereits vorhanden"
: e.message;
notifier.fehler(`Fehler beim Medienimport: ${msg}`);
console.log(e);
}
Expand All @@ -90,28 +121,28 @@
<h3 class="title">Scan-Prefix</h3>
<div class="field">
<div class="control">
<label class="label">
Scan-Prefix muss im Scanner einprogrammiert werden
<input class="input" type="text" bind:value={$configData.scan_prefix} />
</label>
<label class="label">
Scan-Prefix muss im Scanner einprogrammiert werden
<input class="input" type="text" bind:value={$configData.scan_prefix} />
</label>
</div>
</div>
</div>
<div class="box">
<h3 class="title">Schüler, Kurse und Zugehörigkeiten importieren</h3>
<div class="field">
<div class="control">
<label class="label">
Achtung, die Nutzerdatenbank wird komplett geleert und mit den neuen Daten
ersetzt. Ausgenommen sind säumige Nutzer und sonstige Nutzer.
<textarea
class="textarea"
bind:value={datensatz_schueler}
placeholder="Füge Daten mit Kopfzeile ein:
<label class="label">
Achtung, die Nutzerdatenbank wird komplett geleert und mit den neuen
Daten ersetzt. Ausgenommen sind säumige Nutzer und sonstige Nutzer.
<textarea
class="textarea"
bind:value={datensatz_schueler}
placeholder="Füge Daten mit Kopfzeile ein:
id|name|vorname|jahr|klasse|kurs|kurs_lehrer"
rows="10"
cols="20" />
</label>
rows="10"
cols="20" />
</label>
</div>
</div>
<div class="field is-grouped">
Expand All @@ -126,6 +157,35 @@
</div>
</div>
</div>
<div class="box">
<h3 class="title">Lehrer importieren</h3>
<div class="field">
<div class="control">
<label class="label">
Achtung, alle sonstigen Nutzer (Lehrer etc.) werden entfernt und mit den neuen
Daten ersetzt. Ausgenommen sind Nutzer mit bestehenden Ausleihen.
<textarea
class="textarea"
bind:value={datensatz_block_sonstige}
placeholder="Füge Daten mit Kopfzeile ein:
id|name|vorname|jahr"
rows="10"
cols="20" />
</label>
</div>
</div>
<div class="field is-grouped">
<div class="control">
<button
class="button is-{warten ? 'warning' : 'link'}"
class:is-loading={warten}
disabled={warten}
on:click={() => block_update_sonstige()}>
Aktualisieren
</button>
</div>
</div>
</div>
<div class="box">
<h3 class="title">Sonstige Personen aufnehmen</h3>
<div class="field is-grouped">
Expand Down Expand Up @@ -165,15 +225,15 @@
<h3 class="title">Medien importieren</h3>
<div class="field">
<div class="control">
<label class="label">
Medientitel importieren
<textarea
class="textarea"
bind:value={datensatz_medien}
placeholder="Je ein Titel pro Zeile"
rows="10"
cols="20" />
</label>
<label class="label">
Medientitel importieren
<textarea
class="textarea"
bind:value={datensatz_medien}
placeholder="Je ein Titel pro Zeile"
rows="10"
cols="20" />
</label>
</div>
</div>
<div class="field is-grouped">
Expand All @@ -187,27 +247,36 @@

<div class="box">
<h3 class="title">Druckeinstellungen</h3>
<p class="mb-4">Ein Drucker muss als Standarddrucker eingestellt sein, damit der Druck aus Bangbib heraus funktioniert.
<br>Darüber hinaus lässt sich festlegen, wie nach einer Gruppenausleihe verfahren wird.</p>
<p class="mb-4">
Ein Drucker muss als Standarddrucker eingestellt sein, damit der Druck aus
Bangbib heraus funktioniert.
<br />Darüber hinaus lässt sich festlegen, wie nach einer Gruppenausleihe
verfahren wird.
</p>
<div class="field">
<label class="checkbox">
<input type="checkbox" bind:checked={$configData.gruppe_print_dialog}>
<input type="checkbox" bind:checked={$configData.gruppe_print_dialog} />
Druckdialog sofort zeigen
</label>
</div>
<div class="field">
<label class="checkbox">
<input type="checkbox" bind:checked={$configData.gruppe_auto_pdf}>
<input type="checkbox" bind:checked={$configData.gruppe_auto_pdf} />
Automatisch als PDF ablegen
</label>
<p class="help">Diese Einstellung erstellt ein PDF in der Form <code>Jahrgang_Kurs_Datum_Zeit.pdf</code> im PDF-Verzeichnis</p>
<p class="help">
Diese Einstellung erstellt ein PDF in der Form
<code>Jahrgang_Kurs_Datum_Zeit.pdf</code>
im PDF-Verzeichnis
</p>
</div>
<div class="field">
<p class="control">
<label class="label">PDF-Verzeichnis
<input class="input"
type="text"
bind:value={$configData.pdf_verzeichnis}>
<input
class="input"
type="text"
bind:value={$configData.pdf_verzeichnis} />
</label>
</p>
</div>
Expand Down

0 comments on commit d3ea2ea

Please sign in to comment.