1
0
mirror of https://github.com/ansible/awx.git synced 2024-11-02 09:51:09 +03:00

AC-681 simulating a disabled button for project update and inventory update. Button appears disabled, but tooltips work. On *disabled* buttons tooltip explains why it is disabled. Button is clickable, but nothing happens- just like a real disable dbutton.

This commit is contained in:
Chris Houseknecht 2013-11-21 17:02:40 +00:00
parent b0d423222c
commit 376d59dfcc
6 changed files with 62 additions and 10 deletions

View File

@ -66,6 +66,14 @@ function ProjectsList ($scope, $rootScope, $location, $log, $routeParams, Rest,
for (var j=0; j < scope.project_scm_type_options.length; j++) { for (var j=0; j < scope.project_scm_type_options.length; j++) {
if (scope.project_scm_type_options[j].value == scope.projects[i].scm_type) { if (scope.project_scm_type_options[j].value == scope.projects[i].scm_type) {
scope.projects[i].scm_type = scope.project_scm_type_options[j].label scope.projects[i].scm_type = scope.project_scm_type_options[j].label
if (scope.projects[i].scm_type == 'Manual') {
scope.projects[i].scm_update_tooltip = 'Manaul projects do not require an SCM update';
scope.projects[i].scm_type_class = 'btn-disabled';
}
else {
scope.projects[i].scm_update_tooltip = "Start an SCM update";
scope.projects[i].scm_type_class = "";
}
break; break;
} }
} }
@ -265,8 +273,11 @@ function ProjectsList ($scope, $rootScope, $location, $log, $routeParams, Rest,
scope.SCMUpdate = function(project_id) { scope.SCMUpdate = function(project_id) {
for (var i=0; i < scope.projects.length; i++) { for (var i=0; i < scope.projects.length; i++) {
if (scope.projects[i].id == project_id) { if (scope.projects[i].id == project_id) {
if (scope.projects[i].scm_type == "" || scope.projects[i].scm_type == null ) { if (scope.projects[i].scm_type == "Manual" || scope.projects[i].scm_type == "" || scope.projects[i].scm_type == null ) {
Alert('Missing SCM Setup', 'Before running an SCM update, edit the project and provide the SCM access information.', 'alert-info'); // Do not respond. Button appears greyed out as if it is disabled. Not disabled though, because we need mouse over event
// to work. So user can click, but we just won't do anything.
//Alert('Missing SCM Setup', 'Before running an SCM update, edit the project and provide the SCM access information.', 'alert-info');
break;
} }
else if (scope.projects[i].status == 'updating') { else if (scope.projects[i].status == 'updating') {
Alert('Update in Progress', 'The SCM update process is running. Use the Refresh button to monitor the status.', 'alert-info'); Alert('Update in Progress', 'The SCM update process is running. Use the Refresh button to monitor the status.', 'alert-info');

View File

@ -373,6 +373,28 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
scope.groups[i].last_updated = last_update; scope.groups[i].last_updated = last_update;
scope.groups[i].status_badge_class = update_status['class']; scope.groups[i].status_badge_class = update_status['class'];
scope.groups[i].status_badge_tooltip = update_status['tooltip']; scope.groups[i].status_badge_tooltip = update_status['tooltip'];
// Set cancel button attributes
if (scope.groups[i].summary_fields.inventory_source.status == 'updating' ||
scope.groups[i].summary_fields.inventory_source.status == 'updating') {
scope.groups[i].cancel_tooltip = "Cancel the update process";
scope.groups[i].cancel_class = "";
}
else {
scope.groups[i].cancel_tooltip = "Update process is not running";
scope.groups[i].cancel_class = "btn-disabled";
}
// Set update button attributes
if (scope.groups[i].summary_fields.inventory_source.source == "" ||
scope.groups[i].summary_fields.inventory_source.source == null) {
scope.groups[i].update_tooltip = "No external source. Does not require an update.";
scope.groups[i].update_class = "btn-disabled";
}
else {
scope.groups[i].update_tooltip = "Start the inventory update process";
scope.groups[i].update_class = "";
}
} }
if (scope.groups.length == 0) { if (scope.groups.length == 0) {
@ -485,7 +507,8 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
if (group.summary_fields.inventory_source.source !== '' && if (group.summary_fields.inventory_source.source !== '' &&
group.summary_fields.inventory_source.source !== null) { group.summary_fields.inventory_source.source !== null) {
// the group has a source // the group has a source
if (group.summary_fields.inventory_source.status == 'updating') { if (group.summary_fields.inventory_source.status == 'updating' ||
group.summary_fields.inventory_source.status == 'pending') {
// there is an update currently running // there is an update currently running
Rest.setUrl(group.related.inventory_source); Rest.setUrl(group.related.inventory_source);
Rest.get() Rest.get()
@ -497,7 +520,9 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
{ hdr: 'Error!', msg: 'Call to ' + group.related.inventory_source + ' failed. GET status: ' + status }); { hdr: 'Error!', msg: 'Call to ' + group.related.inventory_source + ' failed. GET status: ' + status });
}); });
} }
else { }
// The button appears disabled, so act like it is and do not respond to a click.
/* else {
Alert('Update Not Found', 'An Inventory update does not appear to be running for group: <em>' + group.name + '</em>. Click the <em>Refresh</em> ' + Alert('Update Not Found', 'An Inventory update does not appear to be running for group: <em>' + group.name + '</em>. Click the <em>Refresh</em> ' +
'button to view the latet status.', 'alert-info'); 'button to view the latet status.', 'alert-info');
} }
@ -505,7 +530,8 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
else { else {
Alert('Missing Configuration', 'The selected group is not configured for updates. You must first edit the group and provide external Source settings ' + Alert('Missing Configuration', 'The selected group is not configured for updates. You must first edit the group and provide external Source settings ' +
'before attempting an update.', 'alert-info'); 'before attempting an update.', 'alert-info');
} }*/
} }
// Respond to refresh button // Respond to refresh button
@ -526,8 +552,9 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
for (var i=0; i < scope.groups.length; i++) { for (var i=0; i < scope.groups.length; i++) {
if (scope.groups[i].id == id) { if (scope.groups[i].id == id) {
if (scope.groups[i].summary_fields.inventory_source.source == "" || scope.groups[i].summary_fields.inventory_source.source == null) { if (scope.groups[i].summary_fields.inventory_source.source == "" || scope.groups[i].summary_fields.inventory_source.source == null) {
Alert('Missing Configuration', 'The selected group is not configured for updates. You must first edit the group and provide ' + //Alert('Missing Configuration', 'The selected group is not configured for updates. You must first edit the group and provide ' +
'external Source settings before attempting an update.', 'alert-info'); // 'external Source settings before attempting an update.', 'alert-info');
// Do nothing. Act as though button is disabled.
} }
else if (scope.groups[i].summary_fields.inventory_source.status == 'updating') { else if (scope.groups[i].summary_fields.inventory_source.status == 'updating') {
Alert('Update in Progress', 'The inventory update process is currently running for group <em>' + Alert('Update in Progress', 'The inventory update process is currently running for group <em>' +

View File

@ -163,14 +163,16 @@ angular.module('InventorySummaryDefinition', [])
icon: 'icon-cloud-download', icon: 'icon-cloud-download',
"class": 'btn-xs btn-success', "class": 'btn-xs btn-success',
ngClick: 'updateGroup(\{\{ group.id \}\})', ngClick: 'updateGroup(\{\{ group.id \}\})',
awToolTip: 'Perform an update on this group' awToolTip: "\{\{ group.update_tooltip \}\}",
ngClass: "group.update_class"
}, },
cancel: { cancel: {
label: 'Cancel', label: 'Cancel',
icon: 'icon-minus-sign', icon: 'icon-minus-sign',
ngClick: "cancelUpdate(\{\{ group.id \}\}, '\{\{ group.name \}\}')", ngClick: "cancelUpdate(\{\{ group.id \}\}, '\{\{ group.name \}\}')",
"class": 'btn-danger btn-xs delete-btn', "class": 'btn-danger btn-xs delete-btn',
awToolTip: 'Cancel a running update process' awToolTip: "\{\{ group.cancel_tooltip \}\}",
ngClass: "group.cancel_class"
} }
} }
}); });

View File

@ -122,7 +122,8 @@ angular.module('ProjectsListDefinition', [])
icon: 'icon-cloud-download', icon: 'icon-cloud-download',
"class": 'btn-xs btn-success', "class": 'btn-xs btn-success',
ngClick: 'SCMUpdate(\{\{ project.id \}\})', ngClick: 'SCMUpdate(\{\{ project.id \}\})',
awToolTip: 'Perform an SCM update on this project' awToolTip: "\{\{ project.scm_update_tooltip \}\}",
ngClass: "project.scm_type_class"
}, },
cancel: { cancel: {
label: 'Cancel', label: 'Cancel',

View File

@ -117,6 +117,15 @@ textarea {
margin-bottom: 15px; margin-bottom: 15px;
} }
/* Make button appear to be disabled, but allow mouse events */
.btn-disabled {
opacity: 0.65;
filter: alpha(opacity=65);
-webkit-box-shadow: none;
box-shadow: none;
}
hr { hr {
border-color: #e3e3e3; border-color: #e3e3e3;
} }

View File

@ -137,6 +137,8 @@ angular.module('GeneratorHelpers', ['GeneratorHelpers'])
html += (btn.dataTitle) ? Attr(btn, 'dataTitle') : ""; html += (btn.dataTitle) ? Attr(btn, 'dataTitle') : "";
html += (btn.ngShow) ? Attr(btn, 'ngShow') : ""; html += (btn.ngShow) ? Attr(btn, 'ngShow') : "";
html += (btn.ngHide) ? Attr(btn, 'ngHide') : ""; html += (btn.ngHide) ? Attr(btn, 'ngHide') : "";
html += (btn.ngDisabled) ? Attr(btn, 'ngHide') : "";
html += (btn.ngClass) ? Attr(btn, 'ngClass') : "";
html += " >"; html += " >";
html += (btn['img']) ? "<img src=\"" + $basePath + "img/" + btn.img + "\" style=\"width: 12px; height: 12px;\" >" : ""; html += (btn['img']) ? "<img src=\"" + $basePath + "img/" + btn.img + "\" style=\"width: 12px; height: 12px;\" >" : "";
html += (btn['icon']) ? Attr(btn,'icon') : ""; html += (btn['icon']) ? Attr(btn,'icon') : "";