Kurze Hostnamen in Freigaben aufloesen, Protokolle am Ende oeffnen
Freigaben mit kurzem Hostnamen (\S2025\Share) scheiterten mit "could not resolve address for S2025". Ursache: dieser Server hat keine Suchdomaene (search . in resolv.conf), ein Windows-Client hat eine. Der Name ist also richtig, nur hier nicht auflösbar. Die AD-Domaene ist aus den Einstellungen des Verzeichnisdienstes bekannt und wird jetzt zum Vervollstaendigen benutzt; laesst sich der Name gar nicht aufloesen, sagt die Meldung was zu tun ist statt "Unknown error". Auf POETEST gegen echtes DNS geprueft: \S2025\LDAP_Share -> \S2025.ad.eertmoed.net\LDAP_Share, und dieser Pfad bindet ein. Protokollansichten standen beim Oeffnen oben. Die neueste Zeile steht aber unten, und weil die Aktualisierung nur mitzieht, wenn man ohnehin am Ende ist, zog sie danach nie mit -- es sah aus wie ein kaputter Autoscroll, war aber nur die falsche Anfangsposition. Die Protokollansichten sind jetzt per data-tail markiert und springen beim Laden nach unten. Konfigurationsvorschauen (nginx, Kea) und der Offline-Code sind bewusst nicht markiert: die beginnen oben. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -563,7 +563,8 @@ function initAutoRefresh() {
|
|||||||
// von innerHTML entsteht ein neues Element -- mit scrollTop 0. Genau
|
// von innerHTML entsteht ein neues Element -- mit scrollTop 0. Genau
|
||||||
// deshalb sprang ein laufendes Auftragsprotokoll bei jeder
|
// deshalb sprang ein laufendes Auftragsprotokoll bei jeder
|
||||||
// Aktualisierung an den Anfang zurueck.
|
// 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 before = scrollerOf(region);
|
||||||
const position = before.scrollTop;
|
const position = before.scrollTop;
|
||||||
// "Am Ende" grosszuegig auslegen: wer mitliest, soll mitgezogen
|
// "Am Ende" grosszuegig auslegen: wer mitliest, soll mitgezogen
|
||||||
@@ -814,6 +815,25 @@ function initTileFilters() {
|
|||||||
|
|
||||||
/* -- Start ---------------------------------------------------------------- */
|
/* -- 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 <pre class="log-view">, sollen
|
||||||
|
* aber oben beginnen.
|
||||||
|
*/
|
||||||
|
function initLogTails(root = document) {
|
||||||
|
root.querySelectorAll("[data-tail]").forEach((view) => {
|
||||||
|
view.scrollTop = view.scrollHeight;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function boot() {
|
function boot() {
|
||||||
initTheme();
|
initTheme();
|
||||||
initSidebar();
|
initSidebar();
|
||||||
@@ -830,6 +850,7 @@ function boot() {
|
|||||||
initPalette();
|
initPalette();
|
||||||
initSubmitGuards();
|
initSubmitGuards();
|
||||||
initTileFilters();
|
initTileFilters();
|
||||||
|
initLogTails();
|
||||||
unsavedGuard.init();
|
unsavedGuard.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{% if lines %}
|
{% if lines %}
|
||||||
<pre class="log-view">{% for line in lines %}{{ line }}
|
<pre class="log-view" data-tail>{% for line in lines %}{{ line }}
|
||||||
{% endfor %}</pre>
|
{% endfor %}</pre>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="empty"><div class="empty__title">Keine Zeilen</div>
|
<div class="empty"><div class="empty__title">Keine Zeilen</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user