Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1975e2056d | ||
|
|
8877c1599b | ||
|
|
965905305e | ||
|
|
312138f981 |
@@ -124,13 +124,13 @@ class ModelManager:
|
||||
if not prefix_path.endswith("/"):
|
||||
prefix_path = f"{prefix_path}/"
|
||||
|
||||
is_file = entry.is_file()
|
||||
relative_path = utils.normalize_path(entry.path).replace(prefix_path, "")
|
||||
sub_folder = os.path.dirname(relative_path)
|
||||
filename = os.path.basename(relative_path)
|
||||
basename = os.path.splitext(filename)[0]
|
||||
extension = os.path.splitext(filename)[1]
|
||||
basename = os.path.splitext(filename)[0] if is_file else filename
|
||||
extension = os.path.splitext(filename)[1] if is_file else ""
|
||||
|
||||
is_file = entry.is_file()
|
||||
if is_file and extension not in folder_paths.supported_pt_extensions:
|
||||
return None
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[project]
|
||||
name = "comfyui-model-manager"
|
||||
description = "Manage models: browsing, download and delete."
|
||||
version = "2.5.0"
|
||||
version = "2.5.2"
|
||||
license = { file = "LICENSE" }
|
||||
dependencies = ["markdownify"]
|
||||
|
||||
|
||||
@@ -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 || []
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import { genModelFullName, useModels } from 'hooks/model'
|
||||
import { cloneDeep, filter, find } from 'lodash'
|
||||
import { BaseModel, Model, SelectOptions } from 'types/typings'
|
||||
import { computed, ref } from 'vue'
|
||||
import { computed, ref, watch } from 'vue'
|
||||
|
||||
export interface FolderPathItem {
|
||||
name: string
|
||||
pathIndex: number
|
||||
icon?: string
|
||||
onClick: () => void
|
||||
children: SelectOptions[]
|
||||
@@ -26,7 +27,7 @@ export type TreeItemNode = ModelTreeNode & {
|
||||
}
|
||||
|
||||
export const useModelExplorer = () => {
|
||||
const { data, folders, ...modelRest } = useModels()
|
||||
const { data, folders, initialized, ...modelRest } = useModels()
|
||||
|
||||
const folderPaths = ref<FolderPathItem[]>([])
|
||||
|
||||
@@ -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)
|
||||
@@ -144,6 +152,12 @@ export const useModelExplorer = () => {
|
||||
folderPaths.value = folderItems
|
||||
}
|
||||
|
||||
watch(initialized, (val) => {
|
||||
if (val) {
|
||||
openFolder(dataTreeList.value[0])
|
||||
}
|
||||
})
|
||||
|
||||
return {
|
||||
folders,
|
||||
folderPaths,
|
||||
|
||||
@@ -50,10 +50,12 @@ export const useModels = defineStore('models', (store) => {
|
||||
const loading = useLoading()
|
||||
|
||||
const folders = ref<ModelFolder>({})
|
||||
const initialized = ref(false)
|
||||
|
||||
const refreshFolders = async () => {
|
||||
return request('/models').then((resData) => {
|
||||
folders.value = resData
|
||||
initialized.value = true
|
||||
})
|
||||
}
|
||||
|
||||
@@ -233,6 +235,7 @@ export const useModels = defineStore('models', (store) => {
|
||||
}
|
||||
|
||||
return {
|
||||
initialized: initialized,
|
||||
folders: folders,
|
||||
data: models,
|
||||
refresh: refreshAllModels,
|
||||
|
||||
Reference in New Issue
Block a user