Nettoyer le contour de dalle et la référence à la bulle quand on change d'onglet
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@ -336,6 +336,12 @@ def test_ui_tile_popup_and_details_view():
|
|||||||
# Pas de bulle pendant le déplacement du cadre d'export ni un tracé
|
# Pas de bulle pendant le déplacement du cadre d'export ni un tracé
|
||||||
click = _MAP_JS[_MAP_JS.index("map.on('click'"):]
|
click = _MAP_JS[_MAP_JS.index("map.on('click'"):]
|
||||||
assert "genDrawing" in click[:400] and "PRINT.dragging" in click[:400]
|
assert "genDrawing" in click[:400] and "PRINT.dragging" in click[:400]
|
||||||
|
# Changer d'onglet pendant que la fiche est ouverte nettoie le contour
|
||||||
|
# de sélection (pas de fuite de tileSel) : openTab passe par le même
|
||||||
|
# nettoyage que closeTileViews, sans se rappeler lui-même.
|
||||||
|
assert "function hideTileView(" in _MAP_JS
|
||||||
|
open_tab = _MAP_JS[_MAP_JS.index("function openTab("):]
|
||||||
|
assert "hideTileView()" in open_tab[:200]
|
||||||
|
|
||||||
|
|
||||||
def test_defaults_roundtrip(tmp_path, monkeypatch):
|
def test_defaults_roundtrip(tmp_path, monkeypatch):
|
||||||
|
|||||||
@ -601,7 +601,10 @@ function showTilePopup(data, latlng) {
|
|||||||
showTilePopup.data = data;
|
showTilePopup.data = data;
|
||||||
const btn = el('tilePopDetails');
|
const btn = el('tilePopDetails');
|
||||||
if (btn) btn.addEventListener('click', openTileDetails);
|
if (btn) btn.addEventListener('click', openTileDetails);
|
||||||
tilePopup.on('remove', () => { if (el('tileView').hidden && tileSel) { map.removeLayer(tileSel); tileSel = null; } });
|
tilePopup.on('remove', () => {
|
||||||
|
tilePopup = null;
|
||||||
|
if (el('tileView').hidden && tileSel) { map.removeLayer(tileSel); tileSel = null; }
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function openTileDetails() {
|
function openTileDetails() {
|
||||||
@ -616,12 +619,19 @@ function openTileDetails() {
|
|||||||
showTileInfo(data, lastTileQuery);
|
showTileInfo(data, lastTileQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Masque #tileView et retire le contour de sélection, sans toucher aux
|
||||||
|
// onglets (utilisé par closeTileViews et par openTab, qui ne doit pas
|
||||||
|
// se rappeler lui-même via closeTileViews).
|
||||||
|
function hideTileView() {
|
||||||
|
el('tileView').hidden = true;
|
||||||
|
if (tileSel) { map.removeLayer(tileSel); tileSel = null; }
|
||||||
|
}
|
||||||
|
|
||||||
// Ferme la bulle, sinon la fiche ; renvoie true si quelque chose a été fermé.
|
// Ferme la bulle, sinon la fiche ; renvoie true si quelque chose a été fermé.
|
||||||
function closeTileViews() {
|
function closeTileViews() {
|
||||||
if (tilePopup) { tilePopup.remove(); tilePopup = null; return true; }
|
if (tilePopup) { tilePopup.remove(); tilePopup = null; return true; }
|
||||||
if (!el('tileView').hidden) {
|
if (!el('tileView').hidden) {
|
||||||
el('tileView').hidden = true;
|
hideTileView();
|
||||||
if (tileSel) { map.removeLayer(tileSel); tileSel = null; }
|
|
||||||
openTab(tileReturnTab || 'view');
|
openTab(tileReturnTab || 'view');
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1218,7 +1228,7 @@ function panelRender() {
|
|||||||
|
|
||||||
function openTab(tab) {
|
function openTab(tab) {
|
||||||
if (!panelTabs().includes(tab)) return;
|
if (!panelTabs().includes(tab)) return;
|
||||||
el('tileView').hidden = true;
|
if (!el('tileView').hidden) hideTileView();
|
||||||
const before = PANEL.sheet;
|
const before = PANEL.sheet;
|
||||||
// Onglet actif retouché sur téléphone : le volet change de hauteur.
|
// Onglet actif retouché sur téléphone : le volet change de hauteur.
|
||||||
if (isPhone() && tab === PANEL.tab && PANEL.sheet !== 'closed') {
|
if (isPhone() && tab === PANEL.tab && PANEL.sheet !== 'closed') {
|
||||||
|
|||||||
Reference in New Issue
Block a user