Add node lifecycle badge text (#809)

This commit is contained in:
Chenlei Hu
2024-09-13 10:04:36 +09:00
committed by GitHub
parent 7d3b8dc44c
commit 880ac4fa5a
3 changed files with 62 additions and 12 deletions

View File

@@ -23,30 +23,58 @@ function isCoreNode(node: ComfyLGraphNode) {
return getNodeSource(node)?.type === 'core'
}
function getNodeIdBadge(node: ComfyLGraphNode, nodeIdBadgeMode: NodeBadgeMode) {
return nodeIdBadgeMode === NodeBadgeMode.None ||
(isCoreNode(node) && nodeIdBadgeMode === NodeBadgeMode.HideBuiltIn)
? ''
: `#${node.id}`
function badgeTextVisible(
node: ComfyLGraphNode,
badgeMode: NodeBadgeMode
): boolean {
return (
badgeMode === NodeBadgeMode.None ||
(isCoreNode(node) && badgeMode === NodeBadgeMode.HideBuiltIn)
)
}
function getNodeSourceBadge(
function getNodeIdBadgeText(
node: ComfyLGraphNode,
nodeIdBadgeMode: NodeBadgeMode
) {
return badgeTextVisible(node, nodeIdBadgeMode) ? '' : `#${node.id}`
}
function getNodeSourceBadgeText(
node: ComfyLGraphNode,
nodeSourceBadgeMode: NodeBadgeMode
) {
const nodeSource = getNodeSource(node)
return nodeSourceBadgeMode === NodeBadgeMode.None ||
(isCoreNode(node) && nodeSourceBadgeMode === NodeBadgeMode.HideBuiltIn)
return badgeTextVisible(node, nodeSourceBadgeMode)
? ''
: nodeSource?.badgeText ?? ''
}
function getNodeLifeCycleBadgeText(
node: ComfyLGraphNode,
nodeLifeCycleBadgeMode: NodeBadgeMode
) {
let text = ''
const nodeDef = (node.constructor as typeof ComfyLGraphNode).nodeData
if (nodeDef.deprecated) {
text = '[DEPR]'
}
if (nodeDef.experimental) {
text = '[BETA]'
}
return badgeTextVisible(node, nodeLifeCycleBadgeMode) ? '' : text
}
class NodeBadgeExtension implements ComfyExtension {
name = 'Comfy.NodeBadge'
constructor(
public nodeIdBadgeMode: ComputedRef<NodeBadgeMode> | null = null,
public nodeSourceBadgeMode: ComputedRef<NodeBadgeMode> | null = null,
public nodeLifeCycleBadgeMode: ComputedRef<NodeBadgeMode> | null = null,
public colorPalette: ComputedRef<Palette> | null = null
) {}
@@ -63,6 +91,12 @@ class NodeBadgeExtension implements ComfyExtension {
this.nodeIdBadgeMode = computed(
() => settingStore.get('Comfy.NodeBadge.NodeIdBadgeMode') as NodeBadgeMode
)
this.nodeLifeCycleBadgeMode = computed(
() =>
settingStore.get(
'Comfy.NodeBadge.NodeLifeCycleBadgeMode'
) as NodeBadgeMode
)
this.colorPalette = computed(() =>
getColorPalette(settingStore.get('Comfy.ColorPalette'))
)
@@ -74,6 +108,9 @@ class NodeBadgeExtension implements ComfyExtension {
watch(this.nodeIdBadgeMode, () => {
app.graph.setDirtyCanvas(true, true)
})
watch(this.nodeLifeCycleBadgeMode, () => {
app.graph.setDirtyCanvas(true, true)
})
}
nodeCreated(node: ComfyLGraphNode, app: ComfyApp) {
@@ -90,13 +127,17 @@ class NodeBadgeExtension implements ComfyExtension {
new LGraphBadge({
text: _.truncate(
[
getNodeIdBadge(node, this.nodeIdBadgeMode.value),
getNodeSourceBadge(node, this.nodeSourceBadgeMode.value)
getNodeIdBadgeText(node, this.nodeIdBadgeMode.value),
getNodeLifeCycleBadgeText(
node,
this.nodeLifeCycleBadgeMode.value
),
getNodeSourceBadgeText(node, this.nodeSourceBadgeMode.value)
]
.filter((s) => s.length > 0)
.join(' '),
{
length: 25
length: 31
}
),
fgColor:

View File

@@ -347,6 +347,14 @@ export const useSettingStore = defineStore('setting', {
options: [NodeBadgeMode.None, NodeBadgeMode.ShowAll],
defaultValue: NodeBadgeMode.ShowAll
})
app.ui.settings.addSetting({
id: 'Comfy.NodeBadge.NodeLifeCycleBadgeMode',
name: 'Node life cycle badge mode',
type: 'combo',
options: [NodeBadgeMode.None, NodeBadgeMode.ShowAll],
defaultValue: NodeBadgeMode.ShowAll
})
},
set<K extends keyof Settings>(key: K, value: Settings[K]) {

View File

@@ -492,7 +492,8 @@ const zSettings = z.record(z.any()).and(
'Comfy.Node.DoubleClickTitleToEdit': z.boolean(),
'Comfy.Window.UnloadConfirmation': z.boolean(),
'Comfy.NodeBadge.NodeSourceBadgeMode': zNodeBadgeMode,
'Comfy.NodeBadge.NodeIdBadgeMode': zNodeBadgeMode
'Comfy.NodeBadge.NodeIdBadgeMode': zNodeBadgeMode,
'Comfy.NodeBadge.NodeLifeCycleBadgeMode': zNodeBadgeMode
})
.optional()
)