/
proc.js
82 lines (62 loc) · 1.37 KB
/
proc.js
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
80
81
82
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;