You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eagle.apache.org by ji...@apache.org on 2016/10/28 06:29:52 UTC
incubator-eagle git commit: [EAGLE-688] UI support Alert display
Repository: incubator-eagle
Updated Branches:
refs/heads/master 2e5cb719c -> ab1c9b64f
[EAGLE-688] UI support Alert display
For backend will provide the alert api. UI will also support it.
Author: zombieJ <sm...@gmail.com>
Closes #576 from zombieJ/EAGLE-688.
Project: http://git-wip-us.apache.org/repos/asf/incubator-eagle/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-eagle/commit/ab1c9b64
Tree: http://git-wip-us.apache.org/repos/asf/incubator-eagle/tree/ab1c9b64
Diff: http://git-wip-us.apache.org/repos/asf/incubator-eagle/diff/ab1c9b64
Branch: refs/heads/master
Commit: ab1c9b64f6aec62d43e26dca2417e967b7740543
Parents: 2e5cb71
Author: zombieJ <sm...@gmail.com>
Authored: Fri Oct 28 14:29:43 2016 +0800
Committer: zombieJ <sm...@gmail.com>
Committed: Fri Oct 28 14:29:43 2016 +0800
----------------------------------------------------------------------
.../webapp/app/dev/partials/alert/detail.html | 63 +++++++++++++++
.../webapp/app/dev/partials/alert/list.html | 80 +++++++++++++++-----
.../webapp/app/dev/partials/alert/main.html | 2 +-
.../src/main/webapp/app/dev/public/js/app.js | 6 ++
.../webapp/app/dev/public/js/ctrls/alertCtrl.js | 29 ++++++-
.../app/dev/public/js/ctrls/alertEditCtrl.js | 7 +-
.../dev/public/js/services/applicationSrv.js | 8 +-
.../app/dev/public/js/services/entitySrv.js | 37 ++++++---
.../app/dev/public/js/services/pageSrv.js | 2 +-
9 files changed, 195 insertions(+), 39 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab1c9b64/eagle-server/src/main/webapp/app/dev/partials/alert/detail.html
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/webapp/app/dev/partials/alert/detail.html b/eagle-server/src/main/webapp/app/dev/partials/alert/detail.html
new file mode 100644
index 0000000..7aac11e
--- /dev/null
+++ b/eagle-server/src/main/webapp/app/dev/partials/alert/detail.html
@@ -0,0 +1,63 @@
+<!--
+ 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.
+ -->
+
+<div class="box box-primary">
+ <div class="box-header with-border">
+ <span class="fa fa-bell"></span>
+ <h3 class="box-title">
+ ID: {{alert.alertId}}
+ <span class="fa fa-refresh fa-spin no-animate" ng-show="!alertList._done"></span>
+ </h3>
+ </div>
+ <div class="box-body">
+ <table class="table">
+ <tbody>
+ <tr>
+ <th width="15%">Policy</th>
+ <td width="35%"><a ui-sref="policyDetail({name: item.policyId})">{{alert.policyId}}</a></td>
+ <th width="15%">Id</th>
+ <td width="35%">{{alert.alertId}}</td>
+ </tr>
+ <tr>
+ <th>Site</th>
+ <td>{{alert.siteId}}</td>
+ <th>Time</th>
+ <td>{{Time.format(alert.alertTimestamp)}}</td>
+ </tr>
+ <tr>
+ <th>Stream</th>
+ <td>{{alert.streamId}}</td>
+ <th>Applications</th>
+ <td>
+ <ul class="list-unstyled">
+ <li ng-repeat="app in alert.appIds track by $index" class="label label-sm label-primary">
+ {{Application.findProvider(app).type || app}}
+ </li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <th>Alert Content</th>
+ <td colspan="3">
+ <pre>{{alert.alertData | json}}</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab1c9b64/eagle-server/src/main/webapp/app/dev/partials/alert/list.html
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/webapp/app/dev/partials/alert/list.html b/eagle-server/src/main/webapp/app/dev/partials/alert/list.html
index d493976..182f749 100644
--- a/eagle-server/src/main/webapp/app/dev/partials/alert/list.html
+++ b/eagle-server/src/main/webapp/app/dev/partials/alert/list.html
@@ -1,21 +1,59 @@
-<!--
- 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.
- -->
-
-<div class="box-body">
- Good!
-</div>
\ No newline at end of file
+<!--
+ 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.
+ -->
+
+<div class="box-body">
+ <div sort-table="alertList" is-sorting="isSorting">
+ <table class="table table-bordered">
+ <thead>
+ <tr>
+ <th sortpath="alertTimestamp" width="135">
+ Alert Time
+ <span class="fa fa-refresh fa-spin no-animate" ng-show="!alertList._done || isSorting"></span>
+ </th>
+ <th sortpath="siteId" width="75">Site</th>
+ <th sortpath="policyId" width="75">Policy</th>
+ <!--th sortpath="streamId" width="75">Stream</th-->
+ <th width="100">Application</th>
+ <th>Alert Data</th>
+ <th width="10"></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{Time.format(item.alertTimestamp)}}</td>
+ <td>{{item.siteId}}</td>
+ <td>
+ <a ui-sref="policyDetail({name: item.policyId})">{{item.policyId}}</a>
+ </td>
+ <!--td>{{item.streamId}}</td-->
+ <td>
+ <ul class="list-unstyled">
+ <li ng-repeat="app in item.appIds track by $index" class="label label-sm label-primary">
+ {{Application.findProvider(app).type || app}}
+ </li>
+ </ul>
+ </td>
+ <td class="text-break">{{item.alertData}}</td>
+ <td>
+ <a ui-sref="alertDetail({alertId: item.alertId})">Detail</a>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+</div>
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab1c9b64/eagle-server/src/main/webapp/app/dev/partials/alert/main.html
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/webapp/app/dev/partials/alert/main.html b/eagle-server/src/main/webapp/app/dev/partials/alert/main.html
index 83db262..5d35893 100644
--- a/eagle-server/src/main/webapp/app/dev/partials/alert/main.html
+++ b/eagle-server/src/main/webapp/app/dev/partials/alert/main.html
@@ -18,7 +18,7 @@
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
- <!--li ng-class="{active: getState() === 'alert.list'}"><a href="#/alert/">Alerts</a></li-->
+ <li ng-class="{active: getState() === 'alert.list'}"><a href="#/alert/">Alerts</a></li>
<li ng-class="{active: getState() === 'alert.policyList'}"><a href="#/alert/policyList">Policies</a></li>
<li ng-class="{active: getState() === 'alert.streamList'}"><a href="#/alert/streamList">Streams</a></li>
</ul>
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab1c9b64/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 9b46e65..67b8487 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
@@ -155,6 +155,12 @@ var app = {};
resolve: routeResolve()
})
+ .state('alertDetail', {
+ url: "/alertDetail/{alertId}",
+ templateUrl: "partials/alert/detail.html?_=" + window._TRS(),
+ controller: "alertDetailCtrl",
+ resolve: routeResolve()
+ })
.state('policyDetail', {
url: "/policyDetail/{name}",
templateUrl: "partials/alert/policyDetail.html?_=" + window._TRS(),
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab1c9b64/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 e52fc3c..ed3ca74 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
@@ -34,8 +34,33 @@
// ======================================================================================
// = Alert =
// ======================================================================================
- eagleControllers.controller('alertListCtrl', function ($scope, $wrapState, PageConfig) {
+ eagleControllers.controller('alertListCtrl', function ($scope, $wrapState, $interval, PageConfig, Entity) {
PageConfig.subTitle = "Explore Alerts";
+
+ $scope.alertList = Entity.queryMetadata("alerts", {size: 10000});
+
+ // ================================================================
+ // = Sync =
+ // ================================================================
+ var refreshInterval = $interval($scope.alertList._refresh, 1000 * 10);
+ $scope.$on('$destroy', function() {
+ $interval.cancel(refreshInterval);
+ });
+ });
+
+ eagleControllers.controller('alertDetailCtrl', function ($scope, $wrapState, PageConfig, Entity) {
+ PageConfig.title = "Alert Detail";
+
+ $scope.alertList = Entity.queryMetadata("alerts/" + encodeURIComponent($wrapState.param.alertId));
+ $scope.alertList._then(function () {
+ $scope.alert = $scope.alertList[0];
+ if(!$scope.alert) {
+ $.dialog({
+ title: "OPS",
+ content: "Alert '" + $wrapState.param.alertId + "' not found!"
+ });
+ }
+ });
});
// ======================================================================================
@@ -77,7 +102,7 @@
UI.deleteConfirm(item.name)(function (entity, closeFunc) {
Entity.deleteMetadata("policies/" + item.name)._promise.finally(function () {
closeFunc();
- $scope.policyList._refresh();
+ updateList();
});
});
};
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab1c9b64/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertEditCtrl.js
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertEditCtrl.js b/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertEditCtrl.js
index 3629651..8b7d041 100644
--- a/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertEditCtrl.js
+++ b/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertEditCtrl.js
@@ -36,7 +36,12 @@
name: "Slack",
displayFields: ["channels"],
fields: ["token", "channels", "severitys", "urltemplate"]
- }
+ },
+ 'org.apache.eagle.alert.engine.publisher.impl.AlertEagleStorePlugin': {
+ name: "Storage",
+ displayFields: [],
+ fields: []
+ },
};
// ======================================================================================
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab1c9b64/eagle-server/src/main/webapp/app/dev/public/js/services/applicationSrv.js
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/webapp/app/dev/public/js/services/applicationSrv.js b/eagle-server/src/main/webapp/app/dev/public/js/services/applicationSrv.js
index 31c6fb6..9e58a8a 100644
--- a/eagle-server/src/main/webapp/app/dev/public/js/services/applicationSrv.js
+++ b/eagle-server/src/main/webapp/app/dev/public/js/services/applicationSrv.js
@@ -58,7 +58,13 @@
});
Application.findProvider = function (type) {
- return common.array.find(type, Application.providerList, ["type"]);
+ var provider = common.array.find(type, Application.providerList, ["type"]);
+ if(provider) return provider;
+
+ var app = common.array.find(type, Application.list, ["appId"]);
+ if(!app || !app.descriptor) return null;
+
+ return common.array.find(app.descriptor.type, Application.providerList, ["type"]);
};
Application.getPromise = function () {
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab1c9b64/eagle-server/src/main/webapp/app/dev/public/js/services/entitySrv.js
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/webapp/app/dev/public/js/services/entitySrv.js b/eagle-server/src/main/webapp/app/dev/public/js/services/entitySrv.js
index 9dfba86..986e0d1 100644
--- a/eagle-server/src/main/webapp/app/dev/public/js/services/entitySrv.js
+++ b/eagle-server/src/main/webapp/app/dev/public/js/services/entitySrv.js
@@ -59,10 +59,12 @@
return _host;
};
- Entity.query = function (url) {
+ Entity.query = function (url, param) {
var list = [];
list._refresh = function () {
- return wrapList(list, $http.get(_host + "/rest/" + url));
+ var config = {};
+ if(param) config.params = param;
+ return wrapList(list, $http.get(_host + "/rest/" + url, config));
};
return list._refresh();
@@ -118,17 +120,28 @@
};
// TODO: metadata will be removed
- Entity.queryMetadata = function (url) {
- var metaList = Entity.query('metadata/' + url);
- metaList._then(function (res) {
- var data = res.data;
- if(!$.isArray(data)) {
- data = [data];
- }
+ Entity.queryMetadata = function (url, param) {
+ var metaList = Entity.query('metadata/' + url, param);
+ var _refresh = metaList._refresh;
+
+ function process() {
+ metaList._then(function (res) {
+ var data = res.data;
+ if(!$.isArray(data)) {
+ data = [data];
+ }
+
+ metaList.splice(0);
+ Array.prototype.push.apply(metaList, data);
+ });
+ }
- metaList.splice(0);
- Array.prototype.push.apply(metaList, data);
- });
+ metaList._refresh = function () {
+ _refresh();
+ process();
+ };
+
+ process();
return metaList;
};
http://git-wip-us.apache.org/repos/asf/incubator-eagle/blob/ab1c9b64/eagle-server/src/main/webapp/app/dev/public/js/services/pageSrv.js
----------------------------------------------------------------------
diff --git a/eagle-server/src/main/webapp/app/dev/public/js/services/pageSrv.js b/eagle-server/src/main/webapp/app/dev/public/js/services/pageSrv.js
index 6327e22..be3281b 100644
--- a/eagle-server/src/main/webapp/app/dev/public/js/services/pageSrv.js
+++ b/eagle-server/src/main/webapp/app/dev/public/js/services/pageSrv.js
@@ -53,7 +53,7 @@
var defaultPortalList = [
{name: "Home", icon: "home", path: "#/"},
{name: "Alert", icon: "bell", showFunc: checkApplication, list: [
- // {name: "Explore Alerts", path: "#/alert/"},
+ {name: "Alerts", path: "#/alert/"},
{name: "Policies", path: "#/alert/policyList"},
{name: "Streams", path: "#/alert/streamList"},
{name: "Define Policy", path: "#/alert/policyCreate"}