diff --git a/app/scripts/directives/nav.js b/app/scripts/directives/nav.js index 147dd492e2..924b7c9cad 100644 --- a/app/scripts/directives/nav.js +++ b/app/scripts/directives/nav.js @@ -160,8 +160,11 @@ angular.module('openshiftConsole') $scope.$evalAsync(function() { $scope.isMobile = isMobile; if (isMobile) { + // Don't update localStorage when switching to mobile. + setCollapsed(false); _.set($rootScope, 'nav.collapsed', false); } else { + readSavedCollapsedState(); _.set($rootScope, 'nav.showMobileNav', false); _.each($scope.navItems, function(primaryItem) { primaryItem.mobileSecondary = false; @@ -202,11 +205,32 @@ angular.module('openshiftConsole') templateUrl: 'views/directives/header/header.html', link: function($scope, $elem) { var MAX_PROJETS_TO_DISPLAY = 100; + var NAV_COLLAPSED_STORAGE_KEY = 'openshift/vertical-nav-collapsed'; $scope.project = projects[ $routeParams.project ]; + var setCollapsed = function(collapsed, updateSavedState) { + var storageValue; + _.set($rootScope, 'nav.collapsed', collapsed); + + if (updateSavedState) { + storageValue = collapsed ? 'true' : 'false'; + localStorage.setItem(NAV_COLLAPSED_STORAGE_KEY, storageValue); + } + }; + + var readSavedCollapsedState = function() { + var savedState = localStorage.getItem(NAV_COLLAPSED_STORAGE_KEY) === 'true'; + setCollapsed(savedState); + }; + readSavedCollapsedState(); + + var isCollapsed = function() { + return _.get($rootScope, 'nav.collapsed', false); + }; + $scope.toggleNav = function() { - var collapsed = _.get($rootScope, 'nav.collapsed'); - _.set($rootScope, 'nav.collapsed', !collapsed); + var collapsed = isCollapsed(); + setCollapsed(!collapsed, true); }; $scope.toggleMobileNav = function() { @@ -217,6 +241,7 @@ angular.module('openshiftConsole') $scope.closeOrderingPanel = function() { _.set($scope, 'ordering.panelName', ""); }; + $scope.showOrderingPanel = function(panelName) { _.set($scope, 'ordering.panelName', panelName); };