mirror of
https://github.com/n8n-io/n8n.git
synced 2025-02-21 02:56:40 -08:00
🐛 Fix that "getCurrentNodeParameter" did not resolve expressions
This commit is contained in:
parent
ae89882951
commit
a7d729842a
|
@ -10,6 +10,7 @@ import {
|
||||||
INode,
|
INode,
|
||||||
INodeCredentials,
|
INodeCredentials,
|
||||||
INodeIssues,
|
INodeIssues,
|
||||||
|
INodeParameters,
|
||||||
INodePropertyOptions,
|
INodePropertyOptions,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
IRunExecutionData,
|
IRunExecutionData,
|
||||||
|
@ -125,7 +126,7 @@ export interface IRestApi {
|
||||||
makeRestApiRequest(method: string, endpoint: string, data?: any): Promise<any>; // tslint:disable-line:no-any
|
makeRestApiRequest(method: string, endpoint: string, data?: any): Promise<any>; // tslint:disable-line:no-any
|
||||||
getSettings(): Promise<IN8nUISettings>;
|
getSettings(): Promise<IN8nUISettings>;
|
||||||
getNodeTypes(): Promise<INodeTypeDescription[]>;
|
getNodeTypes(): Promise<INodeTypeDescription[]>;
|
||||||
getNodeParameterOptions(nodeType: string, methodName: string, credentials?: INodeCredentials): Promise<INodePropertyOptions[]>;
|
getNodeParameterOptions(nodeType: string, methodName: string, currentNodeParameters: INodeParameters, credentials?: INodeCredentials): Promise<INodePropertyOptions[]>;
|
||||||
removeTestWebhook(workflowId: string): Promise<boolean>;
|
removeTestWebhook(workflowId: string): Promise<boolean>;
|
||||||
runWorkflow(runData: IStartRunData): Promise<IExecutionPushResponse>;
|
runWorkflow(runData: IStartRunData): Promise<IExecutionPushResponse>;
|
||||||
createNewWorkflow(sendData: IWorkflowData): Promise<IWorkflowDb>;
|
createNewWorkflow(sendData: IWorkflowData): Promise<IWorkflowDb>;
|
||||||
|
|
|
@ -171,6 +171,7 @@ import { genericHelpers } from '@/components/mixins/genericHelpers';
|
||||||
import { restApi } from '@/components/mixins/restApi';
|
import { restApi } from '@/components/mixins/restApi';
|
||||||
import { showMessage } from '@/components/mixins/showMessage';
|
import { showMessage } from '@/components/mixins/showMessage';
|
||||||
import { workflowHelpers } from '@/components/mixins/workflowHelpers';
|
import { workflowHelpers } from '@/components/mixins/workflowHelpers';
|
||||||
|
import { workflowSave } from '@/components/mixins/workflowSave';
|
||||||
import { workflowRun } from '@/components/mixins/workflowRun';
|
import { workflowRun } from '@/components/mixins/workflowRun';
|
||||||
|
|
||||||
import { saveAs } from 'file-saver';
|
import { saveAs } from 'file-saver';
|
||||||
|
@ -183,6 +184,7 @@ export default mixins(
|
||||||
showMessage,
|
showMessage,
|
||||||
workflowHelpers,
|
workflowHelpers,
|
||||||
workflowRun,
|
workflowRun,
|
||||||
|
workflowSave,
|
||||||
)
|
)
|
||||||
.extend({
|
.extend({
|
||||||
name: 'MainHeader',
|
name: 'MainHeader',
|
||||||
|
|
|
@ -57,6 +57,7 @@ import mixins from 'vue-typed-mixins';
|
||||||
|
|
||||||
export default mixins(
|
export default mixins(
|
||||||
copyPaste,
|
copyPaste,
|
||||||
|
showMessage,
|
||||||
workflowHelpers,
|
workflowHelpers,
|
||||||
)
|
)
|
||||||
.extend({
|
.extend({
|
||||||
|
|
|
@ -125,6 +125,7 @@ import {
|
||||||
import {
|
import {
|
||||||
NodeHelpers,
|
NodeHelpers,
|
||||||
NodeParameterValue,
|
NodeParameterValue,
|
||||||
|
INodeParameters,
|
||||||
INodePropertyOptions,
|
INodePropertyOptions,
|
||||||
Workflow,
|
Workflow,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
@ -421,6 +422,21 @@ export default mixins(
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
getResolveNodeParameters (nodeParameters: INodeParameters): INodeParameters {
|
||||||
|
const returnData: INodeParameters = {};
|
||||||
|
for (const key of Object.keys(nodeParameters)) {
|
||||||
|
if (Array.isArray(nodeParameters[key])) {
|
||||||
|
returnData[key] = (nodeParameters[key] as string[]).map(value => {
|
||||||
|
return this.resolveExpression(value as string) as string;
|
||||||
|
});
|
||||||
|
} else if (typeof nodeParameters[key] === 'object') {
|
||||||
|
returnData[key] = this.getResolveNodeParameters(nodeParameters[key] as INodeParameters);
|
||||||
|
} else {
|
||||||
|
returnData[key] = this.resolveExpression(nodeParameters[key] as string);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return returnData;
|
||||||
|
},
|
||||||
async loadRemoteParameterOptions () {
|
async loadRemoteParameterOptions () {
|
||||||
if (this.node === null || this.remoteMethod === undefined || this.remoteParameterOptionsLoading) {
|
if (this.node === null || this.remoteMethod === undefined || this.remoteParameterOptionsLoading) {
|
||||||
return;
|
return;
|
||||||
|
@ -429,8 +445,12 @@ export default mixins(
|
||||||
this.remoteParameterOptionsLoading = true;
|
this.remoteParameterOptionsLoading = true;
|
||||||
this.remoteParameterOptions.length = 0;
|
this.remoteParameterOptions.length = 0;
|
||||||
|
|
||||||
|
// Get the resolved parameter values of the current node
|
||||||
|
const currentNodeParameters = this.$store.getters.activeNode.parameters;
|
||||||
|
const resolvedNodeParameters = this.getResolveNodeParameters(currentNodeParameters);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const options = await this.restApi().getNodeParameterOptions(this.node.type, this.remoteMethod, this.node.credentials);
|
const options = await this.restApi().getNodeParameterOptions(this.node.type, this.remoteMethod, resolvedNodeParameters, this.node.credentials);
|
||||||
this.remoteParameterOptions.push.apply(this.remoteParameterOptions, options);
|
this.remoteParameterOptions.push.apply(this.remoteParameterOptions, options);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.remoteParameterOptionsLoadingIssues = error.message;
|
this.remoteParameterOptionsLoadingIssues = error.message;
|
||||||
|
|
|
@ -26,6 +26,7 @@ import {
|
||||||
ICredentialType,
|
ICredentialType,
|
||||||
IDataObject,
|
IDataObject,
|
||||||
INodeCredentials,
|
INodeCredentials,
|
||||||
|
INodeParameters,
|
||||||
INodePropertyOptions,
|
INodePropertyOptions,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
@ -152,12 +153,12 @@ export const restApi = Vue.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
// Returns all the parameter options from the server
|
// Returns all the parameter options from the server
|
||||||
getNodeParameterOptions: (nodeType: string, methodName: string, credentials?: INodeCredentials): Promise<INodePropertyOptions[]> => {
|
getNodeParameterOptions: (nodeType: string, methodName: string, currentNodeParameters: INodeParameters, credentials?: INodeCredentials): Promise<INodePropertyOptions[]> => {
|
||||||
const sendData = {
|
const sendData = {
|
||||||
nodeType,
|
nodeType,
|
||||||
methodName,
|
methodName,
|
||||||
credentials,
|
credentials,
|
||||||
currentNodeParameters: this.$store.getters.activeNode.parameters,
|
currentNodeParameters,
|
||||||
};
|
};
|
||||||
return self.restApi().makeRestApiRequest('GET', '/node-parameter-options', sendData);
|
return self.restApi().makeRestApiRequest('GET', '/node-parameter-options', sendData);
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue