From 2094ee682e213a89a99dc91c17016059fcecefd9 Mon Sep 17 00:00:00 2001 From: Pranav Saxena Date: Thu, 14 Mar 2013 17:13:27 +0530 Subject: [PATCH 01/10] Health-Check UI development --- ui/index.jsp | 1 + ui/scripts/network.js | 11 + ui/scripts/ui-custom/healthCheck.js | 318 ++++++++++++++++++++++++++++ 3 files changed, 330 insertions(+) create mode 100644 ui/scripts/ui-custom/healthCheck.js diff --git a/ui/index.jsp b/ui/index.jsp index d1e6bfa923b..3b8f37886ef 100644 --- a/ui/index.jsp +++ b/ui/index.jsp @@ -1645,6 +1645,7 @@ under the License. + diff --git a/ui/scripts/network.js b/ui/scripts/network.js index 2353a038f1f..697141a84ec 100755 --- a/ui/scripts/network.js +++ b/ui/scripts/network.js @@ -2786,6 +2786,17 @@ action: cloudStack.lbStickyPolicy.dialog() } }, + + 'health-check':{ + label:'Health Check', + custom:{ + requireValidation: true , + buttonLabel:'Configure', + action:cloudStack.uiCustom.healthCheck() + + } + }, + 'autoScale': { label: 'AutoScale', custom: { diff --git a/ui/scripts/ui-custom/healthCheck.js b/ui/scripts/ui-custom/healthCheck.js new file mode 100644 index 00000000000..0c6689a7cc8 --- /dev/null +++ b/ui/scripts/ui-custom/healthCheck.js @@ -0,0 +1,318 @@ +// Copyright 2012 Citrix Systems, Inc. Licensed under the +// Apache License, Version 2.0 (the "License"); you may not use this +// file except in compliance with the License. Citrix Systems, Inc. +// reserves all rights not expressly granted by the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +(function($, cloudStack) { + + cloudStack.uiCustom.healthCheck = function(args) { + + // Place outer args here as local variables + // i.e, -- var dataProvider = args.dataProvider + + return function(args){ + if(args.context.multiRules == undefined) { //LB rule is not created yet + cloudStack.dialog.notice({ message: _l('Health Check can only be configured on a created LB rule') }); + return; + } + + var formData = args.formData; + var forms = $.extend(true, {}, args.forms); + var topFieldForm, bottomFieldForm , $topFieldForm , $bottomFieldForm; + var topfields = forms.topFields; + + var $healthCheckDesc = $('
Your load balancer will automatically perform health checks on your cloudstack instances and only route traffic to instances that pass the health check
').addClass('health-check-description'); + var $healthCheckConfigTitle = $('


Configuration Options :
').addClass('health-check-config-title'); + var $healthCheckAdvancedTitle = $('


Advanced Options :
').addClass('health-check-advanced-title'); + + var $healthCheckDialog = $('
').addClass('health-check'); + $healthCheckDialog.append($healthCheckDesc); + $healthCheckDialog.append($healthCheckConfigTitle); + var $loadingOnDialog = $('
').addClass('loading-overlay'); + + var policyObj = null; + var pingpath1 = '/'; + var responsetimeout1 = '2'; + var healthinterval1 = '5'; + var healthythreshold1 = '2'; + var unhealthythreshold1 = '1'; + + $.ajax({ + url: createURL('listLBHealthCheckPolicies'), + data: { + lbruleid: args.context.multiRules[0].id + }, + async: false, + success: function(json) { + if(json.listlbhealtcheckpoliciesresponse.healthcheckpolicies[0].healthcheckpolicy[0] != undefined) { + policyObj = json.listlbhealtcheckpoliciesresponse.healthcheckpolicies[0].healthcheckpolicy[0]; + pingpath1 = policyObj.pingpath; //API bug: API doesn't return it + responsetimeout1 = policyObj.responsetime; + healthinterval1 = policyObj.healthcheckinterval; + healthythreshold1 = policyObj.healthcheckthresshold; + unhealthythreshold1 = policyObj.unhealthcheckthresshold; + } + } + }); + + topFieldForm = cloudStack.dialog.createForm({ + context: args.context, + noDialog: true, // Don't render a dialog, just return $formContainer + form: { + title: '', + fields:{ + pingpath: {label: 'Ping Path', docID:'helpAccountUsername' , validation: {required: false}, defaultValue: pingpath1} + } + } + }); + + $topFieldForm = topFieldForm.$formContainer; + $topFieldForm.appendTo($healthCheckDialog); + + $healthCheckDialog.append($healthCheckAdvancedTitle); + + bottomFieldForm = cloudStack.dialog.createForm ({ + context:args.context, + noDialog:true, + form:{ + title:'', + fields:{ + responsetimeout: {label: 'Response Timeout (in sec)' , validation:{required:false}, defaultValue: responsetimeout1}, + healthinterval: {label: 'Health Check Interval (in sec)', validation:{required:false}, defaultValue: healthinterval1}, + healthythreshold: {label: 'Healthy Threshold', validation: {required:false}, defaultValue: healthythreshold1}, + unhealthythreshold: {label: 'Unhealthy Threshold' , validation: { required:false}, defaultValue: unhealthythreshold1} + } + } + }); + + $bottomFieldForm = bottomFieldForm.$formContainer; + $bottomFieldForm.appendTo($healthCheckDialog); + + + var buttons = [ + { + text: _l('label.cancel'), + 'class': 'cancel', + click: function() { + $healthCheckDialog.dialog('destroy'); + $('.overlay').remove(); + } + } + ]; + + if(policyObj == null) { //policy is not created yet + buttons.push( + { + text: _l('Create'), + 'class': 'ok', + click: function() { + $loadingOnDialog.appendTo($healthCheckDialog); + var formData = cloudStack.serializeForm($healthCheckDialog.find('form')); + var data = { + lbruleid: args.context.multiRules[0].id, + pingpath: formData.pingpath, + responsetimeout: formData.responsetimeout, + intervaltime: formData.healthinterval, + healthythreshold: formData.healthythreshold, + unhealthythreshold: formData.unhealthythreshold + }; + + var lbRuleData = { + + algorithm:args.context.multiRules[0].algorithm, + name:args.context.multiRules[0].name, + publicport:args.context.multiRules[0].publicport, + privateport:args.context.multiRules[0].privateport + + + } + + if(args.context.multiRules[0] != null) + $.extend(data , lbRuleData); + + $.ajax({ + url: createURL('createLBHealthCheckPolicy'), + data: data, + success: function(json) { + var jobId = json.createlbhealthcheckpolicyresponse.jobid; + var createLBHealthCheckPolicyIntervalId = setInterval(function(){ + $.ajax({ + url: createURL('queryAsyncJobResult'), + data: { + jobid: jobId + }, + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + clearInterval(createLBHealthCheckPolicyIntervalId); + + if (result.jobstatus == 1) { + cloudStack.dialog.notice({ message: _l('Health Check Policy has been created') }); + $loadingOnDialog.remove(); + $healthCheckDialog.dialog('destroy'); + $('.overlay').remove(); + } + else if (result.jobstatus == 2) { + cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); + $loadingOnDialog.remove(); + $healthCheckDialog.dialog('destroy'); + $('.overlay').remove(); + } + } + } + }); + }, g_queryAsyncJobResultInterval); + }, + error:function(XMLHttpResponse){ + args.response.error(parseXMLHttpResponse(XMLHttpResponse)); + + + } + }); + } + } + ); + } + else { //policy exists already + buttons.push( + //Update Button (begin) - call delete API first, then create API + { + text: _l('Update'), + 'class': 'ok', + click: function() { + $loadingOnDialog.appendTo($healthCheckDialog); + + $.ajax({ + url: createURL('deleteLBHealthCheckPolicy'), + data: { + id : policyObj.id + }, + success: function(json) { + var jobId = json.deletelbhealthcheckpolicyresponse.jobid; + var deleteLBHealthCheckPolicyIntervalId = setInterval(function(){ + $.ajax({ + url: createURL('queryAsyncJobResult'), + data: { + jobid: jobId + }, + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + clearInterval(deleteLBHealthCheckPolicyIntervalId); + + if (result.jobstatus == 1) { + var formData = cloudStack.serializeForm($healthCheckDialog.find('form')); + var data = { + lbruleid: args.context.multiRules[0].id, + pingpath: formData.pingpath, + responsetimeout: formData.responsetimeout, + intervaltime: formData.healthinterval, + healthythreshold: formData.healthythreshold, + unhealthythreshold: formData.unhealthythreshold + }; + + var lbRuleData = { + + algorithm:args.context.multiRules[0].algorithm, + name:args.context.multiRules[0].name, + publicport:args.context.multiRules[0].publicport, + privateport:args.context.multiRules[0].privateport + + + } + + if(args.context.multiRules[0] != null) + $.extend(data , lbRuleData); + + $.ajax({ + url: createURL('createLBHealthCheckPolicy'), + data: data, + success: function(json) { + var jobId = json.createlbhealthcheckpolicyresponse.jobid; + var createLBHealthCheckPolicyIntervalId = setInterval(function(){ + $.ajax({ + url: createURL('queryAsyncJobResult'), + data: { + jobid: jobId + }, + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + clearInterval(createLBHealthCheckPolicyIntervalId); + + if (result.jobstatus == 1) { + cloudStack.dialog.notice({ message: _l('Health Check Policy has been updated') }); + $loadingOnDialog.remove(); + $healthCheckDialog.dialog('destroy'); + $('.overlay').remove(); + } + else if (result.jobstatus == 2) { + cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); + $loadingOnDialog.remove(); + $healthCheckDialog.dialog('destroy'); + $('.overlay').remove(); + } + } + } + }); + }, g_queryAsyncJobResultInterval); + }, + error:function(json){ + args.response.error(parseXMLHttpResponse(json)); + + } + }); + } + else if (result.jobstatus == 2) { + cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); + $loadingOnDialog.remove(); + $healthCheckDialog.dialog('destroy'); + $('.overlay').remove(); + } + } + } + }); + }, g_queryAsyncJobResultInterval); + } + }); + } + } + //Update Button (end) + ); + } + + $healthCheckDialog.dialog({ + title: 'Health Check Wizard', + width: 600, + height: 600, + draggable: true, + closeonEscape: false, + overflow:'auto', + open:function() { + $("button").each(function(){ + $(this).attr("style", "left: 400px; position: relative; margin-right: 5px; "); + }); + }, + buttons: buttons + }).closest('.ui-dialog').overlay(); + + } + } + }(jQuery, cloudStack)); + + From a7e09c864864beb56e5b8a652150e72fe39ca3a4 Mon Sep 17 00:00:00 2001 From: Pranav Saxena Date: Thu, 14 Mar 2013 17:21:03 +0530 Subject: [PATCH 02/10] Health-Check UI development --- ui/scripts/ui-custom/healthCheck.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ui/scripts/ui-custom/healthCheck.js b/ui/scripts/ui-custom/healthCheck.js index 0c6689a7cc8..d0f4defdc97 100644 --- a/ui/scripts/ui-custom/healthCheck.js +++ b/ui/scripts/ui-custom/healthCheck.js @@ -171,12 +171,10 @@ } }); }, g_queryAsyncJobResultInterval); - }, - error:function(XMLHttpResponse){ - args.response.error(parseXMLHttpResponse(XMLHttpResponse)); + } - } + }); } } From e6ac982d6c699dde4e47aa94407ce72c964ff180 Mon Sep 17 00:00:00 2001 From: Pranav Saxena Date: Fri, 15 Mar 2013 12:26:09 +0530 Subject: [PATCH 03/10] Adding the license header to the new file --- ui/scripts/ui-custom/healthCheck.js | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/ui/scripts/ui-custom/healthCheck.js b/ui/scripts/ui-custom/healthCheck.js index d0f4defdc97..2f1730c5230 100644 --- a/ui/scripts/ui-custom/healthCheck.js +++ b/ui/scripts/ui-custom/healthCheck.js @@ -1,13 +1,19 @@ -// Copyright 2012 Citrix Systems, Inc. Licensed under the -// Apache License, Version 2.0 (the "License"); you may not use this -// file except in compliance with the License. Citrix Systems, Inc. -// reserves all rights not expressly granted by the License. -// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. (function($, cloudStack) { From 3752f1c3314aaf1bbc926a7da8d200ae6f878356 Mon Sep 17 00:00:00 2001 From: Pranav Saxena Date: Fri, 15 Mar 2013 12:35:28 +0530 Subject: [PATCH 04/10] Health Check UI development --- ui/scripts/ui-custom/healthCheck.js | 91 +++++++++++++++++------------ 1 file changed, 54 insertions(+), 37 deletions(-) diff --git a/ui/scripts/ui-custom/healthCheck.js b/ui/scripts/ui-custom/healthCheck.js index 2f1730c5230..eb80e721b3b 100644 --- a/ui/scripts/ui-custom/healthCheck.js +++ b/ui/scripts/ui-custom/healthCheck.js @@ -56,8 +56,8 @@ }, async: false, success: function(json) { - if(json.listlbhealtcheckpoliciesresponse.healthcheckpolicies[0].healthcheckpolicy[0] != undefined) { - policyObj = json.listlbhealtcheckpoliciesresponse.healthcheckpolicies[0].healthcheckpolicy[0]; + if(json.listlbhealthcheckpoliciesresponse.healthcheckpolicies[0].healthcheckpolicy[0] != undefined) { + policyObj = json.listlbhealthcheckpoliciesresponse.healthcheckpolicies[0].healthcheckpolicy[0]; pingpath1 = policyObj.pingpath; //API bug: API doesn't return it responsetimeout1 = policyObj.responsetime; healthinterval1 = policyObj.healthcheckinterval; @@ -121,26 +121,13 @@ $loadingOnDialog.appendTo($healthCheckDialog); var formData = cloudStack.serializeForm($healthCheckDialog.find('form')); var data = { - lbruleid: args.context.multiRules[0].id, + lbruleid: args.context.multiRules[0].id, pingpath: formData.pingpath, responsetimeout: formData.responsetimeout, intervaltime: formData.healthinterval, healthythreshold: formData.healthythreshold, unhealthythreshold: formData.unhealthythreshold }; - - var lbRuleData = { - - algorithm:args.context.multiRules[0].algorithm, - name:args.context.multiRules[0].name, - publicport:args.context.multiRules[0].publicport, - privateport:args.context.multiRules[0].privateport - - - } - - if(args.context.multiRules[0] != null) - $.extend(data , lbRuleData); $.ajax({ url: createURL('createLBHealthCheckPolicy'), @@ -178,9 +165,6 @@ }); }, g_queryAsyncJobResultInterval); } - - - }); } } @@ -226,19 +210,6 @@ healthythreshold: formData.healthythreshold, unhealthythreshold: formData.unhealthythreshold }; - - var lbRuleData = { - - algorithm:args.context.multiRules[0].algorithm, - name:args.context.multiRules[0].name, - publicport:args.context.multiRules[0].publicport, - privateport:args.context.multiRules[0].privateport - - - } - - if(args.context.multiRules[0] != null) - $.extend(data , lbRuleData); $.ajax({ url: createURL('createLBHealthCheckPolicy'), @@ -275,11 +246,7 @@ } }); }, g_queryAsyncJobResultInterval); - }, - error:function(json){ - args.response.error(parseXMLHttpResponse(json)); - - } + } }); } else if (result.jobstatus == 2) { @@ -297,6 +264,56 @@ } } //Update Button (end) + , + //Delete Button (begin) - call delete API + { + text: _l('Delete'), + 'class': 'cancel', + click: function() { + $loadingOnDialog.appendTo($healthCheckDialog); + + $.ajax({ + url: createURL('deleteLBHealthCheckPolicy'), + data: { + id : policyObj.id + }, + success: function(json) { + var jobId = json.deletelbhealthcheckpolicyresponse.jobid; + var deleteLBHealthCheckPolicyIntervalId = setInterval(function(){ + $.ajax({ + url: createURL('queryAsyncJobResult'), + data: { + jobid: jobId + }, + success: function(json) { + var result = json.queryasyncjobresultresponse; + if (result.jobstatus == 0) { + return; //Job has not completed + } + else { + clearInterval(deleteLBHealthCheckPolicyIntervalId); + + if (result.jobstatus == 1) { + cloudStack.dialog.notice({ message: _l('Health Check Policy has been deleted') }); + $loadingOnDialog.remove(); + $healthCheckDialog.dialog('destroy'); + $('.overlay').remove(); + } + else if (result.jobstatus == 2) { + cloudStack.dialog.notice({ message: _s(result.jobresult.errortext) }); + $loadingOnDialog.remove(); + $healthCheckDialog.dialog('destroy'); + $('.overlay').remove(); + } + } + } + }); + }, g_queryAsyncJobResultInterval); + } + }); + } + } + //Delete Button (end) ); } From 8291c9b3ba9c57388f654da2e8825c0644122523 Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Tue, 26 Feb 2013 11:31:34 -0800 Subject: [PATCH 05/10] Mutli-edit overflow CSS handling --- ui/css/cloudstack3.css | 96 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 4 deletions(-) diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css index cb1debc27cf..35dc3ca7d4e 100644 --- a/ui/css/cloudstack3.css +++ b/ui/css/cloudstack3.css @@ -1737,16 +1737,60 @@ div.list-view td.state.off span { text-indent: 0; } -.detail-group .main-groups table td.value span { +.detail-group .main-groups table td.value > span { display: block; height: 30px; overflow: auto; position: relative; top: 9px; + float:left; + width:245px; } -.detail-group .main-groups table td.value span { - width: 355px; +.detail-group .main-groups table td.value .view-all { + cursor: pointer; + /*[empty]height:;*/ + border-left: 1px solid #9FA2A5; + /*+border-radius:4px 0 0 4px;*/ + -moz-border-radius: 4px 0 0 4px; + -webkit-border-radius: 4px 0 0 4px; + -khtml-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; + background: url(../images/sprites.png) no-repeat 100% -398px; + float: right; + margin: 1px 0 0; + padding: 8px 33px 6px 15px; + } + +.detail-group .main-groups table td.value .view-all:hover { + background-position: 100% -431px; + } + +/*List-view: subselect dropdown*/ +.list-view .subselect { + width: 116px; + display: block; + float: left; + background: url(../images/bg-gradients.png) 0px -42px; + padding: 0; + margin: 8px 0 1px 7px; + clear: both; + border: 1px solid #A8A7A7; + /*+border-radius:4px;*/ + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; +} + +.list-view .subselect span { + margin: 4px 0 0 12px; +} + +.list-view .subselect select { + width: 85%; + margin: 5px 0 4px; + font-size: 10px; } .panel.always-maximized .detail-group .main-groups table td.value span { @@ -7684,9 +7728,27 @@ div.ui-dialog div.multi-edit-add-list div.view div.data-table table.body tbody t margin: 0 22px 0 0; } + /** Fix long table overflow*/ +.detail-view .multi-edit { + width: 100%; +} + +.detail-view .multi-edit table { + width: 97%; + max-width: inherit; +} + +.detail-view .multi-edit table tr th, +.detail-view .multi-edit table tr td { + width: 87px !important; + min-width: 87px !important; + max-width: 87px !important; +} + + /** Header fields*/ .multi-edit .header-fields { - position: relative; + position: relative; /*+placement:shift 14px 11px;*/ position: relative; left: 14px; @@ -10502,6 +10564,32 @@ div.ui-dialog div.acl div.multi-edit div.data div.data-body div.data-item table width: 65px; } +/*HEALTH CHECK */ + +div.ui-dialog div.health-check div.health-check-description { +color: #808080; +} + +div.ui-dialog div.health-check div.form-container form div.form-item { +width:58% margin-left:116px; margin-top:-16px; margin-bottom:30px; } + +div.ui-dialog div.health-check div.health-check-config-title { +float:left; +color: #808080; +font-size:17px; +margin-left:15px; +} + +div.ui-dialog div.health-check div.health-check-advanced-title { +float:left; +color: #808080; +font-size:17px; +margin-left:15px; +} + + + + /*Autoscaler*/ .ui-dialog div.autoscaler { overflow: auto; From e86ee12a78b1ac9361e92ea008f53fda0829fc59 Mon Sep 17 00:00:00 2001 From: Pranav Saxena Date: Fri, 15 Mar 2013 17:23:04 +0530 Subject: [PATCH 06/10] Adjusting the CSS attr for the delete button --- ui/scripts/ui-custom/healthCheck.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ui/scripts/ui-custom/healthCheck.js b/ui/scripts/ui-custom/healthCheck.js index eb80e721b3b..c4c84e5236b 100644 --- a/ui/scripts/ui-custom/healthCheck.js +++ b/ui/scripts/ui-custom/healthCheck.js @@ -268,7 +268,7 @@ //Delete Button (begin) - call delete API { text: _l('Delete'), - 'class': 'cancel', + 'class': 'delete', click: function() { $loadingOnDialog.appendTo($healthCheckDialog); @@ -328,6 +328,9 @@ $("button").each(function(){ $(this).attr("style", "left: 400px; position: relative; margin-right: 5px; "); }); + + $('.ui-dialog .delete').css('left','140px'); + }, buttons: buttons }).closest('.ui-dialog').overlay(); From 4494b3fd3248856ebd640fa4ab2b4144fa58aadf Mon Sep 17 00:00:00 2001 From: Pranav Saxena Date: Fri, 15 Mar 2013 17:48:50 +0530 Subject: [PATCH 07/10] Adjusting the zindex for the tooltip to be on top --- ui/scripts/ui/widgets/toolTip.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/scripts/ui/widgets/toolTip.js b/ui/scripts/ui/widgets/toolTip.js index af6c2aa6d3f..6967acc7da0 100644 --- a/ui/scripts/ui/widgets/toolTip.js +++ b/ui/scripts/ui/widgets/toolTip.js @@ -156,7 +156,7 @@ // Fix overlay setTimeout(function() { - $('.tooltip-box').zIndex($(':ui-dialog').zIndex() + 1); }); + $('.tooltip-box').zIndex($(':ui-dialog').zIndex() + 10); }); }; From 1d47458ed746b3357dd15192edeaf5c172ca9ec8 Mon Sep 17 00:00:00 2001 From: Pranav Saxena Date: Fri, 15 Mar 2013 18:16:18 +0530 Subject: [PATCH 08/10] adjusting the css to remove blank space in the dialog box --- ui/css/cloudstack3.css | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css index 35dc3ca7d4e..5797428b1be 100644 --- a/ui/css/cloudstack3.css +++ b/ui/css/cloudstack3.css @@ -10585,6 +10585,7 @@ float:left; color: #808080; font-size:17px; margin-left:15px; +margin-top:-70px; } From 89dcc0734072859b3c97aa7a4bf56752f6d5f721 Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Fri, 15 Mar 2013 12:33:42 -0700 Subject: [PATCH 09/10] Health check: Fix height of dialog box --- ui/css/cloudstack3.css | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css index 74105687096..54a77780cda 100644 --- a/ui/css/cloudstack3.css +++ b/ui/css/cloudstack3.css @@ -10610,32 +10610,36 @@ div.ui-dialog div.acl div.multi-edit div.data div.data-body div.data-item table width: 65px; } -/*HEALTH CHECK */ +/*HEALTH CHECK*/ +.ui-dialog .health-check { + height: 295px !important; + padding-bottom: 93px; +} div.ui-dialog div.health-check div.health-check-description { -color: #808080; + color: #808080; } -div.ui-dialog div.health-check div.form-container form div.form-item { -width:58% margin-left:116px; margin-top:-16px; margin-bottom:30px; } - -div.ui-dialog div.health-check div.health-check-config-title { -float:left; -color: #808080; -font-size:17px; -margin-left:15px; +div.ui-dialog div.health-check div.form-container form div.form-item { + width: 58% margin-left:116px; + margin-top: -16px; + margin-bottom: 30px; } -div.ui-dialog div.health-check div.health-check-advanced-title { -float:left; -color: #808080; -font-size:17px; -margin-left:15px; -margin-top:-70px; +div.ui-dialog div.health-check div.health-check-config-title { + float: left; + color: #808080; + font-size: 17px; + margin-left: 15px; } - - +div.ui-dialog div.health-check div.health-check-advanced-title { + float: left; + color: #808080; + font-size: 17px; + margin-left: 15px; + margin-top: -70px; +} /*Autoscaler*/ .ui-dialog div.autoscaler { From 136e527c63c12eeb62a12bfae8aea7bfd2e12206 Mon Sep 17 00:00:00 2001 From: Brian Federle Date: Fri, 15 Mar 2013 12:33:52 -0700 Subject: [PATCH 10/10] Cleanup CSS formatting --- ui/css/cloudstack3.css | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css index 54a77780cda..e1dd02d4126 100644 --- a/ui/css/cloudstack3.css +++ b/ui/css/cloudstack3.css @@ -1763,8 +1763,8 @@ div.list-view td.state.off span { } .detail-group .main-groups table td.value .view-all:hover { - background-position: 100% -431px; - } + background-position: 100% -431px; +} /*List-view: subselect dropdown*/ .list-view .subselect { @@ -1789,7 +1789,7 @@ div.list-view td.state.off span { .list-view .subselect select { width: 85%; - margin: 5px 0 4px; + margin: 5px 0 4px; font-size: 10px; } @@ -7774,7 +7774,7 @@ div.ui-dialog div.multi-edit-add-list div.view div.data-table table.body tbody t margin: 0 22px 0 0; } - /** Fix long table overflow*/ +/** Fix long table overflow*/ .detail-view .multi-edit { width: 100%; } @@ -7791,10 +7791,9 @@ div.ui-dialog div.multi-edit-add-list div.view div.data-table table.body tbody t max-width: 87px !important; } - /** Header fields*/ .multi-edit .header-fields { - position: relative; + position: relative; /*+placement:shift 14px 11px;*/ position: relative; left: 14px;