new UI - implement new API listInstanceGroups to list instance groups on left menu.

This commit is contained in:
Jessica Wang 2010-09-28 12:06:29 -07:00
parent 0af7ad934b
commit 1bb4eeafd9
1 changed files with 50 additions and 63 deletions

View File

@ -522,72 +522,22 @@ function clickInstanceGroupHeader($arrowIcon) {
$("#midmenu_add_link").show();
if($arrowIcon.hasClass("close") == true) {
$arrowIcon.removeClass("close").addClass("open");
appendInstanceGroup(-1, noGroupName);
$.ajax({
cache: false,
data: createURL("command=listVirtualMachines"),
data: createURL("command=listInstanceGroups"),
dataType: "json",
success: function(json) {
var instanceGroupMap = {};
var instanceGroupArray = [];
var instances = json.listvirtualmachinesresponse.virtualmachine;
if (instances != null && instances.length > 0) {
for (var i = 0; i < instances.length; i++) {
var group1 = instances[i].group;
if(group1 == null || group1.length == 0)
group1 = noGroupName;
if(group1 in instanceGroupMap) {
instanceGroupMap[group1].push(instances[i]);
}
else {
instanceGroupMap[group1] = [instances[i]];
instanceGroupArray.push(group1);
}
}
}
for(var i=0; i < instanceGroupArray.length; i++) {
if(instanceGroupArray[i]!=null && instanceGroupArray[i].length>0) {
var $leftmenuSubmenuTemplate = $("#leftmenu_submenu_template").clone().show();
$leftmenuSubmenuTemplate.attr("id", ("leftmenu_instance_group_"+i));
$leftmenuSubmenuTemplate.find("#submenu_name").text(instanceGroupArray[i]);
$leftmenuSubmenuTemplate.find("#icon").attr("src", "images/instance_leftmenuicon.png").show();
$leftmenuSubmenuTemplate.bind("click", function(event) {
if(selected_leftmenu_id != null && selected_leftmenu_id.length > 0)
$("#"+selected_leftmenu_id).removeClass("selected");
selected_leftmenu_id = $(this).attr("id");
$(this).addClass("selected");
$("#midmenu_container").empty();
selectedItemsInMidMenu = {};
var groupName = $(this).find("#submenu_name").text();
var group1 = groupName;
if(groupName == noGroupName)
group1 = "";
$.ajax({
cache: false,
data: createURL("command=listVirtualMachines&group="+group1+"&pagesize="+midmenuItemCount),
dataType: "json",
success: function(json) {
var instances = json.listvirtualmachinesresponse.virtualmachine;
if (instances != null && instances.length > 0) {
for(var i=0; i<instances.length;i++) {
var $midmenuItem1 = $midmenuItem.clone();
$midmenuItem1.data("toRightPanelFn", vmToRightPanel);
vmToMidmenu(instances[i], $midmenuItem1);
$("#midmenu_container").append($midmenuItem1.show());
}
}
}
});
return false;
});
$("#leftmenu_instance_group_container").append($leftmenuSubmenuTemplate);
success: function(json) {
var instancegroups = json.listinstancegroupsresponse.instancegroup;
if(instancegroups!=null && instancegroups.length>0) {
for(var i=0; i < instancegroups.length; i++) {
appendInstanceGroup(instancegroups[i].id, instancegroups[i].name);
}
}
//action menu
//action menu ???
$("#midmenu_action_link").show();
$("#action_menu #action_list").empty();
for(var label in vmActionMap)
@ -598,7 +548,46 @@ function clickInstanceGroupHeader($arrowIcon) {
else if($arrowIcon.hasClass("open") == true) {
$arrowIcon.removeClass("open").addClass("close");
$("#leftmenu_instance_group_container").empty();
}
}
function appendInstanceGroup(groupId, groupName) {
var $leftmenuSubmenuTemplate = $("#leftmenu_submenu_template").clone().show();
$leftmenuSubmenuTemplate.attr("id", ("leftmenu_instance_group_"+groupId));
$leftmenuSubmenuTemplate.data("groupId", groupId)
$leftmenuSubmenuTemplate.find("#submenu_name").text(groupName);
$leftmenuSubmenuTemplate.find("#icon").attr("src", "images/instance_leftmenuicon.png").show();
$leftmenuSubmenuTemplate.bind("click", function(event) {
if(selected_leftmenu_id != null && selected_leftmenu_id.length > 0)
$("#"+selected_leftmenu_id).removeClass("selected");
selected_leftmenu_id = $(this).attr("id");
$(this).addClass("selected");
$("#midmenu_container").empty();
selectedItemsInMidMenu = {};
var groupId = $(this).data("groupId");
$.ajax({
cache: false,
data: createURL("command=listVirtualMachines&groupid="+groupId+"&pagesize="+midmenuItemCount),
dataType: "json",
success: function(json) {
var instances = json.listvirtualmachinesresponse.virtualmachine;
if (instances != null && instances.length > 0) {
for(var i=0; i<instances.length;i++) {
var $midmenuItem1 = $midmenuItem.clone();
$midmenuItem1.data("toRightPanelFn", vmToRightPanel);
vmToMidmenu(instances[i], $midmenuItem1);
$("#midmenu_container").append($midmenuItem1.show());
}
}
}
});
return false;
});
$("#leftmenu_instance_group_container").append($leftmenuSubmenuTemplate);
}
//***** VM Detail (end) ********************************************************************************
$("#right_panel").load("jsp/instance.jsp", function() {
$rightPanelHeader = $("#right_panel_header");
@ -1304,5 +1293,3 @@ function doCreateTemplateFromVmVolume($actionLink, listAPIMap, $subgridItem) {
}
}).dialog("open");
}