Files
KX-Bridge-Release/web/themes/THEME-ID-CHECKLIST.md
2026-05-19 12:07:33 +02:00

12 KiB
Raw Blame History

KX-Bridge Theme Element-ID-Checkliste

Alle IDs, die default/app.js erwartet oder nutzt. Beim Umbau eines Themes (new1, …) müssen diese IDs beibehalten werden, sonst brechen Features still (null-Check) oder mit Fehler (ohne null-Check).

Legende

Symbol Bedeutung
Pflicht Fehlt → Laufzeitfehler oder zentraler Ablauf bricht
Empfohlen Fehlt → Feature funktioniert nicht (meist mit if(el) abgesichert)
Optional Nur i18n, Dekoration oder rein HTML-seitig

Quelle: automatisch aus default/app.js extrahiert + Abgleich mit default/index.html


Navigation & Panels

ID Pflicht Verwendung in app.js
panel-dashboard Pflicht showPanel('dashboard')
panel-printers Pflicht showPanel('printers')
panel-store Pflicht showPanel('store')
panel-console Pflicht showPanel('console')
nb-dashboard Empfohlen Sidebar active + i18n .nav-text
nb-printers Empfohlen Sidebar active + i18n
nb-store Empfohlen Sidebar active + i18n
nb-console Empfohlen Sidebar active + i18n + #log-badge
bnb-dashboard Empfohlen Bottom-Nav active + i18n
bnb-printers Empfohlen Bottom-Nav
bnb-store Empfohlen Bottom-Nav
bnb-console Empfohlen Bottom-Nav + #log-badge-bot
log-badge Empfohlen Fehler-Badge Sidebar-Konsole
log-badge-bot Empfohlen Fehler-Badge Bottom-Nav

CSS-Klassen: .panel, .nav-btn, .bnav-btn, .nav-text (in Sidebar-Buttons)


Header & Banner

ID Pflicht Verwendung
lang-btn Pflicht Sprachumschalter (ohne null-Check)
conn-btn Pflicht Verbinden/Trennen, updateConnBtn()
settings-btn Optional Nur HTML openSettings() per onclick
printer-dropdown-wrap Empfohlen Multi-Drucker UI
printer-dropdown-btn Optional Nur HTML-onclick
printer-dropdown-menu Empfohlen Dropdown-Inhalt
h-pname Empfohlen Druckername (Multi-Modus)
h-pname-single Empfohlen Druckername (Einzel-Modus)
h-version Empfohlen Bridge-Version aus /api/state
h-badge Empfohlen Status-Badge CSS-Klasse
h-state Empfohlen Status-Text
conn-error-banner Empfohlen MQTT-Verbindungsfehler
file-ready-banner Empfohlen Slicer-Upload bereit
file-ready-name Empfohlen Dateiname im Banner
file-ready-btn Empfohlen Druck starten
file-slots-btn Empfohlen Slots wählen
file-cancel-btn Empfohlen Banner abbrechen

Dashboard Kamera

ID Pflicht Verwendung
d-light-toggle Pflicht Licht sync in applyState() (.checked)
cam-toggle-btn Empfohlen Start/Stop-Label
cam-img Empfohlen MJPEG-Stream
cam-placeholder Empfohlen Platzhalter sichtbar/unsichtbar
cam-placeholder-txt Empfohlen i18n Platzhaltertext
cam-spinner Empfohlen Lade-Animation
cam-overlay Empfohlen Dateiname über Video
cam-fname Empfohlen Dateiname in Overlay
cam-wrap Optional Nur HTML/CSS

Dashboard Fortschritt & Druck

ID Pflicht Verwendung
d-pct Empfohlen Prozent-Anzeige
d-pbar Empfohlen Fortschrittsbalken
d-layers Empfohlen Layer X / Y
d-elapsed Empfohlen Verstrichene Zeit
d-remain Empfohlen Restzeit
d-slicer-row Empfohlen Slicer-Schätzung ein/aus
d-slicer-time Empfohlen Slicer-Zeitwert
d-fname Empfohlen Aktueller Dateiname
d-thumbnail Empfohlen GCode-Vorschaubild
d-btn-pause Empfohlen i18n + onclick
d-btn-resume Empfohlen i18n + onclick
d-btn-cancel Empfohlen i18n + onclick
d-ctrl-btns Optional Nur Layout
p-fname Optional Legacy/Print-Panel (falls vorhanden)
d-card-progress Optional i18n Kartentitel
d-lbl-elapsed Optional i18n
d-lbl-remain Optional i18n
d-lbl-layers Optional i18n
d-slicer-label Optional i18n

