UI: Improve dashboard state management.

This commit is contained in:
Igor Kulikov 2017-06-02 19:29:40 +03:00
parent 3ebd99ac9e
commit 4054d3de6e
4 changed files with 64 additions and 18 deletions

View File

@ -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); var layoutsData = dashboardUtils.getStateLayoutsData(vm.dashboard, state);
if (layoutsData) { if (layoutsData) {
vm.dashboardCtx.state = state; vm.dashboardCtx.state = state;
@ -387,7 +387,7 @@ export default function DashboardController(types, dashboardUtils, widgetService
layoutVisibilityChanged = !vm.isMobile; layoutVisibilityChanged = !vm.isMobile;
} }
} }
vm.isRightLayoutOpened = false; vm.isRightLayoutOpened = openRightLayout ? true : false;
updateLayouts(layoutVisibilityChanged); updateLayouts(layoutVisibilityChanged);
} }

View File

@ -26,12 +26,13 @@ export default function DefaultStateController($scope, $location, $state, $state
vm.navigatePrevState = navigatePrevState; vm.navigatePrevState = navigatePrevState;
vm.getStateId = getStateId; vm.getStateId = getStateId;
vm.getStateParams = getStateParams; vm.getStateParams = getStateParams;
vm.getStateParamsByStateId = getStateParamsByStateId;
vm.getStateName = getStateName; vm.getStateName = getStateName;
vm.displayStateSelection = displayStateSelection; vm.displayStateSelection = displayStateSelection;
function openState(id, params) { function openState(id, params, openRightLayout) {
if (vm.states && vm.states[id]) { if (vm.states && vm.states[id]) {
if (!params) { if (!params) {
params = {}; params = {};
@ -42,11 +43,11 @@ export default function DefaultStateController($scope, $location, $state, $state
} }
//append new state //append new state
vm.stateObject[0] = newState; 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 (vm.states && vm.states[id]) {
if (!params) { if (!params) {
params = {}; params = {};
@ -57,7 +58,7 @@ export default function DefaultStateController($scope, $location, $state, $state
} }
//replace with new state //replace with new state
vm.stateObject[0] = newState; 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; 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) { function getStateName(id, state) {
var result = ''; var result = '';
var translationId = types.translate.dashboardStatePrefix + id; var translationId = types.translate.dashboardStatePrefix + id;
@ -161,9 +180,9 @@ export default function DefaultStateController($scope, $location, $state, $state
}, true); }, true);
} }
function gotoState(stateId, update) { function gotoState(stateId, update, openRightLayout) {
if (vm.dashboardCtrl.dashboardCtx.state != stateId) { if (vm.dashboardCtrl.dashboardCtx.state != stateId) {
vm.dashboardCtrl.openDashboardState(stateId); vm.dashboardCtrl.openDashboardState(stateId, openRightLayout);
if (update) { if (update) {
updateLocation(); updateLocation();
} }

View File

@ -28,12 +28,13 @@ export default function EntityStateController($scope, $location, $state, $stateP
vm.navigatePrevState = navigatePrevState; vm.navigatePrevState = navigatePrevState;
vm.getStateId = getStateId; vm.getStateId = getStateId;
vm.getStateParams = getStateParams; vm.getStateParams = getStateParams;
vm.getStateParamsByStateId = getStateParamsByStateId;
vm.getStateName = getStateName; vm.getStateName = getStateName;
vm.selectedStateIndex = -1; vm.selectedStateIndex = -1;
function openState(id, params) { function openState(id, params, openRightLayout) {
if (vm.states && vm.states[id]) { if (vm.states && vm.states[id]) {
resolveEntity(params).then( resolveEntity(params).then(
function success(entityName) { function success(entityName) {
@ -45,13 +46,13 @@ export default function EntityStateController($scope, $location, $state, $stateP
//append new state //append new state
vm.stateObject.push(newState); vm.stateObject.push(newState);
vm.selectedStateIndex = vm.stateObject.length-1; 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]) { if (vm.states && vm.states[id]) {
resolveEntity(params).then( resolveEntity(params).then(
function success(entityName) { function success(entityName) {
@ -62,7 +63,7 @@ export default function EntityStateController($scope, $location, $state, $stateP
} }
//replace with new state //replace with new state
vm.stateObject[vm.stateObject.length - 1] = newState; 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; 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) { function getStateName(index) {
var result = ''; var result = '';
if (vm.stateObject[index]) { 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) { if (vm.dashboardCtrl.dashboardCtx.state != stateId) {
vm.dashboardCtrl.openDashboardState(stateId); vm.dashboardCtrl.openDashboardState(stateId, openRightLayout);
if (update) { if (update) {
updateLocation(); updateLocation();
} }

View File

@ -29,15 +29,15 @@ export default function StatesComponent($compile, $templateCache, $controller, s
var stateController = scope.dashboardCtrl.dashboardCtx.stateController; var stateController = scope.dashboardCtrl.dashboardCtx.stateController;
stateController.openState = function(id, params) { stateController.openState = function(id, params, openRightLayout) {
if (scope.statesController) { 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) { 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 {}; return {};
} }
} }
stateController.getStateParamsByStateId = function(id) {
if (scope.statesController) {
return scope.statesController.getStateParamsByStateId(id);
} else {
return null;
}
}
} }
scope.$on('$destroy', function callOnDestroyHook() { scope.$on('$destroy', function callOnDestroyHook() {