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
+}