From bb2527f83bcefb6c901a423ff1006abcf477c0e1 Mon Sep 17 00:00:00 2001 From: Jessica Wang Date: Wed, 2 Mar 2011 15:56:35 -0800 Subject: [PATCH] bug 8636: (2.1.x UI) Zones page - Add VLAN IP Range dialog - change domain dropdown to autoComplete input text field. --- ui/index.jsp | 2 + ui/jsp/tab_configuration.jsp | 16 +++-- ui/scripts/cloud.core.configuration.js | 83 +++++++++++++++++++------- ui/scripts/cloud.core.js | 56 +++++++++++++++++ 4 files changed, 132 insertions(+), 25 deletions(-) diff --git a/ui/index.jsp b/ui/index.jsp index a0ccc45fad8..0e069badedc 100755 --- a/ui/index.jsp +++ b/ui/index.jsp @@ -49,6 +49,8 @@ long milliseconds = new Date().getTime(); + + diff --git a/ui/jsp/tab_configuration.jsp b/ui/jsp/tab_configuration.jsp index 4c6a71e764e..9026308d54b 100755 --- a/ui/jsp/tab_configuration.jsp +++ b/ui/jsp/tab_configuration.jsp @@ -2,7 +2,9 @@ <% long milliseconds = new Date().getTime(); %> + @@ -443,15 +445,19 @@ long milliseconds = new Date().getTime(); - -
  • diff --git a/ui/scripts/cloud.core.configuration.js b/ui/scripts/cloud.core.configuration.js index 2f927ae74eb..2d375f292aa 100644 --- a/ui/scripts/cloud.core.configuration.js +++ b/ui/scripts/cloud.core.configuration.js @@ -613,8 +613,8 @@ function showConfigurationTab() { var id = $(this).data("id"); // reset dialog - dialogAddVlanForZone.find("#add_publicip_vlan_vlan_container, #add_publicip_vlan_domain_container, #add_publicip_vlan_account_container").hide(); - dialogAddVlanForZone.find("#add_publicip_vlan_tagged, #add_publicip_vlan_vlan, #add_publicip_vlan_gateway, #add_publicip_vlan_netmask, #add_publicip_vlan_startip, #add_publicip_vlan_endip, #add_publicip_vlan_account").val(""); + dialogAddVlanForZone.find("#add_publicip_vlan_vlan_container, #domain_container, #account_container").hide(); + dialogAddVlanForZone.find("#add_publicip_vlan_tagged, #add_publicip_vlan_vlan, #add_publicip_vlan_gateway, #add_publicip_vlan_netmask, #add_publicip_vlan_startip, #add_publicip_vlan_endip, #account").val(""); dialogAddVlanForZone.find("#add_publicip_vlan_zone_name").text($(this).data("name")); if (getNetworkType() == 'vnet') { @@ -640,6 +640,8 @@ function showConfigurationTab() { } }); + applyAutoCompleteToDomainField(dialogAddVlanForZone.find("#domain")); + /* var domainSelect = dialogAddVlanForZone.find("#add_publicip_vlan_domain").empty(); $.ajax({ data: "command=listDomains&response=json", @@ -654,6 +656,7 @@ function showConfigurationTab() { } } }); + */ } dialogAddVlanForZone @@ -669,7 +672,7 @@ function showConfigurationTab() { isTagged = thisDialog.find("#add_publicip_vlan_tagged").val() == "tagged"; } - isValid &= validateString("Account", thisDialog.find("#add_publicip_vlan_account"), thisDialog.find("#add_publicip_vlan_account_errormsg"), true); //optional + isValid &= validateString("Account", thisDialog.find("#account"), thisDialog.find("#account_errormsg"), true); //optional if (isTagged) { isValid &= validateNumber("VLAN", thisDialog.find("#add_publicip_vlan_vlan"), thisDialog.find("#add_publicip_vlan_vlan_errormsg"), 2, 4095); @@ -678,26 +681,66 @@ function showConfigurationTab() { isValid &= validateIp("Netmask", thisDialog.find("#add_publicip_vlan_netmask"), thisDialog.find("#add_publicip_vlan_netmask_errormsg")); isValid &= validateIp("Start IP Range", thisDialog.find("#add_publicip_vlan_startip"), thisDialog.find("#add_publicip_vlan_startip_errormsg")); //required isValid &= validateIp("End IP Range", thisDialog.find("#add_publicip_vlan_endip"), thisDialog.find("#add_publicip_vlan_endip_errormsg"), true); //optional - if (!isValid) return; + + var domainId; + if(thisDialog.find("#domain_container").css("display") != "none") { + isValid &= validateString("Domain", thisDialog.find("#domain"), thisDialog.find("#domain_errormsg"), false); //required + var domainName = thisDialog.find("#domain").val(); + if(domainName != null && domainName.length > 0) { + if(autoCompleteDomains != null && autoCompleteDomains.length > 0) { + for(var i=0; i < autoCompleteDomains.length; i++) { + if(fromdb(autoCompleteDomains[i].name).toLowerCase() == domainName.toLowerCase()) { + domainId = autoCompleteDomains[i].id; + break; + } + } + } + if(domainId == null) { + showError(false, thisDialog.find("#domain"), thisDialog.find("#domain_errormsg"), "Not Found"); + isValid &= false; + } + } + } + if (!isValid) + return; + + var array1 = []; + array1.push("&zoneId="+id); + var vlan = trim(thisDialog.find("#add_publicip_vlan_vlan").val()); if (isTagged) { vlan = "&vlan="+vlan; } else { vlan = "&vlan=untagged"; } - - var scopeParams = ""; - if(dialogAddVlanForZone.find("#add_publicip_vlan_scope").val()=="account-specific") - scopeParams = "&domainId="+trim(thisDialog.find("#add_publicip_vlan_domain").val())+"&account="+trim(thisDialog.find("#add_publicip_vlan_account").val()); - - var type = "true"; - if (getNetworkType() == "vlan") type = trim(thisDialog.find("#add_publicip_vlan_type").val()); + array1.push(vlan); + + var type = "true"; + if (getNetworkType() == "vlan") + type = trim(thisDialog.find("#add_publicip_vlan_type").val()); + array1.push("&forVirtualNetwork="+type); + var gateway = trim(thisDialog.find("#add_publicip_vlan_gateway").val()); - var netmask = trim(thisDialog.find("#add_publicip_vlan_netmask").val()); - var startip = trim(thisDialog.find("#add_publicip_vlan_startip").val()); - var endip = trim(thisDialog.find("#add_publicip_vlan_endip").val()); + array1.push("&gateway="+encodeURIComponent(gateway)); + var netmask = trim(thisDialog.find("#add_publicip_vlan_netmask").val()); + array1.push("&netmask="+encodeURIComponent(netmask)); + + var startip = trim(thisDialog.find("#add_publicip_vlan_startip").val()); + array1.push("&startip="+encodeURIComponent(startip)); + + var endip = trim(thisDialog.find("#add_publicip_vlan_endip").val()); + array1.push("&endip="+encodeURIComponent(endip)); + + if(thisDialog.find("#domain_container").css("display") != "none") { + array1.push("&domainid="+domainId); + } + + if(thisDialog.find("#account_container").css("display") != "none") { + array1.push("&account="+trim(thisDialog.find("#account").val())); + } + thisDialog.dialog("close"); var template = $("#vlan_ip_range_template").clone(true); @@ -712,7 +755,7 @@ function showConfigurationTab() { template.fadeIn("slow"); $.ajax({ - data: "command=createVlanIpRange&forVirtualNetwork="+type+"&zoneId="+id+vlan+scopeParams+"&gateway="+encodeURIComponent(gateway)+"&netmask="+encodeURIComponent(netmask)+"&startip="+encodeURIComponent(startip)+"&endip="+encodeURIComponent(endip)+"&response=json", + data: "command=createVlanIpRange"+array1.join("")+"&response=json", dataType: "json", success: function(json) { var vlan = json.createvlaniprangeresponse; @@ -1024,7 +1067,7 @@ function showConfigurationTab() { if (getNetworkType() != "vnet") { dialogAddVlanForZone.find("#add_publicip_vlan_tagged").change(function(event) { - // default value of "#add_publicip_vlan_scope" is "zone-wide". Calling change() will hide "#add_publicip_vlan_domain_container", "#add_publicip_vlan_account_container". + // default value of "#add_publicip_vlan_scope" is "zone-wide". Calling change() will hide "#domain_container", "#account_container". dialogAddVlanForZone.find("#add_publicip_vlan_scope").change(); if (dialogAddVlanForZone.find("#add_publicip_vlan_type").val() == "false") { //direct VLAN (only tagged option) @@ -1050,11 +1093,11 @@ function showConfigurationTab() { dialogAddVlanForZone.find("#add_publicip_vlan_scope").change(function(event) { if($(this).val() == "zone-wide") { - dialogAddVlanForZone.find("#add_publicip_vlan_domain_container").hide(); - dialogAddVlanForZone.find("#add_publicip_vlan_account_container").hide(); + dialogAddVlanForZone.find("#domain_container").hide(); + dialogAddVlanForZone.find("#account_container").hide(); } else { // account-specific - dialogAddVlanForZone.find("#add_publicip_vlan_domain_container").show(); - dialogAddVlanForZone.find("#add_publicip_vlan_account_container").show(); + dialogAddVlanForZone.find("#domain_container").show(); + dialogAddVlanForZone.find("#account_container").show(); } return false; }); diff --git a/ui/scripts/cloud.core.js b/ui/scripts/cloud.core.js index cb536bc3aa7..d7ed49c933c 100644 --- a/ui/scripts/cloud.core.js +++ b/ui/scripts/cloud.core.js @@ -67,6 +67,62 @@ function initializeTestTool() { }); } +//autoComplete +var autoCompleteDomains = []; +function applyAutoCompleteToDomainField($field) { + $field.autocomplete({ + source: function(request, response) { + $.ajax({ + data: "command=listDomains&keyword=" + request.term +"&response=json", + dataType: "json", + async: false, + success: function(json) { + autoCompleteDomains = json.listdomainsresponse.domain; + var array1 = []; + if(autoCompleteDomains != null && autoCompleteDomains.length > 0) { + for(var i=0; i < autoCompleteDomains.length; i++) + array1.push(fromdb(autoCompleteDomains[i].name)); + } + response(array1); + } + }); + } + }); +} + +function applyAutoCompleteToDomainChildrenField($field, parentDomainId) { + $field.autocomplete({ + source: function(request, response) { + var array1 = []; + $.ajax({ + data: "command=listDomainChildren&id="+parentDomainId+"&isrecursive=true&keyword=" + request.term +"&response=json", + dataType: "json", + async: false, + success: function(json) { + autoCompleteDomains = json.listdomainchildrenresponse.domain; + if(autoCompleteDomains != null && autoCompleteDomains.length > 0) { + for(var i=0; i < autoCompleteDomains.length; i++) + array1.push(fromdb(autoCompleteDomains[i].name)); + } + } + }); + $.ajax({ + data: "command=listDomains&id="+parentDomainId+"&keyword=" + request.term +"&response=json", + dataType: "json", + async: false, + success: function(json) { + var items = json.listdomainsresponse.domain; + if(items != null && items.length > 0) { + autoCompleteDomains.push(items[0]); + array1.push(fromdb(items[0].name)); + } + } + }); + response(array1); + } + }); +} + // Role Functions function isAdmin() { return (g_role == 1);