@plutonhq/core-frontend 0.1.8 → 0.1.10
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/components/Plan/BackupEvents/BackupEvents.d.ts.map +1 -1
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.js +35 -34
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.js.map +1 -1
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js +28 -26
- package/dist-lib/components/Plan/BackupEvents/BackupEvents.module.scss.js.map +1 -1
- package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js +21 -21
- package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js.map +1 -1
- package/dist-lib/components/Plan/PlanStats/PlanStats.js +9 -9
- package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
- package/dist-lib/components/Storage/AddStorage/AddStorage.d.ts.map +1 -1
- package/dist-lib/components/Storage/AddStorage/AddStorage.js +52 -51
- package/dist-lib/components/Storage/AddStorage/AddStorage.js.map +1 -1
- package/dist-lib/components/Storage/StorageItem/StorageItem.d.ts.map +1 -1
- package/dist-lib/components/Storage/StorageItem/StorageItem.js +36 -36
- package/dist-lib/components/Storage/StorageItem/StorageItem.js.map +1 -1
- package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
- package/dist-lib/components/common/Icon/Icon.js +7 -0
- package/dist-lib/components/common/Icon/Icon.js.map +1 -1
- package/dist-lib/components/common/form/Select/Select.js +12 -12
- package/dist-lib/components/common/form/Select/Select.js.map +1 -1
- package/dist-lib/components/common/form/StoragePicker/StoragePicker.js +22 -22
- package/dist-lib/components/common/form/StoragePicker/StoragePicker.js.map +1 -1
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.d.ts +20 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.d.ts.map +1 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.js +75 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.js.map +1 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss.js +30 -0
- package/dist-lib/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss.js.map +1 -0
- package/dist-lib/hooks/usePlanSingleActions.d.ts.map +1 -1
- package/dist-lib/hooks/usePlanSingleActions.js +8 -7
- package/dist-lib/hooks/usePlanSingleActions.js.map +1 -1
- package/dist-lib/providers/drime.png +0 -0
- package/dist-lib/providers/filelu.png +0 -0
- package/dist-lib/providers/filen.png +0 -0
- package/dist-lib/providers/internxt.png +0 -0
- package/dist-lib/providers/shade.png +0 -0
- package/dist-lib/styles/core-frontend.css +1 -1
- package/dist-lib/utils/storageProviders.d.ts +40 -0
- package/dist-lib/utils/storageProviders.d.ts.map +1 -1
- package/dist-lib/utils/storageProviders.js +35 -0
- package/dist-lib/utils/storageProviders.js.map +1 -1
- package/package.json +11 -10
- package/src/components/Plan/BackupEvents/BackupEvents.module.scss +8 -0
- package/src/components/Plan/BackupEvents/BackupEvents.tsx +6 -1
- package/src/components/Plan/PlanSettings/PlanSourceSettings.tsx +1 -1
- package/src/components/Plan/PlanStats/PlanStats.tsx +1 -1
- package/src/components/Storage/AddStorage/AddStorage.tsx +7 -6
- package/src/components/Storage/StorageItem/StorageItem.tsx +9 -2
- package/src/components/common/Icon/Icon.tsx +8 -0
- package/src/components/common/form/Select/Select.tsx +1 -1
- package/src/components/common/form/StoragePicker/StoragePicker.tsx +1 -1
- package/src/components/common/form/StorageProviderSelect/StorageProviderSelect.module.scss +223 -0
- package/src/components/common/form/StorageProviderSelect/StorageProviderSelect.tsx +106 -0
- package/src/hooks/usePlanSingleActions.tsx +1 -0
- package/src/utils/storageProviders.ts +35 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackupEvents.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/BackupEvents/BackupEvents.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D,UAAU,iBAAiB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,QAAA,MAAM,YAAY,GAAI,6EAAwF,iBAAiB,
|
|
1
|
+
{"version":3,"file":"BackupEvents.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/BackupEvents/BackupEvents.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D,UAAU,iBAAiB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACzC,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,QAAA,MAAM,YAAY,GAAI,6EAAwF,iBAAiB,4CA6F9H,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -1,73 +1,74 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import
|
|
1
|
+
import { jsxs as a, jsx as o, Fragment as S } from "react/jsx-runtime";
|
|
2
|
+
import l from "../../common/Icon/Icon.js";
|
|
3
3
|
import k from "../../common/SidePanel/SidePanel.js";
|
|
4
|
-
import { getBackupEventActionMessage as
|
|
4
|
+
import { getBackupEventActionMessage as D, getRestoreEventActionMessage as R } from "../../../utils/progressHelpers.js";
|
|
5
5
|
import r from "./BackupEvents.module.scss.js";
|
|
6
|
-
import { useGetBackupProgressOnce as
|
|
7
|
-
import { useGetRestoreProgressOnce as
|
|
8
|
-
import { useState as
|
|
9
|
-
import
|
|
10
|
-
import { formatDuration as
|
|
11
|
-
const
|
|
6
|
+
import { useGetBackupProgressOnce as F } from "../../../services/backups.js";
|
|
7
|
+
import { useGetRestoreProgressOnce as M } from "../../../services/restores.js";
|
|
8
|
+
import { useState as w, useMemo as I } from "react";
|
|
9
|
+
import O from "../../common/Modal/Modal.js";
|
|
10
|
+
import { formatDuration as K } from "../../../utils/helpers.js";
|
|
11
|
+
const y = ({ id: d, type: t = "backup", sourceId: m, sourceType: h, planId: E, inProgress: c, progressData: A, close: _ }) => {
|
|
12
12
|
var u;
|
|
13
|
-
const [p, f] =
|
|
13
|
+
const [p, f] = w(!1), { data: g, isLoading: $ } = t === "backup" ? F({ id: d, sourceId: m, sourceType: h, planId: E }) : M({ id: d, sourceId: m, sourceType: h, planId: E }), i = A || g;
|
|
14
14
|
console.log("progressDataToUse :", i);
|
|
15
|
-
const
|
|
15
|
+
const n = I(() => {
|
|
16
16
|
if (!i || !i.events) return "";
|
|
17
17
|
let e = "";
|
|
18
|
-
return i.events.forEach((
|
|
19
|
-
|
|
18
|
+
return i.events.forEach((s) => {
|
|
19
|
+
s.action === "TASK_COMPLETED" ? e = "Completed" : s.action === "TASK_CANCELLED" ? e = "Cancelled" : s.action === "FAILED_PERMANENTLY" && (e = "Failed");
|
|
20
20
|
}), e;
|
|
21
21
|
}, [i]);
|
|
22
|
-
return /* @__PURE__ */
|
|
23
|
-
/* @__PURE__ */
|
|
24
|
-
/* @__PURE__ */
|
|
25
|
-
/* @__PURE__ */
|
|
22
|
+
return /* @__PURE__ */ a(k, { title: `${t}-${d} Events`, width: "1000px", icon: /* @__PURE__ */ o(l, { type: "logs", size: 18 }), footer: /* @__PURE__ */ o(S, {}), close: _, children: [
|
|
23
|
+
/* @__PURE__ */ a("div", { className: r.backupEventsContainer, children: [
|
|
24
|
+
/* @__PURE__ */ a("div", { className: r.header, children: [
|
|
25
|
+
/* @__PURE__ */ a(
|
|
26
26
|
"div",
|
|
27
27
|
{
|
|
28
28
|
title: "Status",
|
|
29
29
|
className: `${r.status} ${c ? r.inProgress : ""}
|
|
30
|
-
${!c &&
|
|
30
|
+
${!c && n === "Completed" ? r.hasCompleted : ""} ${!c && n === "Failed" ? r.hasFailed : ""}`,
|
|
31
31
|
children: [
|
|
32
|
-
/* @__PURE__ */ o(
|
|
32
|
+
/* @__PURE__ */ o(l, { type: c ? "loading" : n === "Completed" ? "check-circle-filled" : "error-circle-filled", size: 14 }),
|
|
33
33
|
" ",
|
|
34
|
-
c ? `${t} In Progress` : `${t} ${
|
|
34
|
+
c ? `${t} In Progress` : `${t} ${n}` || "Unknown"
|
|
35
35
|
]
|
|
36
36
|
}
|
|
37
37
|
),
|
|
38
|
-
/* @__PURE__ */
|
|
39
|
-
/* @__PURE__ */ o(
|
|
38
|
+
/* @__PURE__ */ a("div", { title: "Duration", className: r.duration, children: [
|
|
39
|
+
/* @__PURE__ */ o(l, { type: "clock", size: 14 }),
|
|
40
40
|
" ",
|
|
41
|
-
(i == null ? void 0 : i.duration) &&
|
|
41
|
+
(i == null ? void 0 : i.duration) && K(i.duration / 1e3) || "N/A"
|
|
42
42
|
] })
|
|
43
43
|
] }),
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
$ && /* @__PURE__ */ o("div", { className: r.loading, children: /* @__PURE__ */ o(l, { type: "loading", size: 30 }) }),
|
|
45
|
+
i && i.events && i.events.length > 0 ? /* @__PURE__ */ o("ul", { className: r.eventList, children: i.events.map((e, s) => {
|
|
46
|
+
const T = e.phase === "finished" && e.action === "TASK_COMPLETED", C = e.phase === "finished" && e.action === "FAILED_PERMANENTLY", L = e.action.includes("RETRY_ATTEMPT_"), P = e.action === "TASK_FAILED", N = e.action === "BACKUP_WARNING" || e.action === "RESTORE_WARNING" || e.action === "POST_BACKUP_PRUNE_FAILED" || e.action === "POST_BACKUP_REPO_STATS_FAILED";
|
|
47
|
+
return /* @__PURE__ */ a(
|
|
47
48
|
"li",
|
|
48
49
|
{
|
|
49
50
|
className: `${r.eventItem} ${e.error ? r.error : ""}
|
|
50
51
|
${T ? r.completed : ""} ${C ? r.failed : ""}
|
|
51
|
-
${
|
|
52
|
+
${L ? r.retrying : ""} ${P ? r.isError : ""}
|
|
52
53
|
${N ? r.isWarning : ""}`,
|
|
53
54
|
children: [
|
|
54
|
-
/* @__PURE__ */ o("span", { className: r.icon, children: /* @__PURE__ */ o(
|
|
55
|
+
/* @__PURE__ */ o("span", { className: r.icon, children: /* @__PURE__ */ o(l, { type: e.error || N ? "error-circle-filled" : "check-circle-filled", size: 16 }) }),
|
|
55
56
|
/* @__PURE__ */ o("span", { className: r.time, children: new Date(e.timestamp).toLocaleTimeString() }),
|
|
56
57
|
/* @__PURE__ */ o("span", { className: r.phase, children: e.phase }),
|
|
57
|
-
/* @__PURE__ */
|
|
58
|
-
t === "backup" ?
|
|
59
|
-
e.error && /* @__PURE__ */ o("span", { className: r.viewError, onClick: () => f(
|
|
58
|
+
/* @__PURE__ */ a("span", { className: r.action, children: [
|
|
59
|
+
t === "backup" ? D(e.action) : R(e.action),
|
|
60
|
+
e.error && /* @__PURE__ */ o("span", { className: r.viewError, onClick: () => f(s), children: "View Error" })
|
|
60
61
|
] })
|
|
61
62
|
]
|
|
62
63
|
},
|
|
63
|
-
|
|
64
|
+
s
|
|
64
65
|
);
|
|
65
66
|
}) }) : null
|
|
66
67
|
] }),
|
|
67
|
-
p && /* @__PURE__ */ o(
|
|
68
|
+
p && /* @__PURE__ */ o(O, { title: "Error Details", closeModal: () => f(!1), width: "400px", children: /* @__PURE__ */ o("div", { className: r.errorDetails, children: ((u = i == null ? void 0 : i.events[p]) == null ? void 0 : u.error) || "Unknown error occurred." }) })
|
|
68
69
|
] });
|
|
69
70
|
};
|
|
70
71
|
export {
|
|
71
|
-
|
|
72
|
+
y as default
|
|
72
73
|
};
|
|
73
74
|
//# sourceMappingURL=BackupEvents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackupEvents.js","sources":["../../../../src/components/Plan/BackupEvents/BackupEvents.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport SidePanel from '../../common/SidePanel/SidePanel';\r\nimport { getBackupEventActionMessage, getRestoreEventActionMessage } from '../../../utils/progressHelpers';\r\nimport classes from './BackupEvents.module.scss';\r\nimport { BackupProgressData } from '../../../@types/backups';\r\nimport { useGetBackupProgressOnce } from '../../../services/backups';\r\nimport { useGetRestoreProgressOnce } from '../../../services/restores';\r\nimport { useMemo, useState } from 'react';\r\nimport Modal from '../../common/Modal/Modal';\r\nimport { formatDuration } from '../../../utils/helpers';\r\n\r\ninterface BackupEventsProps {\r\n id: string;\r\n planId: string;\r\n sourceId: string;\r\n sourceType: string;\r\n type?: 'backup' | 'restore';\r\n inProgress?: boolean;\r\n progressData?: BackupProgressData | null;\r\n close: () => void;\r\n}\r\n\r\nconst BackupEvents = ({ id, type = 'backup', sourceId, sourceType, planId, inProgress, progressData, close }: BackupEventsProps) => {\r\n const [showError, setShowError] = useState<false | number>(false);\r\n const { data: fetchedProgressData } =\r\n type === 'backup'\r\n ? useGetBackupProgressOnce({ id, sourceId, sourceType, planId })\r\n : useGetRestoreProgressOnce({ id, sourceId, sourceType, planId });\r\n\r\n const progressDataToUse: BackupProgressData | null = progressData || fetchedProgressData;\r\n\r\n console.log('progressDataToUse :', progressDataToUse);\r\n const hasFinished = useMemo(() => {\r\n if (!progressDataToUse || !progressDataToUse.events) return '';\r\n let finishedEvent = '';\r\n progressDataToUse.events.forEach((event) => {\r\n if (event.action === 'TASK_COMPLETED') {\r\n finishedEvent = 'Completed';\r\n } else if (event.action === 'TASK_CANCELLED') {\r\n finishedEvent = 'Cancelled';\r\n } else if (event.action === 'FAILED_PERMANENTLY') {\r\n finishedEvent = 'Failed';\r\n }\r\n });\r\n return finishedEvent;\r\n }, [progressDataToUse]);\r\n\r\n return (\r\n <SidePanel title={`${type}-${id} Events`} width=\"1000px\" icon={<Icon type={'logs'} size={18} />} footer={<></>} close={close}>\r\n <div className={classes.backupEventsContainer}>\r\n <div className={classes.header}>\r\n <div\r\n title=\"Status\"\r\n className={`${classes.status} ${inProgress ? classes.inProgress : ''} \r\n ${!inProgress && hasFinished === 'Completed' ? classes.hasCompleted : ''} ${!inProgress && hasFinished === 'Failed' ? classes.hasFailed : ''}`}\r\n >\r\n <Icon type={inProgress ? 'loading' : hasFinished === 'Completed' ? 'check-circle-filled' : 'error-circle-filled'} size={14} />{' '}\r\n {inProgress ? `${type} In Progress` : `${type} ${hasFinished}` || 'Unknown'}\r\n </div>\r\n <div title=\"Duration\" className={classes.duration}>\r\n <Icon type=\"clock\" size={14} /> {(progressDataToUse?.duration && formatDuration(progressDataToUse.duration / 1000)) || 'N/A'}\r\n </div>\r\n </div>\r\n {progressDataToUse && progressDataToUse.events && progressDataToUse.events.length > 0 ? (\r\n <ul className={classes.eventList}>\r\n {progressDataToUse.events.map((event: any, index: number) => {\r\n const completed = event.phase === 'finished' && event.action === 'TASK_COMPLETED';\r\n const failed = event.phase === 'finished' && event.action === 'FAILED_PERMANENTLY';\r\n const retrying = event.action.includes('RETRY_ATTEMPT_');\r\n const isError = event.action === 'TASK_FAILED';\r\n const isWarning =\r\n event.action === 'BACKUP_WARNING' ||\r\n event.action === 'RESTORE_WARNING' ||\r\n event.action === 'POST_BACKUP_PRUNE_FAILED' ||\r\n event.action === 'POST_BACKUP_REPO_STATS_FAILED';\r\n return (\r\n <li\r\n key={index}\r\n className={`${classes.eventItem} ${event.error ? classes.error : ''} \r\n ${completed ? classes.completed : ''} ${failed ? classes.failed : ''} \r\n ${retrying ? classes.retrying : ''} ${isError ? classes.isError : ''} \r\n ${isWarning ? classes.isWarning : ''}`}\r\n >\r\n <span className={classes.icon}>\r\n <Icon type={event.error || isWarning ? 'error-circle-filled' : 'check-circle-filled'} size={16} />\r\n </span>\r\n {/* Timestamp should be converted to time only eg: 10:20:23 AM */}\r\n <span className={classes.time}>{new Date(event.timestamp).toLocaleTimeString()}</span>\r\n <span className={classes.phase}>{event.phase}</span>\r\n <span className={classes.action}>\r\n {type === 'backup' ? getBackupEventActionMessage(event.action) : getRestoreEventActionMessage(event.action)}\r\n {event.error && (\r\n <span className={classes.viewError} onClick={() => setShowError(index)}>\r\n View Error\r\n </span>\r\n )}\r\n </span>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n ) : null}\r\n </div>\r\n {showError && (\r\n <Modal title=\"Error Details\" closeModal={() => setShowError(false)} width=\"400px\">\r\n <div className={classes.errorDetails}>{progressDataToUse?.events[showError]?.error || 'Unknown error occurred.'}</div>\r\n </Modal>\r\n )}\r\n </SidePanel>\r\n );\r\n};\r\n\r\nexport default BackupEvents;\r\n"],"names":["BackupEvents","id","type","sourceId","sourceType","planId","inProgress","progressData","close","showError","setShowError","useState","fetchedProgressData","useGetBackupProgressOnce","useGetRestoreProgressOnce","progressDataToUse","hasFinished","useMemo","finishedEvent","event","jsxs","SidePanel","jsx","Icon","Fragment","classes","formatDuration","index","completed","failed","retrying","isError","isWarning","getBackupEventActionMessage","getRestoreEventActionMessage","Modal","_a"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BackupEvents.js","sources":["../../../../src/components/Plan/BackupEvents/BackupEvents.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport SidePanel from '../../common/SidePanel/SidePanel';\r\nimport { getBackupEventActionMessage, getRestoreEventActionMessage } from '../../../utils/progressHelpers';\r\nimport classes from './BackupEvents.module.scss';\r\nimport { BackupProgressData } from '../../../@types/backups';\r\nimport { useGetBackupProgressOnce } from '../../../services/backups';\r\nimport { useGetRestoreProgressOnce } from '../../../services/restores';\r\nimport { useMemo, useState } from 'react';\r\nimport Modal from '../../common/Modal/Modal';\r\nimport { formatDuration } from '../../../utils/helpers';\r\n\r\ninterface BackupEventsProps {\r\n id: string;\r\n planId: string;\r\n sourceId: string;\r\n sourceType: string;\r\n type?: 'backup' | 'restore';\r\n inProgress?: boolean;\r\n progressData?: BackupProgressData | null;\r\n close: () => void;\r\n}\r\n\r\nconst BackupEvents = ({ id, type = 'backup', sourceId, sourceType, planId, inProgress, progressData, close }: BackupEventsProps) => {\r\n const [showError, setShowError] = useState<false | number>(false);\r\n const { data: fetchedProgressData, isLoading } =\r\n type === 'backup'\r\n ? useGetBackupProgressOnce({ id, sourceId, sourceType, planId })\r\n : useGetRestoreProgressOnce({ id, sourceId, sourceType, planId });\r\n\r\n const progressDataToUse: BackupProgressData | null = progressData || fetchedProgressData;\r\n\r\n console.log('progressDataToUse :', progressDataToUse);\r\n const hasFinished = useMemo(() => {\r\n if (!progressDataToUse || !progressDataToUse.events) return '';\r\n let finishedEvent = '';\r\n progressDataToUse.events.forEach((event) => {\r\n if (event.action === 'TASK_COMPLETED') {\r\n finishedEvent = 'Completed';\r\n } else if (event.action === 'TASK_CANCELLED') {\r\n finishedEvent = 'Cancelled';\r\n } else if (event.action === 'FAILED_PERMANENTLY') {\r\n finishedEvent = 'Failed';\r\n }\r\n });\r\n return finishedEvent;\r\n }, [progressDataToUse]);\r\n\r\n return (\r\n <SidePanel title={`${type}-${id} Events`} width=\"1000px\" icon={<Icon type={'logs'} size={18} />} footer={<></>} close={close}>\r\n <div className={classes.backupEventsContainer}>\r\n <div className={classes.header}>\r\n <div\r\n title=\"Status\"\r\n className={`${classes.status} ${inProgress ? classes.inProgress : ''} \r\n ${!inProgress && hasFinished === 'Completed' ? classes.hasCompleted : ''} ${!inProgress && hasFinished === 'Failed' ? classes.hasFailed : ''}`}\r\n >\r\n <Icon type={inProgress ? 'loading' : hasFinished === 'Completed' ? 'check-circle-filled' : 'error-circle-filled'} size={14} />{' '}\r\n {inProgress ? `${type} In Progress` : `${type} ${hasFinished}` || 'Unknown'}\r\n </div>\r\n <div title=\"Duration\" className={classes.duration}>\r\n <Icon type=\"clock\" size={14} /> {(progressDataToUse?.duration && formatDuration(progressDataToUse.duration / 1000)) || 'N/A'}\r\n </div>\r\n </div>\r\n {isLoading && (\r\n <div className={classes.loading}>\r\n <Icon type={'loading'} size={30} />\r\n </div>\r\n )}\r\n {progressDataToUse && progressDataToUse.events && progressDataToUse.events.length > 0 ? (\r\n <ul className={classes.eventList}>\r\n {progressDataToUse.events.map((event: any, index: number) => {\r\n const completed = event.phase === 'finished' && event.action === 'TASK_COMPLETED';\r\n const failed = event.phase === 'finished' && event.action === 'FAILED_PERMANENTLY';\r\n const retrying = event.action.includes('RETRY_ATTEMPT_');\r\n const isError = event.action === 'TASK_FAILED';\r\n const isWarning =\r\n event.action === 'BACKUP_WARNING' ||\r\n event.action === 'RESTORE_WARNING' ||\r\n event.action === 'POST_BACKUP_PRUNE_FAILED' ||\r\n event.action === 'POST_BACKUP_REPO_STATS_FAILED';\r\n return (\r\n <li\r\n key={index}\r\n className={`${classes.eventItem} ${event.error ? classes.error : ''} \r\n ${completed ? classes.completed : ''} ${failed ? classes.failed : ''} \r\n ${retrying ? classes.retrying : ''} ${isError ? classes.isError : ''} \r\n ${isWarning ? classes.isWarning : ''}`}\r\n >\r\n <span className={classes.icon}>\r\n <Icon type={event.error || isWarning ? 'error-circle-filled' : 'check-circle-filled'} size={16} />\r\n </span>\r\n {/* Timestamp should be converted to time only eg: 10:20:23 AM */}\r\n <span className={classes.time}>{new Date(event.timestamp).toLocaleTimeString()}</span>\r\n <span className={classes.phase}>{event.phase}</span>\r\n <span className={classes.action}>\r\n {type === 'backup' ? getBackupEventActionMessage(event.action) : getRestoreEventActionMessage(event.action)}\r\n {event.error && (\r\n <span className={classes.viewError} onClick={() => setShowError(index)}>\r\n View Error\r\n </span>\r\n )}\r\n </span>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n ) : null}\r\n </div>\r\n {showError && (\r\n <Modal title=\"Error Details\" closeModal={() => setShowError(false)} width=\"400px\">\r\n <div className={classes.errorDetails}>{progressDataToUse?.events[showError]?.error || 'Unknown error occurred.'}</div>\r\n </Modal>\r\n )}\r\n </SidePanel>\r\n );\r\n};\r\n\r\nexport default BackupEvents;\r\n"],"names":["BackupEvents","id","type","sourceId","sourceType","planId","inProgress","progressData","close","showError","setShowError","useState","fetchedProgressData","isLoading","useGetBackupProgressOnce","useGetRestoreProgressOnce","progressDataToUse","hasFinished","useMemo","finishedEvent","event","jsxs","SidePanel","jsx","Icon","Fragment","classes","formatDuration","index","completed","failed","retrying","isError","isWarning","getBackupEventActionMessage","getRestoreEventActionMessage","Modal","_a"],"mappings":"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"}
|
|
@@ -1,46 +1,48 @@
|
|
|
1
|
-
const e = "
|
|
1
|
+
const e = "_backupEventsContainer_NVn4k", t = "_header_Al7vL", n = "_duration_OkG1V", s = "_status_IVO4B", o = "_inProgress_y415Z", r = "_hasCompleted_x23xI", i = "_hasFailed_i7c0c", a = "_loading_2QxxN", _ = "_eventList_FxKG8", c = "_eventItem_Eyc5J", d = "_time_4OY76", l = "_phase_Loz4b", g = "_action_URfBA", p = "_viewError_e9fT7", v = "_icon_ev0qY", h = "_error_Xpo7b", m = "_completed_Yhxgb", u = "_failed_C6FQC", E = "_retrying_Hibqy", C = "_isError_flYlg", b = "_isWarning_grVw4", f = {
|
|
2
2
|
backupEventsContainer: e,
|
|
3
3
|
header: t,
|
|
4
4
|
duration: n,
|
|
5
5
|
status: s,
|
|
6
|
-
inProgress:
|
|
7
|
-
hasCompleted:
|
|
6
|
+
inProgress: o,
|
|
7
|
+
hasCompleted: r,
|
|
8
8
|
hasFailed: i,
|
|
9
|
+
loading: a,
|
|
9
10
|
eventList: _,
|
|
10
|
-
eventItem:
|
|
11
|
-
time:
|
|
12
|
-
phase:
|
|
13
|
-
action:
|
|
11
|
+
eventItem: c,
|
|
12
|
+
time: d,
|
|
13
|
+
phase: l,
|
|
14
|
+
action: g,
|
|
14
15
|
viewError: p,
|
|
15
|
-
icon:
|
|
16
|
-
error:
|
|
17
|
-
completed:
|
|
18
|
-
failed:
|
|
19
|
-
retrying:
|
|
16
|
+
icon: v,
|
|
17
|
+
error: h,
|
|
18
|
+
completed: m,
|
|
19
|
+
failed: u,
|
|
20
|
+
retrying: E,
|
|
20
21
|
isError: C,
|
|
21
|
-
isWarning:
|
|
22
|
+
isWarning: b
|
|
22
23
|
};
|
|
23
24
|
export {
|
|
24
|
-
|
|
25
|
+
g as action,
|
|
25
26
|
e as backupEventsContainer,
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
m as completed,
|
|
28
|
+
f as default,
|
|
28
29
|
n as duration,
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
h as error,
|
|
31
|
+
c as eventItem,
|
|
31
32
|
_ as eventList,
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
u as failed,
|
|
34
|
+
r as hasCompleted,
|
|
34
35
|
i as hasFailed,
|
|
35
36
|
t as header,
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
v as icon,
|
|
38
|
+
o as inProgress,
|
|
38
39
|
C as isError,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
b as isWarning,
|
|
41
|
+
a as loading,
|
|
42
|
+
l as phase,
|
|
43
|
+
E as retrying,
|
|
42
44
|
s as status,
|
|
43
|
-
|
|
45
|
+
d as time,
|
|
44
46
|
p as viewError
|
|
45
47
|
};
|
|
46
48
|
//# sourceMappingURL=BackupEvents.module.scss.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackupEvents.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BackupEvents.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import { jsxs as o, Fragment as u, jsx as
|
|
2
|
-
import
|
|
1
|
+
import { jsxs as o, Fragment as u, jsx as c } from "react/jsx-runtime";
|
|
2
|
+
import i from "./PlanSettings.module.scss.js";
|
|
3
3
|
import m from "../../common/PathPicker/PathPicker.js";
|
|
4
4
|
import { useGetDevices as f } from "../../../services/devices.js";
|
|
5
5
|
import h from "../../common/form/Select/Select.js";
|
|
6
|
-
const
|
|
7
|
-
const { data: l } = f(), d = [], t =
|
|
6
|
+
const N = ({ plan: e, onUpdate: r, error: a, isEditing: n }) => {
|
|
7
|
+
const { data: l } = f(), d = [], t = e.sourceId || "main";
|
|
8
8
|
return l != null && l.success && l.result && d.push(
|
|
9
|
-
...l.result.map((
|
|
10
|
-
label: `${
|
|
11
|
-
value:
|
|
12
|
-
disabled:
|
|
9
|
+
...l.result.map((s) => ({
|
|
10
|
+
label: `${s.name} ${s.id === "main" ? "(Main)" : ""}`,
|
|
11
|
+
value: s.id
|
|
12
|
+
// disabled: device.id === 'main' || device.connected ? false : true,
|
|
13
13
|
}))
|
|
14
14
|
), /* @__PURE__ */ o(u, { children: [
|
|
15
|
-
/* @__PURE__ */ o("div", { className:
|
|
16
|
-
/* @__PURE__ */
|
|
17
|
-
/* @__PURE__ */
|
|
15
|
+
/* @__PURE__ */ o("div", { className: i.field, children: [
|
|
16
|
+
/* @__PURE__ */ c("label", { className: i.label, children: "Select Device*" }),
|
|
17
|
+
/* @__PURE__ */ c(
|
|
18
18
|
h,
|
|
19
19
|
{
|
|
20
20
|
options: d,
|
|
21
21
|
fieldValue: t,
|
|
22
22
|
disabled: n,
|
|
23
23
|
full: !0,
|
|
24
|
-
onUpdate: (
|
|
24
|
+
onUpdate: (s) => r({ ...e, sourceId: s })
|
|
25
25
|
}
|
|
26
26
|
)
|
|
27
27
|
] }),
|
|
28
|
-
/* @__PURE__ */ o("div", { className:
|
|
29
|
-
/* @__PURE__ */
|
|
30
|
-
a && /* @__PURE__ */
|
|
31
|
-
/* @__PURE__ */
|
|
28
|
+
/* @__PURE__ */ o("div", { className: i.field, children: [
|
|
29
|
+
/* @__PURE__ */ c("label", { className: i.label, children: "Backup Sources*" }),
|
|
30
|
+
a && /* @__PURE__ */ c("span", { className: i.fieldErrorLabel, children: a }),
|
|
31
|
+
/* @__PURE__ */ c(
|
|
32
32
|
m,
|
|
33
33
|
{
|
|
34
|
-
paths: { includes:
|
|
35
|
-
onUpdate: (
|
|
34
|
+
paths: { includes: e.sourceConfig.includes, excludes: e.sourceConfig.excludes },
|
|
35
|
+
onUpdate: (s) => r({ ...e, sourceConfig: { ...s } }),
|
|
36
36
|
deviceId: t,
|
|
37
|
-
single:
|
|
38
|
-
disallowChange:
|
|
37
|
+
single: e.method === "sync",
|
|
38
|
+
disallowChange: e.method === "sync"
|
|
39
39
|
}
|
|
40
40
|
)
|
|
41
41
|
] })
|
|
42
42
|
] });
|
|
43
43
|
};
|
|
44
44
|
export {
|
|
45
|
-
|
|
45
|
+
N as default
|
|
46
46
|
};
|
|
47
47
|
//# sourceMappingURL=PlanSourceSettings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanSourceSettings.js","sources":["../../../../src/components/Plan/PlanSettings/PlanSourceSettings.tsx"],"sourcesContent":["import classes from './PlanSettings.module.scss';\r\nimport PathPicker from '../../common/PathPicker/PathPicker';\r\nimport { NewPlanSettings } from '../../../@types/plans';\r\nimport { useGetDevices } from '../../../services/devices';\r\nimport Select from '../../common/form/Select/Select';\r\nimport { Device } from '../../../@types/devices';\r\n\r\ninterface PlanSourceSettingsProps {\r\n plan: NewPlanSettings;\r\n isEditing: boolean;\r\n onUpdate: (plan: NewPlanSettings) => void;\r\n error: string;\r\n}\r\n\r\nconst PlanSourceSettings = ({ plan, onUpdate, error, isEditing }: PlanSourceSettingsProps) => {\r\n const { data } = useGetDevices();\r\n const deviceList = [];\r\n const deviceId = plan.sourceId || 'main';\r\n if (data?.success && data.result) {\r\n deviceList.push(\r\n ...data.result.map((device: Device) => ({\r\n label: `${device.name} ${device.id === 'main' ? '(Main)' : ''}`,\r\n value: device.id,\r\n disabled: device.id === 'main' || device.connected ? false : true,\r\n })),\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Select Device*</label>\r\n <Select\r\n options={deviceList}\r\n fieldValue={deviceId}\r\n disabled={isEditing}\r\n full={true}\r\n onUpdate={(val) => onUpdate({ ...plan, sourceId: val })}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Sources*</label>\r\n {error && <span className={classes.fieldErrorLabel}>{error}</span>}\r\n <PathPicker\r\n paths={{ includes: plan.sourceConfig.includes, excludes: plan.sourceConfig.excludes }}\r\n onUpdate={(paths) => onUpdate({ ...plan, sourceConfig: { ...paths } })}\r\n deviceId={deviceId}\r\n single={plan.method === 'sync'}\r\n disallowChange={plan.method === 'sync'}\r\n />\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default PlanSourceSettings;\r\n"],"names":["PlanSourceSettings","plan","onUpdate","error","isEditing","data","useGetDevices","deviceList","deviceId","device","jsxs","Fragment","classes","jsx","Select","val","PathPicker","paths"],"mappings":";;;;;AAcA,MAAMA,IAAqB,CAAC,EAAE,MAAAC,GAAM,UAAAC,GAAU,OAAAC,GAAO,WAAAC,QAAyC;AAC3F,QAAM,EAAE,MAAAC,EAAA,IAASC,EAAA,GACXC,IAAa,CAAA,GACbC,IAAWP,EAAK,YAAY;AAClC,SAAII,KAAA,QAAAA,EAAM,WAAWA,EAAK,UACvBE,EAAW;AAAA,IACR,GAAGF,EAAK,OAAO,IAAI,CAACI,OAAoB;AAAA,MACrC,OAAO,GAAGA,EAAO,IAAI,IAAIA,EAAO,OAAO,SAAS,WAAW,EAAE;AAAA,MAC7D,OAAOA,EAAO;AAAA
|
|
1
|
+
{"version":3,"file":"PlanSourceSettings.js","sources":["../../../../src/components/Plan/PlanSettings/PlanSourceSettings.tsx"],"sourcesContent":["import classes from './PlanSettings.module.scss';\r\nimport PathPicker from '../../common/PathPicker/PathPicker';\r\nimport { NewPlanSettings } from '../../../@types/plans';\r\nimport { useGetDevices } from '../../../services/devices';\r\nimport Select from '../../common/form/Select/Select';\r\nimport { Device } from '../../../@types/devices';\r\n\r\ninterface PlanSourceSettingsProps {\r\n plan: NewPlanSettings;\r\n isEditing: boolean;\r\n onUpdate: (plan: NewPlanSettings) => void;\r\n error: string;\r\n}\r\n\r\nconst PlanSourceSettings = ({ plan, onUpdate, error, isEditing }: PlanSourceSettingsProps) => {\r\n const { data } = useGetDevices();\r\n const deviceList = [];\r\n const deviceId = plan.sourceId || 'main';\r\n if (data?.success && data.result) {\r\n deviceList.push(\r\n ...data.result.map((device: Device) => ({\r\n label: `${device.name} ${device.id === 'main' ? '(Main)' : ''}`,\r\n value: device.id,\r\n // disabled: device.id === 'main' || device.connected ? false : true,\r\n })),\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Select Device*</label>\r\n <Select\r\n options={deviceList}\r\n fieldValue={deviceId}\r\n disabled={isEditing}\r\n full={true}\r\n onUpdate={(val) => onUpdate({ ...plan, sourceId: val })}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Sources*</label>\r\n {error && <span className={classes.fieldErrorLabel}>{error}</span>}\r\n <PathPicker\r\n paths={{ includes: plan.sourceConfig.includes, excludes: plan.sourceConfig.excludes }}\r\n onUpdate={(paths) => onUpdate({ ...plan, sourceConfig: { ...paths } })}\r\n deviceId={deviceId}\r\n single={plan.method === 'sync'}\r\n disallowChange={plan.method === 'sync'}\r\n />\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default PlanSourceSettings;\r\n"],"names":["PlanSourceSettings","plan","onUpdate","error","isEditing","data","useGetDevices","deviceList","deviceId","device","jsxs","Fragment","classes","jsx","Select","val","PathPicker","paths"],"mappings":";;;;;AAcA,MAAMA,IAAqB,CAAC,EAAE,MAAAC,GAAM,UAAAC,GAAU,OAAAC,GAAO,WAAAC,QAAyC;AAC3F,QAAM,EAAE,MAAAC,EAAA,IAASC,EAAA,GACXC,IAAa,CAAA,GACbC,IAAWP,EAAK,YAAY;AAClC,SAAII,KAAA,QAAAA,EAAM,WAAWA,EAAK,UACvBE,EAAW;AAAA,IACR,GAAGF,EAAK,OAAO,IAAI,CAACI,OAAoB;AAAA,MACrC,OAAO,GAAGA,EAAO,IAAI,IAAIA,EAAO,OAAO,SAAS,WAAW,EAAE;AAAA,MAC7D,OAAOA,EAAO;AAAA;AAAA,IAAA,EAEf;AAAA,EAAA,GAKL,gBAAAC,EAAAC,GAAA,EACG,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWE,EAAQ,OACrB,UAAA;AAAA,MAAA,gBAAAC,EAAC,SAAA,EAAM,WAAWD,EAAQ,OAAO,UAAA,kBAAc;AAAA,MAC/C,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACE,SAASP;AAAA,UACT,YAAYC;AAAA,UACZ,UAAUJ;AAAA,UACV,MAAM;AAAA,UACN,UAAU,CAACW,MAAQb,EAAS,EAAE,GAAGD,GAAM,UAAUc,EAAA,CAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACzD,GACH;AAAA,IACA,gBAAAL,EAAC,OAAA,EAAI,WAAWE,EAAQ,OACrB,UAAA;AAAA,MAAA,gBAAAC,EAAC,SAAA,EAAM,WAAWD,EAAQ,OAAO,UAAA,mBAAe;AAAA,MAC/CT,KAAS,gBAAAU,EAAC,QAAA,EAAK,WAAWD,EAAQ,iBAAkB,UAAAT,GAAM;AAAA,MAC3D,gBAAAU;AAAA,QAACG;AAAA,QAAA;AAAA,UACE,OAAO,EAAE,UAAUf,EAAK,aAAa,UAAU,UAAUA,EAAK,aAAa,SAAA;AAAA,UAC3E,UAAU,CAACgB,MAAUf,EAAS,EAAE,GAAGD,GAAM,cAAc,EAAE,GAAGgB,EAAA,GAAS;AAAA,UACrE,UAAAT;AAAA,UACA,QAAQP,EAAK,WAAW;AAAA,UACxB,gBAAgBA,EAAK,WAAW;AAAA,QAAA;AAAA,MAAA;AAAA,IACnC,EAAA,CACH;AAAA,EAAA,GACH;AAEN;"}
|
|
@@ -3,23 +3,23 @@ import a from "../../common/Icon/Icon.js";
|
|
|
3
3
|
import { formatNumberToK as f, formatBytes as u } from "../../../utils/helpers.js";
|
|
4
4
|
import S from "../PlanHistory/PlanHistory.js";
|
|
5
5
|
import d from "./PlanStats.module.scss.js";
|
|
6
|
-
const w = ({ plan:
|
|
7
|
-
const { sourceConfig:
|
|
6
|
+
const w = ({ plan: r, isSync: h, lastBackupItem: n }) => {
|
|
7
|
+
const { sourceConfig: c, storage: e, storagePath: g, isActive: v, settings: N } = r, { interval: o } = N, m = (n == null ? void 0 : n.totalFiles) || 0, y = (n == null ? void 0 : n.totalSize) || 0, T = (l) => {
|
|
8
8
|
let s = "";
|
|
9
|
-
return l && l.includes && l.includes.length > 0 && (s += "<div><strong>Includes</strong></div>", s += l.includes.map((
|
|
9
|
+
return l && l.includes && l.includes.length > 0 && (s += "<div><strong>Includes</strong></div>", s += l.includes.map((p) => `<div>${r.device.name} -> ${p}</div>`).join("")), l && l.excludes && l.excludes.length > 0 && (s += "<div><strong>Excludes</strong></div>", s += l.excludes.map((p) => `<div>${p}</div>`).join("")), s;
|
|
10
10
|
};
|
|
11
11
|
return /* @__PURE__ */ i("div", { className: d.planStats, children: [
|
|
12
12
|
/* @__PURE__ */ i("div", { className: d.sources, children: [
|
|
13
13
|
/* @__PURE__ */ i("div", { className: d.widgetTitle, children: [
|
|
14
14
|
/* @__PURE__ */ t(a, { type: "backup", size: 12 }),
|
|
15
15
|
" ",
|
|
16
|
-
|
|
16
|
+
h ? "Syncing" : "Backing Up"
|
|
17
17
|
] }),
|
|
18
18
|
/* @__PURE__ */ i("div", { className: d.sourceContent, children: [
|
|
19
|
-
/* @__PURE__ */ i("div", { "data-tooltip-id": "htmlToolTip", "data-tooltip-place": "top", "data-tooltip-html": T(
|
|
19
|
+
/* @__PURE__ */ i("div", { "data-tooltip-id": "htmlToolTip", "data-tooltip-place": "top", "data-tooltip-html": T(c), children: [
|
|
20
20
|
/* @__PURE__ */ t(a, { type: "folders", size: 18 }),
|
|
21
21
|
/* @__PURE__ */ i("span", { children: [
|
|
22
|
-
|
|
22
|
+
c == null ? void 0 : c.includes.length,
|
|
23
23
|
" Sources"
|
|
24
24
|
] })
|
|
25
25
|
] }),
|
|
@@ -28,9 +28,9 @@ const w = ({ plan: c, isSync: p, lastBackupItem: n }) => {
|
|
|
28
28
|
{
|
|
29
29
|
"data-tooltip-id": "htmlToolTip",
|
|
30
30
|
"data-tooltip-place": "top",
|
|
31
|
-
"data-tooltip-html": v ?
|
|
31
|
+
"data-tooltip-html": v ? h ? `Syncing changes every ${o.minutes} minutes` : `Copying changes ${["hours", "minutes", "days"].includes(o.type) ? o[o.type] + o.type : o.type}` : "Plan is Not Active",
|
|
32
32
|
children: [
|
|
33
|
-
/* @__PURE__ */ t(a, { type: v ?
|
|
33
|
+
/* @__PURE__ */ t(a, { type: v ? h ? "reload" : "copy" : "pause", size: 16 }),
|
|
34
34
|
/* @__PURE__ */ t("div", { className: d.sourceArrow, children: "→" })
|
|
35
35
|
]
|
|
36
36
|
}
|
|
@@ -71,7 +71,7 @@ const w = ({ plan: c, isSync: p, lastBackupItem: n }) => {
|
|
|
71
71
|
/* @__PURE__ */ t(a, { type: "speed", size: 12 }),
|
|
72
72
|
" Health"
|
|
73
73
|
] }),
|
|
74
|
-
/* @__PURE__ */ t("div", { className: d.healthContent, children: /* @__PURE__ */ t(S, { planId:
|
|
74
|
+
/* @__PURE__ */ t("div", { className: d.healthContent, children: /* @__PURE__ */ t(S, { planId: r.id, history: r.backups, itemsCount: 90 }) })
|
|
75
75
|
] })
|
|
76
76
|
] });
|
|
77
77
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlanStats.js","sources":["../../../../src/components/Plan/PlanStats/PlanStats.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport { Plan } from '../../../@types/plans';\r\nimport { formatBytes, formatNumberToK } from '../../../utils/helpers';\r\nimport PlanHistory from '../PlanHistory/PlanHistory';\r\nimport classes from './PlanStats.module.scss';\r\n\r\ninterface PlanStatsProps {\r\n plan: Plan;\r\n isSync: boolean;\r\n lastBackupItem: any;\r\n}\r\n\r\nconst PlanStats = ({ plan, isSync, lastBackupItem }: PlanStatsProps) => {\r\n const { sourceConfig, storage, storagePath, isActive, settings } = plan;\r\n const { interval } = settings;\r\n\r\n const totalFiles = lastBackupItem?.totalFiles || 0;\r\n const totalSize = lastBackupItem?.totalSize || 0;\r\n\r\n const sourceTooltipHTML = (sources: Plan['sourceConfig']) => {\r\n let html = '';\r\n if (sources && sources.includes && sources.includes.length > 0) {\r\n html += `<div><strong>Includes</strong></div>`;\r\n html += sources.includes.map((p) => `<div>${p}</div>`).join('');\r\n }\r\n if (sources && sources.excludes && sources.excludes.length > 0) {\r\n html += `<div><strong>Excludes</strong></div>`;\r\n html += sources.excludes.map((p) => `<div>${p}</div>`).join('');\r\n }\r\n return html;\r\n };\r\n\r\n return (\r\n <div className={classes.planStats}>\r\n <div className={classes.sources}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"backup\" size={12} /> {isSync ? 'Syncing' : 'Backing Up'}\r\n </div>\r\n <div className={classes.sourceContent}>\r\n <div data-tooltip-id=\"htmlToolTip\" data-tooltip-place=\"top\" data-tooltip-html={sourceTooltipHTML(sourceConfig)}>\r\n <Icon type=\"folders\" size={18} />\r\n <span>{sourceConfig?.includes.length} Sources</span>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={\r\n isActive\r\n ? isSync\r\n ? `Syncing changes every ${interval.minutes} minutes`\r\n : `Copying changes ${['hours', 'minutes', 'days'].includes(interval.type) ? interval[interval.type as 'hours' | 'minutes' | 'days'] + interval.type : interval.type}`\r\n : 'Plan is Not Active'\r\n }\r\n >\r\n <Icon type={isActive ? (isSync ? 'reload' : 'copy') : 'pause'} size={16} />\r\n <div className={classes.sourceArrow}>→</div>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={`<div><strong>Storage:</strong> ${storage?.name}</div><div><strong>Path:</strong> ${storagePath || '/'}</div>`}\r\n >\r\n {storage?.type && <img src={`/providers/${storage?.type}.png`} />}\r\n {storage?.name}\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.snapshots}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"folders\" size={12} /> Source Stats\r\n </div>\r\n <div className={classes.snapshotsContent}>\r\n <div>\r\n <span>{totalFiles ? formatNumberToK(totalFiles) : 0}</span>\r\n <span>Files</span>\r\n </div>\r\n <div></div>\r\n <div>\r\n <span>{totalSize ? formatBytes(totalSize) : '0.00B'}</span>\r\n <span>Size</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.health}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"speed\" size={12} /> Health\r\n </div>\r\n <div className={classes.healthContent}>\r\n <PlanHistory planId={plan.id} history={plan.backups} itemsCount={90} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanStats;\r\n"],"names":["PlanStats","plan","isSync","lastBackupItem","sourceConfig","storage","storagePath","isActive","settings","interval","totalFiles","totalSize","sourceTooltipHTML","sources","html","
|
|
1
|
+
{"version":3,"file":"PlanStats.js","sources":["../../../../src/components/Plan/PlanStats/PlanStats.tsx"],"sourcesContent":["import Icon from '../../common/Icon/Icon';\r\nimport { Plan } from '../../../@types/plans';\r\nimport { formatBytes, formatNumberToK } from '../../../utils/helpers';\r\nimport PlanHistory from '../PlanHistory/PlanHistory';\r\nimport classes from './PlanStats.module.scss';\r\n\r\ninterface PlanStatsProps {\r\n plan: Plan;\r\n isSync: boolean;\r\n lastBackupItem: any;\r\n}\r\n\r\nconst PlanStats = ({ plan, isSync, lastBackupItem }: PlanStatsProps) => {\r\n const { sourceConfig, storage, storagePath, isActive, settings } = plan;\r\n const { interval } = settings;\r\n\r\n const totalFiles = lastBackupItem?.totalFiles || 0;\r\n const totalSize = lastBackupItem?.totalSize || 0;\r\n\r\n const sourceTooltipHTML = (sources: Plan['sourceConfig']) => {\r\n let html = '';\r\n if (sources && sources.includes && sources.includes.length > 0) {\r\n html += `<div><strong>Includes</strong></div>`;\r\n html += sources.includes.map((p) => `<div>${plan.device.name} -> ${p}</div>`).join('');\r\n }\r\n if (sources && sources.excludes && sources.excludes.length > 0) {\r\n html += `<div><strong>Excludes</strong></div>`;\r\n html += sources.excludes.map((p) => `<div>${p}</div>`).join('');\r\n }\r\n return html;\r\n };\r\n\r\n return (\r\n <div className={classes.planStats}>\r\n <div className={classes.sources}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"backup\" size={12} /> {isSync ? 'Syncing' : 'Backing Up'}\r\n </div>\r\n <div className={classes.sourceContent}>\r\n <div data-tooltip-id=\"htmlToolTip\" data-tooltip-place=\"top\" data-tooltip-html={sourceTooltipHTML(sourceConfig)}>\r\n <Icon type=\"folders\" size={18} />\r\n <span>{sourceConfig?.includes.length} Sources</span>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={\r\n isActive\r\n ? isSync\r\n ? `Syncing changes every ${interval.minutes} minutes`\r\n : `Copying changes ${['hours', 'minutes', 'days'].includes(interval.type) ? interval[interval.type as 'hours' | 'minutes' | 'days'] + interval.type : interval.type}`\r\n : 'Plan is Not Active'\r\n }\r\n >\r\n <Icon type={isActive ? (isSync ? 'reload' : 'copy') : 'pause'} size={16} />\r\n <div className={classes.sourceArrow}>→</div>\r\n </div>\r\n <div\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-place=\"top\"\r\n data-tooltip-html={`<div><strong>Storage:</strong> ${storage?.name}</div><div><strong>Path:</strong> ${storagePath || '/'}</div>`}\r\n >\r\n {storage?.type && <img src={`/providers/${storage?.type}.png`} />}\r\n {storage?.name}\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.snapshots}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"folders\" size={12} /> Source Stats\r\n </div>\r\n <div className={classes.snapshotsContent}>\r\n <div>\r\n <span>{totalFiles ? formatNumberToK(totalFiles) : 0}</span>\r\n <span>Files</span>\r\n </div>\r\n <div></div>\r\n <div>\r\n <span>{totalSize ? formatBytes(totalSize) : '0.00B'}</span>\r\n <span>Size</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className={classes.health}>\r\n <div className={classes.widgetTitle}>\r\n <Icon type=\"speed\" size={12} /> Health\r\n </div>\r\n <div className={classes.healthContent}>\r\n <PlanHistory planId={plan.id} history={plan.backups} itemsCount={90} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanStats;\r\n"],"names":["PlanStats","plan","isSync","lastBackupItem","sourceConfig","storage","storagePath","isActive","settings","interval","totalFiles","totalSize","sourceTooltipHTML","sources","html","jsxs","classes","jsx","Icon","formatNumberToK","formatBytes","PlanHistory"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddStorage.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/AddStorage/AddStorage.tsx"],"names":[],"mappings":"AAcA,KAAK,eAAe,GAAG;IACpB,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,UAAU,GAAI,WAAW,eAAe,
|
|
1
|
+
{"version":3,"file":"AddStorage.d.ts","sourceRoot":"","sources":["../../../../src/components/Storage/AddStorage/AddStorage.tsx"],"names":[],"mappings":"AAcA,KAAK,eAAe,GAAG;IACpB,KAAK,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,UAAU,GAAI,WAAW,eAAe,4CAqQ7C,CAAC;AACF,eAAe,UAAU,CAAC"}
|