From 569d2390b9ad6579e4c39e9b3e3e11be20af7200 Mon Sep 17 00:00:00 2001 From: Alex <33497058+bexsoft@users.noreply.github.com> Date: Fri, 3 Dec 2021 13:10:32 -0600 Subject: [PATCH] Added option to download selected items in object browser (#1286) Signed-off-by: Benjamin Perez --- portal-ui/src/icons/UploadFolderIcon.tsx | 4 +- .../Objects/ListObjects/ListObjects.tsx | 54 ++++++++++++++----- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/portal-ui/src/icons/UploadFolderIcon.tsx b/portal-ui/src/icons/UploadFolderIcon.tsx index 0d257d419..0368a5547 100644 --- a/portal-ui/src/icons/UploadFolderIcon.tsx +++ b/portal-ui/src/icons/UploadFolderIcon.tsx @@ -42,11 +42,11 @@ const UploadFile = (props: SVGProps) => { - + - + diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx index 2a9b8a24e..69f00e124 100644 --- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx +++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx @@ -79,7 +79,7 @@ import SearchBox from "../../../../Common/SearchBox"; import withSuspense from "../../../../Common/Components/withSuspense"; import { displayName } from "./utils"; -import UploadFolderIcon from "../../../../../../icons/UploadFolderIcon"; +import { UploadFolderIcon, DownloadIcon } from "../../../../../../icons"; const AddFolderIcon = React.lazy( () => import("../../../../../../icons/AddFolderIcon") @@ -753,7 +753,7 @@ const ListObjects = ({ return state ? "Yes" : "No"; }; - const downloadObject = (object: BucketObject) => { + const downloadObject = (object: BucketObject | RewindObject) => { const identityDownload = btoa( `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}` ); @@ -990,6 +990,25 @@ const ListObjects = ({ setSelectedObjects(elements); }; + const downloadSelected = () => { + if (selectedObjects.length !== 0) { + let itemsToDownload: BucketObject[] | RewindObject[] = []; + + const filterFunction = (currValue: BucketObject | RewindObject) => + selectedObjects.includes(currValue.name); + + if (rewindEnabled) { + itemsToDownload = rewind.filter(filterFunction); + } else { + itemsToDownload = filteredRecords.filter(filterFunction); + } + + itemsToDownload.forEach((filteredItem) => { + downloadObject(filteredItem); + }); + } + }; + return ( {shareFileModalOpen && selectedPreview && ( @@ -1175,22 +1194,33 @@ const ListObjects = ({ placeholder="Search Objects" /> - +
- + + + +