d56eca5071966202bba83df12e7b6134ca2e2b2e
6 var callLuciProcessList
= rpc
.declare({
8 method
: 'getProcessList',
12 return L
.view
.extend({
14 return callLuciProcessList();
17 handleSignal: function(signum
, pid
, ev
) {
18 return fs
.exec('/bin/kill', ['-%d'.format(signum
), '%s'.format(pid
)]).then(L
.bind(function() {
19 return callLuciProcessList().then(L
.bind(function(processes
) {
20 this.updateTable('.table', processes
);
22 }, this)).catch(function(e
) { ui
.addNotification(null, E('p', e
.message
)) });
25 updateTable: function(table
, processes
) {
28 processes
.sort(function(a
, b
) {
29 return (a
.PID
- b
.PID
);
32 for (var i
= 0; i
< processes
.length
; i
++) {
33 var proc
= processes
[i
];
43 'class': 'btn cbi-button-action',
44 'click': ui
.createHandlerFn(this, 'handleSignal', 1, proc
.PID
)
45 }, _('Hang Up')), ' ',
47 'class': 'btn cbi-button-negative',
48 'click': ui
.createHandlerFn(this, 'handleSignal', 15, proc
.PID
)
49 }, _('Terminate')), ' ',
51 'class': 'btn cbi-button-negative',
52 'click': ui
.createHandlerFn(this, 'handleSignal', 9, proc
.PID
)
58 cbi_update_table(table
, rows
, E('em', _('No information available')));
61 render: function(processes
) {
63 E('h2', _('Processes')),
64 E('div', { 'class': 'cbi-map-descr' }, _('This list gives an overview over currently running system processes and their status.')),
66 E('div', { 'class': 'table' }, [
67 E('div', { 'class': 'tr table-titles' }, [
68 E('div', { 'class': 'th' }, _('PID')),
69 E('div', { 'class': 'th' }, _('Owner')),
70 E('div', { 'class': 'th' }, _('Command')),
71 E('div', { 'class': 'th' }, _('CPU usage (%)')),
72 E('div', { 'class': 'th' }, _('Memory usage (%)')),
73 E('div', { 'class': 'th center nowrap cbi-section-actions' })
78 this.updateTable(v
.lastElementChild
, processes
);
83 handleSaveApply
: null,