import { Form } from '../../e2elib/lib/src/pageobjects/form.component'; 
 | 
import { DialogCurrency } from '../dialogs/dialog.currency'; 
 | 
import { ListSOP } from '../../libappsop/listsop'; 
 | 
  
 | 
/** 
 | 
 * Currency form. 
 | 
 */ 
 | 
export class FormCurrency extends Form { 
 | 
  public listCurrency = new ListCurrency(); 
 | 
  
 | 
  public constructor() { 
 | 
    super('FormCurrency'); 
 | 
  } 
 | 
} 
 | 
  
 | 
/** 
 | 
 * Currency list in Currency form. 
 | 
 */ 
 | 
class ListCurrency extends ListSOP<DialogCurrency, ListCurrencyColumn> { 
 | 
  public constructor() { 
 | 
    super('ListCurrency', new DialogCurrency()); 
 | 
  
 | 
    // Set primary key column name(s), to display in error message when assert fails 
 | 
    this.rowPrimaryColumnNames = {Name: ''}; 
 | 
  } 
 | 
  
 | 
  /** 
 | 
   * Verify first row is base currency (bold text for Name column) while the other rows are non-bold. 
 | 
   * 
 | 
   * @param baseCurrency Base currency name to verify the first row. 
 | 
   */ 
 | 
  public async verifyFirstRowBaseCurrency(baseCurrency: string): Promise<void> { 
 | 
    const totalRows = await this.getRowCount(); 
 | 
    for (let x = 0; x < totalRows; x++) { 
 | 
      const row = await this.getRowByIndex(x); 
 | 
      // Verify 1st row is the base currency and bold 
 | 
      if (x === 0) { 
 | 
        await this.verifyRowValues(row, {Name: baseCurrency}); 
 | 
        await this.verifyRowCellBold(row, {Name: 'true'}); 
 | 
      } else { 
 | 
        // Non-base currency is NOT bold 
 | 
        await this.verifyRowCellBold(row, {Name: 'false'}); 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
} 
 | 
  
 | 
export interface ListCurrencyColumn { 
 | 
  Name?: string; 
 | 
  Base?: string; // Image attribute to indicate if base currency 
 | 
} 
 | 
  
 | 
const listCurrencyContextMenuItem = { 
 | 
  Create: { ContextMenu: 'listContextMenuCurrency', Name: 'MenuCreate', Label: 'Create' }, 
 | 
  Delete: { ContextMenu: 'listContextMenuCurrency', Name: 'MenuDelete', Label: 'Delete' }, 
 | 
  SetAsBase: { ContextMenu: 'listContextMenuCurrency', Name: 'MenuSetAsBase', Label: 'Set as base' }, 
 | 
}; 
 | 
  
 | 
export { listCurrencyContextMenuItem as ListCurrencyContextMenuItem }; 
 | 
  
 | 
/** 
 | 
 * Disabled context menu tooltip. 
 | 
 */ 
 | 
export const menuDisabledTooltip = { 
 | 
  // Partial prefix indicates precondition defined partially thus use partial match when verifying. 
 | 
  currencyIsDefault: (): string => 'Base currencies are used to determine the value of other currencies and cannot be deleted.', 
 | 
  currencyInUse: (currencyName: string): string => `Currency ${currencyName} is in use.`, 
 | 
}; 
 |