Revert "Update javascript dependencies and add webpack-bundle-analyzer"
This commit is contained in:
parent
d4dbc44dac
commit
eddd59e554
7 changed files with 1316 additions and 1870 deletions
|
@ -1,38 +1,47 @@
|
|||
import { initMap, drawPolygons, addFreeDrawEvents } from '../../shared/carte';
|
||||
|
||||
async function initialize() {
|
||||
const elements = document.querySelectorAll('.carte');
|
||||
|
||||
if (elements.length) {
|
||||
const editable = [...elements].find(element =>
|
||||
element.classList.contains('edit')
|
||||
);
|
||||
await loadLeaflet(editable);
|
||||
|
||||
for (let element of elements) {
|
||||
loadAndDrawMap(element);
|
||||
diplayMap(element, null, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function loadAndDrawMap(element) {
|
||||
const data = JSON.parse(element.dataset.geo);
|
||||
const editable = element.classList.contains('edit');
|
||||
// We load leaflet dynamically, ramda and freedraw and assign them to globals.
|
||||
// Latest freedraw version build needs globals.
|
||||
async function loadLeaflet(editable) {
|
||||
window.L = await import('leaflet').then(({ default: L }) => L);
|
||||
|
||||
if (editable) {
|
||||
const { drawEditableMap } = await import('../../shared/carte-editor');
|
||||
|
||||
drawEditableMap(element, data);
|
||||
} else {
|
||||
const { drawMap } = await import('../../shared/carte');
|
||||
|
||||
drawMap(element, data);
|
||||
window.R = await import('ramda').then(({ default: R }) => R);
|
||||
await import('leaflet-freedraw/dist/leaflet-freedraw.web.js');
|
||||
}
|
||||
}
|
||||
|
||||
async function loadAndRedrawMap(element, data) {
|
||||
const { redrawMap } = await import('../../shared/carte-editor');
|
||||
function diplayMap(element, data, initial = false) {
|
||||
data = data || JSON.parse(element.dataset.geo);
|
||||
const editable = element.classList.contains('edit');
|
||||
const map = initMap(element, data.position, editable);
|
||||
|
||||
redrawMap(element, data);
|
||||
drawPolygons(map, data, { initial, editable });
|
||||
|
||||
if (initial && editable) {
|
||||
const input = element.parentElement.querySelector('input[data-remote]');
|
||||
addFreeDrawEvents(map, input);
|
||||
}
|
||||
}
|
||||
|
||||
addEventListener('turbolinks:load', initialize);
|
||||
|
||||
addEventListener('carte:update', ({ detail: { selector, data } }) => {
|
||||
const element = document.querySelector(selector);
|
||||
|
||||
loadAndRedrawMap(element, data);
|
||||
diplayMap(element, data);
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue