summaryrefslogtreecommitdiff
path: root/public/static/js/geolocation.js
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2019-05-11 13:02:16 +0200
committerDaniel Friesel <derf@finalrewind.org>2019-05-11 13:02:16 +0200
commitc77a7d2cd2a71b879c96f9dbddfd062c40d96824 (patch)
treedefde85fb415f7dab052b84075e0f3cb8e2b07f8 /public/static/js/geolocation.js
parent4412283f3b32dbcbf772ad7f7e65a87405ad59e9 (diff)
parent94febe86cd81f2d40d4e5f93f7dfb9be82dbff15 (diff)
Merge branch 'marudor-geoLocationNagging'
closes #10
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);
}