Frontend: Initial service worker attempt
Signed-off-by: Fred Boniface <fred@fjla.uk>
This commit is contained in:
parent
8878902679
commit
6297422515
@ -33,7 +33,6 @@ http {
|
|||||||
gzip_static on;
|
gzip_static on;
|
||||||
brotli_static on;
|
brotli_static on;
|
||||||
error_page 404 /404.html;
|
error_page 404 /404.html;
|
||||||
error_page 500 501 502 503 504 505 /50x.html;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
location /api/ {
|
location /api/ {
|
||||||
|
@ -23,8 +23,10 @@
|
|||||||
<img class="titleimg" src="/images/logo/logo-full-250.png" alt="OwlBoard Logo">
|
<img class="titleimg" src="/images/logo/logo-full-250.png" alt="OwlBoard Logo">
|
||||||
</picture>
|
</picture>
|
||||||
<h2>Oh no!</h2>
|
<h2>Oh no!</h2>
|
||||||
<p>OwlBoard has encountered a Server Error</p>
|
<p>OwlBoard has encountered a Connection Error</p>
|
||||||
<p>Try going to the <a href="/">homepage</a></p>
|
<p>Check your data connection and try again</p>
|
||||||
<p>Error number: 50x</p>
|
<p>Go to the <a href="/">homepage</a></p>
|
||||||
|
<br>
|
||||||
|
<p>Error Code: CERR</p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,6 +1,10 @@
|
|||||||
// Init:
|
// Init:
|
||||||
pageInit();
|
pageInit();
|
||||||
|
|
||||||
|
if ("serviceWorker" in navigator) {
|
||||||
|
navigator.serviceWorker.register("/sw.js");
|
||||||
|
}
|
||||||
|
|
||||||
async function pageInit() {
|
async function pageInit() {
|
||||||
await loadQuickLinks();
|
await loadQuickLinks();
|
||||||
hideLoading(); // From lib.main
|
hideLoading(); // From lib.main
|
||||||
|
@ -224,4 +224,21 @@ async function singleCall(data) {
|
|||||||
<td class="detail-table-content">${data.st}</td>
|
<td class="detail-table-content">${data.st}</td>
|
||||||
<td class="detail-table-content ${time.changed}">${time.data}</td>
|
<td class="detail-table-content ${time.changed}">${time.data}</td>
|
||||||
</tr>`
|
</tr>`
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Error Handler */
|
||||||
|
async function errorHandler() {
|
||||||
|
if (sessionStorage.getItem("failcount")) {
|
||||||
|
var errCount = parseInt(sessionStorage.getItem("failcount"))
|
||||||
|
} else {
|
||||||
|
var errCount = 0;
|
||||||
|
}
|
||||||
|
errCount += 1;
|
||||||
|
sessionStorage.setItem("failcount", errCount.toString())
|
||||||
|
if (errCount < 10){
|
||||||
|
await delay(2000);
|
||||||
|
location.reload()
|
||||||
|
} else {
|
||||||
|
window.location.assign("conn-err.html")
|
||||||
|
}
|
||||||
}
|
}
|
@ -17,15 +17,13 @@ async function init() {
|
|||||||
try {
|
try {
|
||||||
var data = await publicLdb(stn)
|
var data = await publicLdb(stn)
|
||||||
setLoadingDesc(`${stn.toUpperCase()}\nParsing Data`)
|
setLoadingDesc(`${stn.toUpperCase()}\nParsing Data`)
|
||||||
log("init: Fetched LDB Data")
|
log("simple-board.init: Fetched LDB Data", "INFO")
|
||||||
parseLdb(data)
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
var data = null
|
var data = "err"
|
||||||
setLoadingDesc(`Handling\nError`)
|
setLoadingDesc(`Handling\nError`)
|
||||||
log("init: Unable to fetch LDB data")
|
log(`simple-board.init: Error fetching data: ${err}`, "ERR")
|
||||||
await delay(2000);
|
|
||||||
location.reload();
|
|
||||||
}
|
}
|
||||||
|
parseLdb(data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,13 +41,14 @@ async function parseLdb(data) {
|
|||||||
document.getElementById("err_no_data").style = "display:block;";
|
document.getElementById("err_no_data").style = "display:block;";
|
||||||
setHeaders("No Data",new Date())
|
setHeaders("No Data",new Date())
|
||||||
} else if (data == "err") { // Connection Error
|
} else if (data == "err") { // Connection Error
|
||||||
|
await delay(2000);
|
||||||
hideLoading();
|
hideLoading();
|
||||||
document.getElementById("error_notice").style = "display: block;";
|
document.getElementById("error_notice").style = "display: block;";
|
||||||
document.getElementById("err_conn").style = "display: block;";
|
document.getElementById("err_conn").style = "display: block;";
|
||||||
setHeaders("Connection Error",new Date())
|
setHeaders("Connection Error",new Date())
|
||||||
await delay(5000);
|
await delay(5000);
|
||||||
log(`parseLdb: Waited five seconds, reloading`)
|
log(`parseLdb: Passing to error handler`, "ERR")
|
||||||
location.reload()
|
errorHandler();
|
||||||
} else {
|
} else {
|
||||||
buildPage(data);
|
buildPage(data);
|
||||||
}
|
}
|
||||||
|
63
static/sw.js
63
static/sw.js
@ -1 +1,62 @@
|
|||||||
/* Service Worker */
|
/* Service Worker */
|
||||||
|
|
||||||
|
const appVersion = "0.0.1-dev"
|
||||||
|
const cacheName = "owlboard0-0-1-dev"
|
||||||
|
const cacheFiles = [
|
||||||
|
"/404.html",
|
||||||
|
"/board.html",
|
||||||
|
"/conn-err.html",
|
||||||
|
"/find-code.html",
|
||||||
|
"/help.html",
|
||||||
|
"/",
|
||||||
|
"/issue.html",
|
||||||
|
"/settings.html",
|
||||||
|
"/styles/fonts/firamono/firamono-500.woff2",
|
||||||
|
"/styles/fonts/firamono/firamono-regular.woff2",
|
||||||
|
"/styles/fonts/urwgothic/urwgothic.woff2",
|
||||||
|
"/styles/fonts/urwgothic/urwgothicDemi.woff2",
|
||||||
|
"/styles/boards.css",
|
||||||
|
"/styles/find-code.css",
|
||||||
|
"/styles/help.css",
|
||||||
|
"/styles/main.css",
|
||||||
|
"/styles/settings.css",
|
||||||
|
"/js/find-code.js",
|
||||||
|
"/js/index.js",
|
||||||
|
"/js/lib.board.js",
|
||||||
|
"/js/lib.main.js",
|
||||||
|
"/js/settings.js",
|
||||||
|
"/js/simple-board.js",
|
||||||
|
"/images/icon.svg",
|
||||||
|
"/images/logo/wide_logo.svg",
|
||||||
|
"/images/logo/mono-logo.svg",
|
||||||
|
"/images/nav/alert_icon.svg",
|
||||||
|
"/images/nav/save.svg",
|
||||||
|
"/images/nav/home_icon.svg",
|
||||||
|
"/images/nre/nre-powered_200w.webp"
|
||||||
|
]
|
||||||
|
|
||||||
|
self.addEventListener("install", (e) => {
|
||||||
|
console.log("[Service Worker] Install");
|
||||||
|
e.waitUntil(
|
||||||
|
(async () => {
|
||||||
|
const cache = await caches.open(cacheName);
|
||||||
|
console.log("[Service Worker] Caching app data");
|
||||||
|
await cache.addAll(cacheFiles);
|
||||||
|
})()
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
self.addEventListener("fetch", (e) => {
|
||||||
|
e.respondWith(
|
||||||
|
(async () => {
|
||||||
|
const r = await caches.match(e.request);
|
||||||
|
console.log(`[Service Worker] Fetching resource: ${e.request.url}`);
|
||||||
|
if (r) {
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
const response = await fetch(e.request);
|
||||||
|
console.log(`[Service Worker] Fetching from server: ${e.request.url}`);
|
||||||
|
return response;
|
||||||
|
})()
|
||||||
|
);
|
||||||
|
});
|
Reference in New Issue
Block a user