From 95226ebc360192df1a2dd91e4f193b43c8485129 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Mon, 11 May 2026 05:39:42 +0200 Subject: [PATCH 1/3] Quickly access yearly view for given room Make room numbers hyperlinks in the list overview --- assets/controllers/reservations_controller.js | 1 - src/Controller/ReservationServiceController.php | 15 +++++++++++++-- .../Reservations/reservation_table.html.twig | 9 ++++++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/assets/controllers/reservations_controller.js b/assets/controllers/reservations_controller.js index 4a94a857..c92db45a 100644 --- a/assets/controllers/reservations_controller.js +++ b/assets/controllers/reservations_controller.js @@ -134,7 +134,6 @@ export default class extends Controller { } this.getLocalTableSetting('interval', 'reservations-intervall', 'int'); this.getLocalTableSetting('holidayCountry', 'reservations-table-holidaycountry'); - this.getLocalTableSetting('apartment', 'reservations-apartment', 'int'); this.loadTableSettings(this.tableSettingsUrl, true); } diff --git a/src/Controller/ReservationServiceController.php b/src/Controller/ReservationServiceController.php index 7055d544..945c8db6 100644 --- a/src/Controller/ReservationServiceController.php +++ b/src/Controller/ReservationServiceController.php @@ -109,10 +109,21 @@ public function indexAction(ManagerRegistry $doctrine, RequestStack $requestStac /** * Triggered by the buttons to switch reservation view table/yearly. */ - #[Route('/view/{show}', name: 'start.toggle.view', methods: ['GET'])] - public function indexActionToggle(RequestStack $requestStack, string $show): Response + #[Route('/view/{show}/{apartmentId}', name: 'start.toggle.view', defaults: ['apartmentId' => null], requirements: ['show' => 'table|yearly', 'apartmentId' => '\\d+'], methods: ['GET'])] + public function indexActionToggle(RequestStack $requestStack, Request $request, string $show, ?int $apartmentId = null): Response { if ('yearly' === $show) { + if (null === $apartmentId) { + $apartmentFromQuery = $request->query->get('apartment'); + if (null !== $apartmentFromQuery && ctype_digit((string) $apartmentFromQuery)) { + $apartmentId = (int) $apartmentFromQuery; + } + } + + if (null !== $apartmentId) { + $requestStack->getSession()->set('reservation-overview-apartment', $apartmentId); + } + $requestStack->getSession()->set('reservation-overview', 'yearly'); } else { $requestStack->getSession()->set('reservation-overview', 'table'); diff --git a/templates/Reservations/reservation_table.html.twig b/templates/Reservations/reservation_table.html.twig index f52130c8..7849bf53 100644 --- a/templates/Reservations/reservation_table.html.twig +++ b/templates/Reservations/reservation_table.html.twig @@ -117,7 +117,14 @@ {{ row.apartment.number }}{% if row.apartment.roomCategory is not null and row.apartment.roomCategory.acronym|length > 0 %} ({{ row.apartment.roomCategory.acronym }}){% endif %} + > + + {{ row.apartment.number }}{% if row.apartment.roomCategory is not null and row.apartment.roomCategory.acronym|length > 0 %} ({{ row.apartment.roomCategory.acronym }}){% endif %} + + {% endif %} {# ── Cells ── #} From 9e3b09dfbde8753febfa5475a0cfeed685f3abb3 Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Mon, 11 May 2026 06:01:37 +0200 Subject: [PATCH 2/3] Use stored apartment filter only if not explicitly set in URL --- assets/controllers/reservations_controller.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/assets/controllers/reservations_controller.js b/assets/controllers/reservations_controller.js index c92db45a..1daf750a 100644 --- a/assets/controllers/reservations_controller.js +++ b/assets/controllers/reservations_controller.js @@ -134,6 +134,11 @@ export default class extends Controller { } this.getLocalTableSetting('interval', 'reservations-intervall', 'int'); this.getLocalTableSetting('holidayCountry', 'reservations-table-holidaycountry'); + // Use stored apartment filter only if not explicitly set in URL + const isExplicitYearlyApartmentLink = /\/view\/yearly\/\d+$/.test(window.location.pathname); + if (!isExplicitYearlyApartmentLink) { + this.getLocalTableSetting('apartment', 'reservations-apartment', 'int'); + } this.loadTableSettings(this.tableSettingsUrl, true); } From 313de16c436d1967ba0aed08b634b0b311b912de Mon Sep 17 00:00:00 2001 From: Damiano Lombardi Date: Mon, 11 May 2026 06:21:38 +0200 Subject: [PATCH 3/3] Remove unuseful check --- src/Controller/ReservationServiceController.php | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/Controller/ReservationServiceController.php b/src/Controller/ReservationServiceController.php index 945c8db6..5ccffcd7 100644 --- a/src/Controller/ReservationServiceController.php +++ b/src/Controller/ReservationServiceController.php @@ -113,13 +113,6 @@ public function indexAction(ManagerRegistry $doctrine, RequestStack $requestStac public function indexActionToggle(RequestStack $requestStack, Request $request, string $show, ?int $apartmentId = null): Response { if ('yearly' === $show) { - if (null === $apartmentId) { - $apartmentFromQuery = $request->query->get('apartment'); - if (null !== $apartmentFromQuery && ctype_digit((string) $apartmentFromQuery)) { - $apartmentId = (int) $apartmentFromQuery; - } - } - if (null !== $apartmentId) { $requestStack->getSession()->set('reservation-overview-apartment', $apartmentId); }