From 86426290ebf2b8b2a2655621fa4342c5cb984de3 Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Fri, 14 Mar 2025 06:21:05 +0100 Subject: refactor: define available links as constant It makes sense to treat configuration as data (that could be (de)serialized in the future). --- script.js | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) (limited to 'script.js') diff --git a/script.js b/script.js index 9382d29..d9086b8 100644 --- a/script.js +++ b/script.js @@ -1,27 +1,25 @@ +const LINKS = [ + { + label: 'Google Maps', + url: 'https://www.google.com/maps/search/?api=1&query={lat},{lon}', + }, + { + label: 'Apple Maps', + url: 'https://maps.apple.com/?q={lat},{lon}&t=m', + }, + { + label: 'Default app', + url: 'geo:{lat},{lon}', + }, + { + label: 'OpenStreetMap', + url: 'https://www.openstreetmap.org/?mlat={lat}&mlon={lon}&zoom=15&layers=M', + }, +]; + const latlon = location.hash.substring(1); const [lat, lon] = latlon.split(','); -function getLinks(lat, lon) { - return [ - { - label: 'Google Maps', - url: `https://www.google.com/maps/search/?api=1&query=${lat},${lon}`, - }, - { - label: 'Apple Maps', - url: `https://maps.apple.com/?q=${lat},${lon}&t=m` - }, - { - label: 'Default app', - url: `geo:${lat},${lon}` - }, - { - label: 'OpenStreetMap', - url: `https://www.openstreetmap.org/?mlat=${lat}&mlon=${lon}&zoom=15&layers=M` - }, - ] -} - const heading = document.getElementById('heading'); // TODO: listen on hashChange @@ -34,10 +32,10 @@ if (isNaN(lat) || isNaN(lon)) { document.title = 'Open location'; - for (const link of getLinks(lat, lon)) { + for (const link of LINKS) { const li = document.createElement('li'); const a = document.createElement('a'); - a.href = link.url; + a.href = link.url.replace('{lat}', lat).replace('{lon}', lon); a.textContent = link.label; li.appendChild(a); linkList.appendChild(li); -- cgit v1.2.3