From eac8f41d8438497099f2400fafacd63686104b5e Mon Sep 17 00:00:00 2001 From: Kendrick Chan Date: Wed, 22 Jan 2020 04:03:25 +0800 Subject: [PATCH] Make rider markers load popup via ajax #299 --- config/routes/rider.yaml | 5 +++++ src/Controller/HomeController.php | 2 ++ src/Controller/RiderController.php | 10 ++++++++++ templates/home.html.twig | 4 +++- templates/map/initOpenStreetMap.js | 25 +++++++++++++++++++------ templates/rider/popup.html.twig | 13 +++++++++++++ translations/messages.en.yaml | 6 ++++-- 7 files changed, 56 insertions(+), 9 deletions(-) create mode 100644 templates/rider/popup.html.twig diff --git a/config/routes/rider.yaml b/config/routes/rider.yaml index 61a4522e..70ddd91d 100644 --- a/config/routes/rider.yaml +++ b/config/routes/rider.yaml @@ -36,3 +36,8 @@ rider_delete: path: /riders/{id} controller: App\Controller\RiderController::destroy methods: [DELETE] + +rider_ajax_popup: + path: /riders/{id}/popup + controller: App\Controller\RiderController::popupInfo + methods: [GET] diff --git a/src/Controller/HomeController.php b/src/Controller/HomeController.php index d678c95d..3a3e5173 100644 --- a/src/Controller/HomeController.php +++ b/src/Controller/HomeController.php @@ -29,6 +29,8 @@ class HomeController extends Controller public function getRiderLocations(EntityManagerInterface $em, RiderTracker $rider_tracker) { + // TODO: get active riders from cache + // TODO: get active JOs from cache // get all riders $riders = $em->getRepository(Rider::class)->findAll(); diff --git a/src/Controller/RiderController.php b/src/Controller/RiderController.php index a62eebd1..838b558b 100644 --- a/src/Controller/RiderController.php +++ b/src/Controller/RiderController.php @@ -10,6 +10,7 @@ use App\Entity\User; use App\Service\FileUploader; use Doctrine\ORM\Query; +use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; @@ -500,4 +501,13 @@ class RiderController extends Controller ->setParameter('filter', '%' . $datatable['query']['data-rows-search'] . '%'); } } + + public function popupInfo(EntityManagerInterface $em, $id) + { + $rider = $em->getRepository(Rider::class)->find($id); + if ($rider == null) + return new Response('No rider data'); + + return $this->render('rider/popup.html.twig', [ 'rider' => $rider ]); + } } diff --git a/templates/home.html.twig b/templates/home.html.twig index 8f337c03..88ae8aa2 100644 --- a/templates/home.html.twig +++ b/templates/home.html.twig @@ -21,12 +21,14 @@ function initMap() { var default_lat = {% trans %}default_lat{% endtrans %}; var default_lng = {% trans %}default_long{% endtrans %}; - map = mapCreate('dashboard_map', default_lat, default_lng, 'road', 13); + var rider_popup_url = '/riders/[id]/popup'; + map = mapCreate('dashboard_map', default_lat, default_lng, 'road', 13, rider_popup_url); } {{ include('map/' ~ map_js_file) }} +