multi-server changes and prototype additions
Change-Id: Icfdf19205bc4123ebd1bea086f01323ec41b4685
Signed-off-by: Michael Davis <michael.s.davis@ibm.com>
diff --git a/app/multi-server/controllers/multi-server-controller.html b/app/multi-server/controllers/multi-server-controller.html
index cf9daa4..b01605e 100644
--- a/app/multi-server/controllers/multi-server-controller.html
+++ b/app/multi-server/controllers/multi-server-controller.html
@@ -5,7 +5,7 @@
</div>
<section class="row column">
<div class="page-header">
- <h2 class="inline h4">Displaying all auto-discovered and manually added servers</h2>
+ <h2 class="inline h4">All auto-discovered and manually added servers</h2>
<a class="inline float-right" ng-click="multi_server_add = !multi_server_add"><span class="icon icon__plus"></span>Add a server</a>
</div>
</section>
@@ -28,79 +28,109 @@
<div class="column large-12 header__actions-bar">
<div class="inline multi-server__title">Server name<span class="sort-heading"></span></div>
<div class="inline multi-server__col">BMC IP address<span class="sort-heading"></span></div>
- <div class="inline multi-server__col">Model number<span class="sort-heading sort-down"></span></div>
- <div class="inline multi-server__col narrow-col">Power<span class="sort-heading sort-up"></span></div>
+ <div class="inline multi-server__col">Model number<span class="sort-heading" ng-class="sort-down"></span></div>
+ <div class="inline multi-server__col narrow-col">Power<span class="sort-heading" ng-class="sort-up"></span></div>
<div class="inline multi-server__col narrow-col">Status<span class="sort-heading"></span></div>
</div>
</div>
<!-- server -->
<div class="multi-server__col-row">
<div class="inline multi-server__title">IBM Power Witherspoon 2 (current)</div>
- <div class="inline multi-server__col courier-bold"><span class="multi-server__label">BMC IP address</span>9.3.111.222
+ <div class="inline multi-server__col courier-bold">
+ <span class="multi-server__label">BMC IP address</span>
+ <span class="multi-server__data">9.3.111.222</span>
</div>
- <div class="inline multi-server__col courier-bold"><span class="multi-server__label">Model number</span>8335-GTC
+ <div class="inline multi-server__col courier-bold">
+ <span class="multi-server__label">Model number</span>
+ <span class="multi-server__data">8335-GTC</span>
</div>
<div class="inline multi-server__col narrow-col bold">
- <span class="multi-server__label">Power</span><span class="icon icon__off"></span>Off
+ <span class="multi-server__label">Power</span>
+ <span class="multi-server__data"><span class="icon icon__off" ng-class="{'icon__off': dataService.server_state == 'Off' || 'Unreachable', 'icon__good': dataService.server_state == 'Running', 'icon_standby': dataService.server_state == 'Standby'}"></span>Off</span>
</div>
<div class="inline multi-server__col narrow-col bold">
- <span class="multi-server__label">Status</span><span class="icon icon__warning" ng-class="{'icon__critical': sensor.status == 'critical', 'icon__warning': sensor.status == 'warning', 'icon__normal': sensor.status == 'normal'}" aria-label="multi.status"></span>Warning
+ <span class="multi-server__label">Status</span>
+ <span class="multi-server__data"><span class="icon icon__critical" ng-class="{'icon__critical': sensor.status == 'critical', 'icon__warning': sensor.status == 'warning', 'icon__normal': sensor.status == 'normal'}" aria-label="multi.status"></span>Emergency</span>
</div>
</div>
<!-- server -->
<div class="multi-server__col-row">
<div class="inline multi-server__title">IBM Power Witherspoon 6</div>
- <div class="inline multi-server__col courier-bold"><span class="multi-server__label">BMC IP address</span>9.3.111.222
+ <div class="inline multi-server__col courier-bold">
+ <span class="multi-server__label">BMC IP address</span>
+ <span class="multi-server__data">9.3.41.232</span>
</div>
- <div class="inline multi-server__col courier-bold"><span class="multi-server__label">Model number</span>8335-GTC
+ <div class="inline multi-server__col courier-bold">
+ <span class="multi-server__label">Model number</span>
+ <span class="multi-server__data">PRT85-GTC</span>
</div>
<div class="inline multi-server__col narrow-col bold">
- <span class="multi-server__label">Power</span><span class="icon icon__good"></span>On
+ <span class="multi-server__label">Power</span>
+ <span class="multi-server__data"><span class="icon icon__good"></span>On</span>
</div>
<div class="inline multi-server__col narrow-col bold">
- <span class="multi-server__label">Status</span><span class="icon icon__good" ng-class="{'icon__critical': sensor.status == 'critical', 'icon__warning': sensor.status == 'warning', 'icon__normal': sensor.status == 'normal'}" aria-label="multi.status"></span>Good
+ <span class="multi-server__label">Status</span>
+ <span class="multi-server__data"><span class="icon icon__good" ng-class="{'icon__critical': sensor.status == 'critical', 'icon__warning': sensor.status == 'warning', 'icon__normal': sensor.status == 'normal'}" aria-label="multi.status"></span>Good</span>
</div>
</div>
<!-- server -->
<div class="multi-server__col-row">
<div class="inline multi-server__title">IBM Power Witherspoon 4</div>
- <div class="inline multi-server__col courier-bold"><span class="multi-server__label">BMC IP address</span>9.3.111.222
+ <div class="inline multi-server__col courier-bold">
+ <span class="multi-server__label">BMC IP address</span>
+ <span class="multi-server__data">9.3.21.233</span>
</div>
- <div class="inline multi-server__col courier-bold"><span class="multi-server__label">Model number</span>8335-GTC
+ <div class="inline multi-server__col courier-bold">
+ <span class="multi-server__label">Model number</span>
+ <span class="multi-server__data">MKU-GTC</span>
</div>
<div class="inline multi-server__col narrow-col bold">
- <span class="multi-server__label">Power</span><span class="icon icon__good"></span>On
+ <span class="multi-server__label">Power</span>
+ <span class="multi-server__data"><span class="icon icon__good"></span>On</span>
</div>
<div class="inline multi-server__col narrow-col bold">
- <span class="multi-server__label">Status</span><span class="icon icon__good" ng-class="{'icon__critical': sensor.status == 'critical', 'icon__warning': sensor.status == 'warning', 'icon__normal': sensor.status == 'normal'}" aria-label="multi.status"></span>Good
+ <span class="multi-server__label">Status</span>
+ <span class="multi-server__data"><span class="icon icon__good" ng-class="{'icon__critical': sensor.status == 'critical', 'icon__warning': sensor.status == 'warning', 'icon__normal': sensor.status == 'normal'}" aria-label="multi.status"></span>Good</span>
</div>
</div>
<!-- server -->
<div class="multi-server__col-row">
<div class="inline multi-server__title">Server 100023476 ligula sed magna dictum porta. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem</div>
- <div class="inline multi-server__col courier-bold"><span class="multi-server__label">BMC IP address</span>9.3.111.222
+ <div class="inline multi-server__col courier-bold">
+ <span class="multi-server__label">BMC IP address</span>
+ <span class="multi-server__data">9.3.51.244</span>
</div>
- <div class="inline multi-server__col courier-bold"><span class="multi-server__label">Model number</span>8335-GTC
+ <div class="inline multi-server__col courier-bold">
+ <span class="multi-server__label">Model number</span>
+ <span class="multi-server__data">854-GTC</span>
</div>
<div class="inline multi-server__col narrow-col bold">
- <span class="multi-server__label">Power</span><span class="icon icon__good"></span>On
+ <span class="multi-server__label">Power</span>
+ <span class="multi-server__data"><span class="icon icon__good"></span>On</span>
</div>
<div class="inline multi-server__col narrow-col bold">
- <span class="multi-server__label">Status</span><span class="icon icon__critical" ng-class="{'icon__critical': sensor.status == 'critical', 'icon__warning': sensor.status == 'warning', 'icon__normal': sensor.status == 'normal'}" aria-label="multi.status"></span>Critical
+ <span class="multi-server__label">Status</span>
+ <span class="multi-server__data"><span class="icon icon__critical" ng-class="{'icon__critical': sensor.status == 'critical', 'icon__warning': sensor.status == 'warning', 'icon__normal': sensor.status == 'normal'}" aria-label="multi.status"></span>Critical</span>
</div>
</div>
<!-- server -->
- <div class="multi-server__col-row">
+ <div class="multi-server__col-row" ng-show="multi_server_row">
<div class="inline multi-server__title">Server 100023476</div>
- <div class="inline multi-server__col courier-bold"><span class="multi-server__label">BMC IP address</span>9.3.111.222
+ <div class="inline multi-server__col courier-bold">
+ <span class="multi-server__label">BMC IP address</span>
+ <span class="multi-server__data">9.3.185.164</span>
</div>
- <div class="inline multi-server__col courier-bold"><span class="multi-server__label">Model number</span>8335-GTC
+ <div class="inline multi-server__col courier-bold">
+ <span class="multi-server__label">Model number</span>
+ <span class="multi-server__data">82225-GTC</span>
</div>
<div class="inline multi-server__col narrow-col bold">
- <span class="multi-server__label">Power</span><span class="icon icon__standby"></span>Standby
+ <span class="multi-server__label">Power</span>
+ <span class="multi-server__data"><span class="icon icon__standby"></span>Standby</span>
</div>
<div class="inline multi-server__col narrow-col bold">
- <span class="multi-server__label">Status</span><span class="icon icon__good" ng-class="{'icon__critical': sensor.status == 'critical', 'icon__warning': sensor.status == 'warning', 'icon__normal': sensor.status == 'normal'}" aria-label="multi.status"></span>Good
+ <span class="multi-server__label">Status</span>
+ <span class="multi-server__data"><span class="icon icon__warning" ng-class="{'icon__critical': sensor.status == 'critical', 'icon__warning': sensor.status == 'warning', 'icon__normal': sensor.status == 'normal'}" aria-label="multi.status"></span>Warning</span>
</div>
</div>
</section>
@@ -121,8 +151,8 @@
<form id="multi-server_add-form" class="multi-server__add-form" action="">
<div class="modal__content row">
<div class="column large-12">
- <label for="multi-server__host">Hostname</label>
- <input id="multi-server__host" type="text" autofocus/>
+ <label for="multi-server__host">BMC IP Address</label>
+ <input id="multi-server__host" ng-model="multi_ip" type="text" autofocus/>
</div>
<div class="column large-6">
<label for="username">Username</label>
@@ -140,7 +170,7 @@
</label>
<div class="modal__button-wrapper">
<button class="inline btn-secondary" ng-click="multi_server_add=false;">Cancel</button>
- <button class="inline btn-primary" ng-click="">Add</button>
+ <button class="inline btn-primary" ng-click="multi_server_row = true; multi_server_add = false; multi_ip = null">Add</button>
</div>
<p class="login__error-msg" role="alert" ng-if="error">Incorrect username or password</p>
<p class="login__error-msg" role="alert" ng-if="server_unreachable">Server unreachable</p>
diff --git a/app/multi-server/controllers/multi-server-controller.js b/app/multi-server/controllers/multi-server-controller.js
index 8d737cb..6bd8783 100644
--- a/app/multi-server/controllers/multi-server-controller.js
+++ b/app/multi-server/controllers/multi-server-controller.js
@@ -13,14 +13,42 @@
angular
.module('app.overview')
.controller('multiServerController', [
- '$scope',
- '$window',
- 'APIUtils',
+ '$scope',
+ '$window',
+ 'APIUtils',
'dataService',
function($scope, $window, APIUtils, dataService){
$scope.dataService = dataService;
+ $scope.customSearch = "";
+ $scope.searchTerms = [];
$scope.loading = false;
+ $scope.clear = function(){
+ $scope.customSearch = "";
+ $scope.searchTerms = [];
+ }
+ $scope.doSearchOnEnter = function (event) {
+ var search = $scope.customSearch.replace(/^\s+/g,'').replace(/\s+$/g,'');
+ if (event.keyCode === 13 &&
+ search.length >= 2) {
+ $scope.searchTerms = $scope.customSearch.split(" ");
+ }else{
+ if(search.length == 0){
+ $scope.searchTerms = [];
+ }
+ }
+ };
+
+ $scope.doSearchOnClick = function() {
+ var search = $scope.customSearch.replace(/^\s+/g,'').replace(/\s+$/g,'');
+ if (search.length >= 2) {
+ $scope.searchTerms = $scope.customSearch.split(" ");
+ }else{
+ if(search.length == 0){
+ $scope.searchTerms = [];
+ }
+ }
+ };
}
]
);
diff --git a/app/multi-server/controllers/multi-server-recent-controller.html b/app/multi-server/controllers/multi-server-recent-controller.html
new file mode 100644
index 0000000..0812b40
--- /dev/null
+++ b/app/multi-server/controllers/multi-server-recent-controller.html
@@ -0,0 +1,48 @@
+<div class="multi-server__recent" ng-class="{'active': multi_server_recent}">
+ <a class="multi-server__add-server"><span class="icon icon__plus"></span>Add a server</a>
+ <a href="#/multi-server/overview" ng-click="multiRecent()" class="multi-server__view-all">View all servers (12)<i class="icon icon-angle float-right"></i></a>
+ <div class="multi-server__recent-header">Recently accessed servers</div>
+ <!-- recent server-->
+ <div class="row multi-server__recent-server">
+ <button class="column large-7 multi-server__recent-name">IBM Power Witherspoon 2 (current)</button>
+ <div class="column large-3 multi-server__recent-ip">9.3.111.222</div>
+ <div class="column large-2 multi-server__recent-power"><span class="icon icon__good"></span>On</div>
+ </div>
+ <!-- recent server-->
+ <div class="row multi-server__recent-server">
+ <button class="column large-7 multi-server__recent-name">IBM Power Witherspoon 6 Pellentesque in ipsum id orci porta dapibus</button>
+ <div class="column large-3 multi-server__recent-ip">9.3.122.132</div>
+ <div class="column large-2 multi-server__recent-power"><span class="icon icon__good"></span>On</div>
+ </div>
+ <!-- recent server-->
+ <div class="row multi-server__recent-server">
+ <button class="column large-7 multi-server__recent-name">IBM Power Witherspoon 9</button>
+ <div class="column large-3 multi-server__recent-ip">9.3.100.233</div>
+ <div class="column large-2 multi-server__recent-power"><span class="icon icon__off"></span>Off</div>
+ </div>
+ <!-- recent server-->
+ <div class="row multi-server__recent-server">
+ <button class="column large-7 multi-server__recent-name">IBM Power Witherspoon 2 (current)</button>
+ <div class="column large-3 multi-server__recent-ip">9.3.111.122</div>
+ <div class="column large-2 multi-server__recent-power"><span class="icon icon__good"></span>On</div>
+ </div>
+ <!-- recent server-->
+ <div class="row multi-server__recent-server">
+ <button class="column large-7 multi-server__recent-name">IBM Power Witherspoon 6 Pellentesque in ipsum id orci porta dapibus</button>
+ <div class="column large-3 multi-server__recent-ip">9.3.122.132</div>
+ <div class="column large-2 multi-server__recent-power"><span class="icon icon__good"></span>On</div>
+ </div>
+ <!-- recent server-->
+ <div class="row multi-server__recent-server">
+ <button class="column large-7 multi-server__recent-name">IBM Power Witherspoon 9</button>
+ <div class="column large-3 multi-server__recent-ip">9.3.100.233</div>
+ <div class="column large-2 multi-server__recent-power"><span class="icon icon__off"></span>Off</div>
+ </div>
+ <!-- recent server-->
+ <div class="row multi-server__recent-server">
+ <button class="column large-7 multi-server__recent-name">IBM Power Witherspoon 2 (current)</button>
+ <div class="column large-3 multi-server__recent-ip">9.3.11.22</div>
+ <div class="column large-2 multi-server__recent-power"><span class="icon icon__standby"></span>Standby</div>
+ </div>
+</div>
+<div class="modal-overlay" tabindex="-1" ng-class="{'active': (multi_server_recent)}"></div>
\ No newline at end of file
diff --git a/app/multi-server/styles/multi-server.scss b/app/multi-server/styles/multi-server.scss
index 2de7321..6f777b4 100644
--- a/app/multi-server/styles/multi-server.scss
+++ b/app/multi-server/styles/multi-server.scss
@@ -1,11 +1,99 @@
-@mixin state-label {
- text-transform: uppercase;
- font-weight: 700;
- font-size: .8em;
+$title-minWidth: 210px;
+$col-width: calc(72% * (1 / 4) - 10px);
+$narrow-width: 17%;
+
+//Multiserver dropdown
+.multi-server__recent {
+ position: fixed;
+ z-index: 110;
+ background: $white;
+ left: 130px;
+ top: -30%;
+ max-height: 0;
+ overflow: hidden;
+ padding: 1em;
+ font-size: .95em;
+ font-weight: 600;
+ @include fastTransition-all;
+ @include mediaQuery(medium) {
+ min-width: 450px;
+ }
+ &.active {
+ top: 130px;
+ max-height: 100%;
+ overflow: scroll;
+ @include fastTransition-all;
+ }
+}
+.multi-server__add-server,
+.multi-server__view-all {
+ display: block;
+ padding: .6em .6em .6em 0;
+ width: 100%;
+ text-align: left;
}
-$title-minWidth: 210px;
+.multi-server__add-server {
+ margin-bottom: 2em;
+ .icon__plus {
+ height: 18px;
+ margin-top: -2px;
+ }
+}
+a.multi-server__view-all {
+ color: $black;
+}
+
+.multi-server__recent-header {
+ background: $lightgrey;
+ color: $darkgrey;
+ padding: 1em 0 .7em 1em;
+ margin-left: -1em;
+ margin-right: -1em;
+ margin-top: 1em;
+}
+
+.multi-server__recent-server {
+ padding: .8em 1em;
+ border-bottom: 1px solid $medgrey;
+ margin-left: -1em;
+ margin-right: -1em;
+ &:last-child {
+ border: 0px;
+ }
+ &:hover {
+ cursor: pointer;
+ background: $lightblue;
+ @include fastTransition-all;
+ }
+ .column {
+ padding-left: 0;
+ padding-top: .5em;
+ }
+ .icon {
+ margin-left: 0;
+ }
+ @include mediaQuery(medium) {
+ border-bottom: 0;
+ }
+}
+
+.multi-server__recent-name {
+ line-height: 1.2;
+ text-align: left;
+}
+
+.multi-server__recent-ip {
+ @include fontCourierBold;
+}
+
+.multi-server__recent-power,
+.multi-server__recent-ip{
+ text-align: left;
+}
+
+//Multiserver page
.header__actions-bar {
padding-left: 1.5em;
font-weight: 700;
@@ -30,7 +118,6 @@
}
.multi-server__label {
- float: left;
font-weight: 300;
@include fontFamily;
@include mediaQuery(medium) {
@@ -40,21 +127,39 @@
.multi-server__col {
width: 100%;
- text-align: right;
+ text-align: left;
margin-bottom: 0;
display: none;
padding: .5em .8em .5em .8em;
+ overflow: hidden;
@include mediaQuery(medium) {
display: inline-block;
- width: auto;
- min-width: calc(91% * (1 / 4) - 10px);
+ width: $col-width;
padding: .5em .8em .5em 0;
text-align: left;
+ vertical-align: top;
+ overflow-wrap: break-word;
+ }
+}
+
+.multi-server__data {
+ text-align: left;
+ float: right;
+ width:40%;
+ overflow-wrap: break-word;
+ @media (min-width: 700px){
+ width:30%;
+ }
+ @include mediaQuery(medium) {
+ float: none;
+ width: auto
}
}
.narrow-col {
- min-width: 12%;
+ @include mediaQuery(medium) {
+ width: $narrow-width;
+ }
}
.multi-server__col-row {
@@ -89,6 +194,7 @@
vertical-align: top;
margin-bottom: 0;
padding: .5em .8em .5em 0;
+ overflow-wrap: break-word;
}
.icon__normal {
width: 0;
@@ -147,5 +253,6 @@
.multi-server__add-form {
.control-check {
padding-left: 25px;
+ margin-left: 1em;
}
-}
\ No newline at end of file
+}