From 99a9f1ced20d2aa84673fcbaf19cd782105c0115 Mon Sep 17 00:00:00 2001 From: JatinderSingh Date: Thu, 15 Feb 2024 17:26:42 -0800 Subject: [PATCH] Refactor filters and tags to work without objectstore --- .../src/components/object/ObjectFilters.vue | 15 ++---- frontend/src/components/object/ObjectList.vue | 7 +++ .../src/components/object/ObjectTable.vue | 53 ++++++++++++++++--- frontend/src/services/objectService.ts | 12 +++-- frontend/src/store/metadataStore.ts | 4 +- frontend/src/store/tagStore.ts | 4 +- 6 files changed, 68 insertions(+), 27 deletions(-) diff --git a/frontend/src/components/object/ObjectFilters.vue b/frontend/src/components/object/ObjectFilters.vue index c178d8d6..c27ad23b 100644 --- a/frontend/src/components/object/ObjectFilters.vue +++ b/frontend/src/components/object/ObjectFilters.vue @@ -58,11 +58,7 @@ objectStore.$onAction(({ name, args }) => { // Computed const metadataValues = computed(() => { - // Filter out any tags that don't have an objectID that exist in getUnfilteredObjectIds - const filteredVals = getMetadataSearchResults.value.filter((searchRes) => - getUnfilteredObjectIds.value.some((obj) => obj === searchRes.objectId) - ); - + const filteredVals = getMetadataSearchResults.value; return ( filteredVals // Take the metadata for the objects, and flatten them into a single array @@ -76,10 +72,7 @@ const metadataValues = computed(() => { }); const tagsetValues = computed(() => { - // Filter out any tags that don't have an objectID that exist in getUnfilteredObjectIds - const filteredVals = getTagSearchResults.value.filter((searchRes) => - getUnfilteredObjectIds.value.some((obj) => obj === searchRes.objectId) - ); + const filteredVals = getTagSearchResults.value; return ( filteredVals @@ -137,13 +130,13 @@ const selectedFilterValuesChanged = () => { const searchMetadata = async () => { searching.value = true; - await metadataStore.searchMetadata(); + await metadataStore.searchMetadata(props['bucketId']); searching.value = false; }; const searchTagging = async () => { searching.value = true; - await tagStore.searchTagging(); + await tagStore.searchTagging(props['bucketId']); searching.value = false; }; diff --git a/frontend/src/components/object/ObjectList.vue b/frontend/src/components/object/ObjectList.vue index 499ff228..e6cda0e5 100644 --- a/frontend/src/components/object/ObjectList.vue +++ b/frontend/src/components/object/ObjectList.vue @@ -35,6 +35,7 @@ const { getUserId } = storeToRefs(useAuthStore()); // State const displayUpload = ref(false); const objectInfoId: Ref = ref(undefined); +const objectTable = ref(); const selectedObjectIds = computed(() => { return getSelectedObjects.value.map((o) => o.id); @@ -54,6 +55,10 @@ const showUpload = () => { const closeUpload = () => { displayUpload.value = false; + objectTable.value.updateDataTable(); +}; +const onDeletedSuccess = () => { + objectTable.value.updateDataTable(); }; @@ -92,6 +97,7 @@ const closeUpload = () => { :disabled="displayUpload" :ids="selectedObjectIds" :mode="ButtonMode.BUTTON" + @on-deleted-success="onDeletedSuccess" /> @@ -101,6 +107,7 @@ const closeUpload = () => { >
= ref(''); @@ -58,7 +60,6 @@ const loading = ref(false); const lazyParams: Ref = ref({}); const totalRecords = ref(0); const first = ref(0); -const selectedObjects: any = ref(); const filters = ref({ name: { value: undefined, matchMode: 'contains' }, tags: { value: undefined, matchMode: 'contains' }, @@ -82,6 +83,7 @@ async function showPermissions(objectId: string) { permissionsObjectId.value = objectId; permissionsObjectName.value = objectStore.findObjectById(objectId)?.name; } + onMounted(() => { loading.value = true; lazyParams.value = { @@ -117,7 +119,6 @@ const loadLazyData = (event?: any) => { tableData.value = r.data; totalRecords.value = +r?.headers['x-total-rows']; loading.value = false; - // add to object store r.data.forEach((o: COMSObject) => { objectStore.$patch((state) => { @@ -131,20 +132,34 @@ const loadLazyData = (event?: any) => { permissionStore.fetchObjectPermissions({ objectId: objects.map((o: COMSObject) => o.id) }); }); }; + const onPage = (event?: any) => { lazyParams.value = event; loadLazyData(event); }; + const onSort = (event?: any) => { lazyParams.value = event; loadLazyData(event); }; + const onFilter = (event?: any) => { lazyParams.value.filters = filters; // Seems to be a bug as current page is not being reset when filter trigger dt.value.resetPage(); loadLazyData(event); }; + +function selectCurrentPage() { + objectStore.setSelectedObjects( + tableData.value.filter((object) => { + return Array.from(document.querySelectorAll('[data-objectId]')) + .map((x) => x.getAttribute('data-objectId')) + .includes(object.id); + }) + ); +} + // Clear selections when navigating away onUnmounted(() => { objectStore.setSelectedObjects([]); @@ -173,6 +188,14 @@ const selectedFilters = (payload: any) => { }, {}); lazyParams.value.filters = filters; }; +// Exposed to update datatable rows +function updateDataTable() { + loadLazyData(); +} + +defineExpose({ + updateDataTable +});