diff --git a/_config.yml b/_config.yml index 931bb49..c878f1b 100644 --- a/_config.yml +++ b/_config.yml @@ -8,7 +8,7 @@ logo: "/assets/images/butter-app-logo-small.svg" # powered by jekyll-multiple-languages-plugin languages: ['en', 'es', 'fr_SN', 'pt_AO'] -exclude: ["public", "Gemfile", "Gemfile.lock", "node_modules", "test", "*.zip"] +exclude: ["public", "Gemfile", "Gemfile.lock", "node_modules", "test", "site-*.zip"] # Build settings sass: diff --git a/_includes/filerow.html b/_includes/filerow.html index 5a7e6d7..c67cb18 100644 --- a/_includes/filerow.html +++ b/_includes/filerow.html @@ -1,4 +1,4 @@ -
+
file extension icon diff --git a/_layouts/basic.html b/_layouts/basic.html index 57d08ef..33991ec 100644 --- a/_layouts/basic.html +++ b/_layouts/basic.html @@ -20,6 +20,11 @@ + {% if page.custom_scripts %} + {% for script in page.custom_scripts %} + + {% endfor %} + {% endif %} {% if site.data.deployment.has_internet %} diff --git a/_scss/pages/home.scss b/_scss/pages/home.scss index 4b33b5b..39d98c6 100644 --- a/_scss/pages/home.scss +++ b/_scss/pages/home.scss @@ -367,6 +367,9 @@ h1.homepage-title { box-sizing: border-box; font-family: "Poppins", sans-serif; } +.filerow.template { + display: none; +} .logo-filerow { display: flex; diff --git a/assets/js/butter-dir-listing.js b/assets/js/butter-dir-listing.js index 6bea0ae..cf984cf 100644 --- a/assets/js/butter-dir-listing.js +++ b/assets/js/butter-dir-listing.js @@ -120,8 +120,7 @@ function extractDirectoryListing(doc) { return { files, folders }; } -window.onload = function () { - // Example usage +function renderDirectory() { const { files, folders } = extractDirectoryListing(window.document); const listDiv = document.querySelector('div.list'); @@ -201,4 +200,10 @@ window.onload = function () { // do the insertion listDiv.parentNode.insertBefore(fileListing, listDiv); +} + +window.onload = function () { + if (window.location.pathname.includes(usbRoot)) { + renderDirectory(); + } } \ No newline at end of file diff --git a/assets/js/main.js b/assets/js/main.js index c915928..371ef59 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -36,11 +36,8 @@ if (btnModal) { } function renderPlaceholders() { - const usbButter = document.querySelector('#usb-butter'); - const appstoreCard = document.querySelector('#appstore-card'); - const mapsCard = document.querySelector('#maps-card'); - const conditionalCards = [appstoreCard, usbButter, mapsCard]; - for (let card of conditionalCards) { + const discovered = document.querySelectorAll(".hidden-card"); + for (let card of discovered) { fetch(card.dataset.url) .then(response => { if (response.status === 200) { @@ -57,5 +54,4 @@ function renderPlaceholders() { } } - renderPlaceholders(); \ No newline at end of file diff --git a/assets/js/maps.js b/assets/js/maps.js new file mode 100644 index 0000000..409269a --- /dev/null +++ b/assets/js/maps.js @@ -0,0 +1,47 @@ +// 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/'); \ No newline at end of file diff --git a/maps/index.html b/maps/index.html index 6aefe68..1e697b1 100644 --- a/maps/index.html +++ b/maps/index.html @@ -1,6 +1,7 @@ --- layout: informational breadcrumb: "Offline Maps" +custom_scripts: ["maps.js", "butter-dir-listing.js"] --- Maps Header @@ -26,46 +27,7 @@ breadcrumb: "Offline Maps" {% t maps.sections.section2.open_with_cta %}

-
- {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "Angola_africa_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="Angola_africa_2.obf.zip" icon_filename="ext-pbf.svg" display_name="Angola" %} - - {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "Virgin-islands-british_centralamerica_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="Virgin-islands-british_centralamerica_2.obf.zip" icon_filename="ext-pbf.svg" display_name="British Virgin Islands" %} - - {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "Colombia_southamerica_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="Colombia_southamerica_2.obf.zip" icon_filename="ext-pbf.svg" display_name="Colombia" %} - - {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "Swaziland_africa_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="Swaziland_africa_2.obf.zip" icon_filename="ext-pbf.svg" display_name="Eswatini (Swaziland)" %} - - {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "Malawi_africa_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="Malawi_africa_2.obf.zip" icon_filename="ext-pbf.svg" display_name="Malawi" %} - - {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "Mexico_mexico_northamerica_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="Mexico_mexico_northamerica_2.obf.zip" icon_filename="ext-pbf.svg" display_name="Mexico" %} - - {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "Mozambique_africa_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="Mozambique_africa_2.obf.zip" icon_filename="ext-pbf.svg" display_name="Mozambique" %} - - {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "Namibia_africa_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="Namibia_africa_2.obf.zip" icon_filename="ext-pbf.svg" display_name="Namibia" %} - - {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "Puerto-rico_centralamerica_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="Puerto-rico_centralamerica_2.obf.zip" icon_filename="ext-pbf.svg" display_name="Puerto Rico" %} - - {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "South-africa_africa_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="South-africa_africa_2.obf.zip" icon_filename="ext-pbf.svg" display_name="South Africa" %} - - {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "Virgin-islands-us_centralamerica_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="Virgin-islands-us_centralamerica_2.obf.zip" icon_filename="ext-pbf.svg" display_name="US Virgin Islands" %} - - {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "Venezuela_southamerica_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="Venezuela_southamerica_2.obf.zip" icon_filename="ext-pbf.svg" display_name="Venezuela" %} - - {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "Zambia_africa_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="Zambia_africa_2.obf.zip" icon_filename="ext-pbf.svg" display_name="Zambia" %} - - {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "Zimbabwe_africa_2.obf.zip" %} - {% include filerow.html href=obf_url file_name="Zimbabwe_africa_2.obf.zip" icon_filename="ext-pbf.svg" display_name="Zimbabwe" %} +
+ {% assign obf_url= site.basurl | append: "/fdroid/repo/" | append: "FILENAME" %} + {% include filerow.html id="filerow-template" href=obf_url file_name="FILENAME" icon_filename="ext-pbf.svg" display_name="FILESTEM" %}
\ No newline at end of file