add config option for number of decimal places on bitrate blocks for speedtest-tracker

pull/3354/head
Ameer Abdallah 2 weeks ago
parent 312e97d18b
commit dfe5b2ac7c

@ -16,4 +16,5 @@ Allowed fields: `["download", "upload", "ping"]`.
widget:
type: speedtest
url: http://speedtest.host.or.ip
bitrateNumOfDecimalPlaces: 3 # default is 2
```

@ -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;

@ -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 <Container service={service} error={speedtestError} />;
}
@ -29,9 +38,18 @@ export default function Component({ service }) {
<Container service={service}>
<Block
label="speedtest.download"
value={t("common.bitrate", { value: speedtestData.data.download * 1000 * 1000 })}
value={t("common.bitrate", {
value: speedtestData.data.download * 1000 * 1000,
decimals: bitrateNumOfDecimalPlaces,
})}
/>
<Block
label="speedtest.upload"
value={t("common.bitrate", {
value: speedtestData.data.upload * 1000 * 1000,
decimals: bitrateNumOfDecimalPlaces,
})}
/>
<Block label="speedtest.upload" value={t("common.bitrate", { value: speedtestData.data.upload * 1000 * 1000 })} />
<Block
label="speedtest.ping"
value={t("common.ms", {

Loading…
Cancel
Save