From 450072e49dfe8bff118f351940e31b747e7871d0 Mon Sep 17 00:00:00 2001 From: Hayden <48267247+hayden-fr@users.noreply.github.com> Date: Sat, 22 Feb 2025 18:10:11 +0800 Subject: [PATCH] refactor(explorer): optimize openFolder (#148) --- py/manager.py | 3 +- src/components/DialogExplorer.vue | 8 +-- src/components/DialogManager.vue | 2 +- src/components/ModelCard.vue | 6 +- src/hooks/explorer.ts | 91 +++++++++++++++++-------------- src/hooks/model.ts | 2 +- src/types/typings.d.ts | 1 + 7 files changed, 62 insertions(+), 51 deletions(-) diff --git a/py/manager.py b/py/manager.py index 2d7db27..1fce990 100644 --- a/py/manager.py +++ b/py/manager.py @@ -138,8 +138,9 @@ class ModelManager: stat = entry.stat() return { - "type": folder if is_file else "folder", + "type": folder, "subFolder": sub_folder, + "isFolder": not is_file, "basename": basename, "extension": extension, "pathIndex": path_index, diff --git a/src/components/DialogExplorer.vue b/src/components/DialogExplorer.vue index 5e92ca5..dc0294d 100644 --- a/src/components/DialogExplorer.vue +++ b/src/components/DialogExplorer.vue @@ -20,7 +20,6 @@ v-show="!showToolbar" class="h-10 flex-1" :items="folderPaths" - @item-click="(item, index) => openFolder(index, item.name, item.icon)" > @@ -211,7 +210,7 @@ const currentDataList = computed(() => { const modelItems: ModelTreeNode[] = [] for (const item of renderedList) { - if (item.type === 'folder') { + if (item.isFolder) { folderItems.push(item) } else { modelItems.push(item) @@ -281,8 +280,9 @@ const confirmName = ref('') const openItem = (item: ModelTreeNode, e: Event) => { menu.value.hide(e) - if (item.type === 'folder') { - openFolder(folderPaths.value.length, item.basename) + if (item.isFolder) { + searchContent.value = undefined + openFolder(item) } else { openModelDetail(item) } diff --git a/src/components/DialogManager.vue b/src/components/DialogManager.vue index 094c06b..b7afdc5 100644 --- a/src/components/DialogManager.vue +++ b/src/components/DialogManager.vue @@ -216,7 +216,7 @@ const cols = computed(() => { const list = computed(() => { const mergedList = Object.values(data.value).flat() const pureModels = mergedList.filter((item) => { - return item.type !== 'folder' + return !item.isFolder }) const filterList = pureModels.filter((model) => { diff --git a/src/components/ModelCard.vue b/src/components/ModelCard.vue index 0673f67..205f4b4 100644 --- a/src/components/ModelCard.vue +++ b/src/components/ModelCard.vue @@ -5,7 +5,7 @@ >