diff --git a/public/locales/en/common.json b/public/locales/en/common.json index d6c2ae238..8e5b90229 100755 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -175,7 +175,9 @@ "cpuUsage": "CPU Usage", "memUsage": "MEM Usage", "systemTempC": "System Temp", - "poolUsage": "Pool Usage" + "poolUsage": "Pool Usage", + "volumeUsage": "Volume Usage", + "invalid": "Invalid" }, "deluge": { "download": "Download", diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js index 4942aeaeb..8b7317d06 100644 --- a/src/utils/config/service-helpers.js +++ b/src/utils/config/service-helpers.js @@ -306,7 +306,7 @@ export function cleanServiceGroups(groups) { if (enableBlocks !== undefined) cleanedService.widget.enableBlocks = JSON.parse(enableBlocks); if (enableNowPlaying !== undefined) cleanedService.widget.enableNowPlaying = JSON.parse(enableNowPlaying); } - if (type === "diskstation") { + if (["diskstation", "qnap"].includes(type)) { if (volume) cleanedService.widget.volume = volume; } } diff --git a/src/widgets/qnap/component.jsx b/src/widgets/qnap/component.jsx index c01e3ba8f..1012fb654 100644 --- a/src/widgets/qnap/component.jsx +++ b/src/widgets/qnap/component.jsx @@ -23,7 +23,7 @@ export default function Component({ service }) { - + ); } @@ -32,9 +32,29 @@ export default function Component({ service }) { const totalMemory = statusData.system.total_memory._cdata; const freeMemory = statusData.system.free_memory._cdata; const systemTempC = statusData.system.cpu_tempc._text; + let volumeTotalSize = 0; + let volumeFreeSize = 0; + let validVolume = true; - const volumeTotalSize = statusData.volume.volumeUse.total_size._cdata; - const volumeFreeSize = statusData.volume.volumeUse.free_size._cdata; + if (Array.isArray(statusData.volume.volumeUseList.volumeUse)) { + if (widget.volume) { + const volumeSelected = statusData.volume.volumeList.volume.findIndex(vl => vl.volumeLabel._cdata === widget.volume); + if (volumeSelected !== -1) { + volumeTotalSize = statusData.volume.volumeUseList.volumeUse[volumeSelected].total_size._cdata; + volumeFreeSize = statusData.volume.volumeUseList.volumeUse[volumeSelected].free_size._cdata; + } else { + validVolume = false; + } + } else { + statusData.volume.volumeUseList.volumeUse.forEach((volume) => { + volumeTotalSize += parseInt(volume.total_size._cdata, 10); + volumeFreeSize += parseInt(volume.free_size._cdata, 10); + }); + } + } else { + volumeTotalSize = statusData.volume.volumeUseList.volumeUse.total_size._cdata; + volumeFreeSize = statusData.volume.volumeUseList.volumeUse.free_size._cdata; + } return ( @@ -51,8 +71,8 @@ export default function Component({ service }) { value={t("common.number", { value: systemTempC, maximumFractionDigits: 1, style: "unit", unit: "celsius" })} /> ); diff --git a/src/widgets/qnap/proxy.js b/src/widgets/qnap/proxy.js index a4d7376d1..b0f27de4b 100644 --- a/src/widgets/qnap/proxy.js +++ b/src/widgets/qnap/proxy.js @@ -99,6 +99,6 @@ export default async function qnapProxyHandler(req, res) { return res.status(200).send({ system: systemStatsData.QDocRoot.func.ownContent.root, - volume: volumeStatsData.QDocRoot.volumeUseList + volume: volumeStatsData.QDocRoot }); }