Skip to content

Commit 716085f

Browse files
author
Benjamin Perez
committed
Added keys & labels to compile with S3 standard
1 parent 4854f13 commit 716085f

File tree

4 files changed

+52
-47
lines changed

4 files changed

+52
-47
lines changed

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

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@ import InputBoxWrapper from "../../../../Common/FormComponents/InputBoxWrapper/I
44
import ModalWrapper from "../../../../Common/ModalWrapper/ModalWrapper";
55
import { createStyles, Theme, withStyles } from "@material-ui/core/styles";
66
import { modalBasic } from "../../../../Common/FormComponents/common/styleLibrary";
7-
import { tagObjectCreate } from "../utils";
87
import api from "../../../../../../common/api";
98

109
interface ITagModal {
1110
modalOpen: boolean;
12-
currentTags: string[];
11+
currentTags: any;
1312
bucketName: string;
1413
versionId: string;
1514
onCloseAndUpdate: (refresh: boolean) => void;
@@ -38,24 +37,28 @@ const AddTagModal = ({
3837
versionId,
3938
classes,
4039
}: ITagModal) => {
41-
const [newTag, setNewTag] = useState<string>("");
40+
const [newKey, setNewKey] = useState<string>("");
41+
const [newLabel, setNewLabel] = useState<string>("");
4242
const [error, setError] = useState<string>("");
4343
const [isSending, setIsSending] = useState<boolean>(false);
4444

4545
const resetForm = () => {
46-
setNewTag("");
46+
setNewLabel("");
47+
setNewKey("");
4748
};
4849

4950
const addTagProcess = () => {
5051
setIsSending(true);
51-
const newTagList = [...currentTags, newTag];
52-
const tagsToSave = tagObjectCreate(newTagList);
52+
const newTag: any = {};
53+
54+
newTag[newKey] = newLabel;
55+
const newTagList = { ...currentTags, ...newTag };
5356

5457
api
5558
.invoke(
5659
"PUT",
5760
`/api/v1/buckets/${bucketName}/objects/tags?prefix=${selectedObject}&version_id=${versionId}`,
58-
tagsToSave
61+
{ tags: newTagList }
5962
)
6063
.then((res: any) => {
6164
setIsSending(false);
@@ -83,13 +86,25 @@ const AddTagModal = ({
8386
{error !== "" && <span>{error}</span>}
8487
<Grid item xs={12}>
8588
<InputBoxWrapper
86-
value={newTag}
87-
label={"New Tag"}
88-
id={"newTag"}
89-
name={"newTag"}
90-
placeholder={"Enter New Tag"}
89+
value={newKey}
90+
label={"New Tag Key"}
91+
id={"newTagKey"}
92+
name={"newTagKey"}
93+
placeholder={"Enter New Tag Key"}
94+
onChange={(e) => {
95+
setNewKey(e.target.value);
96+
}}
97+
/>
98+
</Grid>
99+
<Grid item xs={12}>
100+
<InputBoxWrapper
101+
value={newLabel}
102+
label={"New Tag Label"}
103+
id={"newTagLabel"}
104+
name={"newTagLabel"}
105+
placeholder={"Enter New Tag Label"}
91106
onChange={(e) => {
92-
setNewTag(e.target.value);
107+
setNewLabel(e.target.value);
93108
}}
94109
/>
95110
</Grid>
@@ -106,7 +121,9 @@ const AddTagModal = ({
106121
type="submit"
107122
variant="contained"
108123
color="primary"
109-
disabled={newTag.trim() === "" || isSending}
124+
disabled={
125+
newLabel.trim() === "" || newKey.trim() === "" || isSending
126+
}
110127
onClick={addTagProcess}
111128
>
112129
Save

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

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,17 @@ import {
99
Grid,
1010
LinearProgress,
1111
} from "@material-ui/core";
12-
import InputBoxWrapper from "../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
13-
import ModalWrapper from "../../../../Common/ModalWrapper/ModalWrapper";
1412
import { createStyles, Theme, withStyles } from "@material-ui/core/styles";
1513
import { modalBasic } from "../../../../Common/FormComponents/common/styleLibrary";
16-
import { tagObjectCreate } from "../utils";
1714
import api from "../../../../../../common/api";
1815
import Typography from "@material-ui/core/Typography";
1916

2017
interface IDeleteTagModal {
2118
deleteOpen: boolean;
22-
currentTags: string[];
19+
currentTags: any;
2320
bucketName: string;
2421
versionId: string;
25-
selectedTag: string;
22+
selectedTag: [string, string];
2623
onCloseAndUpdate: (refresh: boolean) => void;
2724
selectedObject: string;
2825
classes: any;
@@ -52,18 +49,18 @@ const DeleteTagModal = ({
5249
}: IDeleteTagModal) => {
5350
const [deleteError, setDeleteError] = useState<string>("");
5451
const [deleteLoading, setDeleteSending] = useState<boolean>(false);
52+
const [tagKey, tagLabel] = selectedTag;
5553

5654
const removeTagProcess = () => {
5755
setDeleteSending(true);
58-
const updatedTagsList = currentTags.filter((tag) => tag !== selectedTag);
59-
60-
const tagsToSave = tagObjectCreate(updatedTagsList);
56+
const cleanObject = { ...currentTags };
57+
delete cleanObject[tagKey];
6158

6259
api
6360
.invoke(
6461
"PUT",
6562
`/api/v1/buckets/${bucketName}/objects/tags?prefix=${selectedObject}&version_id=${versionId}`,
66-
tagsToSave
63+
{ tags: cleanObject }
6764
)
6865
.then((res: any) => {
6966
setDeleteSending(false);
@@ -89,8 +86,10 @@ const DeleteTagModal = ({
8986
{deleteLoading && <LinearProgress />}
9087
<DialogContentText id="alert-dialog-description">
9188
Are you sure you want to delete the tag{" "}
92-
<b className={classes.wrapText}>{selectedTag}</b> from{" "}
93-
{selectedObject}?
89+
<b className={classes.wrapText}>
90+
{tagKey} : {tagLabel}
91+
</b>{" "}
92+
from {selectedObject}?
9493
{deleteError !== "" && (
9594
<React.Fragment>
9695
<br />

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

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ const ObjectDetails = ({
170170
const [retentionModalOpen, setRetentionModalOpen] = useState<boolean>(false);
171171
const [tagModalOpen, setTagModalOpen] = useState<boolean>(false);
172172
const [deleteTagModalOpen, setDeleteTagModalOpen] = useState<boolean>(false);
173-
const [selectedTag, setSelectedTag] = useState<string>("");
173+
const [selectedTag, setSelectedTag] = useState<[string, string]>(["", ""]);
174174
const [actualInfo, setActualInfo] = useState<IFileInfo>(emptyFile);
175175
const [versions, setVersions] = useState<IFileInfo[]>([]);
176176
const [filterVersion, setFilterVersion] = useState<string>("");
@@ -205,12 +205,10 @@ const ObjectDetails = ({
205205
}
206206
}, [loadObjectData]);
207207

208-
let tags = [];
208+
let tagKeys: string[] = [];
209209

210210
if (actualInfo.tags) {
211-
tags = Object.keys(actualInfo.tags).map((itemKey: string) => {
212-
return get(actualInfo, `tags.${itemKey}`, "");
213-
});
211+
tagKeys = Object.keys(actualInfo.tags);
214212
}
215213

216214
const openRetentionModal = () => {
@@ -233,8 +231,8 @@ const ObjectDetails = ({
233231
console.log("close share modal");
234232
};
235233

236-
const deleteTag = (tagToDelete: string) => {
237-
setSelectedTag(tagToDelete);
234+
const deleteTag = (tagKey: string, tagLabel: string) => {
235+
setSelectedTag([tagKey, tagLabel]);
238236
setDeleteTagModalOpen(true);
239237
};
240238

@@ -309,7 +307,7 @@ const ObjectDetails = ({
309307
{tagModalOpen && (
310308
<AddTagModal
311309
modalOpen={tagModalOpen}
312-
currentTags={tags}
310+
currentTags={actualInfo.tags}
313311
selectedObject={pathInBucket}
314312
versionId={actualInfo.version_id}
315313
bucketName={bucketName}
@@ -319,7 +317,7 @@ const ObjectDetails = ({
319317
{deleteTagModalOpen && (
320318
<DeleteTagModal
321319
deleteOpen={deleteTagModalOpen}
322-
currentTags={tags}
320+
currentTags={actualInfo.tags}
323321
selectedObject={pathInBucket}
324322
versionId={actualInfo.version_id}
325323
bucketName={bucketName}
@@ -427,18 +425,19 @@ const ObjectDetails = ({
427425
</Grid>
428426
<Grid item xs={12} className={classes.tagsContainer}>
429427
<div className={classes.tagText}>Tags:</div>
430-
{tags.map((tag, index) => {
428+
{tagKeys.map((tagKey, index) => {
429+
const tag = get(actualInfo, `tags.${tagKey}`, "");
431430
if (tag !== "") {
432431
return (
433432
<Chip
434433
key={`chip-${index}`}
435434
className={classes.tag}
436435
size="small"
437-
label={tag}
436+
label={`${tagKey} : ${tag}`}
438437
color="primary"
439438
deleteIcon={<CloseIcon />}
440439
onDelete={() => {
441-
deleteTag(tag);
440+
deleteTag(tagKey, tag);
442441
}}
443442
/>
444443
);

portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/utils.ts

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,3 @@ export const download = (bucketName: string, objectName: string) => {
4646
};
4747
xhr.send();
4848
};
49-
50-
export const tagObjectCreate = (tags: string[]) => {
51-
let tagsObject: any = {};
52-
53-
tags.forEach((itemTag) => {
54-
tagsObject[itemTag.toLowerCase().replace(" ", "_")] = itemTag;
55-
});
56-
57-
return { tags: tagsObject };
58-
};

0 commit comments

Comments
 (0)