diff --git a/portal-ui/src/screens/Console/Buckets/BucketDetails/AddLifecycleModal.tsx b/portal-ui/src/screens/Console/Buckets/BucketDetails/AddLifecycleModal.tsx index 4cde9de96..182423212 100644 --- a/portal-ui/src/screens/Console/Buckets/BucketDetails/AddLifecycleModal.tsx +++ b/portal-ui/src/screens/Console/Buckets/BucketDetails/AddLifecycleModal.tsx @@ -29,7 +29,6 @@ import { } from "../../Configurations/TiersConfiguration/types"; import { ErrorResponseHandler } from "../../../../common/types"; import InputBoxWrapper from "../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper"; -import FormSwitchWrapper from "../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper"; import ModalWrapper from "../../Common/ModalWrapper/ModalWrapper"; import api from "../../../../common/api"; import SelectWrapper from "../../Common/FormComponents/SelectWrapper/SelectWrapper"; @@ -42,6 +41,7 @@ import { spacingUtils, } from "../../Common/FormComponents/common/styleLibrary"; import { LifecycleConfigIcon } from "../../../../icons"; +import InputUnitMenu from "../../Common/FormComponents/InputUnitMenu/InputUnitMenu"; interface IReplicationModal { open: boolean; @@ -92,13 +92,11 @@ const AddLifecycleModal = ({ const [prefix, setPrefix] = useState(""); const [tags, setTags] = useState(""); const [storageClass, setStorageClass] = useState(""); - const [NCTransitionSC, setNCTransitionSC] = useState(""); - const [expiredObjectDM, setExpiredObjectDM] = useState(false); - const [NCExpirationDays, setNCExpirationDays] = useState("0"); - const [NCTransitionDays, setNCTransitionDays] = useState("0"); + const [NCExpirationDays, setNCExpirationDays] = useState(""); + const [NCTransitionDays, setNCTransitionDays] = useState(""); const [ilmType, setIlmType] = useState("expiry"); - const [expiryDays, setExpiryDays] = useState("0"); - const [transitionDays, setTransitionDays] = useState("0"); + const [expiryDays, setExpiryDays] = useState(""); + const [transitionDays, setTransitionDays] = useState(""); const [isFormValid, setIsFormValid] = useState(false); useEffect(() => { @@ -143,11 +141,17 @@ const AddLifecycleModal = ({ const addRecord = () => { let rules = {}; + let markerOn = false; + if (ilmType === "expiry") { let expiry = { expiry_days: parseInt(expiryDays), }; + if (parseInt(expiryDays) > 0 && parseInt(NCExpirationDays) > 0) { + markerOn = true; + } + rules = { ...expiry, noncurrentversion_expiration_days: parseInt(NCExpirationDays), @@ -157,10 +161,13 @@ const AddLifecycleModal = ({ transition_days: parseInt(transitionDays), }; + if (parseInt(transitionDays) > 0 && parseInt(NCTransitionDays) > 0) { + markerOn = true; + } + rules = { ...transition, noncurrentversion_transition_days: parseInt(NCTransitionDays), - noncurrentversion_transition_storage_class: NCTransitionSC, storage_class: storageClass, }; } @@ -169,7 +176,7 @@ const AddLifecycleModal = ({ type: ilmType, prefix, tags, - expired_object_delete_marker: expiredObjectDM, + expired_object_delete_marker: markerOn, ...rules, }; @@ -218,18 +225,14 @@ const AddLifecycleModal = ({ > - -
- - Lifecycle Configuration - - - + + + ) => { setIlmType(e.target.value as string); }} @@ -239,54 +242,97 @@ const AddLifecycleModal = ({ ]} /> + {ilmType === "expiry" ? ( ) => { - setExpiryDays(e.target.value); + if (e.target.validity.valid) { + setExpiryDays(e.target.value); + } }} - label="Expiry Days" + pattern={"[0-9]*"} + label="Delete Latest Version After" value={expiryDays} - min="0" + overlayObject={ + + } /> + ) => { - setNCExpirationDays(e.target.value); + if (e.target.validity.valid) { + setNCExpirationDays(e.target.value); + } }} - label="Non-current Expiration Days" + pattern={"[0-9]*"} + label="Delete Older Versions After" value={NCExpirationDays} min="0" + overlayObject={ + + } /> ) : ( + + ) => { + setStorageClass(e.target.value as string); + }} + options={tiersList} + /> + ) => { - setTransitionDays(e.target.value); + if (e.target.validity.valid) { + setTransitionDays(e.target.value); + } }} - label="Transition Days" + pattern={"[0-9]*"} + label="Transition Latest Version" value={transitionDays} min="0" + overlayObject={ + + } /> @@ -297,48 +343,30 @@ const AddLifecycleModal = ({ onChange={( e: React.ChangeEvent ) => { - setNCTransitionDays(e.target.value); + if (e.target.validity.valid) { + setNCTransitionDays(e.target.value); + } }} - label="Non-current Transition Days" + label="Transition Older Versions" value={NCTransitionDays} - min="0" - /> - - - - ) => { - setNCTransitionSC(e.target.value); - }} - placeholder="Set Non-current Version Transition Storage Class" - label="Non-current Version Transition Storage Class" - value={NCTransitionSC} - /> - - - ) => { - setStorageClass(e.target.value as string); - }} - options={tiersList} + pattern={"[0-9]*"} + overlayObject={ + + } /> )} -
+
- - File Configuration - + Filters - - - ) => { - setExpiredObjectDM(event.target.checked); - }} - label={"Expired Object Delete Marker"} - /> -
diff --git a/portal-ui/src/screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx b/portal-ui/src/screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx index 6472b97ed..a40990cd3 100644 --- a/portal-ui/src/screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx +++ b/portal-ui/src/screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx @@ -175,7 +175,7 @@ const FormSwitchWrapper = ({ - + {label !== "" && ( {label} diff --git a/portal-ui/src/screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx b/portal-ui/src/screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx index 8ae23fbde..b149812e0 100644 --- a/portal-ui/src/screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx +++ b/portal-ui/src/screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx @@ -27,7 +27,7 @@ interface IInputUnitBox { unitSelected: string; unitsList: selectorTypes[]; disabled?: boolean; - onUnitChange: (newValue: string) => void; + onUnitChange?: (newValue: string) => void; } const styles = (theme: Theme) => @@ -56,7 +56,7 @@ const InputUnitMenu = ({ }; const handleClose = (newUnit: string) => { setAnchorEl(null); - if (newUnit !== "") { + if (newUnit !== "" && onUnitChange) { onUnitChange(newUnit); } };