All files / app/codeCharta/state/effects/updateFileSettings/utils edges.merger.ts

93.75% Statements 15/16
62.5% Branches 5/8
100% Functions 1/1
93.75% Lines 15/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 372x   2x   2x 7x   7x       7x 14x 13x 20x               20x   20x 8x 16x     12x         7x    
import { getUpdatedPath } from "../../../../util/nodePathHelper"
import { CCFile, Edge } from "../../../../codeCharta.model"
import { clone } from "../../../../util/clone"
 
export function getMergedEdges(inputFiles: CCFile[], withUpdatedPath: boolean) {
    const edges: Map<string, Edge> = new Map()
 
    Iif (inputFiles.length === 1) {
        return inputFiles[0].settings.fileSettings.edges
    }
 
    for (const inputFile of inputFiles) {
        if (inputFile.settings.fileSettings.edges) {
            for (const oldEdge of inputFile.settings.fileSettings.edges) {
                const edge: Edge = {
                    fromNodeName: withUpdatedPath
                        ? getUpdatedPath(inputFile.fileMeta.fileName, oldEdge.fromNodeName)
                        : oldEdge.fromNodeName,
                    toNodeName: withUpdatedPath ? getUpdatedPath(inputFile.fileMeta.fileName, oldEdge.toNodeName) : oldEdge.toNodeName,
                    attributes: clone(oldEdge.attributes),
                    visible: oldEdge.visible
                }
                const equalEdgeItem = edges.get(`${edge.fromNodeName}|${edge.toNodeName}`)
 
                if (equalEdgeItem !== undefined) {
                    for (const key of Object.keys(edge.attributes)) {
                        equalEdgeItem.attributes[key] = edge.attributes[key]
                    }
                } else {
                    edges.set(`${edge.fromNodeName}|${edge.toNodeName}`, edge)
                }
            }
        }
    }
    return [...edges.values()]
}