OPNsense widget : all datas are locally stored in a single localStorage object.

This commit is contained in:
Benoit 2022-12-29 16:29:02 +01:00
parent fc263be8ad
commit 86f21afe1e

View File

@ -52,11 +52,8 @@ export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const wid = widget.service_name + "." + widget.service_group;
const rateStorage = `${wid}rate`;
const dataStorage = `${wid}data`;
const timeStorage = `${wid}time`;
console.log("service: ", service, " wid: ", wid);
const wid = `${widget.service_name}.${widget.service_group}`;
const dataStorage = `${wid}datas`;
const { data: activityData, error: activityError } = useWidgetAPI(widget, "activity");
const { data: interfaceData, error: interfaceError } = useWidgetAPI(widget, "interface");
@ -81,58 +78,42 @@ export default function Component({ service }) {
const cpu = 100 - parseFloat(cpuIdle);
const memory = sumMemory(activityData.headers[3]);
const wanUpload = interfaceData.interfaces.wan['bytes transmitted'];
const wanDownload = interfaceData.interfaces.wan['bytes received'];
const datas = localStorage.getItem(dataStorage);
let wanUploadRate = 0;
let wanDownloadRate = 0;
if (datas !== null) {
const datasObj = JSON.parse(datas);
console.log("Dataobj:", datasObj);
const wanUploadDiff = wanUpload - datasObj.wanUpload;
const wanDownloadDiff = wanDownload - datasObj.wanDownload;
const wanUpload = parseFloat(interfaceData.interfaces.wan['bytes transmitted']);
const wanDownload = parseFloat(interfaceData.interfaces.wan['bytes received']);
const dataStored = localStorage.getItem(dataStorage);
let datas;
if (dataStored === null) {
datas = {
wanUpload : 0,
wanDownload : 0,
updateTime : 0,
wanUploadRate : 0,
wanDownloadRate : 0
}
} else {
datas = JSON.parse(dataStored);
}
const wanUploadDiff = wanUpload - datas.wanUpload;
const wanDownloadDiff = wanDownload - datas.wanDownload;
if (wanUploadDiff > 0 || wanDownloadDiff > 0) {
const specialTimeValue = new Date().getTime();
console.log("Special time: ", specialTimeValue);
const specialTime = localStorage.getItem(timeStorage);
if (specialTime !== null) {
const specialTimeObj = JSON.parse(specialTime);
const timeDif = specialTimeValue - specialTimeObj.specialtime;
wanUploadRate = 8 * wanUploadDiff / (timeDif / 1000);
wanDownloadRate = 8 * wanDownloadDiff / (timeDif / 1000);
localStorage.setItem(rateStorage, JSON.stringify({
wanUploadRate,
wanDownloadRate
}));
console.log("Time diff: ", timeDif, "wanUploadRate: ", wanUploadRate, "wanDownloadRate: ", wanDownloadRate);
const timeDif = specialTimeValue - datas.updateTime;
datas.wanUploadRate = 8 * wanUploadDiff / (timeDif / 1000);
datas.wanDownloadRate = 8 * wanDownloadDiff / (timeDif / 1000);
datas.updateTime = specialTimeValue;
}
localStorage.setItem(timeStorage, JSON.stringify({specialtime: specialTimeValue}));
} else {
const rate = localStorage.getItem(rateStorage);
if (rate !== null) {
const rateObj = JSON.parse(rate);
wanUploadRate = rateObj.wanUploadRate;
wanDownloadRate = rateObj.wanDownloadRate;
}
}
console.log("wanUploadDiff:", wanUploadDiff);
console.log("wanDownloadDiff:", wanDownloadDiff);
}
localStorage.setItem(dataStorage, JSON.stringify({
wanUpload,
wanDownload,
time: Date.now()}));
datas.wanUpload = wanUpload;
datas.wanDownload = wanDownload;
localStorage.setItem(dataStorage, JSON.stringify(datas));
return (
<Container service={service}>
<Block label="opnsense.cpu" value={t("common.percent", { value: cpu.toFixed(2)})} />
<Block label="opnsense.memory" value={t("common.percent", { value: memory})} />
<Block label="opnsense.wanUpload" value={t("common.bytes", { value: wanUpload})} />
<Block label="opnsense.wanDownload" value={t("common.bytes", { value: wanDownload })} />
<Block label="opnsense.wanUploadRate" value={t("common.bitrate", { value: wanUploadRate})} />
<Block label="opnsense.wanDownloadRate" value={t("common.bitrate", { value: wanDownloadRate})} />
<Block label="opnsense.wanUpload" value={t("common.bytes", { value: datas.wanUpload})} />
<Block label="opnsense.wanDownload" value={t("common.bytes", { value: datas.wanDownload })} />
<Block label="opnsense.wanUploadRate" value={t("common.bitrate", { value: datas.wanUploadRate})} />
<Block label="opnsense.wanDownloadRate" value={t("common.bitrate", { value: datas.wanDownloadRate})} />
</Container>
);
}