From 50ebbcdf69693ba9543c5345c46e9c0a3aa3748e Mon Sep 17 00:00:00 2001 From: "m0@nas" Date: Tue, 15 Sep 2026 21:34:40 +0200 Subject: [PATCH] Zeitleiste: Karte bleibt innerhalb von main, keine zweite Bildlaufleiste Die Karte klappte nur nach oben, wenn sie aus dem Fenster ragte. main.app-main hat bei AdminLTE overflow:auto bei Inhaltshoehe - ragte die Karte unten aus main, bekam main eine eigene Bildlaufleiste. Co-Authored-By: Claude Opus 5 --- js/solar/zeitleiste.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/js/solar/zeitleiste.js b/js/solar/zeitleiste.js index 706deae..2306b35 100644 --- a/js/solar/zeitleiste.js +++ b/js/solar/zeitleiste.js @@ -508,13 +508,21 @@ function zlKarteOeffnen(anker, id) { ziel.appendChild(karte); // Unter den Eintrag, sonst darüber; waagerecht in der Karte der Zeitleiste halten. + // Unten begrenzt nicht nur das Fenster, sondern auch main.app-main: AdminLTE + // gibt ihm overflow:auto bei Inhaltshöhe. Ragte die Karte unten aus main, + // bekam main eine eigene, zweite Bildlaufleiste - auch wenn die Karte + // noch ganz im Fenster lag. const hoch = ziel.getBoundingClientRect(); const r = anker.getBoundingClientRect(); const breit = karte.offsetWidth, hoehe = karte.offsetHeight; let links = r.left - hoch.left; links = Math.max(0, Math.min(links, ziel.clientWidth - breit)); + const huelle = ziel.closest("main"); + const unten = Math.min(window.innerHeight, huelle ? huelle.getBoundingClientRect().bottom : Infinity); + const obenFrei = Math.max(0, huelle ? huelle.getBoundingClientRect().top : 0); + const platzUnten = unten - r.bottom - 12, platzOben = r.top - obenFrei - 6; let oben = r.bottom - hoch.top + 6; - if (r.bottom + hoehe + 12 > window.innerHeight && r.top - hoehe - 6 > 0) oben = r.top - hoch.top - hoehe - 6; + if (hoehe > platzUnten && (hoehe <= platzOben || platzOben > platzUnten)) oben = r.top - hoch.top - hoehe - 6; karte.style.left = links + "px"; karte.style.top = oben + "px"; zlKetteHervorheben(a.id, true);