bug 8541: Instance page - hide/show top buttons upon state of selected middle menu items.

This commit is contained in:
Jessica Wang 2011-02-18 16:34:18 -08:00
parent 537fa0a319
commit 3f45a56cff
2 changed files with 46 additions and 5 deletions

View File

@ -1652,6 +1652,8 @@ function vmToMidmenu(jsonObj, $midmenuItem1) {
$midmenuItem1.data("toRightPanelFn", vmToRightPanel);
countTopButtonMapFn = vmCountTopButtonMap;
uncountTopButtonMapFn = vmUncountTopButtonMap;
grayoutTopButtonsFn = vmGrayoutTopButtons;
resetTopButtonMapFn = vmResetTopButtonMap;
}
@ -1839,7 +1841,7 @@ var vmTopButtonMap = {
"destroy_vm_button": 0
};
function vmCountTopButtonMap(jsonObj) {
function vmCountTopButtonMap(jsonObj) {
if(jsonObj == null)
return;
@ -1857,6 +1859,38 @@ function vmCountTopButtonMap(jsonObj) {
}
}
function vmUncountTopButtonMap(jsonObj) {
if(jsonObj == null)
return;
if (jsonObj.state == 'Running') {
vmTopButtonMap["stop_vm_button"] -= 1;
vmTopButtonMap["reboot_vm_button"] -= 1;
vmTopButtonMap["destroy_vm_button"] -= 1;
}
else if (jsonObj.state == 'Stopped') {
vmTopButtonMap["start_vm_button"] -= 1;
vmTopButtonMap["destroy_vm_button"] -= 1;
}
else if (jsonObj.state == 'Error') {
vmTopButtonMap["destroy_vm_button"] -= 1;
}
}
function vmGrayoutTopButtons() {
var itemCounts = 0;
for(var id in selectedItemsInMidMenu) {
itemCounts ++;
}
for(var buttonElementId in vmTopButtonMap) {
if(vmTopButtonMap[buttonElementId] < itemCounts)
$("#"+buttonElementId).hide();
else
$("#"+buttonElementId).show();
}
}
function vmResetTopButtonMap() {
vmTopButtonMap = {
"start_vm_button": 0,

View File

@ -989,6 +989,7 @@ function clickItemInMultipleSelectionMidmenu($midmenuItem1) {
var jsonObj = $midmenuItem1.data("jsonObj");
selectedItemsInMidMenu[jsonObj.id] = $midmenuItem1;
countTopButtonMapFn(jsonObj);
selected_midmenu_id = $midmenuItem1.attr("id");
$currentMidmenuItem = $midmenuItem1;
@ -997,15 +998,20 @@ function clickItemInMultipleSelectionMidmenu($midmenuItem1) {
function unclickItemInMultipleSelectionMidmenu($midmenuItem1, id) {
delete selectedItemsInMidMenu[id];
$midmenuItem1.find("#content").removeClass("selected");
var jsonObj = $midmenuItem1.data("jsonObj");
uncountTopButtonMapFn(jsonObj);
}
var countTopButtonMapFn = function() {};
var uncountTopButtonMapFn = function() {};
var grayoutTopButtonsFn = function() {};
var resetTopButtonMapFn = function() {};
function createMultipleSelectionSubContainer() {
var $multipleSelectionSubContainer = $("<div id='multiple_selection_sub_container'></div>");
$("#midmenu_container").empty().append($multipleSelectionSubContainer);
selectedItemsInMidMenu = {};
resetTopButtonMapFn();
$multipleSelectionSubContainer.selectable({
selecting: function(event, ui) {
@ -1030,11 +1036,11 @@ function createMultipleSelectionSubContainer() {
}
}
},
start: function(event, ui) {
resetTopButtonMapFn();
start: function(event, ui) {
},
stop: function(event, ui) {
countTopButtonMapFn();
grayoutTopButtonsFn();
}
});
@ -1099,7 +1105,8 @@ function listMidMenuItems2(commandString, getSearchParamsFn, jsonResponse1, json
}
else {
clickItemInMultipleSelectionMidmenu($midmenuItem1);
countTopButtonMapFn();
countTopButtonMapFn(items[i]);
grayoutTopButtonsFn();
}
}
}