| Quintiq file version 2.0 | 
| #parent: #root | 
| Method FilterDataOnSelectedLabels ( | 
|   Boolean isLabelFilteringEnabled, | 
|   structured[KpiLabelValue] selectedLabels | 
| ) as String id:Method_Kpi_GlobalState_FilterDataOnSelectedLabels | 
| { | 
|   #keys: '[146874.0.1589145116]' | 
|   Body: | 
|   [* | 
|     // Sets/unsets the filter on the snapshots based on the selection in the label filter. | 
|     filter := ""; | 
|      | 
|     if( isLabelFilteringEnabled ) | 
|     { | 
|       filters := construct( structured[String] ); | 
|      | 
|       traverse( selectedLabels, Elements.Label, label ) | 
|       { | 
|         values := construct( structured[String] ); | 
|         traverse( label, Value, value, | 
|                   exists( selectedLabels, 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; | 
|   *] | 
| } |