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 ) );
|
*]
|
}
|