diff --git a/sv/static/sv/evenement_details.js b/sv/static/sv/evenement_details.js index a83d212a..8f531ef3 100644 --- a/sv/static/sv/evenement_details.js +++ b/sv/static/sv/evenement_details.js @@ -21,7 +21,28 @@ function initializeDetectionTags() { }); } +function selectZoneTab() { + const params = new URLSearchParams(window.location.search); + if (params.get('tab') === 'zone') { + const tabzone = document.getElementById("tabpanel-zone-panel"); + dsfr(tabzone).tabPanel.disclose(); + } +} + +function updateURLParameters(paramName, paramValue) { + const params = new URLSearchParams(window.location.search); + params.set(paramName, paramValue); + window.history.pushState({}, '', `?${params.toString()}`); +} + document.addEventListener('DOMContentLoaded', function() { + + document.documentElement.addEventListener('dsfr.start', () => { + setTimeout(() => { + selectZoneTab(); + }, 1000); + }); + const viewManager = new ViewManager(evenementViewModeConfig); viewManager.initialize(); @@ -29,7 +50,7 @@ document.addEventListener('DOMContentLoaded', function() { element.addEventListener('dsfr.disclose', event=>{ const tabId = event.target.getAttribute("id").replace("tabpanel-", "").replace("-panel", "") showOnlyActionsForDetection(tabId) - window.history.pushState({}, '', `?detection=${tabId}`); + updateURLParameters('detection', tabId); }) }) diff --git a/sv/views.py b/sv/views.py index fc8edf2f..b934a3de 100644 --- a/sv/views.py +++ b/sv/views.py @@ -488,7 +488,7 @@ class FicheZoneDelimiteeCreateView(WithFormErrorsAsMessagesMixin, CreateView): context_object_name = "fiche" def get_success_url(self): - return reverse("evenement-details", args=[self.object.evenement.numero]) + "#tabpanel-zone-panel" + return reverse("evenement-details", args=[self.object.evenement.numero]) + "?tab=zone" def dispatch(self, request, *args, **kwargs): try: @@ -595,7 +595,7 @@ class FicheZoneDelimiteeUpdateView( context_object_name = "fiche" def get_success_url(self): - return self.get_object().get_absolute_url() + "#tabpanel-zone-panel" + return self.get_object().get_absolute_url() + "?tab=zone" def test_func(self) -> bool | None: return self.get_object().evenement.can_user_access(self.request.user)