From ff1ca268a4fea07f65e6772b60173022de703ee0 Mon Sep 17 00:00:00 2001 From: "Alex \"mcmonkey\" Goodwin" <4000772+mcmonkey4eva@users.noreply.github.com> Date: Mon, 7 Oct 2024 11:50:45 -0700 Subject: [PATCH] Model Library sidebar: allow searching metadata (#1148) * Model Library sidebar: allow searching metadata title, description, etc * don't use vue stuff inside of vue because vue doesn't support vue very cool * remove old import * and that one --- .../sidebar/tabs/ModelLibrarySidebarTab.vue | 2 +- src/stores/modelStore.ts | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/components/sidebar/tabs/ModelLibrarySidebarTab.vue b/src/components/sidebar/tabs/ModelLibrarySidebarTab.vue index f4f50a953..077601afa 100644 --- a/src/components/sidebar/tabs/ModelLibrarySidebarTab.vue +++ b/src/components/sidebar/tabs/ModelLibrarySidebarTab.vue @@ -83,7 +83,7 @@ const root: ComputedRef = computed(() => { if (searchQuery.value) { const search = searchQuery.value.toLocaleLowerCase() modelList = modelList.filter((model: ComfyModelDef) => { - return model.file_name.toLocaleLowerCase().includes(search) + return model.searchable.includes(search) }) } const tree: TreeNode = buildTree(modelList, (model: ComfyModelDef) => { diff --git a/src/stores/modelStore.ts b/src/stores/modelStore.ts index e4c1a0373..5fa1da7a9 100644 --- a/src/stores/modelStore.ts +++ b/src/stores/modelStore.ts @@ -48,6 +48,8 @@ export class ComfyModelDef { is_load_requested: boolean = false /** If true, this is a fake model object used as a placeholder for something (eg a loading icon) */ is_fake_object: boolean = false + /** A string full of auto-computed lowercase-only searchable text for this model */ + searchable: string = '' constructor(name: string, directory: string) { this.file_name = name @@ -60,6 +62,20 @@ export class ComfyModelDef { } this.title = this.simplified_file_name this.directory = directory + this.updateSearchable() + } + + updateSearchable() { + this.searchable = [ + this.file_name, + this.title, + this.author, + this.description, + this.trigger_phrase, + this.tags.join(', ') + ] + .join('\n') + .toLowerCase() } /** Loads the model metadata from the server, filling in this object if data is available */ @@ -110,6 +126,7 @@ export class ComfyModelDef { _findInMetadata(metadata, 'modelspec.tags', 'tags') || '' this.tags = tagsCommaSeparated.split(',').map((tag) => tag.trim()) this.has_loaded_metadata = true + this.updateSearchable() } catch (error) { console.error('Error loading model metadata', this.file_name, this, error) }