'use strict'; 'require baseclass'; 'require fs'; 'require rpc'; var callSystemBoard = rpc.declare({ object: 'system', method: 'board' }); var callSystemInfo = rpc.declare({ object: 'system', method: 'info' }); var callCPUBench = rpc.declare({ object: 'luci', method: 'getCPUBench' }); var callCPUUsage = rpc.declare({ object: 'luci', method: 'getCPUUsage' }); return baseclass.extend({ title: _('System'), load: function() { return Promise.all([ L.resolveDefault(callSystemBoard(), {}), L.resolveDefault(callSystemInfo(), {}), L.resolveDefault(callCPUBench(), {}), L.resolveDefault(callCPUUsage(), {}), fs.lines('/usr/lib/lua/luci/version.lua') ]); }, render: function(data) { var boardinfo = data[0], systeminfo = data[1], cpubench = data[2], cpuusage = data[3], luciversion = data[4]; luciversion = luciversion.filter(function(l) { return l.match(/^\s*(luciname|luciversion)\s*=/); }).map(function(l) { return l.replace(/^\s*\w+\s*=\s*['"]([^'"]+)['"].*$/, '$1'); }).join(' '); var datestr = null; if (systeminfo.localtime) { var date = new Date(systeminfo.localtime * 1000); datestr = '%04d-%02d-%02d %02d:%02d:%02d'.format( date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds() ); } // TODO: This is ugly var projectlink = document.createElement('a'); projectlink.append('kenzo'); projectlink.href = 'https://github.com/kenzok8'; projectlink.target = '_blank'; var corelink = document.createElement('a'); corelink.append('openwrt_Build'); corelink.href = 'https://github.com/kenzok8/openwrt_Build'; corelink.target = '_blank'; var sourcelink = document.createElement('placeholder'); sourcelink.append(projectlink); sourcelink.append(' / '); sourcelink.append(corelink); var fields = [ _('Hostname'), boardinfo.hostname, _('Model'), boardinfo.model + cpubench.cpubench, _('Architecture'), boardinfo.system, _('Firmware Version'), (L.isObject(boardinfo.release) ? boardinfo.release.description + ' / ' : '') + (luciversion || ''), _('Kernel Version'), boardinfo.kernel, _('Local Time'), datestr, _('Uptime'), systeminfo.uptime ? '%t'.format(systeminfo.uptime) : null, _('Load Average'), Array.isArray(systeminfo.load) ? '%.2f, %.2f, %.2f'.format( systeminfo.load[0] / 65535.0, systeminfo.load[1] / 65535.0, systeminfo.load[2] / 65535.0 ) : null, _('CPU usage (%)'), cpuusage.cpuusage, _('Source Code'), sourcelink ]; var table = E('table', { 'class': 'table' }); for (var i = 0; i < fields.length; i += 2) { table.appendChild(E('tr', { 'class': 'tr' }, [ E('td', { 'class': 'td left', 'width': '33%' }, [ fields[i] ]), E('td', { 'class': 'td left' }, [ (fields[i + 1] != null) ? fields[i + 1] : '?' ]) ])); } return table; } });