From f9f40d3a4c51b1e80e70b358ac83830ef5a05cc7 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Wed, 3 Nov 2010 17:01:18 -0700 Subject: [PATCH] new UI - implement Edit Pod action. --- ui/jsp/pod.jsp | 18 +++++- ui/scripts/cloud.core.pod.js | 107 ++++++++++++++++++++++++++++++++++- 2 files changed, 121 insertions(+), 4 deletions(-) diff --git a/ui/jsp/pod.jsp b/ui/jsp/pod.jsp index cf6aa1cdaf7..27d0fbdfdef 100644 --- a/ui/jsp/pod.jsp +++ b/ui/jsp/pod.jsp @@ -71,6 +71,8 @@
+ +
@@ -81,6 +83,8 @@
+ +
@@ -90,7 +94,11 @@
-
+
+ + + +
@@ -101,9 +109,17 @@
+ +
+ +
+ + +
+ diff --git a/ui/scripts/cloud.core.pod.js b/ui/scripts/cloud.core.pod.js index c096548b213..02689a6c109 100644 --- a/ui/scripts/cloud.core.pod.js +++ b/ui/scripts/cloud.core.pod.js @@ -43,10 +43,19 @@ function podJsonToDetailsTab($leftmenuItem1) { $detailsTab.data("jsonObj", jsonObj); $detailsTab.find("#id").text(fromdb(jsonObj.id)); $detailsTab.find("#grid_header_title").text(fromdb(jsonObj.name)); + $detailsTab.find("#name").text(fromdb(jsonObj.name)); - $detailsTab.find("#cidr").text(fromdb(jsonObj.cidr)); + $detailsTab.find("#name_edit").val(fromdb(jsonObj.name)); + + $detailsTab.find("#cidr").text(fromdb(jsonObj.cidr)); + $detailsTab.find("#cidr_edit").val(fromdb(jsonObj.cidr)); + $detailsTab.find("#ipRange").text(getIpRange(jsonObj.startip, jsonObj.endip)); + $detailsTab.find("#startIpRange_edit").val(fromdb(jsonObj.startip)); + $detailsTab.find("#endIpRange_edit").val(fromdb(jsonObj.endip)); + $detailsTab.find("#gateway").text(fromdb(jsonObj.gateway)); + $detailsTab.find("#gateway_edit").val(fromdb(jsonObj.gateway)); //actions *** var $actionLink = $detailsTab.find("#action_link"); @@ -60,6 +69,7 @@ function podJsonToDetailsTab($leftmenuItem1) { }); var $actionMenu = $detailsTab.find("#action_link #action_menu"); $actionMenu.find("#action_list").empty(); + buildActionLinkForDetailsTab("Edit Pod", podActionMap, $actionMenu, $leftmenuItem1, $detailsTab); buildActionLinkForDetailsTab("Delete Pod", podActionMap, $actionMenu, $leftmenuItem1, $detailsTab); } @@ -70,10 +80,19 @@ function podJsonClearRightPanel(jsonObj) { function podJsonClearDetailsTab(jsonObj) { var $detailsTab = $("#tab_content_details"); $detailsTab.find("#id").text(""); + $detailsTab.find("#name").text(""); - $detailsTab.find("#cidr").text(""); + $detailsTab.find("#name_edit").val(""); + + $detailsTab.find("#cidr").text(""); + $detailsTab.find("#cidr_edit").val(""); + $detailsTab.find("#ipRange").text(""); - $detailsTab.find("#gateway").text(""); + $detailsTab.find("#startIpRange_edit").val(""); + $detailsTab.find("#endIpRange_edit").val(""); + + $detailsTab.find("#gateway").text(""); + $detailsTab.find("#gateway_edit").val(""); //if (getDirectAttachUntaggedEnabled() == "true") // $("#submenu_content_zones #action_add_directip_vlan").data("type", "pod").data("id", obj.id).data("name", obj.name).data("zoneid", obj.zoneid).show(); @@ -430,6 +449,9 @@ function bindEventHandlerToDialogAddPool() { } var podActionMap = { + "Edit Pod": { + dialogBeforeActionFn: doEditPod + }, "Delete Pod": { api: "deletePod", isAsyncJob: false, @@ -444,3 +466,82 @@ var podActionMap = { } } +function doEditPod($actionLink, $detailsTab, $midmenuItem1) { + var $readonlyFields = $detailsTab.find("#name, #cidr, #ipRange, #gateway"); + var $editFields = $detailsTab.find("#name_edit, #cidr_edit, #startIpRange_edit, #endIpRange_edit, #gateway_edit"); + + $readonlyFields.hide(); + $editFields.show(); + $detailsTab.find("#cancel_button, #save_button").show(); + + $detailsTab.find("#cancel_button").unbind("click").bind("click", function(event){ + $editFields.hide(); + $readonlyFields.show(); + $("#save_button, #cancel_button").hide(); + return false; + }); + $detailsTab.find("#save_button").unbind("click").bind("click", function(event){ + doEditPod2($actionLink, $detailsTab, $midmenuItem1); + $editFields.hide(); + $readonlyFields.show(); + $("#save_button, #cancel_button").hide(); + return false; + }); +} + +function doEditPod2($actionLink, $detailsTab, $midmenuItem1) { + var jsonObj = $detailsTab.data("jsonObj"); + var id = jsonObj.id; + var zoneid = jsonObj.zoneid; + var oldName = jsonObj.name; + var oldCidr = jsonObj.cidr; + var oldStartip = jsonObj.startip; + var oldEndip = jsonObj.endip; + var oldGateway = jsonObj.gateway; + + // validate values + var isValid = true; + isValid &= validateString("Name", $detailsTab.find("#name_edit"), $detailsTab.find("#name_edit_errormsg")); + isValid &= validateCIDR("CIDR", $detailsTab.find("#cidr_edit"), $detailsTab.find("#cidr_edit_errormsg")); + isValid &= validateIp("Start IP Range", $detailsTab.find("#startIpRange_edit"), $detailsTab.find("#startIpRange_edit_errormsg")); //required + isValid &= validateIp("End IP Range", $detailsTab.find("#endIpRange_edit"), $detailsTab.find("#endIpRange_edit_errormsg"), true); //optional + isValid &= validateIp("Gateway", $detailsTab.find("#gateway_edit"), $detailsTab.find("#gateway_edit_errormsg"), true); //optional when editing + if (!isValid) + return; + + var newName = trim($detailsTab.find("#name_edit").val()); + var newCidr = trim($detailsTab.find("#cidr_edit").val()); + var newStartip = trim($detailsTab.find("#startIpRange_edit").val()); + var newEndip = trim($detailsTab.find("#endIpRange_edit").val()); + var newIpRange = getIpRange(newStartip, newEndip); + var newGateway = trim($detailsTab.find("#gateway_edit").val()); + + var array1 = []; + array1.push("&id="+id); + if(newName != oldName) + array1.push("&name="+todb(newName)); + if(newCidr != oldCidr) + array1.push("&cidr="+encodeURIComponent(newCidr)); + if(newStartip != oldStartip) + array1.push("&startIp="+encodeURIComponent(newStartip)); + if(newEndip != oldEndip && newEndip != null && newEndip.length > 0) { + if(newStartip == oldStartip) { + array1.push("&startIp="+encodeURIComponent(newStartip)); //startIp needs to be passed to updatePod API when endIp is passed to updatePod API. + } + array1.push("&endIp="+encodeURIComponent(newEndip)); + } + if(newGateway != oldGateway && newGateway != null && newGateway.length > 0) + array1.push("&gateway="+encodeURIComponent(newGateway)); + + $.ajax({ + data: createURL("command=updatePod&response=json"+array1.join("")), + dataType: "json", + success: function(json) { + /* + var item = json.updatepodresponse; //should be an embedded object instead of only {success:true} + $midmenuItem1.data("jsonObj", item); + PodJsonToRightPanel($midmenuItem1); + */ + } + }); +}