Display log events in user time
Allows user to display events in their timezone or in UTC.
Previously allowed either ETC or UTC, but listed ETC as
'user timezone'. Updates date time page from GMT offset to
UTC offset for overall consistency. Also updates overview
page to list critical events in user timezone
Resolves openbmc/phosphor-webui#36
Tested: changed timezone settings locally and validated
that correct timezone and UTC offset was presented in
the UI.
Change-Id: I89ca5045eeb789527aa07f5b1baebaa3fbd6b1fa
Signed-off-by: beccabroek <beccabroek@gmail.com>
diff --git a/app/server-health/controllers/log-controller.html b/app/server-health/controllers/log-controller.html
index 8fc99bc..62bd831 100644
--- a/app/server-health/controllers/log-controller.html
+++ b/app/server-health/controllers/log-controller.html
@@ -1,75 +1,76 @@
<loader loading="loading"></loader>
<div id="event-log">
- <div class="row column">
- <h1>Event log</h1>
+ <div class="row column">
+ <h1>Event log</h1>
+ </div>
+ <section class="row column">
+ <div class="page-header">
+ <h2 class="inline h4">All events from the BMC</h2>
+ <div class="event-log__timezone inline float-right">
+ <button class="dropdown__button" ng-click="timezone = timezone == true ? false : true;" toggle-flag="timezone">
+ <span>{{tmz === 'UTC'? 'UTC Timezone' : 'User Timezone'}}</span>
+ </button>
+ <ul class="dropdown__list inline" ng-show="timezone">
+ <li>
+ <button ng-click="selectUserTimezone();">User Timezone</button>
+ </li>
+ <li>
+ <button ng-click="tmz = 'UTC'">UTC Timezone</button>
+ </li>
+ </ul>
+ </div>
</div>
- <section class="row column">
- <div class="page-header">
- <h2 class="inline h4">All events from the BMC</h2>
- <div class="event-log__timezone inline float-right">
- <button class="dropdown__button" ng-click="timezone = timezone == true ? false : true;" toggle-flag="timezone"
- >User timezone: <span ng-show="tmz== 'EDT'">EDT (UTC-4)</span><span ng-show="tmz=='UTC'">UTC - 0</span>
- </button>
- <ul class="dropdown__list inline" ng-show="timezone">
- <li>
- <button ng-click="tmz = 'EDT'; timezone=false;">User timezone: EDT (UTC-4)</button>
- </li>
- <li>
- <button ng-click="tmz = 'UTC'; timezone=false;">UTC Timezone : UTC - 0</button>
- </li>
- </ul>
- </div>
- </div>
- </section>
- <!-- Filters -->
- <section class="row column">
- <!-- search -->
- <log-search-control></log-search-control>
- <!-- filters -->
- <log-filter></log-filter>
- </section> <!-- end filter -->
+ </section>
+ <!-- Filters -->
+ <section class="row column">
+ <!-- search -->
+ <log-search-control></log-search-control>
+ <!-- filters -->
+ <log-filter></log-filter>
+ </section>
+ <!-- end filter -->
- <section id="event-log__events" class="row column">
- <div id="event__actions-bar" class="row header__actions-bar no-margin">
- <div class="column small-1 large-1 event-log__col-check">
- <label class="control-check">
- <input type="checkbox" name="events__check-all" ng-model="all" ng-checked="((filteredLogs|filter:{selected: true}).length == filteredLogs.length) && filteredLogs.length != 0"/>
- <span class="control__indicator"></span>
- </label>
- </div>
- <div class="column small-11 end col-logged-events">
- <!-- top bar confirmation - ADD ACTIVE CLASS TO DISPLAY-->
- <div class="inline__confirm event__confirm" ng-class="{active: confirm}">
- <div class="inline__confirm-message">
- <p class="h3"><i></i>Are you sure you want to <strong class="ng-binding">delete {{selectedEvents.length}} logs</strong>?
- </p>
- </div>
- <div class="inline__confirm-buttons">
- <button class="btn-primary" ng-click="accept()">Yes</button>
- <button class="btn-primary" ng-click="confirm = false">No</button>
- </div>
- </div>
- <p class="inline" ng-show="selectedEvents.length"><span class="event__select-count">{{selectedEvents.length}}</span> Events are selected</p>
- <p class="inline" ng-hide="selectedEvents.length"><span class="event__select-count">{{filteredLogs.length}}</span> Events are logged</p>
- <!-- when logs are selected, this text changes to show how many logs are checked -->
- <div class="event__actions">
- <button class="inline btn-delete" ng-show="selectedEvents.length || all" ng-click="confirm= ! confirm">
- <img class="event__icon" src="../../assets/images/icon-trashcan-white.svg" alt="">Delete
- </button>
- <button class="inline btn-resolve" ng-class="{'disabled': ((selectedEvents|unResolvedCount) == 0)}" ng-show="selectedEvents.length || all" ng-click="resolve()" ng-disabled="(selectedEvents|unResolvedCount) == 0">
- <img class="event__icon" src="../../assets/images/icon-check-white.svg" alt="">Mark as resolved
- </button>
- <a ng-href="data:text/json;charset=utf-8,{{export_data}}" class="inline btn-export" download="{{export_name}}" ng-show="selectedEvents.length || all">Export</a>
- </div>
- </div>
+ <section id="event-log__events" class="row column">
+ <div id="event__actions-bar" class="row header__actions-bar no-margin">
+ <div class="column small-1 large-1 event-log__col-check">
+ <label class="control-check">
+ <input type="checkbox" name="events__check-all" ng-model="all" ng-checked="((filteredLogs|filter:{selected: true}).length == filteredLogs.length) && filteredLogs.length != 0"/>
+ <span class="control__indicator"></span>
+ </label>
+ </div>
+ <div class="column small-11 end col-logged-events">
+ <!-- top bar confirmation - ADD ACTIVE CLASS TO DISPLAY-->
+ <div class="inline__confirm event__confirm" ng-class="{active: confirm}">
+ <div class="inline__confirm-message">
+ <p class="h3"><i></i>Are you sure you want to <strong class="ng-binding">delete {{selectedEvents.length}} logs</strong>?
+ </p>
+ </div>
+ <div class="inline__confirm-buttons">
+ <button class="btn-primary" ng-click="accept()">Yes</button>
+ <button class="btn-primary" ng-click="confirm = false">No</button>
+ </div>
</div>
- <log-event
- dir-paginate="event in (filteredLogs = (logs|filter:filterBySeverity|filter:filterByStatus|filter:filterByDate|filter:filterBySearchTerms | orderBy:'-Id'))| itemsPerPage: itemsPerPage"
- event="event"
- tmz="tmz"
- multi-selected="selectedEvents.length > 1"
- >
- </log-event>
- <dir-pagination-controls></dir-pagination-controls>
- </section>
+ <p class="inline" ng-show="selectedEvents.length"><span class="event__select-count">{{selectedEvents.length}}</span> Events are selected</p>
+ <p class="inline" ng-hide="selectedEvents.length"><span class="event__select-count">{{filteredLogs.length}}</span> Events are logged</p>
+ <!-- when logs are selected, this text changes to show how many logs are checked -->
+ <div class="event__actions">
+ <button class="inline btn-delete" ng-show="selectedEvents.length || all" ng-click="confirm= ! confirm">
+ <img class="event__icon" src="../../assets/images/icon-trashcan-white.svg" alt="">Delete
+ </button>
+ <button class="inline btn-resolve" ng-class="{'disabled': ((selectedEvents|unResolvedCount) == 0)}" ng-show="selectedEvents.length || all" ng-click="resolve()" ng-disabled="(selectedEvents|unResolvedCount) == 0">
+ <img class="event__icon" src="../../assets/images/icon-check-white.svg" alt="">Mark as resolved
+ </button>
+ <a ng-href="data:text/json;charset=utf-8,{{export_data}}" class="inline btn-export" download="{{export_name}}" ng-show="selectedEvents.length || all">Export</a>
+ </div>
+ </div>
+ </div>
+ <log-event
+ dir-paginate="event in (filteredLogs = (logs|filter:filterBySeverity|filter:filterByStatus|filter:filterByDate|filter:filterBySearchTerms | orderBy:'-Id'))| itemsPerPage: itemsPerPage"
+ event="event"
+ tmz="tmz"
+ multi-selected="selectedEvents.length > 1"
+ >
+ </log-event>
+ <dir-pagination-controls></dir-pagination-controls>
+ </section>
</div> <!-- end event log -->
diff --git a/app/server-health/controllers/log-controller.js b/app/server-health/controllers/log-controller.js
index 5e6db6d..0303854 100644
--- a/app/server-health/controllers/log-controller.js
+++ b/app/server-health/controllers/log-controller.js
@@ -25,7 +25,7 @@
$scope.dataService = dataService;
$scope.logs = [];
$scope.filteredLogs = [];
- $scope.tmz = 'EDT';
+ $scope.tmz = '';
$scope.itemsPerPage = Constants.PAGINATION.LOG_ITEMS_PER_PAGE;
$scope.loading = false;
var expandedSelectedIdOnce = false;
@@ -69,6 +69,7 @@
dataService.updateServerHealth(result.data);
$scope.logs = result.data;
$scope.originalData = result.original;
+ $scope.selectUserTimezone();
$scope.loading = false;
});
};
@@ -159,6 +160,10 @@
$scope.export_data = JSON.stringify(data);
}
+ $scope.selectUserTimezone = function() {
+ $scope.tmz = new Date().toString().match(/\(([A-Za-z\s].*)\)/)[1];
+ };
+
$scope.accept = function() {
APIUtils.deleteLogs($scope.selectedEvents).then(function() {
$scope.confirm = false;