@plutonhq/core-frontend 0.1.13 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-lib/@types/backups.d.ts +26 -0
- package/dist-lib/@types/backups.d.ts.map +1 -1
- package/dist-lib/@types/devices.d.ts +7 -0
- package/dist-lib/@types/devices.d.ts.map +1 -1
- package/dist-lib/@types/plans.d.ts +21 -1
- package/dist-lib/@types/plans.d.ts.map +1 -1
- package/dist-lib/@types/restores.d.ts +2 -0
- package/dist-lib/@types/restores.d.ts.map +1 -1
- package/dist-lib/components/Device/DeviceBackups/DeviceBackups.d.ts +3 -2
- package/dist-lib/components/Device/DeviceBackups/DeviceBackups.d.ts.map +1 -1
- package/dist-lib/components/Device/DeviceBackups/DeviceBackups.js +73 -85
- package/dist-lib/components/Device/DeviceBackups/DeviceBackups.js.map +1 -1
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.d.ts.map +1 -1
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.js +88 -50
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.js.map +1 -1
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js +70 -38
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js.map +1 -1
- package/dist-lib/components/Plan/BackupProgress/BackupProgress.d.ts.map +1 -1
- package/dist-lib/components/Plan/BackupProgress/BackupProgress.js +166 -123
- package/dist-lib/components/Plan/BackupProgress/BackupProgress.js.map +1 -1
- package/dist-lib/components/Plan/BackupProgress/BackupProgress.module.scss.js +64 -30
- package/dist-lib/components/Plan/BackupProgress/BackupProgress.module.scss.js.map +1 -1
- package/dist-lib/components/Plan/Backups/Backups.d.ts +8 -1
- package/dist-lib/components/Plan/Backups/Backups.d.ts.map +1 -1
- package/dist-lib/components/Plan/Backups/Backups.js +154 -125
- package/dist-lib/components/Plan/Backups/Backups.js.map +1 -1
- package/dist-lib/components/Plan/EditPlan/EditPlan.d.ts.map +1 -1
- package/dist-lib/components/Plan/EditPlan/EditPlan.js +11 -10
- package/dist-lib/components/Plan/EditPlan/EditPlan.js.map +1 -1
- package/dist-lib/components/Plan/Mirrors/MirrorDetails.d.ts +12 -0
- package/dist-lib/components/Plan/Mirrors/MirrorDetails.d.ts.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorDetails.js +68 -0
- package/dist-lib/components/Plan/Mirrors/MirrorDetails.js.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorDetails.module.scss.js +26 -0
- package/dist-lib/components/Plan/Mirrors/MirrorDetails.module.scss.js.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.d.ts +11 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.d.ts.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.js +38 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.js.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.module.scss.js +16 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStatusBadge.module.scss.js.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.d.ts +14 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.d.ts.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.js +54 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.js.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.module.scss.js +26 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelector.module.scss.js.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.d.ts +15 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.d.ts.map +1 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.js +34 -0
- package/dist-lib/components/Plan/Mirrors/MirrorStorageSelectorModal.js.map +1 -0
- package/dist-lib/components/Plan/PlanBackups/PlanBackups.d.ts.map +1 -1
- package/dist-lib/components/Plan/PlanBackups/PlanBackups.js +20 -17
- package/dist-lib/components/Plan/PlanBackups/PlanBackups.js.map +1 -1
- package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts +2 -1
- package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts.map +1 -1
- package/dist-lib/components/Plan/PlanForm/PlanForm.js +85 -58
- package/dist-lib/components/Plan/PlanForm/PlanForm.js.map +1 -1
- package/dist-lib/components/Plan/PlanItems/PlanItem.d.ts.map +1 -1
- package/dist-lib/components/Plan/PlanItems/PlanItem.js +58 -59
- package/dist-lib/components/Plan/PlanItems/PlanItem.js.map +1 -1
- package/dist-lib/components/Plan/PlanRemoveModal/PlanRemoveModal.js +8 -8
- package/dist-lib/components/Plan/PlanRemoveModal/PlanRemoveModal.js.map +1 -1
- package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.d.ts +14 -0
- package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.d.ts.map +1 -0
- package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.js +290 -0
- package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.js.map +1 -0
- package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.module.scss.js +26 -0
- package/dist-lib/components/Plan/PlanSettings/PlanReplicationSettings.module.scss.js.map +1 -0
- package/dist-lib/components/Plan/PlanStats/PlanStats.d.ts.map +1 -1
- package/dist-lib/components/Plan/PlanStats/PlanStats.js +41 -42
- package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
- package/dist-lib/components/Plan/PlanStats/PlanStats.module.scss.js +5 -5
- package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts +15 -0
- package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.d.ts.map +1 -0
- package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js +69 -0
- package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.js.map +1 -0
- package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js +16 -0
- package/dist-lib/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss.js.map +1 -0
- package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.d.ts.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js +36 -34
- package/dist-lib/components/Restore/RestoreWizard/RestoreConfirmStep.js.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.d.ts.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js +7 -5
- package/dist-lib/components/Restore/RestoreWizard/RestorePreviewStep.js.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts +12 -4
- package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.d.ts.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js +44 -32
- package/dist-lib/components/Restore/RestoreWizard/RestoreSettingsStep.js.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts +5 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.d.ts.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js +48 -44
- package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.js.map +1 -1
- package/dist-lib/components/Restore/RestoreWizard/RestoreWizard.module.scss.js +32 -32
- package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js +14 -14
- package/dist-lib/components/Settings/GeneralSettings/GeneralSettings.js.map +1 -1
- package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.d.ts.map +1 -1
- package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js +28 -19
- package/dist-lib/components/Settings/IntegrationSettings/IntegrationSettings.js.map +1 -1
- package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
- package/dist-lib/components/common/Icon/Icon.js +11 -0
- package/dist-lib/components/common/Icon/Icon.js.map +1 -1
- package/dist-lib/components/common/PageHeader/PageHeader.module.scss.js +6 -6
- package/dist-lib/components/index.d.ts +4 -0
- package/dist-lib/components/index.d.ts.map +1 -1
- package/dist-lib/components.js +86 -78
- package/dist-lib/components.js.map +1 -1
- package/dist-lib/hooks/usePwaAutoUpdate.d.ts +11 -2
- package/dist-lib/hooks/usePwaAutoUpdate.d.ts.map +1 -1
- package/dist-lib/hooks/usePwaAutoUpdate.js +32 -10
- package/dist-lib/hooks/usePwaAutoUpdate.js.map +1 -1
- package/dist-lib/router.d.ts.map +1 -1
- package/dist-lib/router.js +46 -35
- package/dist-lib/router.js.map +1 -1
- package/dist-lib/routes/DeviceSingle/DeviceSingle.d.ts.map +1 -1
- package/dist-lib/routes/DeviceSingle/DeviceSingle.js +40 -40
- package/dist-lib/routes/DeviceSingle/DeviceSingle.js.map +1 -1
- package/dist-lib/services/backups.d.ts +15 -2
- package/dist-lib/services/backups.d.ts.map +1 -1
- package/dist-lib/services/backups.js +119 -100
- package/dist-lib/services/backups.js.map +1 -1
- package/dist-lib/services/plans.d.ts +14 -0
- package/dist-lib/services/plans.d.ts.map +1 -1
- package/dist-lib/services/plans.js +160 -129
- package/dist-lib/services/plans.js.map +1 -1
- package/dist-lib/services/restores.d.ts +10 -2
- package/dist-lib/services/restores.d.ts.map +1 -1
- package/dist-lib/services/restores.js +61 -57
- package/dist-lib/services/restores.js.map +1 -1
- package/dist-lib/services/users.d.ts.map +1 -1
- package/dist-lib/services/users.js +32 -32
- package/dist-lib/services/users.js.map +1 -1
- package/dist-lib/services.js +107 -103
- package/dist-lib/styles/core-frontend.css +1 -1
- package/dist-lib/utils/progressHelpers.d.ts +12 -1
- package/dist-lib/utils/progressHelpers.d.ts.map +1 -1
- package/dist-lib/utils/progressHelpers.js +121 -63
- package/dist-lib/utils/progressHelpers.js.map +1 -1
- package/dist-lib/utils.js +29 -28
- package/package.json +1 -1
- package/src/@types/backups.ts +28 -0
- package/src/@types/devices.ts +8 -0
- package/src/@types/plans.ts +23 -1
- package/src/@types/restores.ts +2 -0
- package/src/components/Device/DeviceBackups/DeviceBackups.tsx +11 -36
- package/src/components/Plan/BackupEvents/BackupEvents.module.scss +65 -0
- package/src/components/Plan/BackupEvents/BackupEvents.tsx +65 -4
- package/src/components/Plan/BackupProgress/BackupProgress.module.scss +121 -3
- package/src/components/Plan/BackupProgress/BackupProgress.tsx +149 -71
- package/src/components/Plan/Backups/Backups.tsx +52 -4
- package/src/components/Plan/EditPlan/EditPlan.tsx +1 -0
- package/src/components/Plan/Mirrors/MirrorDetails.module.scss +76 -0
- package/src/components/Plan/Mirrors/MirrorDetails.tsx +100 -0
- package/src/components/Plan/Mirrors/MirrorStatusBadge.module.scss +25 -0
- package/src/components/Plan/Mirrors/MirrorStatusBadge.tsx +65 -0
- package/src/components/Plan/Mirrors/MirrorStorageSelector.module.scss +97 -0
- package/src/components/Plan/Mirrors/MirrorStorageSelector.tsx +70 -0
- package/src/components/Plan/Mirrors/MirrorStorageSelectorModal.tsx +40 -0
- package/src/components/Plan/PlanBackups/PlanBackups.tsx +4 -1
- package/src/components/Plan/PlanForm/PlanForm.tsx +30 -3
- package/src/components/Plan/PlanItems/PlanItem.tsx +3 -3
- package/src/components/Plan/PlanRemoveModal/PlanRemoveModal.tsx +1 -1
- package/src/components/Plan/PlanSettings/PlanReplicationSettings.module.scss +105 -0
- package/src/components/Plan/PlanSettings/PlanReplicationSettings.tsx +334 -0
- package/src/components/Plan/PlanStats/PlanStats.module.scss +1 -1
- package/src/components/Plan/PlanStats/PlanStats.tsx +8 -8
- package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.module.scss +43 -0
- package/src/components/Plan/PlanStorageInfo/PlanStorageInfo.tsx +83 -0
- package/src/components/Restore/RestoreWizard/RestoreConfirmStep.tsx +2 -0
- package/src/components/Restore/RestoreWizard/RestorePreviewStep.tsx +2 -0
- package/src/components/Restore/RestoreWizard/RestoreSettingsStep.tsx +36 -13
- package/src/components/Restore/RestoreWizard/RestoreWizard.module.scss +4 -0
- package/src/components/Restore/RestoreWizard/RestoreWizard.tsx +9 -1
- package/src/components/Settings/GeneralSettings/GeneralSettings.tsx +1 -1
- package/src/components/Settings/IntegrationSettings/IntegrationSettings.tsx +9 -2
- package/src/components/common/Icon/Icon.tsx +10 -1
- package/src/components/common/PageHeader/PageHeader.module.scss +3 -0
- package/src/components/index.ts +6 -0
- package/src/hooks/usePwaAutoUpdate.ts +51 -11
- package/src/router.tsx +26 -17
- package/src/routes/DeviceSingle/DeviceSingle.tsx +3 -3
- package/src/services/backups.ts +32 -9
- package/src/services/plans.ts +45 -0
- package/src/services/restores.ts +10 -2
- package/src/services/users.ts +14 -5
- package/src/utils/progressHelpers.ts +85 -1
|
@@ -1,160 +1,203 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useState as
|
|
3
|
-
import { useQueryClient as
|
|
4
|
-
import { toast as
|
|
5
|
-
import
|
|
6
|
-
import { useCancelBackup as
|
|
7
|
-
import
|
|
8
|
-
import { timeAgo as
|
|
9
|
-
import { extractResticData as
|
|
10
|
-
import
|
|
11
|
-
import { useCancelRestore as
|
|
12
|
-
import
|
|
13
|
-
const
|
|
14
|
-
const [
|
|
1
|
+
import { jsxs as r, jsx as t, Fragment as C } from "react/jsx-runtime";
|
|
2
|
+
import { useState as E } from "react";
|
|
3
|
+
import { useQueryClient as J } from "@tanstack/react-query";
|
|
4
|
+
import { toast as j } from "react-toastify";
|
|
5
|
+
import d from "../../common/Icon/Icon.js";
|
|
6
|
+
import { useCancelBackup as V, useGetBackupProgress as W } from "../../../services/backups.js";
|
|
7
|
+
import e from "./BackupProgress.module.scss.js";
|
|
8
|
+
import { timeAgo as X, formatDateTime as Z, formatBytes as L, formatSeconds as D } from "../../../utils/helpers.js";
|
|
9
|
+
import { extractResticData as ee, generateBackupProgressMessage as se, generateRestoreProgressMessage as re, generateMirrorProgressMessage as te } from "../../../utils/progressHelpers.js";
|
|
10
|
+
import ne from "../../common/ActionModal/ActionModal.js";
|
|
11
|
+
import { useCancelRestore as oe, useGetRestoreProgress as ae } from "../../../services/restores.js";
|
|
12
|
+
import ie from "../BackupEvents/BackupEvents.js";
|
|
13
|
+
const ye = ({ item: l, sourceId: k, sourceType: v, planId: c, type: o = "backup" }) => {
|
|
14
|
+
const [O, R] = E(!1), [Q, S] = E(!1), $ = J(), B = oe(), w = V(), { id: g, started: y } = l, { data: a } = o === "backup" ? W({ id: g, sourceId: k, sourceType: v, planId: c }) : ae({ id: g, sourceId: k, sourceType: v, planId: c });
|
|
15
15
|
console.log("#### data :", a);
|
|
16
|
-
const
|
|
17
|
-
total_files_processed:
|
|
18
|
-
files_done:
|
|
19
|
-
total_bytes_processed:
|
|
20
|
-
bytes_done:
|
|
21
|
-
bytes_restored:
|
|
22
|
-
files_restored:
|
|
23
|
-
seconds_remaining:
|
|
24
|
-
percent_done:
|
|
25
|
-
} =
|
|
26
|
-
let
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
console.log("cancel :",
|
|
30
|
-
|
|
31
|
-
{ planId:
|
|
16
|
+
const s = ee(a), G = o === "backup" ? se(a) : re(a), {
|
|
17
|
+
total_files_processed: I = (s == null ? void 0 : s.total_files) || 0,
|
|
18
|
+
files_done: K = 0,
|
|
19
|
+
total_bytes_processed: N = (s == null ? void 0 : s.total_bytes_processed) || (s == null ? void 0 : s.total_bytes) || 0,
|
|
20
|
+
bytes_done: F = 0,
|
|
21
|
+
bytes_restored: z = 0,
|
|
22
|
+
files_restored: A = 0,
|
|
23
|
+
seconds_remaining: U = 0,
|
|
24
|
+
percent_done: _ = 0
|
|
25
|
+
} = s || {};
|
|
26
|
+
let h = K, f = F, P = N, T = I, u = N ? Math.round(F / N * 100) : 0;
|
|
27
|
+
o === "restore" && (u = Math.round(_ * 100), s != null && s.total_bytes && (P = s.total_bytes), z ? f = z : s != null && s.total_bytes && (f = Math.round(_ * s.total_bytes)), A ? h = A : s != null && s.total_files && (h = Math.round(_ * s.total_files))), (s == null ? void 0 : s.message_type) === "summary" && (u = 100, h = T, f = P);
|
|
28
|
+
const Y = () => {
|
|
29
|
+
console.log("cancel :", o, l), o === "backup" ? j.promise(
|
|
30
|
+
w.mutateAsync(
|
|
31
|
+
{ planId: c, backupId: l.id },
|
|
32
32
|
{
|
|
33
|
-
onSuccess: () =>
|
|
33
|
+
onSuccess: () => $.invalidateQueries({ queryKey: ["plan", c] })
|
|
34
34
|
}
|
|
35
35
|
),
|
|
36
36
|
{
|
|
37
37
|
pending: "Sending Cancel Request...",
|
|
38
38
|
success: "Backup process Cancelled!",
|
|
39
39
|
error: {
|
|
40
|
-
render({ data:
|
|
41
|
-
return `Failed to cancel backup process. ${(
|
|
40
|
+
render({ data: i }) {
|
|
41
|
+
return `Failed to cancel backup process. ${(i == null ? void 0 : i.message) || "Unknown Error."}`;
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
) :
|
|
46
|
-
|
|
47
|
-
{ planId:
|
|
45
|
+
) : j.promise(
|
|
46
|
+
B.mutateAsync(
|
|
47
|
+
{ planId: c, restoreId: l.id },
|
|
48
48
|
{
|
|
49
|
-
onSuccess: () =>
|
|
49
|
+
onSuccess: () => $.invalidateQueries({ queryKey: ["plan", c] })
|
|
50
50
|
}
|
|
51
51
|
),
|
|
52
52
|
{
|
|
53
53
|
pending: "Sending Cancel Request...",
|
|
54
54
|
success: "Restore process Cancelled!",
|
|
55
55
|
error: {
|
|
56
|
-
render({ data:
|
|
57
|
-
return `Failed to cancel restore process. ${(
|
|
56
|
+
render({ data: i }) {
|
|
57
|
+
return `Failed to cancel restore process. ${(i == null ? void 0 : i.message) || "Unknown Error."}`;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
);
|
|
62
62
|
};
|
|
63
|
-
return /* @__PURE__ */
|
|
64
|
-
/* @__PURE__ */ r("div", { className:
|
|
65
|
-
|
|
66
|
-
/* @__PURE__ */
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
/* @__PURE__ */ r(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
l.errorMsg && /* @__PURE__ */ s("span", { className: o.backupError, children: [
|
|
76
|
-
/* @__PURE__ */ r(m, { type: "error-circle-filled", size: 13 }),
|
|
77
|
-
" ",
|
|
78
|
-
/* @__PURE__ */ s("i", { "data-tooltip-id": "htmlToolTip", "data-tooltip-place": "top", "data-tooltip-html": l.errorMsg, children: [
|
|
79
|
-
/* @__PURE__ */ r("u", { children: "Error" }),
|
|
80
|
-
" Occurred."
|
|
63
|
+
return /* @__PURE__ */ r("div", { className: e.backup, children: [
|
|
64
|
+
/* @__PURE__ */ r("div", { className: e.backupProgress, children: [
|
|
65
|
+
/* @__PURE__ */ t("div", { className: e.backupIcon, children: /* @__PURE__ */ t(d, { type: "loading", size: 24 }) }),
|
|
66
|
+
/* @__PURE__ */ r("div", { className: e.backupLeft, children: [
|
|
67
|
+
/* @__PURE__ */ r("div", { className: e.backupId, children: [
|
|
68
|
+
o === "restore" ? "Restoring " : "",
|
|
69
|
+
"backup-",
|
|
70
|
+
g,
|
|
71
|
+
/* @__PURE__ */ r("span", { className: e.backupTime, title: Z(y), children: [
|
|
72
|
+
/* @__PURE__ */ t(d, { type: "clock", size: 12 }),
|
|
73
|
+
" Started ",
|
|
74
|
+
y ? X(new Date(y)) : "a few seconds ago"
|
|
81
75
|
] }),
|
|
82
|
-
|
|
83
|
-
|
|
76
|
+
l.errorMsg && /* @__PURE__ */ r("span", { className: e.backupError, children: [
|
|
77
|
+
/* @__PURE__ */ t(d, { type: "error-circle-filled", size: 13 }),
|
|
78
|
+
" ",
|
|
79
|
+
/* @__PURE__ */ r("i", { "data-tooltip-id": "htmlToolTip", "data-tooltip-place": "top", "data-tooltip-html": l.errorMsg, children: [
|
|
80
|
+
/* @__PURE__ */ t("u", { children: "Error" }),
|
|
81
|
+
" Occurred."
|
|
82
|
+
] }),
|
|
83
|
+
" ",
|
|
84
|
+
"Retrying..."
|
|
85
|
+
] })
|
|
86
|
+
] }),
|
|
87
|
+
/* @__PURE__ */ r("div", { className: e.backupStart, children: [
|
|
88
|
+
/* @__PURE__ */ t("div", { children: /* @__PURE__ */ t("span", { className: e.progressMessage, onClick: () => S(!0), children: G }) }),
|
|
89
|
+
/* @__PURE__ */ r("button", { onClick: () => R(!0), title: `Cancel ${o}`, children: [
|
|
90
|
+
/* @__PURE__ */ t(d, { type: "close", size: 12 }),
|
|
91
|
+
" Cancel"
|
|
92
|
+
] })
|
|
84
93
|
] })
|
|
85
94
|
] }),
|
|
86
|
-
/* @__PURE__ */
|
|
87
|
-
/* @__PURE__ */ r("div", {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
" Files"
|
|
95
|
+
/* @__PURE__ */ r("div", { className: e.backupRight, children: [
|
|
96
|
+
/* @__PURE__ */ r("div", { className: e.ProgressStats, children: [
|
|
97
|
+
/* @__PURE__ */ r("div", { className: e.ProgressStatsLeft, children: [
|
|
98
|
+
/* @__PURE__ */ r("span", { children: [
|
|
99
|
+
h,
|
|
100
|
+
" / ",
|
|
101
|
+
T,
|
|
102
|
+
" Files"
|
|
103
|
+
] }),
|
|
104
|
+
/* @__PURE__ */ t("i", {}),
|
|
105
|
+
/* @__PURE__ */ r("span", { children: [
|
|
106
|
+
L(f),
|
|
107
|
+
" / ",
|
|
108
|
+
L(P)
|
|
109
|
+
] })
|
|
102
110
|
] }),
|
|
103
|
-
/* @__PURE__ */
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
A(_)
|
|
108
|
-
] })
|
|
111
|
+
/* @__PURE__ */ t("div", { className: e.ProgressStatsRight, children: o !== "restore" && /* @__PURE__ */ r(C, { children: [
|
|
112
|
+
"Remaining: ",
|
|
113
|
+
D(U)
|
|
114
|
+
] }) })
|
|
109
115
|
] }),
|
|
110
|
-
/* @__PURE__ */
|
|
111
|
-
"
|
|
112
|
-
|
|
113
|
-
|
|
116
|
+
/* @__PURE__ */ t("div", { className: e.progressBar, children: /* @__PURE__ */ t(
|
|
117
|
+
"div",
|
|
118
|
+
{
|
|
119
|
+
className: `${e.progressBarFill} ${u > 3 ? e.progressBarFilled : ""}`,
|
|
120
|
+
style: { width: u + "%" },
|
|
121
|
+
children: /* @__PURE__ */ r("span", { children: [
|
|
122
|
+
u,
|
|
123
|
+
"%"
|
|
124
|
+
] })
|
|
125
|
+
}
|
|
126
|
+
) })
|
|
114
127
|
] }),
|
|
115
|
-
|
|
116
|
-
|
|
128
|
+
O && /* @__PURE__ */ t(
|
|
129
|
+
ne,
|
|
117
130
|
{
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
131
|
+
title: `Cancel ${o}`,
|
|
132
|
+
message: /* @__PURE__ */ t(C, { children: `Are you sure you want to cancel the ${o} process?` }),
|
|
133
|
+
closeModal: () => R(!1),
|
|
134
|
+
width: "400px",
|
|
135
|
+
primaryAction: {
|
|
136
|
+
title: `Yes, Cancel ${o}`,
|
|
137
|
+
type: "danger",
|
|
138
|
+
isPending: o === "restore" ? B.isPending : w.isPending,
|
|
139
|
+
action: () => Y()
|
|
140
|
+
}
|
|
124
141
|
}
|
|
125
|
-
)
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
isPending: t === "restore" ? M.isPending : v.isPending,
|
|
138
|
-
action: () => G()
|
|
142
|
+
),
|
|
143
|
+
Q && /* @__PURE__ */ t(
|
|
144
|
+
ie,
|
|
145
|
+
{
|
|
146
|
+
id: g,
|
|
147
|
+
type: o,
|
|
148
|
+
planId: c,
|
|
149
|
+
sourceId: k,
|
|
150
|
+
sourceType: v,
|
|
151
|
+
progressData: a,
|
|
152
|
+
inProgress: !0,
|
|
153
|
+
close: () => S(!1)
|
|
139
154
|
}
|
|
140
|
-
|
|
141
|
-
),
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
{
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
+
)
|
|
156
|
+
] }, l.id),
|
|
157
|
+
(a == null ? void 0 : a.mirrors) && Object.keys(a.mirrors).length > 0 && /* @__PURE__ */ r("div", { className: e.mirrorsSection, children: [
|
|
158
|
+
/* @__PURE__ */ t("div", { className: e.mirrorsTitle, children: "Replicating" }),
|
|
159
|
+
/* @__PURE__ */ t("div", { className: e.mirrorsList, children: Object.entries(a.mirrors).map(([i, n]) => {
|
|
160
|
+
var q, x;
|
|
161
|
+
const b = (x = (q = n.events) == null ? void 0 : q.slice().reverse().find((H) => H.resticData)) == null ? void 0 : x.resticData, p = b != null && b.percent_done ? Math.round(b.percent_done * 100) : 0, M = te(n);
|
|
162
|
+
let m = e.mirrorPending;
|
|
163
|
+
return n.status === "running" && (m = p > 0 ? e.mirrorRunning : e.mirrorRunningIndeterminate), n.status === "completed" && (m = e.mirrorCompleted), n.status === "failed" && (m = e.mirrorFailed), n.status === "retrying" && (m = e.mirrorRunningIndeterminate), /* @__PURE__ */ r("div", { className: e.mirrorItem, children: [
|
|
164
|
+
/* @__PURE__ */ r("div", { className: e.mirrorStorageIcon, children: [
|
|
165
|
+
(n.status === "running" || n.status === "pending" || n.status === "retrying") && /* @__PURE__ */ t(d, { type: "loading", size: 12 }),
|
|
166
|
+
/* @__PURE__ */ t("img", { src: `/providers/${n.storageType}.png` })
|
|
167
|
+
] }),
|
|
168
|
+
/* @__PURE__ */ r("div", { className: e.mirrorProgress, children: [
|
|
169
|
+
/* @__PURE__ */ r("div", { className: e.mirrorInfo, children: [
|
|
170
|
+
/* @__PURE__ */ t("span", { className: e.mirrorName, children: n.storageName }),
|
|
171
|
+
/* @__PURE__ */ r("span", { className: `${e.mirrorStatus} ${m}`, children: [
|
|
172
|
+
n.status === "pending" && "Pending",
|
|
173
|
+
n.status === "running" && (p > 0 ? `${p}% — ${M}` : M),
|
|
174
|
+
n.status === "completed" && /* @__PURE__ */ r(C, { children: [
|
|
175
|
+
/* @__PURE__ */ t(d, { type: "check", size: 10 }),
|
|
176
|
+
" Completed"
|
|
177
|
+
] }),
|
|
178
|
+
n.status === "failed" && /* @__PURE__ */ r("span", { "data-tooltip-id": "htmlToolTip", "data-tooltip-html": n.error || "Replication failed", children: [
|
|
179
|
+
/* @__PURE__ */ t(d, { type: "error", size: 12 }),
|
|
180
|
+
" Failed"
|
|
181
|
+
] }),
|
|
182
|
+
n.status === "retrying" && M
|
|
183
|
+
] })
|
|
184
|
+
] }),
|
|
185
|
+
/* @__PURE__ */ t("div", { className: e.mirrorBar, children: /* @__PURE__ */ t(
|
|
186
|
+
"div",
|
|
187
|
+
{
|
|
188
|
+
className: `${e.mirrorBarFill} ${m}`,
|
|
189
|
+
style: {
|
|
190
|
+
width: n.status === "completed" || n.status === "failed" ? "100%" : p > 0 ? `${p}%` : void 0
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
) })
|
|
194
|
+
] })
|
|
195
|
+
] }, i);
|
|
196
|
+
}) })
|
|
197
|
+
] })
|
|
155
198
|
] }, l.id);
|
|
156
199
|
};
|
|
157
200
|
export {
|
|
158
|
-
|
|
201
|
+
ye as default
|
|
159
202
|
};
|
|
160
203
|
//# sourceMappingURL=BackupProgress.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackupProgress.js","sources":["../../../../src/components/Plan/BackupProgress/BackupProgress.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { useQueryClient } from '@tanstack/react-query';\r\nimport { toast } from 'react-toastify';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport { useCancelBackup, useGetBackupProgress } from '../../../services/backups';\r\nimport classes from './BackupProgress.module.scss';\r\nimport { formatBytes, formatDateTime, formatSeconds, timeAgo } from '../../../utils/helpers';\r\nimport { generateBackupProgressMessage, extractResticData, generateRestoreProgressMessage } from '../../../utils/progressHelpers';\r\nimport { Backup } from '../../../@types/backups';\r\nimport { RestoreSlim } from '../../../@types/restores';\r\nimport ActionModal from '../../common/ActionModal/ActionModal';\r\nimport { useCancelRestore, useGetRestoreProgress } from '../../../services/restores';\r\nimport BackupEvents from '../BackupEvents/BackupEvents';\r\n\r\ninterface BackupProgressProps {\r\n item: Backup | RestoreSlim;\r\n sourceId: string;\r\n sourceType: string;\r\n planId: string;\r\n type: 'backup' | 'restore';\r\n}\r\n\r\nconst BackupProgress = ({ item, sourceId, sourceType, planId, type = 'backup' }: BackupProgressProps) => {\r\n const [showCancelModal, setShowCancelModal] = useState(false);\r\n const [showProgressDetails, setShowProgressDetails] = useState(false);\r\n const queryClient = useQueryClient();\r\n const cancelRestoreMutation = useCancelRestore();\r\n const cancelBackupMutation = useCancelBackup();\r\n\r\n const { id, started } = item;\r\n const { data: progressData } =\r\n type === 'backup' ? useGetBackupProgress({ id, sourceId, sourceType, planId }) : useGetRestoreProgress({ id, sourceId, sourceType, planId });\r\n\r\n console.log('#### data :', progressData);\r\n\r\n const resticData = extractResticData(progressData);\r\n const progressMessage = type === 'backup' ? generateBackupProgressMessage(progressData) : generateRestoreProgressMessage(progressData);\r\n\r\n // Extract progress values from restic data or use defaults\r\n const {\r\n total_files_processed: total_files = resticData?.total_files || 0,\r\n files_done = 0,\r\n total_bytes_processed: total_bytes = resticData?.total_bytes_processed || resticData?.total_bytes || 0,\r\n bytes_done = 0,\r\n bytes_restored = 0,\r\n files_restored = 0,\r\n seconds_remaining = 0,\r\n percent_done = 0,\r\n } = resticData || {};\r\n\r\n let filesProcessed = files_done;\r\n let bytesProcessed = bytes_done;\r\n let totalBytes = total_bytes;\r\n let totalFiles = total_files;\r\n let progressPercent = total_bytes ? Math.round((bytes_done / total_bytes) * 100) : 0;\r\n\r\n if (type === 'restore') {\r\n progressPercent = Math.round(percent_done * 100);\r\n if (resticData?.total_bytes) {\r\n totalBytes = resticData.total_bytes;\r\n }\r\n if (bytes_restored) {\r\n bytesProcessed = bytes_restored;\r\n } else {\r\n if (resticData?.total_bytes) {\r\n bytesProcessed = Math.round(percent_done * resticData.total_bytes);\r\n }\r\n }\r\n if (files_restored) {\r\n filesProcessed = files_restored;\r\n } else {\r\n if (resticData?.total_files) {\r\n filesProcessed = Math.round(percent_done * resticData.total_files);\r\n }\r\n }\r\n }\r\n\r\n // For completed backups, show 100% if we have summary data\r\n if (resticData?.message_type === 'summary') {\r\n progressPercent = 100;\r\n filesProcessed = totalFiles;\r\n bytesProcessed = totalBytes;\r\n }\r\n\r\n const cancel = () => {\r\n console.log('cancel :', type, item);\r\n if (type === 'backup') {\r\n toast.promise(\r\n cancelBackupMutation.mutateAsync(\r\n { planId, backupId: item.id },\r\n {\r\n onSuccess: () => queryClient.invalidateQueries({ queryKey: ['plan', planId] }),\r\n },\r\n ),\r\n {\r\n pending: 'Sending Cancel Request...',\r\n success: 'Backup process Cancelled!',\r\n error: {\r\n render({ data }: any) {\r\n // When the promise reject, data will contains the error\r\n return `Failed to cancel backup process. ${data?.message || 'Unknown Error.'}`;\r\n },\r\n },\r\n },\r\n );\r\n } else {\r\n toast.promise(\r\n cancelRestoreMutation.mutateAsync(\r\n { planId, restoreId: item.id },\r\n {\r\n onSuccess: () => queryClient.invalidateQueries({ queryKey: ['plan', planId] }),\r\n },\r\n ),\r\n {\r\n pending: 'Sending Cancel Request...',\r\n success: 'Restore process Cancelled!',\r\n error: {\r\n render({ data }: any) {\r\n // When the promise reject, data will contains the error\r\n return `Failed to cancel restore process. ${data?.message || 'Unknown Error.'}`;\r\n },\r\n },\r\n },\r\n );\r\n }\r\n };\r\n\r\n return (\r\n <div key={item.id} className={classes.backup}>\r\n <div className={classes.backupIcon}>\r\n <Icon type=\"loading\" size={24} />\r\n </div>\r\n <div className={classes.backupLeft}>\r\n <div className={classes.backupId}>\r\n {type === 'restore' ? 'Restoring ' : ''}backup-{id}\r\n <span className={classes.backupTime} title={formatDateTime(started)}>\r\n <Icon type=\"clock\" size={12} /> Started {started ? timeAgo(new Date(started)) : 'a few seconds ago'}\r\n </span>\r\n {item.errorMsg && (\r\n <span className={classes.backupError}>\r\n <Icon type=\"error-circle-filled\" size={13} />{' '}\r\n <i data-tooltip-id=\"htmlToolTip\" data-tooltip-place=\"top\" data-tooltip-html={item.errorMsg}>\r\n <u>Error</u> Occurred.\r\n </i>{' '}\r\n Retrying...\r\n </span>\r\n )}\r\n </div>\r\n <div className={classes.backupStart}>\r\n <div>\r\n <span className={classes.progressMessage} onClick={() => setShowProgressDetails(true)}>\r\n {progressMessage}\r\n </span>\r\n {/* <Icon type=\"clock\" size={12} /> Started {started ? timeAgo(new Date(started)) : 'a few seconds ago'} */}\r\n </div>\r\n <button onClick={() => setShowCancelModal(true)} title={`Cancel ${type}`}>\r\n <Icon type=\"close\" size={12} /> Cancel\r\n </button>\r\n </div>\r\n </div>\r\n <div className={classes.backupRight}>\r\n <div className={classes.ProgressStats}>\r\n <div className={classes.ProgressStatsLeft}>\r\n <span>\r\n {filesProcessed} / {totalFiles} Files\r\n </span>\r\n <i></i>\r\n <span>\r\n {formatBytes(bytesProcessed)} / {formatBytes(totalBytes)}\r\n </span>\r\n </div>\r\n <div className={classes.ProgressStatsRight}>{type !== 'restore' && <>Remaining: {formatSeconds(seconds_remaining)}</>}</div>\r\n </div>\r\n <div className={classes.progressBar}>\r\n <div\r\n className={`${classes.progressBarFill} ${progressPercent > 3 ? classes.progressBarFilled : ''}`}\r\n style={{ width: progressPercent + '%' }}\r\n >\r\n <span>{progressPercent}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n {showCancelModal && (\r\n <ActionModal\r\n title={`Cancel ${type}`}\r\n message={<>{`Are you sure you want to cancel the ${type} process?`}</>}\r\n closeModal={() => setShowCancelModal(false)}\r\n width=\"400px\"\r\n primaryAction={{\r\n title: `Yes, Cancel ${type}`,\r\n type: 'danger',\r\n isPending: type === 'restore' ? cancelRestoreMutation.isPending : cancelBackupMutation.isPending,\r\n action: () => cancel(),\r\n }}\r\n />\r\n )}\r\n {showProgressDetails && (\r\n <BackupEvents\r\n id={id}\r\n type={type}\r\n planId={planId}\r\n sourceId={sourceId}\r\n sourceType={sourceType}\r\n progressData={progressData}\r\n inProgress={true}\r\n close={() => setShowProgressDetails(false)}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\nexport default BackupProgress;\r\n"],"names":["BackupProgress","item","sourceId","sourceType","planId","type","showCancelModal","setShowCancelModal","useState","showProgressDetails","setShowProgressDetails","queryClient","useQueryClient","cancelRestoreMutation","useCancelRestore","cancelBackupMutation","useCancelBackup","id","started","progressData","useGetBackupProgress","useGetRestoreProgress","resticData","extractResticData","progressMessage","generateBackupProgressMessage","generateRestoreProgressMessage","total_files","files_done","total_bytes","bytes_done","bytes_restored","files_restored","seconds_remaining","percent_done","filesProcessed","bytesProcessed","totalBytes","totalFiles","progressPercent","cancel","toast","data","jsxs","classes","jsx","Icon","formatDateTime","timeAgo","formatBytes","Fragment","formatSeconds","ActionModal","BackupEvents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BackupProgress.js","sources":["../../../../src/components/Plan/BackupProgress/BackupProgress.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { useQueryClient } from '@tanstack/react-query';\r\nimport { toast } from 'react-toastify';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport { useCancelBackup, useGetBackupProgress } from '../../../services/backups';\r\nimport classes from './BackupProgress.module.scss';\r\nimport { formatBytes, formatDateTime, formatSeconds, timeAgo } from '../../../utils/helpers';\r\nimport {\r\n generateBackupProgressMessage,\r\n extractResticData,\r\n generateRestoreProgressMessage,\r\n generateMirrorProgressMessage,\r\n} from '../../../utils/progressHelpers';\r\nimport { Backup } from '../../../@types/backups';\r\nimport { RestoreSlim } from '../../../@types/restores';\r\nimport ActionModal from '../../common/ActionModal/ActionModal';\r\nimport { useCancelRestore, useGetRestoreProgress } from '../../../services/restores';\r\nimport BackupEvents from '../BackupEvents/BackupEvents';\r\nimport { ReplicationProgressData } from '../../../@types/backups';\r\n\r\ninterface BackupProgressProps {\r\n item: Backup | RestoreSlim;\r\n sourceId: string;\r\n sourceType: string;\r\n planId: string;\r\n type: 'backup' | 'restore';\r\n}\r\n\r\nconst BackupProgress = ({ item, sourceId, sourceType, planId, type = 'backup' }: BackupProgressProps) => {\r\n const [showCancelModal, setShowCancelModal] = useState(false);\r\n const [showProgressDetails, setShowProgressDetails] = useState(false);\r\n const queryClient = useQueryClient();\r\n const cancelRestoreMutation = useCancelRestore();\r\n const cancelBackupMutation = useCancelBackup();\r\n\r\n const { id, started } = item;\r\n const { data: progressData } =\r\n type === 'backup' ? useGetBackupProgress({ id, sourceId, sourceType, planId }) : useGetRestoreProgress({ id, sourceId, sourceType, planId });\r\n\r\n console.log('#### data :', progressData);\r\n\r\n const resticData = extractResticData(progressData);\r\n const progressMessage = type === 'backup' ? generateBackupProgressMessage(progressData) : generateRestoreProgressMessage(progressData);\r\n\r\n // Extract progress values from restic data or use defaults\r\n const {\r\n total_files_processed: total_files = resticData?.total_files || 0,\r\n files_done = 0,\r\n total_bytes_processed: total_bytes = resticData?.total_bytes_processed || resticData?.total_bytes || 0,\r\n bytes_done = 0,\r\n bytes_restored = 0,\r\n files_restored = 0,\r\n seconds_remaining = 0,\r\n percent_done = 0,\r\n } = resticData || {};\r\n\r\n let filesProcessed = files_done;\r\n let bytesProcessed = bytes_done;\r\n let totalBytes = total_bytes;\r\n let totalFiles = total_files;\r\n let progressPercent = total_bytes ? Math.round((bytes_done / total_bytes) * 100) : 0;\r\n\r\n if (type === 'restore') {\r\n progressPercent = Math.round(percent_done * 100);\r\n if (resticData?.total_bytes) {\r\n totalBytes = resticData.total_bytes;\r\n }\r\n if (bytes_restored) {\r\n bytesProcessed = bytes_restored;\r\n } else {\r\n if (resticData?.total_bytes) {\r\n bytesProcessed = Math.round(percent_done * resticData.total_bytes);\r\n }\r\n }\r\n if (files_restored) {\r\n filesProcessed = files_restored;\r\n } else {\r\n if (resticData?.total_files) {\r\n filesProcessed = Math.round(percent_done * resticData.total_files);\r\n }\r\n }\r\n }\r\n\r\n // For completed backups, show 100% if we have summary data\r\n if (resticData?.message_type === 'summary') {\r\n progressPercent = 100;\r\n filesProcessed = totalFiles;\r\n bytesProcessed = totalBytes;\r\n }\r\n\r\n const cancel = () => {\r\n console.log('cancel :', type, item);\r\n if (type === 'backup') {\r\n toast.promise(\r\n cancelBackupMutation.mutateAsync(\r\n { planId, backupId: item.id },\r\n {\r\n onSuccess: () => queryClient.invalidateQueries({ queryKey: ['plan', planId] }),\r\n },\r\n ),\r\n {\r\n pending: 'Sending Cancel Request...',\r\n success: 'Backup process Cancelled!',\r\n error: {\r\n render({ data }: any) {\r\n // When the promise reject, data will contains the error\r\n return `Failed to cancel backup process. ${data?.message || 'Unknown Error.'}`;\r\n },\r\n },\r\n },\r\n );\r\n } else {\r\n toast.promise(\r\n cancelRestoreMutation.mutateAsync(\r\n { planId, restoreId: item.id },\r\n {\r\n onSuccess: () => queryClient.invalidateQueries({ queryKey: ['plan', planId] }),\r\n },\r\n ),\r\n {\r\n pending: 'Sending Cancel Request...',\r\n success: 'Restore process Cancelled!',\r\n error: {\r\n render({ data }: any) {\r\n // When the promise reject, data will contains the error\r\n return `Failed to cancel restore process. ${data?.message || 'Unknown Error.'}`;\r\n },\r\n },\r\n },\r\n );\r\n }\r\n };\r\n\r\n return (\r\n <div key={item.id} className={classes.backup}>\r\n <div key={item.id} className={classes.backupProgress}>\r\n <div className={classes.backupIcon}>\r\n <Icon type=\"loading\" size={24} />\r\n </div>\r\n <div className={classes.backupLeft}>\r\n <div className={classes.backupId}>\r\n {type === 'restore' ? 'Restoring ' : ''}backup-{id}\r\n <span className={classes.backupTime} title={formatDateTime(started)}>\r\n <Icon type=\"clock\" size={12} /> Started {started ? timeAgo(new Date(started)) : 'a few seconds ago'}\r\n </span>\r\n {item.errorMsg && (\r\n <span className={classes.backupError}>\r\n <Icon type=\"error-circle-filled\" size={13} />{' '}\r\n <i data-tooltip-id=\"htmlToolTip\" data-tooltip-place=\"top\" data-tooltip-html={item.errorMsg}>\r\n <u>Error</u> Occurred.\r\n </i>{' '}\r\n Retrying...\r\n </span>\r\n )}\r\n </div>\r\n <div className={classes.backupStart}>\r\n <div>\r\n <span className={classes.progressMessage} onClick={() => setShowProgressDetails(true)}>\r\n {progressMessage}\r\n </span>\r\n {/* <Icon type=\"clock\" size={12} /> Started {started ? timeAgo(new Date(started)) : 'a few seconds ago'} */}\r\n </div>\r\n <button onClick={() => setShowCancelModal(true)} title={`Cancel ${type}`}>\r\n <Icon type=\"close\" size={12} /> Cancel\r\n </button>\r\n </div>\r\n </div>\r\n <div className={classes.backupRight}>\r\n <div className={classes.ProgressStats}>\r\n <div className={classes.ProgressStatsLeft}>\r\n <span>\r\n {filesProcessed} / {totalFiles} Files\r\n </span>\r\n <i></i>\r\n <span>\r\n {formatBytes(bytesProcessed)} / {formatBytes(totalBytes)}\r\n </span>\r\n </div>\r\n <div className={classes.ProgressStatsRight}>{type !== 'restore' && <>Remaining: {formatSeconds(seconds_remaining)}</>}</div>\r\n </div>\r\n <div className={classes.progressBar}>\r\n <div\r\n className={`${classes.progressBarFill} ${progressPercent > 3 ? classes.progressBarFilled : ''}`}\r\n style={{ width: progressPercent + '%' }}\r\n >\r\n <span>{progressPercent}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {showCancelModal && (\r\n <ActionModal\r\n title={`Cancel ${type}`}\r\n message={<>{`Are you sure you want to cancel the ${type} process?`}</>}\r\n closeModal={() => setShowCancelModal(false)}\r\n width=\"400px\"\r\n primaryAction={{\r\n title: `Yes, Cancel ${type}`,\r\n type: 'danger',\r\n isPending: type === 'restore' ? cancelRestoreMutation.isPending : cancelBackupMutation.isPending,\r\n action: () => cancel(),\r\n }}\r\n />\r\n )}\r\n {showProgressDetails && (\r\n <BackupEvents\r\n id={id}\r\n type={type}\r\n planId={planId}\r\n sourceId={sourceId}\r\n sourceType={sourceType}\r\n progressData={progressData}\r\n inProgress={true}\r\n close={() => setShowProgressDetails(false)}\r\n />\r\n )}\r\n </div>\r\n {/* Mirrors Progress */}\r\n {progressData?.mirrors && Object.keys(progressData.mirrors).length > 0 && (\r\n <div className={classes.mirrorsSection}>\r\n <div className={classes.mirrorsTitle}>Replicating</div>\r\n <div className={classes.mirrorsList}>\r\n {Object.entries(progressData.mirrors as Record<string, ReplicationProgressData>).map(([storageId, mirror]) => {\r\n const mirrorResticData = mirror.events\r\n ?.slice()\r\n .reverse()\r\n .find((e: any) => e.resticData)?.resticData;\r\n const mirrorPercent = mirrorResticData?.percent_done ? Math.round(mirrorResticData.percent_done * 100) : 0;\r\n const mirrorMessage = generateMirrorProgressMessage(mirror);\r\n\r\n let mirrorStatusClass = classes.mirrorPending;\r\n if (mirror.status === 'running')\r\n mirrorStatusClass = mirrorPercent > 0 ? classes.mirrorRunning : classes.mirrorRunningIndeterminate;\r\n if (mirror.status === 'completed') mirrorStatusClass = classes.mirrorCompleted;\r\n if (mirror.status === 'failed') mirrorStatusClass = classes.mirrorFailed;\r\n if (mirror.status === 'retrying') mirrorStatusClass = classes.mirrorRunningIndeterminate;\r\n\r\n return (\r\n <div key={storageId} className={classes.mirrorItem}>\r\n <div className={classes.mirrorStorageIcon}>\r\n {(mirror.status === 'running' || mirror.status === 'pending' || mirror.status === 'retrying') && (\r\n <Icon type=\"loading\" size={12} />\r\n )}\r\n <img src={`/providers/${mirror.storageType}.png`} />\r\n </div>\r\n <div className={classes.mirrorProgress}>\r\n <div className={classes.mirrorInfo}>\r\n <span className={classes.mirrorName}>{mirror.storageName}</span>\r\n <span className={`${classes.mirrorStatus} ${mirrorStatusClass}`}>\r\n {mirror.status === 'pending' && 'Pending'}\r\n {mirror.status === 'running' && (mirrorPercent > 0 ? `${mirrorPercent}% — ${mirrorMessage}` : mirrorMessage)}\r\n {mirror.status === 'completed' && (\r\n <>\r\n <Icon type=\"check\" size={10} /> Completed\r\n </>\r\n )}\r\n {mirror.status === 'failed' && (\r\n <span data-tooltip-id=\"htmlToolTip\" data-tooltip-html={mirror.error || 'Replication failed'}>\r\n <Icon type=\"error\" size={12} /> Failed\r\n </span>\r\n )}\r\n {mirror.status === 'retrying' && mirrorMessage}\r\n </span>\r\n </div>\r\n <div className={classes.mirrorBar}>\r\n <div\r\n className={`${classes.mirrorBarFill} ${mirrorStatusClass}`}\r\n style={{\r\n width:\r\n mirror.status === 'completed'\r\n ? '100%'\r\n : mirror.status === 'failed'\r\n ? '100%'\r\n : mirrorPercent > 0\r\n ? `${mirrorPercent}%`\r\n : undefined,\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\nexport default BackupProgress;\r\n"],"names":["BackupProgress","item","sourceId","sourceType","planId","type","showCancelModal","setShowCancelModal","useState","showProgressDetails","setShowProgressDetails","queryClient","useQueryClient","cancelRestoreMutation","useCancelRestore","cancelBackupMutation","useCancelBackup","id","started","progressData","useGetBackupProgress","useGetRestoreProgress","resticData","extractResticData","progressMessage","generateBackupProgressMessage","generateRestoreProgressMessage","total_files","files_done","total_bytes","bytes_done","bytes_restored","files_restored","seconds_remaining","percent_done","filesProcessed","bytesProcessed","totalBytes","totalFiles","progressPercent","cancel","toast","data","jsxs","classes","jsx","Icon","formatDateTime","timeAgo","formatBytes","Fragment","formatSeconds","ActionModal","BackupEvents","storageId","mirror","mirrorResticData","_b","_a","e","mirrorPercent","mirrorMessage","generateMirrorProgressMessage","mirrorStatusClass"],"mappings":"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"}
|
|
@@ -1,34 +1,68 @@
|
|
|
1
|
-
const s = "
|
|
2
|
-
backup:
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
const r = "_backup_Ixny9", o = "_backupProgress_xDCjG", s = "_backupIcon_J4leN", t = "_backupLeft_UPqQl", i = "_backupId_ZlECD", e = "_backupTime_0xn9G", n = "_backupError_H0da7", a = "_backupStart_ujzwz", c = "_progressMessage_BfK8D", m = "_backupRight_NYZAR", _ = "_ProgressStats_2xro3", g = "_ProgressStatsLeft_J8IdX", p = "_progressBar_OYKcJ", u = "_progressBarFill_lwhxS", l = "_progressBarFilled_VuGnr", k = "_mirrorsSection_z8keF", b = "_mirrorsTitle_ZDyN4", d = "_mirrorsList_Ue1GQ", I = "_mirrorItem_Ty0v9", S = "_mirrorProgress_XiPGx", B = "_mirrorStorageIcon_xmIoq", P = "_mirrorInfo_Mq3kr", F = "_mirrorName_ZcgU1", f = "_mirrorStatus_DDcMy", R = "_mirrorCompleted_thqfY", L = "_mirrorFailed_JxKNd", x = "_mirrorBar_jNMol", N = "_mirrorBarFill_HO948", T = "_mirrorRunning_s83HL", q = "_mirrorPending_qwFVI", C = "_mirrorRunningIndeterminate_CRqB0", D = {
|
|
2
|
+
backup: r,
|
|
3
|
+
backupProgress: o,
|
|
4
|
+
backupIcon: s,
|
|
5
|
+
backupLeft: t,
|
|
6
|
+
backupId: i,
|
|
7
|
+
backupTime: e,
|
|
8
|
+
backupError: n,
|
|
9
|
+
backupStart: a,
|
|
10
|
+
progressMessage: c,
|
|
11
|
+
backupRight: m,
|
|
12
|
+
ProgressStats: _,
|
|
13
|
+
ProgressStatsLeft: g,
|
|
14
|
+
progressBar: p,
|
|
15
|
+
progressBarFill: u,
|
|
16
|
+
progressBarFilled: l,
|
|
17
|
+
mirrorsSection: k,
|
|
18
|
+
mirrorsTitle: b,
|
|
19
|
+
mirrorsList: d,
|
|
20
|
+
mirrorItem: I,
|
|
21
|
+
mirrorProgress: S,
|
|
22
|
+
mirrorStorageIcon: B,
|
|
23
|
+
mirrorInfo: P,
|
|
24
|
+
mirrorName: F,
|
|
25
|
+
mirrorStatus: f,
|
|
26
|
+
mirrorCompleted: R,
|
|
27
|
+
mirrorFailed: L,
|
|
28
|
+
mirrorBar: x,
|
|
29
|
+
mirrorBarFill: N,
|
|
30
|
+
mirrorRunning: T,
|
|
31
|
+
mirrorPending: q,
|
|
32
|
+
mirrorRunningIndeterminate: C
|
|
16
33
|
};
|
|
17
34
|
export {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
_ as ProgressStats,
|
|
36
|
+
g as ProgressStatsLeft,
|
|
37
|
+
r as backup,
|
|
38
|
+
n as backupError,
|
|
39
|
+
s as backupIcon,
|
|
40
|
+
i as backupId,
|
|
41
|
+
t as backupLeft,
|
|
42
|
+
o as backupProgress,
|
|
43
|
+
m as backupRight,
|
|
44
|
+
a as backupStart,
|
|
45
|
+
e as backupTime,
|
|
46
|
+
D as default,
|
|
47
|
+
x as mirrorBar,
|
|
48
|
+
N as mirrorBarFill,
|
|
49
|
+
R as mirrorCompleted,
|
|
50
|
+
L as mirrorFailed,
|
|
51
|
+
P as mirrorInfo,
|
|
52
|
+
I as mirrorItem,
|
|
53
|
+
F as mirrorName,
|
|
54
|
+
q as mirrorPending,
|
|
55
|
+
S as mirrorProgress,
|
|
56
|
+
T as mirrorRunning,
|
|
57
|
+
C as mirrorRunningIndeterminate,
|
|
58
|
+
f as mirrorStatus,
|
|
59
|
+
B as mirrorStorageIcon,
|
|
60
|
+
d as mirrorsList,
|
|
61
|
+
k as mirrorsSection,
|
|
62
|
+
b as mirrorsTitle,
|
|
63
|
+
p as progressBar,
|
|
64
|
+
u as progressBarFill,
|
|
65
|
+
l as progressBarFilled,
|
|
66
|
+
c as progressMessage
|
|
33
67
|
};
|
|
34
68
|
//# sourceMappingURL=BackupProgress.module.scss.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackupProgress.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BackupProgress.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { Plan } from '../../../@types/plans';
|
|
2
|
-
declare const Backups: ({ planId, method, backups, sourceId, sourceType, }: {
|
|
2
|
+
declare const Backups: ({ planId, method, backups, sourceId, sourceType, replicationSettings, storage, deviceId, }: {
|
|
3
3
|
planId: string;
|
|
4
4
|
method: string;
|
|
5
5
|
backups: Plan["backups"];
|
|
6
6
|
sourceId: string;
|
|
7
7
|
sourceType: string;
|
|
8
8
|
snapLimit: number;
|
|
9
|
+
deviceId: string;
|
|
10
|
+
storage: {
|
|
11
|
+
id: string;
|
|
12
|
+
type: string;
|
|
13
|
+
name: string;
|
|
14
|
+
};
|
|
15
|
+
replicationSettings: Plan["settings"]["replication"];
|
|
9
16
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
10
17
|
export default Backups;
|
|
11
18
|
//# sourceMappingURL=Backups.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Backups.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/Backups/Backups.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"Backups.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/Backups/Backups.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AA+D7C,QAAA,MAAM,OAAO,GAAI,4FAUd;IACA,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACf,CAAC;IACF,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,CAAC;CACvD,4CAyUA,CAAC;AAEF,eAAe,OAAO,CAAC"}
|