diff options
author | marudor <marudor@marudor.de> | 2019-05-11 12:43:04 +0200 |
---|---|---|
committer | marudor <marudor@marudor.de> | 2019-05-11 12:43:13 +0200 |
commit | d2f01f963a1c18020969e5d8a4584e3e16c5641d (patch) | |
tree | 0b5e4096b3c68ed15cf3dd65b9bdd6a27e276f87 /public/static/js/geolocation.js | |
parent | 4412283f3b32dbcbf772ad7f7e65a87405ad59e9 (diff) |
Do not nag directly for geolocation
Diffstat (limited to 'public/static/js/geolocation.js')
-rw-r--r-- | public/static/js/geolocation.js | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/public/static/js/geolocation.js b/public/static/js/geolocation.js index ccc8c3a..cb16e72 100644 --- a/public/static/js/geolocation.js +++ b/public/static/js/geolocation.js @@ -1,9 +1,9 @@ $(document).ready(function() { - var prePlaceholder = $('p.geolocationhint'); - var placeholder = $('div.geolocation div.progress'); + function getPlaceholder() { + return $('div.geolocation div.progress'); + } var showError = function(header, message, code) { - prePlaceholder.remove(); - placeholder.remove(); + getPlaceholder().remove(); var errnode = $(document.createElement('div')); errnode.attr('class', 'error'); errnode.text(message); @@ -36,7 +36,7 @@ $(document).ready(function() { resultBody.append('<tr><td><a href="/s/' + ds100 + '">' + name + '</a></td></tr>'); }); - placeholder.replaceWith(resultTable); + getPlaceholder().replaceWith(resultTable); } }; @@ -56,9 +56,26 @@ $(document).ready(function() { } }; - if ($('div.geolocation').length) { + var geoLocationButton = $('div.geolocation > button'); + var getGeoLocation = function() { + geoLocationButton.replaceWith($('<p class="geolocationhint">Stationen in der Umgebung:</p><div class="progress"><div class="indeterminate"></div></div>')); + navigator.geolocation.getCurrentPosition(processLocation, processError); + } + + if (geoLocationButton.length) { if (navigator.geolocation) { - navigator.geolocation.getCurrentPosition(processLocation, processError); + if (navigator.permissions) { + navigator.permissions.query({ name:'geolocation' }).then(function(value) { + if (value.state === 'prompt') { + geoLocationButton.on('click', getGeoLocation); + } else { + // User either rejected or granted permission. User wont get prompted and we can show stations/error + getGeoLocation(); + } + }); + } else { + geoLocationButton.on('click', getGeoLocation); + } } else { showError('Standortanfragen werden von diesem Browser nicht unterstützt', '', null); } |