X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f1bbac648067f651d408d3cad39fd31d9a36354d..961394c0876cdc07f2195d3bc1843a5c9a6fa950:/src/components/file-upload/file-upload.tsx?ds=sidebyside diff --git a/src/components/file-upload/file-upload.tsx b/src/components/file-upload/file-upload.tsx index 8c6e04a93e..aa3c0e967f 100644 --- a/src/components/file-upload/file-upload.tsx +++ b/src/components/file-upload/file-upload.tsx @@ -3,11 +3,18 @@ // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; -import { Grid, List, ListItem, ListItemText, StyleRulesCallback, Typography, WithStyles } from '@material-ui/core'; +import { + Grid, + StyleRulesCallback, + Table, TableBody, TableCell, TableHead, TableRow, + Typography, + WithStyles +} from '@material-ui/core'; import { withStyles } from '@material-ui/core'; import Dropzone from 'react-dropzone'; import { CloudUploadIcon } from "../icon/icon"; -import { formatFileSize } from "../../common/formatters"; +import { formatFileSize, formatProgress, formatUploadSpeed } from "../../common/formatters"; +import { UploadFile } from "../../store/collections/uploader/collection-uploader-actions"; type CssRules = "root" | "dropzone" | "container" | "uploadIcon"; @@ -30,7 +37,7 @@ const styles: StyleRulesCallback = theme => ({ }); interface FileUploadProps { - files: File[]; + files: UploadFile[]; onDrop: (files: File[]) => void; } @@ -41,24 +48,36 @@ export const FileUpload = withStyles(styles)( Upload data onDrop(files)}> - - + {files.length === 0 && + + Drag and drop data or click to browse - - - - {files.map((f, idx) => - - - )} - - - + } + {files.length > 0 && + + + + File name + File size + Upload speed + Upload progress + + + + {files.map(f => + + {f.file.name} + {formatFileSize(f.file.size)} + {formatUploadSpeed(f.prevLoaded, f.loaded, f.prevTime, f.currentTime)} + {formatProgress(f.loaded, f.total)} + + )} + +
+ }
);