'use strict';
import { showDiv, hideDiv, ElementById, parseDateTime, convertMinsToHrsMins } from './helpers.js';
import { getCache, addCache, ConsoleLog, parseName, ds100Names, t } from './app_functions.js';
import { get } from './api.js';
import { go } from './router.js';
import { html, render } from './lit-html.js';
const journeyTemplate = (data, requestId, journeyId) => {
let departure = data.legs[0].departure;
let arrival = data.legs[data.legs.length - 1].arrival;
var changes = 0;
let departureTime = departure.prognosedTime ? departure.prognosedTime : departure.plannedTime;
let arrivalTime = arrival.prognosedTime ? arrival.prognosedTime : arrival.plannedTime;
let duration = (arrivalTime - departureTime)/60;
for (let legKey in data.legs) {
let leg = data.legs[legKey];
if (leg.isWalking !== false) continue;
changes = changes+1;
}
return html`
${data.legs.map(element => html`
${element.isWalking ? html`
${t('walkinfo', [parseName(element.arrival.point), element.distance])}
` : html`
${element.isTransfer ? html`
${t('transferinfo', [parseName(element.arrival.point), element.distance])}
` : html`
${element.line.name} ${element.line.additionalName ? '('+element.line.additionalName+')' : ''} → ${element.direction} ${element.cancelled ? html`${t('cancelled-ride')}` : ''} |
${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)} |
`)}
${(element.remarks || []).map(element => html`
${element.text} |
`)}
`}
`}
`)}
`};
const timeTemplate = (data, mode) => {
var delay = 0;
if (data.prognosedTime !== null) {
delay = (data.prognosedTime - data.plannedTime)/60;
}
if (!data.plannedTime && !data.prognosedTime) return '-';
return html`
${delay > 0 ? html`
${parseDateTime(data.prognosedTime)} (+${delay})
` : html`
${parseDateTime(data.plannedTime)}
`}`;
}
const platformTemplate = (data) => html`
${data.prognosedPlatform ? html`
${data.prognosedPlatform}
` : (data.plannedPlatform ? data.plannedPlatform : '-')}
`;
const stopPlatformTemplate = (data) => {
if (data.departure.plannedPlatform | data.departure.prognosedPlatform) {
if (!data.departure.prognosedPlatform) {
return data.departure.plannedPlatform;
} else {
return html`${data.departure.prognosedPlatform}`;
}
} else if (data.arrival.plannedPlatform | data.arrival.prognosedPlatform) {
if (!data.arrival.prognosedPlatform) {
return data.arrival.plannedPlatform;
} else {
return html`${data.arrival.prognosedPlatform}`;
}
} else {
return '-'
}
};
export const journeyView = async (match) => {
const reqId = match[0];
const journeyId = match[1];
let data;
let { journeys } = getCache('journeys', reqId)
if (journeyId in journeys[journeyId]) {
data = journeys[journeyId];
} else {
const request = await get("/journeys", {"reqId": reqId});
addCache('journeys', request);
data = request.journeys[journeyId];
}
ConsoleLog(data);
render(journeyTemplate(data, reqId, journeyId), ElementById('content'));
const journeysHistory = getCache('journeysHistory');
const history_id = journeysHistory.findIndex(obj => obj.reqId === reqId);
if (journeysHistory[history_id] !== undefined) {
journeysHistory[history_id].journeyId = journeyId;
addCache('journeysHistory', journeysHistory);
}
};
const reloadJourney = async (reqId, journeyId) => {
document.querySelector('.reload').classList.add('spinning');
try {
let request = await get("/refreshJourney", {"reqId": reqId, "journeyId": journeyId});
addCache('journeys', request);
journeyView([reqId, journeyId]);
} catch(err) {
ConsoleLog(err);
}
document.querySelector('.reload').classList.remove('spinning');
};