Skip to content

Commit 39b7b32

Browse files
cesnietordvaldivia
andauthored
Fix retention date on object UI (#556)
Co-authored-by: Daniel Valdivia <hola@danielvaldivia.com>
1 parent 38cf606 commit 39b7b32

File tree

4 files changed

+144
-130
lines changed

4 files changed

+144
-130
lines changed

portal-ui/bindata_assetfs.go

Lines changed: 106 additions & 129 deletions
Large diffs are not rendered by default.

portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetRetention.tsx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import FormSwitchWrapper from "../../../../Common/FormComponents/FormSwitchWrapp
2727
import RadioGroupSelector from "../../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector";
2828
import DateSelector from "../../../../Common/FormComponents/DateSelector/DateSelector";
2929
import api from "../../../../../../common/api";
30+
import { twoDigitDate } from "../../../../Common/FormComponents/DateSelector/utils";
3031

3132
const styles = (theme: Theme) =>
3233
createStyles({
@@ -76,6 +77,19 @@ const SetRetention = ({
7677
setType(objectInfo.retention_mode.toLowerCase());
7778
setAlreadyConfigured(true);
7879
}
80+
// get retention_until_date if defined
81+
if (objectInfo.retention_until_date) {
82+
const valueDate = new Date(objectInfo.retention_until_date);
83+
if (valueDate.toString() !== "Invalid Date") {
84+
const year = valueDate.getFullYear();
85+
const month = twoDigitDate(valueDate.getMonth() + 1);
86+
const day = valueDate.getDate();
87+
if (!isNaN(day) && month !== "NaN" && !isNaN(year)) {
88+
setDate(`${year}-${month}-${day}`);
89+
}
90+
}
91+
setAlreadyConfigured(true);
92+
}
7993
}, [objectInfo]);
8094

8195
const dateElement = useRef<IRefObject>(null);
@@ -217,10 +231,13 @@ const SetRetention = ({
217231
label="Date"
218232
disableOptions={dateFieldDisabled()}
219233
ref={dateElement}
234+
value={date}
220235
borderBottom={true}
221236
onDateChange={(date: string, isValid: boolean) => {
222237
setIsDateValid(isValid);
223-
setDate(date);
238+
if (isValid) {
239+
setDate(date);
240+
}
224241
}}
225242
/>
226243
</Grid>

portal-ui/src/screens/Console/Common/FormComponents/DateSelector/DateSelector.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ interface IDateSelectorProps {
8686
addSwitch?: boolean;
8787
tooltip?: string;
8888
borderBottom?: boolean;
89+
value?: string;
8990
onDateChange: (date: string, isValid: boolean) => any;
9091
}
9192

@@ -100,6 +101,7 @@ const DateSelector = forwardRef(
100101
tooltip = "",
101102
borderBottom = false,
102103
onDateChange,
104+
value = "",
103105
}: IDateSelectorProps,
104106
ref: any
105107
) => {
@@ -110,6 +112,18 @@ const DateSelector = forwardRef(
110112
const [day, setDay] = useState<string>("");
111113
const [year, setYear] = useState<string>("");
112114

115+
useEffect(() => {
116+
// verify if there is a current value
117+
// assume is in the format "2021-12-30"
118+
if (value !== "") {
119+
const valueSplit = value.split("-");
120+
setYear(valueSplit[0]);
121+
setMonth(valueSplit[1]);
122+
// Turn to single digit to be displayed on dropdown buttons
123+
setDay(`${parseInt(valueSplit[2])}`);
124+
}
125+
}, [value]);
126+
113127
useEffect(() => {
114128
const [isValid, dateString] = validDate(year, month, day);
115129
onDateChange(dateString, isValid);

portal-ui/src/screens/Console/Common/FormComponents/DateSelector/utils.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,9 @@ export const validDate = (year: string, month: string, day: string): any[] => {
5656

5757
return [parsedDate === dateString, dateString];
5858
};
59+
60+
// twoDigitDate gets a two digit string number used for months or days
61+
// returns "NaN" if number is NaN
62+
export const twoDigitDate = (num: number): string => {
63+
return num < 10 ? `0${num}` : `${num}`;
64+
};

0 commit comments

Comments
 (0)