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