bug 8636: (2.1.x UI) Zones page - Add VLAN IP Range dialog - change domain dropdown to autoComplete input text field.

This commit is contained in:
Jessica Wang 2011-03-02 15:56:35 -08:00
parent ab91056e26
commit bb2527f83b
4 changed files with 132 additions and 25 deletions

View File

@ -49,6 +49,8 @@ long milliseconds = new Date().getTime();
<script type="text/javascript" src="scripts/cloud.core.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core.init.js?t=<%=milliseconds%>"></script>
<script type="text/javascript" src="scripts/cloud.core.configuration.js?t=<%=milliseconds%>"></script>
<!-- Favicon -->
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />

View File

@ -2,7 +2,9 @@
<%
long milliseconds = new Date().getTime();
%>
<!--
<script type="text/javascript" src="scripts/cloud.core.configuration.js?t=<%=milliseconds%>"></script>
-->
<!-- Content Panel -->
<!-- Submenu -->
@ -443,15 +445,19 @@ long milliseconds = new Date().getTime();
<select class="select" name="add_publicip_vlan_pod" id="add_publicip_vlan_pod">
</select>
</li>
<li style="display:none" id="add_publicip_vlan_domain_container">
<label for="user_name">Domain:</label>
<li style="display:none" id="domain_container">
<label>Domain:</label>
<input class="text" type="text" id="domain" />
<div id="domain_errormsg" class="dialog_formcontent_errormsg" style="display: none;">
<!--
<select class="select" name="add_publicip_vlan_domain" id="add_publicip_vlan_domain">
</select>
-->
</li>
<li style="display:none" id="add_publicip_vlan_account_container">
<li style="display:none" id="account_container">
<label for="user_name">Account:</label>
<input class="text" type="text" name="add_publicip_vlan_account" id="add_publicip_vlan_account"/>
<div id="add_publicip_vlan_account_errormsg" class="dialog_formcontent_errormsg" style="display:none;" ></div>
<input class="text" type="text" id="account"/>
<div id="account_errormsg" class="dialog_formcontent_errormsg" style="display:none;" ></div>
</li>
<li>
<label for="user_name">Gateway:</label>

View File

@ -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;
});

View File

@ -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);