Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8877c1599b | ||
|
|
965905305e | ||
|
|
312138f981 |
@@ -1,7 +1,7 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "comfyui-model-manager"
|
name = "comfyui-model-manager"
|
||||||
description = "Manage models: browsing, download and delete."
|
description = "Manage models: browsing, download and delete."
|
||||||
version = "2.5.0"
|
version = "2.5.1"
|
||||||
license = { file = "LICENSE" }
|
license = { file = "LICENSE" }
|
||||||
dependencies = ["markdownify"]
|
dependencies = ["markdownify"]
|
||||||
|
|
||||||
|
|||||||
@@ -193,7 +193,10 @@ const sortOrderOptions = ref(
|
|||||||
const currentDataList = computed(() => {
|
const currentDataList = computed(() => {
|
||||||
let renderedList = dataTreeList.value
|
let renderedList = dataTreeList.value
|
||||||
for (const folderItem of folderPaths.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 || []
|
renderedList = found?.children || []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import { genModelFullName, useModels } from 'hooks/model'
|
import { genModelFullName, useModels } from 'hooks/model'
|
||||||
import { cloneDeep, filter, find } from 'lodash'
|
import { cloneDeep, filter, find } from 'lodash'
|
||||||
import { BaseModel, Model, SelectOptions } from 'types/typings'
|
import { BaseModel, Model, SelectOptions } from 'types/typings'
|
||||||
import { computed, ref } from 'vue'
|
import { computed, ref, watch } from 'vue'
|
||||||
|
|
||||||
export interface FolderPathItem {
|
export interface FolderPathItem {
|
||||||
name: string
|
name: string
|
||||||
|
pathIndex: number
|
||||||
icon?: string
|
icon?: string
|
||||||
onClick: () => void
|
onClick: () => void
|
||||||
children: SelectOptions[]
|
children: SelectOptions[]
|
||||||
@@ -26,7 +27,7 @@ export type TreeItemNode = ModelTreeNode & {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const useModelExplorer = () => {
|
export const useModelExplorer = () => {
|
||||||
const { data, folders, ...modelRest } = useModels()
|
const { data, folders, initialized, ...modelRest } = useModels()
|
||||||
|
|
||||||
const folderPaths = ref<FolderPathItem[]>([])
|
const folderPaths = ref<FolderPathItem[]>([])
|
||||||
|
|
||||||
@@ -91,10 +92,11 @@ export const useModelExplorer = () => {
|
|||||||
return [root]
|
return [root]
|
||||||
})
|
})
|
||||||
|
|
||||||
function findFolder(list: ModelTreeNode[], name: string) {
|
function findFolder(
|
||||||
return find(list, { isFolder: true, basename: name }) as
|
list: ModelTreeNode[],
|
||||||
| ModelFolder
|
feature: { basename: string; pathIndex: number },
|
||||||
| undefined
|
) {
|
||||||
|
return find(list, { ...feature, isFolder: true }) as ModelFolder | undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
function findFolders(list: ModelTreeNode[]) {
|
function findFolders(list: ModelTreeNode[]) {
|
||||||
@@ -118,7 +120,12 @@ export const useModelExplorer = () => {
|
|||||||
|
|
||||||
let levelFolders = findFolders(dataTreeList.value)
|
let levelFolders = findFolders(dataTreeList.value)
|
||||||
for (const [index, part] of pathParts.entries()) {
|
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) {
|
if (!currentFolder) {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -126,6 +133,7 @@ export const useModelExplorer = () => {
|
|||||||
levelFolders = findFolders(currentFolder.children ?? [])
|
levelFolders = findFolders(currentFolder.children ?? [])
|
||||||
folderItems.push({
|
folderItems.push({
|
||||||
name: currentFolder.basename,
|
name: currentFolder.basename,
|
||||||
|
pathIndex: pathIndex,
|
||||||
icon: index === 0 ? 'pi pi-desktop' : '',
|
icon: index === 0 ? 'pi pi-desktop' : '',
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
openFolder(currentFolder)
|
openFolder(currentFolder)
|
||||||
@@ -144,6 +152,12 @@ export const useModelExplorer = () => {
|
|||||||
folderPaths.value = folderItems
|
folderPaths.value = folderItems
|
||||||
}
|
}
|
||||||
|
|
||||||
|
watch(initialized, (val) => {
|
||||||
|
if (val) {
|
||||||
|
openFolder(dataTreeList.value[0])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
folders,
|
folders,
|
||||||
folderPaths,
|
folderPaths,
|
||||||
|
|||||||
@@ -50,10 +50,12 @@ export const useModels = defineStore('models', (store) => {
|
|||||||
const loading = useLoading()
|
const loading = useLoading()
|
||||||
|
|
||||||
const folders = ref<ModelFolder>({})
|
const folders = ref<ModelFolder>({})
|
||||||
|
const initialized = ref(false)
|
||||||
|
|
||||||
const refreshFolders = async () => {
|
const refreshFolders = async () => {
|
||||||
return request('/models').then((resData) => {
|
return request('/models').then((resData) => {
|
||||||
folders.value = resData
|
folders.value = resData
|
||||||
|
initialized.value = true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -233,6 +235,7 @@ export const useModels = defineStore('models', (store) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
initialized: initialized,
|
||||||
folders: folders,
|
folders: folders,
|
||||||
data: models,
|
data: models,
|
||||||
refresh: refreshAllModels,
|
refresh: refreshAllModels,
|
||||||
|
|||||||
Reference in New Issue
Block a user