| Quintiq file version 2.0 | 
| #parent: #root | 
| Method CalculateKpiRanks ( | 
|   shadow[KpiSnapshotSetData] data, | 
|   structured[KpiMetaData] metadatas | 
| ) id:Method_GlobalStateKpiTracker_CalculateKpiRanks | 
| { | 
|   #keys: '[146874.0.1589191442]' | 
|   Body: | 
|   [* | 
|     // Sets the IsBest/IsWorst attributes on the KpiValueData objects that are populating the Matrix and list. | 
|      | 
|     // Traverse through all the fetched KPIs and set the whole thing once. | 
|     traverse( metadatas, Elements, kpi ) | 
|     { | 
|       // only perform this routine if the kpi is max or min (not if it's a counter) | 
|       if ( kpi.IsMaximize() or kpi.IsMinimize() ) | 
|       { | 
|         values := selectset( data, SnapshotData.Value, val, | 
|                              val.Name() = kpi.Name() ); | 
|      | 
|      | 
|         multiplier := ifexpr( kpi.IsMaximize(), 1, -1 ) | 
|         bestvalue  := max( values, Elements, val, true, val.Value() * multiplier ) * multiplier; | 
|         worstvalue := min( values, Elements, val, true, val.Value() * multiplier ) * multiplier; | 
|         traverse( values, Elements, val ) | 
|         { | 
|           val.UI_IsBest( val.Value() = bestvalue ); | 
|           val.UI_IsWorst( val.Value() = worstvalue ); | 
|         } | 
|       } | 
|     } | 
|   *] | 
| } |