Quintiq file version 2.0 
 | 
#parent: ListIssue 
 | 
Response OnClick ( 
 | 
  structured[LibOpt_Issue] selection 
 | 
) id:Response_ListIssue_MenuSelectRelatedIterationsAndSnapshots_OnClick 
 | 
{ 
 | 
  #keys: '[142652.0.1967257548]' 
 | 
  Body: 
 | 
  [* 
 | 
    // Select the Iterations in ListIteration and Snapshots in ListSnapshot for the Issues selected here. 
 | 
     
 | 
    listiteration := LibOpt_GlobalState.GetActivatedFormIteration().ListIteration(); 
 | 
     
 | 
    // See comment about WORKAROUND below. 
 | 
    formsnapshot := LibOpt_GlobalState.GetActivatedFormSnapshot(); 
 | 
    listsnapshot := formsnapshot.ListSnapshot(); 
 | 
     
 | 
    formscopeelement := LibOpt_GlobalState.GetActivatedFormScopeElement(); 
 | 
     
 | 
    // Select the related Iterations and Snapshots. 
 | 
    traverse( selection, Elements, issue ) 
 | 
    { 
 | 
      // Select Iterations. 
 | 
      traverse( issue.Statistic().GetIterations( issue ), Elements, iteration ) 
 | 
      { 
 | 
        listiteration.ExtendSelectByKey( iteration.Key() ); 
 | 
      } 
 | 
       
 | 
      // Select Snapshots. 
 | 
      traverse( issue.Statistic().GetSnapshots( issue ), Elements, snapshot ) 
 | 
      { 
 | 
        listsnapshot.ExtendSelectByKey( snapshot.Key() ); 
 | 
      } 
 | 
    } 
 | 
     
 | 
     
 | 
    /*  WORKAROUND: 
 | 
         
 | 
        Even though we have called the `GetActivatedFormSnapshot` method above, LibOpt_FormSnapshot doesn't 
 | 
        get activated accordingly because the method is called right after `GetActivatedFormIteration`, 
 | 
        where LibOpt_FormIteration is activated. 
 | 
        This is a known software limitation (that is yet to be solved) as documented in: 
 | 
        - https://support.quintiq.com/cs:solutions:trouble:form.activate_doesn_t_work_for_second_form 
 | 
         
 | 
        As such, we use a workaround where we activate LibOpt_FormSnapshot in the `OnTimer` response of the 
 | 
        GUITimerActivateFormSnapshot component, which `Interval` has been set to 500ms. 
 | 
        - 500ms was used because lower values don't result in the intended behavior of activating the form. 
 | 
    */ 
 | 
    // Enable the GUITimerActivateFormSnapshot component. 
 | 
    // When the timer's Interval is used up, LibOpt_FormSnapshot is activated, and the timer is disabled. 
 | 
    formsnapshot.GUITimerActivateFormSnapshot().Enabled( true ); 
 | 
     
 | 
    interval := formsnapshot.GUITimerActivateFormSnapshot().Interval(); 
 | 
    formscopeelement.GUITimerActivateFormScopeElement().Interval( 2 * interval ); 
 | 
    formscopeelement.GUITimerActivateFormScopeElement().Enabled( true ); 
 | 
  *] 
 | 
  DefinitionID => /ListIssue/Responsedef_ListIssue_Menu_OnClick 
 | 
  Initiator: 'MenuSelectRelatedIterationsAndSnapshots' 
 | 
  Precondition: 
 | 
  [* 
 | 
    return LibOpt_Issue::SelectRelatedIterationsAndSnapshotsPrecondition( selection ); 
 | 
  *] 
 | 
} 
 |