commit
c77a7d2cd2
9 changed files with 53 additions and 37 deletions
|
@ -1,18 +1,18 @@
|
||||||
const CACHE_NAME = 'static-cache-v18';
|
const CACHE_NAME = 'static-cache-v19';
|
||||||
const FILES_TO_CACHE = [
|
const FILES_TO_CACHE = [
|
||||||
'/favicon.ico',
|
'/favicon.ico',
|
||||||
'/offline.html',
|
'/offline.html',
|
||||||
'/static/v18/css/materialize.min.css',
|
'/static/v19/css/materialize.min.css',
|
||||||
'/static/v18/css/material-icons.css',
|
'/static/v19/css/material-icons.css',
|
||||||
'/static/v18/css/local.css',
|
'/static/v19/css/local.css',
|
||||||
'/static/v18/fonts/MaterialIcons-Regular.woff2',
|
'/static/v19/fonts/MaterialIcons-Regular.woff2',
|
||||||
'/static/v18/fonts/MaterialIcons-Regular.woff',
|
'/static/v19/fonts/MaterialIcons-Regular.woff',
|
||||||
'/static/v18/fonts/MaterialIcons-Regular.ttf',
|
'/static/v19/fonts/MaterialIcons-Regular.ttf',
|
||||||
'/static/v18/js/jquery-3.4.1.min.js',
|
'/static/v19/js/jquery-3.4.1.min.js',
|
||||||
'/static/v18/js/materialize.min.js',
|
'/static/v19/js/materialize.min.js',
|
||||||
'/static/v18/js/travelynx-actions.min.js',
|
'/static/v19/js/travelynx-actions.min.js',
|
||||||
'/static/v18/js/autocomplete.min.js',
|
'/static/v19/js/autocomplete.min.js',
|
||||||
'/static/v18/js/geolocation.min.js',
|
'/static/v19/js/geolocation.min.js',
|
||||||
];
|
];
|
||||||
|
|
||||||
self.addEventListener('install', (evt) => {
|
self.addEventListener('install', (evt) => {
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
font-family: 'Material Icons';
|
font-family: 'Material Icons';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url(/static/v18/fonts/MaterialIcons-Regular.eot); /* For IE6-8 */
|
src: url(/static/v19/fonts/MaterialIcons-Regular.eot); /* For IE6-8 */
|
||||||
src: local('Material Icons'),
|
src: local('Material Icons'),
|
||||||
local('MaterialIcons-Regular'),
|
local('MaterialIcons-Regular'),
|
||||||
url(/static/v18/fonts/MaterialIcons-Regular.woff2) format('woff2'),
|
url(/static/v19/fonts/MaterialIcons-Regular.woff2) format('woff2'),
|
||||||
url(/static/v18/fonts/MaterialIcons-Regular.woff) format('woff'),
|
url(/static/v19/fonts/MaterialIcons-Regular.woff) format('woff'),
|
||||||
url(/static/v18/fonts/MaterialIcons-Regular.ttf) format('truetype');
|
url(/static/v19/fonts/MaterialIcons-Regular.ttf) format('truetype');
|
||||||
}
|
}
|
||||||
|
|
||||||
.material-icons {
|
.material-icons {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
var prePlaceholder = $('p.geolocationhint');
|
function getPlaceholder() {
|
||||||
var placeholder = $('div.geolocation div.progress');
|
return $('div.geolocation div.progress');
|
||||||
|
}
|
||||||
var showError = function(header, message, code) {
|
var showError = function(header, message, code) {
|
||||||
prePlaceholder.remove();
|
getPlaceholder().remove();
|
||||||
placeholder.remove();
|
|
||||||
var errnode = $(document.createElement('div'));
|
var errnode = $(document.createElement('div'));
|
||||||
errnode.attr('class', 'error');
|
errnode.attr('class', 'error');
|
||||||
errnode.text(message);
|
errnode.text(message);
|
||||||
|
@ -36,7 +36,7 @@ $(document).ready(function() {
|
||||||
|
|
||||||
resultBody.append('<tr><td><a href="/s/' + ds100 + '">' + name + '</a></td></tr>');
|
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) {
|
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 {
|
} else {
|
||||||
showError('Standortanfragen werden von diesem Browser nicht unterstützt', '', null);
|
showError('Standortanfragen werden von diesem Browser nicht unterstützt', '', null);
|
||||||
}
|
}
|
||||||
|
|
2
public/static/js/geolocation.min.js
vendored
2
public/static/js/geolocation.min.js
vendored
|
@ -1 +1 @@
|
||||||
$(document).ready(function(){var e=$("p.geolocationhint"),t=$("div.geolocation div.progress"),n=function(n,r,o){e.remove(),t.remove();var a=$(document.createElement("div"));a.attr("class","error"),a.text(r);var i=$(document.createElement("strong"));i.text(n),a.prepend(i),$("div.geolocation").append(a)},r=function(e){e.error?n("Backend-Fehler:",e.error):0==e.candidates.length?n("Keine Bahnhöfe in 70km Umkreis gefunden",""):(resultTable=$("<table><tbody></tbody></table>"),resultBody=resultTable.children(),$.each(e.candidates,function(e,t){var n=t.ds100,r=t.name,o=t.distance;o=o.toFixed(1);var a=$(document.createElement("a"));a.attr("href",n),a.text(r),resultBody.append('<tr><td><a href="/s/'+n+'">'+r+"</a></td></tr>")}),t.replaceWith(resultTable))},o=function(e){$.post("/geolocation",{lon:e.coords.longitude,lat:e.coords.latitude},r)},a=function(e){e.code==e.PERMISSION_DENIED?n("Standortanfrage nicht möglich.","Vermutlich fehlen die Rechte im Browser oder der Android Location Service ist deaktiviert."):e.code==e.POSITION_UNAVAILABLE?n("Standort konnte nicht ermittelt werden","(Service nicht verfügbar)"):e.code==e.TIMEOUT?n("Standort konnte nicht ermittelt werden","(Timeout)"):n("Standort konnte nicht ermittelt werden","(unbekannter Fehler)")};$("div.geolocation").length&&(navigator.geolocation?navigator.geolocation.getCurrentPosition(o,a):n("Standortanfragen werden von diesem Browser nicht unterstützt",""))});
|
$(document).ready(function(){function i(){return $("div.geolocation div.progress")}function t(e,t,n){i().remove();var o=$(document.createElement("div"));o.attr("class","error"),o.text(t);var r=$(document.createElement("strong"));r.text(e),o.prepend(r),$("div.geolocation").append(o)}function n(e){e.error?t("Backend-Fehler:",e.error):0==e.candidates.length?t("Keine Bahnhöfe in 70km Umkreis gefunden",""):(resultTable=$("<table><tbody></tbody></table>"),resultBody=resultTable.children(),$.each(e.candidates,function(e,t){var n=t.ds100,o=t.name,r=t.distance;r=r.toFixed(1);var i=$(document.createElement("a"));i.attr("href",n),i.text(o),resultBody.append('<tr><td><a href="/s/'+n+'">'+o+"</a></td></tr>")}),i().replaceWith(resultTable))}function e(e){$.post("/geolocation",{lon:e.coords.longitude,lat:e.coords.latitude},n)}function o(e){e.code==e.PERMISSION_DENIED?t("Standortanfrage nicht möglich.","Vermutlich fehlen die Rechte im Browser oder der Android Location Service ist deaktiviert."):e.code==e.POSITION_UNAVAILABLE?t("Standort konnte nicht ermittelt werden","(Service nicht verfügbar)"):e.code==e.TIMEOUT?t("Standort konnte nicht ermittelt werden","(Timeout)"):t("Standort konnte nicht ermittelt werden","(unbekannter Fehler)")}function r(){a.replaceWith($('<p class="geolocationhint">Stationen in der Umgebung:</p><div class="progress"><div class="indeterminate"></div></div>')),navigator.geolocation.getCurrentPosition(e,o)}var a=$("div.geolocation > button");a.length&&(navigator.geolocation?navigator.permissions?navigator.permissions.query({name:"geolocation"}).then(function(e){"prompt"===e.state?a.on("click",r):r()}):a.on("click",r):t("Standortanfragen werden von diesem Browser nicht unterstützt",""))});
|
||||||
|
|
|
@ -3,27 +3,27 @@
|
||||||
"short_name": "Travelynx",
|
"short_name": "Travelynx",
|
||||||
"scope": "/",
|
"scope": "/",
|
||||||
"icons": [{
|
"icons": [{
|
||||||
"src": "/static/v18/icons/icon-128x128.png",
|
"src": "/static/v19/icons/icon-128x128.png",
|
||||||
"sizes": "128x128",
|
"sizes": "128x128",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
}, {
|
}, {
|
||||||
"src": "/static/v18/icons/icon-144x144.png",
|
"src": "/static/v19/icons/icon-144x144.png",
|
||||||
"sizes": "144x144",
|
"sizes": "144x144",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
}, {
|
}, {
|
||||||
"src": "/static/v18/icons/icon-152x152.png",
|
"src": "/static/v19/icons/icon-152x152.png",
|
||||||
"sizes": "152x152",
|
"sizes": "152x152",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
}, {
|
}, {
|
||||||
"src": "/static/v18/icons/icon-192x192.png",
|
"src": "/static/v19/icons/icon-192x192.png",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
}, {
|
}, {
|
||||||
"src": "/static/v18/icons/icon-256x256.png",
|
"src": "/static/v19/icons/icon-256x256.png",
|
||||||
"sizes": "256x256",
|
"sizes": "256x256",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
}, {
|
}, {
|
||||||
"src": "/static/v18/icons/icon-512x512.png",
|
"src": "/static/v19/icons/icon-512x512.png",
|
||||||
"sizes": "512x512",
|
"sizes": "512x512",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
}],
|
}],
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
current="$(ls -d public/static/v* | tail -n 1 | grep -o '..$')"
|
current="$(find -d public/static/v* | tail -n 1 | grep -o '..$')"
|
||||||
prev=$((current - 1))
|
prev=$((current - 1))
|
||||||
next=$((current + 1))
|
next=$((current + 1))
|
||||||
|
|
||||||
git mv public/static/v${prev} public/static/v${next}
|
git mv public/static/v${prev} public/static/v${next}
|
||||||
|
|
||||||
sed -i "s!/v${current}/!/v${next}/!g" \
|
perl -pi -e "s!/v${current}/!/v${next}/!g" \
|
||||||
public/service-worker.js public/static/manifest.json \
|
public/service-worker.js public/static/manifest.json \
|
||||||
public/static/css/material-icons.css
|
public/static/css/material-icons.css
|
||||||
|
|
||||||
sed -i "s!static-cache-v${current}!static-cache-v${next}!" public/service-worker.js
|
perl -pi -e "s!static-cache-v${current}!static-cache-v${next}!" public/service-worker.js
|
||||||
|
|
||||||
sed -i "s!av = 'v${current}'!av = 'v${next}'!" templates/layouts/default.html.ep
|
perl -pi -e "s!av = 'v${current}'!av = 'v${next}'!" templates/layouts/default.html.ep
|
||||||
|
|
|
@ -51,9 +51,8 @@
|
||||||
<div class="card-content white-text">
|
<div class="card-content white-text">
|
||||||
<span class="card-title">Hallo, <%= current_user()->{name} %>!</span>
|
<span class="card-title">Hallo, <%= current_user()->{name} %>!</span>
|
||||||
<p>Du bist gerade nicht eingecheckt.</p>
|
<p>Du bist gerade nicht eingecheckt.</p>
|
||||||
<p class="geolocationhint">Stationen in der Umgebung:</p>
|
|
||||||
<div class="geolocation">
|
<div class="geolocation">
|
||||||
<div class="progress"><div class="indeterminate"></div></div>
|
<button class="btn waves-effect waves-light btn-flat white">Stationen in der Umgebung abfragen</button>
|
||||||
</div>
|
</div>
|
||||||
%= form_for 'list_departures' => begin
|
%= form_for 'list_departures' => begin
|
||||||
<div class="input-field">
|
<div class="input-field">
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||||||
<meta name="apple-mobile-web-app-title" content="Travelynx">
|
<meta name="apple-mobile-web-app-title" content="Travelynx">
|
||||||
% my $av = 'v18'; # asset version
|
% my $av = 'v19'; # 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-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-32x32.png" sizes="32x32">
|
||||||
<link rel="icon" type="image/png" href="/static/<%= $av %>/icons/icon-96x96.png" sizes="96x96">
|
<link rel="icon" type="image/png" href="/static/<%= $av %>/icons/icon-96x96.png" sizes="96x96">
|
||||||
|
|
Loading…
Reference in a new issue