| /** | 
|  * @file          Transition Types Form | 
|  * @author        Jayden Chew (jayden.chew@3ds.com) | 
|  */ | 
| import { QContextMenu } from '../../e2elib/lib/api/pageobjects/qcontextmenu.component'; | 
| import { Form } from '../../e2elib/lib/src/pageobjects/form.component'; | 
| import { ListRow } from '../../e2elib/lib/src/pageobjects/list/listrow.component'; | 
| import { ListBase } from '../../libappbase/listbase'; | 
| import { ActionTriggerType } from '../../libappbase/utils'; | 
| import { AppMP } from '../appmp'; | 
| import { DialogCreateEditTransitionType } from '../dialogs/dialog.transitiontype'; | 
|   | 
| export class FormTransitionTypes extends Form { | 
|   public listTransitionType = new ListTransitionType(); | 
|   | 
|   public constructor() { | 
|     super('FormTransitionTypes'); | 
|   } | 
| } | 
|   | 
| export class ListTransitionType extends ListBase { | 
|   private readonly _cmMenu = new QContextMenu('listContextMenuTransitionType'); | 
|   private readonly _dlgTransitionType = new DialogCreateEditTransitionType(); | 
|   | 
|   public constructor() { | 
|     super('ListTransitionType'); | 
|   } | 
|   /** | 
|    * To open Transition Type dialog via context menu or action bar page to "Create" or "Edit" (if pass-in tsdRow) | 
|    * | 
|    * @param via Open the dialog via button or context menu. | 
|    * @param transitionTypeRow [Optional] Target Transition Type row to be edited. | 
|    * @returns Transition Type dialog | 
|    */ | 
|   public async openTransitionTypeDialog(via: ActionTriggerType, transitionTypeRow?: ListRow): Promise<DialogCreateEditTransitionType> { | 
|     switch (via) { | 
|       case ActionTriggerType.Button: | 
|         await this.focus(); | 
|         if (transitionTypeRow) { | 
|           await transitionTypeRow.leftClick(); | 
|           await AppMP.getInstance().abpData.btnEdit.click(); | 
|         } else { | 
|           await AppMP.getInstance().abpData.btnCreate.click(); | 
|         } | 
|         break; | 
|       case ActionTriggerType.ContextMenu: | 
|         if (transitionTypeRow) { | 
|           await transitionTypeRow.rightClick(undefined, this._cmMenu, ListTransitionTypeContextMenuItem.Edit); | 
|         } else { | 
|           await this.rightClick(undefined, this._cmMenu, ListTransitionTypeContextMenuItem.Create); | 
|         } | 
|         break; | 
|       default: | 
|         break; | 
|     } | 
|     await this._dlgTransitionType.waitForScreenUpdate(); | 
|     return this._dlgTransitionType; | 
|   } | 
|   | 
|   /** | 
|    * Delete pass-in Transition Type row via "Delete" context menu | 
|    * | 
|    * @param via Open the dialog via button or context menu. | 
|    * @param transitionTypeRows Target unit Transition Type row(s) to be delete | 
|    */ | 
|   public async deleteTransitionType(via: ActionTriggerType, campaignTypeRows: ListRow[]): Promise<void> { | 
|     let modifiers: { control: true } | undefined; | 
|     await this.focus(); | 
|     for (const [index, row] of campaignTypeRows.entries()) { | 
|       modifiers = index !== 0 ? { control: true } : undefined; | 
|       await row.leftClick(modifiers); | 
|     } | 
|   | 
|     switch (via) { | 
|       case ActionTriggerType.Button: | 
|         await AppMP.getInstance().abpData.btnDelete.click(); | 
|         break; | 
|   | 
|       case ActionTriggerType.ContextMenu: | 
|         const lastrowindex = campaignTypeRows.length - 1; | 
|         await campaignTypeRows[lastrowindex].rightClick(undefined, this._cmMenu, ListTransitionTypeContextMenuItem.Delete); | 
|         break; | 
|       default: | 
|         break; | 
|     } | 
|   } | 
| } | 
|   | 
| export enum ListTransitionTypeColumn { | 
|   Unit = 'Unit', | 
|   Name = 'Name', | 
|   FromCampaign = 'From campaign', | 
|   ToCampaign = 'To campaign', | 
| } | 
|   | 
| export enum ListTransitionTypeContextMenuItem { | 
|   Create = 'MenuCreate', | 
|   Edit = 'MenuEdit', | 
|   Delete = 'MenuDelete', | 
| } |