'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.stopovers.map(stop => html` {location.href = "https://marudor.de/"+stop.stop.id+"?searchType=hafas"}}> `)} ${(element.remarks || []).map(element => 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')}
${timeTemplate(stop.arrival)} ${timeTemplate(stop.departure)} ${stop.stop.name} ${ds100Names(stop.stop.id)} ${stopPlatformTemplate(stop)}
${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'); };