Skip to content
Snippets Groups Projects
Verified Commit b326e239 authored by Daniel Göbel's avatar Daniel Göbel
Browse files

Filter Buckets by their name

#8
parent 35aae1b8
No related branches found
No related tags found
1 merge request!14Filter Buckets and objects by their name
...@@ -17,7 +17,7 @@ import CopyObjectModal from "@/components/Modals/CopyObjectModal.vue"; ...@@ -17,7 +17,7 @@ import CopyObjectModal from "@/components/Modals/CopyObjectModal.vue";
import PermissionModal from "@/components/Modals/PermissionModal.vue"; import PermissionModal from "@/components/Modals/PermissionModal.vue";
import ObjectDetailModal from "@/components/Modals/ObjectDetailModal.vue"; import ObjectDetailModal from "@/components/Modals/ObjectDetailModal.vue";
import CreateFolderModal from "@/components/Modals/CreateFolderModal.vue"; import CreateFolderModal from "@/components/Modals/CreateFolderModal.vue";
import DeleteModal from "@/components/Modals/DeleteModal.vue" import DeleteModal from "@/components/Modals/DeleteModal.vue";
import { import {
S3Client, S3Client,
DeleteObjectCommand, DeleteObjectCommand,
...@@ -526,7 +526,11 @@ watch( ...@@ -526,7 +526,11 @@ watch(
modal-label="some-label" modal-label="some-label"
:object-name-delete="objectState.potentialObjectToDelete" :object-name-delete="objectState.potentialObjectToDelete"
:back-modal-id="undefined" :back-modal-id="undefined"
@confirm-delete="objectState.deleteFolder ? confirmedDeleteFolder(objectState.potentialObjectToDelete) : confirmedDeleteObject(objectState.potentialObjectToDelete)" @confirm-delete="
objectState.deleteFolder
? confirmedDeleteFolder(objectState.potentialObjectToDelete)
: confirmedDeleteObject(objectState.potentialObjectToDelete)
"
/> />
<!-- Navbar Breadcrumb --> <!-- Navbar Breadcrumb -->
<nav aria-label="breadcrumb" class="fs-2"> <nav aria-label="breadcrumb" class="fs-2">
......
...@@ -18,11 +18,13 @@ const authStore = useAuthStore(); ...@@ -18,11 +18,13 @@ const authStore = useAuthStore();
const bucketsState = reactive({ const bucketsState = reactive({
buckets: [], buckets: [],
permissions: {}, permissions: {},
filterString: "",
potentialDeleteBucketName: "", potentialDeleteBucketName: "",
loading: true, loading: true,
} as { } as {
buckets: BucketOut[]; buckets: BucketOut[];
loading: boolean; loading: boolean;
filterString: string;
permissions: Record<string, BucketPermission>; permissions: Record<string, BucketPermission>;
potentialDeleteBucketName: string; potentialDeleteBucketName: string;
}); });
...@@ -63,6 +65,14 @@ const currentPermission: ComputedRef<BucketPermission | undefined> = computed( ...@@ -63,6 +65,14 @@ const currentPermission: ComputedRef<BucketPermission | undefined> = computed(
} }
); );
const filteredBuckets: ComputedRef<BucketOut[]> = computed(() => {
return bucketsState.filterString.length > 0
? bucketsState.buckets.filter((bucket) =>
bucket.name.includes(bucketsState.filterString)
)
: bucketsState.buckets;
});
function addBucket(bucket: BucketOut) { function addBucket(bucket: BucketOut) {
bucketsState.buckets.push(bucket); bucketsState.buckets.push(bucket);
} }
...@@ -143,25 +153,38 @@ onMounted(() => { ...@@ -143,25 +153,38 @@ onMounted(() => {
placeholder="Search Buckets" placeholder="Search Buckets"
aria-label="Search Buckets" aria-label="Search Buckets"
aria-describedby="buckets-search-wrapping" aria-describedby="buckets-search-wrapping"
disabled v-model.trim="bucketsState.filterString"
/> />
</div> </div>
<div class="list-group mt-3"> <div class="list-group mt-3">
<div v-if="!bucketsState.loading"> <div v-if="!bucketsState.loading">
<bucket-list-item <div v-if="filteredBuckets.length > 0">
v-for="bucket in bucketsState.buckets" <bucket-list-item
:key="bucket.name" v-for="bucket in filteredBuckets"
:active=" :key="bucket.name"
route.params.bucketName != null && :active="
route.params.bucketName === bucket.name route.params.bucketName != null &&
" route.params.bucketName === bucket.name
:bucket="bucket" "
:loading="false" :bucket="bucket"
:permission="bucketsState.permissions[bucket.name]" :loading="false"
@delete-bucket="deleteBucket" :permission="bucketsState.permissions[bucket.name]"
@permission-deleted="(bucketName) => bucketDeleted(bucketName)" @delete-bucket="deleteBucket"
/> @permission-deleted="(bucketName) => bucketDeleted(bucketName)"
/>
</div>
<div v-else class="text-center fs-2 mt-5">
<bootstrap-icon
icon="search"
class="mb-2"
:width="56"
:height="56"
style="color: var(--bs-secondary)"
fill="currentColor"
/><br />
Could not find any Buckets
</div>
</div> </div>
<div v-else> <div v-else>
<bucket-list-item <bucket-list-item
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment