// eslint-disable-next-line node/no-extraneous-require
require("regenerator-runtime/runtime");
const network = require("../tam/network.json");
const simulation = require("../tam/simulation");
const map = require("./map/index.js");
// Run courses simulation
const coursesSimulation = simulation.start();
const informations = document.querySelector("#informations");
let courseId = null;
const displayTime = date => [
date.getHours(),
date.getMinutes(),
date.getSeconds()
].map(number => number.toString().padStart(2, "0")).join(":");
setInterval(() => {
let html = `
- Heure actuelle
- ${displayTime(new Date())}
`;
if (courseId !== null && courseId in coursesSimulation.courses) {
const course = coursesSimulation.courses[courseId];
const timeToHTML = time => Math.ceil((time - Date.now()) / 1000);
const stopToHTML = stopId => stopId in network.stops ?
network.stops[stopId].properties.name :
'Arrêt inconnu';
const passingsToHTML = passings => passings.map(([stopId, time]) => `
${stopToHTML(stopId)} |
${displayTime(new Date(time))} |
`).join("\n");
html += `
- ID
- ${courseId}
- Ligne
- ${course.line}
- Destination
- ${stopToHTML(course.finalStop)}
- État
- ${course.state === "moving"
? `Entre ${stopToHTML(course.departureStop)}
et ${stopToHTML(course.arrivalStop)}`
: `À l’arrêt ${stopToHTML(course.currentStop)}`}
${course.state === "moving" ? `
- Arrivée dans
- ${timeToHTML(course.arrivalTime)} s
- Distance parcourue
- ${Math.ceil(course.traveledDistance)} m
- Vitesse
- ${Math.ceil(course.speed * 3600)} km/h
` : `
- Départ dans
- ${timeToHTML(course.departureTime)} s
`}
Arrêts précédents
${passingsToHTML(course.prevPassings)}
Arrêts suivants
${passingsToHTML(course.nextPassings)}
`;
}
informations.innerHTML = html;
}, 1000);
// Create the network and courses map
map.create(/* map = */ "map", coursesSimulation, course => {
courseId = course;
});