feat(webui,dashboard): add RAM Usage card between Disk Usage and Uptime, live-verified on Pager
This commit is contained in:
@@ -3025,6 +3025,23 @@ def disk_data():
|
||||
return {}
|
||||
|
||||
|
||||
def mem_data(path='/proc/meminfo'):
|
||||
try:
|
||||
vals = {}
|
||||
with open(path) as f:
|
||||
for line in f:
|
||||
k, v = line.split(':')
|
||||
vals[k] = int(v.strip().split()[0])
|
||||
total = vals.get('MemTotal', 0)
|
||||
avail = vals.get('MemAvailable', vals.get('MemFree', 0))
|
||||
if not total:
|
||||
return {}
|
||||
used = max(total - avail, 0)
|
||||
return {'size': total * 1024, 'used': used * 1024, 'avail': avail * 1024}
|
||||
except (OSError, ValueError):
|
||||
return {}
|
||||
|
||||
|
||||
def uptime_data():
|
||||
rc, out, err = device_run(['cat', '/proc/uptime'])
|
||||
try:
|
||||
@@ -3066,6 +3083,7 @@ def status_data():
|
||||
'wifi': [wifi_iface_info(n) for n in ifaces],
|
||||
'clients': assoc_clients(ifaces),
|
||||
'disk': disk_data(),
|
||||
'mem': mem_data(),
|
||||
'uptime': uptime_data(),
|
||||
'hostname': hostname_data(),
|
||||
}
|
||||
|
||||
@@ -192,7 +192,7 @@ views.dashboard = (root) => {
|
||||
root.appendChild(grid);
|
||||
const defs = [
|
||||
['clients', 'Clients Connected'], ['handshakes', 'Handshakes Captured'],
|
||||
['disk', 'Disk Usage'], ['uptime', 'Uptime']
|
||||
['disk', 'Disk Usage'], ['mem', 'RAM Usage'], ['uptime', 'Uptime']
|
||||
];
|
||||
const cards = {};
|
||||
defs.forEach(([k, label]) => {
|
||||
@@ -318,6 +318,8 @@ views.dashboard = (root) => {
|
||||
cards.uptime.textContent = s.uptime == null ? 'Unavailable' : fmtDur(s.uptime);
|
||||
cards.disk.textContent = s.disk && s.disk.size != null
|
||||
? fmtBytes(s.disk.used) + ' / ' + fmtBytes(s.disk.size) : 'Unavailable';
|
||||
cards.mem.textContent = s.mem && s.mem.size != null
|
||||
? fmtBytes(s.mem.used) + ' / ' + fmtBytes(s.mem.size) : 'Unavailable';
|
||||
if (typeof MiniChart !== 'undefined') {
|
||||
MiniChart.draw(canvas, [
|
||||
{ label: 'Clients', color: '#1976d2', points: history.clients }
|
||||
@@ -329,6 +331,7 @@ views.dashboard = (root) => {
|
||||
.catch(() => {
|
||||
cards.clients.textContent = '0';
|
||||
cards.disk.textContent = '—';
|
||||
cards.mem.textContent = '—';
|
||||
cards.uptime.textContent = '—';
|
||||
});
|
||||
PagerAPI.get('/api/pineap/handshakes').then((r) => {
|
||||
|
||||
Reference in New Issue
Block a user