import { DialogSOP } from '../../libappsop/dialogsop';
|
import { DropDownListSOP } from '../../libappsop/dropdownlistsop';
|
import { DropDownStringListSOP } from '../../libappsop/dropdownstringlistsop';
|
import { EditFieldSOP } from '../../libappsop/editfieldsop';
|
|
export interface DialogAccountFields {
|
Name?: string;
|
ParentAccountName?: string;
|
AccountType?: string;
|
ReportType?: string;
|
Budget?: string;
|
CostDriver?: string;
|
Cost?: string;
|
TimeUnit?: string;
|
LengthOfTime?: string;
|
}
|
|
export class DialogAccount extends DialogSOP<DialogAccountFields> {
|
public static readonly title = 'Accounts';
|
|
public ddlParentAccount = new DropDownListSOP('DropDownListParentAccount');
|
public efName = new EditFieldSOP('EditFieldName');
|
public ddlAccountType = new DropDownListSOP('DropDownListAccountType');
|
public efReportType = new EditFieldSOP('EditFieldReportType');
|
public efBudget = new EditFieldSOP('EditFieldBudget');
|
public ddlCostDriver = new DropDownStringListSOP('DropDownStringListDefaultCostDriver');
|
public efCost = new EditFieldSOP('EditFieldCost');
|
public ddlTimeUnit = new DropDownStringListSOP('DropDownStringListTimeUnit');
|
public efLengthOfTime = new EditFieldSOP('EditFieldLengthOfTime');
|
|
public constructor() {
|
super('DialogCreateEditAccountStructure');
|
|
// Set UI element mapping to pair the UI name to the UI element for use in DialogSOP to find the UI object to set value or verify value
|
// This prevents each new Dialog to duplicate code just to set/verify UI element value
|
this._uiMap.set('Name', this.efName);
|
this._uiMap.set('ParentAccountName', this.ddlParentAccount);
|
this._uiMap.set('AccountType', this.ddlAccountType);
|
this._uiMap.set('ReportType', this.efReportType);
|
this._uiMap.set('Budget', this.efBudget);
|
this._uiMap.set('CostDriver', this.ddlCostDriver);
|
this._uiMap.set('Cost', this.efCost);
|
this._uiMap.set('TimeUnit', this.ddlTimeUnit);
|
this._uiMap.set('LengthOfTime', this.efLengthOfTime);
|
}
|
|
public async createEditAccount(name?: string, costDriver?: string, cost?: string, timeUnit?: string, lengthOfTime?: string): Promise<boolean> {
|
if (name && !(await this.efName.isDisabled())) {
|
await this.efName.sendInput(name);
|
}
|
|
if (costDriver && (await this.ddlCostDriver.getSelectedString()) !== costDriver) {
|
await this.ddlCostDriver.selectItem(costDriver);
|
}
|
|
// Wait until the Cost field is present which will appear only after selecting Cost Driver
|
if (cost) {
|
await this.efCost.waitUntilPresent();
|
await this.efCost.sendInput(cost);
|
}
|
|
if (timeUnit && (await this.ddlTimeUnit.isVisible())) {
|
await this.ddlTimeUnit.selectItem(timeUnit);
|
}
|
if (lengthOfTime) {
|
await this.efLengthOfTime.sendInput(lengthOfTime);
|
}
|
|
return this.clickOK();
|
}
|
|
/**
|
* Get precondition feedback text on the OK button
|
*
|
* @returns Precondition feedback text in string
|
*/
|
public async getOKButtonTooltip(): Promise<string> {
|
return this.btnOk.getTooltip();
|
}
|
}
|