mirror of
https://codeberg.org/kbruen/kai.infotren.git
synced 2025-02-22 09:09:36 +02:00
Add support for IC trains
This commit is contained in:
parent
255dae9dec
commit
220f6666a5
12 changed files with 68 additions and 20 deletions
13
base.css
13
base.css
|
@ -272,8 +272,21 @@ body {
|
|||
border-bottom-right-radius: 5%;
|
||||
}
|
||||
|
||||
.IR, .IRN {
|
||||
color: #ff0000 !important;
|
||||
}
|
||||
|
||||
.IC {
|
||||
color: #00aa00 !important;
|
||||
}
|
||||
|
||||
|
||||
@media print {
|
||||
footer, .no-print {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
header .back {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
|
0
common/tabs.js
Normal file → Executable file
0
common/tabs.js
Normal file → Executable file
30
common/trainId.js
Normal file
30
common/trainId.js
Normal file
|
@ -0,0 +1,30 @@
|
|||
/**
|
||||
* Create <span class="{IR|IC|}">IR|IRN|IC|R|R-E</span> <span>74</span> inside element
|
||||
* @param {string} rank
|
||||
* @param {string} number
|
||||
* @param {HTMLElement|undefined} element
|
||||
* @returns {HTMLSpanElement|HTMLElement}
|
||||
*/
|
||||
function trainIdSpan(rank, number, element) {
|
||||
if (!element) {
|
||||
element = document.createElement('span')
|
||||
}
|
||||
|
||||
var rankSpan = document.createElement('span')
|
||||
element.appendChild(rankSpan)
|
||||
rankSpan.textContent = rank
|
||||
if (rank.startsWith('IC')) {
|
||||
rankSpan.classList.add('IC')
|
||||
}
|
||||
else if (rank.startsWith('IR')) {
|
||||
rankSpan.classList.add('IR')
|
||||
}
|
||||
|
||||
element.appendChild(document.createTextNode(' '))
|
||||
|
||||
var numberSpan = document.createElement('span')
|
||||
element.appendChild(numberSpan)
|
||||
numberSpan.textContent = number
|
||||
|
||||
return element
|
||||
}
|
8
sw.js
8
sw.js
|
@ -1,4 +1,4 @@
|
|||
const VERSION = 'v18'
|
||||
const VERSION = 'v19'
|
||||
const API_ORIGIN = 'https://scraper.infotren.dcdev.ro/'
|
||||
const API_TRAINS = `${API_ORIGIN}v3/trains`
|
||||
const API_STATIONS = `${API_ORIGIN}v3/stations`
|
||||
|
@ -7,11 +7,15 @@ const CACHE_FIRST = [
|
|||
// Root
|
||||
'/',
|
||||
|
||||
// Static assets
|
||||
'/common/back.svg',
|
||||
|
||||
// Utility JS
|
||||
'/common/worker.js',
|
||||
'/common/items.js',
|
||||
'/common/back.js',
|
||||
'/common/tabs.js',
|
||||
'/common/trainId.js',
|
||||
|
||||
// Base
|
||||
'/base.css',
|
||||
|
@ -119,7 +123,7 @@ const cacheFirst = async ({ request, preloadResponsePromise, refreshAnyway }) =>
|
|||
// First try to get the resource from the cache
|
||||
const responseFromCache = await caches.match(request)
|
||||
if (responseFromCache) {
|
||||
if (refreshAnyway) {
|
||||
if (refreshAnyway || (responseFromCache.headers.has('SW-Cached-At') && Date.now() - new Date(responseFromCache.headers.get('SW-Cached-At')).valueOf() > 86400000)) {
|
||||
console.log('[cf] using cache response; refreshing anyway but returning cache', responseFromCache);
|
||||
((async () => {
|
||||
try {
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<script src="/common/worker.js"></script>
|
||||
<script defer src="/common/back.js"></script>
|
||||
<script defer src="/common/items.js"></script>
|
||||
<script defer src="/common/trainId.js"></script>
|
||||
<script defer src="train.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
|
2
train.js
2
train.js
|
@ -87,7 +87,7 @@ function rebuildSuggestions() {
|
|||
var trainNameP = document.createElement('p')
|
||||
suggestionLi.appendChild(trainNameP)
|
||||
|
||||
trainNameP.textContent = `${suggestion.rank} ${suggestion.number}`
|
||||
trainIdSpan(suggestion.rank, suggestion.number, trainNameP)
|
||||
trainNameP.classList.add('pri', 'trainName')
|
||||
|
||||
var trainCompanyP = document.createElement('p')
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
.IR, .IRN {
|
||||
color: red !important;
|
||||
}
|
||||
|
||||
.early {
|
||||
color: green !important;
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
<script defer src="/common/back.js"></script>
|
||||
<script defer src="/common/items.js"></script>
|
||||
<script defer src="/common/tabs.js"></script>
|
||||
<script defer src="/common/trainId.js"></script>
|
||||
<script defer src="view-station.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
|
|
@ -67,7 +67,14 @@ function onStationData(data) {
|
|||
var trainDiv = document.createElement('p')
|
||||
trainItem.appendChild(trainDiv)
|
||||
trainDiv.classList.add('pri', 'train')
|
||||
trainDiv.appendChild(document.createTextNode(`${train.train.number}`))
|
||||
var trainDivHref = document.createElement('a')
|
||||
trainDiv.appendChild(trainDivHref)
|
||||
trainDivHref.textContent = train.train.number
|
||||
trainDivHref.classList.add('no-a-custom')
|
||||
var trainUrl = new URL('/view-train.html', window.location.origin)
|
||||
trainUrl.searchParams.append('train', train.train.number)
|
||||
trainUrl.searchParams.append('date', train.train.departureDate)
|
||||
trainDivHref.href = trainUrl.toString()
|
||||
|
||||
var terminusDiv = document.createElement('p')
|
||||
trainItem.appendChild(terminusDiv)
|
||||
|
|
|
@ -1,7 +1,3 @@
|
|||
.IR, .IRN {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.early {
|
||||
color: green;
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<script src="/common/worker.js"></script>
|
||||
<script defer src="/common/back.js"></script>
|
||||
<script defer src="/common/items.js"></script>
|
||||
<script defer src="/common/trainId.js"></script>
|
||||
<script defer src="view-train.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
|
|
@ -70,11 +70,7 @@ function onTrainData(data, fetchDate) {
|
|||
var title = document.getElementById('title')
|
||||
title.textContent = ''
|
||||
title.appendChild(document.createTextNode('Train '))
|
||||
var rankSpan = document.createElement('span')
|
||||
rankSpan.textContent = data.rank
|
||||
rankSpan.classList.add(data.rank)
|
||||
title.appendChild(rankSpan)
|
||||
title.appendChild(document.createTextNode(` ${data.number}`))
|
||||
trainIdSpan(data.rank, data.number, title)
|
||||
|
||||
document.getElementsByTagName('title')[0].textContent = `Train ${data.rank} ${data.number}`
|
||||
|
||||
|
@ -110,7 +106,8 @@ function onTrainData(data, fetchDate) {
|
|||
document.getElementsByClassName('rsk')[0].textContent = ''
|
||||
document.getElementsByClassName('csk')[0].textContent = 'Select'
|
||||
|
||||
title.textContent = `Select Group for ${data.rank} ${data.number}`
|
||||
title.textContent = 'Select Group for '
|
||||
trainIdSpan(data.rank, data.number, title)
|
||||
|
||||
var gc = document.getElementById('group-choice')
|
||||
while (gc.childNodes.length > 0) {
|
||||
|
@ -374,7 +371,8 @@ function onTrainData(data, fetchDate) {
|
|||
|
||||
switch (note.kind) {
|
||||
case 'departsAs': {
|
||||
noteP.textContent = `Train departs as ${note.rank} ${note.number}`
|
||||
noteP.textContent = 'Train departs as '
|
||||
trainIdSpan(note.rank, note.number, noteP)
|
||||
break
|
||||
}
|
||||
case 'detachingWagons': {
|
||||
|
@ -386,7 +384,8 @@ function onTrainData(data, fetchDate) {
|
|||
break
|
||||
}
|
||||
case 'trainNumberChange': {
|
||||
noteP.textContent = `Train changes number to ${note.rank} ${note.number}`
|
||||
noteP.textContent = 'Train changes number to '
|
||||
trainIdSpan(note.rank, note.number, noteP)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue