From 991cfe134effa4e0b3a06635081ab576f10d21e9 Mon Sep 17 00:00:00 2001 From: Bobby Wibowo Date: Fri, 19 Aug 2022 10:38:24 +0700 Subject: [PATCH] feat: add cpu temp and swap memory to statistics temp is currently hard-coded to C also increased system info caching to 1s --- controllers/utilsController.js | 18 ++++++++++++++++-- src/js/dashboard.js | 20 +++++++++++++++----- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/controllers/utilsController.js b/controllers/utilsController.js index ec68c06..0c5c979 100644 --- a/controllers/utilsController.js +++ b/controllers/utilsController.js @@ -815,14 +815,15 @@ const generateStats = async (req, res) => { if (!data.cache && data.generating) { stats[data.title] = false - } else if (((Date.now() - data.generatedAt) <= 500) || data.generating) { - // Use cache for 500 ms (0.5 seconds) + } else if (((Date.now() - data.generatedAt) <= 1000) || data.generating) { + // Use cache for 1000 ms (1 second) stats[data.title] = data.cache } else { data.generating = true data.generatedAt = Date.now() const cpu = await si.cpu() + const cpuTemperature = await si.cpuTemperature() const currentLoad = await si.currentLoad() const mem = await si.mem() const time = si.time() @@ -834,6 +835,10 @@ const generateStats = async (req, res) => { CPU: `${cpu.cores} \u00d7 ${cpu.manufacturer} ${cpu.brand} @ ${cpu.speed.toFixed(2)}GHz`, 'CPU Load': `${currentLoad.currentLoad.toFixed(1)}%`, 'CPUs Load': currentLoad.cpus.map(cpu => `${cpu.load.toFixed(1)}%`).join(', '), + 'CPU Temperature': { + value: cpuTemperature ? cpuTemperature.main : 'Not supported', + type: 'tempC' // temp value from this library is hard-coded to C + }, Memory: { value: { used: mem.active, @@ -841,6 +846,15 @@ const generateStats = async (req, res) => { }, type: 'byteUsage' }, + Swap: { + value: typeof mem.swapused === 'number' && typeof mem.swaptotal === 'number' + ? { + used: mem.swapused, + total: mem.swaptotal + } + : null, + type: 'byteUsage' + }, Uptime: { value: Math.floor(time.uptime), type: 'uptime' diff --git a/src/js/dashboard.js b/src/js/dashboard.js index ae30dc8..bd724e9 100644 --- a/src/js/dashboard.js +++ b/src/js/dashboard.js @@ -3045,13 +3045,23 @@ page.getStatistics = (params = {}) => { parsed = page.getPrettyBytes(value) break case 'byteUsage': { - // Reasoning: https://github.com/sebhildebrandt/systeminformation/issues/464#issuecomment-756406053 - const totalForPercentage = typeof value.available !== 'undefined' - ? (value.used + value.available) - : value.total - parsed = `${page.getPrettyBytes(value.used)} / ${page.getPrettyBytes(value.total)} (${(value.used / totalForPercentage * 100).toFixed(2)}%)` + if (typeof value === 'object') { + // Reasoning: https://github.com/sebhildebrandt/systeminformation/issues/464#issuecomment-756406053 + const totalForPercentage = value.available !== undefined + ? (value.used + value.available) + : value.total + parsed = `${page.getPrettyBytes(value.used)} / ${page.getPrettyBytes(value.total)} (${(value.used / totalForPercentage * 100).toFixed(2)}%)` + } else { + parsed = value + } break } + case 'tempC': + // TODO: Unit conversion when required? + parsed = typeof value === 'number' + ? `${value} C` + : value + break case 'uptime': parsed = page.getPrettyUptime(value) break