diff --git a/ui/new/jsp/volume.jsp b/ui/new/jsp/volume.jsp index b7fcd524640..20c49647928 100644 --- a/ui/new/jsp/volume.jsp +++ b/ui/new/jsp/volume.jsp @@ -22,8 +22,10 @@

-
+
<%=t.t("Details")%>
+
+ <%=t.t("Snapshot")%>
@@ -161,6 +163,10 @@
+ + + @@ -583,4 +589,104 @@ - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/ui/new/scripts/cloud.core2.instance.js b/ui/new/scripts/cloud.core2.instance.js index a4cafa83680..8d78520b59e 100644 --- a/ui/new/scripts/cloud.core2.instance.js +++ b/ui/new/scripts/cloud.core2.instance.js @@ -397,6 +397,7 @@ function clickInstanceGroupHeader($arrowIcon) { } vmJsonToDetailsTab(jsonObj, $midmenuItem); + vmJsonToVolumeTab(jsonObj); } function vmJsonToDetailsTab(jsonObj, $midmenuItem){ @@ -416,11 +417,14 @@ function clickInstanceGroupHeader($arrowIcon) { $detailsTab.find("#group").text(fromdb(jsonObj.group)); setBooleanField(jsonObj.haenable, $detailsTab.find("#haenable")); - setBooleanField((jsonObj.isoid != null && jsonObj.isoid.length > 0), $detailsTab.find("#iso")); - + setBooleanField((jsonObj.isoid != null && jsonObj.isoid.length > 0), $detailsTab.find("#iso")); + } + + function vmJsonToVolumeTab(jsonObj) { //volume tab //if (getHypervisorType() == "kvm") - //detail.find("#volume_action_create_template").show(); + //detail.find("#volume_action_create_template").show(); + $.ajax({ cache: false, data: createURL("command=listVolumes&virtualMachineId="+jsonObj.id+maxPageSize), @@ -437,7 +441,7 @@ function clickInstanceGroupHeader($arrowIcon) { } } } - }); + }); } function vmClearRightPanel(jsonObj) { @@ -510,12 +514,7 @@ function clickInstanceGroupHeader($arrowIcon) { } else { //json.type=="DATADISK": "detach disk" is allowed, "create template" is disallowed. 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) ********************************************************* @@ -1255,18 +1254,7 @@ function clickInstanceGroupHeader($arrowIcon) { }); //***** VM Wizard (end) ******************************************************************************** - //***** Volume tab (begin) ***************************************************************************** - /* - $("#volume_action_link").live("mouseover", function(event) { - $(this).find("#volume_action_menu").show(); - return false; - }); - $("#volume_action_link").live("mouseout", function(event) { - $(this).find("#volume_action_menu").hide(); - return false; - }); - */ - + //***** Volume tab (begin) ***************************************************************************** $.ajax({ data: createURL("command=listOsTypes&response=json"), dataType: "json", @@ -1279,10 +1267,8 @@ function clickInstanceGroupHeader($arrowIcon) { } } } - }); - - //***** Volume tab (end) ******************************************************************************* - + }); + //***** Volume tab (end) ******************************************************************************* }); } diff --git a/ui/new/scripts/cloud.core2.volume.js b/ui/new/scripts/cloud.core2.volume.js index 7be83839d52..9f5d03d0faf 100644 --- a/ui/new/scripts/cloud.core2.volume.js +++ b/ui/new/scripts/cloud.core2.volume.js @@ -351,6 +351,23 @@ function afterLoadVolumeJSP() { }); // *** recurring snapshot dialog - event binding (end) ****************************** + //***** switch to different tab (begin) ******************************************************************** + $("#tab_details").bind("click", function(event){ + $(this).removeClass("off").addClass("on"); + $("#tab_snapshot").removeClass("on").addClass("off"); + $("#tab_content_details").show(); + $("#tab_content_snapshot").hide(); + return false; + }); + + $("#tab_snapshot").bind("click", function(event){ + $(this).removeClass("off").addClass("on"); + $("#tab_details").removeClass("on").addClass("off"); + $("#tab_content_snapshot").show(); + $("#tab_content_details").hide(); + return false; + }); + //***** switch to different tab (end) ********************************************************************** } function volumeAfterDetailsTabAction(jsonObj) { @@ -370,8 +387,9 @@ function volumeToMidmenu(jsonObj, $midmenuItem1) { } function volumeToRigntPanel($midmenuItem) { - var json = $midmenuItem.data("jsonObj"); - volumeJsonToDetailsTab(json); + var jsonObj = $midmenuItem.data("jsonObj"); + volumeJsonToDetailsTab(jsonObj); + volumeJsonToVolumeTab(jsonObj); } function volumeJsonToDetailsTab(jsonObj){ @@ -424,6 +442,53 @@ function volumeJsonToDetailsTab(jsonObj){ } } } + +function volumeJsonToVolumeTab(jsonObj) { + $.ajax({ + cache: false, + data: createURL("command=listSnapshots&volumeid="+jsonObj.id+maxPageSize), + dataType: "json", + success: function(json) { + var items = json.listsnapshotsresponse.snapshot; + if (items != null && items.length > 0) { + var container = $("#right_panel_content #tab_content_snapshot").empty(); + var template = $("#snapshot_tab_template"); + for (var i = 0; i < items.length; i++) { + var newTemplate = template.clone(true); + volumeSnapshotJSONToTemplate(items[i], newTemplate); + container.append(newTemplate.show()); + } + } + } + }); +} + +function volumeSnapshotJSONToTemplate(jsonObj, template) { + template.data("jsonObj", jsonObj); + + template.attr("id", "volume_snapshot_"+jsonObj.id).data("volumeSnapshotId", jsonObj.id); + template.find("#id").text(jsonObj.id); + template.find("#name").text(jsonObj.name); + template.find("#volumename").text(jsonObj.volumename); + template.find("#intervaltype").text(jsonObj.intervaltype); + template.find("#account").text(jsonObj.account); + template.find("#domain").text(jsonObj.domain); + setDateField(jsonObj.created, template.find("#created")); + + var $actionLink = template.find("#snapshot_action_link"); + $actionLink.bind("mouseover", function(event) { + $(this).find("#snapshot_action_menu").show(); + return false; + }); + $actionLink.bind("mouseout", function(event) { + $(this).find("#snapshot_action_menu").hide(); + return false; + }); + + var $actionMenu = $actionLink.find("#snapshot_action_menu"); + $actionMenu.find("#action_list").empty(); + //buildActionLinkForSubgridItem("Create Template", vmSnapshotActionMap, $actionMenu, snapshotListAPIMap, template); +} function volumeClearRightPanel() { var $detailsTab = $("#right_panel_content #tab_content_details"); @@ -708,7 +773,7 @@ function doRecurringSnapshot() { function populateVirtualMachineField(domainId, account, zoneId) { $.ajax({ cache: false, - data: createURL("command=listVirtualMachines&state=Running&zoneid="+zoneId+"&domainid="+domainId+"&account="+account+"&response=json"+maxPageSize), + data: createURL("command=listVirtualMachines&state=Running&zoneid="+zoneId+"&domainid="+domainId+"&account="+account+maxPageSize), dataType: "json", success: function(json) { var instances = json.listvirtualmachinesresponse.virtualmachine; @@ -720,7 +785,7 @@ function populateVirtualMachineField(domainId, account, zoneId) { } $.ajax({ cache: false, - data: createURL("command=listVirtualMachines&state=Stopped&zoneid="+zoneId+"&domainid="+domainId+"&account="+account+"&response=json"+maxPageSize), + data: createURL("command=listVirtualMachines&state=Stopped&zoneid="+zoneId+"&domainid="+domainId+"&account="+account+maxPageSize), dataType: "json", success: function(json) { var instances = json.listvirtualmachinesresponse.virtualmachine;