Repository: incubator-eagle
Updated Branches:
  refs/heads/master 73642a4ee -> 4f4a7a3b3


[EAGLE-847] support timezone

Sync UI timezone with eagle server: '/rest/server/config' -> '/service/timezone'

timezone sample: 'UTC+8'

Author: zombieJ <[email protected]>

Closes #754 from zombieJ/EAGLE-847.


Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/4f4a7a3b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/4f4a7a3b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/4f4a7a3b

Branch: refs/heads/master
Commit: 4f4a7a3b349f005c4eae5642ba7ed8006235cf61
Parents: 73642a4
Author: zombieJ <[email protected]>
Authored: Thu Dec 22 16:40:22 2016 +0800
Committer: Hao Chen <[email protected]>
Committed: Thu Dec 22 16:40:22 2016 +0800

----------------------------------------------------------------------
 eagle-server/src/main/webapp/app/dev/index.html |  1 +
 .../app/dev/partials/integration/siteList.html  |  2 +-
 .../src/main/webapp/app/dev/public/js/app.js    |  7 +-
 .../app/dev/public/js/services/serverSrv.js     | 40 +++++++++
 .../app/dev/public/js/services/timeSrv.js       | 85 ++++++++++++--------
 5 files changed, 98 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/4f4a7a3b/eagle-server/src/main/webapp/app/dev/index.html
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/webapp/app/dev/index.html 
b/eagle-server/src/main/webapp/app/dev/index.html
index 47e1b76..ec0a76a 100644
--- a/eagle-server/src/main/webapp/app/dev/index.html
+++ b/eagle-server/src/main/webapp/app/dev/index.html
@@ -265,6 +265,7 @@
 
                <!-- Service -->
                <script src="public/js/services/main.js" type="text/javascript" 
charset="utf-8"></script>
+               <script src="public/js/services/serverSrv.js" 
type="text/javascript" charset="utf-8"></script>
                <script src="public/js/services/timeSrv.js" 
type="text/javascript" charset="utf-8"></script>
                <script src="public/js/services/pageSrv.js" 
type="text/javascript" charset="utf-8"></script>
                <script src="public/js/services/widgetSrv.js" 
type="text/javascript" charset="utf-8"></script>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/4f4a7a3b/eagle-server/src/main/webapp/app/dev/partials/integration/siteList.html
----------------------------------------------------------------------
diff --git 
a/eagle-server/src/main/webapp/app/dev/partials/integration/siteList.html 
b/eagle-server/src/main/webapp/app/dev/partials/integration/siteList.html
index ab29a79..6d2627c 100644
--- a/eagle-server/src/main/webapp/app/dev/partials/integration/siteList.html
+++ b/eagle-server/src/main/webapp/app/dev/partials/integration/siteList.html
@@ -23,7 +23,7 @@
                        <th>Site</th>
                        <th>Description</th>
                        <th>Enabled Apps</th>
-                       <th width="95">Actions</th>
+                       <th width="100">Actions</th>
                </tr>
                </thead>
                <tbody>

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/4f4a7a3b/eagle-server/src/main/webapp/app/dev/public/js/app.js
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/webapp/app/dev/public/js/app.js 
b/eagle-server/src/main/webapp/app/dev/public/js/app.js
index 87cae11..e1f5b77 100644
--- a/eagle-server/src/main/webapp/app/dev/public/js/app.js
+++ b/eagle-server/src/main/webapp/app/dev/public/js/app.js
@@ -57,6 +57,10 @@ var app = {};
                                // TODO: need auth module
                        }
 
+                       resolve.Server = function (Server) {
+                               return Server.getPromise();
+                       };
+
                        resolve.Site = function (Site) {
                                return Site.getPromise(config);
                        };
@@ -256,8 +260,9 @@ var app = {};
                // 
======================================================================================
                // =                                   Main Controller          
                        =
                // 
