Repository: incubator-eagle Updated Branches: refs/heads/master e39c76ce8 -> 3595f29dc
[EAGLE-725] Update timeSrv logic & policy detail * Fix timeSrv logic * Update policy detail page Author: zombieJ <smith3...@gmail.com> Closes #604 from zombieJ/EAGLE-725. Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/3595f29d Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/3595f29d Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/3595f29d Branch: refs/heads/master Commit: 3595f29dc800a52cc6b8932a1fa3bc7a5a660c8b Parents: e39c76c Author: zombieJ <smith3...@gmail.com> Authored: Thu Nov 3 17:37:20 2016 +0800 Committer: zombieJ <smith3...@gmail.com> Committed: Thu Nov 3 17:37:20 2016 +0800 ---------------------------------------------------------------------- .../app/dev/partials/alert/policyDetail.html | 21 ++-- .../app/dev/partials/alert/policyList.html | 2 - .../src/main/webapp/app/dev/public/css/main.css | 4 + .../src/main/webapp/app/dev/public/js/app.js | 9 +- .../webapp/app/dev/public/js/ctrls/alertCtrl.js | 101 +++++++++++++------ .../app/dev/public/js/services/timeSrv.js | 35 +++---- .../app/dev/public/js/services/wrapStateSrv.js | 5 +- eagle-server/src/main/webapp/app/package.json | 2 +- 8 files changed, 110 insertions(+), 69 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/3595f29d/eagle-server/src/main/webapp/app/dev/partials/alert/policyDetail.html ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/partials/alert/policyDetail.html b/eagle-server/src/main/webapp/app/dev/partials/alert/policyDetail.html index 5173d65..d504d1e 100644 --- a/eagle-server/src/main/webapp/app/dev/partials/alert/policyDetail.html +++ b/eagle-server/src/main/webapp/app/dev/partials/alert/policyDetail.html @@ -22,15 +22,13 @@ <li><a href="#definition" data-toggle="tab">Definition</a></li> <li><a href="#publisher" data-toggle="tab">Publisher</a></li> - <li class="pull-right tab-sm"> - <a class="fa fa-edit" ui-sref="policyEdit({name: policy.name})"></a> - </li> - <li class="pull-right tab-xs"> - <a> - <span class="label" ng-class="{'label-default': policy.policyStatus !== 'ENABLED', 'label-success': policy.policyStatus === 'ENABLED'}"> - {{policy.policyStatus}} - </span> - </a> + <li class="box-tools pull-right"> + <div class="btn-group"> + <button class="btn btn-default fa fa-play" ng-click="startPolicy()" ng-if="policy.policyStatus !== 'ENABLED'"></button> + <button class="btn btn-default fa fa-square" ng-click="stopPolicy()" ng-if="policy.policyStatus === 'ENABLED'"></button> + <a class="btn btn-default fa fa-pencil" ui-sref="policyEdit({name: policy.name})"></a> + <button class="btn btn-danger fa fa-trash" ng-click="deletePolicy()"></button> + </div> </li> </ul> <div class="tab-content"> @@ -39,7 +37,10 @@ <tbody> <tr> <th>Name</th> - <td>{{policy.name}}</td> + <td> + <span class="fa fa-square" ng-class="policy.policyStatus === 'ENABLED' ? 'text-green' : 'text-muted'"></span> + {{policy.name}} + </td> <th>Parallelism Hint</th> <td>{{policy.parallelismHint}}</td> </tr> http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/3595f29d/eagle-server/src/main/webapp/app/dev/partials/alert/policyList.html ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/partials/alert/policyList.html b/eagle-server/src/main/webapp/app/dev/partials/alert/policyList.html index 46bf082..a52c51f 100644 --- a/eagle-server/src/main/webapp/app/dev/partials/alert/policyList.html +++ b/eagle-server/src/main/webapp/app/dev/partials/alert/policyList.html @@ -30,7 +30,6 @@ <tr> <th sortpath="policyStatus" width="10"></th> <th sortpath="name" width="20%">Name</th> - <th sortpath="definition.type" width="70">Type</th> <th>Description</th> <th width="85">Action</th> </tr> @@ -43,7 +42,6 @@ <td> <a ui-sref="policyDetail({name: item.name})">{{item.name}}</a> </td> - <td class="text-center"><span class="label label-primary">{{item.definition.type}}</span></td> <td>{{item.description}}</td> <td class="text-center"> <div class="btn-group btn-group-xs"> http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/3595f29d/eagle-server/src/main/webapp/app/dev/public/css/main.css ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/public/css/main.css b/eagle-server/src/main/webapp/app/dev/public/css/main.css index a282d93..8da7c5f 100644 --- a/eagle-server/src/main/webapp/app/dev/public/css/main.css +++ b/eagle-server/src/main/webapp/app/dev/public/css/main.css @@ -287,6 +287,10 @@ ul.stepGuide li > .title { padding-right: 0; } +.nav-tabs-custom > .nav-tabs > li.box-tools { + padding: 4px 2px 0 0; +} + /* ======================================================================== * = Modal = * ======================================================================== */ http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/3595f29d/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 ca5c6ef..55a6eb6 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 @@ -296,7 +296,14 @@ var app = {}; } }); - $scope.$on('$stateChangeSuccess ', function (event) { + $scope.$on('$stateChangeSuccess', function (event) { + var _innerSearch = Time._innerSearch; + Time._innerSearch = null; + if(_innerSearch) { + setTimeout(function () { + $wrapState.go(".", $.extend({}, $wrapState.param, _innerSearch), {location: "replace", notify: false}); + }, 0); + } console.log("[Switch] done ->", event); }); http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/3595f29d/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertCtrl.js ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertCtrl.js b/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertCtrl.js index 6c3b930..c33c9ff 100644 --- a/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertCtrl.js +++ b/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertCtrl.js @@ -21,6 +21,35 @@ var eagleControllers = angular.module('eagleControllers'); + var serviceModule = angular.module('eagle.service'); + + serviceModule.service('Policy', function($q, UI, Entity) { + return { + delete: function (policy) { + var deferred = $q.defer(); + + UI.deleteConfirm(policy.name)(function (entity, closeFunc) { + Entity.deleteMetadata("policies/" + policy.name)._promise.finally(function () { + closeFunc(); + deferred.resolve(); + }); + }, function () { + deferred.reject(); + }); + + return deferred.promise; + }, + + start: function (policy) { + return Entity.post("metadata/policies/" + encodeURIComponent(policy.name) + "/status/ENABLED", {})._promise; + }, + + stop: function (policy) { + return Entity.post("metadata/policies/" + encodeURIComponent(policy.name) + "/status/DISABLED", {})._promise; + } + }; + }); + // ====================================================================================== // = Alert = // ====================================================================================== @@ -74,7 +103,7 @@ // ====================================================================================== // = Policy = // ====================================================================================== - eagleControllers.controller('policyListCtrl', function ($scope, $wrapState, PageConfig, Entity, UI) { + eagleControllers.controller('policyListCtrl', function ($scope, $wrapState, PageConfig, Entity, Policy) { PageConfig.title = "Policies"; $scope.policyList = []; @@ -87,29 +116,20 @@ } updateList(); - $scope.deletePolicy = function (item) { - UI.deleteConfirm(item.name)(function (entity, closeFunc) { - Entity.deleteMetadata("policies/" + item.name)._promise.finally(function () { - closeFunc(); - updateList(); - }); - }); + $scope.deletePolicy = function(policy) { + Policy.delete(policy).then(updateList); }; - $scope.startPolicy = function (policy) { - Entity - .post("metadata/policies/" + encodeURIComponent(policy.name) + "/status/ENABLED", {}) - ._then(updateList); + $scope.startPolicy = function(policy) { + Policy.start(policy).then(updateList); }; - $scope.stopPolicy = function (policy) { - Entity - .post("metadata/policies/" + encodeURIComponent(policy.name) + "/status/DISABLED", {}) - ._then(updateList); + $scope.stopPolicy = function(policy) { + Policy.stop(policy).then(updateList); }; }); - eagleControllers.controller('policyDetailCtrl', function ($scope, $wrapState, PageConfig, Entity, UI) { + eagleControllers.controller('policyDetailCtrl', function ($scope, $wrapState, PageConfig, Entity, Policy) { PageConfig.title = $wrapState.param.name; PageConfig.subTitle = "Detail"; PageConfig.navPath = [ @@ -117,21 +137,38 @@ {title: "Detail"} ]; - var policyList = Entity.queryMetadata("policies/" + encodeURIComponent($wrapState.param.name)); - policyList._promise.then(function () { - $scope.policy = policyList[0]; - console.log("[Policy]", $scope.policy); + function updatePolicy() { + var policyList = Entity.queryMetadata("policies/" + encodeURIComponent($wrapState.param.name)); + policyList._promise.then(function () { + $scope.policy = policyList[0]; + console.log("[Policy]", $scope.policy); + + if(!$scope.policy) { + $.dialog({ + title: "OPS", + content: "Policy '" + $wrapState.param.name + "' not found!" + }, function () { + $wrapState.go("policyList"); + }); + } else { + $scope.publisherList = Entity.queryMetadata("policies/" + encodeURIComponent($scope.policy.name) + "/publishments"); + } + }); + } + updatePolicy(); - if(!$scope.policy) { - $.dialog({ - title: "OPS", - content: "Policy '" + $wrapState.param.name + "' not found!" - }, function () { - $wrapState.go("policyList"); - }); - } else { - $scope.publisherList = Entity.queryMetadata("policies/" + encodeURIComponent($scope.policy.name) + "/publishments"); - } - }); + $scope.deletePolicy = function() { + Policy.delete($scope.policy).then(function () { + $wrapState.go("policyList"); + }); + }; + + $scope.startPolicy = function() { + Policy.start($scope.policy).then(updatePolicy); + }; + + $scope.stopPolicy = function() { + Policy.stop($scope.policy).then(updatePolicy); + }; }); }()); http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/3595f29d/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 a80de86..c8f367d 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 @@ -233,7 +233,6 @@ common.string.preFill(s, "0"); }; - var promiseLock = false; $Time.getPromise = function (config, state, param) { var deferred = $q.defer(); @@ -244,29 +243,21 @@ if (config.time === true) { $Time.pickerType = $Time.TIME_RANGE_PICKER; - if (!promiseLock) { - startTime = $Time.verifyTime(param.startTime); - endTime = $Time.verifyTime(param.endTime); - - if (!startTime || !endTime) { - endTime = $Time(); - startTime = endTime.clone().subtract(2, "hour"); - - setTimeout(function () { - promiseLock = true; - keepTime = true; - $wrapState.go(state.name, $.extend({}, param, { - startTime: $Time.format(startTime), - endTime: $Time.format(endTime) - }), {location: "replace", notify: false}); - - setTimeout(function () { - promiseLock = false; - }, 150); - }, 100); - } + startTime = $Time.verifyTime(param.startTime); + endTime = $Time.verifyTime(param.endTime); + + if (!startTime || !endTime) { + endTime = $Time(); + startTime = endTime.clone().subtract(2, "hour"); + + keepTime = true; + $Time._innerSearch = { + startTime: $Time.format(startTime), + endTime: $Time.format(endTime) + }; } } else { + $Time._innerSearch = null; $Time.pickerType = null; } deferred.resolve($Time); http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/3595f29d/eagle-server/src/main/webapp/app/dev/public/js/services/wrapStateSrv.js ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/public/js/services/wrapStateSrv.js b/eagle-server/src/main/webapp/app/dev/public/js/services/wrapStateSrv.js index 43e8cc2..fc62857 100644 --- a/eagle-server/src/main/webapp/app/dev/public/js/services/wrapStateSrv.js +++ b/eagle-server/src/main/webapp/app/dev/public/js/services/wrapStateSrv.js @@ -106,7 +106,7 @@ } }, - // Parameter + // State state: { get: function() { return $state; @@ -114,6 +114,9 @@ } }); + $wrapState.search = $location.search.bind($location); + $wrapState.$location = $location; + return $wrapState; }); })(); http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/3595f29d/eagle-server/src/main/webapp/app/package.json ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/package.json b/eagle-server/src/main/webapp/app/package.json index a2d0dab..6df70d8 100644 --- a/eagle-server/src/main/webapp/app/package.json +++ b/eagle-server/src/main/webapp/app/package.json @@ -20,7 +20,7 @@ "angular-resource": "1.5.0", "angular-route": "1.5.0", "angular-ui-bootstrap": "1.1.2", - "angular-ui-router": "~0.2.18", + "angular-ui-router": "0.3.1", "bootstrap": "3.3.6", "d3": "3.5.16", "echarts": "^3.2.3",