From 4054d3de6e8c1da18d672abb9c0cf5eedb7c27d2 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Fri, 2 Jun 2017 19:29:40 +0300 Subject: [PATCH] UI: Improve dashboard state management. --- ui/src/app/dashboard/dashboard.controller.js | 4 +-- .../states/default-state-controller.js | 31 +++++++++++++++---- .../states/entity-state-controller.js | 31 +++++++++++++++---- .../states/states-component.directive.js | 16 +++++++--- 4 files changed, 64 insertions(+), 18 deletions(-) diff --git a/ui/src/app/dashboard/dashboard.controller.js b/ui/src/app/dashboard/dashboard.controller.js index ecf072d7a7..31892a6ce4 100644 --- a/ui/src/app/dashboard/dashboard.controller.js +++ b/ui/src/app/dashboard/dashboard.controller.js @@ -369,7 +369,7 @@ export default function DashboardController(types, dashboardUtils, widgetService } } - function openDashboardState(state) { + function openDashboardState(state, openRightLayout) { var layoutsData = dashboardUtils.getStateLayoutsData(vm.dashboard, state); if (layoutsData) { vm.dashboardCtx.state = state; @@ -387,7 +387,7 @@ export default function DashboardController(types, dashboardUtils, widgetService layoutVisibilityChanged = !vm.isMobile; } } - vm.isRightLayoutOpened = false; + vm.isRightLayoutOpened = openRightLayout ? true : false; updateLayouts(layoutVisibilityChanged); } diff --git a/ui/src/app/dashboard/states/default-state-controller.js b/ui/src/app/dashboard/states/default-state-controller.js index 782f59ea68..76ea9b801f 100644 --- a/ui/src/app/dashboard/states/default-state-controller.js +++ b/ui/src/app/dashboard/states/default-state-controller.js @@ -26,12 +26,13 @@ export default function DefaultStateController($scope, $location, $state, $state vm.navigatePrevState = navigatePrevState; vm.getStateId = getStateId; vm.getStateParams = getStateParams; + vm.getStateParamsByStateId = getStateParamsByStateId; vm.getStateName = getStateName; vm.displayStateSelection = displayStateSelection; - function openState(id, params) { + function openState(id, params, openRightLayout) { if (vm.states && vm.states[id]) { if (!params) { params = {}; @@ -42,11 +43,11 @@ export default function DefaultStateController($scope, $location, $state, $state } //append new state vm.stateObject[0] = newState; - gotoState(vm.stateObject[0].id, true); + gotoState(vm.stateObject[0].id, true, openRightLayout); } } - function updateState(id, params) { + function updateState(id, params, openRightLayout) { if (vm.states && vm.states[id]) { if (!params) { params = {}; @@ -57,7 +58,7 @@ export default function DefaultStateController($scope, $location, $state, $state } //replace with new state vm.stateObject[0] = newState; - gotoState(vm.stateObject[0].id, true); + gotoState(vm.stateObject[0].id, true, openRightLayout); } } @@ -76,6 +77,24 @@ export default function DefaultStateController($scope, $location, $state, $state return vm.stateObject[vm.stateObject.length-1].params; } + function getStateParamsByStateId(stateId) { + var stateObj = getStateObjById(stateId); + if (stateObj) { + return stateObj.params; + } else { + return null; + } + } + + function getStateObjById(id) { + for (var i=0; i < vm.stateObject.length; i++) { + if (vm.stateObject[i].id === id) { + return vm.stateObject[i]; + } + } + return null; + } + function getStateName(id, state) { var result = ''; var translationId = types.translate.dashboardStatePrefix + id; @@ -161,9 +180,9 @@ export default function DefaultStateController($scope, $location, $state, $state }, true); } - function gotoState(stateId, update) { + function gotoState(stateId, update, openRightLayout) { if (vm.dashboardCtrl.dashboardCtx.state != stateId) { - vm.dashboardCtrl.openDashboardState(stateId); + vm.dashboardCtrl.openDashboardState(stateId, openRightLayout); if (update) { updateLocation(); } diff --git a/ui/src/app/dashboard/states/entity-state-controller.js b/ui/src/app/dashboard/states/entity-state-controller.js index 8ee9285b5f..51cf67d07c 100644 --- a/ui/src/app/dashboard/states/entity-state-controller.js +++ b/ui/src/app/dashboard/states/entity-state-controller.js @@ -28,12 +28,13 @@ export default function EntityStateController($scope, $location, $state, $stateP vm.navigatePrevState = navigatePrevState; vm.getStateId = getStateId; vm.getStateParams = getStateParams; + vm.getStateParamsByStateId = getStateParamsByStateId; vm.getStateName = getStateName; vm.selectedStateIndex = -1; - function openState(id, params) { + function openState(id, params, openRightLayout) { if (vm.states && vm.states[id]) { resolveEntity(params).then( function success(entityName) { @@ -45,13 +46,13 @@ export default function EntityStateController($scope, $location, $state, $stateP //append new state vm.stateObject.push(newState); vm.selectedStateIndex = vm.stateObject.length-1; - gotoState(vm.stateObject[vm.stateObject.length-1].id, true); + gotoState(vm.stateObject[vm.stateObject.length-1].id, true, openRightLayout); } ); } } - function updateState(id, params) { + function updateState(id, params, openRightLayout) { if (vm.states && vm.states[id]) { resolveEntity(params).then( function success(entityName) { @@ -62,7 +63,7 @@ export default function EntityStateController($scope, $location, $state, $stateP } //replace with new state vm.stateObject[vm.stateObject.length - 1] = newState; - gotoState(vm.stateObject[vm.stateObject.length - 1].id, true); + gotoState(vm.stateObject[vm.stateObject.length - 1].id, true, openRightLayout); } ); } @@ -84,6 +85,24 @@ export default function EntityStateController($scope, $location, $state, $stateP return vm.stateObject[vm.stateObject.length-1].params; } + function getStateParamsByStateId(stateId) { + var stateObj = getStateObjById(stateId); + if (stateObj) { + return stateObj.params; + } else { + return null; + } + } + + function getStateObjById(id) { + for (var i=0; i < vm.stateObject.length; i++) { + if (vm.stateObject[i].id === id) { + return vm.stateObject[i]; + } + } + return null; + } + function getStateName(index) { var result = ''; if (vm.stateObject[index]) { @@ -223,9 +242,9 @@ export default function EntityStateController($scope, $location, $state, $stateP }); } - function gotoState(stateId, update) { + function gotoState(stateId, update, openRightLayout) { if (vm.dashboardCtrl.dashboardCtx.state != stateId) { - vm.dashboardCtrl.openDashboardState(stateId); + vm.dashboardCtrl.openDashboardState(stateId, openRightLayout); if (update) { updateLocation(); } diff --git a/ui/src/app/dashboard/states/states-component.directive.js b/ui/src/app/dashboard/states/states-component.directive.js index fb5e77c3f6..538c3e9620 100644 --- a/ui/src/app/dashboard/states/states-component.directive.js +++ b/ui/src/app/dashboard/states/states-component.directive.js @@ -29,15 +29,15 @@ export default function StatesComponent($compile, $templateCache, $controller, s var stateController = scope.dashboardCtrl.dashboardCtx.stateController; - stateController.openState = function(id, params) { + stateController.openState = function(id, params, openRightLayout) { if (scope.statesController) { - scope.statesController.openState(id, params); + scope.statesController.openState(id, params, openRightLayout); } } - stateController.updateState = function(id, params) { + stateController.updateState = function(id, params, openRightLayout) { if (scope.statesController) { - scope.statesController.updateState(id, params); + scope.statesController.updateState(id, params, openRightLayout); } } @@ -62,6 +62,14 @@ export default function StatesComponent($compile, $templateCache, $controller, s return {}; } } + + stateController.getStateParamsByStateId = function(id) { + if (scope.statesController) { + return scope.statesController.getStateParamsByStateId(id); + } else { + return null; + } + } } scope.$on('$destroy', function callOnDestroyHook() {