Grotti 3.7.0: Treiber für Kobra 4 und Marlin, smartere Dateien-Auswahl und einstellbare Etiketten.

Senden und Abbruch laufen über den Treiber, Orca-Doppelzeilen und tote Ideen-API fallen weg, Drucker folgen der Datei, Etikettenformat liegt in den Einstellungen.
This commit is contained in:
Dominic Gundel committed 2026-11-02 14:03:57 +01:00
1 parent 5081212212
commit db6a85a703
54 files changed
+3379 -384

No files matched your search

+21 -6
View File
@@ -81,11 +81,26 @@ function shortRunName(filename) {
return name || (filename || "").split("/").pop() || "";
}
function render() {
let lastRunsKey = "";
function runsKey(rows) {
return (rows || []).map((run) => [
run.id, run.state, run.duration_s, run.pause_s, run.weight_used_g,
run.verdict, run.spool_id, run.merge_with_id, run.chargen_nr,
].join(":")).join("|");
}
function render(force) {
fillPrinterFilter();
const body = document.getElementById("run-rows");
body.innerHTML = "";
const shown = filteredRuns();
const key = runsKey(shown) + "|" + runPage + "|"
+ (document.getElementById("run-filter-printer")?.value || "")
+ "|" + (document.getElementById("run-filter-verdict")?.value || "")
+ "|" + (document.getElementById("run-filter-spool")?.value || "");
if (!force && key === lastRunsKey && body.children.length) return;
lastRunsKey = key;
body.innerHTML = "";
if (!runs.length) {
body.innerHTML = '<tr><td class="empty" colspan="9"><div class="empty-state">' + icon("list") + '<p>Noch kein Lauf.</p><p class="tiny">„Läufe holen“ liest die Drucker aus.</p></div></td></tr>';
renderPager(document.getElementById("run-pager"), null, () => {});
@@ -324,13 +339,13 @@ function render() {
});
}
async function load() {
async function load(resetPage) {
[runs, spools] = await Promise.all([api("/laeufe?limit=500"), api("/spulen")]);
runPage = 1;
if (resetPage !== false) runPage = 1;
render();
}
window.onDruckerLive = () => { load().catch(() => {}); };
window.onQueueChanged = () => { load().catch(() => {}); };
window.onDruckerLive = () => { load(false).catch(() => {}); };
window.onQueueChanged = () => { load(false).catch(() => {}); };
["run-filter-printer", "run-filter-verdict", "run-filter-spool"].forEach((id) => {
document.getElementById(id).addEventListener("change", () => { runPage = 1; render(); });