From 7c1bca4be8974e3e1ff694fec06747aa53fdf337 Mon Sep 17 00:00:00 2001 From: Brian Hetro Date: Fri, 26 May 2023 20:24:29 -0400 Subject: [PATCH] Handle back/forward when using URL parameters for filter states --- util/gh-pages/script.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/util/gh-pages/script.js b/util/gh-pages/script.js index 3aaf455e12fe..868b63a27dff 100644 --- a/util/gh-pages/script.js +++ b/util/gh-pages/script.js @@ -163,7 +163,7 @@ const urlParameters = $location.search(); // Define a helper function that assigns URL parameters to a provided scope variable - const handleParameter = (parameter, scopeVariable) => { + const handleParameter = (parameter, scopeVariable, defaultValues) => { if (urlParameters[parameter]) { const items = urlParameters[parameter].split(','); for (const key in scopeVariable) { @@ -171,11 +171,17 @@ scopeVariable[key] = items.includes(key); } } + } else if (defaultValues) { + for (const key in defaultValues) { + if (scopeVariable.hasOwnProperty(key)) { + scopeVariable[key] = defaultValues[key]; + } + } } }; - handleParameter('levels', $scope.levels); - handleParameter('groups', $scope.groups); + handleParameter('levels', $scope.levels, LEVEL_FILTERS_DEFAULT); + handleParameter('groups', $scope.groups, GROUPS_FILTER_DEFAULT); // Handle 'versions' parameter separately because it needs additional processing if (urlParameters.versions) { @@ -277,6 +283,12 @@ } }); + $scope.$watch(function () { + return $location.search(); + }, function (newParameters) { + loadFromURLParameters(); + }); + $scope.selectTheme = function (theme) { setTheme(theme, true); }