diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 62c1724d..40854c60 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -407,6 +407,9 @@ "memory": "Memory Used", "uptime": "Uptime", "wanUpload": "WAN Upload", - "wanDownload": "WAN Download" + "wanDownload": "WAN Download", + "wanUploadRate": "WAN Upload Rate", + "wanDownloadRate": "WAN Download Rate" + } } diff --git a/src/widgets/opnsense/component.jsx b/src/widgets/opnsense/component.jsx index 9afd5f7c..cb0fad60 100644 --- a/src/widgets/opnsense/component.jsx +++ b/src/widgets/opnsense/component.jsx @@ -6,7 +6,6 @@ import useWidgetAPI from "utils/proxy/use-widget-api"; export default function Component({ service }) { function toKb(value, unit) { - console.log("toKB : value: ", value, " Unit:", unit); switch (unit) { case "K": return parseInt(value, 10); @@ -80,14 +79,57 @@ export default function Component({ service }) { const wanUpload = interfaceData.interfaces.wan['bytes transmitted']; const wanDownload = interfaceData.interfaces.wan['bytes received']; + const datas = localStorage.getItem('opnsensewidgetdatas'); + + 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; + + if (wanUploadDiff > 0 || wanDownloadDiff > 0) { + const specialTimeValue = new Date().getTime(); + console.log("Special time: ", specialTimeValue); + const specialTime = localStorage.getItem('opnsensewidgettime'); + 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('opnsensewidgetrate', JSON.stringify({ + wanUploadRate, + wanDownloadRate + })); + console.log("Time diff: ", timeDif, "wanUploadRate: ", wanUploadRate, "wanDownloadRate: ", wanDownloadRate); + } + localStorage.setItem('opnsensewidgettime', JSON.stringify({specialtime: specialTimeValue})); + } else { + const rate = localStorage.getItem('opnsensewidgetrate'); + if (rate !== null) { + const rateObj = JSON.parse(rate); + wanUploadRate = rateObj.wanUploadRate; + wanDownloadRate = rateObj.wanDownloadRate; + } + } + console.log("wanUploadDiff:", wanUploadDiff); + console.log("wanDownloadDiff:", wanDownloadDiff); + } + localStorage.setItem('opnsensewidgetdatas', JSON.stringify({ + wanUpload, + wanDownload, + time: Date.now()})); return ( - + + + ); }