summaryrefslogtreecommitdiffstats
path: root/app/overview/controllers
diff options
context:
space:
mode:
authordixsie <dixsiew@gmail.com>2019-04-16 13:30:30 -0500
committerGunnar Mills <gmills@us.ibm.com>2019-05-08 14:49:57 +0000
commit565efda513bbcda6c1c675eaebac6138782febe4 (patch)
treee1c4ace003ad445867b66f6215d3f20e106c1ea5 /app/overview/controllers
parentde382089de4cf920a59e75124da3f4d7cac056d0 (diff)
downloadphosphor-webui-565efda513bbcda6c1c675eaebac6138782febe4.tar.gz
phosphor-webui-565efda513bbcda6c1c675eaebac6138782febe4.zip
Fix system overview edit hostname form validation
- Add pattern for no spaces - Fix character count - Prepopulate hostname in input field - Show error for invalid input - Improve form accessibility - Correct global disabled primary button style Resolves openbmc/phosphor-webui#71 Signed-off-by: Dixsie Wolmers <dixsiew@gmail.com> Change-Id: Ia0601ac7c52229d0606dc5b13397b468fa81426d
Diffstat (limited to 'app/overview/controllers')
-rw-r--r--app/overview/controllers/system-overview-controller.html74
-rw-r--r--app/overview/controllers/system-overview-controller.js2
2 files changed, 45 insertions, 31 deletions
diff --git a/app/overview/controllers/system-overview-controller.html b/app/overview/controllers/system-overview-controller.html
index 629e0ab..ca128bb 100644
--- a/app/overview/controllers/system-overview-controller.html
+++ b/app/overview/controllers/system-overview-controller.html
@@ -2,7 +2,7 @@
<div class="overview">
<div class="row column">
<h1 class="inline">{{dataService.hostname}}</h1>
- <button class="link" ng-click="edit_hostname = !edit_hostname">Edit</button><!-- this is default name. Will show custom server name if set -->
+ <button class="link" ng-click="edit_hostname = !edit_hostname">Edit</button>
</div>
<section class="row">
<div class="column large-8">
@@ -21,8 +21,8 @@
</li>
<li class="overview__metadata-block">
<dl>
- <dt class="content-label">Manufacturer</dt>
- <dd class="courier-bold">{{server_info.Manufacturer}}</dd>
+ <dt class="content-label">Manufacturer</dt>
+ <dd class="courier-bold">{{server_info.Manufacturer}}</dd>
</dl>
</li>
<li class="overview__metadata-block">
@@ -100,24 +100,24 @@
</div>
<div class="column large-4 no-padding">
<div class="quick-links">
- <a href="#/server-health/event-log/high" class="quick-links__item quick-links__events event-log__events" ng-show="logs.length">
- <p class="inline quick-links__event-copy">View {{logs.length}} high priority events</p><!-- link to event log filtered to the high priority events -->
+ <a href="#/server-health/event-log/high" class="quick-links__item quick-links__events event-log__events"
+ ng-show="logs.length">
+ <!-- link to event log filtered to the high priority events -->
+ <p class="inline quick-links__event-copy">View {{logs.length}} high priority events</p>
</a>
<dl class="quick-links__item no-icon">
<dt class="inline quick-links__label">BMC time</dt>
<dd class="inline courier-bold float-right bmc-time">{{ bmc_time | localeDate }}</dd>
</dl>
<div class="quick-links__item no-icon">
- <p class="inline quick-links__label">Turn <span ng-if="dataService.LED_state == 'off'">on</span><span ng-if="dataService.LED_state == 'on'">off</span> server LED</p>
+ <p class="inline quick-links__label">Turn <span ng-if="dataService.LED_state == 'off'">on</span><span
+ ng-if="dataService.LED_state == 'on'">off</span> server LED</p>
<div class="toggle inline float-right">
- <input id="toggle__switch-round"
- class="toggle-switch toggle-switch__round-flat"
- type="checkbox"
- tabindex="0"
- ng-click="toggleLED()"
- ng-checked="dataService.LED_state == 'on'"
- ng-disabled="dataService.server_unreachable">
- <label for="toggle__switch-round" tabindex="0">Server LED is <span class="led-switch__status">{{dataService.LED_state}}</span></label>
+ <input id="toggle__switch-round" class="toggle-switch toggle-switch__round-flat" type="checkbox"
+ tabindex="0" ng-click="toggleLED()" ng-checked="dataService.LED_state == 'on'"
+ ng-disabled="dataService.server_unreachable">
+ <label for="toggle__switch-round" tabindex="0">Server LED is <span
+ class="led-switch__status">{{dataService.LED_state}}</span></label>
</div>
</div>
<a href="#/server-control/remote-console" class="no-icon quick-links__item">
@@ -127,8 +127,8 @@
<a href="#/configuration/network" class="quick-links__item">
<p class="inline quick-links__label">Edit network settings</p>
</a>
- </d>
- </div>
+ </d>
+ </div>
</section>
<section class="row">
<div class="column large-12 overview__event-log event-log__events" ng-show="logs.length">
@@ -141,7 +141,8 @@
<a href="#/server-health/event-log/high" ng-repeat="event in logs|orderBy:'-Id'|limitTo : 5">
<div class="row column event-log__single-event">
<div class="row">
- <div class="column small-9 large-10 event-log__event-info" ng-click=""><!-- click will go to specific event in event log page-->
+ <!-- click will go to specific event in event log page-->
+ <div class="column small-9 large-10 event-log__event-info" ng-click="">
<p class="inline event__id">#{{event.Id}}</p>
<p class="inline event__priority high-priority">High</p>
<p class="inline event__severity high-priority">{{event.severity_code}}</p>
@@ -167,29 +168,40 @@
</section>
</div>
<!-- edit server name modal -->
-<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog" ng-class="{'active': edit_hostname}">
+<section class="modal" aria-hidden="true" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog"
+ ng-class="{'active': edit_hostname}">
<div class="modal__upload" role="document">
- <div class="screen-reader-offscreen modal-description">Edit hostname</div><!-- accessibility only; used for screen readers -->
+ <!-- accessibility only; used for screen readers -->
+ <div class="screen-reader-offscreen modal-description">Edit hostname</div>
<div class="page-header ">
- <h2 class="modal-title"><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>
+ <h2 class="modal-title"><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>
Edit hostname
</h2>
</div>
<div class="modal__content">
- <p>The hostname is displayed in the header and can contain any characters up to a total of 64</p>
- <form>
- <label for="editServerName" class="hide"></label>
- <input id="editServerName" class="modal__edit-server-name" maxlength="64" type="text" ng-model="char_count" ng-trim="false">
- <p class="modal__char-count">{{64 - char_count.length}}/64</p>
+
+ <form name="edit_hostname_text">
+ <label for="editServerName">Hostname</label>
+ <p>Hostname must be less than 64 characters and must not contain spaces.</p>
+ <input id="editServerName" class="modal__edit-server-name" type="text" ng-model="newHostname" ng-trim="false"
+ name="hostname" ng-pattern="/^\S{0,64}$/" required autofocus />
+ <span class="modal__error" ng-show="edit_hostname_text.hostname.$error.pattern">Invalid format.
+ Remove spaces.</span>
+ <span class="modal__char-count"
+ ng-hide="edit_hostname_text.hostname.$error.pattern">{{0 + newHostname.length}}/64</span>
</form>
</div>
<div class="modal__button-wrapper">
- <button class="inline btn-secondary" ng-click="edit_hostname= false;">Cancel</button>
- <button class="inline btn-primary" ng-click="saveHostname(char_count);">Save</button>
+ <button class="inline btn-secondary"
+ ng-click="edit_hostname= false; newHostname = dataService.hostname">Cancel</button>
+ <button class="inline btn-primary" ng-click="saveHostname(newHostname);" ng-disabled="edit_hostname_text.$invalid"
+ ng-class="{'disabled' : edit_hostname_text.$invalid}">Save</button>
</div>
</div>
</section>
-<div class="modal-overlay" tabindex="-1" ng-class="{'active': edit_hostname}"></div>
+<div class="modal-overlay" tabindex="-1" ng-class="{'active': edit_hostname}"></div> \ No newline at end of file
diff --git a/app/overview/controllers/system-overview-controller.js b/app/overview/controllers/system-overview-controller.js
index 0b7d2f0..8d43613 100644
--- a/app/overview/controllers/system-overview-controller.js
+++ b/app/overview/controllers/system-overview-controller.js
@@ -24,6 +24,7 @@ window.angular && (function(angular) {
$scope.bmc_ip_addresses = [];
$scope.loading = false;
$scope.edit_hostname = false;
+ $scope.newHostname = '';
loadOverviewData();
@@ -103,6 +104,7 @@ window.angular && (function(angular) {
// TODO: openbmc/openbmc#3150 Support IPV6 when
// officially supported by the backend
$scope.bmc_ip_addresses = data.formatted_data.ip_addresses.ipv4;
+ $scope.newHostname = data.hostname;
},
function(error) {
console.log(JSON.stringify(error));
OpenPOWER on IntegriCloud