bug 11261: cloudStack - host page - Edit Host action - (1) make hosttags editable. (2) consolidate update OS category from dialog box to main screen.

This commit is contained in:
Jessica Wang 2011-08-25 17:22:59 -07:00
parent a11b7de9fe
commit 2b5e673b0a
6 changed files with 114 additions and 18 deletions

View File

@ -4,6 +4,8 @@
#Labels
label.action.edit.host=Edit Host
network.rate=Network Rate
ICMP.type=ICMP Type

View File

@ -4,6 +4,8 @@
#Labels
label.action.edit.host=edición Anfitrión
network.rate=Tasa de red
ICMP.type=Tipo ICMP

View File

@ -4,6 +4,8 @@
#Labels
label.action.edit.host=ホストを編集する
network.rate=ネットワーク速度
ICMP.type=ICMPタイプ

View File

@ -4,6 +4,8 @@
#Labels
label.action.edit.host=编辑主机
network.rate=网络速率
ICMP.type=ICMP类型

View File

@ -7,6 +7,7 @@
<script language="javascript">
dictionary = {
'label.action.edit.host' : '<fmt:message key="label.action.edit.host"/>',
'label.action.enable.maintenance.mode' : '<fmt:message key="label.action.enable.maintenance.mode"/>',
'label.action.enable.maintenance.mode.processing' : '<fmt:message key="label.action.enable.maintenance.mode.processing"/>',
'message.action.host.enable.maintenance.mode' : '<fmt:message key="message.action.host.enable.maintenance.mode"/>',
@ -120,6 +121,8 @@ dictionary = {
<div class="grid_row_cell" style="width: 79%;">
<div class="row_celltitles" id="hosttags">
</div>
<input class="text" id="hosttags_edit" style="width: 200px; display: none;" type="text" />
<div id="hosttags_edit_errormsg" style="display:none"></div>
</div>
</div>
<div class="grid_rows odd">
@ -189,7 +192,9 @@ dictionary = {
</div>
<div class="grid_row_cell" style="width: 79%;">
<div class="row_celltitles" id="oscategoryname">
</div>
</div>
<select class="select" id="os_dropdown" style="width: 202px; display: none;">
</select>
</div>
</div>
<div class="grid_rows even">
@ -202,7 +207,14 @@ dictionary = {
</div>
</div>
</div>
</div>
<div class="grid_botactionpanel">
<div class="gridbot_buttons" id="save_button" style="display:none;"><fmt:message key="label.save"/></div>
<div class="gridbot_buttons" id="cancel_button" style="display:none;"><fmt:message key="label.cancel"/></div>
</div>
</div>
</div>
<!-- Details tab (end)-->

View File

@ -61,7 +61,25 @@ function afterLoadHostJSP() {
var tabContentArray = [$("#tab_content_details"), $("#tab_content_instance"), $("#tab_content_router"), $("#tab_content_systemvm"), $("#tab_content_statistics")];
var afterSwitchFnArray = [hostJsonToDetailsTab, hostJsonToInstanceTab, hostJsonToRouterTab, hostJsonToSystemvmTab, hostJsonToStatisticsTab];
switchBetweenDifferentTabs(tabArray, tabContentArray, afterSwitchFnArray);
$readonlyFields = $("#tab_content_details").find("#hosttags,#oscategoryname");
$editFields = $("#tab_content_details").find("#hosttags_edit,#os_dropdown");
$.ajax({
data: createURL("command=listOsCategories"),
dataType: "json",
success: function(json) {
var categories = json.listoscategoriesresponse.oscategory;
var $dropdown = $("#tab_content_details").find("#os_dropdown").empty();
$dropdown.append("<option value=''>None</option>");
if (categories != null && categories.length > 0) {
for (var i = 0; i < categories.length; i++) {
$dropdown.append("<option value='" + categories[i].id + "'>" + fromdb(categories[i].name) + "</option>");
}
}
}
});
hostRefreshDataBinding();
}
@ -203,43 +221,45 @@ function hostBuildActionMenu(jsonObj, $thisTab, $midmenuItem1) {
$actionMenu.find("#action_list").empty();
var noAvailableActions = true;
if (jsonObj.state == 'Up' || jsonObj.state == "Connecting") {
if (jsonObj.state == 'Up' || jsonObj.state == "Connecting") {
buildActionLinkForTab("label.action.edit.host", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.enable.maintenance.mode", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.force.reconnect", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.update.OS.preference", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.force.reconnect", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.update.OS.preference", hostActionMap, $actionMenu, $midmenuItem1, $thisTab); //temp
noAvailableActions = false;
}
else if(jsonObj.state == 'Down') {
buildActionLinkForTab("label.action.enable.maintenance.mode", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.update.OS.preference", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
else if(jsonObj.state == 'Down') {
buildActionLinkForTab("label.action.edit.host", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.enable.maintenance.mode", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.remove.host", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
noAvailableActions = false;
}
else if(jsonObj.state == "Alert") {
buildActionLinkForTab("label.action.update.OS.preference", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.edit.host", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.remove.host", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
noAvailableActions = false;
}
else if (jsonObj.state == "ErrorInMaintenance") {
else if (jsonObj.state == "ErrorInMaintenance") {
buildActionLinkForTab("label.action.edit.host", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.enable.maintenance.mode", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.cancel.maintenance.mode", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.update.OS.preference", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
noAvailableActions = false;
}
else if (jsonObj.state == "PrepareForMaintenance") {
buildActionLinkForTab("label.action.cancel.maintenance.mode", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.update.OS.preference", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
else if (jsonObj.state == "PrepareForMaintenance") {
buildActionLinkForTab("label.action.edit.host", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.cancel.maintenance.mode", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
noAvailableActions = false;
}
else if (jsonObj.state == "Maintenance") {
buildActionLinkForTab("label.action.cancel.maintenance.mode", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.update.OS.preference", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
else if (jsonObj.state == "Maintenance") {
buildActionLinkForTab("label.action.edit.host", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.cancel.maintenance.mode", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.remove.host", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
noAvailableActions = false;
}
else if (jsonObj.state == "Disconnected"){
buildActionLinkForTab("label.action.update.OS.preference", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.edit.host", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
buildActionLinkForTab("label.action.remove.host", hostActionMap, $actionMenu, $midmenuItem1, $thisTab);
noAvailableActions = false;
}
@ -548,6 +568,9 @@ function populateForUpdateOSDialog(oscategoryid) {
var hostActionMap = {
"label.action.edit.host": {
dialogBeforeActionFn: doEditHost
},
"label.action.enable.maintenance.mode": {
isAsyncJob: true,
asyncJobResponse: "preparehostformaintenanceresponse",
@ -604,6 +627,59 @@ var hostActionMap = {
}
}
function doEditHost($actionLink, $detailsTab, $midmenuItem1) {
var jsonObj = $midmenuItem1.data("jsonObj");
$detailsTab.find("#os_dropdown").val(jsonObj.oscategoryid);
$readonlyFields.hide();
$editFields.show();
$detailsTab.find("#cancel_button, #save_button").show();
$detailsTab.find("#cancel_button").unbind("click").bind("click", function(event){
cancelEditMode($detailsTab);
return false;
});
$detailsTab.find("#save_button").unbind("click").bind("click", function(event){
doEditHost2($actionLink, $detailsTab, $midmenuItem1, $readonlyFields, $editFields);
return false;
});
}
function doEditHost2($actionLink, $detailsTab, $midmenuItem1, $readonlyFields, $editFields) {
var isValid = true;
isValid &= validateString("Host Tags", $detailsTab.find("#hosttags_edit"), $detailsTab.find("#hosttags_edit_errormsg"), true); //optional
if (!isValid)
return;
var jsonObj = $midmenuItem1.data("jsonObj");
var id = jsonObj.id;
var array1 = [];
array1.push("&id="+id);
var hosttags = $detailsTab.find("#hosttags_edit").val();
array1.push("&hosttags="+todb(hosttags));
var osCategoryId = $detailsTab.find("#os_dropdown").val();
if (osCategoryId != null && osCategoryId.length > 0)
array1.push("&osCategoryId="+osCategoryId);
$.ajax({
data: createURL("command=updateHost"+array1.join("")),
dataType: "json",
async: false,
success: function(json) {
var jsonObj = json.updatehostresponse.host;
hostToMidmenu(jsonObj, $midmenuItem1);
hostToRightPanel($midmenuItem1);
$editFields.hide();
$readonlyFields.show();
$("#save_button, #cancel_button").hide();
}
});
}
function doEnableMaintenanceMode($actionLink, $detailsTab, $midmenuItem1){
var jsonObj = $midmenuItem1.data("jsonObj");