Erklärende Kommentare aus dem Code entfernt, in KNOWLEDGE_BASE.md überführt
Betrifft app.py, create_db.py, poe.sh sowie alle HTML-Templates mit
Kommentaren (Jinja {# #}, HTML <!-- -->, eingebettetes JavaScript //).
Docstrings bleiben unangetastet -- nur reine Kommentarzeilen/-fragmente
wurden entfernt, damit der Code selbst schlank bleibt, ohne die
dahinterliegende Begründung zu verlieren.
Umsetzung:
- app.py/create_db.py: per Pythons eigenem tokenize-Modul entfernt (sicher
gegen '#' innerhalb von String-Literalen, Shebang-Zeile ausgenommen).
- poe.sh: manuell, da einzelne expect-Prompt-Strings ('expect "#"')
ein literales '#' als Teil des Strings enthalten, kein Kommentar.
- Templates: {# #}/<!-- --> per Regex (eindeutige Delimiter, anschließend
mit Jinja2s eigenem Parser validiert), echte // -JS-Kommentare manuell
identifiziert (zwei Fundstellen mit '//' waren tatsächlich Code --
als Protocol-relative-URL-Template-
String -- und wurden bewusst nicht angefasst).
Verifiziert: alle Python-/Bash-/Jinja-Dateien syntaktisch weiterhin
gültig, live auf der Testbox deployt und alle 14 Kernrouten mit 200
bestätigt, keine Fehler im App-Log.
This commit is contained in:
@@ -68,15 +68,6 @@
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
|
||||
</button>
|
||||
{% if can_run %}
|
||||
<!-- Bewusst KEIN <form> hier: das säße dann innerhalb des
|
||||
äußeren #updateForm (verschachtelte <form>-Elemente sind
|
||||
ungültiges HTML) -- der Browser hätte das äußere Formular
|
||||
an dieser Stelle vorzeitig geschlossen bzw. dessen Inhalt
|
||||
zerrissen. "Update starten" hat dadurch live IMMER
|
||||
zusätzlich das erste/oberste Gerät mitgeschickt, auch ganz
|
||||
ohne angehakte Checkbox. Das eigentliche <form> für den
|
||||
Neustart steht daher unten AUSSERHALB von #updateForm; der
|
||||
Button hier referenziert es nur über "form=". -->
|
||||
<button type="submit" form="reboot-{{ d['mac'] }}" class="btn btn-sm btn-secondary">Neustart</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
@@ -104,10 +95,6 @@
|
||||
{% endif %}
|
||||
</form>
|
||||
|
||||
<!-- Ein eigenständiges, NICHT verschachteltes <form> je Gerät für den
|
||||
einzelnen "Neustart"-Button (siehe Kommentar oben in der Tabelle) --
|
||||
jedes referenziert nur genau eine MAC, unabhängig vom Checkbox-Zustand
|
||||
im großen #updateForm. -->
|
||||
{% if can_run %}
|
||||
{% for d in devices %}
|
||||
<form method="post" action="{{ url_for('maintenance_reboot') }}" id="reboot-{{ d['mac'] }}" data-confirm="{{ d['name'] }} ({{ d['ip'] }}) jetzt per SSH neu starten?">
|
||||
@@ -121,14 +108,6 @@
|
||||
|
||||
{% block scripts %}
|
||||
<script>
|
||||
// Checkboxen beim Laden IMMER zurücksetzen: Browser stellen den
|
||||
// Checked-Zustand von Formularen nach einem Reload/Redirect (z.B. genau der
|
||||
// Redirect nach "Update starten") gerne aus dem eigenen Verlauf wieder her,
|
||||
// unabhängig davon, dass das frisch gerenderte HTML gar kein "checked"
|
||||
// enthält -- ein einmal angehaktes Gerät (z.B. beim ersten Ausprobieren)
|
||||
// blieb dadurch bei jedem weiteren Aufruf der Seite unsichtbar mitausgewählt
|
||||
// und lief bei "Update starten" immer zusätzlich mit, ganz gleich was man
|
||||
// gerade neu ankreuzt (live genau so reproduziert).
|
||||
document.querySelectorAll(".maint-check").forEach(function (cb) { cb.checked = false; });
|
||||
const selectAllCb = document.getElementById("selectAll");
|
||||
if (selectAllCb) selectAllCb.checked = false;
|
||||
@@ -142,9 +121,6 @@ document.getElementById("selectAll")?.addEventListener("change", function () {
|
||||
function filterTable(inputId, tableId) {
|
||||
const q = document.getElementById(inputId).value.trim().toLowerCase();
|
||||
document.querySelectorAll(`#${tableId} tbody tr`).forEach(row => {
|
||||
// Ausgabe-Zeile bleibt ausschließlich über toggleJobOutput() gesteuert,
|
||||
// sonst könnte ein zufälliger Text-Treffer darin sie unabhängig vom
|
||||
// dazugehörigen Geräte-Namen ein-/ausblenden.
|
||||
if (row.classList.contains("empty-row") || row.classList.contains("job-output-row")) return;
|
||||
row.style.display = row.innerText.toLowerCase().includes(q) ? "" : "none";
|
||||
});
|
||||
@@ -161,11 +137,6 @@ function toggleJobOutput(mac) {
|
||||
}
|
||||
}
|
||||
|
||||
// "Klebt" am unteren Rand, solange man nicht selbst nach oben gescrollt hat
|
||||
// -- reine Update-Ausgabe kann bei vielen Paketen sehr lang werden, ohne
|
||||
// das würde man sie sonst manuell nachziehen müssen, um live mitzulesen.
|
||||
// Ein kleiner Schwellwert (20px) toleriert, dass "ganz unten" durch
|
||||
// Rundungsfehler beim Scrollen selten exakt 0 ist.
|
||||
function isNearBottom(el) {
|
||||
return el.scrollHeight - el.scrollTop - el.clientHeight < 20;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user