diff --git a/docs/widgets/services/speedtest-tracker.md b/docs/widgets/services/speedtest-tracker.md
index 7e2509675..31ad386b4 100644
--- a/docs/widgets/services/speedtest-tracker.md
+++ b/docs/widgets/services/speedtest-tracker.md
@@ -16,4 +16,5 @@ Allowed fields: `["download", "upload", "ping"]`.
widget:
type: speedtest
url: http://speedtest.host.or.ip
+ bitrateNumOfDecimalPlaces: 3 # default is 2
```
diff --git a/src/utils/config/service-helpers.js b/src/utils/config/service-helpers.js
index fc4d57eb9..7a07fa4bf 100644
--- a/src/utils/config/service-helpers.js
+++ b/src/utils/config/service-helpers.js
@@ -459,6 +459,9 @@ export function cleanServiceGroups(groups) {
// unifi
site,
+
+ // speedtest-tracker
+ bitrateNumOfDecimalPlaces,
} = cleanedService.widget;
let fieldsList = fields;
@@ -588,6 +591,16 @@ export function cleanServiceGroups(groups) {
if (type === "healthchecks") {
if (uuid !== undefined) cleanedService.widget.uuid = uuid;
}
+ if (type === "speedtest") {
+ if (bitrateNumOfDecimalPlaces !== undefined) {
+ // if the result can't be parsed, set to -1
+ cleanedService.widget.bitrateNumOfDecimalPlaces = Number.parseInt(bitrateNumOfDecimalPlaces, 10);
+ if (Number.isNaN(cleanedService.widget.bitrateNumOfDecimalPlaces)) {
+ // negative values fallback to the default
+ cleanedService.widget.bitrateNumOfDecimalPlaces = -1;
+ }
+ }
+ }
}
return cleanedService;
diff --git a/src/widgets/speedtest/component.jsx b/src/widgets/speedtest/component.jsx
index 0102025ba..3965ec7eb 100644
--- a/src/widgets/speedtest/component.jsx
+++ b/src/widgets/speedtest/component.jsx
@@ -4,6 +4,8 @@ import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
+const DEFAULT_BITRATE_NUM_OF_DECIMAL_PLACES = 2;
+
export default function Component({ service }) {
const { t } = useTranslation();
@@ -11,6 +13,13 @@ export default function Component({ service }) {
const { data: speedtestData, error: speedtestError } = useWidgetAPI(widget, "speedtest/latest");
+ let bitrateNumOfDecimalPlaces = widget?.bitrateNumOfDecimalPlaces ?? DEFAULT_BITRATE_NUM_OF_DECIMAL_PLACES; // Default is 2
+
+ // if not a number or negative, set to default
+ if (bitrateNumOfDecimalPlaces < 0) {
+ bitrateNumOfDecimalPlaces = DEFAULT_BITRATE_NUM_OF_DECIMAL_PLACES;
+ }
+
if (speedtestError) {
return ;
}
@@ -29,9 +38,18 @@ export default function Component({ service }) {
+
-