diff --git a/webapp/packages/core-app/src/shared/NodesManager/NavNodeManagerService.ts b/webapp/packages/core-app/src/shared/NodesManager/NavNodeManagerService.ts index d5d6ec5d13..9cf48d0863 100644 --- a/webapp/packages/core-app/src/shared/NodesManager/NavNodeManagerService.ts +++ b/webapp/packages/core-app/src/shared/NodesManager/NavNodeManagerService.ts @@ -284,6 +284,10 @@ export class NavNodeManagerService extends Bootstrap { const parents: string[] = []; let parent = this.getNode(nodeId); + if (!parent) { + return NodeManagerUtils.parentsFromPath(nodeId); + } + while (parent && parent.parentId !== ROOT_NODE_PATH && parent.id !== parent.parentId) { parents.unshift(parent.parentId); parent = this.getNode(parent.parentId); diff --git a/webapp/packages/core-app/src/shared/NodesManager/NodeManagerUtils.ts b/webapp/packages/core-app/src/shared/NodesManager/NodeManagerUtils.ts index fe40f3ea33..4833568ef2 100644 --- a/webapp/packages/core-app/src/shared/NodesManager/NodeManagerUtils.ts +++ b/webapp/packages/core-app/src/shared/NodesManager/NodeManagerUtils.ts @@ -16,6 +16,25 @@ export const NodeManagerUtils = { return connectionNodeId.replace('database://', ''); }, + parentsFromPath(nodeId: string): string[] { + const parts = nodeId + .replace('//', '\\') + .split('/'); + let lastPath = ''; + const parents: string[] = []; + + for (const part of parts) { + if (lastPath !== '') { + lastPath += '/'; + } + lastPath += part.replace('\\', '//'); + + parents.push(lastPath); + } + + return parents; + }, + connectionIdToConnectionNodeId(connectionId: string): string { return `database://${connectionId}`; },