// 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; });