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