diff --git a/src/utils/node.ts b/src/utils/node.ts index afaf9b12..2f42c9b6 100644 --- a/src/utils/node.ts +++ b/src/utils/node.ts @@ -255,15 +255,25 @@ export const translateLoadcaseTree = (list: any[]) => { }); return arr; }; -export const extractLeafNodesWithParentTypes = (list: any[] | undefined): any[] => { +export const extractLeafNodesWithParentTypes = ( + list: any[] | undefined, + disciplineAsLevel: boolean = false +): any[] => { const result: any[] = []; - const typeToField: Record = { - workspace: 'workspaceName', - discipline: 'disciplineName', - machine: 'machineName', - task: 'taskName', - performance: 'performanceName', - }; + const typeToField: Record = disciplineAsLevel + ? { + workspace: 'workspaceName', + discipline: 'disciplineName', + machine: 'machineName', + task: 'taskName', + performance: 'performanceName', + } + : { + workspace: 'workspaceName', + machine: 'machineName', + task: 'taskName', + performance: 'performanceName', + }; const typeToCodeField: Record = { workspace: 'workspaceCode', task: 'taskCode', @@ -344,6 +354,16 @@ export const extractLeafNodesWithParentTypes = (list: any[] | undefined): any[] extraProps[field] = null; } }); + if (!disciplineAsLevel) { + const reversedParents = [...parents].reverse(); + const taskParent = reversedParents.find((p) => p && p.nodeType === NODE_TYPE.TASK); + const taskNode = taskParent || (node.nodeType === NODE_TYPE.TASK ? node : null); + if (taskNode && taskNode.discipline) { + extraProps['disciplineName'] = taskNode.discipline; + } else { + extraProps['disciplineName'] = null; + } + } const copy = { ...mergedNode, parentNodeTypes: uniqueTypes,