| import { DialogSOP } from '../../libappsop/dialogsop'; | 
| import { DateTimeSelectorSOP } from '../../libappsop/datetimeselectorsop'; | 
| import { EditFieldSOP } from '../../libappsop/editfieldsop'; | 
| import { LabelSOP } from '../../libappsop/labelsop'; | 
| import { DropDownListSOP } from '../../libappsop/dropdownlistsop'; | 
|   | 
| export interface DialogCurrencyRateFields { | 
|   Currency?: string; | 
|   Start?: string; | 
|   Rate?: string; | 
|   RateLabel?: string; | 
| } | 
|   | 
| /** | 
|  * Currency rate dialog. | 
|  */ | 
| export class DialogCurrencyRate extends DialogSOP<DialogCurrencyRateFields> { | 
|   private readonly _ddlCurrency = new DropDownListSOP('DropDownListCurrency'); | 
|   private readonly _dtsStart = new DateTimeSelectorSOP('dsStart'); | 
|   private readonly _efRate = new EditFieldSOP('EditFieldRate'); | 
|   private readonly _labelRate = new LabelSOP('LabelRate'); | 
|   | 
|   public constructor() { | 
|     super('DialogCreateEditCurrencyRate'); | 
|   | 
|     // 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('Currency', this._ddlCurrency); | 
|     this._uiMap.set('Start', this._dtsStart); | 
|     this._uiMap.set('Rate', this._efRate); | 
|     this._uiMap.set('RateLabel', this._labelRate); | 
|   } | 
|   | 
|   /** | 
|    * Gets the currency rate label text by specifying the default and source currency. | 
|    * | 
|    * @param defautltCurrency Base currency. | 
|    * @param sourceCurrency Source currency against base currency. | 
|    * @returns Currency rate in the form '<defautltCurrency> to 1 <sourceCurrency>' | 
|    */ | 
|   public getLabelRateFormat(defautltCurrency: string, sourceCurrency: string): string { | 
|     return `${defautltCurrency} to 1 ${sourceCurrency}`; | 
|   } | 
| } | 
|   | 
| /** | 
|  * Expected tooltip for OK button when disabled. | 
|  */ | 
| export const okButtonDisabledTooltip = { | 
|   // Partial prefix indicates precondition defined partially thus use partial match when verifying. | 
|   partialRateMustGreaterZero: (rate: string): string => `Rate (${rate}) must be greater than 0.`, | 
|   partialRateMustUnique: (): string => 'Currency rate must be unique by currency and start.', | 
| }; |