Repository: eagle
Updated Branches:
  refs/heads/master 673a81e44 -> 368197f62


[EAGLE-970] Alert list page show alert trend

Alert list page show alert trend

Author: zombieJ <[email protected]>

Closes #889 from zombieJ/EAGLE-970.


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

Branch: refs/heads/master
Commit: 368197f622b83ab342f1e245b318815fb8a96df0
Parents: 673a81e
Author: zombieJ <[email protected]>
Authored: Wed Mar 22 10:26:36 2017 +0800
Committer: zombieJ <[email protected]>
Committed: Wed Mar 22 10:26:36 2017 +0800

----------------------------------------------------------------------
 .../webapp/app/dev/partials/alert/list.html     | 29 ++++-----------
 .../webapp/app/dev/public/js/ctrls/alertCtrl.js | 39 +++++++++++++++++++-
 .../public/js/services/compatibleEntitySrv.js   |  7 +++-
 3 files changed, 50 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/eagle/blob/368197f6/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 371248f..7781264 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
@@ -19,11 +19,12 @@
 <div class="box box-primary">
        <div class="box-header with-border">
                <span class="fa fa-bell"></span>
-               <h3 class="box-title">
-                       Alert Incidents
-               </h3>
+               <h3 class="box-title">Alert Incidents</h3>
        </div>
        <div class="box-body">
+               <div chart style="height: 200px;" series="alertTrend"></div>
+       </div>
+       <div class="box-footer">
                <div sort-table="alertList" is-sorting="isSorting">
                        <table class="table table-bordered">
                                <thead>
@@ -50,27 +51,8 @@
                                                        </span>
                                                </td>
                                                <td>{{item.tags.siteId}}</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>{{item.tags.category || 
"N/A"}}</td>
                                                <td><a 
ui-sref="alertDetail({siteId: site, alertId: item.tags.alertId, timestamp: 
item.timestamp})" title="{{item.alertBody}}">{{item.alertSubject}}</a></td>
-                                               <!--td>{{item.streamId}}</td-->
-                                               <!--td class="text-break">
-                                                       <span 
ng-if="displayType === 'raw'" na-block="item.alertData"></span>
-                                                       <div ng-if="displayType 
=== 'format'" na-block="!!item.alertData">
-                                                               <ul>
-                                                                       <li 
ng-repeat="(key, value) in item.alertData track by $index">
-                                                                               
<strong>{{key}}:</strong>
-                                                                               
{{value}}
-                                                                       </li>
-                                                               </ul>
-                                                       </div>
-                                               </td-->
                                                <td>
                                                        <a 
ui-sref="policyDetail({siteId: site, name: 
item.tags.policyId})">{{item.tags.policyId}}</a>
                                                </td>
@@ -82,4 +64,7 @@
                        </table>
                </div>
        </div>
+       <div class="overlay" ng-if="loading">
+               <i class="fa fa-refresh fa-spin"></i>
+       </div>
 </div>

