diff --git a/client/js/journeyView.js b/client/js/journeyView.js
index cd1bbca..459b13a 100644
--- a/client/js/journeyView.js
+++ b/client/js/journeyView.js
@@ -12,7 +12,7 @@ const remarksModalTemplate = (type, remarks) => html`
${remarks.map(element => html`
-
+
${element.text}
|
@@ -37,38 +37,38 @@ const legTemplate = (element) => {
return html`
${element.isWalking ? html`
- ${t('walkinfo', [parseName(element.arrival.point), element.distance])}
+ ${t('walkinfo', [parseName(element.arrival.point), element.distance])}
+ ` : element.isTransfer ? html`
+ ${t('transferinfo', [parseName(element.arrival.point)])}
+ ` : element.isChange ? html`
+ ${t('changeinfo', [formatDuration(element.duration)])}
` : html`
- ${element.isTransfer ? html`
- ${t('transferinfo', [parseName(element.arrival.point)])}
- ` : html`
-
-
-
-
- ${element.line.name} ${element.line.additionalName ? '('+element.line.additionalName+')' : ''} → ${element.direction} ${element.cancelled ? html`${t('cancelled-ride')}` : ''}
- ${Object.entries(remarks).map(remarksTemplate)}
- |
+
+
+
+
+ ${element.line.name} ${element.line.additionalName ? '('+element.line.additionalName+')' : ''} → ${element.direction} ${element.cancelled ? html`${t('cancelled-ride')}` : ''}
+ ${Object.entries(remarks).map(remarksTemplate)}
+ |
+
+
+ ${t('arrival')} |
+ ${t('departure')} |
+ ${t('station')} |
+ ${t('platform')} |
+
+
+
+ ${element.stopovers.map(stop => html`
+ {location.href = "https://marudor.de/"+stop.stop.id+"?searchType=hafas"}}>
+ ${timeTemplate(stop.arrival)} |
+ ${timeTemplate(stop.departure)} |
+ ${stop.stop.name} ${ds100Names(stop.stop.id)} |
+ ${stopPlatformTemplate(stop)} |
-
- ${t('arrival')} |
- ${t('departure')} |
- ${t('station')} |
- ${t('platform')} |
-
-
-
- ${element.stopovers.map(stop => html`
- {location.href = "https://marudor.de/"+stop.stop.id+"?searchType=hafas"}}>
- ${timeTemplate(stop.arrival)} |
- ${timeTemplate(stop.departure)} |
- ${stop.stop.name} ${ds100Names(stop.stop.id)} |
- ${stopPlatformTemplate(stop)} |
-
- `)}
-
-
- `}
+ `)}
+
+
`}
`;
};
@@ -81,7 +81,36 @@ const journeyTemplate = (data, requestId, journeyId) => {
const arrivalTime = arrival.prognosedTime ? arrival.prognosedTime : arrival.plannedTime;
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`
@@ -108,7 +137,7 @@ const journeyTemplate = (data, requestId, journeyId) => {
- ${data.legs.map(legTemplate)}
+ ${legs.map(legTemplate)}
`;
diff --git a/client/js/languages.js b/client/js/languages.js
index b38d5a7..6a4aec4 100644
--- a/client/js/languages.js
+++ b/client/js/languages.js
@@ -12,6 +12,7 @@ export const languages = {
'station': 'Station',
'platform': 'Gleis',
'walkinfo': 'Laufe nach %s (ca. %s Meter)',
+ 'changeinfo': '%s Umstiegsdauer',
'transferinfo': 'Reise nach %s',
'swap': 'Von/Nach tauschen',
'settings': 'Einstellungen',
@@ -59,6 +60,7 @@ export const languages = {
'station': 'Station',
'platform': 'Platform',
'walkinfo': 'Walk to %s (apprx. %s meters)',
+ 'changeinfo': '%s change duration',
'transferinfo': 'Travel to %s',
'swap': 'Swap from/to',
'settings': 'Settings',