54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
import { scenarios } from './scenarios.js';
|
|
|
|
export function init() {
|
|
const showButton = document.getElementById('show-dialog'),
|
|
mapDialog = document.getElementById('map-dialog'),
|
|
selectEl = mapDialog.querySelector('select'),
|
|
confirmBtn = mapDialog.querySelector('#confirm-btn');
|
|
|
|
Object.keys(scenarios).reverse().forEach(scenario => {
|
|
const option = document.createElement('option');
|
|
option.setAttribute('value', scenario);
|
|
option.textContent = scenarios[scenario].title;
|
|
selectEl.prepend(option);
|
|
});
|
|
|
|
return {
|
|
selectCurrentOptionOnPageLoad() {
|
|
mapDialog.querySelectorAll('option').forEach((option, index) =>
|
|
option.selected = option.value === localStorage.getItem('map') || index === 0
|
|
);
|
|
|
|
return this;
|
|
},
|
|
|
|
showOnClick() {
|
|
showButton.addEventListener('click', () => {
|
|
mapDialog.showModal();
|
|
});
|
|
|
|
return this;
|
|
},
|
|
|
|
updateValueOnSelection() {
|
|
selectEl.addEventListener('change', () => {
|
|
confirmBtn.value = selectEl.value;
|
|
});
|
|
|
|
return this;
|
|
},
|
|
|
|
changeMapOnConfirm(loadFn) {
|
|
confirmBtn.addEventListener('click', e => {
|
|
e.preventDefault();
|
|
localStorage.removeItem('pan-zoom');
|
|
localStorage.setItem('map', selectEl.value);
|
|
loadFn(scenarios[selectEl.value]?.hashed || `assets/images/${selectEl.value}.svg`);
|
|
mapDialog.close();
|
|
});
|
|
}
|
|
};
|
|
}
|
|
|
|
export const defaultMap = scenarios.sideShow;
|