http://git-wip-us.apache.org/repos/asf/eagle/blob/368197f6/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 88b44cd..743b4b6 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
@@ -19,12 +19,18 @@
 (function() {
        'use strict';
 
+       var colorMapping = {
+               WARNING: '#f39c12',
+               CRITICAL: '#dd4b39',
+               FATAL: '#dd4b39',
+               OK: '#00a65a'
+       };
        var eagleControllers = angular.module('eagleControllers');
 
        // 
======================================================================================
        // =                                        Alert                       
                =
        // 
======================================================================================
-       eagleControllers.controller('alertListCtrl', function ($scope, 
$wrapState, PageConfig, CompatibleEntity, Time) {
+       eagleControllers.controller('alertListCtrl', function ($q, $scope, 
$wrapState, PageConfig, CompatibleEntity, Time) {
                PageConfig.title = "Alert Incidents";
                $scope.site = $wrapState.param.siteId;
 
@@ -33,6 +39,7 @@
 
                function loadAlerts() {
                        $scope.loading = true;
+                       // Alert List
                        var list = CompatibleEntity.query("LIST", {
                                query: "AlertService",
                                condition: {siteId: $scope.site},
@@ -41,6 +48,36 @@
                        });
                        list._then(function () {
                                $scope.alertList = list;
+                       });
+
+                       // Alert Trend
+                       $scope.alertTrend = [];
+                       var alertTrend = CompatibleEntity.timeSeries({
+                               condition: { siteId: $scope.site },
+                               groups: 'severity',
+                               fields: ['count'],
+                               query: 'AlertService',
+                               startTime: new Time('startTime'),
+                               endTime: new Time('endTime'),
+                               limit: 100000,
+                       });
+                       alertTrend._promise.then(function () {
+                               $scope.alertTrend = $.map(alertTrend, function 
(series) {
+                                       var type = series.group.key[0];
+                                       return $.extend({}, series, {
+                                               name: type,
+                                               type: 'bar',
+                                               stack: 'severity',
+                                               itemStyle: {
+                                                       normal: {
+                                                               color: 
colorMapping[type],
+                                                       },
+                                               },
+                                       });
+                               });
+                       });
+
+                       $q.all([list._promise, 
alertTrend._promise]).then(function () {
                                $scope.loading = false;
                        });
                }

http://git-wip-us.apache.org/repos/asf/eagle/blob/368197f6/eagle-server/src/main/webapp/app/dev/public/js/services/compatibleEntitySrv.js
----------------------------------------------------------------------
diff --git 
a/eagle-server/src/main/webapp/app/dev/public/js/services/compatibleEntitySrv.js
 
b/eagle-server/src/main/webapp/app/dev/public/js/services/compatibleEntitySrv.js
index 405af81..dfc9158 100644
--- 
a/eagle-server/src/main/webapp/app/dev/public/js/services/compatibleEntitySrv.js
+++ 
b/eagle-server/src/main/webapp/app/dev/public/js/services/compatibleEntitySrv.js
@@ -109,6 +109,7 @@
 
                CompatibleEntity.QUERY_LIST = 
'/rest/entities?query=${query}[${condition}]{${fields}}&pageSize=${limit}';
                CompatibleEntity.QUERY_GROUPS = 
'/rest/entities?query=${query}[${condition}]<${groups}>{${fields}}&pageSize=${limit}';
+               CompatibleEntity.QUERY_GROUPS_INTERVAL = 
'/rest/entities?query=${query}[${condition}]<${groups}>{${fields}}${order}${top}&pageSize=${limit}&startTime=${startTime}&endTime=${endTime}&intervalmin=${intervalMin}&timeSeries=true';
                CompatibleEntity.QUERY_METRICS_INTERVAL = 
'/rest/entities?query=GenericMetricService[${condition}]<${groups}>{${fields}}${order}${top}&metricName=${metric}&pageSize=${limit}&startTime=${startTime}&endTime=${endTime}&intervalmin=${intervalMin}&timeSeries=true';
 
                CompatibleEntity.query = function (queryName, param) {
@@ -175,7 +176,7 @@
                        var intervalMin = param.intervalMin ? param.intervalMin 
: Time.diffInterval(startTime, endTime) / 1000 / 60;
                        var interval = intervalMin * 1000 * 60;
 
-                       var innerList = 
CompatibleEntity.query('METRICS_INTERVAL', $.extend({}, param, {
+                       var innerList = CompatibleEntity.query(param.metric ? 
'METRICS_INTERVAL' : 'GROUPS_INTERVAL', $.extend({}, param, {
                                groups: parseFields(param.groups).fields,
                                order: fields.order,
                                top: param.top ? "&top=" + param.top : "",
@@ -204,7 +205,9 @@
                                                                        x: 
startTimestamp + interval * index,
                                                                        y: value
                                                                };
-                                                       })
+                                                       }),
+
+                                                       group: group,
                                                };
                                        });
                                });

Reply via email to