Ajouter la légende « Comment lire » tirée de VIZ_LEGENDS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@ -532,6 +532,25 @@ function renderPrecLegend() {
|
||||
}
|
||||
}
|
||||
|
||||
// « Comment lire » : phrases de VIZ_LEGENDS (champ reading), servies par
|
||||
// /api/map/meta — même texte que la légende de la planche PDF.
|
||||
function renderReading() {
|
||||
const mode = effectiveMode();
|
||||
const keys = mode === 'precision' ? [precisionKey()]
|
||||
: mode === 'compare' ? [sideLayerKey(STATE.compare.left), sideLayerKey(STATE.compare.right)]
|
||||
: [STATE.main];
|
||||
const seen = new Set();
|
||||
const items = [];
|
||||
for (const k of keys) {
|
||||
if (!k || seen.has(k)) continue;
|
||||
seen.add(k);
|
||||
const info = META.layers.find(l => l.key === k);
|
||||
for (const s of (info && info.reading) || []) items.push('<li>' + esc(s) + '</li>');
|
||||
}
|
||||
el('readingList').innerHTML = items.join('');
|
||||
el('readingBlock').hidden = !items.length;
|
||||
}
|
||||
|
||||
function renderPanel() {
|
||||
const labels = new Map(META.layers.map(l => [l.key, l]));
|
||||
const mains = mainKeys(META);
|
||||
@ -552,6 +571,7 @@ function renderPanel() {
|
||||
el('reliefIntensity').value = STATE.intensity;
|
||||
el('reliefIntensityVal').textContent = fmtIntensity(STATE.intensity);
|
||||
el('intensityRow').hidden = effectiveMode() === 'precision';
|
||||
renderReading();
|
||||
if (!prec) return;
|
||||
renderPrecLegend();
|
||||
const mode = effectiveMode();
|
||||
@ -1310,9 +1330,10 @@ function _sanitizedPanelLS() {
|
||||
if (typeof s.tab === 'string') out.tab = s.tab;
|
||||
if (typeof s.collapsed === 'boolean') out.collapsed = s.collapsed;
|
||||
if (['closed', 'half', 'full'].includes(s.sheet)) out.sheet = s.sheet;
|
||||
if (typeof s.reading === 'boolean') out.reading = s.reading;
|
||||
return out;
|
||||
}
|
||||
const PANEL = Object.assign({ tab: 'view', collapsed: false, sheet: 'half' }, _sanitizedPanelLS());
|
||||
const PANEL = Object.assign({ tab: 'view', collapsed: false, sheet: 'half', reading: false }, _sanitizedPanelLS());
|
||||
// want = onglet choisi (mémorisé) ; tab = onglet affiché. Génération encore
|
||||
// inconnue au démarrage (api/status) : Affichage en attendant, puis l'onglet
|
||||
// choisi revient dès qu'il est proposé.
|
||||
@ -1337,7 +1358,7 @@ function panelVisibleTab() {
|
||||
return PANEL.tab;
|
||||
}
|
||||
|
||||
function panelSave() { lsSet(PANEL_LS, { tab: PANEL.want, collapsed: PANEL.collapsed, sheet: PANEL.sheet }); }
|
||||
function panelSave() { lsSet(PANEL_LS, { tab: PANEL.want, collapsed: PANEL.collapsed, sheet: PANEL.sheet, reading: PANEL.reading }); }
|
||||
|
||||
function panelRender() {
|
||||
const tabs = panelTabs();
|
||||
@ -1389,6 +1410,13 @@ function setSheet(state) {
|
||||
el('panelTabs').querySelectorAll('button[data-tab]').forEach(b =>
|
||||
b.addEventListener('click', () => openTab(b.dataset.tab)));
|
||||
el('panelCollapse').addEventListener('click', () => setCollapsed(!PANEL.collapsed));
|
||||
// État ouvert/fermé du « Comment lire » mémorisé à part (indépendant de
|
||||
// l'onglet actif).
|
||||
el('readingBlock').open = !!PANEL.reading;
|
||||
el('readingBlock').addEventListener('toggle', () => {
|
||||
PANEL.reading = el('readingBlock').open;
|
||||
panelSave();
|
||||
});
|
||||
phoneQuery.addEventListener('change', panelRender);
|
||||
window.addEventListener('resize', panelRender); // hauteur du volet en vh (rotation)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user