| Quintiq file version 2.0 | 
| #parent: #root | 
| Method ApplyConfigurationQuery ( | 
|   KpiQuery kpiQuery | 
| ) id:Method_Kpi_frmKpiMatrix_ApplyConfigurationQuery | 
| { | 
|   #keys: '[146874.0.1463046408]' | 
|   Body: | 
|   [* | 
|     // Applies the configuration query from a KpiQuery to radio button groups, List, and selector. | 
|     selKpiCompareLabel.BoundValue( kpiQuery.SeriesSelection() ); | 
|     rbgTimeType.BoundValue( kpiQuery.Timetype() ); | 
|      | 
|     // Expand all so the selection (in collapsed list) will be recorded in DataHolder | 
|     lstKpiLabelFilter.ExpandAll(); | 
|      | 
|     // Clear selection in list | 
|     lstKpiLabelCompare.SelectByKey( Key::ZeroKey() ); | 
|     lstKpiLabelFilter.SelectByKey( Key::ZeroKey() ); | 
|      | 
|     compareLabels := construct( KpiLabelValues ); | 
|     fixedLabels   := construct( KpiLabelValues ); | 
|     traverse( kpiQuery.LabelFilters().Tokenize( "," ), Elements, lv ) | 
|     { | 
|       label := select( KpiTracker, Label.Value, labelvalue, labelvalue.Value() = lv ); | 
|       if ( not isnull( label ) ) | 
|       { | 
|         if( label.Label() = selKpiCompareLabel.Data() ) | 
|         { | 
|           lstKpiLabelCompare.ExtendSelectByKey( label.Key() ); | 
|           compareLabels.Add( label ); | 
|         } | 
|         else | 
|         { | 
|           lstKpiLabelFilter.ExtendSelectByKey( label.Key() ); | 
|           fixedLabels.Add( label ); | 
|         } | 
|       } | 
|     } | 
|      | 
|     lstFilterKpis.SelectByKey( Key::ZeroKey() ); | 
|      | 
|     traverse( kpiQuery.MetaDatas().Tokenize( "," ), Elements, md ) | 
|     { | 
|       metadata := select( KpiTracker, MetaData, metadata, metadata.DisplayName() = md ); | 
|       if ( not isnull( metadata ) ) | 
|       { | 
|         lstFilterKpis.ExtendSelectByKey( metadata.Key() ); | 
|       } | 
|     } | 
|      | 
|      | 
|     // Refresh data - Queries the KPI Tracker for the KPI compare data | 
|     // Do this because the DataHolder has independency on drop down selector and is not reflect the changes immediately. | 
|     compareLabel := selKpiCompareLabel.Data(); | 
|      | 
|     data := KpiTracker.SnapshotRetrieval().GetLastSnapshotsForCompareLabelWithLabelFilterNvt( compareLabels, fixedLabels ); | 
|      | 
|     set := Kpi_GlobalState.ConvertNvtToShadowSnapshotSetData( data ); | 
|     Kpi_GlobalState.PropagateLabel( set, compareLabel.Name() ); | 
|     Kpi_GlobalState.PropagateTimeStamp( set, rbgTimeType.BoundValue() ); | 
|                              | 
|     // 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() ) ); | 
|     }   | 
|       | 
|     dhSnapshotData.Data( &set ); | 
|   *] | 
| } |