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