new UI - actions in details panel - show error message in red dialog box when action fails.

This commit is contained in:
Jessica Wang 2010-09-14 16:39:09 -07:00
parent 3d61949f06
commit 68e17586d0
3 changed files with 14 additions and 18 deletions

View File

@ -56,13 +56,7 @@
<p id="description"></p> <p id="description"></p>
<div class="close_button" id="close_button"> <div class="close_button" id="close_button">
</div> </div>
</div> </div>
<div class="gridheader_message error" style="border: 1px solid #999; display: none;">
<p>
Some problem occured while dettaching disk &hellip;</p>
<div class="close_button">
</div>
</div>
</div> </div>
<div class="grid_container"> <div class="grid_container">
<div class="grid_rows odd"> <div class="grid_rows odd">

View File

@ -181,7 +181,7 @@ function handleErrorInMidMenu(XMLHttpResponse, $midmenuItem) {
//***** actions for middle menu (end) ************************************************************************** //***** actions for middle menu (end) **************************************************************************
//***** actions for details tab in right panel (begin) ************************************************************************ //***** actions for details tab in right panel (begin) ************************************************************************
function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap, $detailsTab) { function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap) {
var apiInfo = actionMap[label]; var apiInfo = actionMap[label];
var $listItem = $("#action_list_item").clone(); var $listItem = $("#action_list_item").clone();
$actionMenu.find("#action_list").append($listItem.show()); $actionMenu.find("#action_list").append($listItem.show());
@ -194,6 +194,7 @@ function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap,
$link.data("afterActionSeccessFn", apiInfo.afterActionSeccessFn); $link.data("afterActionSeccessFn", apiInfo.afterActionSeccessFn);
$link.data("dialogBeforeActionFn", apiInfo.dialogBeforeActionFn); $link.data("dialogBeforeActionFn", apiInfo.dialogBeforeActionFn);
var $detailsTab = $("#right_panel_content #tab_content_details");
var id = $detailsTab.data("jsonObj").id; var id = $detailsTab.data("jsonObj").id;
$link.bind("click", function(event) { $link.bind("click", function(event) {
@ -202,7 +203,7 @@ function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap,
var dialogBeforeActionFn = $actionLink.data("dialogBeforeActionFn"); var dialogBeforeActionFn = $actionLink.data("dialogBeforeActionFn");
if(dialogBeforeActionFn == null) { if(dialogBeforeActionFn == null) {
var apiCommand = "command="+$actionLink.data("api")+"&id="+id; var apiCommand = "command="+$actionLink.data("api")+"&id="+id;
doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, $detailsTab); doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap);
} }
else { else {
dialogBeforeActionFn($actionLink, listAPIMap, $detailsTab); dialogBeforeActionFn($actionLink, listAPIMap, $detailsTab);
@ -211,7 +212,7 @@ function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap,
}); });
} }
function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, $detailsTab) { function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap) {
var label = $actionLink.data("label"); var label = $actionLink.data("label");
var inProcessText = $actionLink.data("inProcessText"); var inProcessText = $actionLink.data("inProcessText");
var isAsyncJob = $actionLink.data("isAsyncJob"); var isAsyncJob = $actionLink.data("isAsyncJob");
@ -220,7 +221,8 @@ function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, $detailsT
var listAPI = listAPIMap["listAPI"]; var listAPI = listAPIMap["listAPI"];
var listAPIResponse = listAPIMap["listAPIResponse"]; var listAPIResponse = listAPIMap["listAPIResponse"];
var listAPIResponseObj = listAPIMap["listAPIResponseObj"]; var listAPIResponseObj = listAPIMap["listAPIResponseObj"];
var $detailsTab = $("#right_panel_content #tab_content_details");
var $spinningWheel = $detailsTab.find("#spinning_wheel"); var $spinningWheel = $detailsTab.find("#spinning_wheel");
$spinningWheel.find("#description").text(inProcessText); $spinningWheel.find("#description").text(inProcessText);
$spinningWheel.show(); $spinningWheel.show();
@ -249,7 +251,7 @@ function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, $detailsT
$spinningWheel.hide(); $spinningWheel.hide();
if (result.jobstatus == 1) { // Succeeded if (result.jobstatus == 1) { // Succeeded
$detailsTab.find("#action_message_box #description").text(label + " action succeeded."); $detailsTab.find("#action_message_box #description").text(label + " action succeeded.");
$detailsTab.find("#action_message_box").show(); $detailsTab.find("#action_message_box").removeClass("error").show();
//DestroyVirtualMachine API doesn't return an embedded object on success (Bug 6041) //DestroyVirtualMachine API doesn't return an embedded object on success (Bug 6041)
//Before Bug 6041 get fixed, use the temporary solution below. //Before Bug 6041 get fixed, use the temporary solution below.
@ -266,7 +268,7 @@ function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, $detailsT
} else if (result.jobstatus == 2) { // Failed } else if (result.jobstatus == 2) { // Failed
$detailsTab.find("#action_message_box #description").text(label + " action failed. Reason: " + sanitizeXSS(result.jobresult)); $detailsTab.find("#action_message_box #description").text(label + " action failed. Reason: " + sanitizeXSS(result.jobresult));
$detailsTab.find("#action_message_box").show(); $detailsTab.find("#action_message_box").addClass("error").show();
} }
} }
}, },
@ -304,7 +306,7 @@ function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, $detailsT
async: false, async: false,
success: function(json) { success: function(json) {
$detailsTab.find("#action_message_box #description").text(label + " action succeeded."); $detailsTab.find("#action_message_box #description").text(label + " action succeeded.");
$detailsTab.find("#action_message_box").show(); $detailsTab.find("#action_message_box").removeClass("error").show();
afterActionSeccessFn(json[listAPIResponse][listAPIResponseObj][0]); afterActionSeccessFn(json[listAPIResponse][listAPIResponseObj][0]);
} }
@ -333,7 +335,7 @@ function handleErrorInDetailsTab(XMLHttpResponse, $detailsTab, label) {
$detailsTab.find("#action_message_box #description").text(label + " action failed. Reason: " + sanitizeXSS(unescape(errorMsg))); $detailsTab.find("#action_message_box #description").text(label + " action failed. Reason: " + sanitizeXSS(unescape(errorMsg)));
else else
$detailsTab.find("#action_message_box #description").text(label + " action failed."); $detailsTab.find("#action_message_box #description").text(label + " action failed.");
$detailsTab.find("#action_message_box").show(); $detailsTab.find("#action_message_box").addClass("error").show();
} }
//***** actions for details tab in right panel (end) ************************************************************************** //***** actions for details tab in right panel (end) **************************************************************************

