1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
var si = require('systeminformation'),
utils = require('../utils');
var colors = utils.colors;
var pars = {
p: 'pid',
c: 'pcpu',
m: 'pmem',
};
function Proc(table) {
this.table = table;
this.pSort = 'pcpu';
this.reIndex = false;
this.reverse = false;
var that = this;
var updater = function() {
si.processes(data => {
that.updateData(data);
});
};
updater();
this.interval = setInterval(updater, 3000);
this.table.screen.key(['m', 'c', 'p'], function(ch, key) {
if (pars[ch] == that.pSort) {
that.reverse = !that.reverse;
} else {
that.pSort = pars[ch] || that.pSort;
}
that.reIndex = true;
updater();
});
}
Proc.prototype.updateData = function(data) {
var par = this.pSort;
var data = data.list
.sort(function(a, b) {
return b[par] - a[par];
})
.map(p => {
return [
p.pid,
p.command, //.slice(0,10),
' ' + p.pcpu.toFixed(1),
p.pmem.toFixed(1),
];
});
var headers = ['PID', 'Command', '%CPU', '%MEM'];
headers[
{
pid: 0,
pcpu: 2,
pmem: 3,
}[this.pSort]
] += this.reverse ? '▲' : '▼';
this.table.setData({
headers: headers,
data: this.reverse ? data.reverse() : data,
});
if (this.reIndex) {
this.table.rows.select(0);
this.reIndex = false;
}
this.table.screen.render();
};
module.exports = Proc;
|