diff --git a/src/client/models/BucketOut.ts b/src/client/models/BucketOut.ts index b1bb787caad5293581621f9c75369b4b0341989e..92b94263533abcd054a3a6cdadbd30b2750515dd 100644 --- a/src/client/models/BucketOut.ts +++ b/src/client/models/BucketOut.ts @@ -22,5 +22,13 @@ export type BucketOut = { * UID of the owner */ owner: string; + /** + * Number of Objects in this bucket + */ + num_objects: number; + /** + * Total size of objects in this bucket in bytes + */ + size: number; }; diff --git a/src/client/models/S3ObjectMetaInformation.ts b/src/client/models/S3ObjectMetaInformation.ts index 4292c7e82fe0982d788527cd355e4c6f0595ebc3..ed92a733014053f1c91d4ac7f4067271fb8b6904 100644 --- a/src/client/models/S3ObjectMetaInformation.ts +++ b/src/client/models/S3ObjectMetaInformation.ts @@ -14,6 +14,10 @@ export type S3ObjectMetaInformation = { * Name of the Bucket in which the object is */ bucket: string; + /** + * MIME type of the object + */ + content_type: string; /** * Size of the object in Bytes */ diff --git a/src/components/BucketListItem.vue b/src/components/BucketListItem.vue index 7141b831efe30aa2c112b7d485ff2d63e6ac00cd..0cd7cf6874949dfe1034f992344d6a9c719daa2a 100644 --- a/src/components/BucketListItem.vue +++ b/src/components/BucketListItem.vue @@ -110,11 +110,11 @@ onMounted(() => { </tr> <tr> <th scope="row" class="fw-bold">Objects:</th> - <td>0</td> + <td>{{ bucket.num_objects }}</td> </tr> <tr> <th scope="row" class="fw-bold">Size:</th> - <td>{{ filesize(0) }}</td> + <td>{{ filesize(bucket.size) }}</td> </tr> </tbody> </table> diff --git a/src/components/BucketView.vue b/src/components/BucketView.vue index feab82d9c6bdf878c20c7a77175e2ec6b179eec5..69aeaa30b7d6f5c5de725638cb97eb271cc6522a 100644 --- a/src/components/BucketView.vue +++ b/src/components/BucketView.vue @@ -138,12 +138,14 @@ const objectState = reactive({ size: 0, bucket: "", last_modified: "2022-01-01", + content_type: "text/plain", }, viewDetailObject: { key: "", size: 0, bucket: "", last_modified: "2022-01-01", + content_type: "text/plain", }, } as { objects: S3ObjectMetaInformation[]; diff --git a/src/components/Modals/CopyObjectModal.vue b/src/components/Modals/CopyObjectModal.vue index 26e5d41d8a65b9810dbb79a413ba0fc7737f24d2..f239951573e4132034b6c2409b37fb355dc20bdf 100644 --- a/src/components/Modals/CopyObjectModal.vue +++ b/src/components/Modals/CopyObjectModal.vue @@ -57,6 +57,7 @@ function copyObject() { bucket: formState.destBucket, size: props.sourceObject.size, last_modified: dayjs().toISOString(), + content_type: props.sourceObject.content_type, }); copyModal?.hide(); successToast?.show(); diff --git a/src/components/Modals/CreateFolderModal.vue b/src/components/Modals/CreateFolderModal.vue index bbff4f9c2ab9a84449fe893322772c5eb62a6417..bc9b2f8e8f459c7690b1e86c7fddd7c0be81d5fe 100644 --- a/src/components/Modals/CreateFolderModal.vue +++ b/src/components/Modals/CreateFolderModal.vue @@ -59,6 +59,7 @@ function uploadFolder() { bucket: props.bucketName, size: 0, last_modified: dayjs().toISOString(), + content_type: "text/plain", }); formState.folderName = ""; }) diff --git a/src/components/Modals/ObjectDetailModal.vue b/src/components/Modals/ObjectDetailModal.vue index 1e70b473b6b2d12f3d5ef015e83528cff3bb061d..86699619802ed5382fb2bd4392449c221c90573a 100644 --- a/src/components/Modals/ObjectDetailModal.vue +++ b/src/components/Modals/ObjectDetailModal.vue @@ -34,7 +34,7 @@ const props = defineProps<{ </tr> <tr> <th scope="row">Content Type</th> - <td>text/plain</td> + <td>{{ props.s3Object.content_type }}</td> </tr> <tr> <th scope="row">Timestamp</th> diff --git a/src/components/Modals/UploadObjectModal.vue b/src/components/Modals/UploadObjectModal.vue index a46e9d37f391c30569a7f84147850eec24d908e3..a1d5beaf04b3b9de2efaa480f2bb53015cfca8cd 100644 --- a/src/components/Modals/UploadObjectModal.vue +++ b/src/components/Modals/UploadObjectModal.vue @@ -95,6 +95,7 @@ async function uploadObject() { bucket: props.bucketName, size: formState.file?.size ?? 0, last_modified: dayjs().toISOString(), + content_type: formState.file?.type ?? "text/plain", }); formState.key = ""; ( diff --git a/src/views/object-storage/BucketsView.vue b/src/views/object-storage/BucketsView.vue index ad7d4e5b542a5dde3de0b409273cbd67bbb6dbae..9d8ce59e0af209d7b7ab219bafb1a48d6c0a1105 100644 --- a/src/views/object-storage/BucketsView.vue +++ b/src/views/object-storage/BucketsView.vue @@ -193,7 +193,14 @@ onMounted(() => { :active="false" :loading="true" :permission="undefined" - :bucket="{ name: '', description: '', created_at: '', owner: '' }" + :bucket="{ + name: '', + description: '', + created_at: '', + owner: '', + size: 0, + num_objects: 0, + }" ></bucket-list-item> </div> </div>