client/journey: show change duration

This commit is contained in:
Milan Pässler 2020-02-08 00:01:48 +01:00
parent 6846f77fce
commit 14aec20be3
2 changed files with 64 additions and 33 deletions

View file

@ -38,9 +38,10 @@ const legTemplate = (element) => {
return html` return html`
${element.isWalking ? html` ${element.isWalking ? html`
<p class="walk">${t('walkinfo', [parseName(element.arrival.point), element.distance])}</p> <p class="walk">${t('walkinfo', [parseName(element.arrival.point), element.distance])}</p>
` : html` ` : element.isTransfer ? html`
${element.isTransfer ? html`
<p class="transfer">${t('transferinfo', [parseName(element.arrival.point)])}</p> <p class="transfer">${t('transferinfo', [parseName(element.arrival.point)])}</p>
` : element.isChange ? html`
<p class="change">${t('changeinfo', [formatDuration(element.duration)])}</p>
` : html` ` : html`
<table> <table>
<thead> <thead>
@ -69,7 +70,6 @@ const legTemplate = (element) => {
</tbody> </tbody>
</table> </table>
`} `}
`}
`; `;
}; };
@ -81,7 +81,36 @@ const journeyTemplate = (data, requestId, journeyId) => {
const arrivalTime = arrival.prognosedTime ? arrival.prognosedTime : arrival.plannedTime; const arrivalTime = arrival.prognosedTime ? arrival.prognosedTime : arrival.plannedTime;
const duration = arrivalTime - departureTime; const duration = arrivalTime - departureTime;
const changes = data.legs.filter(leg => !leg.isWalking).length; const legs = [];
let changes = 0;
let lastArrival;
for (let leg of data.legs) {
if (!leg.isWalking && !leg.isTransfer) {
// add change
if (lastArrival) {
const departure = leg.departure;
const arrival = lastArrival;
const departureTime = departure.prognosedTime ? departure.prognosedTime : departure.plannedTime;
const arrivalTime = arrival.prognosedTime ? arrival.prognosedTime : arrival.plannedTime;
const duration = departureTime - arrivalTime;
legs.push({
isChange: true,
duration: duration,
});
}
changes++;
lastArrival = leg.arrival;
} else if (legs.length) {
// if this is a walking leg and it is the first one, we don't want to
// insert a 0 minutes change entry for this
lastArrival = leg.arrival;
}
legs.push(leg);
}
return html` return html`
<div id="journeyView"> <div id="journeyView">
@ -108,7 +137,7 @@ const journeyTemplate = (data, requestId, journeyId) => {
</div> </div>
<div id="connection"> <div id="connection">
${data.legs.map(legTemplate)} ${legs.map(legTemplate)}
</div> </div>
</div> </div>
`; `;

View file

@ -12,6 +12,7 @@ export const languages = {
'station': 'Station', 'station': 'Station',
'platform': 'Gleis', 'platform': 'Gleis',
'walkinfo': 'Laufe nach %s (ca. %s Meter)', 'walkinfo': 'Laufe nach %s (ca. %s Meter)',
'changeinfo': '%s Umstiegsdauer',
'transferinfo': 'Reise nach %s', 'transferinfo': 'Reise nach %s',
'swap': 'Von/Nach tauschen', 'swap': 'Von/Nach tauschen',
'settings': 'Einstellungen', 'settings': 'Einstellungen',
@ -59,6 +60,7 @@ export const languages = {
'station': 'Station', 'station': 'Station',
'platform': 'Platform', 'platform': 'Platform',
'walkinfo': 'Walk to %s (apprx. %s meters)', 'walkinfo': 'Walk to %s (apprx. %s meters)',
'changeinfo': '%s change duration',
'transferinfo': 'Travel to %s', 'transferinfo': 'Travel to %s',
'swap': 'Swap from/to', 'swap': 'Swap from/to',
'settings': 'Settings', 'settings': 'Settings',