Quintiq file version 2.0
#parent: #root
Method RefreshUIIsLastAttribute (
  shadow[KpiSnapshotSetData] queryResult,
  KpiLabel series,
  structured[KpiMetaData] metadatas,
  Boolean isLastSnapshotChecked
) id:Method_GlobalStateKpiTracker_RefreshUIIsLastAttribute
{
  #keys: '[146874.0.1589192524]'
  Body:
  [*
    // Updates the UI_IsLast attribute of the KpiValues to match the selected series / kpi.
    // Call this method after updating the 'UI_LabelValue' attribute.
    
    // First clean previously set flags.
    traverse( queryResult, SnapshotData.Value, v, v.UI_IsLast() )
    {
      v.UI_IsLast( false );
    }
    
    // Now, if the checkbox is checked and a Series has been selected,
    // determine which KpiValue objects represent the LAST snapshot of their
    // KPI & LabelValue of the selected Series (= Label)
    if( isLastSnapshotChecked and not isnull( series ) and not isnull( queryResult ) )
    {
      traverse( series, Value, serieValue )
      {
        traverse( metadatas, Elements, kpi )
        {
            lastValue := maxselect( queryResult, SnapshotData.Value, v,
                                    v.UI_LabelValue() = serieValue.Value() and
                                    v.Name() = kpi.Name(),
                                    v.UI_DateTime() );
            if( not isnull( lastValue ) )
            {
              lastValue.UI_IsLast( true );
            }
    
    
        }
      }
    }
  *]
}
