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 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 21:34:40 +02:00
co-authored by Claude Opus 5
parent 3aae289a8c
commit 50ebbcdf69
+9 -1
View File
@@ -508,13 +508,21 @@ function zlKarteOeffnen(anker, id) {
ziel.appendChild(karte); ziel.appendChild(karte);
// Unter den Eintrag, sonst darüber; waagerecht in der Karte der Zeitleiste halten. // 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 hoch = ziel.getBoundingClientRect();
const r = anker.getBoundingClientRect(); const r = anker.getBoundingClientRect();
const breit = karte.offsetWidth, hoehe = karte.offsetHeight; const breit = karte.offsetWidth, hoehe = karte.offsetHeight;
let links = r.left - hoch.left; let links = r.left - hoch.left;
links = Math.max(0, Math.min(links, ziel.clientWidth - breit)); 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; 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.left = links + "px";
karte.style.top = oben + "px"; karte.style.top = oben + "px";
zlKetteHervorheben(a.id, true); zlKetteHervorheben(a.id, true);