adding multiserver page
Change-Id: I6f898d9a2e5a701ea58063da31a334a1a38e079e
Signed-off-by: Michael Davis <michael.s.davis@ibm.com>
diff --git a/app/common/directives/app-navigation.html b/app/common/directives/app-navigation.html
index 6f630b6..6784990 100644
--- a/app/common/directives/app-navigation.html
+++ b/app/common/directives/app-navigation.html
@@ -66,12 +66,15 @@
</li>
<li>
<a class="btn-multi-server" ng-class="{opened: firstLevel == 'multi-server'}" href="#/multi-server/overview" ng-click="change('multi-server')">
- <span class="">
- <svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="0 0 40 40" style="enable-background:new 0 0 40 40;" xml:space="preserve" class="nav-icon">
- <path d="M23.9,18.2l3.3,3.3l1.1-1.1L23.9,16l-7.8,7.8l-3.3-3.3l-1.1,1.1l4.4,4.4L23.9,18.2z"/>
- <path d="M5,8v24h30V8H5z M33,30H7V12h26V30z"/>
- </svg>
- Multi Server</span></a>
+ <span>
+ <svg class="nav-icon" version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="0 0 24 24" xml:space="preserve">
+<path d="M12.8,7.3h4c0.2,1.5,1.5,2.8,3.1,2.8c1.7,0,3.1-1.4,3.1-3.1s-1.4-3.1-3.1-3.1c-1.5,0-2.7,1-3,2.4h-4C12.4,3.3,9.9,1,6.9,1
+ C3.7,1,1,3.6,1,6.9c0,0,0,0,0,0c0,3.1,2.4,5.7,5.5,5.9v4c-1.3,0.4-2.4,1.6-2.4,3c0,1.7,1.4,3.1,3.1,3.1s3.1-1.4,3.1-3.1
+ c0-1.6-1.2-2.9-2.8-3.1v-4c1.1-0.2,2.1-0.6,2.9-1.3l4.7,4.7c-0.4,0.5-0.6,1.1-0.6,1.8c0,1.7,1.4,3.1,3.1,3.1c1.7,0,3.1-1.4,3.1-3.1
+ c0-1.7-1.4-3.1-3.1-3.1c-0.6,0-1.3,0.2-1.8,0.6l-4.7-4.7C12.2,9.7,12.7,8.5,12.8,7.3z M2.2,6.9c0-2.6,2.1-4.7,4.7-4.7
+ s4.7,2.1,4.7,4.7s-2.1,4.7-4.7,4.7S2.2,9.5,2.2,6.9z"/>
+</svg>
+ Multi Server</span></a>
</li>
</ul>
<ul class="nav__second-level btn-health" ng-style="navStyle" ng-class="{opened: (showSubMenu && firstLevel == 'server-health')}">
@@ -84,7 +87,8 @@
</ul>
<ul class="nav__second-level btn-control" ng-style="navStyle" ng-class="{opened: (showSubMenu && firstLevel == 'server-control')}">
<li ng-class="{'active': (path == '/server-control' || path == '/server-control/power-operations')}">
- <a href="#/server-control/power-operations" tabindex="9" ng-click="closeSubnav()">Server power operations</a></li>
+ <a href="#/server-control/power-operations" tabindex="9" ng-click="closeSubnav()">Server power operations</a>
+ </li>
<li ng-class="{'active': (path == '/server-control/server-led')}">
<a href="#/server-control/server-led" tabindex="10" ng-click="closeSubnav()">Server LED</a></li>
<li ng-class="{'active': (path == '/server-control/bmc-reboot')}">
diff --git a/app/multi-server/controllers/index-controller.html b/app/multi-server/controllers/index-controller.html
index b4be90e..cf9daa4 100644
--- a/app/multi-server/controllers/index-controller.html
+++ b/app/multi-server/controllers/index-controller.html
@@ -1,6 +1,150 @@
<loader loading="loading"></loader>
-<div class="overview">
+<div id="multi-server">
<div class="row column">
- <h1 class="inline">Multi Server</h1>
+ <h1>All servers</h1>
</div>
-</div>
\ No newline at end of file
+ <section class="row column">
+ <div class="page-header">
+ <h2 class="inline h4">Displaying 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>
+ <section class="row column">
+ <!-- search -->
+ <p class="content-label" aria-label="sensors filter">Filter servers</p>
+ <div class="content__search">
+ <label for="content__search-input">Multi server search</label>
+ <input id="content__search-input" type="text" ng-model="customSearch" ng-keydown="doSearchOnEnter($event)"/>
+ <div class="search-submit__wrapper">
+ <button class="clear-input" ng-click="clear()">✕</button>
+ <input id="content__search-submit" type="submit" class="btn btn-primary content__search-submit" value="Filter" ng-click="doSearchOnClick()"/>
+ </div>
+
+ </div>
+ </section> <!-- end search -->
+
+ <section id="" class="row column">
+ <div class="row column header-row">
+ <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 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>
+ <div class="inline multi-server__col courier-bold"><span class="multi-server__label">Model number</span>8335-GTC
+ </div>
+ <div class="inline multi-server__col narrow-col bold">
+ <span class="multi-server__label">Power</span><span class="icon icon__off"></span>Off
+ </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
+ </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>
+ <div class="inline multi-server__col courier-bold"><span class="multi-server__label">Model number</span>8335-GTC
+ </div>
+ <div class="inline multi-server__col narrow-col bold">
+ <span class="multi-server__label">Power</span><span class="icon icon__good"></span>On
+ </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
+ </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>
+ <div class="inline multi-server__col courier-bold"><span class="multi-server__label">Model number</span>8335-GTC
+ </div>
+ <div class="inline multi-server__col narrow-col bold">
+ <span class="multi-server__label">Power</span><span class="icon icon__good"></span>On
+ </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
+ </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>
+ <div class="inline multi-server__col courier-bold"><span class="multi-server__label">Model number</span>8335-GTC
+ </div>
+ <div class="inline multi-server__col narrow-col bold">
+ <span class="multi-server__label">Power</span><span class="icon icon__good"></span>On
+ </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
+ </div>
+ </div>
+ <!-- server -->
+ <div class="multi-server__col-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>
+ <div class="inline multi-server__col courier-bold"><span class="multi-server__label">Model number</span>8335-GTC
+ </div>
+ <div class="inline multi-server__col narrow-col bold">
+ <span class="multi-server__label">Power</span><span class="icon icon__standby"></span>Standby
+ </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
+ </div>
+ </div>
+ </section>
+</div>
+
+<!-- add server modal -->
+<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': multi_server_add}">
+ <div class="modal__multi-add" role="document">
+ <div class="screen-reader-offscreen modal-description">To manually add a server that is not discovered automatically, provide either the BMC IP address or hostname and login credentials for its BMC</div><!-- accessibility only; used for screen readers -->
+ <div class="page-header ">
+ <h1 class="modal-title h4"><span class="icon icon__info"><svg xmlns="http://www.w3.org/2000/svg"
+ viewBox="0 0 32 32"><path
+ d="M18 14h-6v2h1v6h-2v2h8v-2h-2z"/><circle cx="16" cy="10" r="2"/><path
+ d="M16 2C8.269 2 2 8.269 2 16s6.269 14 14 14 14-6.269 14-14S23.731 2 16 2zm0 26C9.383 28 4 22.617 4 16S9.383 4 16 4s12 5.383 12 12-5.383 12-12 12z"/></svg></span>
+ Add a server
+ </h1>
+ </div>
+ <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/>
+ </div>
+ <div class="column large-6">
+ <label for="username">Username</label>
+ <input type="text" id="username" name="username" ng-model="username" ng-class="{error: error}" ng-keydown="tryLogin(username, password, $event)" ng-disabled="dataService.loading">
+ </div>
+ <div class="column large-6">
+ <label for="password">Password</label>
+ <input type="password" id="password" name="password" class="" ng-model="password" ng-keydown="tryLogin(username, password, $event)" ng-disabled="dataService.loading">
+ </div>
+ </div>
+ <label class="control-check">
+ <input id="multi-server__add-view" type="checkbox" name="events__check-all" ng-model="all" />
+ <span class="control__indicator"></span>
+ <span for="multi-server__add-view" class="inline">View this server once added</span>
+ </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>
+ </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>
+ </form>
+ </div>
+</section>
+<div class="modal-overlay" tabindex="-1" ng-class="{'active': (multi_server_add)}"></div>
\ No newline at end of file
diff --git a/app/multi-server/styles/index.scss b/app/multi-server/styles/index.scss
index 77a13b8..be88126 100644
--- a/app/multi-server/styles/index.scss
+++ b/app/multi-server/styles/index.scss
@@ -1 +1 @@
-@import "./overview.scss";
\ No newline at end of file
+@import "./multi-server.scss";
\ No newline at end of file
diff --git a/app/multi-server/styles/multi-server.scss b/app/multi-server/styles/multi-server.scss
new file mode 100644
index 0000000..2de7321
--- /dev/null
+++ b/app/multi-server/styles/multi-server.scss
@@ -0,0 +1,151 @@
+@mixin state-label {
+ text-transform: uppercase;
+ font-weight: 700;
+ font-size: .8em;
+}
+
+$title-minWidth: 210px;
+
+.header__actions-bar {
+ padding-left: 1.5em;
+ font-weight: 700;
+ .multi-server__col {
+ padding: 0;
+ &:hover {
+ cursor: pointer;
+ }
+ }
+ .multi-server__title {
+ padding: 0;
+ width: 30%;
+ }
+}
+
+.multi-server__heading-current {
+ margin: 0;
+ @include mediaQuery(medium) {
+ margin-left: 10px;
+ margin-right: 10px;
+ }
+}
+
+.multi-server__label {
+ float: left;
+ font-weight: 300;
+ @include fontFamily;
+ @include mediaQuery(medium) {
+ display: none;
+ }
+}
+
+.multi-server__col {
+ width: 100%;
+ text-align: right;
+ margin-bottom: 0;
+ display: none;
+ padding: .5em .8em .5em .8em;
+ @include mediaQuery(medium) {
+ display: inline-block;
+ width: auto;
+ min-width: calc(91% * (1 / 4) - 10px);
+ padding: .5em .8em .5em 0;
+ text-align: left;
+ }
+}
+
+.narrow-col {
+ min-width: 12%;
+}
+
+.multi-server__col-row {
+ position: relative;
+ display: block;
+ margin: 0;
+ background: $white;
+ text-decoration: none;
+ border: 1px solid $medgrey;
+ background: lighten($lightgrey,1%);
+ margin-top: 1em;
+ &:hover {
+ cursor: pointer;
+ background: $lightblue;
+ @include fastTransition-all;
+ }
+ @include mediaQuery(medium) {
+ padding: .3em 1em .3em 1.5em;
+ margin-top: 0;
+ border-top: 0;
+ background: transparent;
+ }
+ .multi-server__title {
+ font-weight: 700;
+ background: darken($lightgrey, 5%);
+ min-width: 100%;
+ padding: .5em .8em;
+ @include mediaQuery(medium) {
+ min-width: 30%;
+ max-width: 30%;
+ background: 0 0;
+ vertical-align: top;
+ margin-bottom: 0;
+ padding: .5em .8em .5em 0;
+ }
+ .icon__normal {
+ width: 0;
+ }
+ }
+ .content-label {
+ font-size: 1em;
+ margin-left: .8em;
+ color: $darkgrey;
+ }
+ .multi-server__col {
+ display: block;
+ @include mediaQuery(medium) {
+ display: inline-block;
+ }
+ }
+ .multi-server__current {
+ background: darken($thresh-normal, 3%);
+ margin: 0;
+ @include mediaQuery(medium) {
+ background: $thresh-normal;
+ padding: .7em .3em;
+ margin-left: 10px;
+ min-width: 109px;
+ }
+ @include mediaQuery(large) {
+ background: $thresh-normal;
+ padding: .7em;
+ margin-left: .3em;
+ margin-right: .3em;
+ min-width: 150px;
+ }
+ .multi-server__label {
+ font-weight: 700;
+ @include mediaQuery(medium) {
+ font-weight:300;
+ }
+ }
+ }
+ .multi-server__critical {
+ background: $thresh-critical;
+ color: $white;
+ .content-label {
+ color: $white;
+ }
+ }
+ .multi-server__warn {
+ background: $thresh-warning;
+ color: $black;
+ .content-label {
+ color: $black;
+ }
+ }
+}
+
+.multi-server__add-form {
+ .control-check {
+ padding-left: 25px;
+ }
+}
\ No newline at end of file
diff --git a/app/multi-server/styles/overview.scss b/app/multi-server/styles/overview.scss
deleted file mode 100644
index e69de29..0000000
--- a/app/multi-server/styles/overview.scss
+++ /dev/null