diff --git a/src/widgets/glances/components/container.jsx b/src/widgets/glances/components/container.jsx
index 8a72a1b31..ebbe3d986 100644
--- a/src/widgets/glances/components/container.jsx
+++ b/src/widgets/glances/components/container.jsx
@@ -1,4 +1,21 @@
-export default function Container({ children, chart = true, className = "" }) {
+import { useContext } from "react";
+
+import Error from "./error";
+
+import { SettingsContext } from "utils/contexts/settings";
+
+export default function Container({ children, widget, error = null, chart = true, className = "" }) {
+ const { settings } = useContext(SettingsContext);
+ const hideErrors = settings.hideErrors || widget?.hideErrors;
+
+ if (error) {
+ if (hideErrors) {
+ return null;
+ }
+
+ return ;
+ }
+
return (
{children}
diff --git a/src/widgets/glances/metrics/cpu.jsx b/src/widgets/glances/metrics/cpu.jsx
index 553517bac..e993fca91 100644
--- a/src/widgets/glances/metrics/cpu.jsx
+++ b/src/widgets/glances/metrics/cpu.jsx
@@ -2,7 +2,6 @@ import dynamic from "next/dynamic";
import { useState, useEffect } from "react";
import { useTranslation } from "next-i18next";
-import Error from "../components/error";
import Container from "../components/container";
import Block from "../components/block";
@@ -39,11 +38,7 @@ export default function Component({ service }) {
}, [data, pointsLimit]);
if (error) {
- return (
-
-
-
- );
+ return ;
}
if (!data) {
diff --git a/src/widgets/glances/metrics/disk.jsx b/src/widgets/glances/metrics/disk.jsx
index 04a5071fa..0a459e07c 100644
--- a/src/widgets/glances/metrics/disk.jsx
+++ b/src/widgets/glances/metrics/disk.jsx
@@ -2,7 +2,6 @@ import dynamic from "next/dynamic";
import { useState, useEffect } from "react";
import { useTranslation } from "next-i18next";
-import Error from "../components/error";
import Container from "../components/container";
import Block from "../components/block";
@@ -35,7 +34,7 @@ export default function Component({ service }) {
}));
useEffect(() => {
- if (data) {
+ if (data && !data.error) {
const diskData = data.find((item) => item.disk_name === diskName);
setDataPoints((prevDataPoints) => {
@@ -52,12 +51,9 @@ export default function Component({ service }) {
setRatePoints(calculateRates(dataPoints));
}, [dataPoints]);
- if (error) {
- return (
-
-
-
- );
+ if (error || (data && data.error)) {
+ const finalError = error || data.error;
+ return ;
}
if (!data) {
diff --git a/src/widgets/glances/metrics/fs.jsx b/src/widgets/glances/metrics/fs.jsx
index 3ec7eb6ce..1fae58004 100644
--- a/src/widgets/glances/metrics/fs.jsx
+++ b/src/widgets/glances/metrics/fs.jsx
@@ -1,6 +1,5 @@
import { useTranslation } from "next-i18next";
-import Error from "../components/error";
import Container from "../components/container";
import Block from "../components/block";
@@ -20,11 +19,7 @@ export default function Component({ service }) {
});
if (error) {
- return (
-
-
-
- );
+ return ;
}
if (!data) {
diff --git a/src/widgets/glances/metrics/gpu.jsx b/src/widgets/glances/metrics/gpu.jsx
index 174ae2e07..37b06ce3e 100644
--- a/src/widgets/glances/metrics/gpu.jsx
+++ b/src/widgets/glances/metrics/gpu.jsx
@@ -2,7 +2,6 @@ import dynamic from "next/dynamic";
import { useState, useEffect } from "react";
import { useTranslation } from "next-i18next";
-import Error from "../components/error";
import Container from "../components/container";
import Block from "../components/block";
@@ -26,7 +25,7 @@ export default function Component({ service }) {
});
useEffect(() => {
- if (data) {
+ if (data && !data.error) {
// eslint-disable-next-line eqeqeq
const gpuData = data.find((item) => item[item.key] == gpuName);
@@ -42,12 +41,9 @@ export default function Component({ service }) {
}
}, [data, gpuName, pointsLimit]);
- if (error) {
- return (
-
-
-
- );
+ if (error || (data && data.error)) {
+ const finalError = error || data.error;
+ return ;
}
if (!data) {
diff --git a/src/widgets/glances/metrics/info.jsx b/src/widgets/glances/metrics/info.jsx
index 1ee47b980..3a4b565f4 100644
--- a/src/widgets/glances/metrics/info.jsx
+++ b/src/widgets/glances/metrics/info.jsx
@@ -1,6 +1,5 @@
import { useTranslation } from "next-i18next";
-import Error from "../components/error";
import Container from "../components/container";
import Block from "../components/block";
@@ -84,20 +83,13 @@ export default function Component({ service }) {
refreshInterval: defaultSystemInterval,
});
- if (quicklookError) {
- return (
-
-
-
- );
+ if (quicklookError || (quicklookData && quicklookData.error)) {
+ const qlError = quicklookError || quicklookData.error;
+ return ;
}
if (systemError) {
- return (
-
-
-
- );
+ return ;
}
const dataCharts = [];
diff --git a/src/widgets/glances/metrics/memory.jsx b/src/widgets/glances/metrics/memory.jsx
index 49046a5fc..8cfddb668 100644
--- a/src/widgets/glances/metrics/memory.jsx
+++ b/src/widgets/glances/metrics/memory.jsx
@@ -2,7 +2,6 @@ import dynamic from "next/dynamic";
import { useState, useEffect } from "react";
import { useTranslation } from "next-i18next";
-import Error from "../components/error";
import Container from "../components/container";
import Block from "../components/block";
@@ -38,11 +37,7 @@ export default function Component({ service }) {
}, [data, pointsLimit]);
if (error) {
- return (
-
-
-
- );
+ return ;
}
if (!data) {
diff --git a/src/widgets/glances/metrics/net.jsx b/src/widgets/glances/metrics/net.jsx
index c1ec937ed..372c4ec61 100644
--- a/src/widgets/glances/metrics/net.jsx
+++ b/src/widgets/glances/metrics/net.jsx
@@ -2,7 +2,6 @@ import dynamic from "next/dynamic";
import { useState, useEffect } from "react";
import { useTranslation } from "next-i18next";
-import Error from "../components/error";
import Container from "../components/container";
import Block from "../components/block";
@@ -31,7 +30,7 @@ export default function Component({ service }) {
});
useEffect(() => {
- if (data) {
+ if (data && !data.error) {
const interfaceData = data.find((item) => item[item.key] === interfaceName);
if (interfaceData) {
@@ -52,12 +51,9 @@ export default function Component({ service }) {
}
}, [data, interfaceName, pointsLimit, rxKey, txKey]);
- if (error) {
- return (
-
-
-
- );
+ if (error || (data && data.error)) {
+ const finalError = error || data.error;
+ return ;
}
if (!data) {
diff --git a/src/widgets/glances/metrics/process.jsx b/src/widgets/glances/metrics/process.jsx
index b242535ee..b997a5689 100644
--- a/src/widgets/glances/metrics/process.jsx
+++ b/src/widgets/glances/metrics/process.jsx
@@ -1,6 +1,5 @@
import { useTranslation } from "next-i18next";
-import Error from "../components/error";
import Container from "../components/container";
import Block from "../components/block";
@@ -31,11 +30,7 @@ export default function Component({ service }) {
});
if (error) {
- return (
-
-
-
- );
+ return ;
}
if (!data) {
diff --git a/src/widgets/glances/metrics/sensor.jsx b/src/widgets/glances/metrics/sensor.jsx
index e0f679c13..3cb38c1c6 100644
--- a/src/widgets/glances/metrics/sensor.jsx
+++ b/src/widgets/glances/metrics/sensor.jsx
@@ -2,7 +2,6 @@ import dynamic from "next/dynamic";
import { useState, useEffect } from "react";
import { useTranslation } from "next-i18next";
-import Error from "../components/error";
import Container from "../components/container";
import Block from "../components/block";
@@ -26,24 +25,25 @@ export default function Component({ service }) {
});
useEffect(() => {
- if (data) {
+ if (data && !data.error) {
const sensorData = data.find((item) => item.label === sensorName);
- setDataPoints((prevDataPoints) => {
- const newDataPoints = [...prevDataPoints, { value: sensorData.value }];
- if (newDataPoints.length > pointsLimit) {
- newDataPoints.shift();
- }
- return newDataPoints;
- });
+ if (sensorData) {
+ setDataPoints((prevDataPoints) => {
+ const newDataPoints = [...prevDataPoints, { value: sensorData.value }];
+ if (newDataPoints.length > pointsLimit) {
+ newDataPoints.shift();
+ }
+ return newDataPoints;
+ });
+ } else {
+ data.error = true;
+ }
}
}, [data, sensorName, pointsLimit]);
- if (error) {
- return (
-
-
-
- );
+ if (error || (data && data.error)) {
+ const finalError = error || data.error;
+ return ;
}
if (!data) {