Dashboard Temperaturen

ID Pflicht Verwendung
d-nt Empfohlen Ist-Temperatur Düse
d-nt-t Empfohlen Soll-Temperatur Düse
d-bt Empfohlen Ist-Temperatur Bett
d-bt-t Empfohlen Soll-Temperatur Bett
d-ntbar Empfohlen Fortschrittsbalken Düse
d-btbar Empfohlen Fortschrittsbalken Bett
p-nozzle-inp Empfohlen Eingabe Ziel Düse (setNozzle)
p-bed-inp Empfohlen Eingabe Ziel Bett (setBed)
d-chart Empfohlen Canvas Temperatur-Verlauf
d-chart-label Optional i18n
d-card-temps Optional i18n
d-lbl-bed Optional i18n

CSS-Klassen: .lbl-set, .lbl-off, .temp-input


Dashboard Achsen & Schrittweite

ID Pflicht Verwendung
step-display Empfohlen Anzeige aktuelle Schrittweite
ptitle-motion-xy Optional i18n
ptitle-motion-z Optional i18n

CSS-Klassen: .step-btn, .joy, .lbl-home-z, .lbl-home-xy, .lbl-home-all, .lbl-disable-motors, .lbl-step


Dashboard Geschwindigkeit & Lüfter

ID Pflicht Verwendung
d-spd-1 Empfohlen Speed-Modus Leise
d-spd-2 Empfohlen Speed-Modus Normal
d-spd-3 Empfohlen Speed-Modus Sport
d-spd-bar Empfohlen Speed-Balken
d-fan Empfohlen Lüfter-Slider
d-fan-val Empfohlen Lüfter-Prozent-Anzeige
d-card-speed Optional i18n
d-card-lightfan Optional i18n
d-spd-lbl-1 Optional i18n
d-spd-lbl-2 Optional i18n
d-spd-lbl-3 Optional i18n
d-lbl-light Optional i18n

CSS-Klassen: .lbl-feed, .lbl-unload (AMS-Bereich)


Dashboard AMS

ID Pflicht Verwendung
ams-slots Pflicht Container für dynamische Slot-Kacheln
ams-slot-sel Empfohlen Slot-Auswahl für Feed/Unload
ams-slot-label Optional Nur HTML-oninput Label
ams-no-data Optional Platzhalter (wird durch JS ersetzt)
btn-unload Optional Nur HTML
d-card-ams Optional i18n
d-card-cam Optional i18n

