Add recently viewed train on homepage
This commit is contained in:
parent
a653e92e03
commit
7645effd5f
4 changed files with 86 additions and 3 deletions
|
@ -12,6 +12,8 @@
|
||||||
|
|
||||||
<script src="/common/worker.js"></script>
|
<script src="/common/worker.js"></script>
|
||||||
<script src="/common/items.js"></script>
|
<script src="/common/items.js"></script>
|
||||||
|
<script src="/common/trainId.js"></script>
|
||||||
|
<script src="index.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>InfoTren</h1>
|
<h1>InfoTren</h1>
|
||||||
|
@ -19,8 +21,8 @@
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a class="items disabled" href="">Train routes</a></li>
|
<li><a class="items disabled" href="">Train routes</a></li>
|
||||||
<li><a class="items" href="train.html">My train</a></li>
|
<li id="my-train-li"><a class="items" href="train.html">My train</a></li>
|
||||||
<li><a class="items" href="station.html">Station departures/arrivals</a></li>
|
<li id="station-arr-dep-li"><a class="items" href="station.html">Station departures/arrivals</a></li>
|
||||||
<li><a class="items" href="about.html">About</a></li>
|
<li><a class="items" href="about.html">About</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
58
index.js
Normal file
58
index.js
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
window.addEventListener('load', function (e) {
|
||||||
|
if (window.localStorage) {
|
||||||
|
var recentViewTrain = localStorage.getItem('recent/view-train')
|
||||||
|
if (recentViewTrain) {
|
||||||
|
/**
|
||||||
|
* @property {string} trainNumber
|
||||||
|
* @property {string} date
|
||||||
|
* @property {string} $addDate
|
||||||
|
* @property {string | undefined} groupIndex
|
||||||
|
*/
|
||||||
|
recentViewTrain = JSON.parse(recentViewTrain)
|
||||||
|
var addDate = new Date(recentViewTrain.$addDate)
|
||||||
|
addDate.setHours(addDate.getHours() + 2) // store recents for 2 hours
|
||||||
|
if (addDate.getTime() > Date.now()) {
|
||||||
|
var recentViewTrainLi = document.createElement('li')
|
||||||
|
var recentViewTrainLink = document.createElement('a')
|
||||||
|
recentViewTrainLi.appendChild(recentViewTrainLink)
|
||||||
|
var recentViewTrainLinkUrl = new URL('/view-train.html', window.location.origin)
|
||||||
|
recentViewTrainLinkUrl.searchParams.append('train', recentViewTrain.trainNumber)
|
||||||
|
recentViewTrainLinkUrl.searchParams.append('date', recentViewTrain.date)
|
||||||
|
if (recentViewTrain.groupIndex) {
|
||||||
|
recentViewTrainLinkUrl.searchParams.append('groupIndex', recentViewTrain.groupIndex)
|
||||||
|
}
|
||||||
|
recentViewTrainLink.href = recentViewTrainLinkUrl.toString()
|
||||||
|
recentViewTrainLink.classList.add('items')
|
||||||
|
recentViewTrainLink.innerText = `Recent train: ${recentViewTrain.trainNumber}`
|
||||||
|
|
||||||
|
fetch(`https://scraper.infotren.dcdev.ro/v3/trains/${recentViewTrain.trainNumber}?date=${recentViewTrain.date}`)
|
||||||
|
.then(function (result) {
|
||||||
|
if (result.ok) {
|
||||||
|
return result.json()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.then(function (result) {
|
||||||
|
recentViewTrainLink.innerText = 'Recent train: '
|
||||||
|
trainIdSpan(result.rank, result.number, recentViewTrainLink)
|
||||||
|
if (recentViewTrain.groupIndex !== undefined || result.groups.length === 1) {
|
||||||
|
var group = result.groups[recentViewTrain.groupIndex || 0]
|
||||||
|
if (group.status) {
|
||||||
|
if (group.status.delay === 0) {
|
||||||
|
recentViewTrainLink.appendChild(document.createTextNode(" (on time)"))
|
||||||
|
}
|
||||||
|
else if (group.status.delay > 0) {
|
||||||
|
recentViewTrainLink.appendChild(document.createTextNode(` (${group.status.delay} min late)`))
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
recentViewTrainLink.appendChild(document.createTextNode(` (${-group.status.delay} min early)`))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
var myTrainLi = document.getElementById("my-train-li")
|
||||||
|
myTrainLi.parentNode.insertBefore(recentViewTrainLi, myTrainLi.nextSibling)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
4
sw.js
4
sw.js
|
@ -1,4 +1,4 @@
|
||||||
const VERSION = 'v23'
|
const VERSION = 'v24'
|
||||||
const API_ORIGIN = 'https://scraper.infotren.dcdev.ro/'
|
const API_ORIGIN = 'https://scraper.infotren.dcdev.ro/'
|
||||||
const API_TRAINS = `${API_ORIGIN}v3/trains`
|
const API_TRAINS = `${API_ORIGIN}v3/trains`
|
||||||
const API_STATIONS = `${API_ORIGIN}v3/stations`
|
const API_STATIONS = `${API_ORIGIN}v3/stations`
|
||||||
|
@ -22,8 +22,10 @@ const CACHE_FIRST = [
|
||||||
|
|
||||||
// Pages
|
// Pages
|
||||||
'/index.html',
|
'/index.html',
|
||||||
|
'/index.js',
|
||||||
|
|
||||||
'/about.html',
|
'/about.html',
|
||||||
|
'/about.js',
|
||||||
|
|
||||||
'/train.html',
|
'/train.html',
|
||||||
'/train.js',
|
'/train.js',
|
||||||
|
|
|
@ -129,6 +129,14 @@ function onTrainData(data, fetchDate) {
|
||||||
function onAction(e) {
|
function onAction(e) {
|
||||||
var url = new URL(window.location.toString())
|
var url = new URL(window.location.toString())
|
||||||
groupIndex = i
|
groupIndex = i
|
||||||
|
if (window.localStorage) {
|
||||||
|
localStorage.setItem('recent/view-train', JSON.stringify({
|
||||||
|
trainNumber: trainNumber,
|
||||||
|
date: date.toISOString(),
|
||||||
|
groupIndex: groupIndex,
|
||||||
|
$addDate: new Date().toISOString(),
|
||||||
|
}))
|
||||||
|
}
|
||||||
url.searchParams.append('groupIndex', groupIndex)
|
url.searchParams.append('groupIndex', groupIndex)
|
||||||
window.history.pushState({'groupIndex': groupIndex}, '', url.toString( ))
|
window.history.pushState({'groupIndex': groupIndex}, '', url.toString( ))
|
||||||
onTrainData(data)
|
onTrainData(data)
|
||||||
|
@ -512,6 +520,19 @@ window.addEventListener('load', function (e) {
|
||||||
date = sp.has('date') ? new Date(sp.get('date')) : new Date()
|
date = sp.has('date') ? new Date(sp.get('date')) : new Date()
|
||||||
groupIndex = sp.has('groupIndex') ? parseInt(sp.get('groupIndex')) : null
|
groupIndex = sp.has('groupIndex') ? parseInt(sp.get('groupIndex')) : null
|
||||||
|
|
||||||
|
if (window.localStorage) {
|
||||||
|
var oldRecent = localStorage.getItem('recent/view-train')
|
||||||
|
if (oldRecent) {
|
||||||
|
oldRecent = JSON.parse(oldRecent)
|
||||||
|
}
|
||||||
|
localStorage.setItem('recent/view-train', JSON.stringify({
|
||||||
|
trainNumber: trainNumber,
|
||||||
|
date: date.toISOString(),
|
||||||
|
groupIndex: oldRecent && oldRecent.trainNumber === trainNumber ? oldRecent.groupIndex : undefined,
|
||||||
|
$addDate: new Date().toISOString(),
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
document.querySelectorAll('.rsk').forEach(function (rskElem) {
|
document.querySelectorAll('.rsk').forEach(function (rskElem) {
|
||||||
rskElem.addEventListener('click', function (e) {
|
rskElem.addEventListener('click', function (e) {
|
||||||
rsk()
|
rsk()
|
||||||
|
|
Loading…
Add table
Reference in a new issue