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/configuration/controllers/date-time-controller.js b/app/configuration/controllers/date-time-controller.js
index aca4c4c..5d2459d 100644
--- a/app/configuration/controllers/date-time-controller.js
+++ b/app/configuration/controllers/date-time-controller.js
@@ -36,9 +36,10 @@
               // Don't care about milliseconds and don't want them displayed
               $scope.bmc.date.setMilliseconds(0);
               // https://stackoverflow.com/questions/1091372/getting-the-clients-timezone-in-javascript
-              // GMT-0400 (EDT)
+              // EDT (UTC - 04:00)
               $scope.bmc.timezone =
-                  $scope.bmc.date.toString().match(/([A-Z]+[\+-][0-9]+.*)/)[1];
+                  $scope.bmc.date.toString().match(/\(([A-Za-z\s].*)\)/)[1] +
+                  ' ' + createOffset($scope.bmc.date);
             }
             if (data.data[timePath + 'host'] &&
                 data.data[timePath + 'host'].hasOwnProperty('Elapsed')) {
@@ -184,6 +185,17 @@
         // microseconds.
         return APIUtils.setHostTime(time);
       }
+      function createOffset(date) {
+        // https://stackoverflow.com/questions/9149556/how-to-get-utc-offset-in-javascript-analog-of-timezoneinfo-getutcoffset-in-c
+        var sign = (date.getTimezoneOffset() > 0) ? '-' : '+';
+        var offset = Math.abs(date.getTimezoneOffset());
+        var hours = pad(Math.floor(offset / 60));
+        var minutes = pad(offset % 60);
+        return '(UTC' + sign + hours + ':' + minutes + ')';
+      }
+      function pad(value) {
+        return value < 10 ? '0' + value : value;
+      }
     }
   ]);
 })(angular);