Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method FilterDataOnSelectedLabels ( 
 | 
  shadow[KpiSnapshotSetData] queryResult, 
 | 
  structured[KpiLabelValue] labelFilters, 
 | 
  Boolean isLabelFilteringEnabled 
 | 
) as String id:Method_GlobalStateKpiTracker_FilterDataOnSelectedLabels 
 | 
{ 
 | 
  #keys: '[146874.0.1589192311]' 
 | 
  Body: 
 | 
  [* 
 | 
    // Copies the source data from DataHolderSnapshotSetData to DataHolderLabelFilterdSnapshots 
 | 
    // while filtering based on the selected Labels. 
 | 
    filter := ""; 
 | 
     
 | 
    if ( not isnull( queryResult ) ) 
 | 
    {   
 | 
      if ( isLabelFilteringEnabled ) 
 | 
      { 
 | 
        filters := construct( Strings ); 
 | 
         
 | 
        traverse( labelFilters, Elements.Label, label ) 
 | 
        { 
 | 
          values := construct( Strings ); 
 | 
          traverse( label, Value, value, 
 | 
                    exists( labelFilters, Elements, selected, selected = value ) ) 
 | 
          { 
 | 
            values.Add( 'exists( object, Label, l, l.Name() = "' 
 | 
                        + label.Name() 
 | 
                        + '" and l.Value() = "' 
 | 
                        + value.Value() 
 | 
                        + '") ' ); 
 | 
          } 
 | 
          filters.Add( '(' + values.ToString( ' or ' ) + ')' ); 
 | 
        } 
 | 
        filter := filters.ToString( ' and ' ); 
 | 
        debuginfo( ' >>> Generated Label filter = ', filter ); 
 | 
      } 
 | 
    } 
 | 
     
 | 
    return filter; 
 | 
  *] 
 | 
} 
 |