Corriger la revue finale : onglets non tronqués, fiche de dalle à jour, clics et lien fiables

Onglet Dalle libellé fixe (col·row dans le title), Affichage/Export PDF/
Génération raccourcis pour tenir dans le panneau ; fiche de dalle rechargée
après un run sans désélection et dès que /api/status révèle le bouton
Régénérer ; double-clic et réponses en retard ignorés sur la sélection ;
curseur d'intensité visible hors mode précision ; lien complet sans &I remis
à 1× ; applyCompareClip sort tôt hors mode Comparer ; docs/MAPS.md et
AGENTS.md à jour (modes Comparer, &I=, « Comment lire »).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Antoine Jacquin
2026-09-27 20:56:19 +02:00
parent c10e34f3b4
commit bae16923fc
5 changed files with 171 additions and 33 deletions

View File

@ -160,25 +160,39 @@ chacun, ou la touche **P** pour passer au suivant :
- **Précision** — la densité seule, en 16 gris (échelle log fixe : niveau k à
partir de 0,25 × 2^(k/2) pts/m², noir ≤ 0,35 ou aucun point, blanc ≥ 45) ;
se lit comme une carte de fiabilité géométrique ;
- **Les deux** — la précision en « produit » (`mix-blend-mode: multiply`) sur
le relief, opacité réglable (60 % par défaut) : les zones où le relief est
interpolé s'assombrissent sans masquer le relief.
- **Comparer** — une barre glissante (souris ou doigt) sépare deux couches
choisies dans deux menus (relief, précision ou fond OSM seul) de part et
d'autre du curseur ; la même couche des deux côtés n'y ajoute aucune
découpe.
L'onglet Affichage porte aussi une **intensité du relief** (curseur 0,5×–2×,
1× par défaut) : un contraste de confort posé sur le conteneur de la couche
affichée (`contrast()` CSS), mémorisé et partagé dans le lien (`&I=`, écrit
seulement si ≠ 1×) mais jamais figé comme défaut serveur ni appliqué au PDF
exporté (qui garde le rendu standard). Un bloc **Comment lire la carte**,
repliable, reprend pour la ou les couches affichées le texte de lecture de
`VIZ_LEGENDS` (aussi servi par `/api/map/meta` et le TileJSON).
La légende de la précision (16 paliers, info-bulle en pts/m² sur chaque
palier) s'affiche dès que la précision est visible. Les couches LiDAR vivent
dans un conteneur **isolé** (`isolation: isolate`) : le produit n'agit que sur
le relief, jamais sur le fond de carte.
palier) s'affiche dès que la précision est visible, seule ou d'un côté de la
barre Comparer. Les couches LiDAR vivent dans un conteneur **isolé**
(`isolation: isolate`) : la barre ne découpe que les calques LiDAR, jamais le
fond de carte.
Le lien de partage transporte la couche principale, le mode et l'opacité :
`#z/lat/lng&M=relief_oriente&P=both:60&B=1:85:1`. Les anciens liens de la pile
(`&L=…`) s'ouvrent sans erreur sur l'état courant.
Le lien de partage transporte la couche principale, le mode, la comparaison et
l'intensité :
`#z/lat/lng&M=relief_oriente&P=compare&C=relief:precision:30&I=1.4&B=1:85:1`
(`&C=gauche:droite:position%` seulement en mode Comparer). Les anciens liens
de la pile (`&L=…`) et de l'ancien mode « les deux » (`&P=both:opacité`,
opacité alors ignorée) s'ouvrent sans erreur, en mode relief.
### Figer la configuration
Le bouton **★ Définir par défaut** enregistre l'affichage courant — couche
principale, mode, opacité de la précision, fond de carte — dans
`output/.map-defaults.json`. Tout navigateur sans réglage local part alors de
cette configuration ; **↺ Réinitialiser** oublie l'état local et y revient.
principale, mode, fond de carte — dans `output/.map-defaults.json` (jamais
l'intensité, réglage de confort propre à chaque navigateur). Tout navigateur
sans réglage local part alors de cette configuration ; **↺ Réinitialiser**
oublie l'état local et y revient.
```bash
curl http://localhost:8975/api/map/defaults # configuration servie
@ -186,11 +200,10 @@ curl -X DELETE http://localhost:8975/api/map/defaults # retour au registre
```
Sans fichier enregistré, les défauts viennent du registre du pipeline
(`DEFAULT_VIZ`, `PRECISION_VIZ`, `DEFAULT_VIEW_MODE`,
`DEFAULT_PRECISION_OPACITY` dans `index.py`). Les valeurs reçues sont
filtrées : couche inconnue (ou la précision elle-même) refusée comme
principale, mode validé, opacités bornées à 0–1. Un fichier de l'ancienne pile
(`order`/`on`/`blend`) est ignoré, sauf le fond.
(`DEFAULT_VIZ`, `PRECISION_VIZ`, `DEFAULT_VIEW_MODE` dans `index.py`). Les
valeurs reçues sont filtrées : couche inconnue (ou la précision elle-même)
refusée comme principale, mode validé, opacité du fond bornée à 0–1. Un
fichier de l'ancienne pile (`order`/`on`/`blend`) est ignoré, sauf le fond.
## Export PDF (planche d'impression terrain)
@ -203,7 +216,7 @@ précédente si elle est encore visible), la carte zoome pour le montrer en
entier au-dessus du panneau, puis on navigue librement sans qu'il bouge. On le
déplace en faisant glisser sa **poignée ✥** (souris ou doigt) ; au relâchement,
la géométrie Lambert 93 exacte est recalculée (`GET /api/export/frame`) — un
relâchement suivi d'un clic immédiat n'ouvre pas la bulle de dalle (garde de
relâchement suivi d'un clic immédiat ne sélectionne pas de dalle (garde de
300 ms). « ⌖ Centrer ici » le ramène au centre de la vue, « ⤢ Voir le cadre »
zoome dessus ; changer de format, d'orientation ou d'échelle recadre la vue.
Les réglages et la position du cadre sont mémorisés dans `localStorage` du