diff --git a/packages/tesm-core/src/tesm_core/static/tesm_core/js/app.js b/packages/tesm-core/src/tesm_core/static/tesm_core/js/app.js index cd3adad..d329862 100644 --- a/packages/tesm-core/src/tesm_core/static/tesm_core/js/app.js +++ b/packages/tesm-core/src/tesm_core/static/tesm_core/js/app.js @@ -563,7 +563,8 @@ function initAutoRefresh() { // von innerHTML entsteht ein neues Element -- mit scrollTop 0. Genau // deshalb sprang ein laufendes Auftragsprotokoll bei jeder // Aktualisierung an den Anfang zurueck. - const scrollerOf = (el) => el.querySelector(".log-view, [data-scroll]") || el; + const scrollerOf = (el) => + el.querySelector("[data-tail], .log-view, [data-scroll]") || el; const before = scrollerOf(region); const position = before.scrollTop; // "Am Ende" grosszuegig auslegen: wer mitliest, soll mitgezogen @@ -814,6 +815,25 @@ function initTileFilters() { /* -- Start ---------------------------------------------------------------- */ +/** + * Protokollansichten stehen am Ende, nicht am Anfang. + * + * Bei einem Protokoll ist die neueste Zeile die interessante, und die steht + * unten. Ohne diesen Anfangssprung blieb die Ansicht oben stehen -- und weil + * die Aktualisierung nur mitzieht, wenn man ohnehin schon am Ende ist, zog + * sie danach nie mit. Es sah aus, als waere der Autoscroll kaputt; in + * Wirklichkeit stand man nur nie an der Stelle, an der er greift. + * + * Ausdruecklich per ``data-tail`` markiert: eine Konfigurationsvorschau + * (nginx, Kea) und der Offline-Code sind auch
, sollen
+ * aber oben beginnen.
+ */
+function initLogTails(root = document) {
+  root.querySelectorAll("[data-tail]").forEach((view) => {
+    view.scrollTop = view.scrollHeight;
+  });
+}
+
 function boot() {
   initTheme();
   initSidebar();
@@ -830,6 +850,7 @@ function boot() {
   initPalette();
   initSubmitGuards();
   initTileFilters();
+  initLogTails();
   unsavedGuard.init();
 }
 
diff --git a/packages/tesm-core/src/tesm_core/templates/tesm_core/_log_lines.html b/packages/tesm-core/src/tesm_core/templates/tesm_core/_log_lines.html
index 4ce031f..f9aea87 100644
--- a/packages/tesm-core/src/tesm_core/templates/tesm_core/_log_lines.html
+++ b/packages/tesm-core/src/tesm_core/templates/tesm_core/_log_lines.html
@@ -1,5 +1,5 @@
 {% if lines %}
-
{% for line in lines %}{{ line }}
+
{% for line in lines %}{{ line }}
 {% endfor %}
{% else %}
Keine Zeilen