new UI - ip address page - implement release IP action.

This commit is contained in:
Jessica Wang 2010-10-07 10:51:25 -07:00
parent 5fb08bc459
commit 3dd6bec74d
4 changed files with 86 additions and 46 deletions

View File

@ -71,6 +71,6 @@ please.confirm.you.want.to.disable.account.that.will.prevent.account.access.to.t
please.confirm.you.want.to.lock.account.that.will.prevent.account.access.to.the.cloud = Please confirm you want to lock account that will prevent account access to the cloud.
please.confirm.you.want.to.enable.account = Please confirm you want to enable account.
please.select.an.available.zone.to.associate.your.new.ip.with..acquiring.additional.ip.may.cost.you.an.additional.dollars.per.month. = Please select an availability zone to associate your new IP with. Acquiring additional IP may cost you an additional dollars per month.
please.confirm.you.want.to.release.this.IP.address = Please confirm you want to release this IP address

View File

@ -435,6 +435,12 @@
<!-- Port Forwarding template (end) -->
<!-- dialogs (begin) -->
<div id="dialog_confirmation_release_ip" title="Confirmation" style="display:none">
<p>
<%=t.t("please.confirm.you.want.to.release.this.IP.address")%>
</p>
</div>
<div id="dialog_acquire_public_ip" title="Acquire New IP" style="display: none">
<p>
<%=t.t("please.select.an.available.zone.to.associate.your.new.ip.with..acquiring.additional.ip.may.cost.you.an.additional.dollars.per.month.")%>

View File

