handle unknown types

This commit is contained in:
Mutasem 2021-11-05 14:46:31 +01:00
parent 83b8c01e04
commit fd886b585a
7 changed files with 22 additions and 18 deletions

View file

@ -101,7 +101,7 @@ export default mixins(
credentialTypesNodeDescription (): INodeCredentialDescription[] { credentialTypesNodeDescription (): INodeCredentialDescription[] {
const node = this.node as INodeUi; const node = this.node as INodeUi;
const activeNodeType = this.$store.getters.nodeType(node.type) as INodeTypeDescription; const activeNodeType = this.$store.getters.nodeType(node.type) as INodeTypeDescription | null;
if (activeNodeType && activeNodeType.credentials) { if (activeNodeType && activeNodeType.credentials) {
return activeNodeType.credentials; return activeNodeType.credentials;
} }

View file

@ -353,7 +353,10 @@ export default mixins(
} else if (parameterData.name.startsWith('parameters.')) { } else if (parameterData.name.startsWith('parameters.')) {
// A node parameter changed // A node parameter changed
const nodeType = this.$store.getters.nodeType(node.type); const nodeType = this.$store.getters.nodeType(node.type) as INodeTypeDescription | null;
if (!nodeType) {
return;
}
// Get only the parameters which are different to the defaults // Get only the parameters which are different to the defaults
let nodeParameters = NodeHelpers.getNodeParameters(nodeType.properties, node.parameters, false, false); let nodeParameters = NodeHelpers.getNodeParameters(nodeType.properties, node.parameters, false, false);

View file

@ -64,7 +64,7 @@ export default mixins(
], ],
data () { data () {
return { return {
isMinimized: this.nodeType.name !== WEBHOOK_NODE_TYPE, isMinimized: this.nodeType && this.nodeType.name !== WEBHOOK_NODE_TYPE,
showUrlFor: 'test', showUrlFor: 'test',
}; };
}, },

View file

@ -203,6 +203,7 @@ import {
IBinaryKeyData, IBinaryKeyData,
IDataObject, IDataObject,
INodeExecutionData, INodeExecutionData,
INodeTypeDescription,
IRunData, IRunData,
IRunExecutionData, IRunExecutionData,
ITaskData, ITaskData,
@ -529,8 +530,8 @@ export default mixins(
return outputIndex + 1; return outputIndex + 1;
} }
const nodeType = this.$store.getters.nodeType(this.node.type); const nodeType = this.$store.getters.nodeType(this.node.type) as INodeTypeDescription | null;
if (!nodeType.hasOwnProperty('outputNames') || nodeType.outputNames.length <= outputIndex) { if (!nodeType || !nodeType.outputNames || nodeType.outputNames.length <= outputIndex) {
return outputIndex + 1; return outputIndex + 1;
} }

View file

@ -314,10 +314,10 @@ export const nodeBase = mixins(
}); });
}, },
__addNode (node: INodeUi) { __addNode (node: INodeUi) {
let nodeTypeData = this.$store.getters.nodeType(node.type); let nodeTypeData = this.$store.getters.nodeType(node.type) as INodeTypeDescription | null;
if (!nodeTypeData) { if (!nodeTypeData) {
// If node type is not know use by default the base.noOp data to display it // If node type is not know use by default the base.noOp data to display it
nodeTypeData = this.$store.getters.nodeType(NO_OP_NODE_TYPE); nodeTypeData = this.$store.getters.nodeType(NO_OP_NODE_TYPE) as INodeTypeDescription;
} }
this.__addInputEndpoints(node, nodeTypeData); this.__addInputEndpoints(node, nodeTypeData);

View file

@ -225,7 +225,7 @@ export const workflowHelpers = mixins(
return []; return [];
}, },
getByName: (nodeType: string): INodeType | INodeVersionedType | undefined => { getByName: (nodeType: string): INodeType | INodeVersionedType | undefined => {
const nodeTypeDescription = this.$store.getters.nodeType(nodeType); const nodeTypeDescription = this.$store.getters.nodeType(nodeType) as INodeTypeDescription | null;
if (nodeTypeDescription === null) { if (nodeTypeDescription === null) {
return undefined; return undefined;
@ -236,7 +236,7 @@ export const workflowHelpers = mixins(
}; };
}, },
getByNameAndVersion: (nodeType: string, version?: number): INodeType | undefined => { getByNameAndVersion: (nodeType: string, version?: number): INodeType | undefined => {
const nodeTypeDescription = this.$store.getters.nodeType(nodeType, version); const nodeTypeDescription = this.$store.getters.nodeType(nodeType, version) as INodeTypeDescription | null;
if (nodeTypeDescription === null) { if (nodeTypeDescription === null) {
return undefined; return undefined;
@ -329,7 +329,7 @@ export const workflowHelpers = mixins(
// Get the data of the node type that we can get the default values // Get the data of the node type that we can get the default values
// TODO: Later also has to care about the node-type-version as defaults could be different // TODO: Later also has to care about the node-type-version as defaults could be different
const nodeType = this.$store.getters.nodeType(node.type, node.typeVersion) as INodeTypeDescription; const nodeType = this.$store.getters.nodeType(node.type, node.typeVersion) as INodeTypeDescription | null;
if (nodeType !== null) { if (nodeType !== null) {
// Node-Type is known so we can save the parameters correctly // Node-Type is known so we can save the parameters correctly

View file

@ -1151,7 +1151,7 @@ export default mixins(
let yOffset = 0; let yOffset = 0;
if (lastSelectedConnection) { if (lastSelectedConnection) {
const sourceNodeType = this.$store.getters.nodeType(lastSelectedNode.type); const sourceNodeType = this.$store.getters.nodeType(lastSelectedNode.type) as INodeTypeDescription | null;
const offsets = [[-100, 100], [-140, 0, 140], [-240, -100, 100, 240]]; const offsets = [[-100, 100], [-140, 0, 140], [-240, -100, 100, 240]];
if (sourceNodeType && sourceNodeType.outputs.length > 1) { if (sourceNodeType && sourceNodeType.outputs.length > 1) {
const offset = offsets[sourceNodeType.outputs.length - 2]; const offset = offsets[sourceNodeType.outputs.length - 2];
@ -1528,8 +1528,8 @@ export default mixins(
const nodeName = (element as HTMLElement).dataset['name'] as string; const nodeName = (element as HTMLElement).dataset['name'] as string;
const node = this.$store.getters.getNodeByName(nodeName) as INodeUi | null; const node = this.$store.getters.getNodeByName(nodeName) as INodeUi | null;
if (node) { if (node) {
const nodeType = this.$store.getters.nodeType(node.type) as INodeTypeDescription; const nodeType = this.$store.getters.nodeType(node.type) as INodeTypeDescription | null;
if (nodeType.inputs.length === 1) { if (nodeType && nodeType.inputs && nodeType.inputs.length === 1) {
this.pullConnActiveNodeName = node.name; this.pullConnActiveNodeName = node.name;
const endpoint = this.instance.getEndpoint(this.getInputEndpointUUID(nodeName, 0)); const endpoint = this.instance.getEndpoint(this.getInputEndpointUUID(nodeName, 0));
@ -1718,8 +1718,8 @@ export default mixins(
const node = this.$store.getters.getNodeByName(nodeName); const node = this.$store.getters.getNodeByName(nodeName);
const nodeTypeData: INodeTypeDescription = this.$store.getters.nodeType(node.type); const nodeTypeData: INodeTypeDescription | null= this.$store.getters.nodeType(node.type);
if (nodeTypeData.maxNodes !== undefined && this.getNodeTypeCount(node.type) >= nodeTypeData.maxNodes) { if (nodeTypeData && nodeTypeData.maxNodes !== undefined && this.getNodeTypeCount(node.type) >= nodeTypeData.maxNodes) {
this.showMaxNodeTypeError(nodeTypeData); this.showMaxNodeTypeError(nodeTypeData);
return; return;
} }
@ -1880,8 +1880,8 @@ export default mixins(
} }
// connect nodes before/after deleted node // connect nodes before/after deleted node
const nodeType: INodeTypeDescription = this.$store.getters.nodeType(node.type, node.typeVersion); const nodeType: INodeTypeDescription | null = this.$store.getters.nodeType(node.type, node.typeVersion);
if (nodeType.outputs.length === 1 if (nodeType && nodeType.outputs.length === 1
&& nodeType.inputs.length === 1) { && nodeType.inputs.length === 1) {
const {incoming, outgoing} = this.getIncomingOutgoingConnections(node.name); const {incoming, outgoing} = this.getIncomingOutgoingConnections(node.name);
if (incoming.length === 1 && outgoing.length === 1) { if (incoming.length === 1 && outgoing.length === 1) {
@ -2051,7 +2051,7 @@ export default mixins(
let nodeType: INodeTypeDescription | null; let nodeType: INodeTypeDescription | null;
let foundNodeIssues: INodeIssues | null; let foundNodeIssues: INodeIssues | null;
nodes.forEach((node) => { nodes.forEach((node) => {
nodeType = this.$store.getters.nodeType(node.type, node.typeVersion); nodeType = this.$store.getters.nodeType(node.type, node.typeVersion) as INodeTypeDescription | null;
// Make sure that some properties always exist // Make sure that some properties always exist
if (!node.hasOwnProperty('disabled')) { if (!node.hasOwnProperty('disabled')) {