陈清红
2025-04-14 880f3c0257eeb8c37761d484258fdd102a369a19
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
51
52
53
Quintiq file version 2.0
#parent: #root
Method GenerateInstances () id:Method_FormKPIChart_GenerateInstances
{
  #keys: '[145136.0.62364416]'
  Body:
  [*
    owner := DataHolderOwner.Data();
    if ( not isnull( owner ) ) // happens sometimes the first time the form is loaded. Might be because this is created before the DataHolderShadowChartKPI is created;
    {
      owner.UIChartKPI( relflush );
      traverse( DataHolderKPIS.Data(), Elements, kpi )
      {
        datetimes := RealVector::Construct( kpi.DateTime() );
        vector := RealVector::Construct( kpi.Values() );
    
        for ( x:=0; x < datetimes.Size(); x++ )
        {
          value := vector.Get( x );
    
          owner.UIChartKPI( relnew , 
                            X := Duration::Minutes( datetimes.Get( x ) ), 
                            Y := value, 
                            Name := [String] kpi.BTS().RunNr() );
        }
      }
      
      all_targets := selectset( DataHolderKPIS.Data(), Elements.TargetKPI, target, true );
      min_x := min( owner, UIChartKPI, kpi, true, kpi.X() );
      max_x := max( owner, UIChartKPI, kpi, true, kpi.X() );
      target_values := selectuniquevalues( all_targets, Elements, target, true, target.Value() );
      traverse( target_values, Elements, target_value )
      {
        targets := selectset( all_targets, Elements, target, target.Value() = target_value );
        name := '';
        if( target_values.Size() > 1 )
        {
          name := selectvalues( DataHolderKPIS.Data(), Elements, kpi, targets.Find( kpi.TargetKPI() ) >= 0, kpi.BTS().RunNr() ).Sort().ToString( ', ' );    
        }
        owner.UIChartKPI( relnew ,
                      X := min_x,
                      Y := target_value,
                      Name := name,
                      Group := 'Target' );
        owner.UIChartKPI( relnew ,
                      X := max_x,
                      Y := target_value,
                      Name := name,
                      Group := 'Target' );
      }
    }
  *]
}