Quintiq file version 2.0 #parent: #root Method AdjustTrees ( output owning shadow[SCVConfiguration] scvConfig ) id:Method_FormSupplyChainVisualization_AdjustTrees { #keys: '[132894.0.984127057]' Body: [* // Adjust trees position, this is the last step of populate Y position // If downstream tree taller, we adjust upstream tree, vice versa root := select( scvConfig, SCVNode, node, node.IsRoot() ); // To adjust the tree Y position, we pre-compute the root node position // from upstream and downstream, whoever is at the higher position, needs // to adjust its side lower this.AdjustNodeYPos( &scvConfig, root, true /*isupstream*/ ); upStreamY := root.Y(); this.AdjustNodeYPos( &scvConfig, root, false /*isupstream*/ ); downStreamY := root.Y(); offset := upStreamY - downStreamY; isupstream := false; // If upStream is higher, move it down // vice versa if( offset < 0 ) { isupstream := true; } // Adjust the whole side of the tree traverse( scvConfig, SCVNode, node, node.IsUpstream() = isupstream ) { node.Y( node.Y() + abs( offset ) ); } root.Y( ifexpr( offset < 0, downStreamY, upStreamY ) ); *] }