summaryrefslogtreecommitdiff
path: root/public/static/js/geolocation.js
diff options
context:
space:
mode:
authormarudor <marudor@marudor.de>2019-05-11 12:43:04 +0200
committermarudor <marudor@marudor.de>2019-05-11 12:43:13 +0200
commitd2f01f963a1c18020969e5d8a4584e3e16c5641d (patch)
tree0b5e4096b3c68ed15cf3dd65b9bdd6a27e276f87 /public/static/js/geolocation.js
parent4412283f3b32dbcbf772ad7f7e65a87405ad59e9 (diff)
Do not nag directly for geolocation
Diffstat (limited to 'public/static/js/geolocation.js')
-rw-r--r--public/static/js/geolocation.js31
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);
}