diff --git a/public/locales/en/common.json b/public/locales/en/common.json
index d6c2ae23..8e5b9022 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 4942aeae..8b7317d0 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 c01e3ba8..1012fb65 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 a4d7376d..b0f27de4 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
});
}