@plutonhq/core-frontend 0.1.26 → 0.1.28

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 (73) hide show
  1. package/dist-lib/@types/backups.d.ts +3 -0
  2. package/dist-lib/@types/backups.d.ts.map +1 -1
  3. package/dist-lib/@types/plans.d.ts +2 -0
  4. package/dist-lib/@types/plans.d.ts.map +1 -1
  5. package/dist-lib/@types/restores.d.ts +2 -0
  6. package/dist-lib/@types/restores.d.ts.map +1 -1
  7. package/dist-lib/components/Device/DeviceInfo/DeviceInfo.module.scss.js +26 -26
  8. package/dist-lib/components/Plan/PlanBackups/PlanBackups.d.ts.map +1 -1
  9. package/dist-lib/components/Plan/PlanBackups/PlanBackups.js +26 -26
  10. package/dist-lib/components/Plan/PlanBackups/PlanBackups.js.map +1 -1
  11. package/dist-lib/components/Plan/PlanForm/PlanForm.d.ts.map +1 -1
  12. package/dist-lib/components/Plan/PlanForm/PlanForm.js +64 -80
  13. package/dist-lib/components/Plan/PlanForm/PlanForm.js.map +1 -1
  14. package/dist-lib/components/Plan/PlanHistory/PlanHistory.d.ts.map +1 -1
  15. package/dist-lib/components/Plan/PlanHistory/PlanHistory.js +7 -7
  16. package/dist-lib/components/Plan/PlanHistory/PlanHistory.js.map +1 -1
  17. package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.d.ts.map +1 -1
  18. package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js +39 -30
  19. package/dist-lib/components/Plan/PlanSettings/PlanSourceSettings.js.map +1 -1
  20. package/dist-lib/components/Plan/PlanStats/PlanStats.d.ts.map +1 -1
  21. package/dist-lib/components/Plan/PlanStats/PlanStats.js +25 -25
  22. package/dist-lib/components/Plan/PlanStats/PlanStats.js.map +1 -1
  23. package/dist-lib/components/Plan/PlanStats/PlanStats.module.scss.js +1 -1
  24. package/dist-lib/components/common/Icon/Icon.d.ts.map +1 -1
  25. package/dist-lib/components/common/Icon/Icon.js +12 -1
  26. package/dist-lib/components/common/Icon/Icon.js.map +1 -1
  27. package/dist-lib/components/common/form/IntervalField/IntervalField.d.ts.map +1 -1
  28. package/dist-lib/components/common/form/IntervalField/IntervalField.js +66 -46
  29. package/dist-lib/components/common/form/IntervalField/IntervalField.js.map +1 -1
  30. package/dist-lib/components/common/form/StoragePicker/StoragePicker.d.ts.map +1 -1
  31. package/dist-lib/components/common/form/StoragePicker/StoragePicker.js +49 -47
  32. package/dist-lib/components/common/form/StoragePicker/StoragePicker.js.map +1 -1
  33. package/dist-lib/components/common/form/TagsInput/TagsInput.d.ts +2 -1
  34. package/dist-lib/components/common/form/TagsInput/TagsInput.d.ts.map +1 -1
  35. package/dist-lib/components/common/form/TagsInput/TagsInput.js +15 -15
  36. package/dist-lib/components/common/form/TagsInput/TagsInput.js.map +1 -1
  37. package/dist-lib/components/common/form/TimePicker/TimePicker.module.scss.js +13 -13
  38. package/dist-lib/hooks/usePlanSingleActions.js +7 -7
  39. package/dist-lib/hooks/usePlanSingleActions.js.map +1 -1
  40. package/dist-lib/routes/Settings/Settings.module.scss.js +2 -2
  41. package/dist-lib/styles/core-frontend.css +1 -1
  42. package/dist-lib/styles/global.scss +6 -0
  43. package/dist-lib/utils/constants.js +1 -1
  44. package/dist-lib/utils/constants.js.map +1 -1
  45. package/dist-lib/utils/helpers.d.ts +2 -0
  46. package/dist-lib/utils/helpers.d.ts.map +1 -1
  47. package/dist-lib/utils/helpers.js +55 -33
  48. package/dist-lib/utils/helpers.js.map +1 -1
  49. package/dist-lib/utils/plans.js +6 -6
  50. package/dist-lib/utils/plans.js.map +1 -1
  51. package/dist-lib/utils.js +34 -33
  52. package/package.json +1 -1
  53. package/src/@types/backups.ts +3 -0
  54. package/src/@types/plans.ts +2 -0
  55. package/src/@types/restores.ts +2 -0
  56. package/src/components/Device/DeviceInfo/DeviceInfo.module.scss +1 -0
  57. package/src/components/Plan/PlanBackups/PlanBackups.tsx +5 -2
  58. package/src/components/Plan/PlanForm/PlanForm.tsx +1 -19
  59. package/src/components/Plan/PlanHistory/PlanHistory.tsx +16 -13
  60. package/src/components/Plan/PlanSettings/PlanSourceSettings.tsx +15 -1
  61. package/src/components/Plan/PlanStats/PlanStats.module.scss +3 -0
  62. package/src/components/Plan/PlanStats/PlanStats.tsx +2 -8
  63. package/src/components/common/Icon/Icon.tsx +12 -0
  64. package/src/components/common/form/IntervalField/IntervalField.tsx +21 -1
  65. package/src/components/common/form/StoragePicker/StoragePicker.tsx +8 -1
  66. package/src/components/common/form/TagsInput/TagsInput.tsx +3 -2
  67. package/src/components/common/form/TimePicker/TimePicker.module.scss +1 -0
  68. package/src/hooks/usePlanSingleActions.tsx +2 -2
  69. package/src/routes/Settings/Settings.module.scss +1 -1
  70. package/src/styles/global.scss +6 -0
  71. package/src/utils/constants.ts +1 -1
  72. package/src/utils/helpers.ts +25 -0
  73. package/src/utils/plans.ts +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"PlanForm.js","sources":["../../../../src/components/Plan/PlanForm/PlanForm.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport SidePanel from '../../common/SidePanel/SidePanel';\r\nimport StoragePicker from '../../common/form/StoragePicker/StoragePicker';\r\nimport PlanStrategySettings from '../PlanSettings/PlanStrategySettings';\r\nimport PlanSourceSettings from '../PlanSettings/PlanSourceSettings';\r\nimport { NewPlanSettings } from '../../../@types/plans';\r\nimport NumberInput from '../../common/form/NumberInput/NumberInput';\r\nimport classes from '../AddPlan/AddPlan.module.scss';\r\nimport PFClasses from './PlanForm.module.scss';\r\nimport { useGetSettings } from '../../../services/settings';\r\nimport PlanAdvancedSettings from '../PlanSettings/PlanAdvancedSettings';\r\nimport { isPlanSettingsValid } from '../../../utils/plans';\r\nimport IntervalField from '../../common/form/IntervalField/IntervalField';\r\nimport PlanFormNav from './PlanFormNav';\r\nimport { useGetDevice } from '../../../services/devices';\r\nimport PlanPruneSettings from '../PlanSettings/PlanPruneSettings';\r\nimport PlanReplicationSettings from '../PlanSettings/PlanReplicationSettings';\r\n\r\ntype PlanFormProps = {\r\n title: string;\r\n planSettings: NewPlanSettings;\r\n type: 'add' | 'edit';\r\n onPlanSettingsChange: (settings: NewPlanSettings) => void;\r\n onSubmit: () => void;\r\n isSubmitting: boolean;\r\n close: () => void;\r\n storagePath?: string;\r\n storageId?: string;\r\n planId?: string;\r\n};\r\n\r\nconst PlanForm = ({\r\n title,\r\n planSettings,\r\n type,\r\n onPlanSettingsChange,\r\n onSubmit,\r\n isSubmitting,\r\n close,\r\n storagePath,\r\n storageId,\r\n planId,\r\n}: PlanFormProps) => {\r\n const [step, setStep] = useState<number>(1);\r\n\r\n const { data: settingsData } = useGetSettings();\r\n const appSettings = settingsData?.result?.settings || {};\r\n // const smtpConnected = appSettings?.integration?.smtp?.connected ? true : false;\r\n\r\n const { data: deviceData } = useGetDevice('main', true);\r\n const deviceInstance = deviceData?.result?.device;\r\n\r\n const buttonTexts: Record<number, { title: string; onClick: () => void }> = {\r\n 1: {\r\n title: 'Next: Configure Source & Destination',\r\n onClick: () => isPlanSettingsValid(planSettings, step) && setStep(step + 1),\r\n },\r\n 2: {\r\n title: 'Next: Setup Schedule & Retention',\r\n onClick: () => isPlanSettingsValid(planSettings, step) && setStep(step + 1),\r\n },\r\n 3: { title: 'Next: Advanced Settings', onClick: () => isPlanSettingsValid(planSettings, step) && setStep(step + 1) },\r\n 4: {\r\n title: 'Create Plan',\r\n onClick: () => isPlanSettingsValid(planSettings, false) && onSubmit(),\r\n },\r\n };\r\n\r\n const gotoStep = (nStep: number) => {\r\n if (type !== 'edit') {\r\n return;\r\n }\r\n\r\n const isSettingsValid = isPlanSettingsValid(planSettings, step);\r\n if (isSettingsValid) {\r\n setStep(nStep);\r\n }\r\n };\r\n\r\n return (\r\n <SidePanel\r\n title={title}\r\n icon={<Icon type={'backup'} size={20} />}\r\n width={type === 'add' ? '100%' : undefined}\r\n headerWidth={type === 'add' ? '740px' : undefined}\r\n close={close}\r\n withTabs={true}\r\n footer={\r\n <div className={PFClasses.planFormFooter}>\r\n <div className={PFClasses.footerContainer}>\r\n <div className={classes.footerLeft}>\r\n <div className={classes.summary}>\r\n {type === 'add' && step > 1 && (\r\n <button className={PFClasses.backButton} onClick={() => step > 0 && setStep(step - 1)} disabled={isSubmitting}>\r\n <Icon type=\"arrow-left\" size={14} /> Back\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n <div className={classes.footerRight}>\r\n {type === 'add' ? (\r\n <button className={classes.createButton} onClick={buttonTexts[step].onClick}>\r\n <Icon type=\"check\" size={12} /> {buttonTexts[step].title}\r\n </button>\r\n ) : (\r\n <button className={classes.createButton} onClick={() => isPlanSettingsValid(planSettings, false) && onSubmit()}>\r\n <Icon type=\"check\" size={12} /> {'Update Plan'}\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n >\r\n <PlanFormNav step={step} type={type} gotoStep={gotoStep} />\r\n\r\n <div className={`${PFClasses.formContent} styled__scrollbar`}>\r\n {isSubmitting && (\r\n <div className={classes.loader}>\r\n <Icon size={36} type=\"loading\" />\r\n </div>\r\n )}\r\n {step === 1 && (\r\n <div className={PFClasses.planStep}>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Plan Name*</label>\r\n {!planSettings.title && <span className={classes.fieldErrorLabel}>{'Required'}</span>}\r\n <input\r\n className={classes.titleInput}\r\n type=\"text\"\r\n placeholder=\"Plan Name\"\r\n value={planSettings.title || ''}\r\n onChange={(e) => onPlanSettingsChange({ ...planSettings, title: e.target.value })}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Plan Description</label>\r\n <input\r\n className={classes.titleInput}\r\n type=\"text\"\r\n placeholder=\"Plan Description\"\r\n value={planSettings.description || ''}\r\n onChange={(e) => onPlanSettingsChange({ ...planSettings, description: e.target.value })}\r\n />\r\n </div>\r\n {/* <PlanTypeSettings\r\n plan={planSettings}\r\n onUpdate={(plan: NewPlanSettings) => onPlanSettingsChange({ ...plan })}\r\n disabled={type === 'edit' ? true : false}\r\n options={[\r\n {\r\n value: 'device',\r\n icon: 'computer',\r\n label: 'Device',\r\n description: 'Backup content of a Computer/Server',\r\n },\r\n {\r\n value: 'database',\r\n icon: 'database',\r\n label: 'Database',\r\n description: 'Backup a Database',\r\n disabled: true,\r\n },\r\n {\r\n value: 'googleworkspace',\r\n icon: 'google-workspace',\r\n label: 'Google Workspace',\r\n description: 'Backup Google Workspace',\r\n disabled: true,\r\n },\r\n {\r\n value: 'microsoft365',\r\n icon: 'microsoft-365',\r\n label: 'Microsoft 365',\r\n description: 'Backup Microsoft 365',\r\n disabled: true,\r\n },\r\n ]}\r\n /> */}\r\n {planSettings.sourceType === 'device' && (\r\n <PlanStrategySettings\r\n plan={planSettings}\r\n onUpdate={(method) => onPlanSettingsChange({ ...planSettings, method })}\r\n disabled={type === 'edit' ? true : false}\r\n options={[\r\n {\r\n value: 'backup',\r\n icon: 'backup',\r\n label: 'Incremental Backup',\r\n description: 'Periodically create Incremental backup snapshots of source',\r\n },\r\n // {\r\n // value: 'sync',\r\n // icon: 'reload',\r\n // label: 'Real-time Sync',\r\n // description: 'Maintain identical source (with revisions)',\r\n // disabled: true,\r\n // },\r\n // {\r\n // value: 'rescue',\r\n // icon: 'rescue',\r\n // label: 'Linux Server Backup',\r\n // description: 'Full Linux system backups with bootable ISO image',\r\n // disabled: true,\r\n // },\r\n ]}\r\n />\r\n )}\r\n </div>\r\n )}\r\n {step === 2 && (\r\n <div className={PFClasses.planStep}>\r\n <PlanSourceSettings\r\n plan={planSettings}\r\n onUpdate={(plan) => onPlanSettingsChange({ ...plan })}\r\n isEditing={type === 'edit' ? true : false}\r\n error={planSettings.sourceConfig.includes.length === 0 ? 'Required' : ''}\r\n />\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Destination*</label>\r\n {!planSettings.storage.name && <span className={classes.fieldErrorLabel}>{'Required'}</span>}\r\n <StoragePicker\r\n storagePath={storagePath || planSettings.storagePath}\r\n storageId={storageId || planSettings.storage?.id || ''}\r\n deviceId={planSettings.sourceId || 'main'}\r\n disabled={type === 'edit' ? true : false}\r\n onUpdate={(s: { storage: { name: string; id: string; type: string }; path: string }) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n storagePath: s.path,\r\n storage: { id: s.storage.id, name: s.storage.name },\r\n })\r\n }\r\n />\r\n </div>\r\n <PlanReplicationSettings\r\n replication={planSettings.settings.replication}\r\n primaryStorageId={planSettings.storage.id}\r\n primaryStoragePath={planSettings.storagePath}\r\n deviceId={planSettings.sourceId || 'main'}\r\n isEditing={type === 'edit' ? true : false}\r\n planID={planId}\r\n onUpdate={(replication) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n settings: { ...planSettings.settings, replication: replication },\r\n })\r\n }\r\n />\r\n </div>\r\n )}\r\n {step === 3 && (\r\n <div className={PFClasses.planStep}>\r\n <div className={classes.field} style={{ width: '150px' }}>\r\n <IntervalField\r\n label=\"Backup Interval*\"\r\n fieldValue={planSettings.settings.interval}\r\n onUpdate={(intervalSettings) =>\r\n onPlanSettingsChange({ ...planSettings, settings: { ...planSettings.settings, interval: intervalSettings } })\r\n }\r\n />\r\n </div>\r\n\r\n <div className={classes.field} style={{ width: '150px' }}>\r\n <NumberInput\r\n label=\"Backups to Keep\"\r\n fieldValue={planSettings.settings.prune.snapCount}\r\n onUpdate={(val) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n settings: { ...planSettings.settings, prune: { ...planSettings.settings.prune, snapCount: val } },\r\n })\r\n }\r\n placeholder=\"5\"\r\n min={1}\r\n inline={false}\r\n hint=\"Number of Active Restorable Backups/Snapshots to Keep regardless of the Removal Policy\"\r\n />\r\n </div>\r\n <PlanPruneSettings\r\n plan={planSettings}\r\n onUpdate={(pruneSettings) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n settings: { ...planSettings.settings, prune: pruneSettings },\r\n })\r\n }\r\n />\r\n </div>\r\n )}\r\n {step === 4 && (\r\n <div className={PFClasses.planStep}>\r\n <PlanAdvancedSettings plan={planSettings} appSettings={appSettings} onUpdate={onPlanSettingsChange} device={deviceInstance} />\r\n </div>\r\n )}\r\n </div>\r\n </SidePanel>\r\n );\r\n};\r\n\r\nexport default PlanForm;\r\n"],"names":["PlanForm","title","planSettings","type","onPlanSettingsChange","onSubmit","isSubmitting","close","storagePath","storageId","planId","step","setStep","useState","settingsData","useGetSettings","appSettings","_a","deviceData","useGetDevice","deviceInstance","_b","buttonTexts","isPlanSettingsValid","gotoStep","nStep","jsxs","SidePanel","jsx","Icon","PFClasses","classes","PlanFormNav","e","PlanStrategySettings","method","PlanSourceSettings","plan","StoragePicker","_c","s","PlanReplicationSettings","replication","IntervalField","intervalSettings","NumberInput","val","PlanPruneSettings","pruneSettings","PlanAdvancedSettings"],"mappings":"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"}
