From f0c005e7009935c762535f1e8947428fc3796eb4 Mon Sep 17 00:00:00 2001 From: garethgeorge Date: Wed, 14 Feb 2024 20:13:15 -0800 Subject: [PATCH] fix: retention policy configuration in add plan view --- webui/src/views/AddPlanModal.tsx | 168 ++++++++++++++++--------------- 1 file changed, 89 insertions(+), 79 deletions(-) diff --git a/webui/src/views/AddPlanModal.tsx b/webui/src/views/AddPlanModal.tsx index 83562266..c6680f6b 100644 --- a/webui/src/views/AddPlanModal.tsx +++ b/webui/src/views/AddPlanModal.tsx @@ -374,13 +374,27 @@ export const AddPlanModal = ({ const RetentionPolicyView = () => { const form = Form.useFormInstance(); - const retention = form.getFieldValue("retention") as RetentionPolicy | undefined; - const [mode, setMode] = useState(!retention ? 2 : retention.keepLastN ? 0 : 1); + const retention = Form.useWatch('retention', { form, preserve: true }) as RetentionPolicy | undefined; + console.log("RETENTION: " + JSON.stringify(retention)); + + let [mode, setMode] = useState(0); + useEffect(() => { + if (!retention || (!retention.keepDaily && !retention.keepHourly && !retention.keepLastN && !retention.keepMonthly && !retention.keepWeekly && !retention.keepYearly)) { + console.log("RETENTION NOT SET"); + setMode(0); + } else if (!!retention.keepLastN) { + console.log("KEEP LAST N: ", retention.keepLastN); + setMode(1); + } else { + setMode(2); + } + }, [retention]) + console.log("MODE: ", mode); let elem: React.ReactNode = null; - if (mode === 2) { + if (mode === 0) { elem =

All backups are retained e.g. for append-only repos. Ensure that you manually forget / prune backups elsewhere. Backrest will register forgets performed externally on the next backup.

; - } else if (mode === 0) { + } else if (mode === 1) { elem = ( { Count} type="number" /> ); - } else { + } else if (mode === 2) { elem = ( - - - - - Yearly} - type="number" - /> - - - Monthly} - type="number" - /> - - - Weekly} - type="number" - /> - - - - - Daily} - type="number" - /> - - - Hourly} - type="number" - /> - - - - + + + + Yearly} + type="number" + /> + + + Monthly} + type="number" + /> + + + Weekly} + type="number" + /> + + + + + Daily} + type="number" + /> + + + Hourly} + type="number" + /> + + + ); } @@ -471,29 +481,27 @@ const RetentionPolicyView = () => { { + console.log("SELECTED: ", e.target); const selected = e.target.value; - if (selected === 0) { - setMode(0); + if (selected === 1) { form.setFieldValue("retention", { keepLastN: 30 }); - } else if (selected === 1) { - setMode(1); + } else if (selected === 2) { form.setFieldValue("retention", { keepYearly: 0, keepMonthly: 3, keepWeekly: 4, keepDaily: 7, keepHourly: 24 }); } else { - setMode(2); form.setFieldValue("retention", null); } }}> - + By Count - + By Time Period - + None @@ -502,7 +510,9 @@ const RetentionPolicyView = () => {
- {elem} + + {elem} +