mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 01:57:35 -03:30
Allow navigation to previous launch prompt tabs
This commit is contained in:
parent
8e296bbf8c
commit
85781d0bc1
@ -20,16 +20,18 @@ function AtTabController ($state) {
|
||||
group.register(scope);
|
||||
};
|
||||
|
||||
vm.go = () => {
|
||||
vm.handleClick = () => {
|
||||
if (scope.state._disabled || scope.state._active) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (scope.state._go) {
|
||||
$state.go(scope.state._go, scope.state._params, { reload: true });
|
||||
} else {
|
||||
group.clearActive();
|
||||
scope.state._active = true;
|
||||
return;
|
||||
}
|
||||
group.clearActive();
|
||||
scope.state._active = true;
|
||||
if (scope.state._onClickActivate) {
|
||||
scope.state._onClickActivate();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -2,6 +2,6 @@
|
||||
ng-attr-disabled="{{ state._disabled || undefined }}"
|
||||
ng-class="{ 'at-Tab--active': state._active, 'at-Tab--disabled': state._disabled }"
|
||||
ng-hide="{{ state._hide }}"
|
||||
ng-click="state._go && vm.go();">
|
||||
ng-click="vm.handleClick();">
|
||||
<ng-transclude></ng-transclude>
|
||||
</button>
|
||||
|
||||
@ -189,6 +189,36 @@ export default [ 'ProcessErrors', 'CredentialTypeModel', 'TemplatesStrings', '$f
|
||||
modal.show($filter('sanitize')(vm.promptDataClone.templateName));
|
||||
vm.promptData.triggerModalOpen = false;
|
||||
|
||||
vm._savedPromptData = {
|
||||
1: _.cloneDeep(vm.promptDataClone)
|
||||
};
|
||||
Object.keys(vm.steps).forEach(step => {
|
||||
if (!vm.steps[step].tab) {
|
||||
return;
|
||||
}
|
||||
vm.steps[step].tab._onClickActivate = () => {
|
||||
if (vm._savedPromptData[vm.steps[step].tab.order]) {
|
||||
vm.promptDataClone = vm._savedPromptData[vm.steps[step].tab.order];
|
||||
}
|
||||
Object.keys(vm.steps).forEach(tabStep => {
|
||||
if (!vm.steps[tabStep].tab) {
|
||||
return;
|
||||
}
|
||||
if (vm.steps[tabStep].tab.order < vm.steps[step].tab.order) {
|
||||
vm.steps[tabStep].tab._disabled = false;
|
||||
vm.steps[tabStep].tab._active = false;
|
||||
} else if (vm.steps[tabStep].tab.order === vm.steps[step].tab.order) {
|
||||
vm.steps[tabStep].tab._disabled = false;
|
||||
vm.steps[tabStep].tab._active = true;
|
||||
} else {
|
||||
vm.steps[tabStep].tab._disabled = true;
|
||||
vm.steps[tabStep].tab._active = false;
|
||||
}
|
||||
});
|
||||
scope.$broadcast('promptTabChange', { step });
|
||||
};
|
||||
});
|
||||
|
||||
modal.onClose = () => {
|
||||
scope.$emit('launchModalOpen', false);
|
||||
};
|
||||
@ -214,19 +244,39 @@ export default [ 'ProcessErrors', 'CredentialTypeModel', 'TemplatesStrings', '$f
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
let nextStep;
|
||||
Object.keys(vm.steps).forEach(step => {
|
||||
if(vm.steps[step].tab) {
|
||||
if(vm.steps[step].tab.order === currentTab.order) {
|
||||
vm.steps[step].tab._active = false;
|
||||
vm.steps[step].tab._disabled = true;
|
||||
} else if(vm.steps[step].tab.order === currentTab.order + 1) {
|
||||
activeTab = currentTab;
|
||||
vm.steps[step].tab._active = true;
|
||||
vm.steps[step].tab._disabled = false;
|
||||
scope.$broadcast('promptTabChange', { step });
|
||||
}
|
||||
if (!vm.steps[step].tab) {
|
||||
return;
|
||||
}
|
||||
if (vm.steps[step].tab.order === currentTab.order + 1) {
|
||||
nextStep = step;
|
||||
}
|
||||
});
|
||||
|
||||
if (!nextStep) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Save the current promptData state in case we need to revert
|
||||
vm._savedPromptData[currentTab.order] = _.cloneDeep(vm.promptDataClone);
|
||||
Object.keys(vm.steps).forEach(tabStep => {
|
||||
if (!vm.steps[tabStep].tab) {
|
||||
return;
|
||||
}
|
||||
if (vm.steps[tabStep].tab.order < vm.steps[nextStep].tab.order) {
|
||||
vm.steps[tabStep].tab._disabled = false;
|
||||
vm.steps[tabStep].tab._active = false;
|
||||
} else if (vm.steps[tabStep].tab.order === vm.steps[nextStep].tab.order) {
|
||||
vm.steps[tabStep].tab._disabled = false;
|
||||
vm.steps[tabStep].tab._active = true;
|
||||
} else {
|
||||
vm.steps[tabStep].tab._disabled = true;
|
||||
vm.steps[tabStep].tab._active = false;
|
||||
}
|
||||
});
|
||||
scope.$broadcast('promptTabChange', { step: nextStep });
|
||||
};
|
||||
|
||||
vm.keypress = (event) => {
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
read-only-prompts="vm.readOnlyPrompts">
|
||||
</prompt-credential>
|
||||
</div>
|
||||
<div ng-if="vm.steps.other_prompts.includeStep" ng-show="vm.steps.other_prompts.tab._active" id="prompt_other_prompts_step">
|
||||
<div ng-if="vm.steps.other_prompts.includeStep && vm.steps.other_prompts.tab._active" id="prompt_other_prompts_step">
|
||||
<prompt-other-prompts
|
||||
prompt-data="vm.promptDataClone"
|
||||
other-prompts-form="vm.forms.otherPrompts"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user