diff options
| author | Michael Davis <michael.s.davis@ibm.com> | 2017-03-06 23:21:19 -0600 |
|---|---|---|
| committer | Patrick Williams <patrick@stwcx.xyz> | 2017-09-20 12:41:10 -0500 |
| commit | 57738eac16c44dd84efbf5fd73f85df52e9ffb09 (patch) | |
| tree | 199fc6b0fc970c95f5dd60dfa60a83e8f314966e | |
| parent | e15a956125ac6d0c6dd60fa2f657d642ed893a8f (diff) | |
| download | phosphor-webui-57738eac16c44dd84efbf5fd73f85df52e9ffb09.tar.gz phosphor-webui-57738eac16c44dd84efbf5fd73f85df52e9ffb09.zip | |
Basic interactive functions for login and power ops
Change-Id: Iff6a4eb7a72322a0e6c4d431f43e6f7413279ecb
Signed-off-by: Michael Davis <michael.s.davis@ibm.com>
| -rw-r--r-- | src/index.html | 115 | ||||
| -rwxr-xr-x | src/js/main.js | 21 | ||||
| -rw-r--r-- | src/navigation.html | 9 | ||||
| -rw-r--r-- | src/power-operations.html | 53 | ||||
| -rw-r--r-- | src/scss/components/_status.scss | 1 | ||||
| -rw-r--r-- | src/scss/layout/_navigation.scss | 7 | ||||
| -rw-r--r-- | src/system-overview.html | 26 |
7 files changed, 206 insertions, 26 deletions
diff --git a/src/index.html b/src/index.html index ae797bf..c18a53c 100644 --- a/src/index.html +++ b/src/index.html @@ -6,6 +6,111 @@ <link rel="icon" href="favicon.ico?v=2"/> <link rel="stylesheet" href="css/main.css"> <script src="js/vendor/vendor.min.js"></script> + <script> + +// var user = 'root'; +// var password = '0penBmc'; +// var ip = 'https://9.3.164.147'; + + function getList(){ + + $.ajax({ + type: "GET", + url: ip + "/xyz/openbmc_project/list", + dataType: "json", + async: true, + xhrFields: { + withCredentials: true + }, + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }, + success: function(response){ + var json = JSON.stringify(response); + var content = JSON.parse(json); + //console.log(content.data); + + for (var i = 0; i < content.data.length; i++) { + var item = content.data[i]; + console.log(item); + $('.container').append('<p>' + item + '</p>'); + } + }, + error: function(xhr, textStatus, errorThrown){ + console.log("not a successful request!"); + console.log(xhr, textStatus, errorThrown) + } + }); + } + + function getPowerStatus(){ + + $.ajax({ + type: "GET", + url: ip + "/xyz/openbmc_project/state/host0", + dataType: "json", + async: true, + xhrFields: { + withCredentials: true + }, + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }, + success: function(response){ + var json = JSON.stringify(response); + var content = JSON.parse(json); + //console.log(content.data); + var currentHostState = content.data.CurrentHostState; + if(currentHostState == "xyz.openbmc_project.State.Host.HostState.Off"){ + $('#power-indicator-bar').removeClass('power__state-off power__state-on').addClass('power__state-off'); + }else{ + $('#power-indicator-bar').removeClass('power__state-off power__state-on').addClass('power__state-on'); + } + }, + error: function(xhr, textStatus, errorThrown){ + console.log("not a successful request!"); + console.log(xhr, textStatus, errorThrown) + } + }); + } + + function login() { + console.log('login!'); + + var user = 'root'; + var password = '0penBmc'; + var ip = 'https://9.3.164.147'; + + $.ajax({ + "type": "POST", + "url": ip + "/login", + "dataType": "json", + "async": true, + "headers": { + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }, + "xhrFields": { + withCredentials: true + }, + "data": JSON.stringify({"data": [user, password]}), + "success": function (response) { + console.log(response); + //getList(); + //getPowerStatus(); + alert(JSON.stringify(response)); + window.location.replace("system-overview.html"); + + }, + "error": function (xhr, textStatus, errorThrown) { + console.log("not a successful request!"); + console.log(xhr, textStatus, errorThrown) + } + }); + } + </script> </head> <body id="login"> <div class="login__wrapper"> @@ -24,19 +129,19 @@ <li><p class="login__info-label">Server ID</p><p>29000000166668</p></li> <li><p class="login__info-label">Server model</p><p>Power SL-22LC</p></li> <!-- ping server to see if powered on. Change status-light and txt accordingly. Status message is planned to be hardcoded message were display via local JS. --> - <li><p class="login__info-label">Server power</p><p class="status-light__disabled">Off</p></li> - <li><p class="login__info-label">Status message</p><p>BMC was reset by user</p></li> + <li><p class="login__info-label">Server power</p><p class="status-light__good">On</p></li> + <li><p class="login__info-label">Status message</p><!--<p>BMC was reset by user</p>--></li> </ul> </div> <div class="columns large-6"> - <form id="login__form" role="form"> + <form id="login__form" role="form" action="" > <label for="username">Username</label> <input type="text" id="username" name="username" required> <label for="password">Password</label> - <input type="password" id="password" name="password" class="input__error" required> + <input type="password" id="password" name="password" class="" required> - <input id="login__submit" class="btn-primary" type="submit" value="Log in" role="button"> + <input id="login__submit" class="btn-primary" type="submit" value="Log in" role="button" onclick="login();"> <p class="login__error-msg" role="alert">Incorrect username or password</p> </form> diff --git a/src/js/main.js b/src/js/main.js index b321e0d..cc96a73 100755 --- a/src/js/main.js +++ b/src/js/main.js @@ -4,7 +4,6 @@ header(); nav(); - // Load logo function loadLogo() { $('.logo__wrapper').load('logo.html', function () { @@ -59,35 +58,45 @@ var subnav = document.getElementsByClassName("nav__second-level"); var navBtn = document.querySelectorAll('#nav__top-level button'); - // Bump down nav to compensate for fixed header nav.style.top = height + 'px'; // Bump second level nav down for fixed header for (var i = 0; i < subnav.length; i++) { subnav[i].style.top = height + 'px'; + } + // Set link that matches page url to active + var path = window.location.href; // because the 'href' property of the DOM element is the absolute path + $('.nav__second-level li a').each(function() { + if (this.href === path) { + $(this).parent().addClass('active'); + } + }); + //Loop over nav buttons for (var i = 0, len = navBtn.length; i < len; i++) { // Click event for each nav button navBtn[i].addEventListener('click', function () { + var parent = $(this).parents("#navigation"); var btnId = $(this).attr("class").match(/btn[\w-]*\b/); var subnavClass = $('.nav__second-level.' + btnId); + if(this && this.classList.contains("opened")){ + parent.find(subnavClass).removeClass("opened"); + } + //Remove opened class from buttons parent.find('.opened').removeClass('opened'); // Add opened class to clicked button this.classList.add("opened"); - //Close all sub panels and remove opened class - parent.find('.nav__second-level').css("display", "none").removeClass('opened'); - // add opened class - parent.find(subnavClass).css("display", "block").addClass('opened'); + parent.find(subnavClass).toggleClass('opened'); }); } diff --git a/src/navigation.html b/src/navigation.html index 88b6169..e15f82a 100644 --- a/src/navigation.html +++ b/src/navigation.html @@ -1,3 +1,4 @@ + <nav role="navigation"> <ul id="nav__top-level"> <li> @@ -44,10 +45,10 @@ </li> </ul> <ul class="nav__second-level btn-overview"> - <li tabindex="2"><a href="">System Overview</a></li> - <li tabindex="3"class="active"><a href="power-operations.html">Server power operations </a></li> - <li tabindex="4"><a href="">Power consumption</a></li> - <li tabindex="5"><a href="">Remote console</a></li> + <li tabindex="2"><a href="system-overview.html">System Overview</a></li> + <li tabindex="3"><a href="power-operations.html">Server power operations </a></li> + <li tabindex="4"><a href="power-consumption.html">Power consumption</a></li> + <li tabindex="5"><a href="remote-console.html">Remote console</a></li> </ul> <ul class="nav__second-level btn-settings"> <li><a href="">2nd level 4</a></li> diff --git a/src/power-operations.html b/src/power-operations.html index b1913ea..d793678 100644 --- a/src/power-operations.html +++ b/src/power-operations.html @@ -68,7 +68,7 @@ <div class="power__confirm"> <div class="power__confirm-message"> - <p class="h3"><i></i>Are you sure you want to <strong>warm reboot?</strong></p> + <p class="h3"><i></i>Are you sure you want to <strong>immediate shutdown?</strong></p> <p>Removes power from the server without waiting for software to stop</p> </div> <div class="power__confirm-buttons"> @@ -85,21 +85,58 @@ <!-- FOR DEMO ONLY __ DO NOT COPY BELOW --> <script> + + var pwrOn = $("#power__power-on"), + endTransition = 'webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', + pwrOps = '#power-operations'; + + pwrOn.parent().hide(); + $('#power__hard-shutdown').on('click', function () { - var msgheight = $(this).parent().find('.power__confirm').height(); - $(this).parents('#power-operations').find('.power__confirm').addClass('active'); - $(this).parents('#power-operations').find('.power-option').addClass('disabled'); + var msgheight = $(this).parent().find('.power__confirm').height(); + $(this).addClass('disabled'); + $(this).parents(pwrOps).find('.power__confirm').addClass('active'); + $(this).parents(pwrOps).find('.power-option, .btn-secondary').addClass('disabled'); $(this).parent().addClass('transitionAll').css("minHeight", msgheight).removeClass('disabled'); - $(this).parents('#power-operations').find('.power-option.disabled button').attr("disabled", true).addClass('disabled'); + $(this).parents(pwrOps).find('.power-option.disabled button').attr("disabled", true).addClass('disabled'); + }); + + pwrOn.on('click', function () { + var srvrPwr = $(".header__server-power"); + + $(this).parents(pwrOps).find('.power__indicator-bar').toggleClass('power__state-off'); + $(this).parents(pwrOps).find('.power-option').show(); + $(this).parents(".power-option").hide(); + $(".power__state span").one(endTransition, + function() { + $(this).parents(pwrOps).find('.power__state span').html('On'); + $(this).parents(pwrOps).find('.power-option.disabled').show(); + $(this).parents(pwrOps).find('.power-option.disabled button').removeAttr("disabled", true).removeClass('disabled'); + $(".power-option, .power__confirm-buttons").removeClass("disabled"); + srvrPwr.find(".status-light__disabled").removeClass("status-light__disabled").addClass("status-light__good"); + srvrPwr.find("span").text('On'); + }); }); $('.btn-primary').on('click', function(){ - $(this).parents('#power-operations').find('.power__indicator-bar').toggleClass('power__state-off'); - $(this).parents('#power-operations').find('.power__confirm').removeClass('active'); + + var srvrPwr = $(".header__server-power"), + pwrOnDisabl = $("#power__power-on.disabled"); + + $(this).parents(pwrOps).find('.power__indicator-bar').toggleClass('power__state-off'); + $(this).parents(pwrOps).find('.power__confirm').removeClass('active'); $(this).parent().addClass('disabled'); $(this).parents('.power-option').addClass('disabled'); - $(this).parents('#power-operations').find('.power__state span').html('Off'); + $(".power__state span").one(endTransition, + function(e) { + $(this).parents(pwrOps).find('.power__state span').html('Off'); + $(this).parents(pwrOps).find('.power-option.disabled').hide(); + pwrOnDisabl.parent().show().removeClass('disabled'); + pwrOnDisabl.removeAttr("disabled").removeClass('disabled'); + srvrPwr.find(".status-light__good").removeClass("status-light__good").addClass("status-light__disabled"); + srvrPwr.find("span").text('Off'); + }); }); </script> </html> diff --git a/src/scss/components/_status.scss b/src/scss/components/_status.scss index 30cb2db..0cba22f 100644 --- a/src/scss/components/_status.scss +++ b/src/scss/components/_status.scss @@ -6,6 +6,7 @@ color: $status-ok; margin-right: .1em; transform: translateY(2px); + @include slowTransition-all; } @mixin status-light__good { diff --git a/src/scss/layout/_navigation.scss b/src/scss/layout/_navigation.scss index bb08579..d914b7b 100644 --- a/src/scss/layout/_navigation.scss +++ b/src/scss/layout/_navigation.scss @@ -96,15 +96,16 @@ $nav__seclvlWidth: 240px; transition: left .5s ease; @include mediaQuery(medium) { left: $nav__toplvlWidth; - } - &.btn-overview { - display: block; + &.btn-overview { + display: block; + } } &.opened { left: $nav__toplvlWidth; display: block; @include fastTransition-all; } + a { padding: 1.2em 1em 1.2em 1em; display: block; diff --git a/src/system-overview.html b/src/system-overview.html new file mode 100644 index 0000000..ae2368d --- /dev/null +++ b/src/system-overview.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <title>openBMC</title> + <link rel="icon" href="favicon.ico?v=2"/> + <link rel="stylesheet" href="css/main.css"> + <script src="js/vendor/vendor.min.js"></script> +</head> +<body> + +<!-- Header & Navigation includes --> +<div id="header__wrapper"></div> +<div id="navigation"></div> + +<!-- Power Operations Content --> +<main id="power-operations" class="content__container" role="main"> + <div class="row column"> + <h1>System Overview</h1> + <p>System overview will be here.</p> + </div> +</main> + +</body> +<script src="js/app.min.js"></script> +</html> |

