diff --git a/ui/scripts/cloud.core.instance.js b/ui/scripts/cloud.core.instance.js index 7da41295d6e..c2332513405 100644 --- a/ui/scripts/cloud.core.instance.js +++ b/ui/scripts/cloud.core.instance.js @@ -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, diff --git a/ui/scripts/cloud.core.js b/ui/scripts/cloud.core.js index afc3a0c41c4..a8aaf3e04b9 100644 --- a/ui/scripts/cloud.core.js +++ b/ui/scripts/cloud.core.js @@ -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 = $("
"); $("#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(); } } }