diff options
| author | Birte Kristina Friesel <derf@finalrewind.org> | 2025-06-20 18:49:43 +0200 | 
|---|---|---|
| committer | Birte Kristina Friesel <derf@finalrewind.org> | 2025-06-20 18:49:43 +0200 | 
| commit | da34ec2e4a6fb5534c8d0f103a29cf8ba361b774 (patch) | |
| tree | 312e5eea78f91e671431c3b60ef1e0630ba6bdbc | |
| parent | af778e68d90de820535111517270eb7896e5f2cc (diff) | |
geolocation.js: It's an accident that this ever worked to begin with
| -rw-r--r-- | public/service-worker.js | 22 | ||||
| -rw-r--r-- | public/static/css/material-icons.css | 8 | ||||
| -rw-r--r-- | public/static/js/geolocation.js | 28 | ||||
| -rw-r--r-- | public/static/js/geolocation.min.js | 2 | ||||
| -rw-r--r-- | public/static/manifest.json | 12 | ||||
| l--------- | public/static/v95 (renamed from public/static/v93) | 0 | ||||
| -rw-r--r-- | templates/layouts/default.html.ep | 2 | 
7 files changed, 43 insertions, 31 deletions
| diff --git a/public/service-worker.js b/public/service-worker.js index 85b2992..98678f0 100644 --- a/public/service-worker.js +++ b/public/service-worker.js @@ -1,17 +1,17 @@ -const CACHE_NAME = 'static-cache-v94'; +const CACHE_NAME = 'static-cache-v95';  const FILES_TO_CACHE = [    '/favicon.ico',    '/offline.html', -  '/static/v94/css/light.min.css', -  '/static/v94/css/dark.min.css', -  '/static/v94/css/material-icons.css', -  '/static/v94/fonts/MaterialIcons-Regular.woff2', -  '/static/v94/fonts/MaterialIcons-Regular.woff', -  '/static/v94/fonts/MaterialIcons-Regular.ttf', -  '/static/v94/js/jquery-3.4.1.min.js', -  '/static/v94/js/materialize.min.js', -  '/static/v94/js/travelynx-actions.min.js', -  '/static/v94/js/geolocation.min.js', +  '/static/v95/css/light.min.css', +  '/static/v95/css/dark.min.css', +  '/static/v95/css/material-icons.css', +  '/static/v95/fonts/MaterialIcons-Regular.woff2', +  '/static/v95/fonts/MaterialIcons-Regular.woff', +  '/static/v95/fonts/MaterialIcons-Regular.ttf', +  '/static/v95/js/jquery-3.4.1.min.js', +  '/static/v95/js/materialize.min.js', +  '/static/v95/js/travelynx-actions.min.js', +  '/static/v95/js/geolocation.min.js',  ];  self.addEventListener('install', (evt) => { diff --git a/public/static/css/material-icons.css b/public/static/css/material-icons.css index 3c1b3a7..ad59f3a 100644 --- a/public/static/css/material-icons.css +++ b/public/static/css/material-icons.css @@ -2,12 +2,12 @@    font-family: 'Material Icons';    font-style: normal;    font-weight: 400; -  src: url(/static/v94/fonts/MaterialIcons-Regular.eot); /* For IE6-8 */ +  src: url(/static/v95/fonts/MaterialIcons-Regular.eot); /* For IE6-8 */    src: local('Material Icons'),         local('MaterialIcons-Regular'), -       url(/static/v94/fonts/MaterialIcons-Regular.woff2) format('woff2'), -       url(/static/v94/fonts/MaterialIcons-Regular.woff) format('woff'), -       url(/static/v94/fonts/MaterialIcons-Regular.ttf) format('truetype'); +       url(/static/v95/fonts/MaterialIcons-Regular.woff2) format('woff2'), +       url(/static/v95/fonts/MaterialIcons-Regular.woff) format('woff'), +       url(/static/v95/fonts/MaterialIcons-Regular.ttf) format('truetype');  }  .material-icons { diff --git a/public/static/js/geolocation.js b/public/static/js/geolocation.js index f3bacd1..877bd59 100644 --- a/public/static/js/geolocation.js +++ b/public/static/js/geolocation.js @@ -26,7 +26,7 @@ $(document).ready(function() {  				const parts = stop.split(';');  				const [ eva, name, dbris, efa, hafas, motis ] = parts; -				const node = $('<a class="tablerow" href="/s/' + (eva||0) + '?dbris=' + (dbris||0) + '&efa=' + (efa||0) + '&hafas=' + (hafas||0) + '&motis=' + (motis||0) + '"><span><i class="material-icons" aria-hidden="true">' + (!(dbris||efa||motis) ? 'train' : 'directions') + '</i>' + name + '</span></a>'); +				const node = $('<a class="tablerow" href="/s/' + eva + '?dbris=' + (dbris||0) + '&efa=' + (efa||0) + '&hafas=' + (hafas||0) + '&motis=' + (motis||0) + '"><span><i class="material-icons" aria-hidden="true">' + (!(dbris||efa||hafas||motis) ? 'train' : 'directions') + '</i>' + name + '</span></a>');  				node.click(function() {  					$('nav .preloader-wrapper').addClass('active');  				}); @@ -49,24 +49,36 @@ $(document).ready(function() {  			$.each(data.candidates, function(i, candidate) {  				let node; -				if (candidate.motis !== undefined) { -					const { id, name, motis } = candidate; - -					node = $('<a class="tablerow" href="/s/' + id + '?motis=' + motis + '"><span><i class="material-icons" aria-hidden="true">train</i>' + name + '</span></a>'); -				} else if (candidate.efa !== undefined) { +				if (candidate.dbris) { +					const eva = candidate.eva, +						name = candidate.name, +						dbris = candidate.dbris, +						distance = candidate.distance.toFixed(1); +					node = $('<a class="tablerow" href="/s/' + id + '?dbris=' + dbris + '"><span><i class="material-icons" aria-hidden="true">directions</i>' + name + '</span></a>'); +				} else if (candidate.efa) {  					const eva = candidate.eva,  						name = candidate.name,  						efa = candidate.efa,  						distance = candidate.distance.toFixed(1);  					node = $('<a class="tablerow" href="/s/' + eva + '?efa=' + efa + '"><span><i class="material-icons" aria-hidden="true">directions</i>' + name + '</span></a>'); -				} else { +				} else if (candidate.hafas) {  					const eva = candidate.eva,  						name = candidate.name,  						hafas = candidate.hafas,  						distance = candidate.distance.toFixed(1); -					node = $('<a class="tablerow" href="/s/' + eva + '?hafas=' + hafas + '"><span><i class="material-icons" aria-hidden="true">' + (hafas == '0' ? 'train' : 'directions') + '</i>' + name + '</span></a>'); +					node = $('<a class="tablerow" href="/s/' + eva + '?hafas=' + hafas + '"><span><i class="material-icons" aria-hidden="true">directions</i>' + name + '</span></a>'); +				} else if (candidate.motis) { +					const { id, name, motis } = candidate; + +					node = $('<a class="tablerow" href="/s/' + id + '?motis=' + motis + '"><span><i class="material-icons" aria-hidden="true">directions</i>' + name + '</span></a>'); +				} else { +					const eva = candidate.eva, +						name = candidate.name, +						distance = candidate.distance.toFixed(1); + +					node = $('<a class="tablerow" href="/s/' + eva + '"><span><i class="material-icons" aria-hidden="true">train</i>' + name + '</span></a>');  				}  				node.click(function() { diff --git a/public/static/js/geolocation.min.js b/public/static/js/geolocation.min.js index 4bf5584..4ec9dc7 100644 --- a/public/static/js/geolocation.min.js +++ b/public/static/js/geolocation.min.js @@ -1 +1 @@ -$(document).ready(function(){function i(){return $("div.geolocation div.progress")}function e(e){var t=$("div.geolocation").data("backend");$.post("/geolocation",{lon:e.coords.longitude,lat:e.coords.latitude,backend:t},a)}function t(e){e.code==e.PERMISSION_DENIED?n("Standortanfrage nicht möglich.","Vermutlich fehlen die Rechte im Browser oder der Android Location Service ist deaktiviert.","geolocation.error.PERMISSION_DENIED"):e.code==e.POSITION_UNAVAILABLE?n("Standort konnte nicht ermittelt werden","(Service nicht verfügbar)","geolocation.error.POSITION_UNAVAILABLE"):e.code==e.TIMEOUT?n("Standort konnte nicht ermittelt werden","(Timeout)","geolocation.error.TIMEOUT"):n("Standort konnte nicht ermittelt werden","(unbekannter Fehler)","unknown geolocation.error code")}const n=function(e,t,n){var a=$(document.createElement("div")),t=(a.attr("class","error"),a.text(t),$(document.createElement("strong"))),e=(t.text(e+" "),a.prepend(t),$("div.geolocation").append(a),$("div.geolocation").data("recent"));if(e){t=e.split("|");const c=$(document.createElement("p"));$.each(t,function(e,t){var[t,n,a,i,o,r]=t.split(";"),t=$('<a class="tablerow" href="/s/'+(t||0)+"?dbris="+(a||0)+"&efa="+(i||0)+"&hafas="+(o||0)+"&motis="+(r||0)+'"><span><i class="material-icons" aria-hidden="true">'+(a||i||r?"directions":"train")+"</i>"+n+"</span></a>");t.click(function(){$("nav .preloader-wrapper").addClass("active")}),c.append(t)}),$("p.geolocationhint").text("Letzte Ziele:"),i().replaceWith(c)}else i().remove()},a=function(e){if(e.error)n("Backend-Fehler:",e.error,null);else if(0==e.candidates.length)n("Keine Bahnhöfe in 70km Umkreis gefunden","",null);else{const r=$(document.createElement("p"));$.each(e.candidates,function(e,t){let n;var a,i,o;(n=void 0!==t.motis?({id:a,name:i,motis:o}=t,$('<a class="tablerow" href="/s/'+a+"?motis="+o+'"><span><i class="material-icons" aria-hidden="true">train</i>'+i+"</span></a>")):void 0!==t.efa?(a=t.eva,o=t.name,i=t.efa,t.distance.toFixed(1),$('<a class="tablerow" href="/s/'+a+"?efa="+i+'"><span><i class="material-icons" aria-hidden="true">directions</i>'+o+"</span></a>")):(a=t.eva,i=t.name,o=t.hafas,t.distance.toFixed(1),$('<a class="tablerow" href="/s/'+a+"?hafas="+o+'"><span><i class="material-icons" aria-hidden="true">'+("0"==o?"train":"directions")+"</i>"+i+"</span></a>"))).click(function(){$("nav .preloader-wrapper").addClass("active")}),r.append(n)}),i().replaceWith(r)}},o=$("div.geolocation > .request");o.data("recent");function r(){o.replaceWith($('<p class="geolocationhint">Stationen in der Umgebung:</p><div class="progress"><div class="indeterminate"></div></div>')),navigator.geolocation.getCurrentPosition(e,t)}o.length&&(navigator.geolocation?navigator.permissions?navigator.permissions.query({name:"geolocation"}).then(function(e){"prompt"===e.state?o.on("click",r):r()}):o.on("click",r):n("Standortanfragen werden von diesem Browser nicht unterstützt","",null))}); +$(document).ready(function(){function i(){return $("div.geolocation div.progress")}function e(e){var a=$("div.geolocation").data("backend");$.post("/geolocation",{lon:e.coords.longitude,lat:e.coords.latitude,backend:a},t)}function a(e){e.code==e.PERMISSION_DENIED?n("Standortanfrage nicht möglich.","Vermutlich fehlen die Rechte im Browser oder der Android Location Service ist deaktiviert.","geolocation.error.PERMISSION_DENIED"):e.code==e.POSITION_UNAVAILABLE?n("Standort konnte nicht ermittelt werden","(Service nicht verfügbar)","geolocation.error.POSITION_UNAVAILABLE"):e.code==e.TIMEOUT?n("Standort konnte nicht ermittelt werden","(Timeout)","geolocation.error.TIMEOUT"):n("Standort konnte nicht ermittelt werden","(unbekannter Fehler)","unknown geolocation.error code")}const n=function(e,a,n){var t=$(document.createElement("div")),a=(t.attr("class","error"),t.text(a),$(document.createElement("strong"))),e=(a.text(e+" "),t.prepend(a),$("div.geolocation").append(t),$("div.geolocation").data("recent"));if(e){a=e.split("|");const s=$(document.createElement("p"));$.each(a,function(e,a){var[a,n,t,i,o,r]=a.split(";"),a=$('<a class="tablerow" href="/s/'+a+"?dbris="+(t||0)+"&efa="+(i||0)+"&hafas="+(o||0)+"&motis="+(r||0)+'"><span><i class="material-icons" aria-hidden="true">'+(t||i||o||r?"directions":"train")+"</i>"+n+"</span></a>");a.click(function(){$("nav .preloader-wrapper").addClass("active")}),s.append(a)}),$("p.geolocationhint").text("Letzte Ziele:"),i().replaceWith(s)}else i().remove()},t=function(e){if(e.error)n("Backend-Fehler:",e.error,null);else if(0==e.candidates.length)n("Keine Bahnhöfe in 70km Umkreis gefunden","",null);else{const c=$(document.createElement("p"));$.each(e.candidates,function(e,a){let n;if(a.dbris){a.eva;var t=a.name,i=a.dbris;a.distance.toFixed(1);n=$('<a class="tablerow" href="/s/'+id+"?dbris="+i+'"><span><i class="material-icons" aria-hidden="true">directions</i>'+t+"</span></a>")}else if(a.efa){var i=a.eva,t=a.name,o=a.efa;a.distance.toFixed(1);n=$('<a class="tablerow" href="/s/'+i+"?efa="+o+'"><span><i class="material-icons" aria-hidden="true">directions</i>'+t+"</span></a>")}else if(a.hafas){i=a.eva,o=a.name,t=a.hafas;a.distance.toFixed(1);n=$('<a class="tablerow" href="/s/'+i+"?hafas="+t+'"><span><i class="material-icons" aria-hidden="true">directions</i>'+o+"</span></a>")}else if(a.motis){const{id,name:r,motis:s}=a;n=$('<a class="tablerow" href="/s/'+id+"?motis="+s+'"><span><i class="material-icons" aria-hidden="true">directions</i>'+r+"</span></a>")}else{i=a.eva,t=a.name;a.distance.toFixed(1);n=$('<a class="tablerow" href="/s/'+i+'"><span><i class="material-icons" aria-hidden="true">train</i>'+t+"</span></a>")}n.click(function(){$("nav .preloader-wrapper").addClass("active")}),c.append(n)}),i().replaceWith(c)}},o=$("div.geolocation > .request");o.data("recent");function r(){o.replaceWith($('<p class="geolocationhint">Stationen in der Umgebung:</p><div class="progress"><div class="indeterminate"></div></div>')),navigator.geolocation.getCurrentPosition(e,a)}o.length&&(navigator.geolocation?navigator.permissions?navigator.permissions.query({name:"geolocation"}).then(function(e){"prompt"===e.state?o.on("click",r):r()}):o.on("click",r):n("Standortanfragen werden von diesem Browser nicht unterstützt","",null))}); diff --git a/public/static/manifest.json b/public/static/manifest.json index 0709497..648b1e1 100644 --- a/public/static/manifest.json +++ b/public/static/manifest.json @@ -3,27 +3,27 @@    "short_name": "Travelynx",    "scope": "/",    "icons": [{ -    "src": "/static/v94/icons/icon-128x128.png", +    "src": "/static/v95/icons/icon-128x128.png",        "sizes": "128x128",        "type": "image/png"      }, { -      "src": "/static/v94/icons/icon-144x144.png", +      "src": "/static/v95/icons/icon-144x144.png",        "sizes": "144x144",        "type": "image/png"      }, { -      "src": "/static/v94/icons/icon-152x152.png", +      "src": "/static/v95/icons/icon-152x152.png",        "sizes": "152x152",        "type": "image/png"      }, { -      "src": "/static/v94/icons/icon-192x192.png", +      "src": "/static/v95/icons/icon-192x192.png",        "sizes": "192x192",        "type": "image/png"      }, { -      "src": "/static/v94/icons/icon-256x256.png", +      "src": "/static/v95/icons/icon-256x256.png",        "sizes": "256x256",        "type": "image/png"      }, { -      "src": "/static/v94/icons/icon-512x512.png", +      "src": "/static/v95/icons/icon-512x512.png",        "sizes": "512x512",        "type": "image/png"      }], diff --git a/public/static/v93 b/public/static/v95 index 945c9b4..945c9b4 120000 --- a/public/static/v93 +++ b/public/static/v95 diff --git a/templates/layouts/default.html.ep b/templates/layouts/default.html.ep index ec10b75..0726426 100644 --- a/templates/layouts/default.html.ep +++ b/templates/layouts/default.html.ep @@ -13,7 +13,7 @@  	% while (my ($key, $value) = each %{stash('opengraph') // {}}) {  		<meta property="og:<%= $key %>" content="<%= $value %>">  	% } -	% my $av = 'v94'; # asset version +	% my $av = 'v95'; # asset version  	<link rel="icon" type="image/png" href="/static/<%= $av %>/icons/icon-16x16.png" sizes="16x16">  	<link rel="icon" type="image/png" href="/static/<%= $av %>/icons/icon-32x32.png" sizes="32x32">  	<link rel="icon" type="image/png" href="/static/<%= $av %>/icons/icon-96x96.png" sizes="96x96"> | 