======================================================================================
-               eagleApp.controller('MainCtrl', function ($scope, $wrapState, 
$urlRouter, PageConfig, Portal, Widget, Entity, CompatibleEntity, Site, 
Application, UI, Time, Policy) {
+               eagleApp.controller('MainCtrl', function ($scope, $wrapState, 
$urlRouter, Server, PageConfig, Portal, Widget, Entity, CompatibleEntity, Site, 
Application, UI, Time, Policy) {
                        window._WrapState = $scope.$wrapState = $wrapState;
+                       window._Server = $scope.Server = Server;
                        window._PageConfig = $scope.PageConfig = PageConfig;
                        window._Portal = $scope.Portal = Portal;
                        window._Widget = $scope.Widget = Widget;

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/4f4a7a3b/eagle-server/src/main/webapp/app/dev/public/js/services/serverSrv.js
----------------------------------------------------------------------
diff --git 
a/eagle-server/src/main/webapp/app/dev/public/js/services/serverSrv.js 
b/eagle-server/src/main/webapp/app/dev/public/js/services/serverSrv.js
new file mode 100644
index 0000000..334cb79
--- /dev/null
+++ b/eagle-server/src/main/webapp/app/dev/public/js/services/serverSrv.js
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+       'use strict';
+
+       var serviceModule = angular.module('eagle.service');
+
+       serviceModule.service('Server', function($q, $wrapState, Entity) {
+               var Server = {
+                       config: {},
+               };
+
+               var serverPromise = 
Entity.query('server/config')._then(function (res) {
+                       Server.config = res.data;
+                       return Server;
+               });
+
+               Server.getPromise = function () {
+                       return serverPromise;
+               };
+
+               return Server;
+       });
+}());

http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/4f4a7a3b/eagle-server/src/main/webapp/app/dev/public/js/services/timeSrv.js
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/webapp/app/dev/public/js/services/timeSrv.js 
b/eagle-server/src/main/webapp/app/dev/public/js/services/timeSrv.js
index 2c8e168..552d452 100644
--- a/eagle-server/src/main/webapp/app/dev/public/js/services/timeSrv.js
+++ b/eagle-server/src/main/webapp/app/dev/public/js/services/timeSrv.js
@@ -30,7 +30,7 @@
        var keepTime = false;
        var serviceModule = angular.module('eagle.service');
 
-       serviceModule.service('Time', function($q, $wrapState) {
+       serviceModule.service('Time', function($q, $wrapState, Server) {
                var startTime, endTime;
                var reloadListenerList = [];
 
@@ -100,12 +100,26 @@
                $Time.autoRefresh = false;
                $Time._reloadListenerList = reloadListenerList;
 
-               // TODO: time zone
                $Time.UTC_OFFSET = 0;
 
                $Time.FORMAT = "YYYY-MM-DD HH:mm:ss";
                $Time.SHORT_FORMAT = "MM-DD HH:mm";
 
+               // UTC sync
+               Server.getPromise().then(function () {
+                       var timezone = Server.config.service.timezone || "";
+                       try {
+                               var match = 
timezone.match(/^(UTC|GMT)([+-]\d+)?$/);
+                               if (match) {
+                                       $Time.UTC_OFFSET = Number(match[2] || 
0) * 60;
+                               } else {
+                                       console.warn('Timezone parse failed:', 
timezone);
+                               }
+                       } catch (err) {
+                               console.error('Timezone not support:', 
timezone, err);
+                       }
+               });
+
                $Time.format = function (time, format) {
                        time = $Time(time);
                        return time ? time.format(format || $Time.FORMAT) : "-";
@@ -237,44 +251,45 @@
 
                $Time.getPromise = function (config, state, param) {
                        var deferred = $q.defer();
-
                        var timeConfig = typeof config.time === true ? {} : 
config.time;
 
-                       // Ignore time update if customise time set.
-                       if(keepTime) {
-                               // Update auto refresh mark if time is 
generated from promise
-                               if(autoGenerateTime && timeConfig) {
-                                       $Time.autoRefresh = 
timeConfig.autoRefresh;
-                               }
-
-                               autoGenerateTime = false;
-                               keepTime = false;
-                               deferred.resolve($Time);
-                       } else {
-                               if (timeConfig) {
-                                       $Time.pickerType = timeConfig.type || 
$Time.TIME_RANGE_PICKER;
-
-                                       startTime = 
$Time.verifyTime(param.startTime);
-                                       endTime = 
$Time.verifyTime(param.endTime);
-
-                                       if (!startTime || !endTime) {
-                                               endTime = $Time();
-                                               startTime = 
endTime.clone().subtract(2, "hour");
-
-                                               autoGenerateTime = true;
-                                               keepTime = true;
-                                               $Time._innerSearch = {
-                                                       startTime: 
$Time.format(startTime),
-                                                       endTime: 
$Time.format(endTime)
-                                               };
+                       Server.getPromise().then(function () {
+                               // Ignore time update if customise time set.
+                               if(keepTime) {
+                                       // Update auto refresh mark if time is 
generated from promise
+                                       if(autoGenerateTime && timeConfig) {
+                                               $Time.autoRefresh = 
timeConfig.autoRefresh;
                                        }
+
+                                       autoGenerateTime = false;
+                                       keepTime = false;
+                                       deferred.resolve($Time);
                                } else {
-                                       $Time._innerSearch = null;
-                                       $Time.pickerType = null;
-                                       $Time.autoRefresh = false;
+                                       if (timeConfig) {
+                                               $Time.pickerType = 
timeConfig.type || $Time.TIME_RANGE_PICKER;
+
+                                               startTime = 
$Time.verifyTime(param.startTime);
+                                               endTime = 
$Time.verifyTime(param.endTime);
+
+                                               if (!startTime || !endTime) {
+                                                       endTime = $Time();
+                                                       startTime = 
endTime.clone().subtract(2, "hour");
+
+                                                       autoGenerateTime = true;
+                                                       keepTime = true;
+                                                       $Time._innerSearch = {
+                                                               startTime: 
$Time.format(startTime),
+                                                               endTime: 
$Time.format(endTime)
+                                                       };
+                                               }
+                                       } else {
+                                               $Time._innerSearch = null;
+                                               $Time.pickerType = null;
+                                               $Time.autoRefresh = false;
+                                       }
+                                       deferred.resolve($Time);
                                }
-                               deferred.resolve($Time);
-                       }
+                       });
 
                        return deferred.promise;
                };

Reply via email to