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

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

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

@ -459,6 +459,9 @@ export function cleanServiceGroups(groups) {
// unifi // unifi
site, site,
// speedtest-tracker
bitrateNumOfDecimalPlaces,
} = cleanedService.widget; } = cleanedService.widget;
let fieldsList = fields; let fieldsList = fields;
@ -588,6 +591,16 @@ export function cleanServiceGroups(groups) {
if (type === "healthchecks") { if (type === "healthchecks") {
if (uuid !== undefined) cleanedService.widget.uuid = uuid; 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; return cleanedService;

@ -4,6 +4,8 @@ import Container from "components/services/widget/container";
import Block from "components/services/widget/block"; import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api"; import useWidgetAPI from "utils/proxy/use-widget-api";
const DEFAULT_BITRATE_NUM_OF_DECIMAL_PLACES = 2;
export default function Component({ service }) { export default function Component({ service }) {
const { t } = useTranslation(); const { t } = useTranslation();
@ -11,6 +13,13 @@ export default function Component({ service }) {
const { data: speedtestData, error: speedtestError } = useWidgetAPI(widget, "speedtest/latest"); 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) { if (speedtestError) {
return <Container service={service} error={speedtestError} />; return <Container service={service} error={speedtestError} />;
} }
@ -29,9 +38,18 @@ export default function Component({ service }) {
<Container service={service}> <Container service={service}>
<Block <Block
label="speedtest.download" 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 <Block
label="speedtest.ping" label="speedtest.ping"
value={t("common.ms", { value={t("common.ms", {

Loading…
Cancel
Save