diff --git a/src/front/index.js b/src/front/index.js index 85dba73..a3d0aba 100644 --- a/src/front/index.js +++ b/src/front/index.js @@ -4,7 +4,7 @@ import * as map from "./map/index.js"; // Run courses simulation const coursesSimulation = simulation.start(); -let courseId = null; +let selectedCourse = null; window.__courses = coursesSimulation.courses; window.__network = network; @@ -38,8 +38,8 @@ setInterval(() => { `; - if (courseId !== null && courseId in coursesSimulation.courses) { - const course = coursesSimulation.courses[courseId]; + if (selectedCourse !== null && selectedCourse in coursesSimulation.courses) { + const course = coursesSimulation.courses[selectedCourse]; const stopToHTML = stopId => stopId in network.stops ? network.stops[stopId].properties.name : @@ -66,7 +66,7 @@ setInterval(() => { html += `
ID
-
${courseId}
+
${selectedCourse}
Ligne
${course.line}
@@ -108,25 +108,13 @@ setInterval(() => { // Create the network and courses map map.create(/* map = */ "map", coursesSimulation, courses => { + const index = courses.indexOf(selectedCourse); + if (courses.length === 0) { - // If no course were clicked, show nothing - courseId = null; + selectedCourse = null; + } else if (index === -1) { + selectedCourse = courses[0]; } else { - // If several courses were clicked, show the one departing the soonest, - // or the first moving one - courses.sort((id1, id2) => { - const course1 = coursesSimulation.courses[id1]; - const course2 = coursesSimulation.courses[id2]; - - if (course1.state === "moving") { - return -1; - } else if (course2.state === "moving") { - return 1; - } else { - return course1.departureTime - course2.departureTime; - } - }); - - courseId = courses[0]; + selectedCourse = courses[(index + 1) % courses.length]; } }); diff --git a/src/front/map/index.js b/src/front/map/index.js index 5831701..9f97422 100644 --- a/src/front/map/index.js +++ b/src/front/map/index.js @@ -136,6 +136,26 @@ export const create = (target, coursesSimulation, onClick) => { } } + // Sort selected courses in increasing departing/arrival time + clicked.sort((id1, id2) => { + const course1 = coursesSimulation.courses[id1]; + const course2 = coursesSimulation.courses[id2]; + + const time1 = ( + course1.state === "moving" + ? course1.arrivalTime + : course1.departureTime + ); + + const time2 = ( + course2.state === "moving" + ? course2.arrivalTime + : course2.departureTime + ); + + return time1 - time2; + }); + onClick(clicked); });