From 00a86f9bf38a29df88311b689599c820e5919c56 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Wed, 17 Aug 2022 08:27:32 +0300 Subject: [PATCH] =?UTF-8?q?feat(viewer):=20new=20selection=20implementatio?= =?UTF-8?q?n=20=E2=9C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/viewer/ObjectSelection.vue | 48 +++++++++---------- .../commit-object-viewer/stateManager.ts | 11 +++-- .../main/pages/stream/CommitObjectViewer.vue | 6 +-- .../viewer/src/modules/FilteringManager.ts | 1 + 4 files changed, 33 insertions(+), 33 deletions(-) diff --git a/packages/frontend/src/main/components/viewer/ObjectSelection.vue b/packages/frontend/src/main/components/viewer/ObjectSelection.vue index 4dfbbd982..00f4a8eee 100644 --- a/packages/frontend/src/main/components/viewer/ObjectSelection.vue +++ b/packages/frontend/src/main/components/viewer/ObjectSelection.vue @@ -7,7 +7,7 @@ >
- Selection Info + Selection Info {{ isolated }} import('@/main/components/viewer/ObjectPropertiesRow') }, props: { - // objects: { - // type: Array, - // default: () => [] - // }, streamId: { type: String, default: null @@ -89,6 +86,7 @@ export default { commitObjectViewerState @client { isolateValues selectedObjects + currentFilterState } } `) @@ -123,27 +121,29 @@ export default { }, isolated() { // TODO - return false - // const ids = this.objects.map((o) => o.id) - // ids.forEach((val) => { - // if (this.viewerState.isolateValues.indexOf(val) === -1) return false - // }) - // return true + // return false + const ids = this.objects.map((o) => o.id) + if (!this.viewerState.currentFilterState) return false + if (!this.viewerState.currentFilterState.visibilityState) return false + const stateName = this.viewerState.currentFilterState.visibilityState.name + if (stateName !== 'isolateObjectsState') return false + + ids.forEach((val) => { + if (this.viewerState.currentFilterState.visibilityState.ids.indexOf(val) === -1) + return false + }) + return true } }, methods: { isolateSelection() { - // const ids = this.objects.map((o) => o.id) - // if (!this.isolated) - // unisolateObjects({ - // filterKey: '__parents', - // filterValues: ids - // }) - // else - // isolateObjects({ - // filterKey: '__parents', - // filterValues: ids - // }) + const ids = this.objects.map((o) => o.id) + if (!this.isolated) { + clearSelectionDisplay() + isolateObjects2(ids, 'ui-sel') + } else { + unIsolateObjects2(ids, 'ui-sel') + } }, getSelectionUrl() { if (this.objects.length < 2) return '' diff --git a/packages/frontend/src/main/lib/viewer/commit-object-viewer/stateManager.ts b/packages/frontend/src/main/lib/viewer/commit-object-viewer/stateManager.ts index ea39ae82d..fe552f477 100644 --- a/packages/frontend/src/main/lib/viewer/commit-object-viewer/stateManager.ts +++ b/packages/frontend/src/main/lib/viewer/commit-object-viewer/stateManager.ts @@ -222,8 +222,6 @@ export function handleViewerSelection(selectionInfo: SelectionEvent) { return } - console.log(selectionInfo.multiple) - const state = { ...commitObjectViewerState() } if (selectionInfo.multiple) { @@ -232,13 +230,15 @@ export function handleViewerSelection(selectionInfo: SelectionEvent) { } else { state.selectedObjects = [selectionInfo.userData] } - // TODO: FM.setSelection() + getInitializedViewer().FilteringManager.selectObjects( state.selectedObjects.map((o) => o.id) as string[] ) - console.log('state', state.selectedObjects) updateState(state) - // updateState({ selectedObjects: state.selectedObjects }) +} + +export function clearSelectionDisplay() { + getInitializedViewer().FilteringManager.resetSelection() } // FILTERING NEW @@ -257,6 +257,7 @@ export function isolateObjects2( ) const state = { ...commitObjectViewerState() } state.currentFilterState = result + console.log(result) updateState(state) } diff --git a/packages/frontend/src/main/pages/stream/CommitObjectViewer.vue b/packages/frontend/src/main/pages/stream/CommitObjectViewer.vue index 655711dc5..d0cd3b698 100644 --- a/packages/frontend/src/main/pages/stream/CommitObjectViewer.vue +++ b/packages/frontend/src/main/pages/stream/CommitObjectViewer.vue @@ -141,11 +141,9 @@ pointer-events: none;`" >
@@ -367,6 +365,7 @@ export default defineComponent({ query { commitObjectViewerState @client { appliedFilter + selectedObjects } } `) @@ -386,7 +385,6 @@ export default defineComponent({ loadedModel: false, loadProgress: 0, showCommitEditDialog: false, - selectionData: [] as Record[], views: [] as Record[], objectProperties: null as Nullable>, resources: [] as ResourceObjectType[], diff --git a/packages/viewer/src/modules/FilteringManager.ts b/packages/viewer/src/modules/FilteringManager.ts index fade2e122..60a295027 100644 --- a/packages/viewer/src/modules/FilteringManager.ts +++ b/packages/viewer/src/modules/FilteringManager.ts @@ -167,6 +167,7 @@ export class FilteringManager { } return true }) + return this.setFilters() }