new UI - add action message box to actions for subgrid items.

This commit is contained in:
Jessica Wang 2010-09-14 17:40:36 -07:00
parent 64c45588b2
commit c3144e0d76
4 changed files with 963 additions and 898 deletions

File diff suppressed because it is too large Load Diff

View File

@ -433,7 +433,7 @@ function clickInstanceGroupHeader($arrowIcon) {
"Create Template": { "Create Template": {
isAsyncJob: true, isAsyncJob: true,
asyncJobResponse: "createtemplateresponse", asyncJobResponse: "createtemplateresponse",
dialogBeforeActionFn : doCreateTemplate, dialogBeforeActionFn : doCreateTemplateFromVmVolume,
inProcessText: "Creating template....", inProcessText: "Creating template....",
afterActionSeccessFn: function(){} afterActionSeccessFn: function(){}
} }
@ -473,6 +473,10 @@ function clickInstanceGroupHeader($arrowIcon) {
buildActionLinkForSubgridItem("Detach Disk", vmVolumeActionMap, $actionMenu, volumeListAPIMap, template); buildActionLinkForSubgridItem("Detach Disk", vmVolumeActionMap, $actionMenu, volumeListAPIMap, template);
} }
template.find("#action_message_box #close_button").bind("click", function(event){
$(this).parent().hide();
return false;
});
} }
//***** declaration for volume tab (end) ********************************************************* //***** declaration for volume tab (end) *********************************************************
@ -1256,5 +1260,37 @@ function clickInstanceGroupHeader($arrowIcon) {
}); });
} }
function doCreateTemplateFromVmVolume($actionLink, listAPIMap, $subgridItem) {
var jsonObj = $subgridItem.data("jsonObj");
$("#dialog_create_template").find("#volume_name").text(jsonObj.name);
$("#dialog_create_template")
.dialog('option', 'buttons', {
"Create": function() {
//debugger;
var thisDialog = $(this);
thisDialog.dialog("close");
// validate values
var isValid = true;
isValid &= validateString("Name", thisDialog.find("#create_template_name"), thisDialog.find("#create_template_name_errormsg"));
isValid &= validateString("Display Text", thisDialog.find("#create_template_desc"), thisDialog.find("#create_template_desc_errormsg"));
if (!isValid) return;
var name = trim(thisDialog.find("#create_template_name").val());
var desc = trim(thisDialog.find("#create_template_desc").val());
var osType = thisDialog.find("#create_template_os_type").val();
var isPublic = thisDialog.find("#create_template_public").val();
var password = thisDialog.find("#create_template_password").val();
var id = $subgridItem.data("jsonObj").id;
var apiCommand = "command=createTemplate&volumeId="+id+"&name="+encodeURIComponent(name)+"&displayText="+encodeURIComponent(desc)+"&osTypeId="+osType+"&isPublic="+isPublic+"&passwordEnabled="+password;
doActionToSubgridItem(id, $actionLink, apiCommand, listAPIMap, $subgridItem);
},
"Cancel": function() {
$(this).dialog("close");
}
}).dialog("open");
}

View File

