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);