diff --git a/gitversionconfig.yaml b/gitversionconfig.yaml
index 7d0f415ce9..57985c8254 100644
--- a/gitversionconfig.yaml
+++ b/gitversionconfig.yaml
@@ -1,2 +1,2 @@
assembly-versioning-scheme: MajorMinorPatch
-next-version: 1.14.0
+next-version: 1.15.0
diff --git a/src/ServicePulse.Host/ServicePulse.Host.csproj b/src/ServicePulse.Host/ServicePulse.Host.csproj
index 3b9fe88988..3b61a69655 100644
--- a/src/ServicePulse.Host/ServicePulse.Host.csproj
+++ b/src/ServicePulse.Host/ServicePulse.Host.csproj
@@ -105,6 +105,8 @@
+
+
diff --git a/src/ServicePulse.Host/app/css/particular.css b/src/ServicePulse.Host/app/css/particular.css
index 6a7fba1075..dc786fd00b 100644
--- a/src/ServicePulse.Host/app/css/particular.css
+++ b/src/ServicePulse.Host/app/css/particular.css
@@ -72,10 +72,6 @@ a {
border-bottom: 5px solid #00A3C4;
}
- .navbar-label {
- display: none;
- }
-
.navbar-nav > li > a {
padding-bottom: 15px;
padding-top: 20px;
@@ -99,24 +95,13 @@ body {
color: #181919;
overflow-y: scroll;
padding-top: 100px;
+ padding-bottom: 100px;
}
pre {
white-space: pre-wrap;
}
-footer {
- color: #bcc6c2;
- font-size: 14px;
- font-weight: normal;
- height: 60px;
- margin-top: 100px;
- padding: 5px 0;
- text-align: left;
- text-align: center;
- width: 100%;
-}
-
footer span {
color: #777f7f;
display: inline-block !important;
@@ -600,12 +585,20 @@ p.metadata {
margin-bottom: 6px;
}
+ p.metadata button {
+ position: absolute;
+ right: -35px;
+ top: 26px;
+ }
+
span.metadata {
display: inline-block;
padding: 0px 20px 2px 0;
color: #777f7f;
}
+
+
.metadata:first-child {
padding-left: 0;
}
@@ -868,6 +861,10 @@ p.endpoint-metadata {
font-size: 24px;
}
+.events {
+ margin-top: 30px;
+}
+
.events .box {
padding-bottom: 0;
}
@@ -895,6 +892,7 @@ p.endpoint-metadata {
.version-info-container {
width: 100% !important;
+ margin-top: -4px;
}
.version-info {
@@ -1214,7 +1212,7 @@ a.btn-feedback, a.btn-feedback:visited, a.btn-feedback:focus {
color: #fff !important;
background-color: #00A3C4 !important;
padding: 6px 16px !important;
- margin: 14px 0 0 14px;
+ margin: 14px 0 0 0;
border-radius: 3px;
font-weight: bold;
}
@@ -1495,6 +1493,10 @@ span.metadata.danger, i.fa.fa-trash-o.danger, sp-moment.danger {
margin: 10px 15px 22px !important;
padding-left: 20px !important;
}
+
+ .navbar-collapse.collapse.in {
+ padding: 0 0 0 16px !important;
+ }
}
@@ -1563,9 +1565,11 @@ span.metadata.danger, i.fa.fa-trash-o.danger, sp-moment.danger {
margin: 7.5px -15px;
}
- .navbar-nav > li {
- float: none;
- }
+ .navbar-nav > li {
+ float: none;
+ float: none;
+ .navbar-label
+ }
.navbar-nav > li > a {
padding-top: 10px;
@@ -1576,9 +1580,10 @@ span.metadata.danger, i.fa.fa-trash-o.danger, sp-moment.danger {
float: none;
margin: 15px 0;
}
- /* since 3.1.0 */
+
.navbar-collapse.collapse.in {
display: block !important;
+ padding: 0 32px 16px 32px;
}
.collapsing {
@@ -1586,23 +1591,29 @@ span.metadata.danger, i.fa.fa-trash-o.danger, sp-moment.danger {
}
}
-@media only screen and (min-width: 1200px) {
- .container {
- width: 92%;
- }
+.table-head-row .col-xl-7, .endpoint-row .col-xl-7 {
+ width: 20%;
+}
+
+.table-head-row .col-xl-8, .endpoint-row .col-xl-8 {
+ width: 36%;
}
-@media only screen and (min-width: 1440px) {
+.table-head-row .col-xl-1, .endpoint-row .col-xl-1 {
+ width: 16%;
+}
+
+@media only screen and (min-width: 1730px) {
.table-head-row .col-xl-7, .endpoint-row .col-xl-7 {
- width: 30% !important;
+ width: 30%;
}
.table-head-row .col-xl-8, .endpoint-row .col-xl-8 {
- width: 44% !important;
+ width: 44%;
}
.table-head-row .col-xl-1, .endpoint-row .col-xl-1 {
- width: 14% !important;
+ width: 14%;
}
}
@@ -1730,6 +1741,39 @@ hr.top-separator {
font-size: 11px;
}
+
+.sparkline-value.sec {
+ color: #0000FF;
+}
+
+.sparkline-value.sec span {
+ color: #007AFF;
+}
+
+.sparkline-value.min {
+ color: #8B00D0;
+}
+
+.sparkline-value.min span {
+ color: #B14AE4;
+}
+
+.sparkline-value.hr {
+ color: #D601DA;
+}
+
+.sparkline-value.hr span {
+ color: #D764D9;
+}
+
+.sparkline-value.d {
+ color: #AD0017;
+}
+
+.sparkline-value.d span {
+ color: #FF0004;
+}
+
.graph-area {
width: 33%;
box-sizing: border-box;
@@ -1899,7 +1943,7 @@ h1 .endpoint-status i.fa-envelope, .endpoint-status i.fa-exclamation-triangle {
}
.monitoring-head .endpoint-status {
- top: 0;
+ top: 4px;
}
.monitoring-head .endpoint-status a {
@@ -2105,7 +2149,7 @@ i.fa-exclamation-triangle {
background-repeat: no-repeat;
}
-.pa-monitoring-lost.endpoint-details {
+.pa-monitoring-lost.endpoint-details, .pa-connection-failed {
background-image: url('../../../img/monitoring-lost.svg');
background-position: center;
background-repeat: no-repeat;
@@ -2166,6 +2210,7 @@ i.fa.pa-endpoint-lost.endpoints-overview, i.fa.pa-monitoring-lost.endpoints-over
font-weight: bold;
background-color: initial;
border-bottom: 3px solid #000;
+ padding-bottom: 10px;
}
.nav-pills.period-selector > li > a:hover {
@@ -2183,7 +2228,76 @@ i.fa.pa-endpoint-lost.endpoints-overview, i.fa.pa-monitoring-lost.endpoints-over
padding: 10px 6px;
}
-@media (min-width: 1200px) {
+footer {
+ color: #bcc6c2;
+ font-size: 14px;
+ font-weight: normal;
+ height: 35px;
+ margin-top: 100px;
+ padding: 5px 0;
+ text-align: left;
+ text-align: center;
+ width: 100%;
+ background-color: #fff;
+ position: fixed;
+ bottom: 0;
+ border: 1px solid #ddd;
+ box-shadow: 0px -10px 16px #f2f6f7;
+ padding-top: 7px;
+}
+
+footer .row {
+ display: flex;
+ justify-content: space-between;
+}
+
+footer span {
+ padding-left: 0;
+ padding-right: 32px;
+}
+
+ footer span.connected-status {
+ color: #000;
+ }
+
+ footer span.monitoring-connected, footer span.monitoring-connected span {
+ padding-right: 0;
+ }
+
+.connectivity-status div, .connectivity-status span {
+ display: inline-block;
+ color: #777f7f;
+}
+
+.connectivity-status i, .connectivity-status div.pa-connection-success {
+ width: 10px;
+ height: 10px;
+}
+
+
+
+.pa-connection-establishing {
+ background-image: url('../img/loader_spinner.gif');
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: cover;
+}
+
+
+.connectivity-status .connection-failed {
+ color: #CE4844;
+}
+
+.connectivity-status .pa-connection-success {
+ border-radius: 50%;
+ background: #00C468;
+}
+
+@media (min-width: 0px) {
+ .container {
+ width: 92%;
+ }
+
.col-lg-max-8 {
max-width: 66%;
float: left;
@@ -2225,3 +2339,74 @@ div.alert.alert-warning strong {
color: #00729C !important;
}
+.pre-wrap {
+ white-space: pre-wrap;
+}
+
+@media (max-width: 1439px) {
+ html, body, nav {
+ min-width: 1440px !important;
+ }
+
+ nav.navbar {
+ width: 1440px;
+ position: sticky;
+ margin-top: -100px;
+ margin-bottom: 50px;
+ }
+
+ div.navbar-header {
+ float: left;
+ }
+
+ ul.navbar-nav {
+ margin: 0 8px 0 0;
+ padding-right: 16px;
+ display: bloc;
+ }
+
+ .navbar-nav > li > a {
+ padding-top: 18px;
+ padding-bottom: 17px;
+ }
+
+ .navbar-label {
+ display: inline !important;
+ }
+
+ .navbar-collapse.collapse {
+ display: block !important;
+ }
+
+ .navbar-nav > li, .navbar-nav {
+ float: left !important;
+ height: 59px;
+ }
+
+ .navbar-nav.navbar-right:last-child {
+ margin-right: -15px !important;
+ }
+
+ .navbar-right {
+ float: right !important;
+ }
+
+ .navbar-nav > li.active > a {
+ background: transparent !important;
+ border-bottom: 5px solid #00A3C4 !important;
+ }
+
+ .tabs h5 {
+ margin-bottom: 0;
+ padding-bottom: 10px;
+ }
+}
+
+@media (max-width: 1550px) {
+
+ footer {
+ height: 29px;
+ font-size: 12px;
+ }
+
+}
\ No newline at end of file
diff --git a/src/ServicePulse.Host/app/index.html b/src/ServicePulse.Host/app/index.html
index 0144cac6b6..668cf75814 100644
--- a/src/ServicePulse.Host/app/index.html
+++ b/src/ServicePulse.Host/app/index.html
@@ -15,7 +15,7 @@
-
+
diff --git a/src/ServicePulse.Host/app/js/app.controller.js b/src/ServicePulse.Host/app/js/app.controller.js
index c5ebe09956..3d9c77664e 100644
--- a/src/ServicePulse.Host/app/js/app.controller.js
+++ b/src/ServicePulse.Host/app/js/app.controller.js
@@ -28,6 +28,7 @@
$scope.SCVersion = '';
$scope.is_compatible_with_sc = true;
$scope.Version = version;
+ $scope.isSCConnecting = true;
$scope.isActive = function(viewLocation) {
var active = $location.path().startsWith(viewLocation);
@@ -118,10 +119,12 @@
switch(data) {
case 'SignalR started':
- toastService.showInfo('Connected to ServiceControl');
+ $scope.isSCConnected = true;
+ $scope.isSCConnecting = false;
break;
case 'Reconnected':
- toastService.showInfo('Reconnected to ServiceControl');
+ $scope.isSCConnected = true;
+ $scope.isSCConnecting = false;
break;
default:
toastService.showWarning(data);
@@ -132,7 +135,11 @@
notifier.subscribe($scope, function(event, data) {
logit(event, data);
- toastService.showError(data);
+ if ($scope.isSCConnected) {
+ toastService.showError(data);
+ }
+ $scope.isSCConnected = false;
+ $scope.isSCConnecting = false;
}, 'SignalRError');
notifier.subscribe($scope, function(event, data) {
diff --git a/src/ServicePulse.Host/app/js/directives/ui.particular.js b/src/ServicePulse.Host/app/js/directives/ui.particular.js
index 305a1d21b4..c488870572 100644
--- a/src/ServicePulse.Host/app/js/directives/ui.particular.js
+++ b/src/ServicePulse.Host/app/js/directives/ui.particular.js
@@ -22,6 +22,7 @@
'ui.particular.graphdecimal',
'ui.particular.multicheckboxList',
'ui.particular.reindexingstatus',
+ 'ui.particular.monitoringConnectivityStatus'
]);
} (window, window.angular));
\ No newline at end of file
diff --git a/src/ServicePulse.Host/app/js/directives/ui.particular.productVersion.tpl.html b/src/ServicePulse.Host/app/js/directives/ui.particular.productVersion.tpl.html
index cd0b61b85d..e716794205 100644
--- a/src/ServicePulse.Host/app/js/directives/ui.particular.productVersion.tpl.html
+++ b/src/ServicePulse.Host/app/js/directives/ui.particular.productVersion.tpl.html
@@ -16,12 +16,6 @@
-
-
- •
-
-
-
diff --git a/src/ServicePulse.Host/app/js/services/service.formatter.js b/src/ServicePulse.Host/app/js/services/service.formatter.js
index cb65c10f1e..105cac4d63 100644
--- a/src/ServicePulse.Host/app/js/services/service.formatter.js
+++ b/src/ServicePulse.Host/app/js/services/service.formatter.js
@@ -12,11 +12,11 @@
var time = { value: 0, unit: '' };
if (duration >= dayDuration) {
- time.value = duration.format('D [d] h [h]');
+ time.value = duration.format('D [d] h [hr]');
return time;
} else if (duration >= hourDuration) {
time.value = moment(duration._data).format('HH:mm');
- time.unit = 'h';
+ time.unit = 'hr';
return time;
} else if (duration >= minuteDuration) {
time.value = duration.format('mm:ss');
@@ -24,7 +24,7 @@
return time;
} else if (duration >= secondDuration) {
time.value = duration.format('ss');
- time.unit = 's';
+ time.unit = 'sec';
return time;
} else {
time.value = duration.format('s,SSS');
diff --git a/src/ServicePulse.Host/app/js/views/configuration/configuration.html b/src/ServicePulse.Host/app/js/views/configuration/configuration.html
index a0efb90569..0329425c70 100644
--- a/src/ServicePulse.Host/app/js/views/configuration/configuration.html
+++ b/src/ServicePulse.Host/app/js/views/configuration/configuration.html
@@ -16,13 +16,13 @@
Configuration
-
Warning: The list of endpoints below only contains endpoints with the hearbeats plug-in installed. Toggling heartbeat monitoring on/off won't toggle
performance monitoring
+
Warning: The list of endpoints below only contains endpoints with the heartbeats plug-in installed. Toggling heartbeat monitoring won't toggle
performance monitoring