@plutonhq/core-frontend 0.1.30 → 0.1.31

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.
Files changed (47) hide show
  1. package/dist-lib/@types/devices.d.ts +4 -4
  2. package/dist-lib/@types/devices.d.ts.map +1 -1
  3. package/dist-lib/@types/plans.d.ts +1 -0
  4. package/dist-lib/@types/plans.d.ts.map +1 -1
  5. package/dist-lib/components/App/Footer/Footer.d.ts +2 -1
  6. package/dist-lib/components/App/Footer/Footer.d.ts.map +1 -1
  7. package/dist-lib/components/App/Footer/Footer.js +10 -8
  8. package/dist-lib/components/App/Footer/Footer.js.map +1 -1
  9. package/dist-lib/components/Device/EditDevice/EditDevice.d.ts.map +1 -1
  10. package/dist-lib/components/Device/EditDevice/EditDevice.js +70 -61
  11. package/dist-lib/components/Device/EditDevice/EditDevice.js.map +1 -1
  12. package/dist-lib/components/Plan/BackupProgress/BackupProgress.d.ts.map +1 -1
  13. package/dist-lib/components/Plan/BackupProgress/BackupProgress.js +66 -68
  14. package/dist-lib/components/Plan/BackupProgress/BackupProgress.js.map +1 -1
  15. package/dist-lib/components/Plan/BackupProgress/BackupProgress.module.scss.js +40 -38
  16. package/dist-lib/components/Plan/BackupProgress/BackupProgress.module.scss.js.map +1 -1
  17. package/dist-lib/components/Plan/PlanSettings/PlanScriptsSettings.d.ts.map +1 -1
  18. package/dist-lib/components/Plan/PlanSettings/PlanScriptsSettings.js +89 -101
  19. package/dist-lib/components/Plan/PlanSettings/PlanScriptsSettings.js.map +1 -1
  20. package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.d.ts.map +1 -1
  21. package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js +31 -25
  22. package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js.map +1 -1
  23. package/dist-lib/components/common/form/StoragePicker/StoragePicker.d.ts.map +1 -1
  24. package/dist-lib/components/common/form/StoragePicker/StoragePicker.js +52 -46
  25. package/dist-lib/components/common/form/StoragePicker/StoragePicker.js.map +1 -1
  26. package/dist-lib/routes/PlanSingle/PlanSingle.d.ts.map +1 -1
  27. package/dist-lib/routes/PlanSingle/PlanSingle.js +76 -72
  28. package/dist-lib/routes/PlanSingle/PlanSingle.js.map +1 -1
  29. package/dist-lib/routes/PlanSingle/PlanSingle.module.scss.js +14 -12
  30. package/dist-lib/routes/PlanSingle/PlanSingle.module.scss.js.map +1 -1
  31. package/dist-lib/styles/core-frontend.css +1 -1
  32. package/dist-lib/utils/progressHelpers.d.ts.map +1 -1
  33. package/dist-lib/utils/progressHelpers.js +1 -0
  34. package/dist-lib/utils/progressHelpers.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/@types/devices.ts +4 -4
  37. package/src/@types/plans.ts +1 -0
  38. package/src/components/App/Footer/Footer.tsx +3 -2
  39. package/src/components/Device/EditDevice/EditDevice.tsx +11 -4
  40. package/src/components/Plan/BackupProgress/BackupProgress.module.scss +3 -0
  41. package/src/components/Plan/BackupProgress/BackupProgress.tsx +5 -3
  42. package/src/components/Plan/PlanSettings/PlanScriptsSettings.tsx +29 -31
  43. package/src/components/Plan/PlanSettings/PlanSourceSettings.tsx +11 -3
  44. package/src/components/common/form/StoragePicker/StoragePicker.tsx +10 -2
  45. package/src/routes/PlanSingle/PlanSingle.module.scss +10 -0
  46. package/src/routes/PlanSingle/PlanSingle.tsx +6 -1
  47. package/src/utils/progressHelpers.ts +1 -0
