mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-07-28 09:22:05 +08:00
59 lines
1.3 KiB
JavaScript
59 lines
1.3 KiB
JavaScript
'use strict';
|
|
'require baseclass';
|
|
'require fs';
|
|
|
|
return baseclass.extend({
|
|
title : _('CPU Load'),
|
|
|
|
cpuStatLast: null,
|
|
|
|
load() {
|
|
return L.resolveDefault(fs.read('/proc/stat'), null);
|
|
},
|
|
|
|
render(cpuData) {
|
|
if(!cpuData) return;
|
|
|
|
let cpuStat = null;
|
|
let statItemsArray = cpuData.trim().split('\n').filter(s => s.startsWith('cpu'));
|
|
|
|
for(let str of statItemsArray) {
|
|
let arr = str.split(/\s+/).slice(0, 8);
|
|
if(arr[0] === 'cpu') {
|
|
arr[0] = 0;
|
|
arr = arr.map(e => Number(e));
|
|
cpuStat = [
|
|
arr[1] + arr[2] + arr[3] + arr[5] + arr[6] + arr[7],
|
|
arr[4],
|
|
];
|
|
};
|
|
};
|
|
|
|
let cpuTable = E('table', { 'class': 'table' });
|
|
let loadAvg = 0;
|
|
|
|
if(this.cpuStatLast !== null) {
|
|
let idle = cpuStat[1] - this.cpuStatLast[1];
|
|
let sum = cpuStat[0] - this.cpuStatLast[0];
|
|
loadAvg = Math.round(100 * sum / (sum + idle));
|
|
};
|
|
|
|
cpuTable.append(
|
|
E('tr', { 'class': 'tr' }, [
|
|
E('td', { 'class': 'td left', 'width': '33%' }, _('Total Load')),
|
|
E('td', { 'class': 'td' },
|
|
E('div', {
|
|
'class': 'cbi-progressbar',
|
|
'title': (this.cpuStatLast !== null) ? loadAvg + '%' : _('Calculating') + '...',
|
|
},
|
|
E('div', { 'style': 'width:' + loadAvg + '%' })
|
|
)
|
|
),
|
|
])
|
|
);
|
|
|
|
this.cpuStatLast = cpuStat;
|
|
return cpuTable;
|
|
},
|
|
});
|