@ -1,30 +1,14 @@
//***** baseline (begin) *******************************************************************************************************************
function afterLoadIpJSP() {
//switch to different tab
$("#tab_details").bind("click", function(event){
$(this).removeClass("off").addClass("on");
$("#tab_port_forwarding, #tab_load_balancer").removeClass("on").addClass("off");
$("#tab_content_details").show();
$("#tab_content_port_forwarding, #tab_content_load_balancer").hide();
return false;
});
$("#tab_port_forwarding").bind("click", function(event){
$(this).removeClass("off").addClass("on");
$("#tab_details, #tab_load_balancer").removeClass("on").addClass("off");
$("#tab_content_port_forwarding").show();
$("#tab_content_details, #tab_content_load_balancer").hide();
return false;
});
$("#tab_load_balancer").bind("click", function(event){
$(this).removeClass("off").addClass("on");
$("#tab_details, #tab_port_forwarding").removeClass("on").addClass("off");
$("#tab_content_load_balancer").show();
$("#tab_content_details, #tab_content_port_forwarding").hide();
return false;
});
//***** switch between different tabs (begin) ********************************************************************
var tabArray = ["tab_details", "tab_port_forwarding", "tab_load_balancer"];
var tabContentArray = ["tab_content_details", "tab_content_port_forwarding", "tab_content_load_balancer"];
switchBetweenDifferentTabs(tabArray, tabContentArray);
//***** switch between different tabs (end) **********************************************************************
//dialogs
initDialog("dialog_acquire_public_ip", 325);
initDialog("dialog_confirmation_release_ip");
//*** Acquire New IP (begin) ***
$.ajax({
@ -224,23 +208,39 @@ function ipToRigntPanel($midmenuItem1) {
}
}
function ipJsonToDetailsTab(jsonObj) {
var $detailsTab = $("#right_panel_content #tab_content_details");
$detailsTab.data("jsonObj", jsonObj);
$detailsTab.find("#ipaddress").text(fromdb(jsonObj.ipaddress));
$detailsTab.find("#zonename").text(fromdb(jsonObj.zonename));
$detailsTab.find("#vlanname").text(fromdb(jsonObj.vlanname));
setSourceNatField(jsonObj.issourcenat, $detailsTab.find("#source_nat"));
setNetworkTypeField(jsonObj.forvirtualnetwork, $detailsTab.find("#network_type"));
$detailsTab.find("#domain").text(fromdb(jsonObj.domain));
$detailsTab.find("#account").text(fromdb(jsonObj.account));
$detailsTab.find("#allocated").text(fromdb(jsonObj.allocated));
}
//***** baseline (end) *********************************************************************************************************************
//***** Details tab (begin) ****************************************************************************************************************
function ipJsonToDetailsTab(ipObj) {
var $detailsTab = $("#right_panel_content #tab_content_details");
$detailsTab.data("jsonObj", ipObj);
$detailsTab.find("#ipaddress").text(fromdb(ipObj.ipaddress));
$detailsTab.find("#zonename").text(fromdb(ipObj.zonename));
$detailsTab.find("#vlanname").text(fromdb(ipObj.vlanname));
setSourceNatField(ipObj.issourcenat, $detailsTab.find("#source_nat"));
setNetworkTypeField(ipObj.forvirtualnetwork, $detailsTab.find("#network_type"));
$detailsTab.find("#domain").text(fromdb(ipObj.domain));
$detailsTab.find("#account").text(fromdb(ipObj.account));
$detailsTab.find("#allocated").text(fromdb(ipObj.allocated));
//actions ***
var $actionMenu = $("#right_panel_content #tab_content_details #action_link #action_menu");
$actionMenu.find("#action_list").empty();
var noAvailableActions = true;
if(isIpManageable(ipObj.domainid, ipObj.account) == true) {
buildActionLinkForDetailsTab("Release IP", ipActionMap, $actionMenu, null);
noAvailableActions = false;
}
// no available actions
if(noAvailableActions == true) {
$actionMenu.find("#action_list").append($("#no_available_actions").clone().show());
}
}
function setSourceNatField(value, $field) {
if(value == "true")
$field.text("Yes");
@ -258,6 +258,38 @@ function setNetworkTypeField(value, $field) {
else
$field.text("");
}
var ipActionMap = {
"Release IP": {
isAsyncJob: false,
dialogBeforeActionFn : doReleaseIp,
inProcessText: "Releasing IP....",
afterActionSeccessFn: function(jsonObj) {
var $midmenuItem1 = $("#"+ipGetMidmenuId(jsonObj));
$midmenuItem1.remove();
clearRightPanel();
//ipClearRightPanel();
}
}
}
function doReleaseIp($actionLink, listAPIMap, $detailsTab) {
var $detailsTab = $("#right_panel_content #tab_content_details");
var jsonObj = $detailsTab.data("jsonObj");
var ipaddress = jsonObj.ipaddress;
$("#dialog_confirmation_release_ip")
.dialog('option', 'buttons', {
"Confirm": function() {
$(this).dialog("close");
var apiCommand = "command=disassociateIpAddress&ipaddress="+ipaddress;
doActionToDetailsTab(null, $actionLink, apiCommand, listAPIMap);
},
"Cancel": function() {
$(this).dialog("close");
}
}).dialog("open");
}
//***** Details tab (end) ******************************************************************************************************************
//***** Port Forwarding tab (begin) ********************************************************************************************************
@ -819,4 +851,4 @@ function refreshLbVmSelect($template, loadBalancerId) {
});
}
//***** Load Balancer tab (end) ************************************************************************************************************
//***** Load Balancer tab (end) ************************************************************************************************************

View File

@ -54,15 +54,17 @@ function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap)
});
}
function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap) {
function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap) {
var label = $actionLink.data("label");
var inProcessText = $actionLink.data("inProcessText");
var isAsyncJob = $actionLink.data("isAsyncJob");
var asyncJobResponse = $actionLink.data("asyncJobResponse");
var afterActionSeccessFn = $actionLink.data("afterActionSeccessFn");
var listAPI = listAPIMap["listAPI"];
var listAPIResponse = listAPIMap["listAPIResponse"];
var listAPIResponseObj = listAPIMap["listAPIResponseObj"];
if(listAPIMap != null) {
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");
@ -135,17 +137,17 @@ function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap) {
//Async job (end) *****
//Sync job (begin) *****
else {
else {
$.ajax({
data: createURL(apiCommand),
dataType: "json",
async: false,
success: function(json) {
success: function(json) {
$spinningWheel.hide();
$("#right_panel_content #after_action_info").text(label + " action succeeded.");
$("#right_panel_content #after_action_info_container").removeClass("errorbox").show();
if(apiCommand.indexOf("command=delete")!=0) {
if(apiCommand.indexOf("command=delete")!=0 && apiCommand.indexOf("command=disassociateIpAddress")!=0) {
//RecoverVirtualMachine API doesn't return an embedded object on success (Bug 6037)
//Before Bug 6037 get fixed, use the temporary solution below.
$.ajax({