/**
|
* @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',
|
}
|