From e44e9d07babd2dd467570b9c2000b8c5f71af361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Tue, 11 May 2021 11:02:18 +0200 Subject: [PATCH] Allow clicking on multiple courses simultaneously --- src/front/index.js | 24 ++++++++++++++++++++++-- src/front/map/index.js | 5 ++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/front/index.js b/src/front/index.js index 870cba1..22e598c 100644 --- a/src/front/index.js +++ b/src/front/index.js @@ -84,6 +84,26 @@ setInterval(() => { }, 1000); // Create the network and courses map -map.create(/* map = */ "map", coursesSimulation, course => { - courseId = course; +map.create(/* map = */ "map", coursesSimulation, courses => { + if (courses.length === 0) { + // If no course were clicked, show nothing + courseId = null; + } 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]; + } }); diff --git a/src/front/map/index.js b/src/front/map/index.js index 224040a..45b72cd 100644 --- a/src/front/map/index.js +++ b/src/front/map/index.js @@ -120,6 +120,7 @@ const create = (target, coursesSimulation, onClick) => { map.on("singleclick", ev => { const mousePixel = map.getPixelFromCoordinate(ev.coordinate); const maxDistance = sizes.courseSize + sizes.courseInnerBorder; + const clicked = []; for (const course of Object.values(coursesSimulation.courses)) { const coursePixel = map.getPixelFromCoordinate(course.position); @@ -128,9 +129,11 @@ const create = (target, coursesSimulation, onClick) => { const distance = dx * dx + dy * dy; if (distance <= maxDistance * maxDistance) { - onClick(course.id); + clicked.push(course.id); } } + + onClick(clicked); }); return map;