Auto-expand model library tree on search (#1357)

This commit is contained in:
Chenlei Hu
2024-10-29 09:24:56 -04:00
committed by GitHub
parent 4582c71583
commit 739ebd3d04

View File

@@ -24,6 +24,7 @@
class="model-lib-search-box p-4" class="model-lib-search-box p-4"
v-model:modelValue="searchQuery" v-model:modelValue="searchQuery"
:placeholder="$t('searchModels') + '...'" :placeholder="$t('searchModels') + '...'"
@search="handleSearch"
/> />
</template> </template>
<template #body> <template #body>
@@ -60,7 +61,7 @@ import type {
RenderedTreeExplorerNode, RenderedTreeExplorerNode,
TreeExplorerNode TreeExplorerNode
} from '@/types/treeExplorerTypes' } from '@/types/treeExplorerTypes'
import { computed, ref, watch, toRef, onMounted } from 'vue' import { computed, ref, watch, toRef, onMounted, nextTick } from 'vue'
import type { TreeNode } from 'primevue/treenode' import type { TreeNode } from 'primevue/treenode'
import { app } from '@/scripts/app' import { app } from '@/scripts/app'
import { buildTree } from '@/utils/treeUtil' import { buildTree } from '@/utils/treeUtil'
@@ -69,17 +70,26 @@ const modelToNodeStore = useModelToNodeStore()
const settingStore = useSettingStore() const settingStore = useSettingStore()
const searchQuery = ref<string>('') const searchQuery = ref<string>('')
const expandedKeys = ref<Record<string, boolean>>({}) const expandedKeys = ref<Record<string, boolean>>({})
const { toggleNodeOnEvent } = useTreeExpansion(expandedKeys) const { expandNode, toggleNodeOnEvent } = useTreeExpansion(expandedKeys)
const filteredModels = computed<ComfyModelDef[]>(() => { const filteredModels = ref<ComfyModelDef[]>([])
if (searchQuery.value) { const handleSearch = async (query: string) => {
const search = searchQuery.value.toLocaleLowerCase() if (!query) {
return modelStore.models.filter((model: ComfyModelDef) => { filteredModels.value = modelStore.models
return model.searchable.includes(search) expandedKeys.value = {}
}) return
} }
return modelStore.models // Load all models to ensure we have the latest data
}) await modelStore.loadModels()
const search = query.toLocaleLowerCase()
filteredModels.value = modelStore.models.filter((model: ComfyModelDef) => {
return model.searchable.includes(search)
})
nextTick(() => {
expandNode(root.value)
})
}
type ModelOrFolder = ComfyModelDef | ModelFolder type ModelOrFolder = ComfyModelDef | ModelFolder