diff --git a/.eslintrc.js b/.eslintrc.js index 3a42aef..073ba35 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,30 +1,31 @@ module.exports = { - 'env': { - 'browser': true, - 'es2021': true - }, - 'extends': 'eslint:recommended', - 'overrides': [ + 'env': { + 'browser': true, + 'es2021': true + }, + 'extends': 'eslint:recommended', + 'overrides': [ + ], + 'parserOptions': { + 'ecmaVersion': 'latest' + }, + 'rules': { + 'indent': [ + 'error', + 2 ], - 'parserOptions': { - 'ecmaVersion': 'latest' - }, - 'rules': { - 'indent': [ - 'error', - 4 - ], - 'linebreak-style': [ - 'error', - 'unix' - ], - 'quotes': [ - 'error', - 'single' - ], - 'semi': [ - 'error', - 'never' - ] - } + 'linebreak-style': [ + 'error', + 'unix' + ], + 'quotes': [ + 'error', + 'single' + ], + 'semi': [ + 'error', + 'never' + ], + 'no-undef': 'off', + } } diff --git a/find-code.html b/find-code.html index bee7412..12ee02b 100644 --- a/find-code.html +++ b/find-code.html @@ -1,24 +1,23 @@ - - + + - - - - + + + + OwlBoard - Code Lookup -
@@ -27,7 +26,6 @@
- @@ -35,8 +33,8 @@ OwlBoard Logo

Code Lookup

-

Enter one known code in the relevant box below and hit submit. - Where they exist, the other code types will be filled in.

+

Enter one known code in the relevant box below and hit submit. + Where they exist, the other code types will be filled in.

You cannot yet lookup by location name as the values are not unique.

Location name search will be added in the future.

@@ -47,7 +45,7 @@
-
+



@@ -57,7 +55,7 @@


-
+
diff --git a/js/auth.js b/js/auth.js index c5decc1..b2ac26a 100644 --- a/js/auth.js +++ b/js/auth.js @@ -6,74 +6,74 @@ Auth process: User Requests Key => Server emails key to user => auth.js adds this to localStorage */ const cmd = document.getElementById('cmd') // Assign element to const -versionDisplay(); // Show web version in footer -init(); // Run init function +versionDisplay() // Show web version in footer +init() // Run init function async function sendHome(){ - await delay(2000); - location.replace('./') + await delay(2000) + location.replace('./') } async function cmdOut(message) { - html = "

" + message + "

" - cmd.insertAdjacentHTML('beforeend', html) + html = '

' + message + '

' + cmd.insertAdjacentHTML('beforeend', html) } async function registerKey(key) { // Posts key to server and listens for response. - const url = `${window.location.origin}/api/v1/register/register`; - const res = await fetch(url, { // The response will contain the UUID which will be registered - method: "POST", - headers: { - "Content-Type": "application/json" - }, - redirect: "follow", - body: JSON.stringify({uuid: key}) - }) - const data = await res.json(); - return res.status === 201 - ? (localStorage.setItem("uuid", data.api_key), true) - : false; + const url = `${window.location.origin}/api/v1/register/register` + const res = await fetch(url, { // The response will contain the UUID which will be registered + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + redirect: 'follow', + body: JSON.stringify({uuid: key}) + }) + const data = await res.json() + return res.status === 201 + ? (localStorage.setItem('uuid', data.api_key), true) + : false } async function checkAuth(key) { - const url = `${window.location.origin}/api/v1/auth/test`; - const res = await fetch(url, { - method: "GET", - redirect: "follow", - headers: { - "uuid": key - } - }) - return res.status === 200 ? true : false + const url = `${window.location.origin}/api/v1/auth/test` + const res = await fetch(url, { + method: 'GET', + redirect: 'follow', + headers: { + 'uuid': key + } + }) + return res.status === 200 ? true : false } async function init(){ // Reads registration key from query, and calls registerKey(key) - cmdOut("Reading authorisation code"); - const key = await getQuery("key"); - if (key === "false") { - cmdOut("No valid key found") - cmdOut("Try clicking the link again or request a new activation link") - hideLoading() - return - } - cmdOut("Requesting API Key from server"); - if (!await registerKey(key)) { - cmdOut("Failed to register or invalid key") - cmdOut("Try again later or request a new link") - hideLoading() - return - } - showLoading() - if (! await checkAuth(localStorage.getItem("uuid"))) { - cmdOut("Authentication Check failed") - cmdOut("Please logout and request a new link") - hideLoading() - await delay(2000) - location.replace("./") - } - hideLoading(); - cmdOut("Authentication succesful") - cmdOut("Redirecting to home") - await delay(3000) - location.replace("./") + cmdOut('Reading authorisation code') + const key = await getQuery('key') + if (key === 'false') { + cmdOut('No valid key found') + cmdOut('Try clicking the link again or request a new activation link') + hideLoading() + return + } + cmdOut('Requesting API Key from server') + if (!await registerKey(key)) { + cmdOut('Failed to register or invalid key') + cmdOut('Try again later or request a new link') + hideLoading() + return + } + showLoading() + if (! await checkAuth(localStorage.getItem('uuid'))) { + cmdOut('Authentication Check failed') + cmdOut('Please logout and request a new link') + hideLoading() + await delay(2000) + location.replace('./') + } + hideLoading() + cmdOut('Authentication succesful') + cmdOut('Redirecting to home') + await delay(3000) + location.replace('./') } \ No newline at end of file diff --git a/js/find-code.js b/js/find-code.js index 915701e..6c12395 100644 --- a/js/find-code.js +++ b/js/find-code.js @@ -1,97 +1,98 @@ -hideLoading(); +hideLoading() async function fetchEntry(){ // This can be condensed - showLoading(); - var name = document.getElementById("name") - var crs = document.getElementById("3alpha") - var nlc = document.getElementById("nlc") - var tiploc = document.getElementById("tiploc") - var stanox = document.getElementById("stanox") + showLoading() + var name = document.getElementById('name') + var crs = document.getElementById('3alpha') + var nlc = document.getElementById('nlc') + var tiploc = document.getElementById('tiploc') + var stanox = document.getElementById('stanox') - var values = { - name: name.value, - crs: crs.value, - nlc: nlc.value, - tiploc: tiploc.value, - stanox: stanox.value - } - parseData(values) + var values = { + name: name.value, + crs: crs.value, + nlc: nlc.value, + tiploc: tiploc.value, + stanox: stanox.value + } + parseData(values) } async function parseData(values){ - vibe() - if (values.crs != ""){ - setLoadingDesc(`Searching\n${values.crs.toUpperCase()}`) - var data = await getData("crs", values.crs) - } else if (values.nlc != ""){ - setLoadingDesc(`Searching\n${values.nlc.toUpperCase()}`) - var data = await getData("nlc", values.nlc) - } else if (values.tiploc != ""){ - setLoadingDesc(`Searching\n${values.tiploc.toUpperCase()}`) - var data = await getData("tiploc", values.tiploc) - } else if (values.stanox != ""){ - setLoadingDesc(`Searching\n${values.stanox.toUpperCase()}`) - var data = await getData("stanox", values.stanox) - } else if (values.name != ""){ - setLoadingDesc(`Searching\n${values.name}`) - var data = await getData("name", values.name) - } else { - log("find-code.parseData: No data entered", "WARN") - await clearForm(); - document.getElementById("name").value = "No data entered" - vibe("err"); - hideLoading(); - return; - } - displayData(data); + vibe() + let data + if (values.crs != ''){ + setLoadingDesc(`Searching\n${values.crs.toUpperCase()}`) + data = await getData('crs', values.crs) + } else if (values.nlc != ''){ + setLoadingDesc(`Searching\n${values.nlc.toUpperCase()}`) + data = await getData('nlc', values.nlc) + } else if (values.tiploc != ''){ + setLoadingDesc(`Searching\n${values.tiploc.toUpperCase()}`) + data = await getData('tiploc', values.tiploc) + } else if (values.stanox != ''){ + setLoadingDesc(`Searching\n${values.stanox.toUpperCase()}`) + data = await getData('stanox', values.stanox) + } else if (values.name != ''){ + setLoadingDesc(`Searching\n${values.name}`) + data = await getData('name', values.name) + } else { + log('find-code.parseData: No data entered', 'WARN') + await clearForm() + document.getElementById('name').value = 'No data entered' + vibe('err') + hideLoading() + return + } + displayData(data) } async function getData(type, value){ - log(`find-code.getData: Looking for: ${type} '${value}'`, "INFO") - try { - var url = `${window.location.origin}/api/v1/find/${type}/${value}`; - var resp = await fetch(url); - return await resp.json() - } catch (err) { - log(`find-code.getData: Error getting data: ${err}`, "WARN") - vibe("err") - return ""; - } + log(`find-code.getData: Looking for: ${type} '${value}'`, 'INFO') + try { + var url = `${window.location.origin}/api/v1/find/${type}/${value}` + var resp = await fetch(url) + return await resp.json() + } catch (err) { + log(`find-code.getData: Error getting data: ${err}`, 'WARN') + vibe('err') + return '' + } } async function displayData(data){ - hideLoading(); - if (data.status === "failed" || data == ""){ - log(`find-code.displayData: Unable to find data`, "WARN") - clearForm(); - document.getElementById("name").value = "Not Found"; - } else { - log(`find-code.displayData: Inserting data`, "INFO") - vibe("ok") - try { - document.getElementById("name").value = data['0']['NLCDESC'] - } catch (err) {} - try { - document.getElementById("3alpha").value = data['0']['3ALPHA'] - } catch (err) {} - try { - document.getElementById("nlc").value = data['0']['NLC'] - } catch (err) {} - try { - document.getElementById("tiploc").value = data['0']['TIPLOC'] - } catch (err) {} - try { - document.getElementById("stanox").value = data['0']['STANOX'] - } catch (err) {} - } + hideLoading() + if (data.status === 'failed' || data == ''){ + log('find-code.displayData: Unable to find data', 'WARN') + clearForm() + document.getElementById('name').value = 'Not Found' + } else { + log('find-code.displayData: Inserting data', 'INFO') + vibe('ok') + try { + document.getElementById('name').value = data['0']['NLCDESC'] + } catch (err) {} + try { + document.getElementById('3alpha').value = data['0']['3ALPHA'] + } catch (err) {} + try { + document.getElementById('nlc').value = data['0']['NLC'] + } catch (err) {} + try { + document.getElementById('tiploc').value = data['0']['TIPLOC'] + } catch (err) {} + try { + document.getElementById('stanox').value = data['0']['STANOX'] + } catch (err) {} + } } async function clearForm(){ - document.getElementById("name").value = "" - document.getElementById("3alpha").value = "" - document.getElementById("nlc").value = "" - document.getElementById("tiploc").value = "" - document.getElementById("stanox").value = "" - vibe("ok"); - hideLoading(); + document.getElementById('name').value = '' + document.getElementById('3alpha').value = '' + document.getElementById('nlc').value = '' + document.getElementById('tiploc').value = '' + document.getElementById('stanox').value = '' + vibe('ok') + hideLoading() } \ No newline at end of file diff --git a/js/index.js b/js/index.js index 50b4817..cea6830 100644 --- a/js/index.js +++ b/js/index.js @@ -1,27 +1,27 @@ // Init: -pageInit(); -versionDisplay(); +pageInit() +versionDisplay() -if ("serviceWorker" in navigator) { - navigator.serviceWorker.register("/sw.js"); +if ('serviceWorker' in navigator) { + navigator.serviceWorker.register('/sw.js') } async function pageInit() { - await loadQuickLinks(); - hideLoading(); // From lib.main + await loadQuickLinks() + hideLoading() // From lib.main } async function gotoBoard(station){ - vibe("ok") - window.location.assign(`${window.location.origin}/board.html?stn=${station}`); + vibe('ok') + window.location.assign(`${window.location.origin}/board.html?stn=${station}`) } async function loadQuickLinks(){ - var data = await getQuickLinks(); // From lib.main - var buttons = ""; - for(var i = 0; i < data.length; i++) { - buttons += ` + var data = await getQuickLinks() // From lib.main + var buttons = '' + for(var i = 0; i < data.length; i++) { + buttons += ` ` - } - document.getElementById("quick_links").insertAdjacentHTML("beforeend", buttons) + } + document.getElementById('quick_links').insertAdjacentHTML('beforeend', buttons) } \ No newline at end of file diff --git a/js/issue.js b/js/issue.js index 01d3940..e8330c5 100644 --- a/js/issue.js +++ b/js/issue.js @@ -1,88 +1,88 @@ -init(); +init() async function init() { - hideLoading() + hideLoading() } async function submit() { - setLoadingDesc("Collecting\nData") - showLoading() - var browserData = await getBrowserData(); - setLoadingDesc("Reading\nForm") - var formData = await getFormData(); - preflight({browserData: browserData, formData: formData}) + setLoadingDesc('Collecting\nData') + showLoading() + var browserData = await getBrowserData() + setLoadingDesc('Reading\nForm') + var formData = await getFormData() + preflight({browserData: browserData, formData: formData}) } async function getFormData() { - let data = {} - data.subject = document.getElementById("subject").value - data.message = document.getElementById("message").value - return data + let data = {} + data.subject = document.getElementById('subject').value + data.message = document.getElementById('message').value + return data } async function getBrowserData() { - let data = {} - data.userAgent = navigator.userAgent - data.userAgentData = JSON.stringify(navigator.userAgentData) - data.localStorage = JSON.stringify(await storageAvailable('localStorage')) - data.sessionStorage = JSON.stringify(await storageAvailable('sessionStorage')) - data.viewport = `${window.innerWidth} x ${window.innerHeight}` - return data + let data = {} + data.userAgent = navigator.userAgent + data.userAgentData = JSON.stringify(navigator.userAgentData) + data.localStorage = JSON.stringify(await storageAvailable('localStorage')) + data.sessionStorage = JSON.stringify(await storageAvailable('sessionStorage')) + data.viewport = `${window.innerWidth} x ${window.innerHeight}` + return data } async function preflight(data) { - document.getElementById("pre_subject").textContent = data.formData.subject - pre_msg = `UserAgent: ${data.browserData.userAgent} + document.getElementById('pre_subject').textContent = data.formData.subject + pre_msg = `UserAgent: ${data.browserData.userAgent} \nUserAgentData: ${data.browserData.userAgentData} \nlocalStorage Avail: ${data.browserData.localStorage} \nsessionStorage Avail: ${data.browserData.sessionStorage} \nViewport size: ${data.browserData.viewport} \nUser message:\n\n${data.formData.message}` - document.getElementById("pre_message").innerText = pre_msg - hideLoading() - document.getElementById("preflight").style = "display: block" - sessionStorage.setItem("preflight_subject", data.formData.subject) - sessionStorage.setItem("preflight_msg", pre_msg) + document.getElementById('pre_message').innerText = pre_msg + hideLoading() + document.getElementById('preflight').style = 'display: block' + sessionStorage.setItem('preflight_subject', data.formData.subject) + sessionStorage.setItem('preflight_msg', pre_msg) } async function cancel() { - document.getElementById("preflight").style = "display: none" + document.getElementById('preflight').style = 'display: none' } async function send() { - setLoadingDesc("Sending\nData") - document.getElementById("preflight").style = "display: none" - showLoading() - var subject = sessionStorage.getItem("preflight_subject"); - var msg = sessionStorage.getItem("preflight_msg") - if (typeof subject != "string") { - subject = document.getElementById("preflight_subject").innerText - } - if (typeof msg != "string") { - msg = document.getElementById("preflight_msg") - } - var payload = JSON.stringify({subject: subject, msg: msg}) - console.log(payload); - let opt = { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json' - }, - redirect: 'follow', - body: payload - } - var res = await fetch(`${window.location.origin}/api/v1/issue`, opt) - if (res.status == 200) { - setLoadingDesc("Success") - vibe("ok") - await delay(2500) - window.location.replace("/") - } else { - setLoadingDesc("Error") - vibe("err") - await delay(2500) - hideLoading() - document.getElementById("preflight").style = "display: none;" - } + setLoadingDesc('Sending\nData') + document.getElementById('preflight').style = 'display: none' + showLoading() + var subject = sessionStorage.getItem('preflight_subject') + var msg = sessionStorage.getItem('preflight_msg') + if (typeof subject != 'string') { + subject = document.getElementById('preflight_subject').innerText + } + if (typeof msg != 'string') { + msg = document.getElementById('preflight_msg') + } + var payload = JSON.stringify({subject: subject, msg: msg}) + console.log(payload) + let opt = { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json' + }, + redirect: 'follow', + body: payload + } + var res = await fetch(`${window.location.origin}/api/v1/issue`, opt) + if (res.status == 200) { + setLoadingDesc('Success') + vibe('ok') + await delay(2500) + window.location.replace('/') + } else { + setLoadingDesc('Error') + vibe('err') + await delay(2500) + hideLoading() + document.getElementById('preflight').style = 'display: none;' + } } \ No newline at end of file diff --git a/js/lib.board.js b/js/lib.board.js index ed93dfb..75494c1 100644 --- a/js/lib.board.js +++ b/js/lib.board.js @@ -1,196 +1,196 @@ /* Fetch Functions */ async function publicLdb(stn) { - var url = `${window.location.origin}/api/v1/ldb/${stn}`; - console.time("Time: Fetch LDB Data") - var resp = await fetch(url); - console.timeEnd("Time: Fetch LDB Data") - return await resp.json(); + var url = `${window.location.origin}/api/v1/ldb/${stn}` + console.time('Time: Fetch LDB Data') + var resp = await fetch(url) + console.timeEnd('Time: Fetch LDB Data') + return await resp.json() } /* Set page heading */ async function setHeaders(title,time) { - var prefix = `OwlBoard - ` - document.title = `${prefix}${title}` - document.getElementById("stn_name").textContent = title - document.getElementById("fetch_time").textContent = time.toLocaleTimeString() - sessionStorage.setItem("board_location", title); + var prefix = 'OwlBoard - ' + document.title = `${prefix}${title}` + document.getElementById('stn_name').textContent = title + document.getElementById('fetch_time').textContent = time.toLocaleTimeString() + sessionStorage.setItem('board_location', title) } /* Display No Trains Message */ async function displayNoTrains() { - log("No Trains", "WARN") - document.getElementById('no_services').style = "display: block;"; - hideLoading(); + log('No Trains', 'WARN') + document.getElementById('no_services').style = 'display: block;' + hideLoading() } /* Parse the value of `platform` to account for unknown platforms */ async function parsePlatform(svc){ - if (svc.platform != undefined) { - var platform = svc.platform; - } else { - var platform = "-"; - } - if (svc.platformChanged) { // Not present in public API, ready for staff version. - var changed = "changed"; - } else { - var changed = ""; - } - return {num: platform, change: changed} + if (svc.platform != undefined) { + var platform = svc.platform + } else { + var platform = '-' + } + if (svc.platformChanged) { // Not present in public API, ready for staff version. + var changed = 'changed' + } else { + var changed = '' + } + return {num: platform, change: changed} } /* Change value of time strings to fit well on small screens */ async function parseTime(string){ - switch (string) { - case "Delayed": - var output = "LATE"; - var change = "changed"; - break; - case "Cancelled": - var output = "CANC"; - var change = "cancelled"; - break; - case "On time": - var output = "RT"; - var change = ""; - break; - case "": - var output = "-"; - var change = ""; - break; - case undefined: - var output = "-"; - var change = ""; - break; - case "No report": - var output = "-"; - var change = ""; - break; - case "undefined": - var output = false; - var change = ""; - break; - default: - var output = string; - var change = "changed"; - } - return {data: output, changed: change}; + switch (string) { + case 'Delayed': + var output = 'LATE' + var change = 'changed' + break + case 'Cancelled': + var output = 'CANC' + var change = 'cancelled' + break + case 'On time': + var output = 'RT' + var change = '' + break + case '': + var output = '-' + var change = '' + break + case undefined: + var output = '-' + var change = '' + break + case 'No report': + var output = '-' + var change = '' + break + case 'undefined': + var output = false + var change = '' + break + default: + var output = string + var change = 'changed' + } + return {data: output, changed: change} } /* Convert multiple Origin/Destinations to single string */ async function parseName(location) { - if (Array.isArray(location)) { - var name = `${location[0]['locationName']} & ${location[1]['locationName']}` - return name; - } - else { - return location.locationName; - } + if (Array.isArray(location)) { + var name = `${location[0]['locationName']} & ${location[1]['locationName']}` + return name + } + else { + return location.locationName + } } // Display Alert Messages async function displayAlerts(array) { - var counter = 0 - var messages = "" - for(var i = 0; i < array.length; i++) { - // Increment counter - counter += 1; - // Reset Vars - messages += `

${array[i]}

`; + var counter = 0 + var messages = '' + for(var i = 0; i < array.length; i++) { + // Increment counter + counter += 1 + // Reset Vars + messages += `

${array[i]}

` + } + if (counter > 0) { + document.getElementById('alerts_msg').insertAdjacentHTML('beforeend', messages) + document.getElementById('alerts').style = 'display:block' + document.getElementById('alerts_bar').style = 'display:block' + if (counter == 1) { + document.getElementById('alert_bar_note').textContent = `There is ${counter} active alert` + } else if (counter > 1) { + document.getElementById('alert_bar_note').textContent = `There are ${counter} active alerts` } - if (counter > 0) { - document.getElementById("alerts_msg").insertAdjacentHTML("beforeend", messages) - document.getElementById("alerts").style = "display:block" - document.getElementById("alerts_bar").style = "display:block" - if (counter == 1) { - document.getElementById("alert_bar_note").textContent = `There is ${counter} active alert` - } else if (counter > 1) { - document.getElementById("alert_bar_note").textContent = `There are ${counter} active alerts` - } - return true; - } - return false; + return true + } + return false } /* Show/Hide alerts box */ async function inflateAlerts() { - document.getElementById("alerts_msg").style = "display:block;"; - document.getElementById("alert_expand_arrow").style = "transform: rotate(180deg);"; - document.getElementById("alerts_bar").setAttribute("onclick", "deflateAlerts()") + document.getElementById('alerts_msg').style = 'display:block;' + document.getElementById('alert_expand_arrow').style = 'transform: rotate(180deg);' + document.getElementById('alerts_bar').setAttribute('onclick', 'deflateAlerts()') } async function deflateAlerts() { - document.getElementById("alerts_msg").style = "display.none;"; - document.getElementById("alert_expand_arrow").style = "transform: rotate(0deg);"; - document.getElementById("alerts_bar").setAttribute("onclick", "inflateAlerts()") + document.getElementById('alerts_msg').style = 'display.none;' + document.getElementById('alert_expand_arrow').style = 'transform: rotate(0deg);' + document.getElementById('alerts_bar').setAttribute('onclick', 'inflateAlerts()') } /*//// SERVICE DETAIL LISTS ////*/ // Build calling list: -- This outputs calling point data to sessionStorage in the format: key{pre: [{PREVIOUS_Stops}], post: [{POST_STOPS}]} async function buildCallLists(svc) { - var sSvcId = svc.serviceID; - var oSvcData = { - plat: svc.platform, - sta: svc.sta, - eta: svc.eta, - std: svc.std, - etd: svc.etd - }; - try { - if (typeof svc.previousCallingPoints.callingPointList.callingPoint != 'undefined') { - let array = await makeArray(svc.previousCallingPoints.callingPointList.callingPoint); - oSvcData.pre = array; - } - } catch (err) { /* Do nothing if ERR */ } - try { - if (typeof svc.subsequentCallingPoints.callingPointList.callingPoint != 'undefined') { - let array = await makeArray(svc.subsequentCallingPoints.callingPointList.callingPoint); - oSvcData.post = array; - } - } catch (err) { /* Do nothing if ERR */ } - sessionStorage.setItem(sSvcId, JSON.stringify(oSvcData)) + var sSvcId = svc.serviceID + var oSvcData = { + plat: svc.platform, + sta: svc.sta, + eta: svc.eta, + std: svc.std, + etd: svc.etd + } + try { + if (typeof svc.previousCallingPoints.callingPointList.callingPoint != 'undefined') { + let array = await makeArray(svc.previousCallingPoints.callingPointList.callingPoint) + oSvcData.pre = array + } + } catch (err) { /* Do nothing if ERR */ } + try { + if (typeof svc.subsequentCallingPoints.callingPointList.callingPoint != 'undefined') { + let array = await makeArray(svc.subsequentCallingPoints.callingPointList.callingPoint) + oSvcData.post = array + } + } catch (err) { /* Do nothing if ERR */ } + sessionStorage.setItem(sSvcId, JSON.stringify(oSvcData)) } /* Display calling list: - Read data from sessionStorage and write to DOM. */ async function showCalls(id) { - log(`Showing details for service ${id}`, "INFO") - var svcDetail = await JSON.parse(sessionStorage.getItem(id)); - var pre = ""; - var post = ""; - if (typeof svcDetail.pre != 'undefined') { - for(var preCall = 0; preCall < svcDetail.pre.length; preCall++) { - pre += await singleCall(svcDetail.pre[preCall]); - } + log(`Showing details for service ${id}`, 'INFO') + var svcDetail = await JSON.parse(sessionStorage.getItem(id)) + var pre = '' + var post = '' + if (typeof svcDetail.pre != 'undefined') { + for(var preCall = 0; preCall < svcDetail.pre.length; preCall++) { + pre += await singleCall(svcDetail.pre[preCall]) } - if (typeof svcDetail.post != 'undefined') { - for(var postCall = 0; postCall < svcDetail.post.length; postCall++) { - post += await singleCall(svcDetail.post[postCall]); - } + } + if (typeof svcDetail.post != 'undefined') { + for(var postCall = 0; postCall < svcDetail.post.length; postCall++) { + post += await singleCall(svcDetail.post[postCall]) } - /* Run retreived data through parsers */ - var thisStd = await parseTime(svcDetail.std); - var thisEtd = await parseTime(svcDetail.etd); - var thisSta = await parseTime(svcDetail.sta); - var thisEta = await parseTime(svcDetail.eta); - /* Prepare data for this station */ - if (thisStd.data != "-") { - var sTime = `${thisStd.data}` - var eTime = `${thisEtd.data}` - var change = thisEtd.changed - } else { - var sTime = `${thisSta.data}` - var eTime = `${thisEta.data}` - var change = thisEta.changed - }; + } + /* Run retreived data through parsers */ + var thisStd = await parseTime(svcDetail.std) + var thisEtd = await parseTime(svcDetail.etd) + var thisSta = await parseTime(svcDetail.sta) + var thisEta = await parseTime(svcDetail.eta) + /* Prepare data for this station */ + if (thisStd.data != '-') { + var sTime = `${thisStd.data}` + var eTime = `${thisEtd.data}` + var change = thisEtd.changed + } else { + var sTime = `${thisSta.data}` + var eTime = `${thisEta.data}` + var change = thisEta.changed + }; - let here = ` - ${sessionStorage.getItem("board_location")} + let here = ` + ${sessionStorage.getItem('board_location')} ${sTime} ${eTime} ` - /* Prepare then insert DOM Data */ - let dom = `
+ /* Prepare then insert DOM Data */ + let dom = `

X

@@ -204,26 +204,26 @@ async function showCalls(id) {
` - document.body.insertAdjacentHTML("beforeend", dom); - document.getElementById(id).style = "display: block;"; - return; + document.body.insertAdjacentHTML('beforeend', dom) + document.getElementById(id).style = 'display: block;' + return } async function hideCalls(id) { - let element = document.getElementById(id) - element.style = "display: none;"; - element.remove(); - return; + let element = document.getElementById(id) + element.style = 'display: none;' + element.remove() + return } /* Builds the train data information in to a table row */ async function singleCall(data) { - if (typeof data.et != "undefined") { - var time = await parseTime(data.et) - } else if (typeof data.at != "undefined") { - var time = await parseTime(data.at) - } - return ` + if (typeof data.et != 'undefined') { + var time = await parseTime(data.et) + } else if (typeof data.at != 'undefined') { + var time = await parseTime(data.at) + } + return ` ${data.locationName} ${data.st} ${time.data} @@ -232,19 +232,19 @@ async function singleCall(data) { /* 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(3000); - vibe("err") - location.reload() - } else { - sessionStorage.removeItem("failcount"); - window.location.assign("conn-err.html") - } + 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(3000) + vibe('err') + location.reload() + } else { + sessionStorage.removeItem('failcount') + window.location.assign('conn-err.html') + } } \ No newline at end of file diff --git a/js/lib.main.js b/js/lib.main.js index 6dc50bd..70cc61d 100644 --- a/js/lib.main.js +++ b/js/lib.main.js @@ -1,196 +1,196 @@ /* All Page Init */ -const version = "2.0.0-dev"; +const version = '2.0.0-dev' /* Feature Detectors */ /* Valid values for ${type}: localstorage, sessionstorage */ async function storageAvailable(type) { // Currently not used - try { - let storage = window[type]; - let x = '__storage_test__'; - storage.setItem(x, "test"); - storage.getItem(x); - storage.removeItem(x); - log(`lib.main.storageAvailable: ${type} is available`, "INFO") - return true; - } catch (err) { - log(`lib.main.storageAvailable: ${type} is not available`, "ERR") - return false; - } + try { + let storage = window[type] + let x = '__storage_test__' + storage.setItem(x, 'test') + storage.getItem(x) + storage.removeItem(x) + log(`lib.main.storageAvailable: ${type} is available`, 'INFO') + return true + } catch (err) { + log(`lib.main.storageAvailable: ${type} is not available`, 'ERR') + return false + } } async function versionDisplay() { // Outputs version string on to any page with a tag with id="ver_str" - localStorage.setItem("version", version) - document.getElementById('ver_str').textContent = version - return; + localStorage.setItem('version', version) + document.getElementById('ver_str').textContent = version + return } /* Array Converter Converts a string to a single item array */ async function makeArray(data) { - if (!Array.isArray(data)) { - var array = []; - array.push(data); - return array; - } - return data; + if (!Array.isArray(data)) { + var array = [] + array.push(data) + return array + } + return data } /* Timeouts */ /* Usage: '' */ -const delay = ms => new Promise(res => setTimeout(res, ms)); +const delay = ms => new Promise(res => setTimeout(res, ms)) /* Log Helper */ /* Maintains backwards compatibility for previous implementation of log helper */ async function log(msg, type) { - const mode = "tst" - if (mode === "prod" && type != "ERR") { - return; - } - var time = new Date().toISOString(); - switch (type) { - case "ERR": - console.error(`${time} - ${msg}`); - break; - case "WARN": - console.warn(`${time} - ${msg}`); - break; - case "INFO": - console.info(`${time} - ${msg}`); - break; - default: - console.log(`${time} - ${msg}`); - break; - }; -}; + const mode = 'tst' + if (mode === 'prod' && type != 'ERR') { + return + } + var time = new Date().toISOString() + switch (type) { + case 'ERR': + console.error(`${time} - ${msg}`) + break + case 'WARN': + console.warn(`${time} - ${msg}`) + break + case 'INFO': + console.info(`${time} - ${msg}`) + break + default: + console.log(`${time} - ${msg}`) + break + } +} /* Show/Hide - Menu Control */ async function sidebarOpen() { - document.getElementById("sidebar").style.width = "50%"; - document.getElementById("sidebar_open_short").style.display = "none"; - document.getElementById("sidebar_close_short").style.display = "block"; - } + document.getElementById('sidebar').style.width = '50%' + document.getElementById('sidebar_open_short').style.display = 'none' + document.getElementById('sidebar_close_short').style.display = 'block' +} - async function sidebarClose() { - document.getElementById("sidebar").style.width = "0%" - document.getElementById("sidebar_open_short").style.display = "block"; - document.getElementById("sidebar_close_short").style.display = "none"; - } +async function sidebarClose() { + document.getElementById('sidebar').style.width = '0%' + document.getElementById('sidebar_open_short').style.display = 'block' + document.getElementById('sidebar_close_short').style.display = 'none' +} /* Loading Box Control */ async function hideLoading() { - document.getElementById("loading").style = "display: none;"; + document.getElementById('loading').style = 'display: none;' } - /* DEPRECIATED: Alias for hideLoading() - Marked for removal*/ - async function clearLoading() { - log("Depreciated function called - clearLoading() - Alias to hideLoading()", "WARN") - hideLoading(); - } +/* DEPRECIATED: Alias for hideLoading() - Marked for removal*/ +async function clearLoading() { + log('Depreciated function called - clearLoading() - Alias to hideLoading()', 'WARN') + hideLoading() +} async function showLoading() { - document.getElementById("loading").style = "display: block;"; + document.getElementById('loading').style = 'display: block;' } async function setLoadingDesc(desc) { - document.getElementById("loading_desc").textContent = `${desc}`; + document.getElementById('loading_desc').textContent = `${desc}` } /* Fetch User Settings */ async function getQuickLinks() { - var defaults = - ["bri","lwh","srd","mtp","rda","cfn", - "sml","shh","pri","avn","sar","svb"]; - try { - if (localStorage.getItem("qlOpt")) { - var data = JSON.parse(localStorage.getItem("qlOpt")); - } else { - data = defaults; - } - } catch (err) { - data = defaults; + var defaults = + ['bri','lwh','srd','mtp','rda','cfn', + 'sml','shh','pri','avn','sar','svb'] + try { + if (localStorage.getItem('qlOpt')) { + var data = JSON.parse(localStorage.getItem('qlOpt')) + } else { + data = defaults } - return data.sort(); + } catch (err) { + data = defaults + } + return data.sort() } /* Fetch a known query parameter from the pages URL */ async function getQuery(param) { - var params = new URLSearchParams(window.location.search) - var query = params.get(param) - if (query) { - return query - } else { - return 'false' - } + var params = new URLSearchParams(window.location.search) + var query = params.get(param) + if (query) { + return query + } else { + return 'false' + } } async function getApi(path,auth = false) { - let apiVer = 'v1' - let url = `${window.location.origin}/api/${apiVer}/${path}` - log(`getApi: Fetching from endpoint: ${url}, Auth=${auth}`) - if (auth) { - let key = localStorage.getItem('uuid') - var options = { - method: "GET", - redirect: "follow", - headers: { - "uuid": key - } - } - } else { - var options = { - method: "GET", - redirect: "follow" - } + let apiVer = 'v1' + let url = `${window.location.origin}/api/${apiVer}/${path}` + log(`getApi: Fetching from endpoint: ${url}, Auth=${auth}`) + if (auth) { + let key = localStorage.getItem('uuid') + var options = { + method: 'GET', + redirect: 'follow', + headers: { + 'uuid': key + } } - try { - var resp = await fetch(url, options) - var json = await resp.json() - log(`resp.status: ${resp.status}`) - log(`resp.json: ${json}`) - if (resp.status != 200) { - log(`lib.main: getApi: Response status: ${resp.status}`) - return resp.status - } - if (!resp.ok) { - log(`lib.main: getApi: Fetch error`) - return false - } - return json; - } catch(err) { - log(`lib.main: getApi: Caught fetch error. Status: ${resp.status}`) - return resp.status + } else { + var options = { + method: 'GET', + redirect: 'follow' } + } + try { + var resp = await fetch(url, options) + var json = await resp.json() + log(`resp.status: ${resp.status}`) + log(`resp.json: ${json}`) + if (resp.status != 200) { + log(`lib.main: getApi: Response status: ${resp.status}`) + return resp.status + } + if (!resp.ok) { + log('lib.main: getApi: Fetch error') + return false + } + return json + } catch(err) { + log(`lib.main: getApi: Caught fetch error. Status: ${resp.status}`) + return resp.status + } } async function showHideAuthNotice() { - let uuid = localStorage.getItem("uuid") - if (uuid) { - document.getElementById('auth-required').style = 'display:none' - } + let uuid = localStorage.getItem('uuid') + if (uuid) { + document.getElementById('auth-required').style = 'display:none' + } } async function vibe(type) { - let canVibrate = "vibrate" in navigator || "mozVibrate" in navigator - if (canVibrate && !("vibrate" in navigator)){ - navigator.vibrate = navigator.mozVibrate - } - switch (type) { - case "err": - navigator.vibrate([300]) - break; - case "ok": - navigator.vibrate([50,50,50]) - break; - default: - navigator.vibrate(30) - } + let canVibrate = 'vibrate' in navigator || 'mozVibrate' in navigator + if (canVibrate && !('vibrate' in navigator)){ + navigator.vibrate = navigator.mozVibrate + } + switch (type) { + case 'err': + navigator.vibrate([300]) + break + case 'ok': + navigator.vibrate([50,50,50]) + break + default: + navigator.vibrate(30) + } } async function convertUnixLocal(unix) { // Convert unix time string to local - var jsTime = unix*1000 - var dt = new Date(jsTime) - return dt.toLocaleString() + var jsTime = unix*1000 + var dt = new Date(jsTime) + return dt.toLocaleString() } \ No newline at end of file diff --git a/js/pis.js b/js/pis.js index e749674..f39db0a 100644 --- a/js/pis.js +++ b/js/pis.js @@ -3,69 +3,69 @@ versionDisplay() showHideAuthNotice() async function findByOrigDest() { - showLoading() - const formData = await fetchOrigDest() - log(`findByOrigDest: Searching for PIS Code for ${JSON.stringify(formData)}`) - const endpoint = `pis/origdest/${formData.origin}/${formData.destination}` - const json = await getApi(endpoint, auth = true) - if (json == false) { - await displayNoData() - } else if (json == 401) { - await displayUnauthorised() - } else { - await insertData(json) - } - document.getElementById('crs-box').style = 'display:none' - document.getElementById('result-box').style = 'display:block' - hideLoading() + showLoading() + const formData = await fetchOrigDest() + log(`findByOrigDest: Searching for PIS Code for ${JSON.stringify(formData)}`) + const endpoint = `pis/origdest/${formData.origin}/${formData.destination}` + const json = await getApi(endpoint, auth = true) + if (json == false) { + await displayNoData() + } else if (json == 401) { + await displayUnauthorised() + } else { + await insertData(json) + } + document.getElementById('crs-box').style = 'display:none' + document.getElementById('result-box').style = 'display:block' + hideLoading() } async function fetchOrigDest() { - var orig = document.getElementById("origin").value - var dest = document.getElementById("destination").value - return {origin: orig, destination: dest} + var orig = document.getElementById('origin').value + var dest = document.getElementById('destination').value + return {origin: orig, destination: dest} } async function insertData(json) { - // Receives the JSON Respose ([{},{}]) containing one or more possible - // PIS codes. Display the code and the stops with a method of scrolling between them. - // Maybe as a table or a carousel? - const div = document.getElementById('result-box') - let tableData = ` + // Receives the JSON Respose ([{},{}]) containing one or more possible + // PIS codes. Display the code and the stops with a method of scrolling between them. + // Maybe as a table or a carousel? + const div = document.getElementById('result-box') + let tableData = `
` - let results = 0 - for(var i = 0; i < json.length; i++) { // Hopefully can style output with CSS - tableData += ` + let results = 0 + for(var i = 0; i < json.length; i++) { // Hopefully can style output with CSS + tableData += `` - results++ - } - tableData += "
Code Stations
${json[i]['code']}
${json[i]['code']} ${json[i]['stops'].join(', ')}
" - div.insertAdjacentHTML("beforeend", tableData) - document.getElementById('result-count').textContent = results.toString() + results++ + } + tableData += '' + div.insertAdjacentHTML('beforeend', tableData) + document.getElementById('result-count').textContent = results.toString() } async function displayNoData() { - const msg = '

No results found

' - document.getElementById('result-box').insertAdjacentHTML("beforeend", msg) + const msg = '

No results found

' + document.getElementById('result-box').insertAdjacentHTML('beforeend', msg) } async function displayUnauthorised() { - const msg = '

Unauthorised - please ensure you are logged into the rail staff version

' - document.getElementById('result-box').insertAdjacentHTML("beforeend", msg) + const msg = '

Unauthorised - please ensure you are logged into the rail staff version

' + document.getElementById('result-box').insertAdjacentHTML('beforeend', msg) } async function reset() { - try { - document.getElementById('origin').value = "" - document.getElementById('destination').value = "" - document.getElementById('result-box').style = 'display:none' - document.getElementById('result-table').remove() - document.getElementById('crs-box').style = 'display:block' - document.getElementById('result-count').textContent = 0 - } catch(e) { - log(`Nothing to reset`) - } + try { + document.getElementById('origin').value = '' + document.getElementById('destination').value = '' + document.getElementById('result-box').style = 'display:none' + document.getElementById('result-table').remove() + document.getElementById('crs-box').style = 'display:block' + document.getElementById('result-count').textContent = 0 + } catch(e) { + log('Nothing to reset') + } } \ No newline at end of file diff --git a/js/settings.js b/js/settings.js index 0d6d003..ae158c8 100644 --- a/js/settings.js +++ b/js/settings.js @@ -2,114 +2,114 @@ // Init: // // Setup quick links -const ql = ["ql0","ql1","ql2","ql3","ql4","ql5","ql6","ql7","ql8","ql9","ql10","ql11"] -storageAvailable("localStorage"); -getQl(); +const ql = ['ql0','ql1','ql2','ql3','ql4','ql5','ql6','ql7','ql8','ql9','ql10','ql11'] +storageAvailable('localStorage') +getQl() // Check if already registered -ifAlreadyRegistered(); +ifAlreadyRegistered() // Hide loading -hideLoading(); +hideLoading() async function ifAlreadyRegistered() { // If already registered, show this on the page - if (! await isRegistered()) { - return null - } else { - document.getElementsByName("eml")[0].placeholder = "Registered"; - document.getElementById("reg_text").textContent = "You are already registered"; - document.getElementById("reg_button").textContent = "Log Out"; - } + if (! await isRegistered()) { + return null + } else { + document.getElementsByName('eml')[0].placeholder = 'Registered' + document.getElementById('reg_text').textContent = 'You are already registered' + document.getElementById('reg_button').textContent = 'Log Out' + } } async function getQl(){ // Fetch Quick Links from localstorage - var qlOpt = await getQuickLinks() - if (qlOpt){ - var i = 0 - while (i < 12) { - if (qlOpt[i] != 'undefined') { - document.getElementById(`ql${i}`).value = qlOpt[i] - i +=1 - } - } + var qlOpt = await getQuickLinks() + if (qlOpt){ + var i = 0 + while (i < 12) { + if (qlOpt[i] != 'undefined') { + document.getElementById(`ql${i}`).value = qlOpt[i] + i +=1 + } } + } } async function setQl(){ // Fetch Quick Links from text input and save to localstorage - await showLoading();// called as an onclick function - var qlSet = [] - for (i in ql) { - var opt = document.getElementById(`ql${i}`).value - if (opt != ""){ - qlSet.push(opt) - } - qlSet.sort() + await showLoading()// called as an onclick function + var qlSet = [] + for (i in ql) { + var opt = document.getElementById(`ql${i}`).value + if (opt != ''){ + qlSet.push(opt) } - localStorage.setItem("qlOpt", JSON.stringify(qlSet)) - log(`settings.setQl: User settings saved`, "INFO") - await hideLoading(); - await showDone(); - vibe("ok") - await delay(800); - hideDone(); + qlSet.sort() + } + localStorage.setItem('qlOpt', JSON.stringify(qlSet)) + log('settings.setQl: User settings saved', 'INFO') + await hideLoading() + await showDone() + vibe('ok') + await delay(800) + hideDone() } async function clearQl(){ // Clear Quick Links from localstorage - showLoading(); - localStorage.removeItem("qlOpt") - log(`settings.setQl: User settings reset to default`, "INFO") - getQl() - await hideLoading(); - await showDone(); - vibe("ok"); - await delay(800); - hideDone(); + showLoading() + localStorage.removeItem('qlOpt') + log('settings.setQl: User settings reset to default', 'INFO') + getQl() + await hideLoading() + await showDone() + vibe('ok') + await delay(800) + hideDone() } async function isRegistered() { // Check if a device is registered, returns BOOL - if (localStorage.getItem("uuid")) { - return true - // Also need an API Call here to check if auth is working. - // A Suitable function exists in auth.js - move it to lib.main.js - } - localStorage.removeItem("uuid"); - return false + if (localStorage.getItem('uuid')) { + return true + // Also need an API Call here to check if auth is working. + // A Suitable function exists in auth.js - move it to lib.main.js + } + localStorage.removeItem('uuid') + return false } async function register() { // Registers a device by sending POST request to API Server - if (! await isRegistered()) { - showLoading() - let url = `${window.location.origin}/api/v1/register/request`; - let email = document.getElementById("eml").value - let res = await fetch(url, { - method: "POST", - headers: { - "Content-Type": "application/json" - }, - redirect: "follow", - body: JSON.stringify({email: email}) - }) - if (res.status == 201) { - showDone(); - hideLoading(); - return; - } else if (res.status == 403) { - log(`settings.register: Error: Fetch returned: ${res.body['errorCode']}`, "err") - document.getElementsByName("eml")[0].placeholder = "Not Authorised"; - } - } else { - logout() + if (! await isRegistered()) { + showLoading() + let url = `${window.location.origin}/api/v1/register/request` + let email = document.getElementById('eml').value + let res = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + redirect: 'follow', + body: JSON.stringify({email: email}) + }) + if (res.status == 201) { + showDone() + hideLoading() + return + } else if (res.status == 403) { + log(`settings.register: Error: Fetch returned: ${res.body['errorCode']}`, 'err') + document.getElementsByName('eml')[0].placeholder = 'Not Authorised' } + } else { + logout() + } } async function logout() { // Simply removed the UUID from localstorage - localStorage.removeItem("uuid"); - location.reload(); - return + localStorage.removeItem('uuid') + location.reload() + return } async function showDone() { // Diaplays the 'Done' dialogue. - document.getElementById("done").style = "opacity: 1; display: block"; + document.getElementById('done').style = 'opacity: 1; display: block' } async function hideDone() { // Hides the 'Done' dialogue. - document.getElementById("done").style = "opacity: 0; display: none"; + document.getElementById('done').style = 'opacity: 0; display: none' } \ No newline at end of file diff --git a/js/simple-board.js b/js/simple-board.js index 4308e9e..0fcc622 100644 --- a/js/simple-board.js +++ b/js/simple-board.js @@ -4,128 +4,128 @@ init() /* Init function */ async function init() { // Gets query string and then fetch API response and pass to parsing function - console.time("Time: Init to Complete") - setLoadingDesc(`Loading\nservices`) - var stn = await getQuery("stn"); - setLoadingDesc(`Loading\n${stn.toUpperCase()}`) - log(`init: Looking up: ${stn}`); - var sv = await getQuery("sv"); - log(`init: Staff Version: ${sv}`); - if (sv === 'true') { - log("init: Staff Version not supported yet.") - log("init: Unable to proceed.") - } else { - try { - var data = await publicLdb(stn) - setLoadingDesc(`${stn.toUpperCase()}\nParsing Data`) - log("simple-board.init: Fetched LDB Data", "INFO") - } catch (err) { - var data = "err" - setLoadingDesc(`Waiting\nConnection`) - log(`simple-board.init: Error fetching data: ${err}`, "ERR") - } - parseLdb(data) + console.time('Time: Init to Complete') + setLoadingDesc('Loading\nservices') + var stn = await getQuery('stn') + setLoadingDesc(`Loading\n${stn.toUpperCase()}`) + log(`init: Looking up: ${stn}`) + var sv = await getQuery('sv') + log(`init: Staff Version: ${sv}`) + if (sv === 'true') { + log('init: Staff Version not supported yet.') + log('init: Unable to proceed.') + } else { + try { + var data = await publicLdb(stn) + setLoadingDesc(`${stn.toUpperCase()}\nParsing Data`) + log('simple-board.init: Fetched LDB Data', 'INFO') + } catch (err) { + var data = 'err' + setLoadingDesc('Waiting\nConnection') + log(`simple-board.init: Error fetching data: ${err}`, 'ERR') } + parseLdb(data) + } } /* Check for any errors in data returned from the Fetch call If no errors, if there are none, call buildPage(). */ async function parseLdb(data) { - if (data.ERROR == "NOT_FOUND") { // Station not found - hideLoading(); - document.getElementById("error_notice").style = "display: block;"; - document.getElementById("err_not_found").style = "display: block;"; - setHeaders("Not Found",new Date()) - } else if (data == false) { // No data for station - hideLoading(); - document.getElementById("error_notice").style = "display: block;"; - document.getElementById("err_no_data").style = "display:block;"; - setHeaders("No Data",new Date()) - } else if (data == "err") { // Connection Error - await delay(2000); - hideLoading(); - document.getElementById("error_notice").style = "display: block;"; - document.getElementById("err_conn").style = "display: block;"; - setHeaders("Connection Error",new Date()) - showLoading(); - await delay(5000); - log(`parseLdb: Passing to error handler`, "ERR") - errorHandler(); - } else { - buildPage(data); - } + if (data.ERROR == 'NOT_FOUND') { // Station not found + hideLoading() + document.getElementById('error_notice').style = 'display: block;' + document.getElementById('err_not_found').style = 'display: block;' + setHeaders('Not Found',new Date()) + } else if (data == false) { // No data for station + hideLoading() + document.getElementById('error_notice').style = 'display: block;' + document.getElementById('err_no_data').style = 'display:block;' + setHeaders('No Data',new Date()) + } else if (data == 'err') { // Connection Error + await delay(2000) + hideLoading() + document.getElementById('error_notice').style = 'display: block;' + document.getElementById('err_conn').style = 'display: block;' + setHeaders('Connection Error',new Date()) + showLoading() + await delay(5000) + log('parseLdb: Passing to error handler', 'ERR') + errorHandler() + } else { + buildPage(data) + } } // Build and Display Functions async function buildPage(data) { - setLoadingDesc('Loading\nData') - var stationName = data.GetStationBoardResult.locationName; - log(`buildPage: Data ready for ${stationName}`); - var generateTime = new Date(await data.GetStationBoardResult.generatedAt); - log(`buildPage: Data prepared at ${generateTime.toLocaleString()}`) - setHeaders(stationName, generateTime); - // Check for notices and if true pass to function - if (data.GetStationBoardResult.nrccMessages) { - setLoadingDesc('Loading\nAlerts') - await displayAlerts(await makeArray(data.GetStationBoardResult.nrccMessages.message)); - } - if (data.GetStationBoardResult.trainServices) { - setLoadingDesc('Loading\nTrains') - displayTrains(await makeArray(data.GetStationBoardResult.trainServices.service)) - } else { - displayNoTrains() - } - if (data.GetStationBoardResult.ferryServices) { - setLoadingDesc('Loading\nFerries') - displayFerry(await makeArray(data.GetStationBoardResult.ferryServices.service)) - } - if (data.GetStationBoardResult.busServices) { - setLoadingDesc('Loading\nBusses') - displayBus(await makeArray(data.GetStationBoardResult.busServices.service)) - } - hideLoading(); - console.timeEnd("Time: Init to Complete") + setLoadingDesc('Loading\nData') + var stationName = data.GetStationBoardResult.locationName + log(`buildPage: Data ready for ${stationName}`) + var generateTime = new Date(await data.GetStationBoardResult.generatedAt) + log(`buildPage: Data prepared at ${generateTime.toLocaleString()}`) + setHeaders(stationName, generateTime) + // Check for notices and if true pass to function + if (data.GetStationBoardResult.nrccMessages) { + setLoadingDesc('Loading\nAlerts') + await displayAlerts(await makeArray(data.GetStationBoardResult.nrccMessages.message)) + } + if (data.GetStationBoardResult.trainServices) { + setLoadingDesc('Loading\nTrains') + displayTrains(await makeArray(data.GetStationBoardResult.trainServices.service)) + } else { + displayNoTrains() + } + if (data.GetStationBoardResult.ferryServices) { + setLoadingDesc('Loading\nFerries') + displayFerry(await makeArray(data.GetStationBoardResult.ferryServices.service)) + } + if (data.GetStationBoardResult.busServices) { + setLoadingDesc('Loading\nBusses') + displayBus(await makeArray(data.GetStationBoardResult.busServices.service)) + } + hideLoading() + console.timeEnd('Time: Init to Complete') } async function displayTrains(data) { // Iterated through train services and passes API sections to other functions - log(`simple-board.displayTrains: Inserting data in DOM`) - for(var i = 0; i < data.length; i++) { - // Reset Vars - var svc = data[i]; - displayService(svc); - buildCallLists(svc); - } - document.getElementById("output").style = "display:block;"; - log(`simple-board.displayTrains: Insertion complete`) + log('simple-board.displayTrains: Inserting data in DOM') + for(var i = 0; i < data.length; i++) { + // Reset Vars + var svc = data[i] + displayService(svc) + buildCallLists(svc) + } + document.getElementById('output').style = 'display:block;' + log('simple-board.displayTrains: Insertion complete') } async function displayFerry(ferrySvc) { // Iterates through each ferry service and passes to another function - for(var i = 0; i < ferrySvc.length; i++) { - displayFerryService(ferrySvc[i]) - } + for(var i = 0; i < ferrySvc.length; i++) { + displayFerryService(ferrySvc[i]) + } } async function displayBus(busSvc) { // Iterates through each bus service and passes to other functions. - for(var i = 0; i < busSvc.length; i++) { - displayBusService(busSvc[i]) - buildCallLists(busSvc[i]) - } + for(var i = 0; i < busSvc.length; i++) { + displayBusService(busSvc[i]) + buildCallLists(busSvc[i]) + } } async function displayService(svc) { // Creates a table row from each train service. - var table = document.getElementById("output"); + var table = document.getElementById('output') - // Determine Time Message - var sta = await parseTime(svc.sta); - var eta = await parseTime(svc.eta); - var std = await parseTime(svc.std); - var etd = await parseTime(svc.etd); - // Determine Platform Message - //if (svc.platform != undefined){var plt = svc.platform} else {var plt = "-"}; - var plt = await parsePlatform(svc); - // Define Table Row - var row = ` + // Determine Time Message + var sta = await parseTime(svc.sta) + var eta = await parseTime(svc.eta) + var std = await parseTime(svc.std) + var etd = await parseTime(svc.etd) + // Determine Platform Message + //if (svc.platform != undefined){var plt = svc.platform} else {var plt = "-"}; + var plt = await parsePlatform(svc) + // Define Table Row + var row = ` @@ -137,41 +137,41 @@ async function displayService(svc) { // Creates a table row from each train serv
${await parseName(svc.origin.location)}${etd.data}
` - // Put Table Row - table.insertAdjacentHTML("beforeend", row) - // Display Operator where provided (it always will be, I think) - if (svc.operator) { - var opRow = `

A ${svc.operator} service` - if (svc.length) { // Displays number of carriages where provided - opRow += ` with ${svc.length} carriages

`; - } else { - opRow += `

` - } - table.insertAdjacentHTML("beforeend", opRow); + // Put Table Row + table.insertAdjacentHTML('beforeend', row) + // Display Operator where provided (it always will be, I think) + if (svc.operator) { + var opRow = `

A ${svc.operator} service` + if (svc.length) { // Displays number of carriages where provided + opRow += ` with ${svc.length} carriages

` + } else { + opRow += '

' } - // Parse cancelReason and then delayReason - if (svc.cancelReason) { - var cancelRow = `

${svc.cancelReason}

` - table.insertAdjacentHTML("beforeend", cancelRow); - } - if (svc.delayReason) { - var delayRow = `

${svc.delayReason}

` - table.insertAdjacentHTML("beforeend", delayRow); - } + table.insertAdjacentHTML('beforeend', opRow) + } + // Parse cancelReason and then delayReason + if (svc.cancelReason) { + var cancelRow = `

${svc.cancelReason}

` + table.insertAdjacentHTML('beforeend', cancelRow) + } + if (svc.delayReason) { + var delayRow = `

${svc.delayReason}

` + table.insertAdjacentHTML('beforeend', delayRow) + } } async function displayFerryService(svc) { // Creates a table for for each ferry service - var table = document.getElementById("ferry"); - log(JSON.stringify(svc)) - // Determine Time Message - var sta = await parseTime(svc.sta); - var eta = await parseTime(svc.eta); - var std = await parseTime(svc.std); - var etd = await parseTime(svc.etd); - // Determine Platform Message - var plt = ""; - // Define Table Row - var row = ` + var table = document.getElementById('ferry') + log(JSON.stringify(svc)) + // Determine Time Message + var sta = await parseTime(svc.sta) + var eta = await parseTime(svc.eta) + var std = await parseTime(svc.std) + var etd = await parseTime(svc.etd) + // Determine Platform Message + var plt = '' + // Define Table Row + var row = ` @@ -183,32 +183,32 @@ async function displayFerryService(svc) { // Creates a table for for each ferry
${await parseName(svc.origin.location)}${etd.data}
` - // Put Table Row - table.insertAdjacentHTML("beforeend", row) - // Parse cancelReason & delayReason - if (svc.cancelReason) { - var cancelRow = `

${svc.cancelReason}

` - table.insertAdjacentHTML("beforeend", cancelRow); - } - if (svc.delayReason) { - var delayRow = `

${svc.delayReason}

` - table.insertAdjacentHTML("beforeend", delayRow); - } - document.getElementById("ferry").style = "display:block" + // Put Table Row + table.insertAdjacentHTML('beforeend', row) + // Parse cancelReason & delayReason + if (svc.cancelReason) { + var cancelRow = `

${svc.cancelReason}

` + table.insertAdjacentHTML('beforeend', cancelRow) + } + if (svc.delayReason) { + var delayRow = `

${svc.delayReason}

` + table.insertAdjacentHTML('beforeend', delayRow) + } + document.getElementById('ferry').style = 'display:block' } async function displayBusService(svc) { // Creates a table row for each bus service. - var table = document.getElementById("bus"); - log(JSON.stringify(svc)) - // Determine Time Message - var sta = await parseTime(svc.sta); - var eta = await parseTime(svc.eta); - var std = await parseTime(svc.std); - var etd = await parseTime(svc.etd); - // Determine Platform Message - var plt = ""; - // Define Table Row - var row = ` + var table = document.getElementById('bus') + log(JSON.stringify(svc)) + // Determine Time Message + var sta = await parseTime(svc.sta) + var eta = await parseTime(svc.eta) + var std = await parseTime(svc.std) + var etd = await parseTime(svc.etd) + // Determine Platform Message + var plt = '' + // Define Table Row + var row = ` @@ -220,21 +220,21 @@ async function displayBusService(svc) { // Creates a table row for each bus serv
${svc.origin.location.locationName}${etd.data}
` - // Put Table Row - table.insertAdjacentHTML("beforeend", row) - // Display operator - if (svc.operator) { - var opRow = `

A ${svc.operator} service

` - table.insertAdjacentHTML("beforeend", opRow); - } - // Parse cancelReason & delayReason - if (svc.cancelReason) { - var cancelRow = `

${svc.cancelReason}

` - table.insertAdjacentHTML("beforeend", cancelRow); - } - if (svc.delayReason) { - var delayRow = `

${svc.delayReason}

` - table.insertAdjacentHTML("beforeend", delayRow); - } - document.getElementById("bus").style = "display:block" + // Put Table Row + table.insertAdjacentHTML('beforeend', row) + // Display operator + if (svc.operator) { + var opRow = `

A ${svc.operator} service

` + table.insertAdjacentHTML('beforeend', opRow) + } + // Parse cancelReason & delayReason + if (svc.cancelReason) { + var cancelRow = `

${svc.cancelReason}

` + table.insertAdjacentHTML('beforeend', cancelRow) + } + if (svc.delayReason) { + var delayRow = `

${svc.delayReason}

` + table.insertAdjacentHTML('beforeend', delayRow) + } + document.getElementById('bus').style = 'display:block' } \ No newline at end of file diff --git a/js/staff-board.js b/js/staff-board.js index 4308e9e..89866a9 100644 --- a/js/staff-board.js +++ b/js/staff-board.js @@ -4,128 +4,129 @@ init() /* Init function */ async function init() { // Gets query string and then fetch API response and pass to parsing function - console.time("Time: Init to Complete") - setLoadingDesc(`Loading\nservices`) - var stn = await getQuery("stn"); - setLoadingDesc(`Loading\n${stn.toUpperCase()}`) - log(`init: Looking up: ${stn}`); - var sv = await getQuery("sv"); - log(`init: Staff Version: ${sv}`); - if (sv === 'true') { - log("init: Staff Version not supported yet.") - log("init: Unable to proceed.") - } else { - try { - var data = await publicLdb(stn) - setLoadingDesc(`${stn.toUpperCase()}\nParsing Data`) - log("simple-board.init: Fetched LDB Data", "INFO") - } catch (err) { - var data = "err" - setLoadingDesc(`Waiting\nConnection`) - log(`simple-board.init: Error fetching data: ${err}`, "ERR") - } - parseLdb(data) + console.time('Time: Init to Complete') + setLoadingDesc('Loading\nservices') + var stn = await getQuery('stn') + setLoadingDesc(`Loading\n${stn.toUpperCase()}`) + log(`init: Looking up: ${stn}`) + var sv = await getQuery('sv') + log(`init: Staff Version: ${sv}`) + if (sv === 'true') { + log('init: Staff Version not supported yet.') + log('init: Unable to proceed.') + } else { + let data + try { + data = await publicLdb(stn) + setLoadingDesc(`${stn.toUpperCase()}\nParsing Data`) + log('simple-board.init: Fetched LDB Data', 'INFO') + } catch (err) { + data = 'err' + setLoadingDesc('Waiting\nConnection') + log(`simple-board.init: Error fetching data: ${err}`, 'ERR') } + parseLdb(data) + } } /* Check for any errors in data returned from the Fetch call If no errors, if there are none, call buildPage(). */ async function parseLdb(data) { - if (data.ERROR == "NOT_FOUND") { // Station not found - hideLoading(); - document.getElementById("error_notice").style = "display: block;"; - document.getElementById("err_not_found").style = "display: block;"; - setHeaders("Not Found",new Date()) - } else if (data == false) { // No data for station - hideLoading(); - document.getElementById("error_notice").style = "display: block;"; - document.getElementById("err_no_data").style = "display:block;"; - setHeaders("No Data",new Date()) - } else if (data == "err") { // Connection Error - await delay(2000); - hideLoading(); - document.getElementById("error_notice").style = "display: block;"; - document.getElementById("err_conn").style = "display: block;"; - setHeaders("Connection Error",new Date()) - showLoading(); - await delay(5000); - log(`parseLdb: Passing to error handler`, "ERR") - errorHandler(); - } else { - buildPage(data); - } + if (data.ERROR == 'NOT_FOUND') { // Station not found + hideLoading() + document.getElementById('error_notice').style = 'display: block;' + document.getElementById('err_not_found').style = 'display: block;' + setHeaders('Not Found',new Date()) + } else if (data == false) { // No data for station + hideLoading() + document.getElementById('error_notice').style = 'display: block;' + document.getElementById('err_no_data').style = 'display:block;' + setHeaders('No Data',new Date()) + } else if (data == 'err') { // Connection Error + await delay(2000) + hideLoading() + document.getElementById('error_notice').style = 'display: block;' + document.getElementById('err_conn').style = 'display: block;' + setHeaders('Connection Error',new Date()) + showLoading() + await delay(5000) + log('parseLdb: Passing to error handler', 'ERR') + errorHandler() + } else { + buildPage(data) + } } // Build and Display Functions async function buildPage(data) { - setLoadingDesc('Loading\nData') - var stationName = data.GetStationBoardResult.locationName; - log(`buildPage: Data ready for ${stationName}`); - var generateTime = new Date(await data.GetStationBoardResult.generatedAt); - log(`buildPage: Data prepared at ${generateTime.toLocaleString()}`) - setHeaders(stationName, generateTime); - // Check for notices and if true pass to function - if (data.GetStationBoardResult.nrccMessages) { - setLoadingDesc('Loading\nAlerts') - await displayAlerts(await makeArray(data.GetStationBoardResult.nrccMessages.message)); - } - if (data.GetStationBoardResult.trainServices) { - setLoadingDesc('Loading\nTrains') - displayTrains(await makeArray(data.GetStationBoardResult.trainServices.service)) - } else { - displayNoTrains() - } - if (data.GetStationBoardResult.ferryServices) { - setLoadingDesc('Loading\nFerries') - displayFerry(await makeArray(data.GetStationBoardResult.ferryServices.service)) - } - if (data.GetStationBoardResult.busServices) { - setLoadingDesc('Loading\nBusses') - displayBus(await makeArray(data.GetStationBoardResult.busServices.service)) - } - hideLoading(); - console.timeEnd("Time: Init to Complete") + setLoadingDesc('Loading\nData') + var stationName = data.GetStationBoardResult.locationName + log(`buildPage: Data ready for ${stationName}`) + var generateTime = new Date(await data.GetStationBoardResult.generatedAt) + log(`buildPage: Data prepared at ${generateTime.toLocaleString()}`) + setHeaders(stationName, generateTime) + // Check for notices and if true pass to function + if (data.GetStationBoardResult.nrccMessages) { + setLoadingDesc('Loading\nAlerts') + await displayAlerts(await makeArray(data.GetStationBoardResult.nrccMessages.message)) + } + if (data.GetStationBoardResult.trainServices) { + setLoadingDesc('Loading\nTrains') + displayTrains(await makeArray(data.GetStationBoardResult.trainServices.service)) + } else { + displayNoTrains() + } + if (data.GetStationBoardResult.ferryServices) { + setLoadingDesc('Loading\nFerries') + displayFerry(await makeArray(data.GetStationBoardResult.ferryServices.service)) + } + if (data.GetStationBoardResult.busServices) { + setLoadingDesc('Loading\nBusses') + displayBus(await makeArray(data.GetStationBoardResult.busServices.service)) + } + hideLoading() + console.timeEnd('Time: Init to Complete') } async function displayTrains(data) { // Iterated through train services and passes API sections to other functions - log(`simple-board.displayTrains: Inserting data in DOM`) - for(var i = 0; i < data.length; i++) { - // Reset Vars - var svc = data[i]; - displayService(svc); - buildCallLists(svc); - } - document.getElementById("output").style = "display:block;"; - log(`simple-board.displayTrains: Insertion complete`) + log('simple-board.displayTrains: Inserting data in DOM') + for(var i = 0; i < data.length; i++) { + // Reset Vars + var svc = data[i] + displayService(svc) + buildCallLists(svc) + } + document.getElementById('output').style = 'display:block;' + log('simple-board.displayTrains: Insertion complete') } async function displayFerry(ferrySvc) { // Iterates through each ferry service and passes to another function - for(var i = 0; i < ferrySvc.length; i++) { - displayFerryService(ferrySvc[i]) - } + for(var i = 0; i < ferrySvc.length; i++) { + displayFerryService(ferrySvc[i]) + } } async function displayBus(busSvc) { // Iterates through each bus service and passes to other functions. - for(var i = 0; i < busSvc.length; i++) { - displayBusService(busSvc[i]) - buildCallLists(busSvc[i]) - } + for(var i = 0; i < busSvc.length; i++) { + displayBusService(busSvc[i]) + buildCallLists(busSvc[i]) + } } async function displayService(svc) { // Creates a table row from each train service. - var table = document.getElementById("output"); + var table = document.getElementById('output') - // Determine Time Message - var sta = await parseTime(svc.sta); - var eta = await parseTime(svc.eta); - var std = await parseTime(svc.std); - var etd = await parseTime(svc.etd); - // Determine Platform Message - //if (svc.platform != undefined){var plt = svc.platform} else {var plt = "-"}; - var plt = await parsePlatform(svc); - // Define Table Row - var row = ` + // Determine Time Message + var sta = await parseTime(svc.sta) + var eta = await parseTime(svc.eta) + var std = await parseTime(svc.std) + var etd = await parseTime(svc.etd) + // Determine Platform Message + //if (svc.platform != undefined){var plt = svc.platform} else {var plt = "-"}; + var plt = await parsePlatform(svc) + // Define Table Row + var row = ` @@ -137,41 +138,41 @@ async function displayService(svc) { // Creates a table row from each train serv
${await parseName(svc.origin.location)}${etd.data}
` - // Put Table Row - table.insertAdjacentHTML("beforeend", row) - // Display Operator where provided (it always will be, I think) - if (svc.operator) { - var opRow = `

A ${svc.operator} service` - if (svc.length) { // Displays number of carriages where provided - opRow += ` with ${svc.length} carriages

`; - } else { - opRow += `

` - } - table.insertAdjacentHTML("beforeend", opRow); + // Put Table Row + table.insertAdjacentHTML('beforeend', row) + // Display Operator where provided (it always will be, I think) + if (svc.operator) { + var opRow = `

A ${svc.operator} service` + if (svc.length) { // Displays number of carriages where provided + opRow += ` with ${svc.length} carriages

` + } else { + opRow += '

' } - // Parse cancelReason and then delayReason - if (svc.cancelReason) { - var cancelRow = `

${svc.cancelReason}

` - table.insertAdjacentHTML("beforeend", cancelRow); - } - if (svc.delayReason) { - var delayRow = `

${svc.delayReason}

` - table.insertAdjacentHTML("beforeend", delayRow); - } + table.insertAdjacentHTML('beforeend', opRow) + } + // Parse cancelReason and then delayReason + if (svc.cancelReason) { + var cancelRow = `

${svc.cancelReason}

` + table.insertAdjacentHTML('beforeend', cancelRow) + } + if (svc.delayReason) { + var delayRow = `

${svc.delayReason}

` + table.insertAdjacentHTML('beforeend', delayRow) + } } async function displayFerryService(svc) { // Creates a table for for each ferry service - var table = document.getElementById("ferry"); - log(JSON.stringify(svc)) - // Determine Time Message - var sta = await parseTime(svc.sta); - var eta = await parseTime(svc.eta); - var std = await parseTime(svc.std); - var etd = await parseTime(svc.etd); - // Determine Platform Message - var plt = ""; - // Define Table Row - var row = ` + var table = document.getElementById('ferry') + log(JSON.stringify(svc)) + // Determine Time Message + var sta = await parseTime(svc.sta) + var eta = await parseTime(svc.eta) + var std = await parseTime(svc.std) + var etd = await parseTime(svc.etd) + // Determine Platform Message + var plt = '' + // Define Table Row + var row = ` @@ -183,32 +184,32 @@ async function displayFerryService(svc) { // Creates a table for for each ferry
${await parseName(svc.origin.location)}${etd.data}
` - // Put Table Row - table.insertAdjacentHTML("beforeend", row) - // Parse cancelReason & delayReason - if (svc.cancelReason) { - var cancelRow = `

${svc.cancelReason}

` - table.insertAdjacentHTML("beforeend", cancelRow); - } - if (svc.delayReason) { - var delayRow = `

${svc.delayReason}

` - table.insertAdjacentHTML("beforeend", delayRow); - } - document.getElementById("ferry").style = "display:block" + // Put Table Row + table.insertAdjacentHTML('beforeend', row) + // Parse cancelReason & delayReason + if (svc.cancelReason) { + var cancelRow = `

${svc.cancelReason}

` + table.insertAdjacentHTML('beforeend', cancelRow) + } + if (svc.delayReason) { + var delayRow = `

${svc.delayReason}

` + table.insertAdjacentHTML('beforeend', delayRow) + } + document.getElementById('ferry').style = 'display:block' } async function displayBusService(svc) { // Creates a table row for each bus service. - var table = document.getElementById("bus"); - log(JSON.stringify(svc)) - // Determine Time Message - var sta = await parseTime(svc.sta); - var eta = await parseTime(svc.eta); - var std = await parseTime(svc.std); - var etd = await parseTime(svc.etd); - // Determine Platform Message - var plt = ""; - // Define Table Row - var row = ` + var table = document.getElementById('bus') + log(JSON.stringify(svc)) + // Determine Time Message + var sta = await parseTime(svc.sta) + var eta = await parseTime(svc.eta) + var std = await parseTime(svc.std) + var etd = await parseTime(svc.etd) + // Determine Platform Message + var plt = '' + // Define Table Row + var row = ` @@ -220,21 +221,21 @@ async function displayBusService(svc) { // Creates a table row for each bus serv
${svc.origin.location.locationName}${etd.data}
` - // Put Table Row - table.insertAdjacentHTML("beforeend", row) - // Display operator - if (svc.operator) { - var opRow = `

A ${svc.operator} service

` - table.insertAdjacentHTML("beforeend", opRow); - } - // Parse cancelReason & delayReason - if (svc.cancelReason) { - var cancelRow = `

${svc.cancelReason}

` - table.insertAdjacentHTML("beforeend", cancelRow); - } - if (svc.delayReason) { - var delayRow = `

${svc.delayReason}

` - table.insertAdjacentHTML("beforeend", delayRow); - } - document.getElementById("bus").style = "display:block" + // Put Table Row + table.insertAdjacentHTML('beforeend', row) + // Display operator + if (svc.operator) { + var opRow = `

A ${svc.operator} service

` + table.insertAdjacentHTML('beforeend', opRow) + } + // Parse cancelReason & delayReason + if (svc.cancelReason) { + var cancelRow = `

${svc.cancelReason}

` + table.insertAdjacentHTML('beforeend', cancelRow) + } + if (svc.delayReason) { + var delayRow = `

${svc.delayReason}

` + table.insertAdjacentHTML('beforeend', delayRow) + } + document.getElementById('bus').style = 'display:block' } \ No newline at end of file diff --git a/js/stat.js b/js/stat.js index 7f0ea17..c4ccc89 100644 --- a/js/stat.js +++ b/js/stat.js @@ -1,30 +1,30 @@ -init(); +init() async function init() { // The page init function - versionDisplay() - display(await get()) + versionDisplay() + display(await get()) } async function get() { // Fetch data from API - var url = `${window.location.origin}/api/v1/stats`; - var resp = await fetch(url); - return await resp.json(); + var url = `${window.location.origin}/api/v1/stats` + var resp = await fetch(url) + return await resp.json() } async function display(data) { // Parses and displays data from API - document.getElementById('server_host').textContent = data.host; - document.getElementById('server_mode').textContent = data.mode || "Unknown"; - document.getElementById('ver-bkend').textContent = data.verBkend || "Unknown"; - let dat = data.dat[0] - let ver = data.ver[0] - document.getElementById('time').textContent = await convertUnixLocal(dat.since); - document.getElementById('ldbws').textContent = dat.ldbws || "0"; - document.getElementById('ldbsvws').textContent = dat.ldbsvws || "0"; - document.getElementById('apicorpus').textContent = dat.corpus_api || "0"; - document.getElementById('corpus').textContent = dat.corpus || "0"; - document.getElementById('stations').textContent = dat.stations || "0"; - document.getElementById('users').textContent = dat.user || "0"; - document.getElementById('meta').textContent = dat.meta || "0"; - document.getElementById('pis').textContent = dat.pis - document.getElementById('ver-dbman').textContent = ver.dbmanager || "Unknown"; + document.getElementById('server_host').textContent = data.host + document.getElementById('server_mode').textContent = data.mode || 'Unknown' + document.getElementById('ver-bkend').textContent = data.verBkend || 'Unknown' + let dat = data.dat[0] + let ver = data.ver[0] + document.getElementById('time').textContent = await convertUnixLocal(dat.since) + document.getElementById('ldbws').textContent = dat.ldbws || '0' + document.getElementById('ldbsvws').textContent = dat.ldbsvws || '0' + document.getElementById('apicorpus').textContent = dat.corpus_api || '0' + document.getElementById('corpus').textContent = dat.corpus || '0' + document.getElementById('stations').textContent = dat.stations || '0' + document.getElementById('users').textContent = dat.user || '0' + document.getElementById('meta').textContent = dat.meta || '0' + document.getElementById('pis').textContent = dat.pis + document.getElementById('ver-dbman').textContent = ver.dbmanager || 'Unknown' } \ No newline at end of file diff --git a/sw.js b/sw.js index 3a8f45e..b7c3864 100644 --- a/sw.js +++ b/sw.js @@ -1,89 +1,89 @@ /* Service Worker */ -const appVersion = "PIS-DEV-23043001" -const cacheName = `owlboard-${appVersion}`; -const cacheIDs = [cacheName]; +const appVersion = 'PIS-DEV-23043001' +const cacheName = `owlboard-${appVersion}` +const cacheIDs = [cacheName] const cacheFiles = [ - "/404.html", - "/auth.html", - "/board.html", - "/conn-err.html", - "/help.html", - "/", - "/issue.html", - "/find-code.html", - "/settings.html", - "/pis.html", - "/manifest.json", - "/styles/fonts/firamono/firamono-500.woff2", - "/styles/fonts/firamono/firamono-regular.woff2", - "/styles/fonts/urwgothic/urwgothic.woff2", - "/styles/fonts/urwgothic/urwgothicDemi.woff2", - "/styles/board.css", - "/styles/find-code.css", - "/styles/help.css", - "/styles/issue.css", - "/styles/main.css", - "/styles/settings.css", - "/styles/pis.css", - "/js/find-code.js", - "/js/index.js", - "/js/issue.js", - "/js/lib.board.js", - "/js/lib.main.js", - "/js/auth.js", - "/js/settings.js", - "/js/simple-board.js", - "/js/pis.js", - "/images/icon.svg", - "/images/logo/wide_logo.svg", - "/images/logo/mono-logo.svg", - "/images/app-icons/any/plain-logo.svg", - "/images/app-icons/any/plain-logo-512.png", - "/images/nav/alert_icon.svg", - "/images/nav/save.svg", - "/images/nav/home_icon.svg", - "/images/nav/back.svg", - "/images/nav/hamburger.svg", - "/images/nav/close.svg", - "/images/nav/refresh.svg", - "/images/nre/nre-powered_400w.webp", - "/images/nre/nre-powered_400w.jxl" -]; + '/404.html', + '/auth.html', + '/board.html', + '/conn-err.html', + '/help.html', + '/', + '/issue.html', + '/find-code.html', + '/settings.html', + '/pis.html', + '/manifest.json', + '/styles/fonts/firamono/firamono-500.woff2', + '/styles/fonts/firamono/firamono-regular.woff2', + '/styles/fonts/urwgothic/urwgothic.woff2', + '/styles/fonts/urwgothic/urwgothicDemi.woff2', + '/styles/board.css', + '/styles/find-code.css', + '/styles/help.css', + '/styles/issue.css', + '/styles/main.css', + '/styles/settings.css', + '/styles/pis.css', + '/js/find-code.js', + '/js/index.js', + '/js/issue.js', + '/js/lib.board.js', + '/js/lib.main.js', + '/js/auth.js', + '/js/settings.js', + '/js/simple-board.js', + '/js/pis.js', + '/images/icon.svg', + '/images/logo/wide_logo.svg', + '/images/logo/mono-logo.svg', + '/images/app-icons/any/plain-logo.svg', + '/images/app-icons/any/plain-logo-512.png', + '/images/nav/alert_icon.svg', + '/images/nav/save.svg', + '/images/nav/home_icon.svg', + '/images/nav/back.svg', + '/images/nav/hamburger.svg', + '/images/nav/close.svg', + '/images/nav/refresh.svg', + '/images/nre/nre-powered_400w.webp', + '/images/nre/nre-powered_400w.jxl' +] -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('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) => { +self.addEventListener('fetch', (e) => { e.respondWith( (async () => { - const r = await caches.match(e.request,{ignoreSearch: true}); + const r = await caches.match(e.request,{ignoreSearch: true}) if (r) { - return r; + return r } - const response = await fetch(e.request); - console.log(`[Service Worker] Not cached - fetching from server: ${e.request.url}`); - return response; + const response = await fetch(e.request) + console.log(`[Service Worker] Not cached - fetching from server: ${e.request.url}`) + return response })() - ); -}); + ) +}) self.addEventListener('activate', function (event) { event.waitUntil(caches.keys().then(function (keys) { return Promise.all(keys.filter(function (key) { - return !cacheIDs.includes(key); + return !cacheIDs.includes(key) }).map(function (key) { - return caches.delete(key); - })); + return caches.delete(key) + })) }).then(function () { - return self.clients.claim(); - })); -}); \ No newline at end of file + return self.clients.claim() + })) +}) \ No newline at end of file