Filtrer les couches retirées du flux /api/tiles et de la fusion en direct

Au rechargement de la page, l'index obsolète du worker (16 couches)
polluait le /api/tiles fusionné et mergeTilesData réajoutait les couches
retirées au menu. viz_meta est désormais filtré aux couches du panneau
(PANEL_VIZ) côté serveur, et le panneau client est figé au chargement
(clés VIZ_META initiales) : aucun flux ne peut réintroduire de couche
hors panneau, même avec un index distant périmé.
This commit is contained in:
Antoine Jacquin
2026-09-13 23:06:08 +02:00
parent f79608a92f
commit 0d3aa41008
3 changed files with 28 additions and 5 deletions

View File

@ -3263,6 +3263,10 @@ function finishRunningTasks(d) {
// l'<img> se recharge et le nouveau rendu remplace l'ancien à l'écran —
// cache navigateur compris.
let liveTilesStamp = null;
// Le panneau est figé au chargement (VIZ_META initial) : le flux /api/tiles
// fusionne l'index du worker, qui peut encore proposer des couches retirées
// (index obsolète) — on n'ajoute au menu que des clés déjà connues.
const PANEL_KEYS = new Set(Object.keys(VIZ_META));
function mergeTilesData(data) {
if (!data || !Array.isArray(data.tiles)) return;
const byKey = new Map();
@ -3296,7 +3300,7 @@ function mergeTilesData(data) {
let metaChanged = false;
if (data.viz_meta) {
for (const k of Object.keys(data.viz_meta)) {
if (VIZ_META[k]) continue;
if (!PANEL_KEYS.has(k) || VIZ_META[k]) continue;
VIZ_META[k] = data.viz_meta[k];
if (!state.layers.order.includes(k)) {
state.layers.order.push(k);