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; };