Einstellungen (#settings-modal)

ID Pflicht Verwendung
settings-modal Pflicht Modal open/close (.classList)
s-printer-name Empfohlen Config-Feld
s-printer-ip Pflicht Config + IP-Hinweis-Listener
s-mqtt-port Empfohlen Config
s-username Empfohlen Config
s-password Empfohlen Config
s-device-id Empfohlen Config
s-mode-id Empfohlen Config
s-default-slot Empfohlen AMS-Standard-Slot
s-auto-leveling Empfohlen Checkbox Auto-Leveling
poll-1 Empfohlen Poll 1 s
poll-2 Empfohlen Poll 2 s
poll-5 Empfohlen Poll 5 s
s-version-label Empfohlen Versionsanzeige
update-status Empfohlen Update-Status-Text
btn-update-apply Empfohlen Update installieren
update-changelog Empfohlen Changelog-Anzeige
btn-save-settings Empfohlen Speichern
btn-update-check Optional Nur HTML-onclick
lbl-ip-hint Empfohlen IP-Format-Warnung
modal-title-settings Optional i18n
modal-sec-connection Optional i18n
modal-sec-print Optional i18n
modal-sec-poll Optional i18n
modal-sec-version Optional i18n
lbl-printer-namelbl-mode-id Optional i18n Labels
lbl-default-slot Optional i18n
lbl-auto-leveling Optional i18n
opt-slot-auto Optional i18n
opt-slot-0opt-slot-3 Optional Nur HTML
lbl-update-check Optional i18n
lbl-update-apply Optional i18n

CSS-Klasse: .poll-btn


AMS-Slot-Dialog (#slot-edit-modal)

ID Pflicht Verwendung
slot-edit-modal Pflicht Modal open/close
slot-edit-title Empfohlen Dialogtitel
slot-edit-color Empfohlen Farbwähler
slot-edit-preview Empfohlen Farbvorschau
slot-edit-mat Empfohlen Material-Text
slot-mat-btns Empfohlen Preset-Buttons (dynamisch)
btn-slot-edit-save Empfohlen Speichern
lbl-slot-color Optional i18n
lbl-slot-material Optional i18n

CSS-Klasse: .mat-preset-btn (dynamisch)


Filament-Druck-Dialog (#filament-dialog)

ID Pflicht Verwendung
filament-dialog Pflicht Modal open/close
fd-title Empfohlen Dateiname im Titel
fd-slots Empfohlen Kanal→Slot-Zuordnung (dynamisch)

Drucker hinzufügen (#add-printer-dialog)

ID Pflicht Verwendung
add-printer-dialog Pflicht Modal open/close
apd-ip Empfohlen IP-Eingabe
apd-name Empfohlen Name optional
apd-status Empfohlen Status/Fehlermeldung
apd-confirm Empfohlen Bestätigen
apd-title Optional i18n
apd-lbl-ip Optional i18n
apd-lbl-name Optional i18n
add-printer-btn-label Optional i18n

Drucker-Tab

ID Pflicht Verwendung
printers-grid Empfohlen Container Drucker-Karten
printers-panel-title Optional i18n

Datei-Browser

ID Pflicht Verwendung
store-grid Empfohlen Datei-Karten (dynamisch)
store-empty Empfohlen Leer-/Kein-Treffer-Hinweis
store-search Empfohlen Suche
store-filter Empfohlen Filter Select
store-sort Empfohlen Sortierung Select
store-refresh-btn Optional i18n Button-Text
store-panel-title Optional i18n
sf-all, sf-ok, sf-err, sf-new Optional i18n Optionen
ss-date, ss-name, ss-dur Optional i18n Optionen

Konsole

ID Pflicht Verwendung
console-log Empfohlen Log-Ausgabe
log-filter Empfohlen Textfilter
btn-autoscroll Empfohlen Auto-Scroll Toggle
logdir-all Empfohlen Filter Alle
logdir-rx Empfohlen Filter RX
logdir-tx Empfohlen Filter TX
ptitle-console Optional i18n
btn-log-dl Optional Nur HTML Download-Link /api/log/download

CSS-Klassen: .log-dir-btn, .log-topic-btn (Topic-Buttons nutzen data-topic, keine festen IDs)


IDs nur in HTML (nicht in app.js)

Diese IDs sind im Default-Theme vorhanden, werden von app.js aber nicht per getElementById angesprochen:

ID Anmerkung
settings-btn Nur onclick="openSettings()"
printer-dropdown-btn Nur onclick
btn-update-check Nur onclick
opt-slot-0opt-slot-3 Option-Labels statisch
cam-wrap Layout
d-ctrl-btns Layout
ams-no-data Initial-Platzhalter, wird von JS überschrieben
ams-slot-label Nur inline oninput
btn-unload Nur HTML
btn-log-dl Statischer Download-Link

Schnell-Check vor Theme-Release

  • Alle vier panel-* vorhanden und in .panel gewrappt
  • lang-btn, conn-btn, d-light-toggle, settings-modal, ams-slots vorhanden
  • Alle Modals: settings-modal, slot-edit-modal, filament-dialog, add-printer-dialog
  • Navigation: nb-* / bnb-* für dashboard, printers, store, console
  • Dashboard-Kern: Temps, Progress, Fan, Speed, AMS-Container
  • Store: store-grid, store-search, store-filter, store-sort
  • Konsole: console-log, log-filter
  • index.html bindet /kx/ui/style.css und /kx/ui/app.js ein
  • Alle onclick-Handler aus THEME-JS-HOOKS.md gesetzt oder ersetzt

Siehe auch

  • THEME-JS-HOOKS.md alle JS-Funktionsaufrufe mit Kontext
  • Theme-Ordner: web/themes/<name>/ mit index.html, style.css, app.js
  • Aktivierung: --ui-theme <name> oder KX_UI_THEME=<name>