From 0ffc72a8a34b3eef85ba760f15c8610cefc9e015 Mon Sep 17 00:00:00 2001 From: Ivan Atanasov Date: Thu, 28 Nov 2024 18:59:01 +0100 Subject: [PATCH] populate workflow Inputs --- .../ExecuteWorkflow/ExecuteWorkflow.node.ts | 4 +-- .../methods/resourceMapping.ts | 32 +++++++++++++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow.node.ts b/packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow.node.ts index 12a97be12a..6346460bd9 100644 --- a/packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow.node.ts +++ b/packages/nodes-base/nodes/ExecuteWorkflow/ExecuteWorkflow.node.ts @@ -199,7 +199,7 @@ export class ExecuteWorkflow implements INodeType { }, required: true, typeOptions: { - loadOptionsDependsOn: ['workflowId.value'], + loadOptionsDependsOn: ['workflowId.value', 'workflowJson'], resourceMapper: { resourceMapperMethod: 'getWorkflowInputs', mode: 'add', @@ -214,11 +214,11 @@ export class ExecuteWorkflow implements INodeType { }, displayOptions: { show: { - source: ['database'], '@version': [{ _cnd: { gte: 1.2 } }], }, hide: { workflowId: [''], + workflowJson: ['\n\n\n'], }, }, }, diff --git a/packages/nodes-base/nodes/ExecuteWorkflow/methods/resourceMapping.ts b/packages/nodes-base/nodes/ExecuteWorkflow/methods/resourceMapping.ts index bc04da69e3..157457fb86 100644 --- a/packages/nodes-base/nodes/ExecuteWorkflow/methods/resourceMapping.ts +++ b/packages/nodes-base/nodes/ExecuteWorkflow/methods/resourceMapping.ts @@ -1,22 +1,42 @@ import type { + FieldType, ILoadOptionsFunctions, ResourceMapperField, ResourceMapperFields, } from 'n8n-workflow'; +import { getWorkflowInfo } from '../GenericFunctions'; + export async function getWorkflowInputs( this: ILoadOptionsFunctions, ): Promise { - // TODO: take the columns from the workflow input - const workflowInputs = ['uid', 'Test Field 2', 'Test Field 3']; + const source = this.getNodeParameter('source', 0) as string; - const fields: ResourceMapperField[] = workflowInputs.map((col) => ({ - id: col, - displayName: col, + const executeWorkflowInfo = await getWorkflowInfo.call(this, source); + + if (executeWorkflowInfo.code === undefined) { + // executeWorkflowInfo.code = await getWorkflowById.call(this, executeWorkflowInfo.id as string); + } + + const workflowInputs = ( + Array.isArray( + executeWorkflowInfo.code?.nodes.find( + (node) => node.type === 'n8n-nodes-base.executeWorkflowTrigger', + )?.parameters.workflowInputs, + ) + ? executeWorkflowInfo.code?.nodes.find( + (node) => node.type === 'n8n-nodes-base.executeWorkflowTrigger', + )?.parameters.workflowInputs + : [] + ) as Array<{ name: string; type: FieldType }>; + + const fields: ResourceMapperField[] = workflowInputs.map((currentWorkflowInput) => ({ + id: currentWorkflowInput.name, + displayName: currentWorkflowInput.name, required: false, defaultMatch: true, display: true, - type: 'number', + type: currentWorkflowInput.type || 'string', canBeUsedToMatch: true, }));