diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 9dd10d04..2076b671 100755 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -315,10 +315,14 @@ }, "glances": { "cpu": "CPU", - "mem": "MEM", + "load": "Load", "wait": "Please wait", "temp": "TEMP", + "warn": "Warn", "uptime": "UP", + "total": "Total", + "free": "Free", + "used": "Used", "days": "d", "hours": "h" }, diff --git a/src/components/widgets/glances/glances.jsx b/src/components/widgets/glances/glances.jsx index fc0d21ed..d3da7200 100644 --- a/src/components/widgets/glances/glances.jsx +++ b/src/components/widgets/glances/glances.jsx @@ -1,7 +1,7 @@ import useSWR from "swr"; import { BiError } from "react-icons/bi"; import { FaMemory, FaRegClock, FaThermometerHalf } from "react-icons/fa"; -import { FiCpu } from "react-icons/fi"; +import { FiCpu, FiHardDrive } from "react-icons/fi"; import { useTranslation } from "next-i18next"; import UsageBar from "../resources/usage-bar"; @@ -88,8 +88,12 @@ export default function Widget({ options }) { } const tempPercent = Math.round((mainTemp / maxTemp) * 100); + const disks = Array.isArray(options.disk) + ? options.disk.map((disk) => data.fs.find((d) => d.mnt_point === disk)).filter((d) => d) + : [data.fs.find((d) => d.mnt_point === options.disk)].filter((d) => d); + return ( -
+
@@ -97,7 +101,7 @@ export default function Widget({ options }) {
{t("common.number", { - value: data.quicklook.cpu, + value: data.cpu.total, style: "unit", unit: "percent", maximumFractionDigits: 0, @@ -105,7 +109,20 @@ export default function Widget({ options }) {
{t("glances.cpu")}
- + {options.expanded && ( + +
+ {t("common.number", { + value: data.load.min15, + style: "unit", + unit: "percent", + maximumFractionDigits: 0, + })} +
+
{t("glances.load")}
+
+ )} +
@@ -113,18 +130,46 @@ export default function Widget({ options }) {
- {t("common.number", { - value: data.quicklook.mem, - style: "unit", - unit: "percent", - maximumFractionDigits: 0, + {t("common.bytes", { + value: data.mem.free, + maximumFractionDigits: 1, + binary: true, })}
-
{t("glances.mem")}
+
{t("glances.free")}
- + {options.expanded && ( + +
+ {t("common.bytes", { + value: data.mem.total, + maximumFractionDigits: 1, + binary: true, + })} +
+
{t("glances.total")}
+
+ )} +
+ {options.disk && disks.map((disk) => ( +
+ +
+ +
{t("common.bytes", { value: disk.free })}
+
{t("glances.free")}
+
+ {options.expanded && ( + +
{t("common.bytes", { value: disk.size })}
+
{t("glances.total")}
+
+ )} + +
+
))} {options.cputemp && mainTemp > 0 && (
@@ -140,6 +185,19 @@ export default function Widget({ options }) {
{t("glances.temp")}
+ {options.expanded && ( + +
+ {t("common.number", { + value: maxTemp, + maximumFractionDigits: 1, + style: "unit", + unit + })} +
+
{t("glances.warn")}
+
+ )}
)} diff --git a/src/pages/api/widgets/glances.js b/src/pages/api/widgets/glances.js index 46be14a0..9e1fed48 100644 --- a/src/pages/api/widgets/glances.js +++ b/src/pages/api/widgets/glances.js @@ -45,15 +45,21 @@ export default async function handler(req, res) { const privateWidgetOptions = await getPrivateWidgetOptions("glances", index); try { - const quicklookData = await retrieveFromGlancesAPI(privateWidgetOptions, "quicklook"); + const cpuData = await retrieveFromGlancesAPI(privateWidgetOptions, "cpu"); + const loadData = await retrieveFromGlancesAPI(privateWidgetOptions, "load"); + const uptimeData = await retrieveFromGlancesAPI(privateWidgetOptions, "uptime"); + const sensorData = await retrieveFromGlancesAPI(privateWidgetOptions, "sensors"); + const memoryData = await retrieveFromGlancesAPI(privateWidgetOptions, "mem"); + const filesystemData = await retrieveFromGlancesAPI(privateWidgetOptions, "fs"); const data = { - quicklook: quicklookData + cpu: cpuData, + load: loadData, + uptime: uptimeData, + sensors: sensorData, + mem: memoryData, + fs: filesystemData, } - - data.uptime = await retrieveFromGlancesAPI(privateWidgetOptions, "uptime"); - - data.sensors = await retrieveFromGlancesAPI(privateWidgetOptions, "sensors"); return res.status(200).send(data); } catch (e) {