From a2101e2c3a3f0ab22cb42cdee0e351bf7d994bf4 Mon Sep 17 00:00:00 2001 From: markimarc Date: Tue, 22 May 2018 12:18:48 +0200 Subject: [PATCH] Begin Progrssive Web App #7 --- static/.DS_Store | Bin 8196 -> 8196 bytes static/img/Vierkant logo.png | Bin 0 -> 22312 bytes static/img/icons-192.png | Bin 0 -> 6678 bytes static/img/icons-512.png | Bin 0 -> 17624 bytes static/js/sw.js | 62 +++++++++++++++++++++++++++++++++++ static/manifest.json | 20 +++++++++++ templates/index.html | 19 ++++++++++- templates/ovfiets.html | 20 ++++++++++- templates/station.html | 18 ++++++++++ templates/trein.html | 18 ++++++++++ 10 files changed, 155 insertions(+), 2 deletions(-) create mode 100644 static/img/Vierkant logo.png create mode 100644 static/img/icons-192.png create mode 100644 static/img/icons-512.png create mode 100644 static/js/sw.js create mode 100644 static/manifest.json diff --git a/static/.DS_Store b/static/.DS_Store index 653ee2310f4759a6dd4cd0d133de5f74167ff597..1f78beff6e888d56435079988199313e139d2d76 100644 GIT binary patch delta 1155 zcmc(dNlX)A6vy8m5N1ZL-_%lv0&1uYsB9H91VPFcjG_>1*<46VCos|lnbIOg>w&n1 z#Fz$%ni!*8jENi3gUi8-@#IC~b}=S;F=~tlz52D&n0WBu!8nKc&%FPa_rCXjZ^||0 zx-27@fNU`-t+LeCs||)jd$dV4Q6V=u2N)aI)h;#Qjc8G|#T!xe0cMVBYOG^4qJ=|x zw>qYCwYw@Q^(4;9ErrWXE0}eaqV$gYv_s=sS`b=Nw2eOcj90-t6h}Bqw5|p6=m2jdK z4QNCYn$eCfxZy!J1~3E-2Qh*Oj^Y^NIEA?#IFAdshlY+h-}U2QKZb#B?}N|af8 z;yqDK*L(rh6Vv>W;XbcEsD}JnXvo8nsS|>XQjz5>@>R&Qt+f>ieArA#{Ynm7vB>TU z42J8lZ4?BSVR+@XN|CPs%QU{a7dzgV`VA*KcM3-5F7 a8Rw3h7IKvDS#hJ$|JG-}(da+ybLmgfx%V;v delta 1163 zcmc(dOH30{6o$`VP-Z3~w>$=_6wyi`2ns$h0>+93AwDozqzy#UGFP0~PAfB1Ffomf zCE}yTg~n)%@wsq8NQ@h!8(o;Fu`xcP8y7CzxH55J^mc}Y8;uJSXEA5aJvZn4XTJZ0 z|AhaF8&(GH(nV@#*H&ei6{mE5s5fcp3B%mO$4n73*GoF8Li$L;*sUMt!;FoaypP8s zmY(8)h{a8Y%z1Yp%@!6Fs^zLjVm>J}9@P(y>(*qpaA6T!T&XHUnz*_nq3Qc{uCZB3 zwky?@sydjfY#HO?tw~Zg*G8#PYh@OZf~J`0oYX4~GBf4i0o~B-6Lpo+EHO>)k42(9 zmSySO__a!l#J0%;DMz|1Cs_Nd{-0cz5>P>P(XnG=s=hSW% zn!>r-W=+c}l6?L;vY((4iF2R7$;o7r$U`g1Pu(;`JWWZOq$!%FQ*@E8(OsIQ2lSYp z(ldHaFX%13qxbZIKG7HYPCq~Z6sRai1(sqNmZJvsScA1_!Fsf#6J6*=4|)+o7=svs zhByo)FoB~ujkCz$94_GoZsHbhqiqKF@X(Rwf)lA{F3tr!5+8Y_Q=CR)W-1wtC89*G zutFSy_ z57|zeS1VpNPdGuc)0Xv$!t#Yx>}uN6)-KBPg(>FRE>=23U;0a`zd*f8cj&$V`jTD? zj34Q<0QpUToQEO-(Su5OQH5I635+YyXk*;afmUomK+xQZUFbs){n&$HL@*+Fa=|l+ zF_^G$1Zlzb7>;8KCowGupTPxO#?8#mk|nq`^Qz3}nklIGnxA$y`)`YNJDdH(#j0ID E0c$u4bpQYW diff --git a/static/img/Vierkant logo.png b/static/img/Vierkant logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c6e5bd25dc39c9f86ee5fe826ab619ffd977b78c GIT binary patch literal 22312 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

