refactor - change layers

This commit is contained in:
Azgaar 2024-09-10 12:39:29 +02:00
parent 3f863a5ca3
commit aa8c3ab5fe
3 changed files with 26 additions and 8 deletions

View file

@ -439,7 +439,7 @@
<select <select
data-tip="Select a map layers preset" data-tip="Select a map layers preset"
id="layersPreset" id="layersPreset"
onchange="changeLayersPreset(this.value)" onchange="handleLayersPresetChange(this.value)"
style="width: 45%" style="width: 45%"
> >
<option value="political" selected>Political map</option> <option value="political" selected>Political map</option>

View file

@ -315,6 +315,7 @@ async function generateMapOnLoad() {
await applyStyleOnLoad(); // apply previously selected default or custom style await applyStyleOnLoad(); // apply previously selected default or custom style
await generate(); // generate map await generate(); // generate map
applyLayersPreset(); // apply saved layers preset and reder layers applyLayersPreset(); // apply saved layers preset and reder layers
drawLayers();
fitMapToScreen(); fitMapToScreen();
focusOn(); // focus on point, cell or burg from MFCG based on url searchParams focusOn(); // focus on point, cell or burg from MFCG based on url searchParams
} }

View file

@ -101,20 +101,37 @@ function restoreCustomPresets() {
// run on map generation // run on map generation
function applyLayersPreset() { function applyLayersPreset() {
const preset = localStorage.getItem("preset") || byId("layersPreset").value; const preset = localStorage.getItem("preset") || byId("layersPreset").value;
changeLayersPreset(preset); setLayersPreset(preset);
const layers = presets[preset]; // layers to be turned on
document.querySelectorAll("#mapLayers > li").forEach(el => {
const shouldBeOn = layers.includes(el.id);
if (shouldBeOn) el.classList.remove("buttonoff");
else el.classList.add("buttonoff");
});
} }
// toggle layers on preset change function setLayersPreset(preset) {
function changeLayersPreset(preset) { byId("layersPreset").value = preset;
const layers = presets[preset]; // layers to be turned on
layersPreset.value = preset;
localStorage.setItem("preset", preset); localStorage.setItem("preset", preset);
const isDefault = getDefaultPresets()[preset]; const isDefault = getDefaultPresets()[preset];
byId("removePresetButton").style.display = isDefault ? "none" : "inline-block"; byId("removePresetButton").style.display = isDefault ? "none" : "inline-block";
byId("savePresetButton").style.display = "none"; byId("savePresetButton").style.display = "none";
}
// toggle layers on manual preset change
function handleLayersPresetChange(preset) {
setLayersPreset(preset);
const layers = presets[preset]; // layers to be turned on
document.querySelectorAll("#mapLayers > li").forEach(el => {
const isOn = layerIsOn(el.id);
const shouldBeOn = layers.includes(el.id);
if (shouldBeOn && !isOn) el.click();
if (isOn && !shouldBeOn) el.click();
});
document.querySelectorAll("#mapLayers > li").forEach(e => (e.className = layers.includes(e.id) ? null : "buttonoff"));
drawLayers();
if (byId("canvas3d")) setTimeout(() => ThreeD.update(), 400); if (byId("canvas3d")) setTimeout(() => ThreeD.update(), 400);
} }