@ -406,8 +406,9 @@ function doActionToSubgridItem(id, $actionLink, apiCommand, listAPIMap, $subgrid
} else { } else {
$("body").stopTime(timerKey); $("body").stopTime(timerKey);
$spinningWheel.hide(); $spinningWheel.hide();
if (result.jobstatus == 1) { // Succeeded if (result.jobstatus == 1) { // Succeeded
$subgridItem.data("afterActionInfo", (label + " action succeeded.")); $subgridItem.find("#action_message_box #description").text(label + " action succeeded.");
$subgridItem.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.
@ -422,8 +423,9 @@ function doActionToSubgridItem(id, $actionLink, apiCommand, listAPIMap, $subgrid
//After Bug 6037 is fixed, remove temporary solution above and uncomment the line below //After Bug 6037 is fixed, remove temporary solution above and uncomment the line below
//afterActionSeccessFn(json[listAPIResponse][listAPIResponseObj][0], $subgridItem); //afterActionSeccessFn(json[listAPIResponse][listAPIResponseObj][0], $subgridItem);
} else if (result.jobstatus == 2) { // Failed } else if (result.jobstatus == 2) { // Failed
$subgridItem.data("afterActionInfo", (label + " action failed. Reason: " + sanitizeXSS(result.jobresult))); $subgridItem.find("#action_message_box #description").text(label + " action failed. Reason: " + sanitizeXSS(result.jobresult));
$subgridItem.find("#action_message_box").addClass("error").show();
} }
} }
}, },
@ -459,8 +461,9 @@ function doActionToSubgridItem(id, $actionLink, apiCommand, listAPIMap, $subgrid
data: createURL("command="+listAPI+"&id="+id), data: createURL("command="+listAPI+"&id="+id),
dataType: "json", dataType: "json",
async: false, async: false,
success: function(json) { success: function(json) {
$subgridItem.data("afterActionInfo", (label + " action succeeded.")); $subgridItem.find("#action_message_box #description").text(label + " action succeeded.");
$subgridItem.find("#action_message_box").removeClass("error").show();
afterActionSeccessFn(json[listAPIResponse][listAPIResponseObj][0], $subgridItem); afterActionSeccessFn(json[listAPIResponse][listAPIResponseObj][0], $subgridItem);
} }
}); });
@ -484,10 +487,11 @@ function handleErrorInSubgridItem(XMLHttpResponse, $subgridItem, label) {
var end = XMLHttpResponse.responseText.indexOf("</h1"); var end = XMLHttpResponse.responseText.indexOf("</h1");
errorMsg = XMLHttpResponse.responseText.substring(start, end); errorMsg = XMLHttpResponse.responseText.substring(start, end);
} }
if(errorMsg.length > 0) if(errorMsg.length > 0)
$subgridItem.data("afterActionInfo", ((label + " action failed. Reason: " + sanitizeXSS(unescape(errorMsg))))); $subgridItem.find("#action_message_box #description").text(label + " action failed. Reason: " + sanitizeXSS(unescape(errorMsg)));
else else
$subgridItem.data("afterActionInfo", (label + " action failed.")); $subgridItem.find("#action_message_box #description").text(label + " action failed.");
$subgridItem.find("#action_message_box").addClass("error").show();
} }
//***** actions for a subgrid item in right panel (end) ************************************************************************** //***** actions for a subgrid item in right panel (end) **************************************************************************

View File

@ -107,14 +107,14 @@ var volumeActionMap = {
"Create Template": { "Create Template": {
isAsyncJob: true, isAsyncJob: true,
asyncJobResponse: "createtemplateresponse", asyncJobResponse: "createtemplateresponse",
dialogBeforeActionFn : doCreateTemplate, dialogBeforeActionFn : doCreateTemplateFromVolume,
inProcessText: "Creating template....", inProcessText: "Creating template....",
afterActionSeccessFn: function(){} afterActionSeccessFn: function(){}
} }
} }
function doCreateTemplate($actionLink, listAPIMap, $singleObject) { function doCreateTemplateFromVolume($actionLink, listAPIMap, $detailsTab) {
var jsonObj = $singleObject.data("jsonObj"); var jsonObj = $detailsTab.data("jsonObj");
$("#dialog_create_template").find("#volume_name").text(jsonObj.name); $("#dialog_create_template").find("#volume_name").text(jsonObj.name);
$("#dialog_create_template") $("#dialog_create_template")
@ -136,7 +136,7 @@ function doCreateTemplate($actionLink, listAPIMap, $singleObject) {
var isPublic = thisDialog.find("#create_template_public").val(); var isPublic = thisDialog.find("#create_template_public").val();
var password = thisDialog.find("#create_template_password").val(); var password = thisDialog.find("#create_template_password").val();
var id = $singleObject.data("jsonObj").id; var id = $detailsTab.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;
doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap); doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap);
}, },