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 { DialogOperationCost } from '../dialogs/dialog.operationcost'; 
 | 
import { CheckboxBase } from '../../libappbase/checkboxbase'; 
 | 
import { QContextMenu } from '../../e2elib/lib/api/pageobjects/qcontextmenu.component'; 
 | 
  
 | 
export class FormOperationCost extends Form { 
 | 
  public cbFilterByAccounts = new CheckboxBase('cbFilterByAccounts'); 
 | 
  public listOperationCost = new ListOperationCost(); 
 | 
  
 | 
  public constructor() { 
 | 
    super('FormOperationCosts'); 
 | 
  } 
 | 
  
 | 
  /** 
 | 
   * To pass-in boolean to toggle on FilterByAccount checbox 
 | 
   * 
 | 
   * @param toBeToggleOn boolean to toggle on or off check box (false | true) 
 | 
   */ 
 | 
  public async toggleFilterByAccount(toBeToggleOn: boolean): Promise<void> { 
 | 
    const cbStatus = await this.cbFilterByAccounts.isChecked(); 
 | 
    if (cbStatus !== toBeToggleOn) { 
 | 
      await this.cbFilterByAccounts.click(); 
 | 
    } 
 | 
  } 
 | 
} 
 | 
  
 | 
export class ListOperationCost extends ListBase { 
 | 
  private readonly _cmMenu = new QContextMenu('lsContextMenuAccCosts'); 
 | 
  public dlgOperationCost = new DialogOperationCost(); 
 | 
  
 | 
  public constructor() { 
 | 
    super('lsAccountCosts'); 
 | 
  } 
 | 
  
 | 
  public async getOperationCostRowCount(): Promise<number> { 
 | 
    return this.getRowCount(); 
 | 
  } 
 | 
  
 | 
  public async getAllOperationCostRows(): Promise<ListRow[]> { 
 | 
    return this.getAllRows(); 
 | 
  } 
 | 
  
 | 
  /** 
 | 
   * To verify is all pass-in operation cost rows is matched with expected values 
 | 
   * 
 | 
   * @param rowsToMatchValues OperationCost rows that need to satisfy expected values 
 | 
   * @param expectedValues A string array that store a list of string values that need to be matched 
 | 
   * @param errMsg Error message if there is any row does not match expected values 
 | 
   */ 
 | 
  public async verifyAllRowsSatisfyColumnValuesByUnit(rowsToMatchValues: ListRow[], expectedValues: string[]): Promise<boolean> { 
 | 
    return this.rowHasValidValue( 
 | 
      rowsToMatchValues, 
 | 
      'Unit', 
 | 
      expectedValues, 
 | 
    ); 
 | 
  } 
 | 
  
 | 
  /** 
 | 
   * Open create edit operation cost dialog in the list 
 | 
   * 
 | 
   * @param row Row of operation cost to edit, create dialog will be triggered if this is undefined 
 | 
   * @param isCopy Indicate to open the dialog for copy or edit, defaulted to false (edit) 
 | 
   */ 
 | 
  public async openCreateEditUnitCostDialog(row?: ListRow, isCopy: boolean = false): Promise<void> { 
 | 
    if (row !== undefined) { 
 | 
      if (isCopy) { 
 | 
        await row.rightClick(undefined, this._cmMenu, 'MenuCopy'); 
 | 
      } else { 
 | 
        await row.rightClick(undefined, this._cmMenu, 'MenuEdit'); 
 | 
      } 
 | 
    } else { 
 | 
      await this.rightClick(undefined, this._cmMenu, 'MenuCreate'); 
 | 
    } 
 | 
    await this.dlgOperationCost.waitUntilPresent(); 
 | 
  } 
 | 
} 
 | 
  
 | 
export enum ListColumnOperationCost { 
 | 
  Unit = 'Unit', 
 | 
  Operation = 'Operation', 
 | 
  Account = 'Account', 
 | 
  CostDriver = 'Cost driver', 
 | 
  Cost = 'Cost', 
 | 
  UoM = 'UoM', 
 | 
  Start = 'Start', 
 | 
  End = 'End', 
 | 
} 
 |