Skip to content

Commit

Permalink
#1672 Refine alert modal and case related alerts panel
Browse files Browse the repository at this point in the history
  • Loading branch information
nadouani committed Nov 19, 2020
1 parent 9888ed8 commit 87a10ff
Show file tree
Hide file tree
Showing 8 changed files with 74 additions and 53 deletions.
6 changes: 1 addition & 5 deletions frontend/app/scripts/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -411,11 +411,7 @@ angular.module('thehive', [
controller: 'CaseAlertsCtrl',
resolve: {
alerts: function($stateParams, CaseSrv) {
return CaseSrv.alerts({range: 'all'}, {
query: {
case: $stateParams.caseId
}
}).$promise;
return CaseSrv.alerts($stateParams.caseId);
}
},
guard: {
Expand Down
16 changes: 13 additions & 3 deletions frontend/app/scripts/controllers/SearchCtrl.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
(function() {
'use strict';
angular.module('theHiveControllers')
.controller('SearchCtrl', function($scope, $q, $stateParams, $uibModal, PSearchSrv, CaseTemplateSrv, CaseTaskSrv, NotificationSrv, EntitySrv, UserSrv, QueryBuilderSrv, GlobalSearchSrv, metadata) {
.controller('SearchCtrl', function($scope, $q, $stateParams, $uibModal, PSearchSrv, AlertingSrv, CaseTemplateSrv, CaseTaskSrv, NotificationSrv, EntitySrv, UserSrv, QueryBuilderSrv, GlobalSearchSrv, metadata) {
$scope.metadata = metadata;
$scope.toolbar = [
// {name: 'all', label: 'All', icon: 'glyphicon glyphicon-search'},
Expand Down Expand Up @@ -42,14 +42,24 @@
controllerAs: 'dialog',
size: 'max',
resolve: {
event: event,
event: function() {
return AlertingSrv.get(event.id);
},
templates: function() {
return CaseTemplateSrv.list();
},
readonly: true
}
}).result.then(function(/*response*/) {
})
.result
.then(function(/*response*/) {
$scope.searchResults.update();
})
.catch(function(err) {
if(err && !_.isString(err)) {
NotificationSrv.error('AlertPreview', err.data, err.status);
}

});
};

Expand Down
6 changes: 1 addition & 5 deletions frontend/app/scripts/controllers/alert/AlertEventCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,6 @@
AlertingSrv.get(eventId).then(function(data) {
self.event = data;
self.loading = false;

self.dataTypes = _.countBy(self.event.artifacts, function(attr) {
return attr.dataType;
});

}, function(response) {
self.loading = false;
NotificationSrv.error('AlertEventCtrl', response.data, response.status);
Expand Down Expand Up @@ -185,6 +180,7 @@

self.copyId = function(id) {
clipboard.copyText(id);
NotificationSrv.log('Alert ID has been copied to clipboard', 'success');
};

this.$onInit = function() {
Expand Down
11 changes: 9 additions & 2 deletions frontend/app/scripts/controllers/case/CaseAlertsCtrl.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
(function() {
'use strict';
angular.module('theHiveControllers').controller('CaseAlertsCtrl',
function($scope, $state, $stateParams, $uibModal, $timeout, CaseTabsSrv, VersionSrv, alerts) {
function($scope, $state, $stateParams, $uibModal, $timeout, CaseTabsSrv, VersionSrv, NotificationSrv, alerts) {
$scope.caseId = $stateParams.caseId;
$scope.alerts = alerts;
$scope.alertStats = [];
Expand Down Expand Up @@ -84,9 +84,16 @@
templates: function() {
//return CaseTemplateSrv.list();
return [];
},
},
readonly: true
}
})
.result
.catch(function(err) {
if(err && !_.isString(err)) {
NotificationSrv.error('AlertPreview', err.data, err.status);
}

});
};

Expand Down
15 changes: 5 additions & 10 deletions frontend/app/scripts/services/api/AlertingSrv.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
(function() {
'use strict';
angular.module('theHiveServices')
.factory('AlertingSrv', function($q, $http, $rootScope, StatSrv, StreamSrv, PSearchSrv, PaginatedQuerySrv, QuerySrv) {
.factory('AlertingSrv', function($q, $http, $rootScope, StatSrv, StreamSrv, PSearchSrv, PaginatedQuerySrv) {

var baseUrl = './api/alert';

Expand Down Expand Up @@ -144,15 +144,10 @@
},

get: function(alertId) {
return QuerySrv.call('v1', [{
'_name': 'getAlert',
'idOrName': alertId
}
], {
name: 'get-alert-' + alertId
}).then(function(response) {
return response[0];
});
return $http.get('./api/v1/alert/' + alertId)
.then(function(response) {
return response.data;
});
},

create: function(alertId, data) {
Expand Down
27 changes: 22 additions & 5 deletions frontend/app/scripts/services/api/CaseSrv.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@
url: './api/case/_search',
isArray: true
},
alerts: {
method: 'POST',
url: './api/alert/_search',
isArray: true
}
// alerts: {
// method: 'POST',
// url: './api/alert/_search',
// isArray: true
// }
});

this.get = resource.get;
Expand All @@ -48,6 +48,23 @@
this.merge = resource.merge;
this.query = resource.query;

this.alerts = function(id) {
var defer = $q.defer();

QuerySrv.call('v1', [{
'_name': 'getCase',
'idOrName': id
}, {'_name': 'alerts'}], {
name:'get-case-alerts' + id
}).then(function(response) {
defer.resolve(response);
}).catch(function(err){
defer.reject(err);
});

return defer.promise;
};

this.getById = function(id, withStats) {
var defer = $q.defer();

Expand Down
4 changes: 2 additions & 2 deletions frontend/app/views/partials/alert/event.dialog.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div class="modal-header bg-primary">
<h3 class="modal-title">
Alert Preview <span class="label label-default" ng-class="{'label-danger': !!!dialog.event.read}">{{dialog.event.read ? 'Ignored' : 'New'}}</span>
Alert Preview <span class="label label-default" ng-class="{'label-danger': !!!dialog.event.read}">{{dialog.event.caseId ? 'Imported' : 'New'}}</span>
</h3>
</div>
<div class="modal-body">
Expand All @@ -20,7 +20,7 @@ <h4 class="text-primary">
<div class="mt-xxs">
<span>
<strong><i class="fa fa-copy"></i> ID: </strong>
<span><a href ng-click="dialog.copyId(dialog.event._id)">{{dialog.event._id}}</a></span>
<span class="clickable"><a ng-click="dialog.copyId(dialog.event._id)">{{dialog.event._id}}</a></span>
</span>
<span class="ml-xxs">
<strong><i class="fa fa-calendar"></i> Date: </strong>
Expand Down
42 changes: 21 additions & 21 deletions frontend/app/views/partials/case/case.alerts.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
</div>
</div>

<table class="table table-striped case-list" ng-show="alerts.length > 0">
<table class="table tbody-stripped case-list" ng-show="alerts.length > 0">
<thead>
<tr>
<th width="150px">
Expand All @@ -40,22 +40,14 @@
<i ng-show="sorting.field === '-sourceRef'" class="fa fa-caret-down"></i>
</a>
</th>
<th width="80px">
<th width="160px">
<a href class="text-default" ng-click="sortBy('type')">
Type
<i ng-show="sorting.field !== '+type' && sorting.field !== '-type'" class="fa fa-sort"></i>
<i ng-show="sorting.field === '+type'" class="fa fa-caret-up"></i>
<i ng-show="sorting.field === '-type'" class="fa fa-caret-down"></i>
</a>
</th>
<th width="80px">
<a href class="text-default" ng-click="sortBy('status')">
Status
<i ng-show="sorting.field !== '+status' && sorting.field !== '-status'" class="fa fa-sort"></i>
<i ng-show="sorting.field === '+status'" class="fa fa-caret-up"></i>
<i ng-show="sorting.field === '-status'" class="fa fa-caret-down"></i>
</a>
</th>
<th>
<a href class="text-default" ng-click="sortBy('title')">
Title
Expand Down Expand Up @@ -94,8 +86,8 @@
<th style="width: 60px"></th>
</tr>
</thead>
<tbody>
<tr ng-repeat="event in filteredAlerts = (alerts | filter:filtering | orderBy:sorting.field)">
<tbody ng-repeat="event in filteredAlerts = (alerts | filter:filtering | orderBy:sorting.field)">
<tr>
<td class="wrap">
<strong>
<span>{{::event.sourceRef}}</span>
Expand All @@ -109,18 +101,10 @@
<td>
<span>{{::event.type}}</span>
</td>
<td>
<span class="label label-default" ng-class="{'label-danger': event.status==='New', 'label-warning': event.status === 'Updated'}" >{{::event.status}}</span>
</td>
<td class="wrap">
<div class="case-title">
<span>{{::event.title}}</span>
</div>
<div class="case-tags flexwrap mt-xxs">
<span class="mr-xxxs text-muted"><i class="fa fa-tags"></i></span>
<strong class="text-muted mr-xxxs" ng-if="!event.tags || event.tags.length === 0">None</strong>
<span ng-repeat="tag in event.tags track by $index" class="label label-primary mb-xxxs mr-xxxs pointer" ng-click="$vm.addFilterValue('tags', tag)">{{tag}}</span>
</div>
</td>
<td>{{::event.source}}</td>
<td class="text-center">
Expand All @@ -129,13 +113,29 @@
</div>
</td>
<td class="text-center">{{::event.artifacts.length || 0}}</td>
<td>{{event.date | showDate}}</td>
<td>{{event.date | shortDate}}</td>
<td>
<a class="btn btn-xs btn-icon btn-clear" href ng-click="previewEvent(event)" uib-tooltip="Preview">
<i class="text-info text-20 fa fa-file-text-o"></i>
</a>
</td>
</tr>
<tr>
<td colspan="7">
<div class="case-tags flexwrap">
<span class="mr-xxxs text-muted"><i class="fa fa-tags"></i></span>
<strong class="text-muted mr-xxxs" ng-if="!event.tags || event.tags.length === 0">None</strong>
<span ng-repeat="tag in event.tags track by $index" class="label label-primary mb-xxxs mr-xxxs pointer">{{tag}}</span>
</div>
</td>
<td></td>
</tr>
<tr>
<td colspan="7">
<custom-field-labels custom-fields="event.customFields"><custom-field-labels>
</td>
<td></td>
</tr>
</tbody>
</table>
</div>

0 comments on commit 87a10ff

Please sign in to comment.