Panéau et couches par défaut limités aux 4 couches conservées

La carte ne conserve que Pente, Aspect, Openness positive et Rugosité :
PANEL_VIZ est restreint à DEFAULT_LAYERS, le sélecteur de génération
suit le panneau, et ces 4 couches sont allumées par défaut via
default_layers (index.html + index_tiles.json). Les autres couches ne
sont plus ni affichées ni proposées.
This commit is contained in:
Antoine Jacquin
2026-09-13 21:44:56 +02:00
parent e2533bac48
commit f79608a92f
2 changed files with 77 additions and 44 deletions

View File

@ -237,17 +237,18 @@ def test_build_index_generates_html(tmp_path):
assert (assets / "app.css").read_text(encoding='utf-8').startswith('/*')
app_js = (assets / "app.js").read_text(encoding='utf-8')
assert "Couches" in app_js or "layers" in app_js
# Barre de génération : sélecteur proposant TOUTES les couches du registre
# (valeurs = noms d'étapes --only), y compris celles absentes du panneau
# (svf, hillshade) pour pouvoir les générer. La sélection est envoyée à
# /api/preview (détection des tuiles incomplètes) comme à /api/generate.
# Barre de génération : sélecteur restreint au panneau (PANEL_VIZ =
# DEFAULT_LAYERS ; valeurs = noms d'étapes --only). Les couches hors
# panneau (svf, hillshade, wavelet) ne sont plus proposées.
assert 'id="genViz"' in content
assert 'value="wavelet"' in content
assert 'value="aniso_open"' not in content
assert 'value="pos_open"' in content
assert 'value="slope"' in content
assert 'value="svf"' in content
assert 'value="hillshade"' in content
assert 'value="pos_open"' in content
assert 'value="aspect"' in content
assert 'value="roughness"' in content
assert 'value="wavelet"' not in content
assert 'value="svf"' not in content
assert 'value="hillshade"' not in content
assert 'value="aniso_open"' not in content
assert "genViz" in app_js and "viz: selectedGenViz()" in app_js
assert app_js.count("selectedGenViz()") >= 3 # définition + preview + generate
# Adoption du dernier run au chargement (redémarrage du serveur) :
@ -347,34 +348,34 @@ def test_subtiles_cover_all_layers(tmp_path):
assert t['viz'][viz]['full'].startswith("index_subtiles/"), viz
def test_panel_offers_all_layers():
"""Le panneau n'est plus restreint : toutes les couches connues sont proposées."""
from lidar_pipeline.index import PANEL_VIZ, VIZ_LABELS, KEYWORD_TO_STEP
def test_panel_restricted_to_kept_layers():
"""Le panneau est restreint aux couches conservées (DEFAULT_LAYERS)."""
from lidar_pipeline.index import PANEL_VIZ, DEFAULT_LAYERS, KEYWORD_TO_STEP
from lidar_pipeline.pipeline import VIZ_STEPS
assert PANEL_VIZ is None
# Chaque couche connue du registre correspond à une étape --only valide
assert PANEL_VIZ == DEFAULT_LAYERS
# Chaque couche conservée correspond à une étape --only valide
steps = {name for name, _ in VIZ_STEPS}
assert set(VIZ_LABELS)
for key in VIZ_LABELS:
for key in PANEL_VIZ:
assert KEYWORD_TO_STEP.get(key, key) in steps
def test_panel_selection_lists_full_registry():
"""Le panneau propose le registre complet, même sans données sur disque.
def test_panel_selection_lists_kept_layers():
"""Le panneau propose uniquement les couches conservées (PANEL_VIZ).
Une installation neuve (ou une couche jamais générée) doit quand même
afficher toutes les couches connues ; les couches historiques présentes
sur disque restent proposées (libellé = clé brute).
Même sans données sur disque, le panneau affiche les couches conservées ;
une couche absente du panneau n'est plus proposée, même présente sur
disque.
"""
from lidar_pipeline.index import _panel_selection, VIZ_LABELS
from lidar_pipeline.index import _panel_selection, PANEL_VIZ
ordered, default = _panel_selection({'aspect'})
assert set(VIZ_LABELS) <= set(ordered)
assert set(ordered) == set(PANEL_VIZ)
assert default == 'aspect'
ordered, default = _panel_selection(set())
assert set(VIZ_LABELS) <= set(ordered)
assert set(ordered) == set(PANEL_VIZ)
assert default # toujours une couche par défaut
# Une couche présente sur disque mais hors panneau est exclue
ordered, default = _panel_selection({'aniso_open'})
assert 'aniso_open' in ordered
assert 'aniso_open' not in ordered
def test_build_index_merges_cross_resolution_viz(tmp_path):