mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-30 03:01:54 +00:00
Refactor nodeDefStore.nodeTree (#351)
This commit is contained in:
@@ -4,6 +4,7 @@ import { defineStore } from 'pinia'
|
|||||||
import { Type, Transform, plainToClass } from 'class-transformer'
|
import { Type, Transform, plainToClass } from 'class-transformer'
|
||||||
import { ComfyWidgetConstructor } from '@/scripts/widgets'
|
import { ComfyWidgetConstructor } from '@/scripts/widgets'
|
||||||
import { TreeNode } from 'primevue/treenode'
|
import { TreeNode } from 'primevue/treenode'
|
||||||
|
import { buildTree } from '@/utils/treeUtil'
|
||||||
|
|
||||||
export class BaseInputSpec<T = any> {
|
export class BaseInputSpec<T = any> {
|
||||||
name: string
|
name: string
|
||||||
@@ -262,34 +263,11 @@ export const useNodeDefStore = defineStore('nodeDef', {
|
|||||||
nodeSearchService(state) {
|
nodeSearchService(state) {
|
||||||
return new NodeSearchService(Object.values(state.nodeDefsByName))
|
return new NodeSearchService(Object.values(state.nodeDefsByName))
|
||||||
},
|
},
|
||||||
nodeTree(state): TreeNode {
|
nodeTree(): TreeNode {
|
||||||
const root: TreeNode = {
|
return buildTree(this.nodeDefs, (nodeDef: ComfyNodeDefImpl) => [
|
||||||
key: 'root',
|
...nodeDef.category.split('/'),
|
||||||
label: 'Nodes',
|
nodeDef.display_name
|
||||||
leaf: false,
|
])
|
||||||
children: []
|
|
||||||
}
|
|
||||||
for (const nodeDef of Object.values(state.nodeDefsByName)) {
|
|
||||||
const path = nodeDef.category.split('/')
|
|
||||||
let current = root
|
|
||||||
let key = 'root'
|
|
||||||
for (const part of path) {
|
|
||||||
key += `/${part}`
|
|
||||||
let next = current.children.find((child) => child.label === part)
|
|
||||||
if (!next) {
|
|
||||||
next = { key, label: part, children: [], leaf: false }
|
|
||||||
current.children.push(next)
|
|
||||||
}
|
|
||||||
current = next
|
|
||||||
}
|
|
||||||
current.children.push({
|
|
||||||
label: nodeDef.display_name,
|
|
||||||
data: nodeDef,
|
|
||||||
key: `${key}/${nodeDef.name}`,
|
|
||||||
leaf: true
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return root
|
|
||||||
},
|
},
|
||||||
sortedNodeTree(): TreeNode {
|
sortedNodeTree(): TreeNode {
|
||||||
return sortedTree(this.nodeTree)
|
return sortedTree(this.nodeTree)
|
||||||
|
|||||||
Reference in New Issue
Block a user