Quintiq file version 2.0
#parent: #root
Method RefreshUIIsLastAttribute (
  shadow[KpiSnapshotSetData] queryResult,
  KpiLabel series,
  Boolean isLastSnapshotChecked,
  structured[KpiMetaData] metadatas
) id:Method_Kpi_GlobalState_RefreshUIIsLastAttribute
{
  #keys: '[146874.0.1589144606]'
  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( selectset( queryResult, SnapshotData.Value, v, v.UI_IsLast() ), Elements, val )
    {
      val.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 ) )
    {
      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 )
          }
        }
      }
    }
  *]
}
