Fix round 2 : fermer le cadre d'export sous la fiche détaillée en toutes circonstances, ne pas la recadrer au retour, réarmer BOOTSTRAPPING sur échec
panelVisibleTab() renvoie null tant que la fiche détaillée est ouverte, quel que soit ce qui redéclenche panelRender (grip, redimensionnement, changement phoneQuery…) : le cadre d'export ne rouvre plus derrière elle. Rétablir l'onglet Export après un retour (restoreTabAfterDetails / M5) repose désormais le cadre sans recadrer la vue ni le recentrer (nouveau drapeau RESTORING_TAB, distingué d'une ouverture explicite par l'utilisateur). BOOTSTRAPPING est aussi réarmé quand /api/map/meta échoue, pour qu'une ouverture explicite ultérieure de l'onglet recadre bien la vue. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@ -522,21 +522,45 @@ def test_ui_phone_return_and_escape_keep_sheet_height():
|
||||
def test_ui_saved_print_tab_does_not_rezoom_shared_link():
|
||||
"""L'onglet Export mémorisé ne recadre pas la vue au tout premier rendu du
|
||||
panneau (sinon il écrase le zoom d'un lien partagé ou de l'URL initiale) :
|
||||
BOOTSTRAPPING passe à faux juste après ce premier rendu."""
|
||||
BOOTSTRAPPING passe à faux juste après CE premier rendu — succès ET échec
|
||||
du chargement de /api/map/meta (sinon un serveur injoignable au démarrage
|
||||
bloque BOOTSTRAPPING à vrai pour toujours : plus aucun recadrage, même
|
||||
après une ouverture explicite ultérieure de l'onglet)."""
|
||||
from lidar_pipeline.mapui import _MAP_JS
|
||||
assert "let BOOTSTRAPPING = true;" in _MAP_JS
|
||||
assert "printSetOpen(e.detail.visible === 'print', !BOOTSTRAPPING);" in _MAP_JS
|
||||
boot = _MAP_JS[_MAP_JS.index("panelRender();\n BOOTSTRAPPING = false;"):]
|
||||
assert boot.startswith("panelRender();\n BOOTSTRAPPING = false;")
|
||||
assert "printSetOpen(e.detail.visible === 'print', !BOOTSTRAPPING && !RESTORING_TAB);" in _MAP_JS
|
||||
then_branch = _MAP_JS[_MAP_JS.index("panelRender();\n BOOTSTRAPPING = false;"):]
|
||||
assert then_branch.startswith("panelRender();\n BOOTSTRAPPING = false;")
|
||||
catch_branch = _MAP_JS[_MAP_JS.index(".catch(() => {\n toast('Serveur de tuiles injoignable."):]
|
||||
assert "BOOTSTRAPPING = false;" in catch_branch[:400]
|
||||
|
||||
|
||||
def test_ui_details_view_hides_print_frame():
|
||||
"""Ouvrir la fiche détaillée pendant que l'onglet Export est affiché
|
||||
referme le cadre d'export (sinon cadre + poignée restent visibles
|
||||
derrière la fiche)."""
|
||||
derrière la fiche) — et le reste tant que la fiche est ouverte, quel que
|
||||
soit ce qui redéclenche un rendu du panneau (grip, redimensionnement,
|
||||
changement phoneQuery…) puisque panelVisibleTab() renvoie null tant que
|
||||
#tileView n'est pas masqué."""
|
||||
from lidar_pipeline.mapui import _MAP_JS
|
||||
open_details = _MAP_JS[_MAP_JS.index("function openTileDetails("):]
|
||||
assert "printSetOpen(false);" in open_details[:600]
|
||||
visible_tab = _MAP_JS[_MAP_JS.index("function panelVisibleTab("):]
|
||||
assert "if (!el('tileView').hidden) return null;" in visible_tab[:300]
|
||||
|
||||
|
||||
def test_ui_restoring_tab_does_not_refit_or_recentre_print_frame():
|
||||
"""Rétablir l'onglet Export (retour de la fiche détaillée) rouvre le
|
||||
cadre là où il était, sans recadrer la vue ni le recentrer sur l'écran —
|
||||
au contraire d'une ouverture explicite de l'onglet par l'utilisateur."""
|
||||
from lidar_pipeline.mapui import _MAP_JS
|
||||
assert "let RESTORING_TAB = false;" in _MAP_JS
|
||||
restore = _MAP_JS[_MAP_JS.index("function restoreTabAfterDetails("):]
|
||||
assert "RESTORING_TAB = true;" in restore[:400]
|
||||
assert "panelRender();\n RESTORING_TAB = false;" in restore[:400]
|
||||
open_fn = _MAP_JS[_MAP_JS.index("function printSetOpen("):]
|
||||
assert "explicit && !map.getBounds().contains(PRINT.center)" in open_fn[:700]
|
||||
assert "printRefreshFrame(!!explicit);" in open_fn[:700]
|
||||
|
||||
|
||||
def test_ui_colors_are_tokenised():
|
||||
|
||||
Reference in New Issue
Block a user