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