lazhen
2025-01-09 8afe90b633046db39042aada36b88193062f8cff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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 );
  *]
}