Quintiq file version 2.0 #parent: #root Method CreateSCVEdge ( output owning shadow[SCVConfiguration] scvConfig, shadow[SCVNode] owner, shadow[SCVNode] inputnode, Boolean isupstream, Process_MP process ) as shadow[SCVEdge] id:Method_FormSupplyChainVisualization_CreateSCVEdge { #keys: '[132894.0.863091930]' Body: [* // Create SCVEdge // Retrieve the quantity that should be displayed on the edge // The concept of edge building is: // The edges are owned by the node // that has more edges, so that // the node doesn't have to remember // that many keys, but only one key, which is the key // of the single edge that points to the node scvedge := owner.SCVEdge( relnew, IsUpstream := isupstream, DestinationKey := inputnode.Key().AsQUILL(), OriginKey := owner.Key().AsQUILL() ); // Append destination nodes keys to scvedge // We need to store the node as key because all these are shadow // and in shadow objects, only the owner has acess to the children // The children DON'T have access to their owner, since edge doesn't // own node, the only way for edge to find its nodes is to remember // their keys inputnode.OwnerNodeKey( owner.Key().AsQUILL() ); inputnode.Depth( owner.Depth() + 1 ); owner.IsUpstream( isupstream ); inputnode.IsUpstream( isupstream ); // Update the depth of the tree, better to update the max depth here // rather than after we have created all the nodes depth := 0; if( isupstream ) { depth := maxvalue( inputnode.Depth(), scvConfig.UpstreamDepth() ) scvConfig.UpstreamDepth( depth ); } else { depth := maxvalue( inputnode.Depth(), scvConfig.DownstreamDepth() ) scvConfig.DownstreamDepth( depth ); } return scvedge; *] }