From 54cb76eece2f23b8b448f59b4a43fde395d2479e Mon Sep 17 00:00:00 2001 From: sovanna Date: Mon, 29 Jul 2019 12:23:36 +0200 Subject: [PATCH] chore(website): Completes manifest, config, uses deferred etc --- config.toml | 2 +- static/android-icon-512x512.png | Bin 0 -> 49435 bytes static/js/as.js | 40 +++++++++++++++ static/manifest.json | 88 ++++++++++++++++++-------------- static/sw.js | 48 +++++++++++++++++ templates/_base.html | 24 ++++++++- templates/index.html | 2 +- 7 files changed, 161 insertions(+), 43 deletions(-) create mode 100644 static/android-icon-512x512.png create mode 100644 static/js/as.js create mode 100644 static/sw.js diff --git a/config.toml b/config.toml index 4df3611..c061e8f 100644 --- a/config.toml +++ b/config.toml @@ -1,6 +1,6 @@ base_url = "/" title = "M-Labs" -description = "" +description = "M-Labs is a company and community who develops, manufactures and sells advanced open hardware devices and solutions. e.g Milkymist system-on-chip (SoC)" compile_sass = true highlight_code = true diff --git a/static/android-icon-512x512.png b/static/android-icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..ab265eb76a6f78762fe8d3f4b76a3f77bac87be6 GIT binary patch literal 49435 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 ULJY(o0pOpBp@l)6o?Gny0HvjnJ^%m! literal 0 HcmV?d00001 diff --git a/static/js/as.js b/static/js/as.js new file mode 100644 index 0000000..ead3917 --- /dev/null +++ b/static/js/as.js @@ -0,0 +1,40 @@ +(function () { + + var swRegistration; + var newWorker; + var isRefreshing = false; + var pathname = window.location.pathname; + var deferredPrompt; + + window.addEventListener('beforeinstallprompt', (e) => { + console.log('[AS] Before install prompt'); + // Prevent Chrome 67 and earlier from automatically showing the prompt + e.preventDefault(); + // Stash the event so it can be triggered later. + deferredPrompt = e; + }); + + if ('serviceWorker' in navigator) { + console.info('Service Worker is supported'); + + window.addEventListener('load', function () { + navigator.serviceWorker.register('/sw.js', { + updateViaCache: 'all', + }).then(function (registration) { + swRegistration = registration; + console.log('[SW] registration successful with scope: ', swRegistration.scope); + console.log('[SW] is waiting: ', swRegistration.waiting); + + navigator.serviceWorker.addEventListener('controllerchange', function () { + if (isRefreshing) { + return; + } + window.location.reload(); + isRefreshing = true; + }); + }, function (err) { + console.log('[SW] registration failed: ', err); + }); + }); + } +})(); diff --git a/static/manifest.json b/static/manifest.json index 013d4a6..b8b9a35 100755 --- a/static/manifest.json +++ b/static/manifest.json @@ -1,41 +1,51 @@ { - "name": "App", - "icons": [ - { - "src": "\/android-icon-36x36.png", - "sizes": "36x36", - "type": "image\/png", - "density": "0.75" - }, - { - "src": "\/android-icon-48x48.png", - "sizes": "48x48", - "type": "image\/png", - "density": "1.0" - }, - { - "src": "\/android-icon-72x72.png", - "sizes": "72x72", - "type": "image\/png", - "density": "1.5" - }, - { - "src": "\/android-icon-96x96.png", - "sizes": "96x96", - "type": "image\/png", - "density": "2.0" - }, - { - "src": "\/android-icon-144x144.png", - "sizes": "144x144", - "type": "image\/png", - "density": "3.0" - }, - { - "src": "\/android-icon-192x192.png", - "sizes": "192x192", - "type": "image\/png", - "density": "4.0" - } - ] + "name": "M-Labs", + "short_name": "M-Labs", + "start_url": "/", + "background_color": "#fff", + "display": "standalone", + "theme_color": "#715ec7", + "icons": [ + { + "src": "\/android-icon-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "\/android-icon-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "\/android-icon-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "\/android-icon-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "\/android-icon-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "\/android-icon-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + }, + { + "src": "\/android-icon-512x512.png", + "sizes": "512x512", + "type": "image\/png" + } + ] } \ No newline at end of file diff --git a/static/sw.js b/static/sw.js new file mode 100644 index 0000000..062ee68 --- /dev/null +++ b/static/sw.js @@ -0,0 +1,48 @@ +var CACHE_NAME = 'ml-02'; +var urlsToCache = [ + '/css/bootstrap-4.3.1.min.css', + '/css/styles.css', + '/js/jquery-3.3.1.slim.min.js', + '/js/bootstrap-4.3.1.min.js', + '/js/popper-1.14.7.min.js', + '/js/hammer-2.0.8.js', + '/js/three-r76.js', + '/js/SolveSpaceControls.js', + '/js/SolveSpaceControls.js', + '/js/models/kf25.js', + '/js/models/viewport.js', + '/js/models/multiport.js', + '/js/models/chamber.js', + '/js/models/k526s-body.js', + '/js/models/k526s-head.js', + '/js/models/k526s-fixture.js', + '/js/models/k526s-adapter.js', + '/js/models/k526s-adapter-assy.js', +]; + +self.addEventListener('install', function(event) { + console.log('[SW] Install'); + event.waitUntil( + caches.open(CACHE_NAME) + .then(function(cache) { + console.log('[SW] add to cache'); + return cache.addAll(urlsToCache); + }) + ); +}); + +self.addEventListener('fetch', function (event) { + console.log('[SW] Fetch'); + event.respondWith( + caches.match(event.request).then(function (response) { + return response || fetch(event.request); + }) + ); +}); + +self.addEventListener('message', function (event) { + if (event.data.action === 'skipWaiting') { + self.skipWaiting(); + caches.delete(CACHE_NAME); + } +}); \ No newline at end of file diff --git a/templates/_base.html b/templates/_base.html index ee34c42..8f02bae 100644 --- a/templates/_base.html +++ b/templates/_base.html @@ -21,6 +21,7 @@ {% block meta %}{% endblock meta %} + @@ -41,8 +42,6 @@ - - {% block styles %}{% endblock %} @@ -120,6 +119,25 @@ {% endblock %} + + +