mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-02 20:02:29 +01:00
new UI - domain page - implement update resource limits. Make right panel editable when clicking edit button instead of pop up dialog box.
This commit is contained in:
parent
319d4f1aa0
commit
7c247b2fa8
@ -22,31 +22,12 @@
|
||||
</p>
|
||||
</div>
|
||||
<div class="tabbox" style="margin-top: 15px;">
|
||||
<div class="content_tabs on">
|
||||
<div class="content_tabs on" id="tab_details">
|
||||
<%=t.t("Details")%></div>
|
||||
<div class="content_tabs off" id="tab_resource_limits">
|
||||
<%=t.t("Resource.Limits")%></div>
|
||||
</div>
|
||||
<div id="tab_content_details">
|
||||
<div class="grid_actionpanel">
|
||||
<div class="grid_actionbox" id="action_link">
|
||||
<div class="grid_actionsdropdown_box" id="action_menu" style="display: none;">
|
||||
<ul class="actionsdropdown_boxlist" id="action_list">
|
||||
<!--
|
||||
<li> <a href="#"> Delete </a> </li>
|
||||
<li> <a href="#"> Attach Disk </a> </li>
|
||||
-->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_editbox">
|
||||
</div>
|
||||
<div class="gridheader_loaderbox" id="spinning_wheel" style="border: 1px solid #999;
|
||||
display: none;">
|
||||
<div class="gridheader_loader" id="icon">
|
||||
</div>
|
||||
<p id="description">
|
||||
Detaching Disk …</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_container">
|
||||
<div class="grid_rows odd">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
@ -100,6 +81,87 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="tab_content_resource_limits" style="display:none">
|
||||
<div class="grid_actionpanel">
|
||||
<div class="grid_editbox" id="edit_button">
|
||||
</div>
|
||||
<div class="gridheader_loaderbox" id="spinning_wheel" style="border: 1px solid #999;
|
||||
display: none;">
|
||||
<div class="gridheader_loader" id="Div1">
|
||||
</div>
|
||||
<p id="description">
|
||||
Updating Resource Limits.... …</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_container">
|
||||
<div class="grid_rows even">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("Instance.Limit")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="limits_vm">
|
||||
</div>
|
||||
<input class="text" id="limits_vm_edit" value="-1" style="width: 200px; display: none;" type="text" />
|
||||
<div id="limits_vm_edit_errormsg" style="display:none"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows even">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("Public.IP.Limit")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="limits_ip">
|
||||
</div>
|
||||
<input class="text" id="limits_ip_edit" value="-1" style="width: 200px; display: none;" type="text" />
|
||||
<div id="limits_ip_edit_errormsg" style="display:none"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows even">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("Disk.Volume.Limit")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="limits_volume">
|
||||
</div>
|
||||
<input class="text" id="limits_volume_edit" value="-1" style="width: 200px; display: none;" type="text" />
|
||||
<div id="limits_volume_edit_errormsg" style="display:none"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows even">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("Snapshot.Limit")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="limits_snapshot">
|
||||
</div>
|
||||
<input class="text" id="limits_snapshot_edit" value="-1" style="width: 200px; display: none;" type="text" />
|
||||
<div id="limits_snapshot_edit_errormsg" style="display:none"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_rows even">
|
||||
<div class="grid_row_cell" style="width: 20%;">
|
||||
<div class="row_celltitles">
|
||||
<%=t.t("Template.Limit")%>:</div>
|
||||
</div>
|
||||
<div class="grid_row_cell" style="width: 79%;">
|
||||
<div class="row_celltitles" id="limits_template">
|
||||
</div>
|
||||
<input class="text" id="limits_template_edit" value="-1" style="width: 200px; display: none;" type="text" />
|
||||
<div id="limits_template_edit_errormsg" style="display:none"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid_botactionpanel">
|
||||
<div class="gridbot_buttons" id="save_button" style="display:none;">Save</div>
|
||||
<div class="gridbot_buttons" id="cancel_button" style="display:none;">Cancel</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- domain detail panel (end) -->
|
||||
|
||||
|
||||
@ -22,6 +22,9 @@ function afterLoadDomainJSP() {
|
||||
var childParentMap = {}; //map childDomainId to parentDomainId
|
||||
var domainIdNameMap = {}; //map domainId to domainName
|
||||
|
||||
var $detailsTab = $("#right_panel_content #tab_content_details");
|
||||
var $resourceLimitsTab = $("#right_panel_content #tab_content_resource_limits");
|
||||
|
||||
/*
|
||||
activateDialog($("#dialog_resource_limits").dialog({
|
||||
autoOpen: false,
|
||||
@ -87,11 +90,12 @@ function afterLoadDomainJSP() {
|
||||
template.find("#grid_row_cell2").text(json.name);
|
||||
}
|
||||
|
||||
function updateResourceLimit(domainId, type, max) {
|
||||
function updateResourceLimit(domainId, type, max, $readonlyField) {
|
||||
$.ajax({
|
||||
data: createURL("command=updateResourceLimit&domainid="+domainId+"&resourceType="+type+"&max="+max),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
$readonlyField.text(max);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -135,7 +139,6 @@ function afterLoadDomainJSP() {
|
||||
clickExpandIcon(domainId);
|
||||
}
|
||||
else if(action.indexOf("domain_name")!=-1) {
|
||||
var $detailsTab = $("#right_panel_content #tab_content_details");
|
||||
$detailsTab.data("jsonObj", jsonObj);
|
||||
$detailsTab.find("#id").text(domainId);
|
||||
$detailsTab.find("#name").text(domainName);
|
||||
@ -204,10 +207,11 @@ function afterLoadDomainJSP() {
|
||||
});
|
||||
|
||||
if (isAdmin() || (isDomainAdmin() && (g_domainid != domainId))) {
|
||||
$("#limits_container").show();
|
||||
/*
|
||||
$("#account_resource_limits").data("domainId", domainId).unbind("click").bind("click", function() {
|
||||
var domainId = $(this).data("domainId");
|
||||
$("#tab_resource_limits").show();
|
||||
|
||||
//???
|
||||
//$("#account_resource_limits").data("domainId", domainId).unbind("click").bind("click", function() {
|
||||
//debugger;
|
||||
$.ajax({
|
||||
cache: false,
|
||||
data: createURL("command=listResourceLimits&domainid="+domainId+"&response=json"),
|
||||
@ -221,27 +225,34 @@ function afterLoadDomainJSP() {
|
||||
switch (limit.resourcetype) {
|
||||
case "0":
|
||||
preInstanceLimit = limit.max;
|
||||
$("#dialog_resource_limits #limits_vm").val(limit.max);
|
||||
$resourceLimitsTab.find("#limits_vm").text(preInstanceLimit);
|
||||
$resourceLimitsTab.find("#limits_vm_edit").val(preInstanceLimit);
|
||||
break;
|
||||
case "1":
|
||||
preIpLimit = limit.max;
|
||||
$("#dialog_resource_limits #limits_ip").val(limit.max);
|
||||
$resourceLimitsTab.find("#limits_ip").text(preIpLimit);
|
||||
$resourceLimitsTab.find("#limits_ip_edit").val(preIpLimit);
|
||||
break;
|
||||
case "2":
|
||||
preDiskLimit = limit.max;
|
||||
$("#dialog_resource_limits #limits_volume").val(limit.max);
|
||||
$resourceLimitsTab.find("#limits_volume").text(preDiskLimit);
|
||||
$resourceLimitsTab.find("#limits_volume_edit").val(preDiskLimit);
|
||||
break;
|
||||
case "3":
|
||||
preSnapshotLimit = limit.max;
|
||||
$("#dialog_resource_limits #limits_snapshot").val(limit.max);
|
||||
$resourceLimitsTab.find("#limits_snapshot").text(preSnapshotLimit);
|
||||
$resourceLimitsTab.find("#limits_snapshot_edit").val(preSnapshotLimit);
|
||||
break;
|
||||
case "4":
|
||||
preTemplateLimit = limit.max;
|
||||
$("#dialog_resource_limits #limits_template").val(limit.max);
|
||||
$resourceLimitsTab.find("#limits_template").text(preTemplateLimit);
|
||||
$resourceLimitsTab.find("#limits_template_edit").val(preTemplateLimit);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
$("#dialog_resource_limits")
|
||||
.dialog('option', 'buttons', {
|
||||
"Save": function() {
|
||||
@ -281,13 +292,18 @@ function afterLoadDomainJSP() {
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}).dialog("open");
|
||||
*/
|
||||
|
||||
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
*/
|
||||
//return false;
|
||||
//});
|
||||
//???
|
||||
|
||||
|
||||
} else {
|
||||
$("#limits_container").hide();
|
||||
$("#tab_resource_limits").hide();
|
||||
}
|
||||
|
||||
rightPanelDetailContent.show();
|
||||
@ -401,4 +417,62 @@ function afterLoadDomainJSP() {
|
||||
}
|
||||
|
||||
refreshWholeTree(defaultRootDomainId, defaultRootLevel);
|
||||
|
||||
//***** switch to different tab (begin) ********************************************************************
|
||||
$("#tab_details").bind("click", function(event){
|
||||
$(this).removeClass("off").addClass("on");
|
||||
$("#tab_resource_limits").removeClass("on").addClass("off");
|
||||
$("#tab_content_details").show();
|
||||
$("#tab_content_resource_limits").hide();
|
||||
return false;
|
||||
});
|
||||
|
||||
$("#tab_resource_limits").bind("click", function(event){
|
||||
$(this).removeClass("off").addClass("on");
|
||||
$("#tab_details").removeClass("on").addClass("off");
|
||||
$("#tab_content_resource_limits").show();
|
||||
$("#tab_content_details").hide();
|
||||
return false;
|
||||
});
|
||||
//***** switch to different tab (end) **********************************************************************
|
||||
|
||||
//edit button ***
|
||||
var $readonlyFields = $resourceLimitsTab.find("#limits_vm, #limits_ip, #limits_volume, #limits_snapshot, #limits_template");
|
||||
var $editFields = $resourceLimitsTab.find("#limits_vm_edit, #limits_ip_edit, #limits_volume_edit, #limits_snapshot_edit, #limits_template_edit");
|
||||
initializeEditFunction($readonlyFields, $editFields, doUpdateResourceLimits);
|
||||
|
||||
function doUpdateResourceLimits() {
|
||||
var isValid = true;
|
||||
isValid &= validateNumber("Instance Limit", $resourceLimitsTab.find("#limits_vm_edit"), $resourceLimitsTab.find("#limits_vm_edit_errormsg"), -1, 32000, false);
|
||||
isValid &= validateNumber("Public IP Limit", $resourceLimitsTab.find("#limits_ip_edit"), $resourceLimitsTab.find("#limits_ip_edit_errormsg"), -1, 32000, false);
|
||||
isValid &= validateNumber("Disk Volume Limit", $resourceLimitsTab.find("#limits_volume_edit"), $resourceLimitsTab.find("#limits_volume_edit_errormsg"), -1, 32000, false);
|
||||
isValid &= validateNumber("Snapshot Limit", $resourceLimitsTab.find("#limits_snapshot_edit"), $resourceLimitsTab.find("#limits_snapshot_edit_errormsg"), -1, 32000, false);
|
||||
isValid &= validateNumber("Template Limit", $resourceLimitsTab.find("#limits_template_edit"), $resourceLimitsTab.find("#limits_template_edit_errormsg"), -1, 32000, false);
|
||||
if (!isValid) return;
|
||||
|
||||
var jsonObj = $detailsTab.data("jsonObj");
|
||||
var domainId = jsonObj.id;
|
||||
|
||||
var instanceLimit = trim($resourceLimitsTab.find("#limits_vm_edit").val());
|
||||
var ipLimit = trim($resourceLimitsTab.find("#limits_ip_edit").val());
|
||||
var diskLimit = trim($resourceLimitsTab.find("#limits_volume_edit").val());
|
||||
var snapshotLimit = trim($resourceLimitsTab.find("#limits_snapshot_edit").val());
|
||||
var templateLimit = trim($resourceLimitsTab.find("#limits_template_edit").val());
|
||||
|
||||
if (instanceLimit != $resourceLimitsTab.find("#limits_vm").text()) {
|
||||
updateResourceLimit(domainId, 0, instanceLimit, $resourceLimitsTab.find("#limits_vm"));
|
||||
}
|
||||
if (ipLimit != $resourceLimitsTab.find("#limits_ip").text()) {
|
||||
updateResourceLimit(domainId, 1, ipLimit, $resourceLimitsTab.find("#limits_ip"));
|
||||
}
|
||||
if (diskLimit != $resourceLimitsTab.find("#limits_volume").text()) {
|
||||
updateResourceLimit(domainId, 2, diskLimit, $resourceLimitsTab.find("#limits_volume"));
|
||||
}
|
||||
if (snapshotLimit != $resourceLimitsTab.find("#limits_snapshot").text()) {
|
||||
updateResourceLimit(domainId, 3, snapshotLimit, $resourceLimitsTab.find("#limits_snapshot"));
|
||||
}
|
||||
if (templateLimit != $resourceLimitsTab.find("#limits_template").text()) {
|
||||
updateResourceLimit(domainId, 4, templateLimit, $resourceLimitsTab.find("#limits_template"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -642,7 +642,27 @@ function bindClickToMidMenu($midmenuItem1, toRightPanel, getMidmenuId) {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
function initializeEditFunction($readonlyFields, $editFields, doUpdateFn) {
|
||||
$("#edit_button").bind("click", function(event){
|
||||
$readonlyFields.hide();
|
||||
$editFields.show();
|
||||
$("#cancel_button, #save_button").show()
|
||||
return false;
|
||||
});
|
||||
$("#cancel_button").bind("click", function(event){
|
||||
$editFields.hide();
|
||||
$readonlyFields.show();
|
||||
$("#save_button, #cancel_button").hide();
|
||||
return false;
|
||||
});
|
||||
$("#save_button").bind("click", function(event){
|
||||
doUpdateFn();
|
||||
$editFields.hide();
|
||||
$readonlyFields.show();
|
||||
$("#save_button, #cancel_button").hide();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -83,26 +83,7 @@ function afterLoadTemplateJSP() {
|
||||
//edit button ***
|
||||
var $readonlyFields = $detailsTab.find("#name, #displaytext, #passwordenabled, #ispublic, #isfeatured, #ostypename");
|
||||
var $editFields = $detailsTab.find("#name_edit, #displaytext_edit, #passwordenabled_edit, #ispublic_edit, #isfeatured_edit, #ostypename_edit");
|
||||
$("#edit_button").bind("click", function(event){
|
||||
$readonlyFields.hide();
|
||||
$editFields.show();
|
||||
$("#cancel_button, #save_button").show()
|
||||
return false;
|
||||
});
|
||||
$("#cancel_button").bind("click", function(event){
|
||||
$editFields.hide();
|
||||
$readonlyFields.show();
|
||||
$("#save_button, #cancel_button").hide();
|
||||
return false;
|
||||
});
|
||||
$("#save_button").bind("click", function(event){
|
||||
doUpdateTemplate();
|
||||
$editFields.hide();
|
||||
$readonlyFields.show();
|
||||
$("#save_button, #cancel_button").hide();
|
||||
return false;
|
||||
});
|
||||
|
||||
initializeEditFunction($readonlyFields, $editFields, doUpdateTemplate);
|
||||
|
||||
//populate dropdown ***
|
||||
var addTemplateZoneField = $("#dialog_add_template #add_template_zone");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user