Skip to content

Commit 45ae6e8

Browse files
committed
Added process filtering to the process tree.
1 parent be0cf33 commit 45ae6e8

File tree

2 files changed

+38
-13
lines changed

2 files changed

+38
-13
lines changed

src/app/pages/processes/processes.controller.js

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44
angular.module('BlurMonitor.pages.processes').controller('ProcessesController', [
55
'$scope',
66
'$interval',
7+
'_',
78
'refreshInterval',
89
'ProcessesResource',
910
'AssetsResource',
1011
ProcessesController]);
1112

12-
function ProcessesController($scope, $interval, refreshInterval, ProcessesResource, AssetsResource) {
13+
function ProcessesController($scope, $interval, _, refreshInterval, ProcessesResource, AssetsResource) {
1314
var vm = this;
1415
vm.processes = [];
1516

@@ -34,7 +35,10 @@
3435

3536
vm.processAssets = [];
3637

38+
vm.searchTerm = null;
39+
3740
vm.getProcesses = getProcesses;
41+
vm.filterProcesses = filterProcesses;
3842

3943
AssetsResource.getApps(function(appAssets) {
4044
vm.processAssets = appAssets;
@@ -49,7 +53,7 @@
4953

5054
vm.interval = $interval(function() {
5155
getProcesses(false);
52-
}, refreshInterval * 999999);
56+
}, refreshInterval);
5357
});
5458

5559
$scope.$on("$destroy", function() {
@@ -61,7 +65,8 @@
6165
vm.processes = response;
6266

6367
if(updateTree) {
64-
mapProcessesToTree(vm.processes);
68+
vm.searchTerm = null;
69+
mapProcessesToTree(vm.processes);
6570
} else {
6671
// Update top lists instead.
6772
getTopCpuProcesses();
@@ -114,9 +119,15 @@
114119
vm.treeProcesses.length = 0;
115120

116121
angular.forEach(processes, function(process) {
122+
var parentId = '#';
123+
124+
if(_.find(processes, {id: process.parentId})) {
125+
parentId = process.parentId;
126+
}
127+
117128
var node = {
118129
id: process.id,
119-
parent: process.parentId !== '0' ? process.parentId : '#',
130+
parent: parentId, // process.parentId !== '0' ? process.parentId : '#',
120131
type: getTreeTypeFromCommand(process.command),
121132
text: process.command + ' (' + process.processorUtilization + '%), (' + process.memoryUtilization + '%)',
122133
state: {
@@ -133,19 +144,31 @@
133144
function getTreeTypeFromCommand(command) {
134145
var process = command;
135146

136-
if(process.indexOf(' ') > -1) {
147+
if (process.indexOf(' ') > -1) {
137148
process = command.substr(0, command.indexOf(' '));
138149
}
139150

140-
if(process.indexOf('/') > -1 && process.indexOf('[') === -1) {
151+
if (process.indexOf('/') > -1 && process.indexOf('[') === -1) {
141152
process = process.substr(process.lastIndexOf('/') + 1, process.length - process.lastIndexOf('/'));
142153
}
143154

144-
if(!vm.processAssets.includes(process)) {
155+
if (!vm.processAssets.includes(process)) {
145156
process = 'process';
146157
}
147158

148159
return process;
149160
}
161+
162+
function filterProcesses() {
163+
if(vm.searchTerm !== null && vm.searchTerm.length > 0) {
164+
var filteredProcesses = vm.processes.filter(function (process) {
165+
return process.command.indexOf(vm.searchTerm) > -1;
166+
});
167+
168+
mapProcessesToTree(filteredProcesses);
169+
} else {
170+
mapProcessesToTree(vm.processes);
171+
}
172+
}
150173
}
151174
})();

src/app/pages/processes/processes.html

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@
2828

2929
<div class="row">
3030
<div class="col-md-12">
31-
<div ng-if="vm.treeProcesses.length > 0" ba-panel ba-panel-title="Process Tree" ba-panel-class="with-scroll tree-panel">
32-
<div class="button-wrapper">
33-
<button type="button" class="btn btn-primary btn-raised btn-with-icon" ng-click="vm.getProcesses(true)">
34-
<i class="ion-loop"></i>
35-
Refresh Tree
36-
</button>
31+
<div ng-if="vm.treeConfig.version > 0" ba-panel ba-panel-title="Process Tree" ba-panel-class="with-scroll tree-panel">
32+
<div class="row">
33+
<div class="col-xs-1">
34+
<button type="button" class="btn btn-primary btn-icon" ng-click="vm.getProcesses(true)"><i class="ion-loop"></i></button>
35+
</div>
36+
<div class="form-group col-xs-11">
37+
<input type="text" class="form-control col-xs-9" id="process-search" placeholder="Filter Processes..." ng-change="vm.filterProcesses()" ng-model="vm.searchTerm">
38+
</div>
3739
</div>
3840
<div js-tree="vm.treeConfig" ng-model="vm.treeProcesses"></div>
3941
</div>

0 commit comments

Comments
 (0)