Browse Source

Add support for IC trains

master
Kenneth Bruen 2 years ago
parent
commit
220f6666a5
Signed by: kbruen
GPG Key ID: C1980A470C3EE5B1
  1. 13
      base.css
  2. 0
      common/tabs.js
  3. 30
      common/trainId.js
  4. 8
      sw.js
  5. 1
      train.html
  6. 2
      train.js
  7. 4
      view-station.css
  8. 1
      view-station.html
  9. 9
      view-station.js
  10. 4
      view-train.css
  11. 1
      view-train.html
  12. 15
      view-train.js

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

30
common/trainId.js

@ -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

@ -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 {

1
train.html

@ -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

@ -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')

4
view-station.css

@ -1,7 +1,3 @@
.IR, .IRN {
color: red !important;
}
.early {
color: green !important;
}

1
view-station.html

@ -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>

9
view-station.js

@ -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)

4
view-train.css

@ -1,7 +1,3 @@
.IR, .IRN {
color: red;
}
.early {
color: green;
}

1
view-train.html

@ -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>

15
view-train.js

@ -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…
Cancel
Save