Grotti 3.6.0: Lauf-Identität nach Filament-Pause, robustere Queue, Projekte/Aufträge list-first und API-Polish.

This commit is contained in:
Dominic Gundel committed 2026-10-25 08:24:24 +01:00
1 parent d1eb87ba25
commit 2b1e36634a
53 files changed
+4254 -636

No files matched your search

+23 -5
View File
@@ -524,8 +524,13 @@ async function loadAkte(spoolId) {
const charge = run.chargen_nr
? '<a class="tag akte-charge" href="' + href + '">' + escapeHtml(run.chargen_nr) + "</a>"
: '<span class="akte-charge tiny">—</span>';
const file = '<a class="akte-file" href="' + href + '" title="' + escapeHtml((run.filename || "").split("/").pop() || "") + '">'
+ escapeHtml(akteFile(run.filename)) + "</a>";
const fileName = akteFile(run.filename);
const file = run.file_id
? '<a class="akte-file" href="/dateien?file=' + encodeURIComponent(run.file_id) + '" title="' + escapeHtml((run.filename || "").split("/").pop() || "") + '">'
+ escapeHtml(fileName) + "</a>"
+ ' <a class="tiny" href="' + href + '">Lauf</a>'
: '<a class="akte-file" href="' + href + '" title="' + escapeHtml((run.filename || "").split("/").pop() || "") + '">'
+ escapeHtml(fileName) + "</a>";
const gramsTxt = grams(run.spool_weight_g) + (run.spool_is_estimate ? " ≈" : "");
return '<div class="akte-run">'
+ '<span class="akte-when tiny">' + escapeHtml(akteWhen(run.started_at)) + "</span>"
@@ -1115,11 +1120,24 @@ load().then(() => {
closeSpoolPanel();
closeSortenPanel();
const params = new URLSearchParams(location.search);
const spoolId = params.get("spool");
const spoolId = params.get("spule") || params.get("spool");
const hostHint = params.get("host") || "";
const slotHint = params.get("slot") || "";
if (spoolId) {
const spool = spools.find((row) => String(row.id) === spoolId);
if (spool) fill(spool);
else openByCode(spoolId);
if (spool) {
fill(spool);
focusById("spool-id") || document.getElementById("spool-name")?.scrollIntoView({ behavior: "smooth", block: "center" });
} else openByCode(spoolId);
} else if (hostHint) {
document.getElementById("spool-panel")?.removeAttribute("hidden");
document.getElementById("spool-new")?.click?.();
const hostField = document.getElementById("spool-printer");
if (hostField) hostField.value = hostHint;
const slotField = document.getElementById("spool-slot");
if (slotField && slotHint) slotField.value = String(slotHint);
document.getElementById("spool-name")?.scrollIntoView({ behavior: "smooth", block: "center" });
toast("Drucker und Platz vorausgefüllt — Rolle wählen und speichern.");
}
}).catch((error) => showNote("spool-note", error));
</script>