fix(editor): Handle Loop node execution data preview correctly when inserting a node (#15351)

This commit is contained in:
Charlie Kolb
2025-05-19 15:19:32 +02:00
committed by GitHub
parent 9cf6265e9f
commit 5967c13165
3 changed files with 396 additions and 243 deletions

View File

@@ -216,7 +216,13 @@ export function resolveParameter<T = IDataObject>(
) {
runIndexCurrent = workflowRunData[contextNode!.name].length - 1;
}
let _executeData = executeData(parentNode, contextNode!.name, inputName, runIndexCurrent);
let _executeData = executeData(
parentNode,
contextNode!.name,
inputName,
runIndexCurrent,
runIndexParent,
);
if (!_executeData.source) {
// fallback to parent's run index for multi-output case
@@ -354,6 +360,7 @@ export function executeData(
currentNode: string,
inputName: string,
runIndex: number,
parentRunIndex?: number,
): IExecuteData {
const executeData = {
node: {},
@@ -361,6 +368,8 @@ export function executeData(
source: null,
} as IExecuteData;
parentRunIndex = parentRunIndex ?? runIndex;
const workflowsStore = useWorkflowsStore();
// Find the parent node which has data
@@ -386,15 +395,15 @@ export function executeData(
if (
!workflowRunData[parentNodeName] ||
workflowRunData[parentNodeName].length <= runIndex ||
!workflowRunData[parentNodeName][runIndex] ||
!workflowRunData[parentNodeName][runIndex].hasOwnProperty('data') ||
workflowRunData[parentNodeName][runIndex].data === undefined ||
!workflowRunData[parentNodeName][runIndex].data.hasOwnProperty(inputName)
workflowRunData[parentNodeName].length <= parentRunIndex ||
!workflowRunData[parentNodeName][parentRunIndex] ||
!workflowRunData[parentNodeName][parentRunIndex].hasOwnProperty('data') ||
workflowRunData[parentNodeName][parentRunIndex].data === undefined ||
!workflowRunData[parentNodeName][parentRunIndex].data?.hasOwnProperty(inputName)
) {
executeData.data = {};
} else {
executeData.data = workflowRunData[parentNodeName][runIndex].data!;
executeData.data = workflowRunData[parentNodeName][parentRunIndex].data!;
if (workflowRunData[currentNode] && workflowRunData[currentNode][runIndex]) {
executeData.source = {
[inputName]: workflowRunData[currentNode][runIndex].source,
@@ -427,6 +436,7 @@ export function executeData(
{
previousNode: parentNodeName,
previousNodeOutput,
previousNodeRun: parentRunIndex,
},
],
};