fix(editor): Hide not supported node options (#7597)

Currently Trigger-Nodes and Sub-Nodes display options that do not make
sense or work like:
- Always Output Data
- Execute Once
- On Error

This PR hides those options for nodes that can not make use of them
anyway to not confuse users.

Github issue / Community forum post (link here to close automatically):
This commit is contained in:
Jan Oberhauser 2023-11-03 12:18:00 +01:00 committed by GitHub
parent 85e1a10021
commit b532a7bdb7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -380,7 +380,55 @@ export default defineComponent({
} as INodeParameters,
nodeValuesInitialized: false, // Used to prevent nodeValues from being overwritten by defaults on reopening ndv
nodeSettings: [
nodeSettings: [] as INodeProperties[],
COMMUNITY_NODES_INSTALLATION_DOCS_URL,
CUSTOM_NODES_DOCS_URL,
MAIN_NODE_PANEL_WIDTH,
hiddenIssuesInputs: [] as string[],
};
},
watch: {
node(newNode, oldNode) {
this.setNodeValues();
},
isCurlImportModalOpen(newValue, oldValue) {
if (newValue === false) {
let parameters = this.uiStore.getHttpNodeParameters || '';
if (!parameters) return;
try {
parameters = JSON.parse(parameters) as {
[key: string]: any;
};
//@ts-ignore
this.valueChanged({
node: this.node.name,
name: 'parameters',
value: parameters,
});
this.uiStore.setHttpNodeParameters({ name: IMPORT_CURL_MODAL_KEY, parameters: '' });
} catch {}
}
},
},
methods: {
populateHiddenIssuesSet() {
if (!this.node || !this.workflowsStore.isNodePristine(this.node.name)) return;
this.hiddenIssuesInputs.push('credentials');
this.parametersNoneSetting.forEach((parameter) => {
this.hiddenIssuesInputs.push(parameter.name);
});
this.workflowsStore.setNodePristine(this.node.name, false);
},
populateSettings() {
if (this.isExecutable && !this.isTriggerNode) {
this.nodeSettings.push(
...([
{
displayName: this.$locale.baseText('nodeSettings.alwaysOutputData.displayName'),
name: 'alwaysOutputData',
@ -445,7 +493,9 @@ export default defineComponent({
type: 'options',
options: [
{
name: this.$locale.baseText('nodeSettings.onError.options.stopWorkflow.displayName'),
name: this.$locale.baseText(
'nodeSettings.onError.options.stopWorkflow.displayName',
),
value: 'stopWorkflow',
description: this.$locale.baseText(
'nodeSettings.onError.options.stopWorkflow.description',
@ -474,6 +524,11 @@ export default defineComponent({
noDataExpression: true,
description: this.$locale.baseText('nodeSettings.onError.description'),
},
] as INodeProperties[]),
);
}
this.nodeSettings.push(
...([
{
displayName: this.$locale.baseText('nodeSettings.notes.displayName'),
name: 'notes',
@ -493,50 +548,8 @@ export default defineComponent({
noDataExpression: true,
description: this.$locale.baseText('nodeSettings.notesInFlow.description'),
},
] as INodeProperties[],
COMMUNITY_NODES_INSTALLATION_DOCS_URL,
CUSTOM_NODES_DOCS_URL,
MAIN_NODE_PANEL_WIDTH,
hiddenIssuesInputs: [] as string[],
};
},
watch: {
node(newNode, oldNode) {
this.setNodeValues();
},
isCurlImportModalOpen(newValue, oldValue) {
if (newValue === false) {
let parameters = this.uiStore.getHttpNodeParameters || '';
if (!parameters) return;
try {
parameters = JSON.parse(parameters) as {
[key: string]: any;
};
//@ts-ignore
this.valueChanged({
node: this.node.name,
name: 'parameters',
value: parameters,
});
this.uiStore.setHttpNodeParameters({ name: IMPORT_CURL_MODAL_KEY, parameters: '' });
} catch {}
}
},
},
methods: {
populateHiddenIssuesSet() {
if (!this.node || !this.workflowsStore.isNodePristine(this.node.name)) return;
this.hiddenIssuesInputs.push('credentials');
this.parametersNoneSetting.forEach((parameter) => {
this.hiddenIssuesInputs.push(parameter.name);
});
this.workflowsStore.setNodePristine(this.node.name, false);
] as INodeProperties[]),
);
},
onParameterBlur(parameterName: string) {
this.hiddenIssuesInputs = this.hiddenIssuesInputs.filter((name) => name !== parameterName);
@ -1003,6 +1016,7 @@ export default defineComponent({
},
mounted() {
this.populateHiddenIssuesSet();
this.populateSettings();
this.setNodeValues();
this.eventBus?.on('openSettings', this.openSettings);