Files
einundzwanzig-portal/support/laravel-maps/resources/js/utils/parser.js
HolgerHatGarKeineNode 12847f95f6 huge Laravel 10 upgrade
2023-02-19 20:13:20 +01:00

75 lines
1.5 KiB
JavaScript
Vendored

import {logError} from './helper';
const parseMap = element => JSON.parse(
element.dataset.mapGoogle
|| element.dataset.mapOsm
|| element.dataset.mapBing
|| element.dataset.mapMapquest
|| element.dataset.mapYandex
|| element.dataset.mapMapkit
);
const parseService = element => {
const {key, type} = JSON.parse(element.dataset.mapService);
return {
key,
type,
}
};
const parseMarkers = element => {
const markers = JSON.parse(element.dataset.mapMarkers) || [];
return markers.map(marker => {
const lat = parseNumberFloat(marker.lat);
const lng = parseNumberFloat(marker.lng);
const {title, url, popup, icon, icon_size, icon_anchor} = marker;
return {
title,
lat,
lng,
url,
popup,
icon,
iconSize: icon_size || marker.iconSize,
iconAnchor: icon_anchor || marker.iconAnchor,
};
});
};
const parseNumberFloat = number => {
return typeof number === 'string'
? parseFloat(number)
: number;
};
const parseNumberInt = number => {
return typeof number === 'string'
? parseFloat(number)
: number;
};
export default {
map(element) {
try {
const map = parseMap(element);
const lat = parseNumberFloat(map.lat);
const lng = parseNumberFloat(map.lng);
const zoom = parseNumberInt(map.zoom);
const service = parseService(element);
const markers = parseMarkers(element);
return {
lat,
lng,
zoom,
service,
markers,
};
} catch (e) {
logError(e);
}
},
}