forked from FroSteel/Planification
v2026.5.22 — Stabilité popups
This commit is contained in:
@@ -6843,6 +6843,15 @@ function _softUnpinPopup(el) {
|
||||
_ensureDockCloseAllBtn();
|
||||
}
|
||||
|
||||
// v2026.5.22 : si le tooltip hover est actuellement affiché pour la même
|
||||
// intervention que celle qu'on désépingle, il faut regénérer son HTML pour
|
||||
// que l'icône passe de 📍 (active rouge) à 📌 (non active) — sinon l'user
|
||||
// voit l'ancienne icône et croit qu'il est toujours épinglé.
|
||||
const tip = tooltipEl();
|
||||
if (tip && tip.classList.contains("visible") && state.currentTooltipIv) {
|
||||
tip.innerHTML = buildTooltipHTML(state.currentTooltipIv);
|
||||
}
|
||||
|
||||
// Helper qui joue l'animation de sortie puis supprime le DOM
|
||||
const animateAndRemove = () => {
|
||||
el.classList.add("unpinning");
|
||||
@@ -7675,34 +7684,14 @@ function bindTooltipInteractions() {
|
||||
e.preventDefault();
|
||||
const action = btn.dataset.action;
|
||||
if (action === "pin") {
|
||||
// v2026.5.21 : toggle — si déjà épinglée, désépingle ; sinon épingle
|
||||
// v2026.5.22 : clic sur 📌/📍 dans le tooltip hover = TOUJOURS réépingler
|
||||
// à la position actuelle. Si un popup existe déjà pour cette iv+date,
|
||||
// il est supprimé avant d'en créer un nouveau à côté de la carte survolée.
|
||||
// (La suppression de l'ancien est faite dans pinTooltip() qui gère
|
||||
// l'unicité actionId+date — v2026.5.21.)
|
||||
// Pour désépingler : bouton 📍 dans la topbar du popup, double-Ctrl, ou Échap.
|
||||
if (state.currentTooltipIv) {
|
||||
const iv = state.currentTooltipIv;
|
||||
const pinState = _getPinStateForIv(iv);
|
||||
if (pinState.isPinned && pinState.popup) {
|
||||
// Désépingle
|
||||
const idx = pinnedPopups.findIndex(p => p.el === pinState.popup);
|
||||
if (idx >= 0) pinnedPopups.splice(idx, 1);
|
||||
if (pinState.popup._linkedPill) {
|
||||
try { pinState.popup._linkedPill.remove(); } catch (err) {}
|
||||
}
|
||||
try { pinState.popup.remove(); } catch (err) {}
|
||||
const dock = document.getElementById("pinned-popups-dock");
|
||||
if (dock && dock.querySelectorAll(".pinned-popup-dock-pill").length === 0) {
|
||||
dock.classList.remove("visible");
|
||||
const closeAllBtn = document.getElementById("pinned-popups-close-all");
|
||||
if (closeAllBtn) closeAllBtn.remove();
|
||||
} else {
|
||||
_ensureDockCloseAllBtn();
|
||||
}
|
||||
// Mettre à jour le tooltip (📍 → 📌)
|
||||
const tip = tooltipEl();
|
||||
if (tip && tip.classList.contains("visible")) {
|
||||
tip.innerHTML = buildTooltipHTML(iv);
|
||||
}
|
||||
} else {
|
||||
pinTooltip();
|
||||
}
|
||||
pinTooltip();
|
||||
}
|
||||
} else if (action === "reload") {
|
||||
// v4.1.14 : recharger uniquement l'intervention actuellement affichée
|
||||
|
||||
Reference in New Issue
Block a user