121 lines
5 KiB
HTML
121 lines
5 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<!-- WARNING: index.html serves as a template. If you want to change something, change it there -->
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<meta charset="UTF-8">
|
||
|
<meta content="width=device-width, initial-scale=1.0, user-scalable=no" name="viewport">
|
||
|
<link href="./css/mobile.css" rel="stylesheet"/>
|
||
|
<link href="./css/openinghourstable.css" rel="stylesheet"/>
|
||
|
<link href="./css/tagrendering.css" rel="stylesheet"/>
|
||
|
<link href="css/ReviewElement.css" rel="stylesheet"/>
|
||
|
<link href="./css/index-tailwind-output.css" rel="stylesheet"/>
|
||
|
<link href="./css/wikipedia.css" rel="stylesheet"/>
|
||
|
<meta content="website" property="og:type">
|
||
|
|
||
|
<!-- THEME-SPECIFIC -->
|
||
|
<!-- Every theme gets their own html page, this is created by a script; this part will be removed except for the index -->
|
||
|
<title>MapComplete</title>
|
||
|
<link href="./assets/svg/add.svg" rel="icon" sizes="any" type="image/svg+xml">
|
||
|
<meta content="./assets/SocialImage.png" property="og:image">
|
||
|
<meta content="MapComplete - editable, thematic maps with OpenStreetMap" property="og:title">
|
||
|
<meta content="MapComplete is a platform to visualize OpenStreetMap on a specific topic and to easily contribute data back to it."
|
||
|
property="og:description">
|
||
|
|
||
|
<link href="./assets/generated/images/assets_svg_mapcomplete_logo512.png" rel="apple-touch-icon" sizes="512x512">
|
||
|
<link href="./assets/generated/images/assets_svg_mapcomplete_logo384.png" rel="apple-touch-icon" sizes="384x384">
|
||
|
<link href="./assets/generated/images/assets_svg_mapcomplete_logo192.png" rel="apple-touch-icon" sizes="192x192">
|
||
|
<link href="./assets/generated/images/assets_svg_mapcomplete_logo180.png" rel="apple-touch-icon" sizes="180x180">
|
||
|
<link href="./assets/generated/images/assets_svg_mapcomplete_logo152.png" rel="apple-touch-icon" sizes="152x152">
|
||
|
<link href="./assets/generated/images/assets_svg_mapcomplete_logo144.png" rel="apple-touch-icon" sizes="144x144">
|
||
|
<link href="./assets/generated/images/assets_svg_mapcomplete_logo128.png" rel="apple-touch-icon" sizes="128x128">
|
||
|
<link href="./assets/generated/images/assets_svg_mapcomplete_logo120.png" rel="apple-touch-icon" sizes="120x120">
|
||
|
<link href="./assets/generated/images/assets_svg_mapcomplete_logo96.png" rel="apple-touch-icon" sizes="96x96">
|
||
|
<link href="./assets/generated/images/assets_svg_mapcomplete_logo72.png" rel="apple-touch-icon" sizes="72x72">
|
||
|
|
||
|
<!-- THEME-SPECIFIC-END-->
|
||
|
|
||
|
</head>
|
||
|
<body>
|
||
|
|
||
|
|
||
|
<div class="h-full" id="maindiv">
|
||
|
<div id="default-main h-full">
|
||
|
<div class="w-full h-screen flex flex-col items-center justify-between p-8">
|
||
|
<div class="w-full h-full flex flex-col items-center">
|
||
|
|
||
|
<div id="default-title">
|
||
|
Loading MapComplete, hang on...
|
||
|
</div>
|
||
|
|
||
|
<p class="text-xl" id="descriptions-while-loading">
|
||
|
<!-- DESCRIPTION START -->
|
||
|
MapComplete is an easy to use map viewer and map editor
|
||
|
<!-- DESCRIPTION END -->
|
||
|
</p>
|
||
|
<p>
|
||
|
Made with OpenStreetMap
|
||
|
</p>
|
||
|
</div>
|
||
|
|
||
|
<!-- IMAGE-START -->
|
||
|
<img class="p-8 h-32 w-32 self-start" src="./assets/svg/add.svg">
|
||
|
<!-- IMAGE-END -->
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div id="belowmap" class="absolute top-0 left-0" style="z-index: -1;">Below</div>
|
||
|
|
||
|
<script>
|
||
|
|
||
|
let lang = ((navigator.languages && navigator.languages[0]) || navigator.language || navigator.userLanguage || 'en').substr(0, 2);
|
||
|
|
||
|
function filterLangs(maindiv) {
|
||
|
let foundLangs = 0
|
||
|
for (const child of Array.from(maindiv.children)) {
|
||
|
if (child.attributes.lang?.value === lang) {
|
||
|
foundLangs++
|
||
|
}
|
||
|
}
|
||
|
if (foundLangs === 0) {
|
||
|
lang = "en"
|
||
|
}
|
||
|
for (const child of Array.from(maindiv.children)) {
|
||
|
const childLang = child.attributes.lang
|
||
|
if (childLang === undefined) {
|
||
|
continue
|
||
|
}
|
||
|
if (childLang.value === lang) {
|
||
|
continue
|
||
|
}
|
||
|
child.parentElement.removeChild(child)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
filterLangs(document.getElementById("descriptions-while-loading"))
|
||
|
filterLangs(document.getElementById("default-title"))
|
||
|
</script>
|
||
|
|
||
|
|
||
|
<script src="./index.ts" type="module"></script>
|
||
|
<script async data-goatcounter="https://pietervdvn.goatcounter.com/count" src="//gc.zgo.at/count.js"></script>
|
||
|
|
||
|
<script>
|
||
|
window.addEventListener('load', () => {
|
||
|
if ('serviceWorker' in navigator) {
|
||
|
// register service worker
|
||
|
navigator.serviceWorker.register('/service-worker.js').then(
|
||
|
() => {
|
||
|
console.log('Service worker registration successful');
|
||
|
},
|
||
|
err => {
|
||
|
console.error('Service worker registration failed', err)
|
||
|
});
|
||
|
} else {
|
||
|
console.log("Service workers are not supported")
|
||
|
}
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
</body>
|
||
|
</html>
|