From 0a2322a718ef928c4f91ff90674016c7c96bcc0e Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Sat, 29 Jul 2023 22:10:48 -0700 Subject: [PATCH] Consolidate urbackup code, syntax changes --- src/widgets/urbackup/component.jsx | 54 +++++++++++++++++++- src/widgets/urbackup/stats-helper.js | 76 ---------------------------- 2 files changed, 52 insertions(+), 78 deletions(-) delete mode 100644 src/widgets/urbackup/stats-helper.js diff --git a/src/widgets/urbackup/component.jsx b/src/widgets/urbackup/component.jsx index c4b77751..9b03b595 100644 --- a/src/widgets/urbackup/component.jsx +++ b/src/widgets/urbackup/component.jsx @@ -1,11 +1,61 @@ import { useTranslation } from "next-i18next"; -import determineStatuses from "./stats-helper"; - import Container from "components/services/widget/container"; import Block from "components/services/widget/block"; import useWidgetAPI from "utils/proxy/use-widget-api"; +const Status = Object.freeze({ + ok: Symbol("Ok"), + errored: Symbol("Errored"), + noRecent: Symbol("No Recent Backups") +}); + +function hasRecentBackups(client, maxDays){ + const days = maxDays || 3; + const diffTime = days*24*60*60 // 7 days + const recentFile = (client.lastbackup > (Date.now() / 1000 - diffTime)); + const recentImage = ((client.lastbackup_image > (Date.now() / 1000 - diffTime)||client.image_not_supported)); + return (recentFile && recentImage); +} + +function determineStatuses(urbackupData) { + let ok = 0; + let errored = 0; + let noRecent = 0; + let status; + urbackupData.clientStatuses.forEach((client) => { + status = Status.noRecent; + if (hasRecentBackups(client, urbackupData.maxDays)) { + status = (client.file_ok && (client.image_ok || client.image_not_supported)) ? Status.ok : Status.errored; + } + switch (status) { + case Status.ok: + ok += 1; + break; + case Status.errored: + errored += 1; + break; + case Status.noRecent: + noRecent += 1; + break; + default: + break; + } + }); + + let totalUsage = false; + + // calculate total disk space if provided + if (urbackupData.diskUsage) { + totalUsage = 0.0; + urbackupData.diskUsage.forEach((client) => { + totalUsage += client.used; + }); + } + + return { ok, errored, noRecent, totalUsage }; +} + export default function Component({ service }) { const { t } = useTranslation(); diff --git a/src/widgets/urbackup/stats-helper.js b/src/widgets/urbackup/stats-helper.js deleted file mode 100644 index 48405afe..00000000 --- a/src/widgets/urbackup/stats-helper.js +++ /dev/null @@ -1,76 +0,0 @@ -const Status = Object.freeze({ - ok: Symbol("Ok"), - errored: Symbol("Errored"), - noRecent: Symbol("No Recent Backups") -}); - -function hasRecentBackups(client, maxDays){ - const days = maxDays || 3; - const diffTime = days*24*60*60 // 7 days - const recentFile = (client.lastbackup > (Date.now() / 1000 - diffTime)); - const recentImage = ((client.lastbackup_image > (Date.now() / 1000 - diffTime)||client.image_not_supported)); - return (recentFile && recentImage); -} - -function recentBackupsOk(client){ - return (client.file_ok && (client.image_ok || client.image_not_supported)); -} - -function determineClientStatus(client, maxDays){ - let status; - if (hasRecentBackups(client, maxDays)) - { - if (recentBackupsOk(client)) - { - status = Status.ok - } - else - { - status = Status.errored - } - } - else - { - status = Status.noRecent - } - - return status; -} - -export default function determineStatuses(urbackupData) { - let ok = 0; - let errored = 0; - let noRecent = 0; - let result; - urbackupData.clientStatuses.forEach((client) => { - result = determineClientStatus(client, urbackupData.maxDays); - switch (result) - { - case Status.ok: - ok +=1; - break; - case Status.errored: - errored += 1; - break; - case Status.noRecent: - noRecent += 1; - break; - default: - break; - } - }); - - let totalUsage = false; - - // calculate total disk space if provided - if (urbackupData.diskUsage){ - totalUsage = 0.0; - urbackupData.diskUsage.forEach((client) => { - totalUsage += client.used; - }); - } - - return {ok, errored, noRecent, totalUsage}; -} - -