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
+
+
+
+
+
+
+
+
+
+ Message will appear here
+
+
+
+
+
+
+
+
+
+
+
+
\ 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;