ai0_c#5 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%0DF4tIKb!d3_i$?~Y)No#NnAJ@E(ckKI+400fy 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 F1ORq@K3D(% literal 0 HcmV?d00001 diff --git a/static/img/icons-192.png b/static/img/icons-192.png new file mode 100644 index 0000000000000000000000000000000000000000..314ec5d4ce2b8f26cb6f17bbed5adc75a418deab GIT binary patch literal 6678 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 literal 0 HcmV?d00001 diff --git a/static/js/sw.js b/static/js/sw.js new file mode 100644 index 0000000..ea706b5 --- /dev/null +++ b/static/js/sw.js @@ -0,0 +1,62 @@ +var CACHE_NAME = 'spoor-app-cache-v1'; +var urlsToCache = [ + '/', + '/../static/css/materialize.css', + '/../static/css/style.css', + '/../static/js/jquery-2.1.1.min.js', + '/../static/js/materialize.js', + '/../static/js/custom.js', + '/../static/js/dichtbij.js', + '/../static/img/achtergrond.jpg' +]; + +self.addEventListener('install', function(event) { + // Perform install steps + event.waitUntil( + caches.open(CACHE_NAME) + .then(function(cache) { + console.log('Opened cache'); + return cache.addAll(urlsToCache); + }) + ); +}); + +self.addEventListener('fetch', function(event) { + event.respondWith( + caches.match(event.request) + .then(function(response) { + // Cache hit - return response + if (response) { + return response; + } + + // IMPORTANT: Clone the request. A request is a stream and + // can only be consumed once. Since we are consuming this + // once by cache and once by the browser for fetch, we need + // to clone the response. + var fetchRequest = event.request.clone(); + + return fetch(fetchRequest).then( + function(response) { + // Check if we received a valid response + if(!response || response.status !== 200 || response.type !== 'basic') { + return response; + } + + // IMPORTANT: Clone the response. A response is a stream + // and because we want the browser to consume the response + // as well as the cache consuming the response, we need + // to clone it so we have two streams. + var responseToCache = response.clone(); + + caches.open(CACHE_NAME) + .then(function(cache) { + cache.put(event.request, responseToCache); + }); + + return response; + } + ); + }) + ); +}); \ No newline at end of file diff --git a/static/manifest.json b/static/manifest.json new file mode 100644 index 0000000..e141db0 --- /dev/null +++ b/static/manifest.json @@ -0,0 +1,20 @@ +{ + "short_name": "Spoor", + "name": "Spoor.app", + "icons": [ + { + "src": "/../static/img/icons-192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "/../static/img/icons-512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": "/", + "background_color": "#ffffff", + "display": "standalone", + "theme_color": "#009688" +} \ No newline at end of file diff --git a/templates/index.html b/templates/index.html index b97b2e7..3f583c6 100644 --- a/templates/index.html +++ b/templates/index.html @@ -16,8 +16,10 @@ Spoor APP - + + + @@ -209,6 +211,21 @@

Example requests:

+ + + diff --git a/templates/ovfiets.html b/templates/ovfiets.html index 64443c2..3f815e2 100644 --- a/templates/ovfiets.html +++ b/templates/ovfiets.html @@ -15,6 +15,9 @@ Spoor APP + + + @@ -136,6 +139,21 @@
Openingstijden
+ + + + @@ -189,6 +192,21 @@

OV-fiets

+ + + + + +