From 68e17586d056828adb718dd8aa9ff448e5efdff1 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Tue, 14 Sep 2010 16:39:09 -0700 Subject: [PATCH] new UI - actions in details panel - show error message in red dialog box when action fails. --- ui/new/jsp/volume.jsp | 8 +------- ui/new/scripts/cloud.core2.js | 18 ++++++++++-------- ui/new/scripts/cloud.core2.volume.js | 6 +++--- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/ui/new/jsp/volume.jsp b/ui/new/jsp/volume.jsp index eddace55988..adb53246fde 100644 --- a/ui/new/jsp/volume.jsp +++ b/ui/new/jsp/volume.jsp @@ -56,13 +56,7 @@

- - +
diff --git a/ui/new/scripts/cloud.core2.js b/ui/new/scripts/cloud.core2.js index c69460a0f8d..abf2561ba3a 100644 --- a/ui/new/scripts/cloud.core2.js +++ b/ui/new/scripts/cloud.core2.js @@ -181,7 +181,7 @@ function handleErrorInMidMenu(XMLHttpResponse, $midmenuItem) { //***** actions for middle menu (end) ************************************************************************** //***** 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 $listItem = $("#action_list_item").clone(); $actionMenu.find("#action_list").append($listItem.show()); @@ -194,6 +194,7 @@ function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap, $link.data("afterActionSeccessFn", apiInfo.afterActionSeccessFn); $link.data("dialogBeforeActionFn", apiInfo.dialogBeforeActionFn); + var $detailsTab = $("#right_panel_content #tab_content_details"); var id = $detailsTab.data("jsonObj").id; $link.bind("click", function(event) { @@ -202,7 +203,7 @@ function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap, var dialogBeforeActionFn = $actionLink.data("dialogBeforeActionFn"); if(dialogBeforeActionFn == null) { var apiCommand = "command="+$actionLink.data("api")+"&id="+id; - doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, $detailsTab); + doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap); } else { 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 inProcessText = $actionLink.data("inProcessText"); var isAsyncJob = $actionLink.data("isAsyncJob"); @@ -220,7 +221,8 @@ function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, $detailsT var listAPI = listAPIMap["listAPI"]; var listAPIResponse = listAPIMap["listAPIResponse"]; var listAPIResponseObj = listAPIMap["listAPIResponseObj"]; - + + var $detailsTab = $("#right_panel_content #tab_content_details"); var $spinningWheel = $detailsTab.find("#spinning_wheel"); $spinningWheel.find("#description").text(inProcessText); $spinningWheel.show(); @@ -249,7 +251,7 @@ function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, $detailsT $spinningWheel.hide(); if (result.jobstatus == 1) { // 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) //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 $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, success: function(json) { $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]); } @@ -333,7 +335,7 @@ function handleErrorInDetailsTab(XMLHttpResponse, $detailsTab, label) { $detailsTab.find("#action_message_box #description").text(label + " action failed. Reason: " + sanitizeXSS(unescape(errorMsg))); else $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) ************************************************************************** diff --git a/ui/new/scripts/cloud.core2.volume.js b/ui/new/scripts/cloud.core2.volume.js index 26708f202f9..23dc9f90477 100644 --- a/ui/new/scripts/cloud.core2.volume.js +++ b/ui/new/scripts/cloud.core2.volume.js @@ -83,10 +83,10 @@ function volumeJsonToDetailsTab(jsonObj){ $actionMenu.find("#action_list").empty(); if(jsonObj.type=="ROOT") { //"create template" is allowed(when stopped), "detach disk" is disallowed. 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. - 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 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() { $(this).dialog("close");