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:
1 parent
5081212212
commit
db6a85a703
54 files changed
+3379
-384
No files matched your search
+20
-7
@@ -266,7 +266,13 @@ function tempbarHtml(label, value, target, scale, iconName) {
|
||||
|
||||
function tempbarsHtml(printer, state) {
|
||||
if (state === "offline") return "";
|
||||
const nozzle = tempbarHtml("Düse", printer.nozzle, printer.nozzle_target, 300, "nozzle");
|
||||
const tools = Array.isArray(printer.tools) ? printer.tools : [];
|
||||
const nozzle = tools.length > 1
|
||||
? tools.map((tool) => tempbarHtml(
|
||||
tool.name || ("Kopf " + (Number(tool.index) + 1)),
|
||||
tool.temp, tool.target, 300, "nozzle",
|
||||
)).join("")
|
||||
: tempbarHtml("Düse", printer.nozzle, printer.nozzle_target, 300, "nozzle");
|
||||
const bed = tempbarHtml("Bett", printer.bed, printer.bed_target, 110, "bed");
|
||||
const chamber = tempbarHtml("Bauraum", printer.chamber, printer.chamber_target, 80, "chamber");
|
||||
if (!nozzle && !bed && !chamber) return "";
|
||||
@@ -443,8 +449,10 @@ function spoolHex(spool) {
|
||||
return "";
|
||||
}
|
||||
|
||||
function aceSlotLabel(slot) {
|
||||
function aceSlotLabel(slot, family) {
|
||||
const n = Number(slot);
|
||||
if (family === "tenlog") return "Kopf " + n;
|
||||
if (family === "anycubic_i3") return "am Drucker";
|
||||
if (n <= 4) return "ACE 1 · " + n;
|
||||
return "ACE 2 · " + (n - 4);
|
||||
}
|
||||
@@ -489,7 +497,7 @@ function aceSteerHtml(printer) {
|
||||
const kind = spool.material_type || "—";
|
||||
bits.push(`<div class="steer-slot-row">
|
||||
<span class="dot" style="background:${escapeHtml(hex)}"></span>
|
||||
<span class="grow"><b>${escapeHtml(aceSlotLabel(slot))}</b> · ${escapeHtml(kind)} · ${escapeHtml(spool.name || "")}</span>
|
||||
<span class="grow"><b>${escapeHtml(aceSlotLabel(slot, printer.family))}</b> · ${escapeHtml(kind)} · ${escapeHtml(spool.name || "")}</span>
|
||||
<button type="button" class="ghost" data-steer-go="slot_setzen" data-ace-slot="${slot}">an den Drucker</button>
|
||||
</div>`);
|
||||
});
|
||||
@@ -499,6 +507,7 @@ function aceSteerHtml(printer) {
|
||||
}
|
||||
|
||||
function steerPanelHtml(printer) {
|
||||
if (printer.family === "tenlog" || printer.family === "anycubic_i3") return "";
|
||||
const n = printer.nozzle_target != null ? Math.round(printer.nozzle_target) : "";
|
||||
const b = printer.bed_target != null ? Math.round(printer.bed_target) : "";
|
||||
const sp = typeof printer.speed_factor === "number" ? Math.round(printer.speed_factor * 100) : 100;
|
||||
@@ -1590,8 +1599,8 @@ async function refresh() {
|
||||
printerCache.clear();
|
||||
for (const printer of all) printerCache.set(printer.host, printer);
|
||||
deskHostsOrder = printers.map((p) => p.host);
|
||||
document.getElementById("summary").innerHTML = summaryText(all) || "keine Drucker";
|
||||
document.getElementById("when").textContent = new Date().toLocaleTimeString("de-DE", { hour: "2-digit", minute: "2-digit" });
|
||||
setHtml(document.getElementById("summary"), summaryText(all) || "keine Drucker");
|
||||
setText(document.getElementById("when"), new Date().toLocaleTimeString("de-DE", { hour: "2-digit", minute: "2-digit" }));
|
||||
|
||||
if (!all.length) {
|
||||
lastFleetKey = "";
|
||||
@@ -1614,7 +1623,6 @@ async function refresh() {
|
||||
bucket.appendChild(article);
|
||||
} else {
|
||||
patchCard(article, printer);
|
||||
if (article.parentElement !== bucket) bucket.appendChild(article);
|
||||
}
|
||||
}
|
||||
for (const [host, article] of [...cardNodes.entries()]) {
|
||||
@@ -1628,9 +1636,14 @@ async function refresh() {
|
||||
? document.querySelector("#cards [data-fleet]")
|
||||
: document.querySelector(`#cards [data-fleet="${CSS.escape(section.label)}"]`);
|
||||
if (!bucket) continue;
|
||||
let marker = bucket.firstChild;
|
||||
for (const printer of section.printers) {
|
||||
const article = cardNodes.get(printer.host);
|
||||
if (article) bucket.appendChild(article);
|
||||
if (!article) continue;
|
||||
if (article !== marker) {
|
||||
bucket.insertBefore(article, marker);
|
||||
}
|
||||
marker = article.nextSibling;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user