diff --git a/awx/ui/static/js/controllers/JobTemplates.js b/awx/ui/static/js/controllers/JobTemplates.js index 84a4575db0..dd9ba5bd91 100644 --- a/awx/ui/static/js/controllers/JobTemplates.js +++ b/awx/ui/static/js/controllers/JobTemplates.js @@ -167,6 +167,7 @@ function JobTemplatesAdd ($scope, $rootScope, $compile, $location, $log, $routeP var selectPlaybook = function(oldValue, newValue) { if (oldValue != newValue) { if (scope.project) { + Wait('start'); var url = GetBasePath('projects') + scope.project + '/playbooks/'; Rest.setUrl(url); Rest.get() @@ -176,8 +177,10 @@ function JobTemplatesAdd ($scope, $rootScope, $compile, $location, $log, $routeP opts.push(data[i]); } scope.playbook_options = opts; + Wait('stop'); }) .error( function(data, status, headers, config) { + Wait('stop'); ProcessErrors(scope, data, status, form, { hdr: 'Error!', msg: 'Failed to get playbook list for ' + url +'. GET returned status: ' + status }); }); @@ -343,6 +346,7 @@ function JobTemplatesEdit ($scope, $rootScope, $compile, $location, $log, $route function getPlaybooks(project) { if (project !== null && project !== '' && project !== undefined) { var url = GetBasePath('projects') + project + '/playbooks/'; + Wait('start'); Rest.setUrl(url); Rest.get() .success( function(data, status, headers, config) { @@ -353,15 +357,20 @@ function JobTemplatesEdit ($scope, $rootScope, $compile, $location, $log, $route scope['job_templates_form']['playbook'].$setValidity('required',true); } } + Wait('stop'); if (!scope.$$phase) { scope.$digest(); } }) .error( function(data, status, headers, config) { + Wait('stop'); Alert('Missing Playbooks', 'Unable to retrieve the list of playbooks for this project. Choose a different ' + ' project or make the playbooks available on the file system.', 'alert-info'); }); } + else { + Wait('stop'); + } } // Detect and alert user to potential SCM status issues @@ -479,6 +488,7 @@ function JobTemplatesEdit ($scope, $rootScope, $compile, $location, $log, $route scope.$emit('cloudCredentialReady', data.name); }) .error( function(data, status, headers, config) { + Wait('stop'); ProcessErrors(scope, data, status, null, { hdr: 'Error!', msg: 'Failed to related cloud credential. GET returned status: ' + status }); }); @@ -489,6 +499,7 @@ function JobTemplatesEdit ($scope, $rootScope, $compile, $location, $log, $route } }); + Wait('start'); // Retrieve detail record and prepopulate the form Rest.setUrl(defaultUrl + ':id/'); Rest.get({ params: {id: id} }) @@ -575,6 +586,7 @@ function JobTemplatesEdit ($scope, $rootScope, $compile, $location, $log, $route scope.$emit('jobTemplateLoaded', data.related.cloud_credential); }) .error( function(data, status, headers, config) { + Wait('stop'); ProcessErrors(scope, data, status, form, { hdr: 'Error!', msg: 'Failed to retrieve job template: ' + $routeParams.id + '. GET status: ' + status }); }); diff --git a/awx/ui/static/js/forms/Permissions.js b/awx/ui/static/js/forms/Permissions.js index cacdd1eb21..b23d98d571 100644 --- a/awx/ui/static/js/forms/Permissions.js +++ b/awx/ui/static/js/forms/Permissions.js @@ -30,7 +30,8 @@ angular.module('PermissionFormDefinition', []) fields: { category: { - label: '* Permission Type', + label: 'Permission Type', + labelClass: 'prepend-asterisk', type: 'radio_group', options: [ { label: 'Inventory', value: 'Inventory', selected: true }, @@ -77,7 +78,8 @@ angular.module('PermissionFormDefinition', []) awRequiredWhen: {variable: "inventoryrequired", init: "true" } }, permission_type: { - label: '* Permission', + label: 'Permission', + labelClass: 'prepend-asterisk', type: 'radio_group', options: [ {label: 'Read', value: 'read', ngShow: "category == 'Inventory'" }, diff --git a/awx/ui/static/js/widgets/InventorySyncStatus.js b/awx/ui/static/js/widgets/InventorySyncStatus.js index 4c631efc63..1aa341f4cf 100644 --- a/awx/ui/static/js/widgets/InventorySyncStatus.js +++ b/awx/ui/static/js/widgets/InventorySyncStatus.js @@ -39,7 +39,9 @@ angular.module('InventorySyncStatusWidget', ['RestServices', 'Utilities']) html += "\n"; - html += ""; + html += " 0) ? 'failed-column' : 'zero-column'; + html += " text-right\">"; html += "" + fail + ""; html += "\n"; html += ""; diff --git a/awx/ui/static/js/widgets/JobStatus.js b/awx/ui/static/js/widgets/JobStatus.js index a7ec15a5ff..6a5def9bc3 100644 --- a/awx/ui/static/js/widgets/JobStatus.js +++ b/awx/ui/static/js/widgets/JobStatus.js @@ -41,7 +41,9 @@ angular.module('JobStatusWidget', ['RestServices', 'Utilities']) html += "\n"; - html += ""; + html += " 0) ? 'failed-column' : 'zero-column'; + html += " text-right\">"; html += "" + fail + ""; html += "\n"; html += "" diff --git a/awx/ui/static/js/widgets/SCMSyncStatus.js b/awx/ui/static/js/widgets/SCMSyncStatus.js index 6c66a8b3c9..4ff4096834 100644 --- a/awx/ui/static/js/widgets/SCMSyncStatus.js +++ b/awx/ui/static/js/widgets/SCMSyncStatus.js @@ -38,7 +38,9 @@ angular.module('SCMSyncStatusWidget', ['RestServices', 'Utilities']) var fail = params.fail; html += "\n"; html += "" + label + "\n"; - html += ""; + html += " 0) ? 'failed-column' : 'zero-column'; + html += " text-right\">"; html += "" + fail + ""; html += "\n"; html += "" diff --git a/awx/ui/static/less/ansible-ui.less b/awx/ui/static/less/ansible-ui.less index 34892250fa..fd54a093f1 100644 --- a/awx/ui/static/less/ansible-ui.less +++ b/awx/ui/static/less/ansible-ui.less @@ -155,6 +155,7 @@ textarea { .prepend-asterisk:before { content: "\002A\00A0"; + color: @red; } .subtitle {