@@ -1,62 +1,68 @@
1
- import { jsx as o, jsxs as m } from "react/jsx-runtime";
2
- import { useState as p, useMemo as F, useEffect as g } from "react";
3
- import i from "./StoragePicker.module.scss.js";
4
- import O from "../Select/Select.js";
5
- import { useGetStorages as U } from "../../../../services/storage.js";
6
- import j from "../Input/Input.js";
7
- import q from "../../FolderPicker/FolderPicker.js";
8
- import V from "../../Icon/Icon.js";
9
- import W from "../../../Storage/AddStorage/AddStorage.js";
10
- const I = ({ onUpdate: N, storagePath: $ = "", storageId: P, disabled: a = !1, deviceId: S }) => {
11
- const [t, h] = p(), [v, k] = p(!1), [y, w] = p(!1), [r, n] = p(() => $), f = (t == null ? void 0 : t.type) === "local", d = (t == null ? void 0 : t.defaultPath) && (t == null ? void 0 : t.defaultPath) !== "/", M = d ? `${t.defaultPath}${r ? `/${r}` : ""}` : r, { data: u } = U(), c = [...(u == null ? void 0 : u.result) || []];
1
+ import { jsx as o, jsxs as P } from "react/jsx-runtime";
2
+ import { useState as m, useMemo as O, useEffect as S, useRef as U } from "react";
3
+ import n from "./StoragePicker.module.scss.js";
4
+ import R from "../Select/Select.js";
5
+ import { useGetStorages as j } from "../../../../services/storage.js";
6
+ import q from "../Input/Input.js";
7
+ import V from "../../FolderPicker/FolderPicker.js";
8
+ import W from "../../Icon/Icon.js";
9
+ import _ from "../../../Storage/AddStorage/AddStorage.js";
10
+ const Q = ({ onUpdate: $, storagePath: y = "", storageId: k, disabled: a = !1, deviceId: i }) => {
11
+ const [t, g] = m(), [M, w] = m(!1), [v, N] = m(!1), [r, u] = m(() => y), f = (t == null ? void 0 : t.type) === "local", p = (t == null ? void 0 : t.defaultPath) && (t == null ? void 0 : t.defaultPath) !== "/", x = p ? `${t.defaultPath}${r ? `/${r}` : ""}` : r, { data: d } = j(), c = [...(d == null ? void 0 : d.result) || []];
12
12
  console.log("allStorages :", c), console.log("selectedStorage :", t);
13
- const x = F(() => c.map(({ name: l, id: s, type: B }) => ({
13
+ const A = O(() => c.map(({ name: l, id: s, type: F }) => ({
14
14
  label: l,
15
15
  value: s.toString(),
16
- image: /* @__PURE__ */ o("img", { src: `/providers/${B}.png` })
17
- })), [c]), A = (e) => {
16
+ image: /* @__PURE__ */ o("img", { src: `/providers/${F}.png` })
17
+ })), [c]), B = (e) => {
18
18
  if (console.log("storageID :", e), e === "add_new")
19
- return w(!0);
19
+ return N(!0);
20
20
  const l = c.find((s) => s.id == e);
21
- (l || e === "local") && h(l);
21
+ (l || e === "local") && g(l);
22
22
  };
23
- return g(() => {
24
- if (c.length > 0 && P) {
25
- const e = c.find((l) => l.id === P);
26
- if (h(e), e != null && e.defaultPath && e.defaultPath !== "/") {
23
+ S(() => {
24
+ if (c.length > 0 && k) {
25
+ const e = c.find((l) => l.id === k);
26
+ if (g(e), e != null && e.defaultPath && e.defaultPath !== "/") {
27
27
  const l = e.defaultPath + "/";
28
- n((s) => s.startsWith(l) ? s.slice(l.length) : s);
28
+ u((s) => s.startsWith(l) ? s.slice(l.length) : s);
29
29
  }
30
30
  }
31
- }, [u]), g(() => {
32
- t && N({ storage: t, path: M });
33
- }, [t, r]), g(() => {
34
- a || (h(null), n(""));
35
- }, [S, a]), /* @__PURE__ */ m("div", { className: i.storagePicker, children: [
36
- /* @__PURE__ */ o("div", { className: i.storagePickerInput, children: /* @__PURE__ */ m("div", { children: [
37
- /* @__PURE__ */ o("div", { className: i.storage, children: /* @__PURE__ */ o(
38
- O,
31
+ }, [d]), S(() => {
32
+ t && $({ storage: t, path: x });
33
+ }, [t, r]);
34
+ const h = U(null);
35
+ return S(() => {
36
+ if (a) {
37
+ h.current = i;
38
+ return;
39
+ }
40
+ h.current !== null && h.current !== i && (g(null), u("")), h.current = i;
41
+ }, [i, a]), /* @__PURE__ */ P("div", { className: n.storagePicker, children: [
42
+ /* @__PURE__ */ o("div", { className: n.storagePickerInput, children: /* @__PURE__ */ P("div", { children: [
43
+ /* @__PURE__ */ o("div", { className: n.storage, children: /* @__PURE__ */ o(
44
+ R,
39
45
  {
40
46
  fieldValue: t != null && t.id ? t.id : "",
41
47
  options: [
42
48
  { label: "Select Storage", value: "", icon: "storages" },
43
- ...x,
49
+ ...A,
44
50
  { label: "+ Add New Storage", value: "add_new", icon: "plus" }
45
51
  ],
46
- onUpdate: A,
52
+ onUpdate: B,
47
53
  full: !0,
48
54
  disabled: a
49
55
  }
50
56
  ) }),
51
- /* @__PURE__ */ m("div", { className: `${i.path} ${d ? i.withBucket : ""}`, children: [
52
- d && /* @__PURE__ */ o("span", { className: i.defaultPath, title: `Bucket: ${t.defaultPath}`, children: t.defaultPath + "/" }),
57
+ /* @__PURE__ */ P("div", { className: `${n.path} ${p ? n.withBucket : ""}`, children: [
58
+ p && /* @__PURE__ */ o("span", { className: n.defaultPath, title: `Bucket: ${t.defaultPath}`, children: t.defaultPath + "/" }),
53
59
  /* @__PURE__ */ o(
54
- j,
60
+ q,
55
61
  {
56
62
  disabled: a,
57
63
  fieldValue: r,
58
- onUpdate: (e) => n(!f && e.startsWith("/") ? e.slice(1) : e),
59
- placeholder: f ? "Select a folder" : d ? "subfolder" : "folder-or-bucket/subfolder",
64
+ onUpdate: (e) => u(!f && e.startsWith("/") ? e.slice(1) : e),
65
+ placeholder: f ? "Select a folder" : p ? "subfolder" : "folder-or-bucket/subfolder",
60
66
  full: !0,
61
67
  required: !a && f,
62
68
  error: !a && f && !r ? "Required" : ""
@@ -65,30 +71,30 @@ const I = ({ onUpdate: N, storagePath: $ = "", storageId: P, disabled: a = !1, d
65
71
  (t == null ? void 0 : t.type) && !a && t.type === "local" && /* @__PURE__ */ o(
66
72
  "button",
67
73
  {
68
- className: i.fileManagerBtn,
74
+ className: n.fileManagerBtn,
69
75
  "data-tooltip-id": "appTooltip",
70
76
  "data-tooltip-content": "Open FileManager to Select Directory",
71
77
  "data-tooltip-place": "top",
72
- onClick: () => k(!0),
73
- children: /* @__PURE__ */ o(V, { type: "folders", size: 16 })
78
+ onClick: () => w(!0),
79
+ children: /* @__PURE__ */ o(W, { type: "folders", size: 16 })
74
80
  }
75
81
  )
76
82
  ] })
77
83
  ] }) }),
78
- v && !a && /* @__PURE__ */ o(
79
- q,
84
+ M && !a && /* @__PURE__ */ o(
85
+ V,
80
86
  {
81
- deviceId: S || "main",
87
+ deviceId: i || "main",
82
88
  title: "Select Path",
83
89
  selected: r,
84
- close: () => k(!1),
85
- onSelect: (e) => n(e)
90
+ close: () => w(!1),
91
+ onSelect: (e) => u(e)
86
92
  }
87
93
  ),
88
- y && /* @__PURE__ */ o(W, { close: () => w(!1) })
94
+ v && /* @__PURE__ */ o(_, { close: () => N(!1) })
89
95
  ] });
90
96
  };
91
97
  export {
92
- I as default
98
+ Q as default
93
99
  };
94
100
  //# sourceMappingURL=StoragePicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StoragePicker.js","sources":["../../../../../src/components/common/form/StoragePicker/StoragePicker.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from 'react';\r\nimport classes from './StoragePicker.module.scss';\r\nimport Select from '../Select/Select';\r\nimport { useGetStorages } from '../../../../services/storage';\r\nimport Input from '../Input/Input';\r\nimport FolderPicker from '../../FolderPicker/FolderPicker';\r\nimport Icon from '../../Icon/Icon';\r\nimport AddStorage from '../../../Storage/AddStorage/AddStorage';\r\n\r\ntype storageItem = { name: string; id: string; type: string; defaultPath?: string };\r\n\r\ninterface StoragePickerProps {\r\n storagePath?: string;\r\n storageId?: string;\r\n disabled?: boolean;\r\n deviceId?: string;\r\n onUpdate: (val: { storage: storageItem; path: string }) => void;\r\n}\r\n\r\nconst StoragePicker = ({ onUpdate, storagePath = '', storageId, disabled = false, deviceId }: StoragePickerProps) => {\r\n const [selectedStorage, setSelectedStorage] = useState<null | storageItem>();\r\n const [showFolderPicker, setShowFolderPicker] = useState(false);\r\n const [showAddStorageModal, setShowAddStorageModal] = useState(false);\r\n const [path, setPath] = useState(() => storagePath);\r\n const isLocalStorage = selectedStorage?.type === 'local';\r\n const hasBucketName = selectedStorage?.defaultPath && selectedStorage?.defaultPath !== '/';\r\n const fullPath = hasBucketName ? `${selectedStorage.defaultPath}${path ? `/${path}` : ''}` : path;\r\n\r\n const { data: allStorageData } = useGetStorages();\r\n const allUserStorages = (allStorageData?.result as storageItem[]) || [];\r\n const allStorages = [...allUserStorages];\r\n\r\n console.log('allStorages :', allStorages);\r\n console.log('selectedStorage :', selectedStorage);\r\n\r\n const storageOptions = useMemo(() => {\r\n const storageOpts = allStorages.map(({ name, id, type }) => ({\r\n label: name,\r\n value: id.toString(),\r\n image: <img src={`/providers/${type}.png`} />,\r\n }));\r\n return storageOpts;\r\n }, [allStorages]);\r\n\r\n const selectStorage = (storageID: string) => {\r\n console.log('storageID :', storageID);\r\n if (storageID === 'add_new') {\r\n return setShowAddStorageModal(true);\r\n }\r\n const theStorage = allStorages.find((s) => s.id == storageID);\r\n if (theStorage || storageID === 'local') {\r\n setSelectedStorage(theStorage);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (allStorages.length > 0 && storageId) {\r\n const currentStorage = allStorages.find((s) => s.id === storageId);\r\n setSelectedStorage(currentStorage);\r\n if (currentStorage?.defaultPath && currentStorage.defaultPath !== '/') {\r\n const prefix = currentStorage.defaultPath + '/';\r\n setPath((prev) => (prev.startsWith(prefix) ? prev.slice(prefix.length) : prev));\r\n }\r\n }\r\n }, [allStorageData]);\r\n\r\n useEffect(() => {\r\n if (selectedStorage) {\r\n onUpdate({ storage: selectedStorage, path: fullPath });\r\n }\r\n }, [selectedStorage, path]);\r\n\r\n useEffect(() => {\r\n if (!disabled) {\r\n setSelectedStorage(null);\r\n setPath('');\r\n }\r\n }, [deviceId, disabled]);\r\n\r\n // console.log('Storage path :', path, !disabled && isLocalStorage && !path);\r\n\r\n return (\r\n <div className={classes.storagePicker}>\r\n <div className={classes.storagePickerInput}>\r\n <div>\r\n <div className={classes.storage}>\r\n <Select\r\n fieldValue={selectedStorage?.id ? selectedStorage.id : ''}\r\n options={[\r\n { label: 'Select Storage', value: '', icon: 'storages' },\r\n ...storageOptions,\r\n { label: '+ Add New Storage', value: 'add_new', icon: 'plus' },\r\n ]}\r\n onUpdate={selectStorage}\r\n full={true}\r\n disabled={disabled}\r\n />\r\n </div>\r\n <div className={`${classes.path} ${hasBucketName ? classes.withBucket : ''}`}>\r\n {hasBucketName && (\r\n <span className={classes.defaultPath} title={`Bucket: ${selectedStorage.defaultPath}`}>\r\n {selectedStorage.defaultPath + '/'}\r\n </span>\r\n )}\r\n <Input\r\n disabled={disabled}\r\n fieldValue={path}\r\n onUpdate={(val) => setPath(!isLocalStorage && val.startsWith('/') ? val.slice(1) : val)} //if the val starts with a slash remove it (only for remote storages, local paths need the leading slash)\r\n placeholder={isLocalStorage ? 'Select a folder' : hasBucketName ? 'subfolder' : `folder-or-bucket/subfolder`}\r\n full={true}\r\n required={!disabled && isLocalStorage}\r\n error={(!disabled && isLocalStorage && !path ? 'Required' : '') as string}\r\n />\r\n {selectedStorage?.type && !disabled && selectedStorage.type === 'local' && (\r\n <button\r\n className={classes.fileManagerBtn}\r\n data-tooltip-id=\"appTooltip\"\r\n data-tooltip-content=\"Open FileManager to Select Directory\"\r\n data-tooltip-place=\"top\"\r\n onClick={() => setShowFolderPicker(true)}\r\n >\r\n <Icon type=\"folders\" size={16} />\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n {showFolderPicker && !disabled && (\r\n <FolderPicker\r\n deviceId={deviceId || 'main'}\r\n title=\"Select Path\"\r\n selected={path}\r\n close={() => setShowFolderPicker(false)}\r\n onSelect={(newVal) => setPath(newVal)}\r\n />\r\n )}\r\n {showAddStorageModal && <AddStorage close={() => setShowAddStorageModal(false)} />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default StoragePicker;\r\n"],"names":["StoragePicker","onUpdate","storagePath","storageId","disabled","deviceId","selectedStorage","setSelectedStorage","useState","showFolderPicker","setShowFolderPicker","showAddStorageModal","setShowAddStorageModal","path","setPath","isLocalStorage","hasBucketName","fullPath","allStorageData","useGetStorages","allStorages","storageOptions","useMemo","name","id","type","jsx","selectStorage","storageID","theStorage","useEffect","currentStorage","s","prefix","prev","jsxs","classes","Select","Input","val","Icon","FolderPicker","newVal","AddStorage"],"mappings":"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"}
1
+ {"version":3,"file":"StoragePicker.js","sources":["../../../../../src/components/common/form/StoragePicker/StoragePicker.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\r\nimport classes from './StoragePicker.module.scss';\r\nimport Select from '../Select/Select';\r\nimport { useGetStorages } from '../../../../services/storage';\r\nimport Input from '../Input/Input';\r\nimport FolderPicker from '../../FolderPicker/FolderPicker';\r\nimport Icon from '../../Icon/Icon';\r\nimport AddStorage from '../../../Storage/AddStorage/AddStorage';\r\n\r\ntype storageItem = { name: string; id: string; type: string; defaultPath?: string };\r\n\r\ninterface StoragePickerProps {\r\n storagePath?: string;\r\n storageId?: string;\r\n disabled?: boolean;\r\n deviceId?: string;\r\n onUpdate: (val: { storage: storageItem; path: string }) => void;\r\n}\r\n\r\nconst StoragePicker = ({ onUpdate, storagePath = '', storageId, disabled = false, deviceId }: StoragePickerProps) => {\r\n const [selectedStorage, setSelectedStorage] = useState<null | storageItem>();\r\n const [showFolderPicker, setShowFolderPicker] = useState(false);\r\n const [showAddStorageModal, setShowAddStorageModal] = useState(false);\r\n const [path, setPath] = useState(() => storagePath);\r\n const isLocalStorage = selectedStorage?.type === 'local';\r\n const hasBucketName = selectedStorage?.defaultPath && selectedStorage?.defaultPath !== '/';\r\n const fullPath = hasBucketName ? `${selectedStorage.defaultPath}${path ? `/${path}` : ''}` : path;\r\n\r\n const { data: allStorageData } = useGetStorages();\r\n const allUserStorages = (allStorageData?.result as storageItem[]) || [];\r\n const allStorages = [...allUserStorages];\r\n\r\n console.log('allStorages :', allStorages);\r\n console.log('selectedStorage :', selectedStorage);\r\n\r\n const storageOptions = useMemo(() => {\r\n const storageOpts = allStorages.map(({ name, id, type }) => ({\r\n label: name,\r\n value: id.toString(),\r\n image: <img src={`/providers/${type}.png`} />,\r\n }));\r\n return storageOpts;\r\n }, [allStorages]);\r\n\r\n const selectStorage = (storageID: string) => {\r\n console.log('storageID :', storageID);\r\n if (storageID === 'add_new') {\r\n return setShowAddStorageModal(true);\r\n }\r\n const theStorage = allStorages.find((s) => s.id == storageID);\r\n if (theStorage || storageID === 'local') {\r\n setSelectedStorage(theStorage);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (allStorages.length > 0 && storageId) {\r\n const currentStorage = allStorages.find((s) => s.id === storageId);\r\n setSelectedStorage(currentStorage);\r\n if (currentStorage?.defaultPath && currentStorage.defaultPath !== '/') {\r\n const prefix = currentStorage.defaultPath + '/';\r\n setPath((prev) => (prev.startsWith(prefix) ? prev.slice(prefix.length) : prev));\r\n }\r\n }\r\n }, [allStorageData]);\r\n\r\n useEffect(() => {\r\n if (selectedStorage) {\r\n onUpdate({ storage: selectedStorage, path: fullPath });\r\n }\r\n }, [selectedStorage, path]);\r\n\r\n // Reset the storage selection only when the device actually changes (not on mount/remount,\r\n // e.g. when navigating between steps in the Add Plan form).\r\n const prevDeviceIdRef = useRef<string | undefined | null>(null);\r\n useEffect(() => {\r\n if (disabled) {\r\n prevDeviceIdRef.current = deviceId;\r\n return;\r\n }\r\n if (prevDeviceIdRef.current !== null && prevDeviceIdRef.current !== deviceId) {\r\n setSelectedStorage(null);\r\n setPath('');\r\n }\r\n prevDeviceIdRef.current = deviceId;\r\n }, [deviceId, disabled]);\r\n\r\n // console.log('Storage path :', path, !disabled && isLocalStorage && !path);\r\n\r\n return (\r\n <div className={classes.storagePicker}>\r\n <div className={classes.storagePickerInput}>\r\n <div>\r\n <div className={classes.storage}>\r\n <Select\r\n fieldValue={selectedStorage?.id ? selectedStorage.id : ''}\r\n options={[\r\n { label: 'Select Storage', value: '', icon: 'storages' },\r\n ...storageOptions,\r\n { label: '+ Add New Storage', value: 'add_new', icon: 'plus' },\r\n ]}\r\n onUpdate={selectStorage}\r\n full={true}\r\n disabled={disabled}\r\n />\r\n </div>\r\n <div className={`${classes.path} ${hasBucketName ? classes.withBucket : ''}`}>\r\n {hasBucketName && (\r\n <span className={classes.defaultPath} title={`Bucket: ${selectedStorage.defaultPath}`}>\r\n {selectedStorage.defaultPath + '/'}\r\n </span>\r\n )}\r\n <Input\r\n disabled={disabled}\r\n fieldValue={path}\r\n onUpdate={(val) => setPath(!isLocalStorage && val.startsWith('/') ? val.slice(1) : val)} //if the val starts with a slash remove it (only for remote storages, local paths need the leading slash)\r\n placeholder={isLocalStorage ? 'Select a folder' : hasBucketName ? 'subfolder' : `folder-or-bucket/subfolder`}\r\n full={true}\r\n required={!disabled && isLocalStorage}\r\n error={(!disabled && isLocalStorage && !path ? 'Required' : '') as string}\r\n />\r\n {selectedStorage?.type && !disabled && selectedStorage.type === 'local' && (\r\n <button\r\n className={classes.fileManagerBtn}\r\n data-tooltip-id=\"appTooltip\"\r\n data-tooltip-content=\"Open FileManager to Select Directory\"\r\n data-tooltip-place=\"top\"\r\n onClick={() => setShowFolderPicker(true)}\r\n >\r\n <Icon type=\"folders\" size={16} />\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n {showFolderPicker && !disabled && (\r\n <FolderPicker\r\n deviceId={deviceId || 'main'}\r\n title=\"Select Path\"\r\n selected={path}\r\n close={() => setShowFolderPicker(false)}\r\n onSelect={(newVal) => setPath(newVal)}\r\n />\r\n )}\r\n {showAddStorageModal && <AddStorage close={() => setShowAddStorageModal(false)} />}\r\n </div>\r\n );\r\n};\r\n\r\nexport default StoragePicker;\r\n"],"names":["StoragePicker","onUpdate","storagePath","storageId","disabled","deviceId","selectedStorage","setSelectedStorage","useState","showFolderPicker","setShowFolderPicker","showAddStorageModal","setShowAddStorageModal","path","setPath","isLocalStorage","hasBucketName","fullPath","allStorageData","useGetStorages","allStorages","storageOptions","useMemo","name","id","type","jsx","selectStorage","storageID","theStorage","useEffect","currentStorage","s","prefix","prev","prevDeviceIdRef","useRef","jsxs","classes","Select","Input","val","Icon","FolderPicker","newVal","AddStorage"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlanSingle.d.ts","sourceRoot":"","sources":["../../../src/routes/PlanSingle/PlanSingle.tsx"],"names":[],"mappings":"AAkBA,QAAA,MAAM,UAAU,+CA4Lf,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"PlanSingle.d.ts","sourceRoot":"","sources":["../../../src/routes/PlanSingle/PlanSingle.tsx"],"names":[],"mappings":"AAkBA,QAAA,MAAM,UAAU,+CAiMf,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,91 +1,95 @@
1
- import { jsx as e, jsxs as o, Fragment as w } from "react/jsx-runtime";
1
+ import { jsx as e, jsxs as o, Fragment as C } from "react/jsx-runtime";
2
2
  import { useState as B } from "react";
3
- import { useParams as Q, useSearchParams as W } from "react-router";
4
- import X from "../../components/common/PageHeader/PageHeader.js";
3
+ import { useParams as W, useSearchParams as X } from "react-router";
4
+ import Y from "../../components/common/PageHeader/PageHeader.js";
5
5
  import n from "../../components/common/Icon/Icon.js";
6
- import Y from "../../components/Plan/EditPlan/EditPlan.js";
7
- import Z from "../../components/Plan/PlanLogs/PlanLogs.js";
8
- import { useComponentOverride as _ } from "../../context/ComponentOverrideContext.js";
9
- import ee from "../../components/Plan/PlanStats/PlanStats.js";
10
- import { usePlanSingleActions as te } from "../../hooks/usePlanSingleActions.js";
6
+ import Z from "../../components/Plan/EditPlan/EditPlan.js";
7
+ import _ from "../../components/Plan/PlanLogs/PlanLogs.js";
8
+ import { useComponentOverride as ee } from "../../context/ComponentOverrideContext.js";
9
+ import te from "../../components/Plan/PlanStats/PlanStats.js";
10
+ import { usePlanSingleActions as oe } from "../../hooks/usePlanSingleActions.js";
11
11
  import t from "./PlanSingle.module.scss.js";
12
- import oe from "../../components/common/NotFound/NotFound.js";
13
- import se from "../../components/Plan/PlanPruneModal/PlanPruneModal.js";
14
- import ne from "../../components/Plan/PlanUnlockModal/PlanUnlockModal.js";
15
- import ae from "../../components/Plan/PlanRemoveModal/PlanRemoveModal.js";
16
- import ie from "../../components/Plan/PlanProgress/PlanProgress.js";
17
- import le from "../../components/Plan/PlanBackups/PlanBackups.js";
18
- import re from "../../components/Plan/PlanIntegrity/PlanIntegrity.js";
19
- const ze = () => {
20
- var y, M;
21
- const [p, a] = B(!1), [C, m] = B(!1), { id: i } = Q(), v = _("EditPlan", Y), [h] = W(), z = h.get("pendingbackup") === "1", I = h.get("pendingrestore") === "1", {
22
- showDeleteModal: b,
23
- setShowDeleteModal: u,
24
- showEditModal: E,
25
- setShowEditModal: g,
26
- showPruneModal: L,
27
- setShowPruneModal: f,
28
- showLogsModal: R,
29
- setShowLogsModal: P,
30
- showUnlockModal: U,
31
- setShowUnlockModal: k,
12
+ import se from "../../components/common/NotFound/NotFound.js";
13
+ import ne from "../../components/Plan/PlanPruneModal/PlanPruneModal.js";
14
+ import ae from "../../components/Plan/PlanUnlockModal/PlanUnlockModal.js";
15
+ import ie from "../../components/Plan/PlanRemoveModal/PlanRemoveModal.js";
16
+ import le from "../../components/Plan/PlanProgress/PlanProgress.js";
17
+ import re from "../../components/Plan/PlanBackups/PlanBackups.js";
18
+ import ce from "../../components/Plan/PlanIntegrity/PlanIntegrity.js";
19
+ const Ie = () => {
20
+ var M, N;
21
+ const [h, a] = B(!1), [b, d] = B(!1), { id: i } = W(), z = ee("EditPlan", Z), [u] = X(), I = u.get("pendingbackup") === "1", v = u.get("pendingrestore") === "1", {
22
+ showDeleteModal: E,
23
+ setShowDeleteModal: g,
24
+ showEditModal: L,
25
+ setShowEditModal: f,
26
+ showPruneModal: R,
27
+ setShowPruneModal: P,
28
+ showLogsModal: U,
29
+ setShowLogsModal: k,
30
+ showUnlockModal: $,
31
+ setShowUnlockModal: y,
32
32
  plan: s,
33
33
  isLoading: D,
34
34
  refetchPlan: O,
35
35
  activeBackups: T,
36
- activeRestores: $,
37
- lastBackupItem: x,
36
+ activeRestores: x,
37
+ lastBackupItem: A,
38
38
  taskPending: r,
39
- planError: d,
40
- actionInProgress: A,
41
- changeStatus: j,
42
- backupNow: F
43
- } = te(), H = d == null ? void 0 : d.status;
44
- if (!i || H === 404)
45
- return /* @__PURE__ */ e(oe, { name: "Plan", link: "/" });
39
+ planError: p,
40
+ actionInProgress: j,
41
+ changeStatus: F,
42
+ backupNow: H
43
+ } = oe(), V = p == null ? void 0 : p.status;
44
+ if (!i || V === 404)
45
+ return /* @__PURE__ */ e(se, { name: "Plan", link: "/" });
46
46
  {
47
47
  if (D)
48
48
  return /* @__PURE__ */ e("div", { className: "loadingScreen", children: /* @__PURE__ */ e(n, { size: 60, type: "loading" }) });
49
- const { isActive: c, method: V, title: S, description: N, stats: q, settings: G } = s, J = G.prune, K = ((y = q.snapshots) == null ? void 0 : y.length) || 0, l = V === "sync";
49
+ const { isActive: c, method: q, title: S, description: w, verified: m, stats: G, settings: J } = s, K = J.prune, Q = ((M = G.snapshots) == null ? void 0 : M.length) || 0, l = q === "sync";
50
50
  return /* @__PURE__ */ o("div", { className: t.planSingle, children: [
51
51
  /* @__PURE__ */ e(
52
- X,
52
+ Y,
53
53
  {
54
- title: /* @__PURE__ */ o(w, { children: [
54
+ title: /* @__PURE__ */ o(C, { children: [
55
55
  S,
56
56
  " ",
57
- N && /* @__PURE__ */ e("span", { className: t.planDescription, "data-tooltip-id": "appTooltip", "data-tooltip-content": N, children: /* @__PURE__ */ e(n, { type: "note", size: 13 }) }),
57
+ w && /* @__PURE__ */ e("span", { className: t.planDescription, "data-tooltip-id": "appTooltip", "data-tooltip-content": w, children: /* @__PURE__ */ e(n, { type: "note", size: 13 }) }),
58
58
  !c && /* @__PURE__ */ o("span", { className: "label warn", children: [
59
59
  /* @__PURE__ */ e(n, { size: 14, type: "pause", color: "#bf8d20" }),
60
60
  " Paused"
61
+ ] }),
62
+ (m == null ? void 0 : m.hasError) && /* @__PURE__ */ o("span", { className: `label error ${t.planError}`, onClick: () => d(!0), children: [
63
+ /* @__PURE__ */ e(n, { size: 14, type: "error-circle-filled", color: "#dd6b6b" }),
64
+ " Integrity Error"
61
65
  ] })
62
66
  ] }),
63
67
  pageTitle: S,
64
68
  icon: "plans",
65
- rightSection: /* @__PURE__ */ e(w, { children: /* @__PURE__ */ o("div", { className: t.planActions, children: [
66
- /* @__PURE__ */ o("button", { className: t.actionBtn, onClick: F, children: [
69
+ rightSection: /* @__PURE__ */ e(C, { children: /* @__PURE__ */ o("div", { className: t.planActions, children: [
70
+ /* @__PURE__ */ o("button", { className: t.actionBtn, onClick: H, children: [
67
71
  /* @__PURE__ */ e(n, { size: 14, type: l ? "sync" : "backup" }),
68
72
  " ",
69
73
  l ? "Sync" : "Backup",
70
74
  " Now"
71
75
  ] }),
72
- /* @__PURE__ */ o("button", { className: `${t.actionBtn} ${c ? "" : t.actionBtnHighlight}`, onClick: j, children: [
76
+ /* @__PURE__ */ o("button", { className: `${t.actionBtn} ${c ? "" : t.actionBtnHighlight}`, onClick: F, children: [
73
77
  /* @__PURE__ */ e(n, { size: 14, type: c ? "pause" : "resume" }),
74
78
  " ",
75
79
  c ? "Pause" : "Resume"
76
80
  ] }),
77
- /* @__PURE__ */ o("button", { className: t.actionBtn, onClick: () => g(!0), children: [
81
+ /* @__PURE__ */ o("button", { className: t.actionBtn, onClick: () => f(!0), children: [
78
82
  /* @__PURE__ */ e(n, { size: 14, type: "edit-settings" }),
79
83
  " Edit"
80
84
  ] }),
81
- /* @__PURE__ */ e("button", { className: `${t.actionBtn} ${t.actionMoreBtn}`, onClick: () => a(!p), children: /* @__PURE__ */ e(n, { size: 14, type: "dots-vertical" }) }),
82
- p && /* @__PURE__ */ o("ul", { className: t.moreOptions, children: [
85
+ /* @__PURE__ */ e("button", { className: `${t.actionBtn} ${t.actionMoreBtn}`, onClick: () => a(!h), children: /* @__PURE__ */ e(n, { size: 14, type: "dots-vertical" }) }),
86
+ h && /* @__PURE__ */ o("ul", { className: t.moreOptions, children: [
83
87
  /* @__PURE__ */ o(
84
88
  "li",
85
89
  {
86
90
  className: t.actionBtn,
87
91
  onClick: () => {
88
- f(!0), a(!1);
92
+ P(!0), a(!1);
89
93
  },
90
94
  children: [
91
95
  /* @__PURE__ */ e(n, { size: 14, type: "prune" }),
@@ -98,7 +102,7 @@ const ze = () => {
98
102
  {
99
103
  className: t.actionBtn,
100
104
  onClick: () => {
101
- k(!0), a(!1);
105
+ y(!0), a(!1);
102
106
  },
103
107
  children: [
104
108
  /* @__PURE__ */ e(n, { size: 14, type: "unlock" }),
@@ -111,7 +115,7 @@ const ze = () => {
111
115
  {
112
116
  className: t.actionBtn,
113
117
  onClick: () => {
114
- m(!0), a(!1);
118
+ d(!0), a(!1);
115
119
  },
116
120
  children: [
117
121
  /* @__PURE__ */ e(n, { size: 14, type: "integrity" }),
@@ -124,7 +128,7 @@ const ze = () => {
124
128
  {
125
129
  className: t.actionBtn,
126
130
  onClick: () => {
127
- P(!0), a(!1);
131
+ k(!0), a(!1);
128
132
  },
129
133
  children: [
130
134
  /* @__PURE__ */ e(n, { size: 14, type: "logs" }),
@@ -137,7 +141,7 @@ const ze = () => {
137
141
  {
138
142
  className: t.actionBtn,
139
143
  onClick: () => {
140
- u(!0), a(!1);
144
+ g(!0), a(!1);
141
145
  },
142
146
  children: [
143
147
  /* @__PURE__ */ e(n, { size: 14, type: "trash" }),
@@ -150,50 +154,50 @@ const ze = () => {
150
154
  }
151
155
  ),
152
156
  /* @__PURE__ */ o("div", { className: t.planContent, children: [
153
- /* @__PURE__ */ e(ee, { plan: s, isSync: l, lastBackupItem: x }),
157
+ /* @__PURE__ */ e(te, { plan: s, isSync: l, lastBackupItem: A }),
154
158
  /* @__PURE__ */ e(
155
- ie,
159
+ le,
156
160
  {
157
161
  plan: s,
158
- isBackupPending: z,
159
- isRestorePending: I,
162
+ isBackupPending: I,
163
+ isRestorePending: v,
160
164
  activeBackups: T,
161
- activeRestores: $,
165
+ activeRestores: x,
162
166
  refetchPlan: O
163
167
  }
164
168
  ),
165
- /* @__PURE__ */ e(le, { plan: s })
169
+ /* @__PURE__ */ e(re, { plan: s })
166
170
  ] }),
167
- L && /* @__PURE__ */ e(
168
- se,
171
+ R && /* @__PURE__ */ e(
172
+ ne,
169
173
  {
170
174
  planId: i,
171
175
  method: s.method,
172
- prune: J,
173
- snapshotsCount: K,
176
+ prune: K,
177
+ snapshotsCount: Q,
174
178
  taskPending: r,
175
- close: () => f(!1)
179
+ close: () => P(!1)
176
180
  }
177
181
  ),
178
- C && !l && /* @__PURE__ */ e(
179
- re,
182
+ b && !l && /* @__PURE__ */ e(
183
+ ce,
180
184
  {
181
185
  planId: s.id,
182
186
  taskPending: r,
183
187
  verificationData: s.verified,
184
188
  storage: s.storage,
185
- replicationStorages: (M = s.settings.replication) != null && M.enabled ? s.settings.replication.storages : [],
186
- onClose: () => m(!1)
189
+ replicationStorages: (N = s.settings.replication) != null && N.enabled ? s.settings.replication.storages : [],
190
+ onClose: () => d(!1)
187
191
  }
188
192
  ),
189
- b && /* @__PURE__ */ e(ae, { planId: i, taskPending: r, actionInProgress: A, close: () => u(!1) }),
190
- U && /* @__PURE__ */ e(ne, { planId: i, taskPending: r, close: () => k(!1) }),
191
- E && /* @__PURE__ */ e(v, { plan: s, close: () => g(!1) }),
192
- R && /* @__PURE__ */ e(Z, { planId: i, planMethod: s.method, sourceType: s.sourceType, close: () => P(!1) })
193
+ E && /* @__PURE__ */ e(ie, { planId: i, taskPending: r, actionInProgress: j, close: () => g(!1) }),
194
+ $ && /* @__PURE__ */ e(ae, { planId: i, taskPending: r, close: () => y(!1) }),
195
+ L && /* @__PURE__ */ e(z, { plan: s, close: () => f(!1) }),
196
+ U && /* @__PURE__ */ e(_, { planId: i, planMethod: s.method, sourceType: s.sourceType, close: () => k(!1) })
193
197
  ] });
194
198
  }
195
199
  };
196
200
  export {
197
- ze as default
201
+ Ie as default
198
202
  };
199
203
  //# sourceMappingURL=PlanSingle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanSingle.js","sources":["../../../src/routes/PlanSingle/PlanSingle.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { useParams, useSearchParams } from 'react-router';\r\nimport PageHeader from '../../components/common/PageHeader/PageHeader';\r\nimport Icon from '../../components/common/Icon/Icon';\r\nimport EditPlan from '../../components/Plan/EditPlan/EditPlan';\r\nimport PlanLogs from '../../components/Plan/PlanLogs/PlanLogs';\r\nimport { useComponentOverride } from '../../context/ComponentOverrideContext';\r\nimport PlanStats from '../../components/Plan/PlanStats/PlanStats';\r\nimport { usePlanSingleActions } from '../../hooks/usePlanSingleActions';\r\nimport classes from './PlanSingle.module.scss';\r\nimport NotFound from '../../components/common/NotFound/NotFound';\r\nimport PlanPruneModal from '../../components/Plan/PlanPruneModal/PlanPruneModal';\r\nimport PlanUnlockModal from '../../components/Plan/PlanUnlockModal/PlanUnlockModal';\r\nimport PlanRemoveModal from '../../components/Plan/PlanRemoveModal/PlanRemoveModal';\r\nimport PlanProgress from '../../components/Plan/PlanProgress/PlanProgress';\r\nimport PlanBackups from '../../components/Plan/PlanBackups/PlanBackups';\r\nimport PlanIntegrity from '../../components/Plan/PlanIntegrity/PlanIntegrity';\r\n\r\nconst PlanSingle = () => {\r\n const [showMoreOptions, setShowMoreOptions] = useState(false);\r\n const [showIntegrityModal, setShowIntegrityModal] = useState(false);\r\n const { id } = useParams();\r\n\r\n const EditPlanModal = useComponentOverride('EditPlan', EditPlan);\r\n\r\n const [searchParams] = useSearchParams();\r\n const isBackupPending = searchParams.get('pendingbackup') === '1';\r\n const isRestorePending = searchParams.get('pendingrestore') === '1';\r\n\r\n const {\r\n showDeleteModal,\r\n setShowDeleteModal,\r\n showEditModal,\r\n setShowEditModal,\r\n showPruneModal,\r\n setShowPruneModal,\r\n showLogsModal,\r\n setShowLogsModal,\r\n showUnlockModal,\r\n setShowUnlockModal,\r\n\r\n plan,\r\n isLoading,\r\n refetchPlan,\r\n activeBackups,\r\n activeRestores,\r\n lastBackupItem,\r\n taskPending,\r\n planError,\r\n actionInProgress,\r\n changeStatus,\r\n backupNow,\r\n } = usePlanSingleActions();\r\n\r\n // const errorMessage = planError?.message;\r\n const errorStatusCode = (planError as Error & { status?: number })?.status;\r\n if (!id || errorStatusCode === 404) {\r\n return <NotFound name=\"Plan\" link=\"/\" />;\r\n } else {\r\n if (isLoading) {\r\n return (\r\n <div className=\"loadingScreen\">\r\n <Icon size={60} type=\"loading\" />\r\n </div>\r\n );\r\n }\r\n\r\n const { isActive, method, title, description, stats, settings } = plan;\r\n const prune = settings.prune;\r\n const snapshotsCount = stats.snapshots?.length || 0;\r\n const isSync = method === 'sync';\r\n\r\n return (\r\n <div className={classes.planSingle}>\r\n <PageHeader\r\n title={\r\n <>\r\n {title}{' '}\r\n {description && (\r\n <span className={classes.planDescription} data-tooltip-id=\"appTooltip\" data-tooltip-content={description}>\r\n <Icon type=\"note\" size={13} />\r\n </span>\r\n )}\r\n {!isActive && (\r\n <span className=\"label warn\">\r\n <Icon size={14} type={'pause'} color=\"#bf8d20\" /> Paused\r\n </span>\r\n )}\r\n </>\r\n }\r\n pageTitle={title}\r\n icon=\"plans\"\r\n rightSection={\r\n <>\r\n <div className={classes.planActions}>\r\n <button className={classes.actionBtn} onClick={backupNow}>\r\n <Icon size={14} type={isSync ? 'sync' : 'backup'} /> {isSync ? 'Sync' : 'Backup'} Now\r\n </button>\r\n <button className={`${classes.actionBtn} ${!isActive ? classes.actionBtnHighlight : ''}`} onClick={changeStatus}>\r\n <Icon size={14} type={isActive ? 'pause' : 'resume'} /> {isActive ? 'Pause' : 'Resume'}\r\n </button>\r\n <button className={classes.actionBtn} onClick={() => setShowEditModal(true)}>\r\n <Icon size={14} type=\"edit-settings\" /> Edit\r\n </button>\r\n <button className={`${classes.actionBtn} ${classes.actionMoreBtn}`} onClick={() => setShowMoreOptions(!showMoreOptions)}>\r\n <Icon size={14} type=\"dots-vertical\" />\r\n </button>\r\n\r\n {showMoreOptions && (\r\n <ul className={classes.moreOptions}>\r\n <li\r\n className={classes.actionBtn}\r\n onClick={() => {\r\n setShowPruneModal(true);\r\n setShowMoreOptions(false);\r\n }}\r\n >\r\n <Icon size={14} type=\"prune\" /> Clean Up\r\n </li>\r\n {!isSync && (\r\n <li\r\n className={classes.actionBtn}\r\n onClick={() => {\r\n setShowUnlockModal(true);\r\n setShowMoreOptions(false);\r\n }}\r\n >\r\n <Icon size={14} type=\"unlock\" /> Unlock\r\n </li>\r\n )}\r\n <li\r\n className={classes.actionBtn}\r\n onClick={() => {\r\n setShowIntegrityModal(true);\r\n setShowMoreOptions(false);\r\n }}\r\n >\r\n <Icon size={14} type=\"integrity\" /> Check Integrity\r\n </li>\r\n <li\r\n className={classes.actionBtn}\r\n onClick={() => {\r\n setShowLogsModal(true);\r\n setShowMoreOptions(false);\r\n }}\r\n >\r\n <Icon size={14} type=\"logs\" /> View Logs\r\n </li>\r\n <li\r\n className={classes.actionBtn}\r\n onClick={() => {\r\n setShowDeleteModal(true);\r\n setShowMoreOptions(false);\r\n }}\r\n >\r\n <Icon size={14} type=\"trash\" /> Remove\r\n </li>\r\n </ul>\r\n )}\r\n </div>\r\n </>\r\n }\r\n />\r\n <div className={classes.planContent}>\r\n <PlanStats plan={plan} isSync={isSync} lastBackupItem={lastBackupItem} />\r\n <PlanProgress\r\n plan={plan}\r\n isBackupPending={isBackupPending}\r\n isRestorePending={isRestorePending}\r\n activeBackups={activeBackups}\r\n activeRestores={activeRestores}\r\n refetchPlan={refetchPlan}\r\n />\r\n <PlanBackups plan={plan} />\r\n </div>\r\n\r\n {/* Action Modals */}\r\n {showPruneModal && (\r\n <PlanPruneModal\r\n planId={id}\r\n method={plan.method}\r\n prune={prune}\r\n snapshotsCount={snapshotsCount}\r\n taskPending={taskPending}\r\n close={() => setShowPruneModal(false)}\r\n />\r\n )}\r\n {showIntegrityModal && !isSync && (\r\n <PlanIntegrity\r\n planId={plan.id}\r\n taskPending={taskPending}\r\n verificationData={plan.verified}\r\n storage={plan.storage}\r\n replicationStorages={plan.settings.replication?.enabled ? plan.settings.replication.storages : []}\r\n onClose={() => setShowIntegrityModal(false)}\r\n />\r\n )}\r\n {showDeleteModal && (\r\n <PlanRemoveModal planId={id} taskPending={taskPending} actionInProgress={actionInProgress} close={() => setShowDeleteModal(false)} />\r\n )}\r\n {showUnlockModal && <PlanUnlockModal planId={id} taskPending={taskPending} close={() => setShowUnlockModal(false)} />}\r\n {showEditModal && <EditPlanModal plan={plan} close={() => setShowEditModal(false)} />}\r\n {showLogsModal && <PlanLogs planId={id} planMethod={plan.method} sourceType={plan.sourceType} close={() => setShowLogsModal(false)} />}\r\n </div>\r\n );\r\n }\r\n};\r\n\r\nexport default PlanSingle;\r\n"],"names":["PlanSingle","showMoreOptions","setShowMoreOptions","useState","showIntegrityModal","setShowIntegrityModal","id","useParams","EditPlanModal","useComponentOverride","EditPlan","searchParams","useSearchParams","isBackupPending","isRestorePending","showDeleteModal","setShowDeleteModal","showEditModal","setShowEditModal","showPruneModal","setShowPruneModal","showLogsModal","setShowLogsModal","showUnlockModal","setShowUnlockModal","plan","isLoading","refetchPlan","activeBackups","activeRestores","lastBackupItem","taskPending","planError","actionInProgress","changeStatus","backupNow","usePlanSingleActions","errorStatusCode","jsx","NotFound","Icon","isActive","method","title","description","stats","settings","prune","snapshotsCount","_a","isSync","jsxs","classes","PageHeader","Fragment","PlanStats","PlanProgress","PlanBackups","PlanPruneModal","PlanIntegrity","_b","PlanRemoveModal","PlanUnlockModal","PlanLogs"],"mappings":"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"}
1
+ {"version":3,"file":"PlanSingle.js","sources":["../../../src/routes/PlanSingle/PlanSingle.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport { useParams, useSearchParams } from 'react-router';\r\nimport PageHeader from '../../components/common/PageHeader/PageHeader';\r\nimport Icon from '../../components/common/Icon/Icon';\r\nimport EditPlan from '../../components/Plan/EditPlan/EditPlan';\r\nimport PlanLogs from '../../components/Plan/PlanLogs/PlanLogs';\r\nimport { useComponentOverride } from '../../context/ComponentOverrideContext';\r\nimport PlanStats from '../../components/Plan/PlanStats/PlanStats';\r\nimport { usePlanSingleActions } from '../../hooks/usePlanSingleActions';\r\nimport classes from './PlanSingle.module.scss';\r\nimport NotFound from '../../components/common/NotFound/NotFound';\r\nimport PlanPruneModal from '../../components/Plan/PlanPruneModal/PlanPruneModal';\r\nimport PlanUnlockModal from '../../components/Plan/PlanUnlockModal/PlanUnlockModal';\r\nimport PlanRemoveModal from '../../components/Plan/PlanRemoveModal/PlanRemoveModal';\r\nimport PlanProgress from '../../components/Plan/PlanProgress/PlanProgress';\r\nimport PlanBackups from '../../components/Plan/PlanBackups/PlanBackups';\r\nimport PlanIntegrity from '../../components/Plan/PlanIntegrity/PlanIntegrity';\r\n\r\nconst PlanSingle = () => {\r\n const [showMoreOptions, setShowMoreOptions] = useState(false);\r\n const [showIntegrityModal, setShowIntegrityModal] = useState(false);\r\n const { id } = useParams();\r\n\r\n const EditPlanModal = useComponentOverride('EditPlan', EditPlan);\r\n\r\n const [searchParams] = useSearchParams();\r\n const isBackupPending = searchParams.get('pendingbackup') === '1';\r\n const isRestorePending = searchParams.get('pendingrestore') === '1';\r\n\r\n const {\r\n showDeleteModal,\r\n setShowDeleteModal,\r\n showEditModal,\r\n setShowEditModal,\r\n showPruneModal,\r\n setShowPruneModal,\r\n showLogsModal,\r\n setShowLogsModal,\r\n showUnlockModal,\r\n setShowUnlockModal,\r\n\r\n plan,\r\n isLoading,\r\n refetchPlan,\r\n activeBackups,\r\n activeRestores,\r\n lastBackupItem,\r\n taskPending,\r\n planError,\r\n actionInProgress,\r\n changeStatus,\r\n backupNow,\r\n } = usePlanSingleActions();\r\n\r\n // const errorMessage = planError?.message;\r\n const errorStatusCode = (planError as Error & { status?: number })?.status;\r\n if (!id || errorStatusCode === 404) {\r\n return <NotFound name=\"Plan\" link=\"/\" />;\r\n } else {\r\n if (isLoading) {\r\n return (\r\n <div className=\"loadingScreen\">\r\n <Icon size={60} type=\"loading\" />\r\n </div>\r\n );\r\n }\r\n\r\n const { isActive, method, title, description, verified, stats, settings } = plan;\r\n const prune = settings.prune;\r\n const snapshotsCount = stats.snapshots?.length || 0;\r\n const isSync = method === 'sync';\r\n\r\n return (\r\n <div className={classes.planSingle}>\r\n <PageHeader\r\n title={\r\n <>\r\n {title}{' '}\r\n {description && (\r\n <span className={classes.planDescription} data-tooltip-id=\"appTooltip\" data-tooltip-content={description}>\r\n <Icon type=\"note\" size={13} />\r\n </span>\r\n )}\r\n {!isActive && (\r\n <span className=\"label warn\">\r\n <Icon size={14} type={'pause'} color=\"#bf8d20\" /> Paused\r\n </span>\r\n )}\r\n {verified?.hasError && (\r\n <span className={`label error ${classes.planError}`} onClick={() => setShowIntegrityModal(true)}>\r\n <Icon size={14} type={'error-circle-filled'} color=\"#dd6b6b\" /> Integrity Error\r\n </span>\r\n )}\r\n </>\r\n }\r\n pageTitle={title}\r\n icon=\"plans\"\r\n rightSection={\r\n <>\r\n <div className={classes.planActions}>\r\n <button className={classes.actionBtn} onClick={backupNow}>\r\n <Icon size={14} type={isSync ? 'sync' : 'backup'} /> {isSync ? 'Sync' : 'Backup'} Now\r\n </button>\r\n <button className={`${classes.actionBtn} ${!isActive ? classes.actionBtnHighlight : ''}`} onClick={changeStatus}>\r\n <Icon size={14} type={isActive ? 'pause' : 'resume'} /> {isActive ? 'Pause' : 'Resume'}\r\n </button>\r\n <button className={classes.actionBtn} onClick={() => setShowEditModal(true)}>\r\n <Icon size={14} type=\"edit-settings\" /> Edit\r\n </button>\r\n <button className={`${classes.actionBtn} ${classes.actionMoreBtn}`} onClick={() => setShowMoreOptions(!showMoreOptions)}>\r\n <Icon size={14} type=\"dots-vertical\" />\r\n </button>\r\n\r\n {showMoreOptions && (\r\n <ul className={classes.moreOptions}>\r\n <li\r\n className={classes.actionBtn}\r\n onClick={() => {\r\n setShowPruneModal(true);\r\n setShowMoreOptions(false);\r\n }}\r\n >\r\n <Icon size={14} type=\"prune\" /> Clean Up\r\n </li>\r\n {!isSync && (\r\n <li\r\n className={classes.actionBtn}\r\n onClick={() => {\r\n setShowUnlockModal(true);\r\n setShowMoreOptions(false);\r\n }}\r\n >\r\n <Icon size={14} type=\"unlock\" /> Unlock\r\n </li>\r\n )}\r\n <li\r\n className={classes.actionBtn}\r\n onClick={() => {\r\n setShowIntegrityModal(true);\r\n setShowMoreOptions(false);\r\n }}\r\n >\r\n <Icon size={14} type=\"integrity\" /> Check Integrity\r\n </li>\r\n <li\r\n className={classes.actionBtn}\r\n onClick={() => {\r\n setShowLogsModal(true);\r\n setShowMoreOptions(false);\r\n }}\r\n >\r\n <Icon size={14} type=\"logs\" /> View Logs\r\n </li>\r\n <li\r\n className={classes.actionBtn}\r\n onClick={() => {\r\n setShowDeleteModal(true);\r\n setShowMoreOptions(false);\r\n }}\r\n >\r\n <Icon size={14} type=\"trash\" /> Remove\r\n </li>\r\n </ul>\r\n )}\r\n </div>\r\n </>\r\n }\r\n />\r\n <div className={classes.planContent}>\r\n <PlanStats plan={plan} isSync={isSync} lastBackupItem={lastBackupItem} />\r\n <PlanProgress\r\n plan={plan}\r\n isBackupPending={isBackupPending}\r\n isRestorePending={isRestorePending}\r\n activeBackups={activeBackups}\r\n activeRestores={activeRestores}\r\n refetchPlan={refetchPlan}\r\n />\r\n <PlanBackups plan={plan} />\r\n </div>\r\n\r\n {/* Action Modals */}\r\n {showPruneModal && (\r\n <PlanPruneModal\r\n planId={id}\r\n method={plan.method}\r\n prune={prune}\r\n snapshotsCount={snapshotsCount}\r\n taskPending={taskPending}\r\n close={() => setShowPruneModal(false)}\r\n />\r\n )}\r\n {showIntegrityModal && !isSync && (\r\n <PlanIntegrity\r\n planId={plan.id}\r\n taskPending={taskPending}\r\n verificationData={plan.verified}\r\n storage={plan.storage}\r\n replicationStorages={plan.settings.replication?.enabled ? plan.settings.replication.storages : []}\r\n onClose={() => setShowIntegrityModal(false)}\r\n />\r\n )}\r\n {showDeleteModal && (\r\n <PlanRemoveModal planId={id} taskPending={taskPending} actionInProgress={actionInProgress} close={() => setShowDeleteModal(false)} />\r\n )}\r\n {showUnlockModal && <PlanUnlockModal planId={id} taskPending={taskPending} close={() => setShowUnlockModal(false)} />}\r\n {showEditModal && <EditPlanModal plan={plan} close={() => setShowEditModal(false)} />}\r\n {showLogsModal && <PlanLogs planId={id} planMethod={plan.method} sourceType={plan.sourceType} close={() => setShowLogsModal(false)} />}\r\n </div>\r\n );\r\n }\r\n};\r\n\r\nexport default PlanSingle;\r\n"],"names":["PlanSingle","showMoreOptions","setShowMoreOptions","useState","showIntegrityModal","setShowIntegrityModal","id","useParams","EditPlanModal","useComponentOverride","EditPlan","searchParams","useSearchParams","isBackupPending","isRestorePending","showDeleteModal","setShowDeleteModal","showEditModal","setShowEditModal","showPruneModal","setShowPruneModal","showLogsModal","setShowLogsModal","showUnlockModal","setShowUnlockModal","plan","isLoading","refetchPlan","activeBackups","activeRestores","lastBackupItem","taskPending","planError","actionInProgress","changeStatus","backupNow","usePlanSingleActions","errorStatusCode","jsx","NotFound","Icon","isActive","method","title","description","verified","stats","settings","prune","snapshotsCount","_a","isSync","jsxs","classes","PageHeader","Fragment","PlanStats","PlanProgress","PlanBackups","PlanPruneModal","PlanIntegrity","_b","PlanRemoveModal","PlanUnlockModal","PlanLogs"],"mappings":"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"}
@@ -1,22 +1,24 @@
1
- const n = "_planSingle_Msjor", t = "_planDescription_BWPEr", o = "_planActions_XUm7Y", i = "_moreOptions_Wu4mu", a = "_planContent_DpaSC", c = "_actionBtn_alvyJ", s = "_actionBtnHighlight_V0mWJ", l = "_actionMoreBtn_1jDhi", p = {
1
+ const n = "_planSingle_BEirW", t = "_planDescription_Kk3f1", o = "_planError_DHNlv", i = "_planActions_20oEK", a = "_moreOptions_P56zm", c = "_planContent_xRfOC", l = "_actionBtn_m6HlC", s = "_actionBtnHighlight_qMvlm", p = "_actionMoreBtn_aGX1y", r = {
2
2
  planSingle: n,
3
3
  planDescription: t,
4
- planActions: o,
5
- moreOptions: i,
6
- planContent: a,
7
- actionBtn: c,
4
+ planError: o,
5
+ planActions: i,
6
+ moreOptions: a,
7
+ planContent: c,
8
+ actionBtn: l,
8
9
  actionBtnHighlight: s,
9
- actionMoreBtn: l
10
+ actionMoreBtn: p
10
11
  };
11
12
  export {
12
- c as actionBtn,
13
+ l as actionBtn,
13
14
  s as actionBtnHighlight,
14
- l as actionMoreBtn,
15
- p as default,
16
- i as moreOptions,
17
- o as planActions,
18
- a as planContent,
15
+ p as actionMoreBtn,
16
+ r as default,
17
+ a as moreOptions,
18
+ i as planActions,
19
+ c as planContent,
19
20
  t as planDescription,
21
+ o as planError,
20
22
  n as planSingle
21
23
  };
22
24
  //# sourceMappingURL=PlanSingle.module.scss.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanSingle.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
1
+ {"version":3,"file":"PlanSingle.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}