// Checks to see what map files exist at /usb-butter/osm-map-files/ and displays them // using the template hidden in the page const getMaps = async (folder_href) => { async function populateSpan(response) { if (!response.ok) { console.error("Failed to fetch " + folder_href); return; } const text = await response.text(); const doc = new DOMParser().parseFromString(text, 'text/html'); const { files, folders } = extractDirectoryListing(doc); renderMaps(files); } const response = fetch(folder_href).then(populateSpan); } function getOsmObfDisplayName(name) { const region = name.split('_')[0]; const words = region.split('-'); for (let i = 0; i < words.length; i++) { words[i] = words[i].charAt(0).toUpperCase() + words[i].slice(1); } return words.join(" "); } function renderMaps(files) { template = document.getElementById('filerow-template'); fileList = template.parentElement; for (let file of files) { let clone = template.cloneNode(true); const links = clone.querySelectorAll('a'); for (let link of links) { link.href = '/usb-butter/osm-map-files/' + file.href; link.download = file.name } const upperText = clone.querySelector('.upper-text'); const lowerText = clone.querySelector('.lower-text'); upperText.textContent = getOsmObfDisplayName(file.name); lowerText.textContent = file.name; fileList.appendChild(clone); clone.removeAttribute('id'); clone.classList.remove("template"); } } getMaps('/usb-butter/osm-map-files/');