Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method CalculateKpiRanks ( 
 | 
  shadow[KpiSnapshotSetData] snapshotSetData, 
 | 
  structured[KpiMetaData] metadatas 
 | 
) id:Method_Kpi_GlobalState_CalculateKpiRanks 
 | 
{ 
 | 
  #keys: '[146874.0.1590402520]' 
 | 
  Body: 
 | 
  [* 
 | 
    // Sets the IsBest/IsWorst attributes on the KpiValueData objects that are populating the Matrix and list. 
 | 
     
 | 
    data := snapshotSetData; 
 | 
     
 | 
    // 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 ); 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  *] 
 | 
} 
 |