Préréglage carte par défaut et serve-webapp.sh compatible Traefik
This commit is contained in:
@ -205,19 +205,23 @@ VIZ_LEGENDS = {
|
||||
|
||||
# Couches activées par défaut à l'ouverture de la carte : seules celles-ci
|
||||
# sont allumées, toutes les autres sont désactivées (mais restent accessibles
|
||||
# via le panneau). Ordre = pile basse → haute.
|
||||
DEFAULT_LAYERS = ('slope', 'aspect', 'positive_openness')
|
||||
# via le panneau). Ordre = pile basse → haute : une couche opaque (opacité 1)
|
||||
# doit rester en bas pour ne pas masquer les autres.
|
||||
DEFAULT_LAYERS = ('positive_openness', 'aspect')
|
||||
|
||||
# Opacité par défaut des couches allumées (0–1) ; les absentes restent à 1.
|
||||
DEFAULT_OPACITY = {'aspect': 0.6}
|
||||
|
||||
# Couche « principale » (mise en avant ; index_tiles.json + affichage en
|
||||
# direct de la webapp).
|
||||
DEFAULT_VIZ = DEFAULT_LAYERS[0]
|
||||
|
||||
# Restriction du panneau de couches : seule la sélection DEFAULT_LAYERS est
|
||||
# Restriction du panneau de couches : seule la sélection ci-dessous est
|
||||
# proposée (couches conservées ; les autres ne sont plus ni affichées ni
|
||||
# référencées). None = toutes les visualisations présentes sur disque.
|
||||
# Le sélecteur de génération/régénération est piloté par le même registre
|
||||
# (voir _render_html).
|
||||
PANEL_VIZ = DEFAULT_LAYERS
|
||||
# (voir _render_html). La pente y reste proposée mais éteinte par défaut.
|
||||
PANEL_VIZ = ('slope', 'aspect', 'positive_openness')
|
||||
|
||||
# Correspondance mot-clé de fichier de sortie → nom d'étape --only du pipeline
|
||||
# (les trois visualisations dont le nom de sortie diffère du nom d'étape,
|
||||
@ -1118,6 +1122,7 @@ def build_index(output_dir, output_format='avif'):
|
||||
'viz_meta': {k: {'label': VIZ_LABELS.get(k, k)} for k in ordered_viz},
|
||||
'stats': {'default_viz': default_viz,
|
||||
'default_layers': default_layers_present(all_viz_keys),
|
||||
'default_opacity': dict(DEFAULT_OPACITY),
|
||||
'n_tiles': len(display_tiles)},
|
||||
}, ensure_ascii=False), encoding='utf-8')
|
||||
|
||||
@ -1233,6 +1238,7 @@ def _render_html(tiles, global_bbox, all_viz_keys, output_format):
|
||||
stats_json = _json_for_script(
|
||||
{'default_viz': default_viz,
|
||||
'default_layers': default_layers_present(all_viz_keys),
|
||||
'default_opacity': dict(DEFAULT_OPACITY),
|
||||
'n_tiles': len(tiles)},
|
||||
)
|
||||
|
||||
@ -1930,7 +1936,7 @@ _APP_JS = r"""'use strict';
|
||||
// --- Données embarquées par index.py ---
|
||||
// TILES : tuiles affichables (corners WGS84, viz {thumb, full}, meta)
|
||||
// VIZ_META : {clé: {label}} des visualisations disponibles
|
||||
// STATS : {default_viz, n_tiles}
|
||||
// STATS : {default_viz, default_layers, default_opacity, n_tiles}
|
||||
|
||||
const viewport = document.getElementById('viewport');
|
||||
|
||||
@ -1998,9 +2004,26 @@ function defaultLayers() {
|
||||
? STATS.default_layers
|
||||
: ((STATS.default_viz && VIZ_META[STATS.default_viz])
|
||||
? [STATS.default_viz] : [order[0]]);
|
||||
const onSet = new Set(list.filter(k => VIZ_META[k]));
|
||||
const defOrder = list.filter(k => VIZ_META[k]);
|
||||
// La pile respecte l'ordre de default_layers (bas → haut) : une couche
|
||||
// opaque (opacité 1) doit rester sous les semi-transparentes.
|
||||
for (let i = 1; i < defOrder.length; i++) {
|
||||
const bi = order.indexOf(defOrder[i - 1]), ai = order.indexOf(defOrder[i]);
|
||||
if (bi >= 0 && ai >= 0 && bi > ai) {
|
||||
order.splice(bi, 1);
|
||||
order.splice(order.indexOf(defOrder[i]), 0, defOrder[i - 1]);
|
||||
}
|
||||
}
|
||||
// Opacités par défaut (STATS.default_opacity) ; absentes → 1.
|
||||
const defOp = (STATS.default_opacity && typeof STATS.default_opacity === 'object')
|
||||
? STATS.default_opacity : {};
|
||||
const onSet = new Set(defOrder);
|
||||
const on = {}, opacity = {};
|
||||
for (const k of order) { on[k] = onSet.has(k); opacity[k] = 1; }
|
||||
for (const k of order) {
|
||||
on[k] = onSet.has(k);
|
||||
const op = Number(defOp[k]);
|
||||
opacity[k] = Number.isNaN(op) ? 1 : Math.min(1, Math.max(0, op));
|
||||
}
|
||||
return { order, on, opacity, osm: { on: true, opacity: 0.85, dark: true } };
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user