import { ActionBarPage } from '../../e2elib/lib/src/pageobjects/actionbarpage.component'; 
 | 
import { ButtonSOP } from '../../libappsop/buttonsop'; 
 | 
import { DialogOptimizer } from '../dialogs/dialog.optimizer'; 
 | 
import { FormOptimizerPuzzles } from '../forms/form.optimizerpuzzles'; 
 | 
  
 | 
export class ActionBarPageScenarioSelection extends ActionBarPage { 
 | 
  // Buttons 
 | 
  public btnRunOptimizer = new ButtonSOP('ButtonOptimizer', 'ContextMenuOptimizerFunctions'); 
 | 
  
 | 
  // Right docked forms 
 | 
  public formOptimizerPuzzles = new FormOptimizerPuzzles(); 
 | 
  
 | 
  // Dialog for optimizer 
 | 
  public dlgOptimizer = new DialogOptimizer(); 
 | 
  
 | 
  public constructor() { 
 | 
    super('ActionBarPageScenarioSelection'); 
 | 
  } 
 | 
  
 | 
  /** 
 | 
   * Clicks on Optimizer button to display run dialog. 
 | 
   * 
 | 
   * @returns Dialog for optimizer. 
 | 
   */ 
 | 
  public async clickOptimizerButton(): Promise<DialogOptimizer> { 
 | 
    await this.btnRunOptimizer.click(); 
 | 
    await this.dlgOptimizer.waitUntilPresent(); 
 | 
  
 | 
    return this.dlgOptimizer; 
 | 
  } 
 | 
  
 | 
  /** 
 | 
   * To verify is optimizer completed after pass-in wait time 
 | 
   * 
 | 
   * @param optimizerWaitTime miliseconds of how long it should wait for optimizer to be complete 
 | 
   */ 
 | 
  public async verifyIsOptimizerCompleted(optimizerWaitTime: number): Promise<boolean> { 
 | 
    // first to check whether btnRunOptimizer icon is change to GEAR_STOP 
 | 
    await this.btnRunOptimizer.waitForScreenUpdate(); 
 | 
    let btnIcon = await this.btnRunOptimizer.getButtonIcon(); 
 | 
    let result = btnIcon === ButtonRunOptimizerIcon.Stop; 
 | 
    // If btnRunOptimizer icon is changed, then wait for sometimes and check again whether btnRunOptimizer icon is change to GEAR_PLAY 
 | 
    if (result) { 
 | 
      await this.btnRunOptimizer.waitForScreenUpdate(optimizerWaitTime); 
 | 
      btnIcon = await this.btnRunOptimizer.getButtonIcon(); 
 | 
      result = btnIcon === ButtonRunOptimizerIcon.Play; 
 | 
    } 
 | 
    return result; 
 | 
  } 
 | 
  
 | 
  /** 
 | 
   * Toggle show right docked Optimizer Puzzles form by clicking sub-menu of Optimizer button. 
 | 
   * 
 | 
   * @param show True to show, False to hide. 
 | 
   */ 
 | 
  public async toggleOptimizerPuzzles(show: boolean): Promise<void> { 
 | 
    if (show !== (await this.formOptimizerPuzzles.isOpen())) { 
 | 
      await this.btnRunOptimizer.clickDropdownAndSelectMenu(optimizerButtonContextMenuItem.OptimizerPuzzles.Name); 
 | 
    } 
 | 
  } 
 | 
} 
 | 
  
 | 
export enum ButtonRunOptimizerIcon { 
 | 
  Stop = 'GEAR_STOP', 
 | 
  Play = 'GEAR_RUN', 
 | 
} 
 | 
  
 | 
const optimizerButtonContextMenuItem = { 
 | 
  OptimizerStrategies: { ContextMenu: 'ContextMenuOptimizerFunctions', Name: 'MenuOptimizerStrategies', Label: 'Optimizer Strategies' }, 
 | 
  OptimizerPuzzles: { ContextMenu: 'ContextMenuOptimizerFunctions', Name: 'MenuOptimizerPuzzles', Label: 'Optimizer Puzzles' }, 
 | 
}; 
 | 
  
 | 
export { optimizerButtonContextMenuItem as OptimizerButtonContextMenuItem }; 
 | 
  
 | 
const stepActionBarScenarioSelection = { 
 | 
  clickOptimizerButton: (): string => 'In the action bar page, click on the Optimizer button to bring up optimizer run dialog.', 
 | 
  toggleOptimizerPuzzles: (show: boolean): string => `${show ? 'Show' : 'Hide'} right docked Optimizer Puzzles by clicking Top right > Optimizer > Optimizer Puzzles.`, 
 | 
  verifyIsOptimizerCompleted: (): string => 'Wait for the optimizer to complete (optimizer button icon should not have the red stop sign).', 
 | 
}; 
 | 
  
 | 
export { stepActionBarScenarioSelection as StepActionBarScenarioSelection }; 
 |