From 965905305eda6632e01aaeda36f3dc201aa66957 Mon Sep 17 00:00:00 2001 From: Hayden <48267247+hayden-fr@users.noreply.github.com> Date: Mon, 24 Feb 2025 11:07:43 +0800 Subject: [PATCH] fix: find subfolder incorrect (#154) --- src/components/DialogExplorer.vue | 5 ++++- src/hooks/explorer.ts | 18 +++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/components/DialogExplorer.vue b/src/components/DialogExplorer.vue index 8615df4..49a67be 100644 --- a/src/components/DialogExplorer.vue +++ b/src/components/DialogExplorer.vue @@ -193,7 +193,10 @@ const sortOrderOptions = ref( const currentDataList = computed(() => { let renderedList = dataTreeList.value for (const folderItem of folderPaths.value) { - const found = findFolder(renderedList, folderItem.name) + const found = findFolder(renderedList, { + basename: folderItem.name, + pathIndex: folderItem.pathIndex, + }) renderedList = found?.children || [] } diff --git a/src/hooks/explorer.ts b/src/hooks/explorer.ts index bb8e53e..066bb67 100644 --- a/src/hooks/explorer.ts +++ b/src/hooks/explorer.ts @@ -5,6 +5,7 @@ import { computed, ref, watch } from 'vue' export interface FolderPathItem { name: string + pathIndex: number icon?: string onClick: () => void children: SelectOptions[] @@ -91,10 +92,11 @@ export const useModelExplorer = () => { return [root] }) - function findFolder(list: ModelTreeNode[], name: string) { - return find(list, { isFolder: true, basename: name }) as - | ModelFolder - | undefined + function findFolder( + list: ModelTreeNode[], + feature: { basename: string; pathIndex: number }, + ) { + return find(list, { ...feature, isFolder: true }) as ModelFolder | undefined } function findFolders(list: ModelTreeNode[]) { @@ -118,7 +120,12 @@ export const useModelExplorer = () => { let levelFolders = findFolders(dataTreeList.value) for (const [index, part] of pathParts.entries()) { - const currentFolder = findFolder(levelFolders, part) + const pathIndex = index < 2 ? 0 : item.pathIndex + + const currentFolder = findFolder(levelFolders, { + basename: part, + pathIndex: pathIndex, + }) if (!currentFolder) { break } @@ -126,6 +133,7 @@ export const useModelExplorer = () => { levelFolders = findFolders(currentFolder.children ?? []) folderItems.push({ name: currentFolder.basename, + pathIndex: pathIndex, icon: index === 0 ? 'pi pi-desktop' : '', onClick: () => { openFolder(currentFolder)