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:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user