mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-07 00:20:07 +00:00
@@ -1,4 +1,4 @@
|
||||
import type { LGraph, LGraphNode, Subgraph } from '@comfyorg/litegraph'
|
||||
import type { LGraph, Subgraph } from '@comfyorg/litegraph'
|
||||
import { defineStore } from 'pinia'
|
||||
import { computed, ref } from 'vue'
|
||||
|
||||
@@ -24,7 +24,7 @@ import type {
|
||||
} from '@/schemas/comfyWorkflowSchema'
|
||||
import { api } from '@/scripts/api'
|
||||
import { app } from '@/scripts/app'
|
||||
import type { NodeExecutionId, NodeLocatorId } from '@/types/nodeIdentification'
|
||||
import type { NodeLocatorId } from '@/types/nodeIdentification'
|
||||
import { createNodeLocatorId } from '@/types/nodeIdentification'
|
||||
|
||||
import { useCanvasStore } from './graphStore'
|
||||
@@ -54,22 +54,6 @@ export const useExecutionStore = defineStore('execution', () => {
|
||||
// This is the progress of all nodes in the currently executing workflow
|
||||
const nodeProgressStates = ref<Record<string, NodeProgressState>>({})
|
||||
|
||||
/**
|
||||
* @deprecated Workaround for Subgraph phase 1 - execution IDs may share locator IDs.
|
||||
* The most recently executed execution ID for each node locator ID.
|
||||
*/
|
||||
const locatorIdToExecutionIdMap = new Map<NodeLocatorId, NodeExecutionId>()
|
||||
|
||||
/**
|
||||
* Get the NodeLocatorId for a node.
|
||||
* @param node The node
|
||||
* @returns The NodeLocatorId
|
||||
*/
|
||||
const getNodeLocatorId = (node: LGraphNode): NodeLocatorId =>
|
||||
node.graph?.isRootGraph
|
||||
? node.id.toString()
|
||||
: [node.graph?.id, node.id].join(':')
|
||||
|
||||
/**
|
||||
* Convert execution context node IDs to NodeLocatorIds
|
||||
* @param nodeId The node ID from execution context (could be execution ID)
|
||||
@@ -484,8 +468,6 @@ export const useExecutionStore = defineStore('execution', () => {
|
||||
_executingNodeProgress,
|
||||
// NodeLocatorId conversion helpers
|
||||
executionIdToNodeLocatorId,
|
||||
nodeLocatorIdToExecutionId,
|
||||
locatorIdToExecutionIdMap,
|
||||
getNodeLocatorId
|
||||
nodeLocatorIdToExecutionId
|
||||
}
|
||||
})
|
||||
|
||||
@@ -8,12 +8,9 @@ import {
|
||||
} from '@/schemas/apiSchema'
|
||||
import { api } from '@/scripts/api'
|
||||
import { app } from '@/scripts/app'
|
||||
import type { NodeExecutionId } from '@/types'
|
||||
import { parseFilePath } from '@/utils/formatUtil'
|
||||
import { isVideoNode } from '@/utils/litegraphUtil'
|
||||
|
||||
import { useExecutionStore } from './executionStore'
|
||||
|
||||
const createOutputs = (
|
||||
filenames: string[],
|
||||
type: ResultItemType,
|
||||
@@ -26,20 +23,16 @@ const createOutputs = (
|
||||
}
|
||||
|
||||
export const useNodeOutputStore = defineStore('nodeOutput', () => {
|
||||
const executionStore = useExecutionStore()
|
||||
const getMostRecentExecutionId = (node: LGraphNode): NodeExecutionId =>
|
||||
executionStore.locatorIdToExecutionIdMap.get(
|
||||
executionStore.getNodeLocatorId(node)
|
||||
) ?? node.id.toString()
|
||||
const getNodeId = (node: LGraphNode): string => node.id.toString()
|
||||
|
||||
function getNodeOutputs(
|
||||
node: LGraphNode
|
||||
): ExecutedWsMessage['output'] | undefined {
|
||||
return app.nodeOutputs[getMostRecentExecutionId(node)]
|
||||
return app.nodeOutputs[getNodeId(node)]
|
||||
}
|
||||
|
||||
function getNodePreviews(node: LGraphNode): string[] | undefined {
|
||||
return app.nodePreviewImages[getMostRecentExecutionId(node)]
|
||||
return app.nodePreviewImages[getNodeId(node)]
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -98,23 +91,12 @@ export const useNodeOutputStore = defineStore('nodeOutput', () => {
|
||||
filenames: string | string[] | ResultItem,
|
||||
{
|
||||
folder = 'input',
|
||||
isAnimated = false,
|
||||
isInitialLoad = false
|
||||
}: {
|
||||
folder?: ResultItemType
|
||||
isAnimated?: boolean
|
||||
isInitialLoad?: boolean
|
||||
} = {}
|
||||
isAnimated = false
|
||||
}: { folder?: ResultItemType; isAnimated?: boolean } = {}
|
||||
) {
|
||||
if (!filenames || !node) return
|
||||
|
||||
const nodeId = isInitialLoad
|
||||
? executionStore.getNodeLocatorId(node)
|
||||
: getMostRecentExecutionId(node)
|
||||
|
||||
if (isInitialLoad) {
|
||||
executionStore.locatorIdToExecutionIdMap.set(nodeId, nodeId)
|
||||
}
|
||||
const nodeId = getNodeId(node)
|
||||
|
||||
if (typeof filenames === 'string') {
|
||||
app.nodeOutputs[nodeId] = createOutputs([filenames], folder, isAnimated)
|
||||
|
||||
Reference in New Issue
Block a user