1
+ {"version":3,"file":"PlanForm.js","sources":["../../../../src/components/Plan/PlanForm/PlanForm.tsx"],"sourcesContent":["import { useState } from 'react';\r\nimport Icon from '../../common/Icon/Icon';\r\nimport SidePanel from '../../common/SidePanel/SidePanel';\r\nimport StoragePicker from '../../common/form/StoragePicker/StoragePicker';\r\nimport PlanStrategySettings from '../PlanSettings/PlanStrategySettings';\r\nimport PlanSourceSettings from '../PlanSettings/PlanSourceSettings';\r\nimport { NewPlanSettings } from '../../../@types/plans';\r\nimport classes from '../AddPlan/AddPlan.module.scss';\r\nimport PFClasses from './PlanForm.module.scss';\r\nimport { useGetSettings } from '../../../services/settings';\r\nimport PlanAdvancedSettings from '../PlanSettings/PlanAdvancedSettings';\r\nimport { isPlanSettingsValid } from '../../../utils/plans';\r\nimport IntervalField from '../../common/form/IntervalField/IntervalField';\r\nimport PlanFormNav from './PlanFormNav';\r\nimport { useGetDevice } from '../../../services/devices';\r\nimport PlanPruneSettings from '../PlanSettings/PlanPruneSettings';\r\nimport PlanReplicationSettings from '../PlanSettings/PlanReplicationSettings';\r\n\r\ntype PlanFormProps = {\r\n title: string;\r\n planSettings: NewPlanSettings;\r\n type: 'add' | 'edit';\r\n onPlanSettingsChange: (settings: NewPlanSettings) => void;\r\n onSubmit: () => void;\r\n isSubmitting: boolean;\r\n close: () => void;\r\n storagePath?: string;\r\n storageId?: string;\r\n planId?: string;\r\n};\r\n\r\nconst PlanForm = ({\r\n title,\r\n planSettings,\r\n type,\r\n onPlanSettingsChange,\r\n onSubmit,\r\n isSubmitting,\r\n close,\r\n storagePath,\r\n storageId,\r\n planId,\r\n}: PlanFormProps) => {\r\n const [step, setStep] = useState<number>(1);\r\n\r\n const { data: settingsData } = useGetSettings();\r\n const appSettings = settingsData?.result?.settings || {};\r\n // const smtpConnected = appSettings?.integration?.smtp?.connected ? true : false;\r\n\r\n const { data: deviceData } = useGetDevice('main', true);\r\n const deviceInstance = deviceData?.result?.device;\r\n\r\n const buttonTexts: Record<number, { title: string; onClick: () => void }> = {\r\n 1: {\r\n title: 'Next: Configure Source & Destination',\r\n onClick: () => isPlanSettingsValid(planSettings, step) && setStep(step + 1),\r\n },\r\n 2: {\r\n title: 'Next: Setup Schedule & Retention',\r\n onClick: () => isPlanSettingsValid(planSettings, step) && setStep(step + 1),\r\n },\r\n 3: { title: 'Next: Advanced Settings', onClick: () => isPlanSettingsValid(planSettings, step) && setStep(step + 1) },\r\n 4: {\r\n title: 'Create Plan',\r\n onClick: () => isPlanSettingsValid(planSettings, false) && onSubmit(),\r\n },\r\n };\r\n\r\n const gotoStep = (nStep: number) => {\r\n if (type !== 'edit') {\r\n return;\r\n }\r\n\r\n const isSettingsValid = isPlanSettingsValid(planSettings, step);\r\n if (isSettingsValid) {\r\n setStep(nStep);\r\n }\r\n };\r\n\r\n return (\r\n <SidePanel\r\n title={title}\r\n icon={<Icon type={'backup'} size={20} />}\r\n width={type === 'add' ? '100%' : undefined}\r\n headerWidth={type === 'add' ? '740px' : undefined}\r\n close={close}\r\n withTabs={true}\r\n footer={\r\n <div className={PFClasses.planFormFooter}>\r\n <div className={PFClasses.footerContainer}>\r\n <div className={classes.footerLeft}>\r\n <div className={classes.summary}>\r\n {type === 'add' && step > 1 && (\r\n <button className={PFClasses.backButton} onClick={() => step > 0 && setStep(step - 1)} disabled={isSubmitting}>\r\n <Icon type=\"arrow-left\" size={14} /> Back\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n <div className={classes.footerRight}>\r\n {type === 'add' ? (\r\n <button className={classes.createButton} onClick={buttonTexts[step].onClick}>\r\n <Icon type=\"check\" size={12} /> {buttonTexts[step].title}\r\n </button>\r\n ) : (\r\n <button className={classes.createButton} onClick={() => isPlanSettingsValid(planSettings, false) && onSubmit()}>\r\n <Icon type=\"check\" size={12} /> {'Update Plan'}\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n >\r\n <PlanFormNav step={step} type={type} gotoStep={gotoStep} />\r\n\r\n <div className={`${PFClasses.formContent} styled__scrollbar`}>\r\n {isSubmitting && (\r\n <div className={classes.loader}>\r\n <Icon size={36} type=\"loading\" />\r\n </div>\r\n )}\r\n {step === 1 && (\r\n <div className={PFClasses.planStep}>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Plan Name*</label>\r\n {!planSettings.title && <span className={classes.fieldErrorLabel}>{'Required'}</span>}\r\n <input\r\n className={classes.titleInput}\r\n type=\"text\"\r\n placeholder=\"Plan Name\"\r\n value={planSettings.title || ''}\r\n onChange={(e) => onPlanSettingsChange({ ...planSettings, title: e.target.value })}\r\n />\r\n </div>\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Plan Description</label>\r\n <input\r\n className={classes.titleInput}\r\n type=\"text\"\r\n placeholder=\"Plan Description\"\r\n value={planSettings.description || ''}\r\n onChange={(e) => onPlanSettingsChange({ ...planSettings, description: e.target.value })}\r\n />\r\n </div>\r\n {/* <PlanTypeSettings\r\n plan={planSettings}\r\n onUpdate={(plan: NewPlanSettings) => onPlanSettingsChange({ ...plan })}\r\n disabled={type === 'edit' ? true : false}\r\n options={[\r\n {\r\n value: 'device',\r\n icon: 'computer',\r\n label: 'Device',\r\n description: 'Backup content of a Computer/Server',\r\n },\r\n {\r\n value: 'database',\r\n icon: 'database',\r\n label: 'Database',\r\n description: 'Backup a Database',\r\n disabled: true,\r\n },\r\n {\r\n value: 'googleworkspace',\r\n icon: 'google-workspace',\r\n label: 'Google Workspace',\r\n description: 'Backup Google Workspace',\r\n disabled: true,\r\n },\r\n {\r\n value: 'microsoft365',\r\n icon: 'microsoft-365',\r\n label: 'Microsoft 365',\r\n description: 'Backup Microsoft 365',\r\n disabled: true,\r\n },\r\n ]}\r\n /> */}\r\n {planSettings.sourceType === 'device' && (\r\n <PlanStrategySettings\r\n plan={planSettings}\r\n onUpdate={(method) => onPlanSettingsChange({ ...planSettings, method })}\r\n disabled={type === 'edit' ? true : false}\r\n options={[\r\n {\r\n value: 'backup',\r\n icon: 'backup',\r\n label: 'Incremental Backup',\r\n description: 'Periodically create Incremental backup snapshots of source',\r\n },\r\n // {\r\n // value: 'sync',\r\n // icon: 'reload',\r\n // label: 'Real-time Sync',\r\n // description: 'Maintain identical source (with revisions)',\r\n // disabled: true,\r\n // },\r\n // {\r\n // value: 'rescue',\r\n // icon: 'rescue',\r\n // label: 'Linux Server Backup',\r\n // description: 'Full Linux system backups with bootable ISO image',\r\n // disabled: true,\r\n // },\r\n ]}\r\n />\r\n )}\r\n </div>\r\n )}\r\n {step === 2 && (\r\n <div className={PFClasses.planStep}>\r\n <PlanSourceSettings\r\n plan={planSettings}\r\n onUpdate={(plan) => onPlanSettingsChange({ ...plan })}\r\n isEditing={type === 'edit' ? true : false}\r\n error={planSettings.sourceConfig.includes.length === 0 ? 'Required' : ''}\r\n />\r\n <div className={classes.field}>\r\n <label className={classes.label}>Backup Destination*</label>\r\n {!planSettings.storage.name && <span className={classes.fieldErrorLabel}>{'Required'}</span>}\r\n <StoragePicker\r\n storagePath={storagePath || planSettings.storagePath}\r\n storageId={storageId || planSettings.storage?.id || ''}\r\n deviceId={planSettings.sourceId || 'main'}\r\n disabled={type === 'edit' ? true : false}\r\n onUpdate={(s: { storage: { name: string; id: string; type: string }; path: string }) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n storagePath: s.path,\r\n storage: { id: s.storage.id, name: s.storage.name },\r\n })\r\n }\r\n />\r\n </div>\r\n <PlanReplicationSettings\r\n replication={planSettings.settings.replication}\r\n primaryStorageId={planSettings.storage.id}\r\n primaryStoragePath={planSettings.storagePath}\r\n deviceId={planSettings.sourceId || 'main'}\r\n isEditing={type === 'edit' ? true : false}\r\n planID={planId}\r\n onUpdate={(replication) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n settings: { ...planSettings.settings, replication: replication },\r\n })\r\n }\r\n />\r\n </div>\r\n )}\r\n {step === 3 && (\r\n <div className={PFClasses.planStep}>\r\n <div className={classes.field} style={{ width: '150px' }}>\r\n <IntervalField\r\n label=\"Backup Interval\"\r\n fieldValue={planSettings.settings.interval}\r\n onUpdate={(intervalSettings) =>\r\n onPlanSettingsChange({ ...planSettings, settings: { ...planSettings.settings, interval: intervalSettings } })\r\n }\r\n />\r\n </div>\r\n <PlanPruneSettings\r\n plan={planSettings}\r\n onUpdate={(pruneSettings) =>\r\n onPlanSettingsChange({\r\n ...planSettings,\r\n settings: { ...planSettings.settings, prune: pruneSettings },\r\n })\r\n }\r\n />\r\n </div>\r\n )}\r\n {step === 4 && (\r\n <div className={PFClasses.planStep}>\r\n <PlanAdvancedSettings plan={planSettings} appSettings={appSettings} onUpdate={onPlanSettingsChange} device={deviceInstance} />\r\n </div>\r\n )}\r\n </div>\r\n </SidePanel>\r\n );\r\n};\r\n\r\nexport default PlanForm;\r\n"],"names":["PlanForm","title","planSettings","type","onPlanSettingsChange","onSubmit","isSubmitting","close","storagePath","storageId","planId","step","setStep","useState","settingsData","useGetSettings","appSettings","_a","deviceData","useGetDevice","deviceInstance","_b","buttonTexts","isPlanSettingsValid","gotoStep","nStep","jsxs","SidePanel","jsx","Icon","PFClasses","classes","PlanFormNav","e","PlanStrategySettings","method","PlanSourceSettings","plan","StoragePicker","_c","s","PlanReplicationSettings","replication","IntervalField","intervalSettings","PlanPruneSettings","pruneSettings","PlanAdvancedSettings"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlanHistory.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanHistory/PlanHistory.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAI7C,UAAU,gBAAgB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,QAAA,MAAM,WAAW,GAAI,iCAAsC,gBAAgB,4CAqD1E,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"PlanHistory.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanHistory/PlanHistory.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAI7C,UAAU,gBAAgB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACtB;AACD,QAAA,MAAM,WAAW,GAAI,iCAAsC,gBAAgB,4CAwD1E,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { jsxs as v, jsx as m } from "react/jsx-runtime";
2
2
  import { formatDateTime as p, formatDuration as c } from "../../../utils/helpers.js";
3
3
  import o from "./PlanHistory.module.scss.js";
4
- const w = ({ planId: r, history: s, itemsCount: a = 10 }) => {
5
- const l = s.length < a ? a - s.length : 0, u = {
4
+ const P = ({ planId: r, history: a, itemsCount: s = 10 }) => {
5
+ const l = a.length < s ? s - a.length : 0, u = {
6
6
  completed: "✔️ Completed",
7
7
  failed: "❌ Failed",
8
8
  started: "⏳ In Progress",
@@ -11,7 +11,7 @@ const w = ({ planId: r, history: s, itemsCount: a = 10 }) => {
11
11
  const e = (t == null ? void 0 : t.new) || 0, d = (t == null ? void 0 : t.modified) || 0, n = (t == null ? void 0 : t.removed) || 0, i = [];
12
12
  return e > 0 && i.push(`${e} New`), d > 0 && i.push(`${d} Modified`), n > 0 && i.push(`${n} Removed`), i.length > 0 ? i.join(" / ") : "No Changes";
13
13
  };
14
- return /* @__PURE__ */ v("div", { className: `${o.history} ${a > 10 ? o.historyFull : ""}`, children: [
14
+ return /* @__PURE__ */ v("div", { className: `${o.history} ${s > 10 ? o.historyFull : ""}`, children: [
15
15
  l > 0 && [...Array(l)].map((t, e) => /* @__PURE__ */ m(
16
16
  "div",
17
17
  {
@@ -22,8 +22,8 @@ const w = ({ planId: r, history: s, itemsCount: a = 10 }) => {
22
22
  },
23
23
  `${r}-empty-${e}`
24
24
  )),
25
- s.slice(0, a).map((t, e) => {
26
- const d = t.duration || (t.ended ? (new Date(t.ended).getTime() - new Date(t.started).getTime()) / 1e3 : 0);
25
+ a.slice(0, s).sort((t, e) => (e.inProgress ? 1 : 0) - (t.inProgress ? 1 : 0)).map((t, e) => {
26
+ const d = !t.inProgress && (t.duration || (t.ended ? (new Date(t.ended).getTime() - new Date(t.started).getTime()) / 1e3 : 0));
27
27
  return /* @__PURE__ */ m(
28
28
  "div",
29
29
  {
@@ -34,7 +34,7 @@ const w = ({ planId: r, history: s, itemsCount: a = 10 }) => {
34
34
  <div><b>Changes</b>: ${$(t.changes)}</div>
35
35
  <div><b>Started</b>: ${p(t.started)}</div>
36
36
  <div><b>Ended</b>: ${t.ended ? p(t.ended) : " - "}</div>
37
- <div><b>Duration</b>: ${d ? c(d) : "0ms"} </div>
37
+ <div><b>Duration</b>: ${t.status && t.status !== "started" && d ? c(d) : "-"} </div>
38
38
  `,
39
39
  "data-tooltip-place": "top"
40
40
  },
@@ -44,6 +44,6 @@ const w = ({ planId: r, history: s, itemsCount: a = 10 }) => {
44
44
  ] });
45
45
  };
46
46
  export {
47
- w as default
47
+ P as default
48
48
  };
49
49
  //# sourceMappingURL=PlanHistory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanHistory.js","sources":["../../../../src/components/Plan/PlanHistory/PlanHistory.tsx"],"sourcesContent":["import { Plan } from '../../../@types/plans';\r\nimport { formatDateTime, formatDuration } from '../../../utils/helpers';\r\nimport classes from './PlanHistory.module.scss';\r\n\r\ninterface PlanHistoryProps {\r\n planId: string;\r\n history: Plan['backups'];\r\n itemsCount?: number;\r\n}\r\nconst PlanHistory = ({ planId, history, itemsCount = 10 }: PlanHistoryProps) => {\r\n const emptySlots = history.length < itemsCount ? itemsCount - history.length : 0;\r\n const statusVals = {\r\n completed: '✔️ Completed',\r\n failed: '❌ Failed',\r\n started: '⏳ In Progress',\r\n cancelled: '🛇 Cancelled',\r\n };\r\n\r\n const backupChanges = (changes: { new?: number; modified?: number; removed?: number }) => {\r\n const newCount = changes?.new || 0;\r\n const modifiedCount = changes?.modified || 0;\r\n const removedCount = changes?.removed || 0;\r\n const parts = [];\r\n if (newCount > 0) parts.push(`${newCount} New`);\r\n if (modifiedCount > 0) parts.push(`${modifiedCount} Modified`);\r\n if (removedCount > 0) parts.push(`${removedCount} Removed`);\r\n return parts.length > 0 ? parts.join(' / ') : 'No Changes';\r\n };\r\n\r\n return (\r\n <div className={`${classes.history} ${itemsCount > 10 ? classes.historyFull : ''}`}>\r\n {emptySlots > 0 &&\r\n [...Array(emptySlots)].map((_, i) => (\r\n <div\r\n className={classes.historyItemEmpty}\r\n key={`${planId}-empty-${i}`}\r\n data-tooltip-id=\"appTooltip\"\r\n data-tooltip-content=\"No History\"\r\n data-tooltip-place=\"top\"\r\n ></div>\r\n ))}\r\n\r\n {history.slice(0, itemsCount).map((h, i) => {\r\n const duration = h.duration || (h.ended ? (new Date(h.ended).getTime() - new Date(h.started).getTime()) / 1000 : 0);\r\n return (\r\n <div\r\n className={`${h.status === 'completed' ? classes.historyItemSuccess : ''} ${h.status === 'failed' || h.status === 'cancelled' ? classes.historyItemFailed : ''} ${h.inProgress ? classes.historyItemPending : ''}`}\r\n key={`${planId}-history-${i}`}\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-html={`\r\n <div><b>Status</b>: ${statusVals[h.status as keyof typeof statusVals] || 'Unknown'}</div>\r\n <div><b>Changes</b>: ${backupChanges(h.changes)}</div>\r\n <div><b>Started</b>: ${formatDateTime(h.started)}</div>\r\n <div><b>Ended</b>: ${h.ended ? formatDateTime(h.ended) : ' - '}</div>\r\n <div><b>Duration</b>: ${duration ? formatDuration(duration) : '0ms'} </div>\r\n `}\r\n data-tooltip-place=\"top\"\r\n ></div>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanHistory;\r\n"],"names":["PlanHistory","planId","history","itemsCount","emptySlots","statusVals","backupChanges","changes","newCount","modifiedCount","removedCount","parts","jsxs","classes","_","i","jsx","h","duration","formatDateTime","formatDuration"],"mappings":";;;AASA,MAAMA,IAAc,CAAC,EAAE,QAAAC,GAAQ,SAAAC,GAAS,YAAAC,IAAa,SAA2B;AAC7E,QAAMC,IAAaF,EAAQ,SAASC,IAAaA,IAAaD,EAAQ,SAAS,GACzEG,IAAa;AAAA,IAChB,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,WAAW;AAAA,EAAA,GAGRC,IAAgB,CAACC,MAAmE;AACvF,UAAMC,KAAWD,KAAA,gBAAAA,EAAS,QAAO,GAC3BE,KAAgBF,KAAA,gBAAAA,EAAS,aAAY,GACrCG,KAAeH,KAAA,gBAAAA,EAAS,YAAW,GACnCI,IAAQ,CAAA;AACd,WAAIH,IAAW,KAAGG,EAAM,KAAK,GAAGH,CAAQ,MAAM,GAC1CC,IAAgB,KAAGE,EAAM,KAAK,GAAGF,CAAa,WAAW,GACzDC,IAAe,KAAGC,EAAM,KAAK,GAAGD,CAAY,UAAU,GACnDC,EAAM,SAAS,IAAIA,EAAM,KAAK,KAAK,IAAI;AAAA,EACjD;AAEA,SACG,gBAAAC,EAAC,OAAA,EAAI,WAAW,GAAGC,EAAQ,OAAO,IAAIV,IAAa,KAAKU,EAAQ,cAAc,EAAE,IAC5E,UAAA;AAAA,IAAAT,IAAa,KACX,CAAC,GAAG,MAAMA,CAAU,CAAC,EAAE,IAAI,CAACU,GAAGC,MAC5B,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,WAAWH,EAAQ;AAAA,QAEnB,mBAAgB;AAAA,QAChB,wBAAqB;AAAA,QACrB,sBAAmB;AAAA,MAAA;AAAA,MAHd,GAAGZ,CAAM,UAAUc,CAAC;AAAA,IAAA,CAK9B;AAAA,IAEHb,EAAQ,MAAM,GAAGC,CAAU,EAAE,IAAI,CAACc,GAAGF,MAAM;AACzC,YAAMG,IAAWD,EAAE,aAAaA,EAAE,SAAS,IAAI,KAAKA,EAAE,KAAK,EAAE,QAAA,IAAY,IAAI,KAAKA,EAAE,OAAO,EAAE,QAAA,KAAa,MAAO;AACjH,aACG,gBAAAD;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,WAAW,GAAGC,EAAE,WAAW,cAAcJ,EAAQ,qBAAqB,EAAE,IAAII,EAAE,WAAW,YAAYA,EAAE,WAAW,cAAcJ,EAAQ,oBAAoB,EAAE,IAAII,EAAE,aAAaJ,EAAQ,qBAAqB,EAAE;AAAA,UAEhN,mBAAgB;AAAA,UAChB,qBAAmB;AAAA,wCACGR,EAAWY,EAAE,MAAiC,KAAK,SAAS;AAAA,yCAC3DX,EAAcW,EAAE,OAAO,CAAC;AAAA,yCACxBE,EAAeF,EAAE,OAAO,CAAC;AAAA,uCAC3BA,EAAE,QAAQE,EAAeF,EAAE,KAAK,IAAI,KAAK;AAAA,0CACtCC,IAAWE,EAAeF,CAAQ,IAAI,KAAK;AAAA;AAAA,UAEnE,sBAAmB;AAAA,QAAA;AAAA,QATd,GAAGjB,CAAM,YAAYc,CAAC;AAAA,MAAA;AAAA,IAYpC,CAAC;AAAA,EAAA,GACJ;AAEN;"}
1
+ {"version":3,"file":"PlanHistory.js","sources":["../../../../src/components/Plan/PlanHistory/PlanHistory.tsx"],"sourcesContent":["import { Plan } from '../../../@types/plans';\r\nimport { formatDateTime, formatDuration } from '../../../utils/helpers';\r\nimport classes from './PlanHistory.module.scss';\r\n\r\ninterface PlanHistoryProps {\r\n planId: string;\r\n history: Plan['backups'];\r\n itemsCount?: number;\r\n}\r\nconst PlanHistory = ({ planId, history, itemsCount = 10 }: PlanHistoryProps) => {\r\n const emptySlots = history.length < itemsCount ? itemsCount - history.length : 0;\r\n const statusVals = {\r\n completed: '✔️ Completed',\r\n failed: '❌ Failed',\r\n started: '⏳ In Progress',\r\n cancelled: '🛇 Cancelled',\r\n };\r\n\r\n const backupChanges = (changes: { new?: number; modified?: number; removed?: number }) => {\r\n const newCount = changes?.new || 0;\r\n const modifiedCount = changes?.modified || 0;\r\n const removedCount = changes?.removed || 0;\r\n const parts = [];\r\n if (newCount > 0) parts.push(`${newCount} New`);\r\n if (modifiedCount > 0) parts.push(`${modifiedCount} Modified`);\r\n if (removedCount > 0) parts.push(`${removedCount} Removed`);\r\n return parts.length > 0 ? parts.join(' / ') : 'No Changes';\r\n };\r\n\r\n return (\r\n <div className={`${classes.history} ${itemsCount > 10 ? classes.historyFull : ''}`}>\r\n {emptySlots > 0 &&\r\n [...Array(emptySlots)].map((_, i) => (\r\n <div\r\n className={classes.historyItemEmpty}\r\n key={`${planId}-empty-${i}`}\r\n data-tooltip-id=\"appTooltip\"\r\n data-tooltip-content=\"No History\"\r\n data-tooltip-place=\"top\"\r\n ></div>\r\n ))}\r\n\r\n {history\r\n .slice(0, itemsCount)\r\n .sort((a, b) => (b.inProgress ? 1 : 0) - (a.inProgress ? 1 : 0))\r\n .map((h, i) => {\r\n const duration = !h.inProgress && (h.duration || (h.ended ? (new Date(h.ended).getTime() - new Date(h.started).getTime()) / 1000 : 0));\r\n return (\r\n <div\r\n className={`${h.status === 'completed' ? classes.historyItemSuccess : ''} ${h.status === 'failed' || h.status === 'cancelled' ? classes.historyItemFailed : ''} ${h.inProgress ? classes.historyItemPending : ''}`}\r\n key={`${planId}-history-${i}`}\r\n data-tooltip-id=\"htmlToolTip\"\r\n data-tooltip-html={`\r\n <div><b>Status</b>: ${statusVals[h.status as keyof typeof statusVals] || 'Unknown'}</div>\r\n <div><b>Changes</b>: ${backupChanges(h.changes)}</div>\r\n <div><b>Started</b>: ${formatDateTime(h.started)}</div>\r\n <div><b>Ended</b>: ${h.ended ? formatDateTime(h.ended) : ' - '}</div>\r\n <div><b>Duration</b>: ${h.status && h.status !== 'started' && duration ? formatDuration(duration) : '-'} </div>\r\n `}\r\n data-tooltip-place=\"top\"\r\n ></div>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n\r\nexport default PlanHistory;\r\n"],"names":["PlanHistory","planId","history","itemsCount","emptySlots","statusVals","backupChanges","changes","newCount","modifiedCount","removedCount","parts","jsxs","classes","_","i","jsx","a","b","h","duration","formatDateTime","formatDuration"],"mappings":";;;AASA,MAAMA,IAAc,CAAC,EAAE,QAAAC,GAAQ,SAAAC,GAAS,YAAAC,IAAa,SAA2B;AAC7E,QAAMC,IAAaF,EAAQ,SAASC,IAAaA,IAAaD,EAAQ,SAAS,GACzEG,IAAa;AAAA,IAChB,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,WAAW;AAAA,EAAA,GAGRC,IAAgB,CAACC,MAAmE;AACvF,UAAMC,KAAWD,KAAA,gBAAAA,EAAS,QAAO,GAC3BE,KAAgBF,KAAA,gBAAAA,EAAS,aAAY,GACrCG,KAAeH,KAAA,gBAAAA,EAAS,YAAW,GACnCI,IAAQ,CAAA;AACd,WAAIH,IAAW,KAAGG,EAAM,KAAK,GAAGH,CAAQ,MAAM,GAC1CC,IAAgB,KAAGE,EAAM,KAAK,GAAGF,CAAa,WAAW,GACzDC,IAAe,KAAGC,EAAM,KAAK,GAAGD,CAAY,UAAU,GACnDC,EAAM,SAAS,IAAIA,EAAM,KAAK,KAAK,IAAI;AAAA,EACjD;AAEA,SACG,gBAAAC,EAAC,OAAA,EAAI,WAAW,GAAGC,EAAQ,OAAO,IAAIV,IAAa,KAAKU,EAAQ,cAAc,EAAE,IAC5E,UAAA;AAAA,IAAAT,IAAa,KACX,CAAC,GAAG,MAAMA,CAAU,CAAC,EAAE,IAAI,CAACU,GAAGC,MAC5B,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,WAAWH,EAAQ;AAAA,QAEnB,mBAAgB;AAAA,QAChB,wBAAqB;AAAA,QACrB,sBAAmB;AAAA,MAAA;AAAA,MAHd,GAAGZ,CAAM,UAAUc,CAAC;AAAA,IAAA,CAK9B;AAAA,IAEHb,EACG,MAAM,GAAGC,CAAU,EACnB,KAAK,CAACc,GAAGC,OAAOA,EAAE,aAAa,IAAI,MAAMD,EAAE,aAAa,IAAI,EAAE,EAC9D,IAAI,CAACE,GAAGJ,MAAM;AACZ,YAAMK,IAAW,CAACD,EAAE,eAAeA,EAAE,aAAaA,EAAE,SAAS,IAAI,KAAKA,EAAE,KAAK,EAAE,QAAA,IAAY,IAAI,KAAKA,EAAE,OAAO,EAAE,QAAA,KAAa,MAAO;AACnI,aACG,gBAAAH;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,WAAW,GAAGG,EAAE,WAAW,cAAcN,EAAQ,qBAAqB,EAAE,IAAIM,EAAE,WAAW,YAAYA,EAAE,WAAW,cAAcN,EAAQ,oBAAoB,EAAE,IAAIM,EAAE,aAAaN,EAAQ,qBAAqB,EAAE;AAAA,UAEhN,mBAAgB;AAAA,UAChB,qBAAmB;AAAA,wCACAR,EAAWc,EAAE,MAAiC,KAAK,SAAS;AAAA,yCAC3Db,EAAca,EAAE,OAAO,CAAC;AAAA,yCACxBE,EAAeF,EAAE,OAAO,CAAC;AAAA,uCAC3BA,EAAE,QAAQE,EAAeF,EAAE,KAAK,IAAI,KAAK;AAAA,0CACtCA,EAAE,UAAUA,EAAE,WAAW,aAAaC,IAAWE,EAAeF,CAAQ,IAAI,GAAG;AAAA;AAAA,UAEpG,sBAAmB;AAAA,QAAA;AAAA,QATd,GAAGnB,CAAM,YAAYc,CAAC;AAAA,MAAA;AAAA,IAYpC,CAAC;AAAA,EAAA,GACP;AAEN;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlanSourceSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanSettings/PlanSourceSettings.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAKxD,UAAU,uBAAuB;IAC9B,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,kBAAkB,GAAI,sCAAsC,uBAAuB,4CAwCxF,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"PlanSourceSettings.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanSettings/PlanSourceSettings.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAKxD,UAAU,uBAAuB;IAC9B,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,kBAAkB,GAAI,sCAAsC,uBAAuB,4CAqDxF,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1,48 +1,57 @@
1
- import { jsxs as o, Fragment as n, jsx as i } from "react/jsx-runtime";
2
- import l from "./PlanSettings.module.scss.js";
3
- import u from "../../common/PathPicker/PathPicker.js";
4
- import { useGetDevices as f } from "../../../services/devices.js";
5
- import h from "../../common/form/Select/Select.js";
6
- const S = ({ plan: s, onUpdate: r, error: t, isEditing: m }) => {
7
- const { data: c } = f(), a = [], d = s.sourceId || "main";
1
+ import { jsxs as m, Fragment as d, jsx as l } from "react/jsx-runtime";
2
+ import { useEffect as n } from "react";
3
+ import o from "./PlanSettings.module.scss.js";
4
+ import f from "../../common/PathPicker/PathPicker.js";
5
+ import { useGetDevices as h } from "../../../services/devices.js";
6
+ import p from "../../common/form/Select/Select.js";
7
+ const v = ({ plan: e, onUpdate: i, error: t, isEditing: r }) => {
8
+ const { data: c } = h(), a = [], u = e.sourceId || "main";
8
9
  return c != null && c.success && c.result && a.push(
9
- ...c.result.map((e) => ({
10
- label: `${e.name} ${e.id === "main" ? "(Main)" : ""}`,
11
- value: e.id,
12
- icon: e.id === "main" ? "computer" : "computer-remote"
10
+ ...c.result.map((s) => ({
11
+ label: `${s.name} ${s.id === "main" ? "(Main)" : ""}`,
12
+ value: s.id,
13
+ icon: s.id === "main" ? "computer" : "computer-remote"
13
14
  // disabled: device.id === 'main' || device.connected ? false : true,
14
15
  }))
15
- ), /* @__PURE__ */ o(n, { children: [
16
- /* @__PURE__ */ o("div", { className: l.field, children: [
17
- /* @__PURE__ */ i("label", { className: l.label, children: "Select Device*" }),
18
- /* @__PURE__ */ i(
19
- h,
16
+ ), n(() => {
17
+ r || i({
18
+ ...e,
19
+ sourceConfig: {
20
+ includes: [],
21
+ excludes: []
22
+ }
23
+ });
24
+ }, [r, u]), /* @__PURE__ */ m(d, { children: [
25
+ /* @__PURE__ */ m("div", { className: o.field, children: [
26
+ /* @__PURE__ */ l("label", { className: o.label, children: "Select Device*" }),
27
+ /* @__PURE__ */ l(
28
+ p,
20
29
  {
21
30
  options: a,
22
- fieldValue: d,
23
- disabled: m,
31
+ fieldValue: u,
32
+ disabled: r,
24
33
  full: !0,
25
- onUpdate: (e) => r({ ...s, sourceId: e })
34
+ onUpdate: (s) => i({ ...e, sourceId: s })
26
35
  }
27
36
  )
28
37
  ] }),
29
- /* @__PURE__ */ o("div", { className: l.field, children: [
30
- /* @__PURE__ */ i("label", { className: l.label, children: "Backup Sources*" }),
31
- t && /* @__PURE__ */ i("span", { className: l.fieldErrorLabel, children: t }),
32
- /* @__PURE__ */ i(
33
- u,
38
+ /* @__PURE__ */ m("div", { className: o.field, children: [
39
+ /* @__PURE__ */ l("label", { className: o.label, children: "Backup Sources*" }),
40
+ t && /* @__PURE__ */ l("span", { className: o.fieldErrorLabel, children: t }),
41
+ /* @__PURE__ */ l(
42
+ f,
34
43
  {
35
- paths: { includes: s.sourceConfig.includes, excludes: s.sourceConfig.excludes },
36
- onUpdate: (e) => r({ ...s, sourceConfig: { ...e } }),
37
- deviceId: d,
38
- single: s.method === "sync",
39
- disallowChange: s.method === "sync"
44
+ paths: { includes: e.sourceConfig.includes, excludes: e.sourceConfig.excludes },
45
+ onUpdate: (s) => i({ ...e, sourceConfig: { ...s } }),
46
+ deviceId: u,
47
+ single: e.method === "sync",
48
+ disallowChange: e.method === "sync" && r
40
49
  }
41
50
  )
42
51
  ] })
43
52
  ] });
44
53
  };
45
54
  export {
46
- S as default
55
+ v as default
47
56
  };
48
57
  //# 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 icon: device.id === 'main' ? 'computer' : 'computer-remote',\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,MACd,MAAMA,EAAO,OAAO,SAAS,aAAa;AAAA;AAAA,IAAA,EAE3C;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;"}
1
+ {"version":3,"file":"PlanSourceSettings.js","sources":["../../../../src/components/Plan/PlanSettings/PlanSourceSettings.tsx"],"sourcesContent":["import { useEffect } from 'react';\r\nimport 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 icon: device.id === 'main' ? 'computer' : 'computer-remote',\r\n // disabled: device.id === 'main' || device.connected ? false : true,\r\n })),\r\n );\r\n }\r\n\r\n // When the device changes, reset the sourceConfig paths to prevent invalid paths from being submitted\r\n useEffect(() => {\r\n if (!isEditing) {\r\n onUpdate({\r\n ...plan,\r\n sourceConfig: {\r\n includes: [],\r\n excludes: [],\r\n },\r\n });\r\n }\r\n }, [isEditing, deviceId]);\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' && isEditing}\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","useEffect","jsxs","Fragment","classes","jsx","Select","val","PathPicker","paths"],"mappings":";;;;;;AAeA,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,MACd,MAAMA,EAAO,OAAO,SAAS,aAAa;AAAA;AAAA,IAAA,EAE3C;AAAA,EAAA,GAKRC,EAAU,MAAM;AACb,IAAKN,KACFF,EAAS;AAAA,MACN,GAAGD;AAAA,MACH,cAAc;AAAA,QACX,UAAU,CAAA;AAAA,QACV,UAAU,CAAA;AAAA,MAAC;AAAA,IACd,CACF;AAAA,EAEP,GAAG,CAACG,GAAWI,CAAQ,CAAC,GAGrB,gBAAAG,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,SAASR;AAAA,UACT,YAAYC;AAAA,UACZ,UAAUJ;AAAA,UACV,MAAM;AAAA,UACN,UAAU,CAACY,MAAQd,EAAS,EAAE,GAAGD,GAAM,UAAUe,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/CV,KAAS,gBAAAW,EAAC,QAAA,EAAK,WAAWD,EAAQ,iBAAkB,UAAAV,GAAM;AAAA,MAC3D,gBAAAW;AAAA,QAACG;AAAA,QAAA;AAAA,UACE,OAAO,EAAE,UAAUhB,EAAK,aAAa,UAAU,UAAUA,EAAK,aAAa,SAAA;AAAA,UAC3E,UAAU,CAACiB,MAAUhB,EAAS,EAAE,GAAGD,GAAM,cAAc,EAAE,GAAGiB,EAAA,GAAS;AAAA,UACrE,UAAAV;AAAA,UACA,QAAQP,EAAK,WAAW;AAAA,UACxB,gBAAgBA,EAAK,WAAW,UAAUG;AAAA,QAAA;AAAA,MAAA;AAAA,IAC7C,EAAA,CACH;AAAA,EAAA,GACH;AAEN;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlanStats.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanStats/PlanStats.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAM7C,UAAU,cAAc;IACrB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,GAAG,CAAC;CACtB;AAED,QAAA,MAAM,SAAS,GAAI,kCAAkC,cAAc,4CAgFlE,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"PlanStats.d.ts","sourceRoot":"","sources":["../../../../src/components/Plan/PlanStats/PlanStats.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAM7C,UAAU,cAAc;IACrB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,GAAG,CAAC;CACtB;AAED,QAAA,MAAM,SAAS,GAAI,kCAAkC,cAAc,4CA0ElE,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1,26 +1,26 @@
1
1
  import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
- import a from "../../common/Icon/Icon.js";
3
- import { formatNumberToK as u, formatBytes as T } from "../../../utils/helpers.js";
4
- import S from "../PlanHistory/PlanHistory.js";
2
+ import s from "../../common/Icon/Icon.js";
3
+ import { formatIntervalDisplay as T, formatNumberToK as S, formatBytes as z } from "../../../utils/helpers.js";
4
+ import x from "../PlanHistory/PlanHistory.js";
5
5
  import t from "./PlanStats.module.scss.js";
6
- import z from "../PlanStorageInfo/PlanStorageInfo.js";
7
- const C = ({ plan: d, isSync: c, lastBackupItem: s }) => {
8
- const { sourceConfig: r, storage: g, storagePath: y, isActive: p, settings: f } = d, { interval: n } = f, m = (s == null ? void 0 : s.totalFiles) || 0, v = (s == null ? void 0 : s.totalSize) || 0, N = (l) => {
9
- let o = "";
10
- return l && l.includes && l.includes.length > 0 && (o += "<div><strong>Includes</strong></div>", o += l.includes.map((h) => `<div>${d.device.name} -> ${h}</div>`).join("")), l && l.excludes && l.excludes.length > 0 && (o += "<div><strong>Excludes</strong></div>", o += l.excludes.map((h) => `<div>${h}</div>`).join("")), o;
6
+ import u from "../PlanStorageInfo/PlanStorageInfo.js";
7
+ const A = ({ plan: o, isSync: r, lastBackupItem: n }) => {
8
+ const { sourceConfig: a, storage: m, storagePath: g, isActive: h, settings: f } = o, { interval: N } = f, p = (n == null ? void 0 : n.totalFiles) || 0, v = (n == null ? void 0 : n.totalSize) || 0, y = (l) => {
9
+ let d = "";
10
+ return l && l.includes && l.includes.length > 0 && (d += "<div><strong>Includes</strong></div>", d += l.includes.map((c) => `<div>${o.device.name} -> ${c}</div>`).join("")), l && l.excludes && l.excludes.length > 0 && (d += "<div><strong>Excludes</strong></div>", d += l.excludes.map((c) => `<div>${c}</div>`).join("")), d;
11
11
  };
12
12
  return /* @__PURE__ */ i("div", { className: t.planStats, children: [
13
13
  /* @__PURE__ */ i("div", { className: t.sources, children: [
14
14
  /* @__PURE__ */ i("div", { className: t.widgetTitle, children: [
15
- /* @__PURE__ */ e(a, { type: "backup", size: 12 }),
15
+ /* @__PURE__ */ e(s, { type: "backup", size: 12 }),
16
16
  " ",
17
- c ? "Syncing" : "Backing Up"
17
+ r ? "Syncing" : "Backing Up"
18
18
  ] }),
19
19
  /* @__PURE__ */ i("div", { className: t.sourceContent, children: [
20
- /* @__PURE__ */ i("div", { "data-tooltip-id": "htmlToolTip", "data-tooltip-place": "top", "data-tooltip-html": N(r), children: [
21
- /* @__PURE__ */ e(a, { type: "folders", size: 18 }),
20
+ /* @__PURE__ */ i("div", { "data-tooltip-id": "htmlToolTip", "data-tooltip-place": "top", "data-tooltip-html": y(a), children: [
21
+ /* @__PURE__ */ e(s, { type: "folders", size: 18 }),
22
22
  /* @__PURE__ */ i("span", { children: [
23
- r == null ? void 0 : r.includes.length,
23
+ a == null ? void 0 : a.includes.length,
24
24
  " Sources"
25
25
  ] })
26
26
  ] }),
@@ -29,52 +29,52 @@ const C = ({ plan: d, isSync: c, lastBackupItem: s }) => {
29
29
  {
30
30
  "data-tooltip-id": "htmlToolTip",
31
31
  "data-tooltip-place": "top",
32
- "data-tooltip-html": p ? c ? `Syncing changes every ${n.minutes} minutes` : `Copying changes ${["hours", "minutes", "days"].includes(n.type) ? n[n.type] + n.type : n.type}` : "Plan is Not Active",
32
+ "data-tooltip-html": h ? `${r ? "Syncing" : "Copying"} changes ${T(N)}` : "Plan is Not Active",
33
33
  children: [
34
- /* @__PURE__ */ e(a, { type: p ? c ? "reload" : "copy" : "pause", size: 16 }),
34
+ /* @__PURE__ */ e(s, { type: h ? r ? "reload" : "copy" : "pause", size: 16 }),
35
35
  /* @__PURE__ */ e("div", { className: t.sourceArrow, children: "→" })
36
36
  ]
37
37
  }
38
38
  ),
39
39
  /* @__PURE__ */ e(
40
- z,
40
+ u,
41
41
  {
42
42
  disableTooltip: !1,
43
43
  inline: !1,
44
- replicationSettings: d.settings.replication,
45
- storage: g,
46
- storagePath: y
44
+ replicationSettings: o.settings.replication,
45
+ storage: m,
46
+ storagePath: g
47
47
  }
48
48
  )
49
49
  ] })
50
50
  ] }),
51
51
  /* @__PURE__ */ i("div", { className: t.snapshots, children: [
52
52
  /* @__PURE__ */ i("div", { className: t.widgetTitle, children: [
53
- /* @__PURE__ */ e(a, { type: "folders", size: 12 }),
53
+ /* @__PURE__ */ e(s, { type: "folders", size: 12 }),
54
54
  " Source Stats"
55
55
  ] }),
56
56
  /* @__PURE__ */ i("div", { className: t.snapshotsContent, children: [
57
57
  /* @__PURE__ */ i("div", { children: [
58
- /* @__PURE__ */ e("span", { children: m ? u(m) : 0 }),
58
+ /* @__PURE__ */ e("span", { children: p ? S(p) : 0 }),
59
59
  /* @__PURE__ */ e("span", { children: "Files" })
60
60
  ] }),
61
61
  /* @__PURE__ */ e("div", {}),
62
62
  /* @__PURE__ */ i("div", { children: [
63
- /* @__PURE__ */ e("span", { children: v ? T(v) : "0.00B" }),
63
+ /* @__PURE__ */ e("span", { children: v ? z(v) : "0.00B" }),
64
64
  /* @__PURE__ */ e("span", { children: "Size" })
65
65
  ] })
66
66
  ] })
67
67
  ] }),
68
68
  /* @__PURE__ */ i("div", { className: t.health, children: [
69
69
  /* @__PURE__ */ i("div", { className: t.widgetTitle, children: [
70
- /* @__PURE__ */ e(a, { type: "speed", size: 12 }),
70
+ /* @__PURE__ */ e(s, { type: "speed", size: 12 }),
71
71
  " Health"
72
72
  ] }),
73
- /* @__PURE__ */ e("div", { className: t.healthContent, children: /* @__PURE__ */ e(S, { planId: d.id, history: d.backups, itemsCount: 90 }) })
73
+ /* @__PURE__ */ e("div", { className: t.healthContent, children: /* @__PURE__ */ e(x, { planId: o.id, history: o.backups, itemsCount: 90 }) })
74
74
  ] })
75
75
  ] });
76
76
  };
77
77
  export {
78
- C as default
78
+ A as default
79
79
  };
80
80
  //# sourceMappingURL=PlanStats.js.map
@@ -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\nimport PlanStorageInfo from '../PlanStorageInfo/PlanStorageInfo';\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 <PlanStorageInfo\r\n disableTooltip={false}\r\n inline={false}\r\n replicationSettings={plan.settings.replication}\r\n storage={storage}\r\n storagePath={storagePath}\r\n />\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","p","jsxs","classes","jsx","Icon","PlanStorageInfo","formatNumberToK","formatBytes","PlanHistory"],"mappings":"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"}
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, formatIntervalDisplay } from '../../../utils/helpers';\r\nimport PlanHistory from '../PlanHistory/PlanHistory';\r\nimport classes from './PlanStats.module.scss';\r\nimport PlanStorageInfo from '../PlanStorageInfo/PlanStorageInfo';\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={isActive ? `${isSync ? 'Syncing' : 'Copying'} changes ${formatIntervalDisplay(interval)}` : 'Plan is Not Active'}\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 <PlanStorageInfo\r\n disableTooltip={false}\r\n inline={false}\r\n replicationSettings={plan.settings.replication}\r\n storage={storage}\r\n storagePath={storagePath}\r\n />\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","p","jsxs","classes","jsx","Icon","formatIntervalDisplay","PlanStorageInfo","formatNumberToK","formatBytes","PlanHistory"],"mappings":";;;;;;AAaA,MAAMA,IAAY,CAAC,EAAE,MAAAC,GAAM,QAAAC,GAAQ,gBAAAC,QAAqC;AACrE,QAAM,EAAE,cAAAC,GAAc,SAAAC,GAAS,aAAAC,GAAa,UAAAC,GAAU,UAAAC,MAAaP,GAC7D,EAAE,UAAAQ,MAAaD,GAEfE,KAAaP,KAAA,gBAAAA,EAAgB,eAAc,GAC3CQ,KAAYR,KAAA,gBAAAA,EAAgB,cAAa,GAEzCS,IAAoB,CAACC,MAAkC;AAC1D,QAAIC,IAAO;AACX,WAAID,KAAWA,EAAQ,YAAYA,EAAQ,SAAS,SAAS,MAC1DC,KAAQ,wCACRA,KAAQD,EAAQ,SAAS,IAAI,CAACE,MAAM,QAAQd,EAAK,OAAO,IAAI,OAAOc,CAAC,QAAQ,EAAE,KAAK,EAAE,IAEpFF,KAAWA,EAAQ,YAAYA,EAAQ,SAAS,SAAS,MAC1DC,KAAQ,wCACRA,KAAQD,EAAQ,SAAS,IAAI,CAACE,MAAM,QAAQA,CAAC,QAAQ,EAAE,KAAK,EAAE,IAE1DD;AAAA,EACV;AAEA,SACG,gBAAAE,EAAC,OAAA,EAAI,WAAWC,EAAQ,WACrB,UAAA;AAAA,IAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAQ,SACrB,UAAA;AAAA,MAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAQ,aACrB,UAAA;AAAA,QAAA,gBAAAC,EAACC,GAAA,EAAK,MAAK,UAAS,MAAM,IAAI;AAAA,QAAE;AAAA,QAAEjB,IAAS,YAAY;AAAA,MAAA,GAC1D;AAAA,MACA,gBAAAc,EAAC,OAAA,EAAI,WAAWC,EAAQ,eACrB,UAAA;AAAA,QAAA,gBAAAD,EAAC,OAAA,EAAI,mBAAgB,eAAc,sBAAmB,OAAM,qBAAmBJ,EAAkBR,CAAY,GAC1G,UAAA;AAAA,UAAA,gBAAAc,EAACC,GAAA,EAAK,MAAK,WAAU,MAAM,IAAI;AAAA,4BAC9B,QAAA,EAAM,UAAA;AAAA,YAAAf,KAAA,gBAAAA,EAAc,SAAS;AAAA,YAAO;AAAA,UAAA,EAAA,CAAQ;AAAA,QAAA,GAChD;AAAA,QACA,gBAAAY;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,mBAAgB;AAAA,YAChB,sBAAmB;AAAA,YACnB,qBAAmBT,IAAW,GAAGL,IAAS,YAAY,SAAS,YAAYkB,EAAsBX,CAAQ,CAAC,KAAK;AAAA,YAE/G,UAAA;AAAA,cAAA,gBAAAS,EAACC,GAAA,EAAK,MAAMZ,IAAYL,IAAS,WAAW,SAAU,SAAS,MAAM,GAAA,CAAI;AAAA,cACzE,gBAAAgB,EAAC,OAAA,EAAI,WAAWD,EAAQ,aAAa,UAAA,IAAA,CAAC;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAEzC,gBAAAC;AAAA,UAACG;AAAA,UAAA;AAAA,YACE,gBAAgB;AAAA,YAChB,QAAQ;AAAA,YACR,qBAAqBpB,EAAK,SAAS;AAAA,YACnC,SAAAI;AAAA,YACA,aAAAC;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CACH;AAAA,IAAA,GACH;AAAA,IACA,gBAAAU,EAAC,OAAA,EAAI,WAAWC,EAAQ,WACrB,UAAA;AAAA,MAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAQ,aACrB,UAAA;AAAA,QAAA,gBAAAC,EAACC,GAAA,EAAK,MAAK,WAAU,MAAM,IAAI;AAAA,QAAE;AAAA,MAAA,GACpC;AAAA,MACA,gBAAAH,EAAC,OAAA,EAAI,WAAWC,EAAQ,kBACrB,UAAA;AAAA,QAAA,gBAAAD,EAAC,OAAA,EACE,UAAA;AAAA,UAAA,gBAAAE,EAAC,QAAA,EAAM,UAAAR,IAAaY,EAAgBZ,CAAU,IAAI,GAAE;AAAA,UACpD,gBAAAQ,EAAC,UAAK,UAAA,QAAA,CAAK;AAAA,QAAA,GACd;AAAA,0BACC,OAAA,EAAI;AAAA,0BACJ,OAAA,EACE,UAAA;AAAA,UAAA,gBAAAA,EAAC,QAAA,EAAM,UAAAP,IAAYY,EAAYZ,CAAS,IAAI,SAAQ;AAAA,UACpD,gBAAAO,EAAC,UAAK,UAAA,OAAA,CAAI;AAAA,QAAA,EAAA,CACb;AAAA,MAAA,EAAA,CACH;AAAA,IAAA,GACH;AAAA,IACA,gBAAAF,EAAC,OAAA,EAAI,WAAWC,EAAQ,QACrB,UAAA;AAAA,MAAA,gBAAAD,EAAC,OAAA,EAAI,WAAWC,EAAQ,aACrB,UAAA;AAAA,QAAA,gBAAAC,EAACC,GAAA,EAAK,MAAK,SAAQ,MAAM,IAAI;AAAA,QAAE;AAAA,MAAA,GAClC;AAAA,MACA,gBAAAD,EAAC,OAAA,EAAI,WAAWD,EAAQ,eACrB,UAAA,gBAAAC,EAACM,GAAA,EAAY,QAAQvB,EAAK,IAAI,SAASA,EAAK,SAAS,YAAY,IAAI,EAAA,CACxE;AAAA,IAAA,EAAA,CACH;AAAA,EAAA,GACH;AAEN;"}
@@ -1,4 +1,4 @@
1
- const s = "_planStats_rYcAd", t = "_widgetTitle_PJX4o", o = "_sources_KFvuD", n = "_snapshots_s9ThB", e = "_health_Tux66", c = "_sourceContent_ioGQg", a = "_sourceArrow_VI4d7", r = "_snapshotsContent_ZuAcY", _ = {
1
+ const s = "_planStats_Q8GaX", t = "_widgetTitle_2cQ1i", o = "_sources_Ddf4g", n = "_snapshots_LJ3RW", e = "_health_BlVH1", c = "_sourceContent_X5Yf9", a = "_sourceArrow_XqRux", r = "_snapshotsContent_juzd3", _ = {
2
2
  planStats: s,
3
3
  widgetTitle: t,
4
4
  sources: o,
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/components/common/Icon/Icon.tsx"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAOF,QAAA,MAAM,IAAI,GAAI,uCAAuE,SAAS,4CAw+C7F,CAAC;AAmBF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../../src/components/common/Icon/Icon.tsx"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAOF,QAAA,MAAM,IAAI,GAAI,uCAAuE,SAAS,4CAo/C7F,CAAC;AAmBF,eAAe,IAAI,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs as e, jsx as a } from "react/jsx-runtime";
2
- const r = ({ type: c, color: l = "currentColor", size: h = 16, title: t = "", classes: d = "" }) => /* @__PURE__ */ e("span", { className: `icon ${d}`, title: t, children: [
2
+ const r = ({ type: c, color: l = "currentColor", size: h = 16, title: d = "", classes: t = "" }) => /* @__PURE__ */ e("span", { className: `icon ${t}`, title: d, children: [
3
3
  c === "logo" && /* @__PURE__ */ a(i, { size: h, viewBox: "0 0 120 120", children: /* @__PURE__ */ a(
4
4
  "path",
5
5
  {
@@ -683,6 +683,17 @@ const r = ({ type: c, color: l = "currentColor", size: h = 16, title: t = "", cl
683
683
  }
684
684
  )
685
685
  ] }) }),
686
+ c === "folder-exclude" && /* @__PURE__ */ a(i, { size: h, viewBox: "0 0 24 24", children: /* @__PURE__ */ a(
687
+ "path",
688
+ {
689
+ fill: "none",
690
+ stroke: l,
691
+ strokeLinecap: "round",
692
+ strokeLinejoin: "round",
693
+ strokeWidth: 2,
694
+ d: "M13.5 19H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h4l3 3h7a2 2 0 0 1 2 2v4m1 9l-5-5m0 5l5-5"
695
+ }
696
+ ) }),
686
697
  c === "folders" && /* @__PURE__ */ a(i, { size: h, viewBox: "0 0 24 24", children: /* @__PURE__ */ e("g", { fill: "none", stroke: l, strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, children: [
687
698
  /* @__PURE__ */ a("path", { d: "M9 3h3l2 2h5a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2" }),
688
699
  /* @__PURE__ */ a("path", { d: "M17 16v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h2" })