View File

@ -83,10 +83,10 @@ function volumeJsonToDetailsTab(jsonObj){
$actionMenu.find("#action_list").empty(); $actionMenu.find("#action_list").empty();
if(jsonObj.type=="ROOT") { //"create template" is allowed(when stopped), "detach disk" is disallowed. if(jsonObj.type=="ROOT") { //"create template" is allowed(when stopped), "detach disk" is disallowed.
if (jsonObj.vmstate == "Stopped") if (jsonObj.vmstate == "Stopped")
buildActionLinkForDetailsTab("Create Template", volumeActionMap, $actionMenu, volumeListAPIMap, $detailsTab); buildActionLinkForDetailsTab("Create Template", volumeActionMap, $actionMenu, volumeListAPIMap);
} }
else { //jsonObj.type=="DATADISK": "detach disk" is allowed, "create template" is disallowed. else { //jsonObj.type=="DATADISK": "detach disk" is allowed, "create template" is disallowed.
buildActionLinkForDetailsTab("Detach Disk", volumeActionMap, $actionMenu, volumeListAPIMap, $detailsTab); buildActionLinkForDetailsTab("Detach Disk", volumeActionMap, $actionMenu, volumeListAPIMap);
} }
} }
@ -138,7 +138,7 @@ function doCreateTemplate($actionLink, listAPIMap, $singleObject) {
var id = $singleObject.data("jsonObj").id; var id = $singleObject.data("jsonObj").id;
var apiCommand = "command=createTemplate&volumeId="+id+"&name="+encodeURIComponent(name)+"&displayText="+encodeURIComponent(desc)+"&osTypeId="+osType+"&isPublic="+isPublic+"&passwordEnabled="+password; var apiCommand = "command=createTemplate&volumeId="+id+"&name="+encodeURIComponent(name)+"&displayText="+encodeURIComponent(desc)+"&osTypeId="+osType+"&isPublic="+isPublic+"&passwordEnabled="+password;
doActionToSingleObject(id, $actionLink, apiCommand, listAPIMap, $singleObject); doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap);
}, },
"Cancel": function() { "Cancel": function() {
$(this).dialog("close"); $(this).dialog("close");