import { DateTimeSelectorSOP } from '../../libappsop/datetimeselectorsop'; 
 | 
import { DialogSOP } from '../../libappsop/dialogsop'; 
 | 
import { DropDownListSOP } from '../../libappsop/dropdownlistsop'; 
 | 
import { EditFieldSOP } from '../../libappsop/editfieldsop'; 
 | 
  
 | 
export interface DialogFulfillmentTargetFields { 
 | 
  Name?: string; 
 | 
  SalesSegment?: string; 
 | 
  Product?: string; 
 | 
  StockingPoint?: string; 
 | 
  Start?: string; 
 | 
  End?: string; 
 | 
  TargetPercentage?: string; 
 | 
} 
 | 
  
 | 
/** 
 | 
 * Create/edit fulfillment target dialog. 
 | 
 */ 
 | 
export class DialogFulfillmentTarget extends DialogSOP<DialogFulfillmentTargetFields> { 
 | 
  public readonly efName = new EditFieldSOP('EditFieldName'); 
 | 
  public readonly ddlSalesSegment = new DropDownListSOP('DropDownListSalesSegment'); 
 | 
  public readonly ddlProduct = new DropDownListSOP('DropDownListProduct'); 
 | 
  public readonly ddlStockingPoint = new DropDownListSOP('DropDownListStockingPoint'); 
 | 
  public readonly dtsStart = new DateTimeSelectorSOP('DateSelectorStart'); 
 | 
  public readonly dtsEnd = new DateTimeSelectorSOP('DateSelectorEnd'); 
 | 
  public readonly efTargetPercentage = new EditFieldSOP('EditFieldTargetPercentage'); 
 | 
  
 | 
  public constructor() { 
 | 
    super('DialogCreateEditFulfillmentTarget'); 
 | 
  
 | 
    // 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('SalesSegment', this.ddlSalesSegment); 
 | 
    this._uiMap.set('Product', this.ddlProduct); 
 | 
    this._uiMap.set('StockingPoint', this.ddlStockingPoint); 
 | 
    this._uiMap.set('Start', this.dtsStart); 
 | 
    this._uiMap.set('End', this.dtsEnd); 
 | 
    this._uiMap.set('TargetPercentage', this.efTargetPercentage); 
 | 
  } 
 | 
} 
 | 
  
 | 
/** 
 | 
 * Expected tooltip for OK button when disabled. 
 | 
 */ 
 | 
export const okButtonDisabledTooltip = { 
 | 
  // Partial prefix indicates precondition defined partially thus use partial match when verifying. 
 | 
  partialMustHaveName: (): string => 'Fulfillment target must have a name.', 
 | 
  partialMustLargerZero: (target: string): string => `Target percentage (${target}) must be larger than 0 and smaller than or equal to 100.`, 
 | 
  partialMustUnique: (): string => 'Fulfillment target must be unique by product, stocking point, salessegment, start and end.', 
 | 
}; 
 |