This repository has been archived on 2023-07-11. You can view files and clone it, but cannot push or open issues or pull requests.
web/js/pis.js

75 lines
2.6 KiB
JavaScript
Raw Normal View History

2023-04-22 21:46:34 +01:00
hideLoading()
2023-04-28 13:52:26 +01:00
versionDisplay()
2023-04-28 13:56:24 +01:00
showHideAuthNotice()
2023-04-22 21:46:34 +01:00
async function findByOrigDest() {
2023-05-01 21:04:19 +01:00
showLoading()
const formData = await fetchOrigDest()
log(`findByOrigDest: Searching for PIS Code for ${JSON.stringify(formData)}`)
const endpoint = `pis/origdest/${formData.origin}/${formData.destination}`
2023-05-01 21:27:31 +01:00
console.time('findByOrigDest-GET')
2023-05-01 21:04:19 +01:00
const json = await getApi(endpoint, auth = true)
2023-05-01 21:27:31 +01:00
console.timeEnd('findByOrigDest-GET')
2023-05-01 21:04:19 +01:00
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()
2023-04-22 21:46:34 +01:00
}
async function fetchOrigDest() {
2023-05-01 21:04:19 +01:00
var orig = document.getElementById('origin').value
var dest = document.getElementById('destination').value
return {origin: orig, destination: dest}
2023-04-22 21:46:34 +01:00
}
2023-04-22 22:23:36 +01:00
async function insertData(json) {
2023-05-01 21:04:19 +01:00
// 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?
2023-05-01 21:27:31 +01:00
console.time('insertData')
2023-05-01 21:04:19 +01:00
const div = document.getElementById('result-box')
let tableData = `<table id="result-table">
2023-04-22 22:23:36 +01:00
<tr>
2023-04-25 00:32:45 +01:00
<th>Code</th>
<th>Stations</th>
2023-04-22 22:44:32 +01:00
</tr>`
2023-05-01 21:04:19 +01:00
let results = 0
for(var i = 0; i < json.length; i++) { // Hopefully can style output with CSS
tableData += `<tr><td class="pis-code">${json[i]['code']}</td>
2023-04-25 19:30:54 +01:00
<td class="station">${json[i]['stops'].join(', ')}</td></tr>`
2023-05-01 21:04:19 +01:00
results++
}
tableData += '</table>'
div.insertAdjacentHTML('beforeend', tableData)
document.getElementById('result-count').textContent = results.toString()
2023-05-01 21:27:31 +01:00
console.timeEnd('insertData')
2023-04-22 21:46:34 +01:00
}
2023-04-30 21:10:37 +01:00
async function displayNoData() {
2023-05-01 21:04:19 +01:00
const msg = '<p id="result-table">No results found</p>'
document.getElementById('result-box').insertAdjacentHTML('beforeend', msg)
2023-04-22 21:46:34 +01:00
}
2023-04-30 21:10:37 +01:00
async function displayUnauthorised() {
2023-05-01 21:04:19 +01:00
const msg = '<p id="result-table">Unauthorised - please ensure you are logged into the <a href="./settings.html">rail staff version</a></p>'
document.getElementById('result-box').insertAdjacentHTML('beforeend', msg)
2023-04-30 21:10:37 +01:00
}
2023-04-22 21:46:34 +01:00
async function reset() {
2023-05-01 21:04:19 +01:00
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')
}
2023-04-22 21:46:34 +01:00
}