mirror of
https://github.com/ansible/awx.git
synced 2026-01-18 13:11:19 -03:30
Changes copy behavior to reload list rather than navigate to edit form. Shows toast message on successful copy.
This commit is contained in:
parent
eb22e09e4d
commit
6b3f45bc26
@ -22,7 +22,8 @@ function ListTemplatesController(
|
||||
strings,
|
||||
Wait,
|
||||
qs,
|
||||
GetBasePath
|
||||
GetBasePath,
|
||||
ngToast
|
||||
) {
|
||||
const vm = this || {};
|
||||
const [jobTemplate, workflowTemplate] = resolvedModels;
|
||||
@ -57,7 +58,7 @@ function ListTemplatesController(
|
||||
};
|
||||
vm.dataset = Dataset.data;
|
||||
vm.templates = Dataset.data.results;
|
||||
|
||||
|
||||
$scope.$watch('vm.dataset.count', () => {
|
||||
$scope.$emit('updateCount', vm.dataset.count, 'templates');
|
||||
});
|
||||
@ -201,9 +202,21 @@ function ListTemplatesController(
|
||||
jobTemplate
|
||||
.create('get', template.id)
|
||||
.then(model => model.copy())
|
||||
.then(({ id }) => {
|
||||
const params = { job_template_id: id };
|
||||
$state.go('templates.editJobTemplate', params, { reload: true });
|
||||
.then((copiedJT) => {
|
||||
ngToast.success({
|
||||
content: `
|
||||
<div class="Toast-wrapper">
|
||||
<div class="Toast-icon">
|
||||
<i class="fa fa-check-circle Toast-successIcon"></i>
|
||||
</div>
|
||||
<div>
|
||||
${strings.get('SUCCESSFUL_CREATION', copiedJT.name)}
|
||||
</div>
|
||||
</div>`,
|
||||
dismissButton: false,
|
||||
dismissOnTimeout: true
|
||||
});
|
||||
$state.go('.', null, { reload: true });
|
||||
})
|
||||
.catch(createErrorHandler('copy job template', 'POST'))
|
||||
.finally(() => Wait('stop'));
|
||||
@ -219,9 +232,21 @@ function ListTemplatesController(
|
||||
$('#prompt-modal').modal('hide');
|
||||
Wait('start');
|
||||
model.copy()
|
||||
.then(({ id }) => {
|
||||
const params = { workflow_job_template_id: id };
|
||||
$state.go('templates.editWorkflowJobTemplate', params, { reload: true });
|
||||
.then((copiedWFJT) => {
|
||||
ngToast.success({
|
||||
content: `
|
||||
<div class="Toast-wrapper">
|
||||
<div class="Toast-icon">
|
||||
<i class="fa fa-check-circle Toast-successIcon"></i>
|
||||
</div>
|
||||
<div>
|
||||
${strings.get('SUCCESSFUL_CREATION', copiedWFJT.name)}
|
||||
</div>
|
||||
</div>`,
|
||||
dismissButton: false,
|
||||
dismissOnTimeout: true
|
||||
});
|
||||
$state.go('.', null, { reload: true });
|
||||
})
|
||||
.catch(createErrorHandler('copy workflow', 'POST'))
|
||||
.finally(() => Wait('stop'));
|
||||
@ -360,7 +385,8 @@ ListTemplatesController.$inject = [
|
||||
'TemplatesStrings',
|
||||
'Wait',
|
||||
'QuerySet',
|
||||
'GetBasePath'
|
||||
'GetBasePath',
|
||||
'ngToast'
|
||||
];
|
||||
|
||||
export default ListTemplatesController;
|
||||
|
||||
@ -2349,3 +2349,14 @@ body {
|
||||
margin-top: .3em;
|
||||
margin-bottom: .3em;
|
||||
}
|
||||
|
||||
.Toast-wrapper {
|
||||
display: flex;
|
||||
max-width: 250px;
|
||||
}
|
||||
|
||||
.Toast-icon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
@ -72,6 +72,7 @@ function BaseStringService (namespace) {
|
||||
this.COPY = t.s('COPY');
|
||||
this.YES = t.s('YES');
|
||||
this.CLOSE = t.s('CLOSE');
|
||||
this.SUCCESSFUL_CREATION = resource => t.s('{{ resource }} successfully created', { resource });
|
||||
|
||||
this.deleteResource = {
|
||||
HEADER: t.s('Delete'),
|
||||
|
||||
@ -6,10 +6,10 @@
|
||||
|
||||
export default ['$scope', 'Rest', 'CredentialList', 'Prompt', 'ProcessErrors', 'GetBasePath',
|
||||
'Wait', '$state', '$filter', 'rbacUiControlService', 'Dataset', 'credentialType', 'i18n',
|
||||
'CredentialModel', 'CredentialsStrings',
|
||||
'CredentialModel', 'CredentialsStrings', 'ngToast',
|
||||
function($scope, Rest, CredentialList, Prompt,
|
||||
ProcessErrors, GetBasePath, Wait, $state, $filter, rbacUiControlService, Dataset,
|
||||
credentialType, i18n, Credential, CredentialsStrings) {
|
||||
credentialType, i18n, Credential, CredentialsStrings, ngToast) {
|
||||
|
||||
const credential = new Credential();
|
||||
|
||||
@ -93,9 +93,21 @@ export default ['$scope', 'Rest', 'CredentialList', 'Prompt', 'ProcessErrors', '
|
||||
Wait('start');
|
||||
new Credential('get', credential.id)
|
||||
.then(model => model.copy())
|
||||
.then(({ id }) => {
|
||||
const params = { credential_id: id };
|
||||
$state.go('credentials.edit', params, { reload: true });
|
||||
.then((copiedCred) => {
|
||||
ngToast.success({
|
||||
content: `
|
||||
<div class="Toast-wrapper">
|
||||
<div class="Toast-icon">
|
||||
<i class="fa fa-check-circle Toast-successIcon"></i>
|
||||
</div>
|
||||
<div>
|
||||
${CredentialsStrings.get('SUCCESSFUL_CREATION', copiedCred.name)}
|
||||
</div>
|
||||
</div>`,
|
||||
dismissButton: false,
|
||||
dismissOnTimeout: true
|
||||
});
|
||||
$state.go('.', null, { reload: true });
|
||||
})
|
||||
.catch(({ data, status }) => {
|
||||
const params = { hdr: 'Error!', msg: `Call to copy failed. Return status: ${status}` };
|
||||
|
||||
@ -13,7 +13,8 @@
|
||||
function InventoriesList($scope,
|
||||
$filter, Rest, InventoryList, Prompt,
|
||||
ProcessErrors, GetBasePath, Wait, $state,
|
||||
Dataset, canAdd, i18n, Inventory, InventoryHostsStrings) {
|
||||
Dataset, canAdd, i18n, Inventory, InventoryHostsStrings,
|
||||
ngToast) {
|
||||
|
||||
let inventory = new Inventory();
|
||||
|
||||
@ -82,7 +83,22 @@ function InventoriesList($scope,
|
||||
Wait('start');
|
||||
new Inventory('get', inventory.id)
|
||||
.then(model => model.copy())
|
||||
.then(copy => $scope.editInventory(copy, true))
|
||||
.then(copiedInv => {
|
||||
ngToast.success({
|
||||
content: `
|
||||
<div class="Toast-wrapper">
|
||||
<div class="Toast-icon">
|
||||
<i class="fa fa-check-circle Toast-successIcon"></i>
|
||||
</div>
|
||||
<div>
|
||||
${InventoryHostsStrings.get('SUCCESSFUL_CREATION', copiedInv.name)}
|
||||
</div>
|
||||
</div>`,
|
||||
dismissButton: false,
|
||||
dismissOnTimeout: true
|
||||
});
|
||||
$state.go('.', null, { reload: true });
|
||||
})
|
||||
.catch(({ data, status }) => {
|
||||
const params = { hdr: 'Error!', msg: `Call to copy failed. Return status: ${status}` };
|
||||
ProcessErrors($scope, data, status, null, params);
|
||||
@ -182,5 +198,5 @@ export default ['$scope',
|
||||
'$filter', 'Rest', 'InventoryList', 'Prompt',
|
||||
'ProcessErrors', 'GetBasePath', 'Wait',
|
||||
'$state', 'Dataset', 'canAdd', 'i18n', 'InventoryModel',
|
||||
'InventoryHostsStrings', InventoriesList
|
||||
'InventoryHostsStrings', 'ngToast', InventoriesList
|
||||
];
|
||||
|
||||
@ -7,12 +7,12 @@
|
||||
export default ['$rootScope', '$scope', 'Wait', 'InventoryScriptsList',
|
||||
'GetBasePath', 'Rest', 'ProcessErrors', 'Prompt', '$state', '$filter',
|
||||
'Dataset', 'rbacUiControlService', 'InventoryScriptModel', 'InventoryScriptsStrings',
|
||||
'i18n',
|
||||
'i18n', 'ngToast',
|
||||
function(
|
||||
$rootScope, $scope, Wait, InventoryScriptsList,
|
||||
GetBasePath, Rest, ProcessErrors, Prompt, $state, $filter,
|
||||
Dataset, rbacUiControlService, InventoryScript, InventoryScriptsStrings,
|
||||
i18n
|
||||
i18n, ngToast
|
||||
) {
|
||||
let inventoryScript = new InventoryScript();
|
||||
var defaultUrl = GetBasePath('inventory_scripts'),
|
||||
@ -51,9 +51,21 @@ export default ['$rootScope', '$scope', 'Wait', 'InventoryScriptsList',
|
||||
Wait('start');
|
||||
new InventoryScript('get', inventoryScript.id)
|
||||
.then(model => model.copy())
|
||||
.then(({ id }) => {
|
||||
const params = { inventory_script_id: id };
|
||||
$state.go('inventoryScripts.edit', params, { reload: true });
|
||||
.then((copiedInvScript) => {
|
||||
ngToast.success({
|
||||
content: `
|
||||
<div class="Toast-wrapper">
|
||||
<div class="Toast-icon">
|
||||
<i class="fa fa-check-circle Toast-successIcon"></i>
|
||||
</div>
|
||||
<div>
|
||||
${InventoryScriptsStrings.get('SUCCESSFUL_CREATION', copiedInvScript.name)}
|
||||
</div>
|
||||
</div>`,
|
||||
dismissButton: false,
|
||||
dismissOnTimeout: true
|
||||
});
|
||||
$state.go('.', null, { reload: true });
|
||||
})
|
||||
.catch(({ data, status }) => {
|
||||
const params = { hdr: 'Error!', msg: `Call to copy failed. Return status: ${status}` };
|
||||
|
||||
@ -7,12 +7,12 @@
|
||||
export default ['$scope', 'Wait', 'NotificationTemplatesList',
|
||||
'GetBasePath', 'Rest', 'ProcessErrors', 'Prompt', '$state',
|
||||
'ngToast', '$filter', 'Dataset', 'rbacUiControlService',
|
||||
'i18n', 'NotificationTemplate',
|
||||
'i18n', 'NotificationTemplate', 'AppStrings',
|
||||
function(
|
||||
$scope, Wait, NotificationTemplatesList,
|
||||
GetBasePath, Rest, ProcessErrors, Prompt, $state,
|
||||
ngToast, $filter, Dataset, rbacUiControlService,
|
||||
i18n, NotificationTemplate) {
|
||||
i18n, NotificationTemplate, AppStrings) {
|
||||
|
||||
var defaultUrl = GetBasePath('notification_templates'),
|
||||
list = NotificationTemplatesList;
|
||||
@ -92,12 +92,21 @@
|
||||
Wait('start');
|
||||
new NotificationTemplate('get', notificationTemplate.id)
|
||||
.then(model => model.copy())
|
||||
.then(({ id }) => {
|
||||
const params = {
|
||||
notification_template_id: id,
|
||||
notification_template: this.notification_templates
|
||||
};
|
||||
$state.go('notifications.edit', params, { reload: true });
|
||||
.then((copiedNotification) => {
|
||||
ngToast.success({
|
||||
content: `
|
||||
<div class="Toast-wrapper">
|
||||
<div class="Toast-icon">
|
||||
<i class="fa fa-check-circle Toast-successIcon"></i>
|
||||
</div>
|
||||
<div>
|
||||
${AppStrings.get('SUCCESSFUL_CREATION', copiedNotification.name)}
|
||||
</div>
|
||||
</div>`,
|
||||
dismissButton: false,
|
||||
dismissOnTimeout: true
|
||||
});
|
||||
$state.go('.', null, { reload: true });
|
||||
})
|
||||
.catch(({ data, status }) => {
|
||||
const params = { hdr: 'Error!', msg: `Call to copy failed. Return status: ${status}` };
|
||||
|
||||
@ -8,11 +8,11 @@ export default ['$scope', '$rootScope', '$log', 'Rest', 'Alert',
|
||||
'ProjectList', 'Prompt', 'ProcessErrors', 'GetBasePath', 'ProjectUpdate',
|
||||
'Wait', 'Empty', 'Find', 'GetProjectIcon', 'GetProjectToolTip', '$filter',
|
||||
'$state', 'rbacUiControlService', 'Dataset', 'i18n', 'QuerySet', 'ProjectModel',
|
||||
'ProjectsStrings',
|
||||
'ProjectsStrings', 'ngToast',
|
||||
function($scope, $rootScope, $log, Rest, Alert, ProjectList,
|
||||
Prompt, ProcessErrors, GetBasePath, ProjectUpdate, Wait, Empty, Find,
|
||||
GetProjectIcon, GetProjectToolTip, $filter, $state, rbacUiControlService,
|
||||
Dataset, i18n, qs, Project, ProjectsStrings) {
|
||||
Dataset, i18n, qs, Project, ProjectsStrings, ngToast) {
|
||||
|
||||
let project = new Project();
|
||||
|
||||
@ -156,9 +156,21 @@ export default ['$scope', '$rootScope', '$log', 'Rest', 'Alert',
|
||||
Wait('start');
|
||||
new Project('get', project.id)
|
||||
.then(model => model.copy())
|
||||
.then(({ id }) => {
|
||||
const params = { project_id: id };
|
||||
$state.go('projects.edit', params, { reload: true });
|
||||
.then((copiedProj) => {
|
||||
ngToast.success({
|
||||
content: `
|
||||
<div class="Toast-wrapper">
|
||||
<div class="Toast-icon">
|
||||
<i class="fa fa-check-circle Toast-successIcon"></i>
|
||||
</div>
|
||||
<div>
|
||||
${ProjectsStrings.get('SUCCESSFUL_CREATION', copiedProj.name)}
|
||||
</div>
|
||||
</div>`,
|
||||
dismissButton: false,
|
||||
dismissOnTimeout: true
|
||||
});
|
||||
$state.go('.', null, { reload: true });
|
||||
})
|
||||
.catch(({ data, status }) => {
|
||||
const params = { hdr: 'Error!', msg: `Call to copy failed. Return status: ${status}` };
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user