| Quintiq file version 2.0 | 
| #parent: #root | 
| Method RefreshData () id:Method_FormKpiMatrix_RefreshData | 
| { | 
|   #keys: '[146450.0.591381725]' | 
|   Body: | 
|   [* | 
|     // Queries the Kpi Tracker for the Kpi compare data | 
|     compareLabel := DataHolderKpiLabel.Data(); | 
|     compareLabels := selectset( DataHolderSelectedCompareLabelValues.Data(), Elements, val, | 
|                                 val.Label() = compareLabel ); | 
|      | 
|     fixedLabels := selectset( DataHolderSelectedFilterLabelValues.Data(), Elements, val, | 
|                               val.Label() <> compareLabel ); | 
|      | 
|     set := GlobalStateKpiTracker.QueryDataFromServer( compareLabels, fixedLabels ); | 
|      | 
|     GlobalStateKpiTracker.PropagateLabel( set, compareLabel.Name() ); | 
|     GlobalStateKpiTracker.PropagateTimeStamp( set, RadioButtonGroupSelectionList.BoundValue() ); | 
|      | 
|     //Remove duplicate values and set relations | 
|     uniquesetdatavalues := construct( Strings ) | 
|     sortedsetsnapshots := selectsortedset( set, SnapshotData, snapshot, true, DateTime::Now() - snapshot.ServerDateTime() ) | 
|      | 
|     traverse( sortedsetsnapshots, Elements, snapshot ) | 
|     {                                                | 
|       traverse( snapshot, Value, datavalue ) | 
|       { | 
|         uniquestring := datavalue.Name() + ";" + datavalue.UI_LabelValue() | 
|         if( exists( uniquesetdatavalues, Elements, value, value = uniquestring ) ) | 
|         { //remove older duplicate    | 
|           datavalue.Delete(); | 
|         }                     | 
|         else | 
|         {                       | 
|           uniquesetdatavalues.Add( uniquestring) | 
|         } | 
|       } | 
|     }  | 
|      | 
|     // Set relations | 
|     traverse( set, SnapshotData.Value, v ) | 
|     { | 
|       v.UI_CompareLabel( relset, select( compareLabels, Elements, s, s.Value() = v.UI_LabelValue() ) ); | 
|       v.UI_Kpi( relset, select( KpiTracker, MetaData, k, k.Name() = v.Name() ) ); | 
|     } | 
|      | 
|     DataHolderSnapshotData.Data( &set ); | 
|   *] | 
| } |