From b140f34dbd954864ee247a3f94dbd52d094a9940 Mon Sep 17 00:00:00 2001 From: Derek Finlinson Date: Fri, 24 Feb 2017 13:18:26 -0700 Subject: [PATCH 1/7] Add setVisible to iFrame control --- xrm/index.d.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/xrm/index.d.ts b/xrm/index.d.ts index 02bce0468e..67c5a8e778 100644 --- a/xrm/index.d.ts +++ b/xrm/index.d.ts @@ -1188,6 +1188,19 @@ declare namespace Xrm getVisible(): boolean; } + /** + * Interface for UI elements which can have the visibility value updated. + */ + export interface UiCanSetVisibleElement + { + /** + * Sets the visibility state. + * + * @param {boolean} visible true to show, false to hide. + */ + setVisible( visible: boolean ): void; + } + /** * Base interface for standard UI elements. */ @@ -2522,7 +2535,7 @@ declare namespace Xrm * * @sa FramedControl */ - export interface IframeControl extends FramedControl + export interface IframeControl extends FramedControl, UiCanSetVisibleElement { /** * Gets initial URL defined for the Iframe. From 43f6ea36af3785eec1c048cce96d7ee59e20ff1d Mon Sep 17 00:00:00 2001 From: Derek Finlinson Date: Thu, 14 Sep 2017 09:55:57 -0600 Subject: [PATCH 2/7] Remove moved file --- xrm/index.d.ts | 3279 ------------------------------------------------ 1 file changed, 3279 deletions(-) delete mode 100644 xrm/index.d.ts diff --git a/xrm/index.d.ts b/xrm/index.d.ts deleted file mode 100644 index 67c5a8e778..0000000000 --- a/xrm/index.d.ts +++ /dev/null @@ -1,3279 +0,0 @@ -// Type definitions for Microsoft Dynamics xRM API 8.2 -// Project: http://www.microsoft.com/en-us/download/details.aspx?id=44567 -// Definitions by: David Berry -// Matt Ngan -// Markus Mauch -// Daryl LaBar -// Tully H -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.1 - -declare var Xrm: Xrm.XrmStatic; -declare function GetGlobalContext(): Xrm.Context; - -interface Window -{ - Xrm: Xrm.XrmStatic; - GetGlobalContext(): Xrm.Context; -} - -declare namespace Xrm -{ - /** - * Static xRM object. - */ - export interface XrmStatic - { - /** - * Provides a namespace container for the context, data and ui objects. - */ - Page: { - /** - * Provides methods to retrieve information specific to an organization, a user, or parameters passed to a page. - */ - context: Context; - - /** - * Provides methods to work with the form. - */ - data: Data; - - /** - * Contains properties and methods to retrieve information about the user interface as well as collections for several subcomponents of the form. - */ - ui: Ui; - - /** - * Gets all attributes. - * - * @return An array of attributes. - */ - getAttribute(): Page.Attribute[]; - - /** - * Gets an attribute matching attributeName. - * - * @tparam T An Attribute type. - * @param {string} attributeName Name of the attribute. - * - * @return The attribute. - */ - getAttribute( attributeName: string ): T; - - /** - * Gets an attribute matching attributeName. - * - * @param {string} attributeName Name of the attribute. - * - * @return The attribute. - */ - getAttribute( attributeName: string ): Page.Attribute; - - /** - * Gets an attribute by index. - * - * @param {number} index The attribute index. - * - * @return The attribute. - */ - getAttribute( index: number ): Page.Attribute; - - /** - * Gets an attribute. - * - * @param {Collection.MatchingDelegate{Attribute}} delegateFunction A matching delegate function - * - * @return An array of attribute. - */ - getAttribute( delegateFunction: Collection.MatchingDelegate ): Page.Attribute[]; - - /** - * Gets all controls. - * - * @return An array of controls. - */ - getControl(): Page.Control[]; - - /** - * Gets a control matching controlName. - * - * @tparam T A Control type - * @param {string} controlName Name of the control. - * - * @return The control. - */ - getControl( controlName: string ): T; - - /** - * Gets a control matching controlName. - * - * @param {string} controlName Name of the control. - * - * @return The control. - */ - getControl( controlName: string ): Page.Control; - - /** - * Gets a control by index. - * - * @tparam T A Control type - * @param {number} index The control index. - * - * @return The control. - */ - getControl( index: number ): T; - - /** - * Gets a control by index. - * - * @param {number} index The control index. - * - * @return The control. - */ - getControl( index: number ): Page.Control; - - /** - * Gets a control. - * - * @param {Collection.MatchingDelegate{Control}} delegateFunction A matching delegate function. - * - * @return An array of control. - */ - getControl( delegateFunction: Collection.MatchingDelegate ): Page.Control[]; - }; - - /** - * Provides a container for useful functions not directly related to the current page. - */ - Utility: { - /** - * Displays an alert dialog, with an "OK" button. - * - * @param {string} message The message. - * @param {function()} onCloseCallback The "OK" callback. - */ - alertDialog( message: string, onCloseCallback: () => void ): void; - - /** - * Displays a confirmation dialog, with "OK" and "Cancel" buttons. - * - * @param {string} message The message. - * @param {function()} yesCloseCallback The "OK" callback. - * @param {function()} noCloseCallback The "Cancel" callback. - */ - confirmDialog( message: string, yesCloseCallback: () => void, noCloseCallback: () => void ): void; - - /** - * Query if 'entityType' is an Activity entity. - * - * @param {string} entityType Type of the entity. - * - * @return true if the entity is an Activity, false if not. - */ - isActivityType( entityType: string ): boolean; - - /** - * Opens quick create. - * - * @param {string} entityLogicalName The logical name of the entity to create. - * @param {Page.LookupValue} createFromEntity (Optional) Designates a record that will provide default values - * based on mapped attribute values. - * @param {OpenParameters} parameters (Optional) A dictionary object that passes extra query string - * parameters to the form. Invalid query string parameters will cause an - * error. - * @return {Async.XrmPromise} Returns an asynchronous promise. - */ - openQuickCreate( entityLogicalName: string, createFromEntity?: Page.LookupValue, parameters?: Utility.OpenParameters ): - Async.XrmPromise; - - /** - * Opens an entity form. - * - * @param {string} name The entity's logical name. - * @param {string} id (Optional) The unique identifier for the record. - * @param {FormParameters} parameters (Optional) A dictionary object that passes extra query string parameters to the form. - * @param {WindowOptions} windowOptions (Optional) Options for controlling the window. - */ - openEntityForm( name: string, id?: string, parameters?: Utility.FormOpenParameters, windowOptions?: Utility.WindowOptions ): void; - - /** - * Opens an HTML Web Resource in a new browser window. - * - * @param {string} webResourceName Name of the HTML web resource. Can be used to pass URL - * parameters. See Remarks. - * @param {string} webResourceData (Optional) Data to pass into the Web Resource's data parameter. - * It is advised to use encodeURIcomponent() to encode the value. - * @param {number} width (Optional) The width of the new window. - * @param {number} height (Optional) The height of the new window. - * - * @return A Window reference, containing the opened Web Resource. - * - * @remarks This function will not work with Microsoft Dynamics CRM for tablets. - * Valid WebResource URL Parameters: typename - * type - * id - * orgname - * userlcid - * data (identical to this method's webResourceData parameter) - * formid - */ - openWebResource( webResourceName: string, webResourceData?: string, width?: number, height?: number ): Window; - }; - - /** - * Provides methods to create and manage records in the mobile clients (for phones tablets). - */ - Mobile: Mobile; - - /** - * Provides methods to display a web page in the side pane of web client. - * - * @see {@link https://msdn.microsoft.com/en-us/library/mt790281.aspx} for details. - */ - Panel: { - /** - * Displays the web page represented by a URL in the static area in the side pane, which appears on all pages in the web client. - * - * @param {string} url URL of the page to be loaded in the side pane static area. - * @param {string} url Title of the side pane static area. - * - * @remarks This method is only supported for the web client. - */ - LoadPanel(url: string, title: string): void; - }; - } - - /** - * Client Types for Xrm.Page.context.getClient(). - */ - export type Client = "Web" | "Outlook" | "Mobile"; - - /** - * Client States for Xrm.Page.context.getClientState(). - */ - export type ClientState = "Online" | "Offline"; - - /** - * Themes for Xrm.Page.context.getCurrentTheme(). - */ - export type Theme = "default" | "Office12Blue" | "Office14Silver"; - - /** - * Interface for the client context. - */ - export interface ClientContext - { - /** - * Returns a value to indicate which client the script is executing in. - * - * @return The client, as either "Web", "Outlook", or "Mobile" - */ - getClient(): Client; - - /** - * Gets client's current state. - * - * @return The client state, as either "Online" or "Offline" - */ - getClientState(): ClientState; - } - - /** - * Interface for the xRM application context. - */ - export interface Context - { - /** - * The client's context instance. - */ - client: ClientContext; - - /** - * Gets client's base URL for Dynamics CRM - * - * @return The client's base URL - * - * @remarks For Dynamics CRM On-Premises: http(s)://server/org - * For Dynamics CRM Online: https://org.crm.dynamics.com - * For Dynamics CRM for Outlook (Offline): http://localhost:2525 - */ - getClientUrl(): string; - - /** - * Gets current styling theme. - * - * @return The name of the current theme, as either "default", "Office12Blue", or "Office14Silver" - * - * @remarks This function does not work with Dynamics CRM for tablets. - */ - getCurrentTheme(): Theme; - - /** - * Gets whether automatic save is enabled. - * - * @return true if automatic saving is enabled, otherwise false. - */ - getIsAutoSaveEnabled(): boolean; - - /** - * Gets organization's LCID (language code). - * - * @return The organization language code. - * - * @see {@link http://msdn.microsoft.com/en-us/library/ms912047(WinEmbedded.10).aspx|Microsoft Locale ID Values} - */ - getOrgLcid(): number; - - /** - * Gets organization's unique name. - * - * @return The organization's unique name. - * - * @remarks This value can be found on the Developer Resources page within Dynamics CRM - */ - getOrgUniqueName(): string; - - /** - * Gets query string parameters. - * - * @return The query string parameters, in a dictionary object representing name and value pairs. - */ - getQueryStringParameters(): { [index: string]: any }; - - /** - * Returns the difference between the local time and Coordinated Universal Time (UTC). - * - * @return The time zone offset, in minutes. - */ - getTimeZoneOffsetMinutes(): number; - - /** - * Gets user's unique identifier. - * - * @return The user's identifier in Guid format. - * - * @remarks Example: "{B05EC7CE-5D51-DF11-97E0-00155DB232D0}" - */ - getUserId(): string; - - /** - * Gets user's LCID (language code). - * - * @return The user's language code. - * - * @see {@link http://msdn.microsoft.com/en-us/library/ms912047(WinEmbedded.10).aspx|Microsoft Locale ID Values} - */ - getUserLcid(): number; - - /** - * Gets the name of the current user. - * - * @return The user's name. - */ - getUserName(): string; - - /** - * Gets all user security roles. - * - * @return An array of user role identifiers, in Guid format. - * - * @remarks Example: ["cf4cc7ce-5d51-df11-97e0-00155db232d0"] - */ - getUserRoles(): string[]; - - /** - * Prefixes the current organization's unique name to a string; typically a URL path. - * - * @param {string} sPath Local pathname of the resource. - * - * @return A path string with the organization name. - * - * @remarks Format: "/"+ OrgName + sPath - */ - prependOrgName( sPath: string ): string; - } - - /** - * Defines save options to control how appointment, recurring appointment, or service activity records are processed. - * - * @see {@link https://msdn.microsoft.com/en-us/library/dn481607.aspx#Anchor_2} for details. - */ - export interface SaveOptions - { - /** - * Indicates whether to use the Book or Reschedule messages rather than the Create or Update messages. - * Applicable to appointment, recurring appointment, or service activity records. - */ - UseSchedulingEngine?: boolean; - } - - /** - * Interface for the Xrm.Page.data object. - */ - export interface Data - { - /** - * Asynchronously refreshes data on the form, without reloading the page. - * - * @param {boolean} save true to save the record, after the refresh. - * - * @return {Async.XrmPromise} Returns an asynchronous promise. - */ - refresh( save: boolean ): Async.XrmPromise; - - /** - * Asynchronously saves the record. - * - * @return {Async.XrmPromise} Returns an asynchronous promise. - */ - save(): Async.XrmPromise; - - /** - * Asynchronously saves the record with the option to set callback functions to be executed after the save operation is completed. - * - * @param {saveOptions} saveOptions Options to control how appointment, recurring appointment, or service activity records are processed. - * - * @return {Async.XrmPromise} Returns an asynchronous promise. - */ - save( saveOptions: SaveOptions ): Async.XrmPromise; - - /** - * The record context of the form. - */ - entity: Page.Entity; - - /** - * The process API for Xrm.Page.data. - * - * @remarks This member may be undefined when Process Flows are not used by the current entity. - */ - process: Page.data.ProcessManager; - } - - /** - * Interface for the Xrm.Page.ui object. - */ - export interface Ui - { - /** - * Displays a form level notification. Any number of notifications can be displayed and will remain until removed using clearFormNotification. - * The height of the notification area is limited so each new message will be added to the top. - * - * @param {string} message The text of the notification message. - * @param {Page.ui.FormNotificationLevel} level The level of the notification which defines how the message will be displayed, such as the icon. - * @param {string} uniqueId Unique identifier for the notification which is used with clearFormNotification to remove the notification. - * - * @return true if it succeeds, otherwise false. - * - * @remarks Values for level are: ERROR Notification will use the system error icon. - * WARNING Notification will use the system warning icon. - * INFO Notification will use the system info icon. - */ - setFormNotification( message: string, level: Page.ui.FormNotificationLevel, uniqueId: string ): boolean; - - /** - * Clears the form notification described by uniqueId. - * - * @param {string} uniqueId Unique identifier. - * - * @return True if it succeeds, otherwise false. - */ - clearFormNotification( uniqueId: string ): boolean; - - /** - * Closes the form. - */ - close(): void; - - /** - * Gets form type. - * - * @return The form type. - * - * @remarks Values returned are: 0 Undefined - * 1 Create - * 2 Update - * 3 Read Only - * 4 Disabled - * 6 Bulk Edit - * Deprecated values are 5 (Quick Create), and 11 (Read Optimized) - */ - getFormType(): XrmEnum.FormType; - - /** - * Gets view port height. - * - * @return The view port height, in pixels. - * - * @remarks This method does not work with Microsoft Dynamics CRM for tablets. - */ - getViewPortHeight(): number; - - /** - * Gets view port width. - * - * @return The view port width, in pixels. - * - * @remarks This method does not work with Microsoft Dynamics CRM for tablets. - */ - getViewPortWidth(): number; - - /** - * Re-evaluates the ribbon's configured EnableRules. - * - * @remarks This method does not work with Microsoft Dynamics CRM for tablets. - */ - refreshRibbon(): void; - - /** - * The business process flow API, used to interact with the business process flow control in a form. - */ - process: Page.ui.ProcessManager; - - /** - * A reference to the collection of controls on the form. - */ - controls: Collection.ItemCollection; - - /** - * The form selector API. - * - * @remarks This API does not exist with Microsoft Dynamics CRM for tablets. - */ - formSelector: Page.FormSelector; - - /** - * The navigation API. - * - * @remarks This API does not exist with Microsoft Dynamics CRM for tablets. - */ - navigation: Page.Navigation; - - /** - * A reference to the collection of tabs on the form. - */ - tabs: Collection.ItemCollection; - - /** - * A collection of all the quick view controls on a form using the new form rendering engine (also called "turbo forms"). - */ - quickForms: Collection.ItemCollection; - } - - /** - * Interface for methods to create and manage records in the mobile clients (for phones tablets). - */ - export interface Mobile - { - /** - * Provides methods to create and manage records in the mobile clients while working in the offline mode. - * - * @see {@link https://msdn.microsoft.com/en-us/library/mt787123.aspx} for details. - */ - offline: MobileOffline; - } - - /** - * Interface for the Mobile.offline methods to create and manage records in the mobile clients while working in the offline mode. - * - * @see {@link https://msdn.microsoft.com/en-us/library/mt787123.aspx} for details. - */ - export interface MobileOffline - { - /** - * Returns whether an entity is offline enabled. - * - * @param {string} entityType The logical name of the entity. - * - * @return {boolean} True if the entity is offline enabled; otherwise False. - */ - isOfflineEnabled( entityType: string ): boolean; - - /** - * Creates an entity record in mobile clients while working in the offline mode. - * - * @param {string} entityType The logical name of the entity. - * @param {Object} data A dictionary object containing key : value pairs for the record to create. - * - * @return {Async.XrmPromise} Returns an asynchronous promise. - * - * @remarks You cannot create intersect and activity party entities. - * Only the following attribute types are supported in offline mode: - * BigInt, Boolean, Customer, DateTime, Decimal, Double, EntityName - * Integer, Lookup, Memo, Money, Owner, Picklist, String, State - * Status, UniqueIdentifier - */ - createRecord( entityType: string, data: { [attributeName: string]: any } ): Async.XrmPromise; - - /** - * Retrieves an entity record in mobile clients while working in the offline mode. - * - * @param {string} entityType The logical name of the entity. - * @param {string} id GUID of the record to retrieve. - * @param {string} options (Optional) OData system query options to retrieve your data. Supports $select and $expand - * Example: ?$select=name&$expand=primarycontactid($select=contactid,fullname) - * - * @return {Async.XrmPromise} Returns an asynchronous promise. - * - * @remarks Only $select option can be specified within $expand. - * Only the following attribute types are supported in offline mode: - * BigInt, Boolean, Customer, DateTime, Decimal, Double, EntityName - * Integer, Lookup, Memo, Money, Owner, Picklist, String, State - * Status, UniqueIdentifier - */ - retrieveRecord( entityType: string, id: string, options: string ): Async.XrmPromise; - - /** - * Retrieves a collection of entity records in mobile clients while working in the offline mode. - * - * @param {string} entityType The logical name of the entity. - * @param {string} options (Optional) The logical name of the enti - * @param {string} maxPageSize (Optional) A positive number to indicates the number of entity records to be returned per page. - * If you do not specify this parameter, the default value is passed as 5000. - * If the number of records being retrieved is more than maxPageSize, an @odata.nextLink property - * will be returned, and you can use the value of the @odata.nextLink property with a new GET - * request to return next set of records. - * - * @return {Async.XrmPromise} Returns an asynchronous promise. - * - * @remarks A maximum of 5000 related records can be retrieved when using $expand. - * Only $select option can be specified within $expand. - * $skip query option is not supported. - * Only the following attribute types are supported in offline mode: - * BigInt, Boolean, Customer, DateTime, Decimal, Double, EntityName - * Integer, Lookup, Memo, Money, Owner, Picklist, String, State - * Status, UniqueIdentifier - */ - retrieveMultipleRecords( entityType: string, options: string, maxPageSize: number ): Async.XrmPromise; - - /** - * Updates an entity record in mobile clients while working in the offline mode. - * - * @param {string} entityType The logical name of the entity. - * @param {string} id GUID of the record to update. - * @param {Object} data A dictionary object containing key : value pairs for the record to update. - * - * @return {Async.XrmPromise} Returns an asynchronous promise. - * - * @remarks You cannot update intersect and activity party entities. - * Only the following attribute types are supported in offline mode: - * BigInt, Boolean, Customer, DateTime, Decimal, Double, EntityName - * Integer, Lookup, Memo, Money, Owner, Picklist, String, State - * Status, UniqueIdentifier - */ - updateRecord( entityType: string, id: string, data: { [attributeName: string]: any } ): Async.XrmPromise; - - /** - * Deletes an entity record in mobile clients while working in the offline mode. - * - * @param {string} entityType The logical name of the entity. - * @param {string} id GUID of the record to delete. - * - * @return {Async.XrmPromise} Returns an asynchronous promise. - * - * @remarks You cannot delete intersect and activity party entities. - */ - deleteRecord( entityType: string, id: string ): Async.XrmPromise; - } - - /** - * A definition module for asynchronous interface declarations. - */ - export module Async - { - /** - * Called when the operation is successful. - */ - export type SuccessCallbackDelegate = () => void; - - /** - * Called when the operation fails. - * - * @param {ErrorCallbackObject} error The error object. - */ - export type ErrorCallbackDelegate = ( error: ErrorCallbackObject ) => void; - - /** - * Called when the Xrm.Utility.openQuickCreate operation is successful and a new record has been created. - * - * @param {OpenQuickCreateSuccessCallbackObject} record An object which contains a lookup value which identifies the record which has been created. - * - * @see {Xrm.Utility.openQuickCreate} - */ - export type QuickCreateSuccessCallbackDelegate = ( record: OpenQuickCreateSuccessCallbackObject ) => void; - - /** - * Called when the offline operation is successful. - * - * @param {OfflineOperationSuccessCallbackObject} record The record returned from the operation. - * - * @see {Xrm.Mobile.offline} - */ - export type OfflineOperationSuccessCallbackDelegate = ( record: OfflineOperationSuccessCallbackObject ) => void; - - /** - * Called when the offline retrieve multiple operation is successful. - * - * @param {OfflineRetrieveMultipleSuccessCallbackDelegate} resultSet The dictionary of records retrieved from the operation. - * - * @see {Xrm.Mobile.offline.retrieveMultipleRecords} - */ - export type OfflineRetrieveMultipleSuccessCallbackDelegate = (resultSet: Array<{ [key: string]: any }>) => void; - - /** - * Called when the operation fails. - * - * @param {OfflineErrorCallbackObject} error The error object. - * - * @see {Xrm.Mobile.offline} - */ - export type OfflineErrorCallbackDelegate = (error: OfflineErrorCallbackObject) => void; - - /** - * Object passed to ErrorCallbackDelegate. - */ - export interface ErrorCallbackObject - { - /** - * The error code. - */ - errorCode: number; - - /** - * An error message describing the issue. - */ - message: string; - } - - /** - * Object passed to QuickCreateSuccessCallbackDelegate. - */ - export interface OpenQuickCreateSuccessCallbackObject - { - /** - * A lookup value which identifies the record which has been created. - */ - savedEntityReference: Page.LookupValue; - } - - /** - * Object passed to OfflineOperationSuccessCallbackDelegate; - */ - export interface OfflineOperationSuccessCallbackObject - { - /** - * GUID of the record; - */ - id: string; - - /** - * Logical name of the entity. - */ - logicalName: string; - } - - /** - * Object passed to OfflineErrorCallbackDelegate. - */ - export interface OfflineErrorCallbackObject extends ErrorCallbackObject - { - /** - * An internal error message that might contain additional details about the issue. - */ - debugMessage: string; - } - - /** - * Interface for asynchronous promises used in Xrm.Page.data and Xrm.Utility.openQuickCreate. - * - * @tparam TSuccessCallback Generic success callback parameter. - * @tparam TErrorCallback Generic error callback parameter. - */ - export interface XrmPromise - { - /** - * A basic 'then' promise. - * - * @param {SuccessCallbackDelegate} successCallback The success callback. - * @param {ErrorCallbackDelegate} errorCallback The error callback. - */ - then( successCallback: TSuccessCallback, errorCallback: TErrorCallback ): void; - } - } - - /** - * A definition module for collection interface declarations. - */ - export module Collection - { - /** - * Interface for a matching delegate. - * - * @tparam T Generic type parameter. - */ - export interface MatchingDelegate - { - /** - * Called for each item in an array - * - * @param {T} item The item. - * @param {number} index Zero-based index of the item array. - * - * @return true if the item matches, false if it does not. - */ - ( item: T, index?: number ): boolean; - } - - /** - * Interface for iterative delegate. - * - * @tparam T Generic type parameter. - */ - export interface IterativeDelegate - { - /** - * Called for each item in an array - * - * @param {T} item The item. - * @param {number} index Zero-based index of the item array. - */ - ( item: T, index?: number ): void; - } - - /** - * Interface for an item collection. - * - * @tparam T Generic type parameter. - */ - export interface ItemCollection - { - /** - * Applies an operation to all items in this collection. - * - * @param {IterativeDelegate{T}} delegate An iterative delegate function - */ - forEach( delegate: IterativeDelegate ): void; - - /** - * Gets. - * - * @param {MatchingDelegate{T}} delegate A matching delegate function - * - * @return A T[] whose members have been validated by delegate. - */ - get( delegate: MatchingDelegate ): T[]; - - /** - * Gets the item given by the index. - * - * @param {number} itemNumber The item number to get. - * - * @return The T in the itemNumber-th place. - */ - get( itemNumber: number ): T; - - /** - * Gets the item given by the key. - * - * @param {string} itemName The item name to get. - * - * @return The T matching the key itemName. - * - * @see {@link Xrm.Page.Control.getName()} for Control-naming schemes. - */ - get( itemName: string ): T; - - /** - * Gets the entire array of T. - * - * @return A T[]. - */ - get(): T[]; - - /** - * Gets the length of the collection. - * - * @return The length. - */ - getLength(): number; - } - } - - /** - * The Xrm.Page API - * - * @see {@link http://msdn.microsoft.com/en-us/library/gg328255.aspx|Documentation} for details. - */ - export module Page - { - /** - * Requirement Level for Xrm.Page.Attribute.getRequiredLevel() and Xrm.Page.Attribute.setRequiredLevel(). - */ - export type RequirementLevel = "none" | "recommended" | "required"; - - /** - * Save Modes for Xrm.Page.Entity.save(). - */ - export type SaveMode = "saveandclose" | "saveandnew"; - - /** - * Status for Xrm.Page.Stage.getStatus(). - */ - export type Status = "active" | "inactive"; - - /** - * Submit Mode for Xrm.Page.Attribute.getSubmitMode() and Xrm.Page.Attribute.setSubmitMode(). - */ - export type SubmitMode = "always" | "dirty" | "never"; - - /** - * Control type for Xrm.Page.ui.QuickForm.getControlType(). - */ - export type ControlQuickFormType = "quickform"; - - /** - * Control types for Xrm.Page.Control.getControlType(). - */ - export type ControlType = "standard" | "iframe" | "lookup" | "optionset" | "subgrid" | "webresource" | "notes" | "timercontrol" | "kbsearch" | ControlQuickFormType; - - /** - * Date attribute formats for Xrm.Page.Attribute.getFormat(), used by DateAttribute. - */ - export type DateAttributeFormat = "date" | "datetime"; - - /** - * Integer attribute formats for Xrm.Page.Attribute.getFormat(), used by NumberAttribute. - */ - export type IntegerAttributeFormat = "duration" | "none"; - - /** - * OptionSet attribute formats for Xrm.Page.Attribute.getFormat(), used by OptionSetAttribute. - */ - export type OptionSetAttributeFormat = "language" | "timezone"; - - /** - * String attribute formats for Xrm.Page.Attribute.getFormat(), used by StringAttribute. - */ - export type StringAttributeFormat = "email" | "phone" | "text" | "textarea" | "tickersymbol" | "url"; - - /** - * Attribute types for Xrm.ui.ProcessMonitor Xrm.Page.Attribute.setDisplayState(). - */ - export type AttributeType = "boolean" | "datetime" | "decimal" | "double" | "integer" | "lookup" | "memo" | "money" | "optionset" | "string"; - - /** - * Attribute formats for Xrm.Page.Attribute.getFormat(). - */ - export type AttributeFormat = DateAttributeFormat | IntegerAttributeFormat | OptionSetAttributeFormat | StringAttributeFormat; - - /** - * Interface for a CRM Business Process Flow instance. - */ - export interface Process - { - /** - * Returns the unique identifier of the process. - * - * @return The identifier for this process, in GUID format. - * - * @remarks Example: "{825CB223-A651-DF11-AA8B-00155DBA3804}". - */ - getId(): string; - - /** - * Returns the name of the process. - * - * @return The name. - */ - getName(): string; - - /** - * Returns an collection of stages in the process. - * - * @return The stages. - */ - getStages(): Collection.ItemCollection; - - /** - * Returns a boolean value to indicate if the process is rendered. - * - * @return true if the process is rendered, false if not. - */ - isRendered(): boolean; - } - - /** - * Interface for CRM Business Process Flow stages. - */ - export interface Stage - { - /** - * Returns an object with a getValue method which will return the integer value of the business process flow - * category. - * - * @return The stage category. - */ - getCategory(): { getValue(): XrmEnum.StageCategory }; - - /** - * Returns the logical name of the entity associated with the stage. - * - * @return The entity name. - */ - getEntityName(): string; - - /** - * Returns the unique identifier of the stage. - * - * @return The identifier of the Stage, in GUID format. - * - * @remarks Example: "{825CB223-A651-DF11-AA8B-00155DBA3804}". - */ - getId(): string; - - /** - * Returns the name of the stage. - * - * @return The name. - */ - getName(): string; - - /** - * Returns the status of the stage. - * - * @return The status. - * - * @remarks This method will return either "active" or "inactive". - */ - getStatus(): Status; - - /** - * Returns a collection of steps in the stage. - * - * @return An array of Step. - */ - getSteps(): Step[]; - } - - export interface Step - { - /** - * Returns the logical name of the attribute associated to the step. - * - * @return The attribute. - * - * @remarks Some steps don’t contain an attribute value. - */ - getAttribute(): string; - - /** - * Returns the name of the step. - * - * @return The name. - */ - getName(): string; - - /** - * Returns whether the step is required in the business process flow. - * - * @return true if required, false if not. - * - * @remarks Returns true if the step is marked as required in the Business Process Flow editor; otherwise, false. - * There is no connection between this value and the values you can change in the Xrm.Page.data.entity - * attribute RequiredLevel methods. - */ - isRequired(): boolean; - } - - /** - * Interface for the event context. - */ - export interface EventContext - { - /** - * Gets the Xrm context. - * - * @return The Xrm context. - */ - getContext(): Context; - - /** - * Gets the handler's depth, which is the order in which the handler is executed. - * - * @return The depth, a 0-based index. - */ - getDepth(): number; - - /** - * Gets save-event arguments. - * - * @return The event arguments. - * - * @remarks Returns null for all but the "save" event. - */ - getEventArgs(): SaveEventArguments; - - /** - * Gets a reference to the object for which event occurred. - * - * @return The event source. - */ - getEventSource(): Attribute | Control | Entity; - - /** - * Gets the shared variable with the specified key. - * - * @tparam T Generic type parameter. - * @param {string} key The key. - * - * @return The shared variable. - * - * @remarks Used to pass values between handlers of an event. - */ - getSharedVariable( key: string ): T; - - /** - * Sets a shared variable. - * - * @tparam T Generic type parameter. - * @param {string} key The key. - * @param {T} value The value. - * - * @remarks Used to pass values between handlers of an event. - */ - setSharedVariable( key: string, value: T ): void; - } - - /** - * Interface for a context-sensitive handler. - */ - export interface ContextSensitiveHandler - { - /** - * @param {EventContext} context The context. - */ - ( context: EventContext ): void; - } - - /** - * Interface for UI elements with labels. - */ - export interface UiLabelElement - { - /** - * Gets the label. - * - * @return The label. - */ - getLabel(): string; - - /** - * Sets the label. - * - * @param {string} label The label. - */ - setLabel( label: string ): void; - } - - /** - * Interface for UI elements which can have the visibility value read. - */ - export interface UiCanGetVisibleElement - { - /** - * Gets the visibility state. - * - * @return true if the tab is visible, otherwise false. - */ - getVisible(): boolean; - } - - /** - * Interface for UI elements which can have the visibility value updated. - */ - export interface UiCanSetVisibleElement - { - /** - * Sets the visibility state. - * - * @param {boolean} visible true to show, false to hide. - */ - setVisible( visible: boolean ): void; - } - - /** - * Base interface for standard UI elements. - */ - export interface UiStandardElement extends UiCanGetVisibleElement, UiLabelElement - { - /** - * Sets the visibility state. - * - * @param {boolean} visible true to show, false to hide. - */ - setVisible( visible: boolean ): void; - } - - /** - * Interface for focusable UI elements. - */ - export interface UiFocusable - { - /** - * Sets focus on the element. - */ - setFocus(): void; - } - - /** - * Interface for controls which methods provide immediate feedback or take actions as user types in a control. - * Contains methods which can be used to perform data validations in a control even before the user commits (saves) the value in a form. - */ - export interface UiKeyPressable - { - /** - * Use this to add a function as an event handler for the keypress event so that the function is called when you type a character in the specific text or number field. - * For a sample JavaScript code that uses the addOnKeyPress method to configure the auto-completion experience, see Sample: Auto-complete in CRM controls. - * - * @param {ContextSensitiveHandler} handler The function reference. - */ - addOnKeyPress( handler: ContextSensitiveHandler ): void; - - /** - * Use this to manually fire an event handler that you created for a specific text or number field to be executed on the keypress event. - */ - fireOnKeyPress(): void; - - /** - * Use this to remove an event handler for a text or number field that you added using addOnKeyPress. - * - * Remarks: If an anonymous function is set using addOnKeyPress, it can’t be removed using this method. - * @param {ContextSensitiveHandler} handler The function reference. - */ - removeOnKeyPress( handler: ContextSensitiveHandler ): void; - } - - /** - * Interface for Result value of AutoCompleteResultSet - */ - export interface AutoCompleteResult - { - /** - * The Identifier - */ - id: string | number; - - /** - * Url of the icon to display - */ - icon?: string; - - /** - * Display value(s) for this auto-complete option - */ - fields: string[]; - } - - /** - * Interface for command of AutoCompleteResultSet. This is displayed at the bottom of the auto complete view - */ - export interface AutoCompleteCommand - { - /** - * The Identifier - */ - id: string; - - /** - * Url of the icon to display - */ - icon?: string; - - /** - * Label to display at the bottom of the auto complete view - */ - label: string; - - /** - * Action to perform when user clicks on label - */ - action(): void; - } - - /** - * Interface for showAutoComplete argument - */ - export interface AutoCompleteResultSet - { - /** - * Results to show - */ - results: AutoCompleteResult[]; - - /** - * Command to show/execute at the bottom of the results displayed - */ - commands?: AutoCompleteCommand; - } - - /** - * Interface for a Lookup value. - */ - export interface LookupValue - { - /** - * The identifier. - */ - id: string; - - /** - * The name - */ - name?: string; - - /** - * Type of the entity. - */ - entityType: string; - } - - /** - * Interface for an OptionSet value. - */ - export interface OptionSetValue - { - /** - * The label text. - */ - text: string; - - /** - * The value, as a number - */ - value: number; - } - - /** - * Interface for a privilege. - */ - export interface Privilege - { - /** - * True if the user can read. - */ - canRead: boolean; - - /** - * True if the user can update. - */ - canUpdate: boolean; - - /** - * True if the user can create. - */ - canCreate: boolean; - } - - /** - * Interface for an Entity attribute. - */ - export interface Attribute - { - /** - * Adds a handler to be called when the attribute's value is changed. - * - * @param {ContextSensitiveHandler} handler The function reference. - */ - addOnChange( handler: ContextSensitiveHandler ): void; - - /** - * Fire all "on change" event handlers. - */ - fireOnChange(): void; - - /** - * Gets attribute type. - * - * @return The attribute's type name. - * - * @remarks Values returned are: boolean - * datetime - * decimal - * double - * integer - * lookup - * memo - * money - * optionset - * string - */ - getAttributeType(): string; - - /** - * Gets the attribute format. - * - * @return The format of the attribute. - * - * @see {@link getAttributeType()} - * - * @remarks Values returned are: date (datetime) - * datetime (datetime) - * duration (integer) - * email (string) - * language (optionset) - * none (integer) - * phone (string) - * text (string) - * textarea (string) - * tickersymbol (string) - * timezone (optionset) - * url (string) - */ - getFormat(): AttributeFormat; - - /** - * Gets a boolean value indicating whether this Attribute has unsaved changes. - * - * @return true if there are unsaved changes, otherwise false. - */ - getIsDirty(): boolean; - - /** - * Gets the logical name of the attribute. - * - * @return The logical name. - */ - getName(): string; - - /** - * Gets a reference to the record context of this attribute. - * - * @return The parent record context. - */ - getParent(): Entity; - - /** - * Gets the current level of requirement for the attribute. - * - * @return The required level, as either "none", "required", or "recommended" - */ - getRequiredLevel(): RequirementLevel; - - /** - * Gets current submit mode for the attribute. - * - * @return The submit mode, as either "always", "never", or "dirty" - * - * @remarks The default value is "dirty" - */ - getSubmitMode(): SubmitMode; - - /** - * Gets the current user's privileges for the attribute. - * - * @return The user privileges. - */ - getUserPrivilege(): Privilege; - - /** - * Removes the handler from the "on change" event. - * - * @param {ContextSensitiveHandler} handler The handler. - */ - removeOnChange( handler: ContextSensitiveHandler ): void; - - /** - * Sets the required level. - * - * @param {string} requirementLevel The requirement level, as either "none", "required", or "recommended" - */ - setRequiredLevel( requirementLevel: RequirementLevel ): void; - - /** - * Sets the submit mode. - * - * @param {string} submitMode The submit mode, as either "always", "never", or "dirty". - * - * @remarks The default value is "dirty" - */ - setSubmitMode( submitMode: SubmitMode ): void; - - /** - * A collection of all the controls on the form that interface with this attribute. - */ - controls: Collection.ItemCollection; - - /** - * Gets the value. - * - * @return The value. - */ - getValue(): any; - - /** - * Sets the value. - * - * @param {any} value The value. - */ - setValue( value: any ): void; - } - - /** - * Interface for a Number attribute. - * - * @sa Attribute - */ - export interface NumberAttribute extends Attribute - { - /** - * Gets the attribute format. - * - * @return The format of the attribute. - * - * @remarks Values returned are: duration - * none - */ - getFormat(): IntegerAttributeFormat; - - /** - * Gets the maximum value allowed. - * - * @return The maximum value allowed. - */ - getMax(): number; - - /** - * Gets the minimum value allowed. - * - * @return The minimum value allowed. - */ - getMin(): number; - - /** - * Gets the attribute's configured precision. - * - * @return The total number of allowed decimal places. - */ - getPrecision(): number; - - /** - * Gets the value. - * - * @return The value. - */ - getValue(): number; - - /** - * Sets the value. - * - * @param {number} value The value. - * - * @remarks Attributes on Quick Create Forms will not save values set with this method. - */ - setValue( value: number ): void; - - /** - * A collection of all the controls on the form that interface with this attribute. - */ - controls: Collection.ItemCollection; - } - - /** - * Interface for a String attribute. - * - * @sa Attribute - */ - export interface StringAttribute extends Attribute - { - /** - * Gets the attribute format. - * - * @return The format of the attribute. - * - * @remarks Values returned are: email - * phone - * text - * textarea - * tickersymbol - * url - */ - getFormat(): StringAttributeFormat; - - /** - * Gets maximum length allowed. - * - * @return The maximum length allowed. - * - * @remarks The email form's "Description" attribute does not have the this method. - */ - getMaxLength(): number; - - /** - * Gets the value. - * - * @return The value. - */ - getValue(): string; - - /** - * Sets the value. - * - * @param {string} value The value. - * - * @remarks A String field with the {@link Attribute.getFormat|email} format enforces email - * address formatting. Attributes on Quick Create Forms will not save values set - * with this method. - */ - setValue( value: string ): void; - - /** - * A collection of all the controls on the form that interface with this attribute. - */ - controls: Collection.ItemCollection; - } - - /** - * Common interface for enumeration attributes (OptionSet and Boolean). - * - * @sa Attribute - */ - export interface EnumAttribute extends Attribute - { - /** - * Gets the initial value of the attribute. - * - * @return The initial value. - * - * @remarks Valid for OptionSet and boolean attribute types - */ - getInitialValue(): number | boolean; - } - - /** - * Interface for a Boolean attribute. - * - * @sa EnumAttribute - */ - export interface BooleanAttribute extends EnumAttribute - { - /** - * Gets the value. - * - * @return true if it succeeds, false if it fails. - */ - getValue(): boolean; - - /** - * Sets the value. - * - * @param {boolean} value The value. - * - * @remarks Attributes on Quick Create Forms will not save values set with this method. - */ - setValue( value: boolean ): void; - } - - /** - * Interface for a Date attribute. - * - * @sa Attribute - */ - export interface DateAttribute extends Attribute - { - /** - * Gets the attribute format. - * - * @return The format of the attribute. - * - * @remarks Values returned are: date - * datetime - */ - getFormat(): DateAttributeFormat; - - /** - * Gets the value. - * - * @return The value. - */ - getValue(): Date; - - /** - * Sets the value. - * - * @param {Date} value The value. - * - * @remarks Attributes on Quick Create Forms will not save values set with this method. - */ - setValue( value: Date ): void; - - /** - * A collection of all the controls on the form that interface with this attribute. - */ - controls: Collection.ItemCollection; - } - - /** - * Interface an OptionSet attribute. - * - * @sa EnumAttribute - */ - export interface OptionSetAttribute extends EnumAttribute - { - /** - * Gets the attribute format. - * - * @return The format of the attribute. - * - * @remarks Values returned are: language - * timezone - */ - getFormat(): OptionSetAttributeFormat; - - /** - * Gets the option matching a value. - * - * @param {number} value The enumeration value of the option desired. - * - * @return The option. - */ - getOption( value: number ): OptionSetValue; - - /** - * Gets the option matching a label. - * - * @param {string} label The label of the option desired. - * - * @return The option. - */ - getOption( label: string ): OptionSetValue; - - /** - * Gets all of the options. - * - * @return An array of options. - */ - getOptions(): OptionSetValue[]; - - /** - * Gets selected option. - * - * @return The selected option. - */ - getSelectedOption(): OptionSetValue; - - /** - * Gets the label of the currently selected option. - * - * @return The current value's label. - */ - getText(): string; - - /** - * Gets the value. - * - * @return The value. - */ - getValue(): number; - - /** - * Sets the value. - * - * @param {number} value The value. - * - * @remarks The getOptions() method returns option values as strings. You must use parseInt - * to convert them to numbers before you can use those values to set the value of an - * OptionSet attribute. Attributes on Quick Create Forms will not save values set - * with this method. - */ - setValue( value: number ): void; - - /** - * A collection of all the controls on the form that interface with this attribute. - */ - controls: Collection.ItemCollection; - } - - /** - * Interface a Lookup attribute. - * - * @sa Attribute - */ - export interface LookupAttribute extends Attribute - { - /** - * Gets a boolean value indicating whether the Lookup is a multi-value PartyList. - * - * @return true the attribute is a PartyList, otherwise false. - */ - getIsPartyList(): boolean; - - /** - * Gets the value. - * - * @return An array of LookupValue. - */ - getValue(): LookupValue[]; - - /** - * Sets the value. - * - * @param {LookupValue[]} value The value. - * - * @remarks Attributes on Quick Create Forms will not save values set with this method. - */ - setValue( value: LookupValue[] ): void; - - /** - * A collection of all the controls on the form that interface with this attribute. - */ - controls: Collection.ItemCollection; - } - - /** - * Interface for the form's record context, Xrm.Page.data.entity - */ - export interface Entity - { - /** - * Adds a handler to be called when the record is saved. - * - * @param {ContextSensitiveHandler} handler The handler. - */ - addOnSave( handler: ContextSensitiveHandler ): void; - - /** - * Gets an serialized-XML string representing data that will be passed to the server upon saving - * the record. - * - * @return The XML in string format. - * - * @remarks This function does not work with Microsoft Dynamics CRM for tablets. Example: - * "Contoso55555425 - * 555-1234". - */ - getDataXml(): string; - - /** - * Gets entity's logical name. - * - * @return The logical name. - */ - getEntityName(): string; - - /** - * Gets the record's unique identifier. - * - * @return The identifier, in Guid format. - * - * @remarks Example: "{825CB223-A651-DF11-AA8B-00155DBA3804}". - */ - getId(): string; - - /** - * Gets a boolean value indicating whether the record has unsaved changes. - * - * @return true if there are unsaved changes, otherwise false. - */ - getIsDirty(): boolean; - - /** - * Gets the record's primary attribute value. - * - * @return The primary attribute value. - * - * @remarks The value for this attribute is used when links to the record are displayed. - */ - getPrimaryAttributeValue(): string; - - /** - * Removes the handler from the "on save" event. - * - * @param {ContextSensitiveHandler} handler The handler. - */ - removeOnSave( handler: ContextSensitiveHandler ): void; - - /** - * Saves the record. - * - * @remarks When using quick create forms in the web application the saveandnew option is not - * applied. It will always work as if saveandclose were used. Quick create forms in - * Microsoft Dynamics CRM for tablets will apply the saveandnew behavior. - */ - save(): void; - - /** - * Saves the record with the given save mode. - * - * @param {string} saveMode (Optional) the save mode to save, as either "saveandclose" or - * "saveandnew". - */ - save( saveMode: SaveMode ): void; - - /** - * The collection of attributes for the record. - */ - attributes: Collection.ItemCollection; - } - - /** - * Interface for save event arguments. - */ - export interface SaveEventArguments - { - /** - * Gets save mode, as an integer. - * - * @return The save mode. - * - * @remarks Values returned are: 1 Save - * 2 Save and Close - * 59 Save and New - * 70 AutoSave (Where enabled; can be used with an OnSave handler - * to conditionally disable auto-saving) - * 58 Save as Completed (Activities) - * 5 Deactivate - * 6 Reactivate - * 47 Assign (All user- or team-owned entities) - * 7 Send (Email) - * 16 Qualify (Lead) - * 15 Disqualify (Lead) - */ - getSaveMode(): XrmEnum.SaveMode; - - /** - * Returns a boolean value to indicate if the record's save has been prevented. - * - * @return true if saving is prevented, otherwise false. - */ - isDefaultPrevented(): boolean; - - /** - * Prevents the save operation from being submitted to the server. - * - * @remarks All remaining "on save" handlers will continue execution. - */ - preventDefault(): void; - } - - /** - * Module for the Xrm.Page.data API. - */ - export module data - { - /** - * Interface for the Xrm.Page.data.process API. - */ - export interface ProcessManager - { - /** - * Returns a Process object representing the active process. - * - * @return current active process. - */ - getActiveProcess(): Process; - - /** - * Set a Process as the active process. - * - * @param {string} processId The Id of the process to make the active process. - * @param {function} callbackFunction (Optional) a function to call when the operation is complete. - */ - setActiveProcess( processId: string, callbackFunction?: ProcessCallbackDelegate ): void; - - /** - * Returns a Stage object representing the active stage. - * - * @return current active stage. - */ - getActiveStage(): Stage; - - /** - * Set a stage as the active stage. - * - * @param {string} stageId the Id of the stage to make the active stage. - * @param {function} callbackFunction (Optional) a function to call when the operation is complete. - */ - setActiveStage( stageId: string, callbackFunction?: ProcessCallbackDelegate ): void; - - /** - * Use this method to get a collection of stages currently in the active path with methods to interact with the - * stages displayed in the business process flow control. The active path represents stages currently rendered in - * the process control based on the branching rules and current data in the record. - * - * @return A collection of all completed stages, the currently active stage, and the predicted set of future stages - * based on satisfied conditions in the branching rule. This may be a subset of the stages returned with - * Xrm.Page.data.process.getActiveProcess because it will only include those stages which represent a valid - * transition from the current stage based on branching that has occurred in the process. - */ - getActivePath(): Collection.ItemCollection; - - /** - * Use this method to asynchronously retrieve the enabled business process flows that the user can switch to for an - * entity. - * - * @param {Function} callbackFunction The callback function must accept a parameter that contains an object with - * dictionary properties where the name of the property is the Id of the - * business process flow and the value of the property is the name of the - * business process flow. - * - * The enabled processes are filtered according to the user’s privileges. The - * list of enabled processes is the same ones a user can see in the UI if they - * want to change the process manually. - */ - getEnabledProcesses( callbackFunction: ( enabledProcesses: ProcessDictionary ) => void ): void; - - /** - * Use this method to get the currently selected stage. - * - * @return The currently selected stage. - */ - getSelectedStage(): Stage; - - /** - * Use this to add a function as an event handler for the OnStageChange event so that it will be called when the - * business process flow stage changes. - * @param {ContextSensitiveHandler} handler The function will be added to the bottom of the event - * handler pipeline. The execution context is automatically - * set to be the first parameter passed to the event handler. - * - * Use a reference to a named function rather than an - * anonymous function if you may later want to remove the - * event handler. - */ - addOnStageChange( handler: ContextSensitiveHandler ): void; - - /** - * Use this to add a function as an event handler for the OnStageSelected event so that it will be called - * when a business process flow stage is selected. - * - * @param {ContextSensitiveHandler} handler The function will be added to the bottom of the event - * handler pipeline. The execution context is automatically - * set to be the first parameter passed to the event handler. - * - * Use a reference to a named function rather than an - * anonymous function if you may later want to remove the - * event handler. - */ - addOnStageSelected(handler: ContextSensitiveHandler): void; - - /** - * Use this to remove a function as an event handler for the OnStageChange event. - * - * @param {ContextSensitiveHandler} handler If an anonymous function is set using the addOnStageChange method it - * cannot be removed using this method. - */ - removeOnStageChange(handler: ContextSensitiveHandler): void; - - /** - * Use this to remove a function as an event handler for the OnStageChange event. - * - * @param {ContextSensitiveHandler} handler If an anonymous function is set using the addOnStageChange method it - * cannot be removed using this method. - */ - removeOnStageSelected( handler: ContextSensitiveHandler ): void; - - /** - * Progresses to the next stage. - * - * @param {ProcessCallbackDelegate} callbackFunction (Optional) A function to call when the operation is - * complete. - */ - moveNext( callbackFunction?: ProcessCallbackDelegate ): void; - - /** - * Moves to the previous stage. - * - * @param {ProcessCallbackDelegate} callbackFunction (Optional) A function to call when the operation is - * complete. - */ - movePrevious( callbackFunction?: ProcessCallbackDelegate ): void; - } - - /** - * Called when process change methods have completed. - * - * @param {string} status The result of the process change operation. - * - * @remarks Values returned are: success (The operation succeeded.) - * crossEntity (The previous stage is for a different entity.) - * beginning (The active stage is the first stage of the active path.) - * invalid (The operation failed because the selected stage isn’t the same - * as the active stage.) - * unreachable (The stage exists on a different path.) - */ - export type ProcessCallbackDelegate = ( status: string ) => void; - - /** - * Represents a key-value pair, where the key is the Process Flow's ID, and the value is the name thereof. - */ - export interface ProcessDictionary { [index: string]: string; } - } - - /** - * Interface for Xrm.Page.ui controls. - * - * @sa UiElement - */ - export interface Control extends UiLabelElement, UiCanGetVisibleElement - { - /** - * Gets the controls type. - * - * @return The control type. - * - * @remarks Values returned are: standard - * iframe - * lookup - * optionset - * subgrid - * webresource - * notes - * timercontrol - * kbsearch (CRM Online Only, use parature.d.ts) - * quickform (see ui.QuickForm) - * customcontrol: . (A custom control for mobile phone and tablet clients). - * customsubgrid: . (A custom dataset control for mobile phone and tablet clients). - */ - getControlType(): ControlType | string; - - /** - * Gets the name of the control on the form. - * - * @return The name of the control. - * - * @remarks The name assigned to a control is not determined until the form loads. Changes to - * the form may change the name assigned to a given control. - * When you use the control getName method the name of the first control will be the - * same as the name of the attribute. The second instance of a control for that - * attribute will be "1". The pattern +N - * will continue for each additional control added to the form for a specific - * attribute. When a form displays a business process flow control in the header, - * additional controls will be added for each attribute that is displayed in the - * business process flow. These controls have a unique name like the following: - * header_process_. - */ - getName(): string; - - /** - * Gets a reference to the Section parent of the control. - * - * @return The parent Section. - */ - getParent(): Section; - } - - /** - * Interface for a standard control. - * - * @sa Control - */ - export interface StandardControl extends Control, UiStandardElement, UiFocusable - { - /** - * Clears the notification identified by uniqueId. - * - * @param {string} uniqueId (Optional) Unique identifier. - * - * @return true if it succeeds, false if it fails. - * - * @remarks If the uniqueId parameter is not used, the current notification shown will be removed. - */ - clearNotification( uniqueId?: string ): boolean; - - /** - * Gets a boolean value, indicating whether the control is disabled. - * - * @return true if it is disabled, otherwise false. - */ - getDisabled(): boolean; - - /** - * Sets the state of the control to either enabled, or disabled. - * - * @param {boolean} disabled true to disable, false to enable. - */ - setDisabled( disabled: boolean ): void; - - /** - * Sets a control-local notification message. - * - * @param {string} message The message. - * @param {string} uniqueId Unique identifier. - * - * @return true if it succeeds, false if it fails. - * - * @remarks When this method is used on Microsoft Dynamics CRM for tablets a red "X" icon - * appears next to the control. Tapping on the icon will display the message. - */ - setNotification( message: string, uniqueId: string ): boolean; - - /** - * Gets the control's bound attribute. - * - * @tparam T An Attribute type. - * - * @return The attribute. - */ - getAttribute(): T; - - /** - * Gets the control's bound attribute. - * - * @return The attribute. - */ - getAttribute(): Attribute; - } - - /** - * Interface for Auto Lookup Control. - * This is not an Entity Lookup, but a control that supports AutoComplete / KeyPress Events (Text or Number) - * - * @remarks This interface is not supported for CRM mobile clients (phones or tablets) and the interactive service hub. It is only available for Updated entities. - * - * @sa StandardControl - */ - export interface AutoLookupControl extends StandardControl, UiKeyPressable - { - /** - * Gets the latest value in a control as the user types characters in a specific text or number field. - * This method helps you to build interactive experiences by validating data and alerting users as they type characters in a control. - * The getValue method is different from the attribute getValue method because the control method retrieves the value from the control - * as the user is typing in the control as opposed to the attribute getValue method that retrieves the value after the user commits (saves) the field. - */ - getValue(): string; - - /** - * Hides the auto-completion drop-down list configured for a specific text field - */ - hideAutoComplete(): void; - - /** - * Shows upt to 10 matching strings in a drop-down list as users press keys to type charactrer in a specific text field. - * On selecting an item in the drop-down list, the value in the text field changes to the selected item, the drop-down list disappears, and the OnChange event for the text field is invoked - * @param resultSet - */ - showAutoComplete(resultSet: AutoCompleteResultSet): void; - } - - /** - * Interface for a String control. - * - * @sa StandardControl - */ - export interface StringControl extends AutoLookupControl - { - /** - * Gets the control's bound attribute. - * - * @return The attribute. - */ - getAttribute(): StringAttribute; - } - - /** - * Interface for a Number control. - * - * @sa StandardControl - */ - export interface NumberControl extends AutoLookupControl - { - /** - * Gets the control's bound attribute. - * - * @return The attribute. - */ - getAttribute(): NumberAttribute; - } - - /** - * Interface for a Date control. - * - * @sa StandardControl - */ - export interface DateControl extends StandardControl - { - /** - * Gets the control's bound attribute. - * - * @return The attribute. - */ - getAttribute(): DateAttribute; - - /** - * Gets the status of the time-of-day component of the Date control. - * - * @return true if the time is shown, otherwise false. - */ - getShowTime(): boolean; - - /** - * Sets the visibility of the time component of the Date control. - * - * @param {boolean} showTimeValue true to show, false to hide the time value. - */ - setShowTime( showTimeValue: boolean ): void; - } - - /** - * Interface for a Lookup control. - * - * @sa StandardControl - */ - export interface LookupControl extends StandardControl - { - /** - * Adds a handler to the "pre search" event of the Lookup control. - * - * @param {Function} handler The handler. - */ - addPreSearch( handler: ContextSensitiveHandler ): void; - - /** - * Adds an additional custom filter to the lookup, with the "AND" filter operator. - * Can only be used within a "pre search" event handler - * - * @sa addPreSearch - * - * @param {string} filter Specifies the filter, as a serialized FetchXML - * "filter" node. - * @param {string} entityLogicalName (Optional) The logical name of the entity. - * - * @remarks If entityLogicalName is not specified, the filter will be applied to all entities - * valid for the Lookup control. - * Example filter: - * - * - */ - addCustomFilter( filter: string, entityLogicalName?: string ): void; - - /** - * Adds a custom view for the Lookup dialog. - * - * @param {string} viewId Unique identifier for the view, in Guid format. - * @param {string} entityName Name of the entity. - * @param {string} viewDisplayName Name of the view to display. - * @param {string} fetchXml The FetchXML query for the view's contents, serialized as a string. - * @param {string} layoutXml The Layout XML, serialized as a string. - * @param {boolean} isDefault true, to treat this view as default. - * - * @remarks Cannot be used on "Owner" Lookup controls. - * The viewId is never saved to CRM, but must be unique across available views. Generating - * a new value can be accomplished with a {@link http://www.guidgen.com/|Guid generator}. - * Example viewId value: "{00000000-0000-0000-0000-000000000001}" - * Layout XML Reference: {@link http://msdn.microsoft.com/en-us/library/gg334522.aspx} - */ - addCustomView( viewId: string, entityName: string, viewDisplayName: string, fetchXml: string, layoutXml: string, isDefault: boolean ): void; - - /** - * Gets the control's bound attribute. - * - * @return The attribute. - */ - getAttribute(): LookupAttribute; - - /** - * Gets the unique identifier of the default view. - * - * @return The default view, in Guid format. - * - * @remarks Example: "{00000000-0000-0000-0000-000000000000}" - */ - getDefaultView(): string; - - /** - * Removes the handler from the "pre search" event of the Lookup control. - * - * @param {Function} handler The handler. - */ - removePreSearch( handler: () => void ): void; - - /** - * Sets the Lookup's default view. - * - * @param {string} viewGuid Unique identifier for the view. - * - * @remarks Example viewGuid value: "{00000000-0000-0000-0000-000000000000}" - */ - setDefaultView( viewGuid: string ): void; - } - - /** - * Interface for an OptionSet control. - * - * @sa StandardControl - */ - export interface OptionSetControl extends StandardControl - { - /** - * Adds an option. - * - * @param {OptionSetValue} option The option. - * @param {number} index (Optional) zero-based index of the option. - * - * @remarks This method does not check that the values within the options you add are valid. - * If index is not provided, the new option will be added to the end of the list. - */ - addOption( option: OptionSetValue, index?: number ): void; - - /** - * Clears all options. - */ - clearOptions(): void; - - /** - * Gets the control's bound attribute. - * - * @return The attribute. - */ - getAttribute(): OptionSetAttribute; - - /** - * Removes the option matching the value. - * - * @param {number} value The value. - */ - removeOption( value: number ): void; - } - - /** - * Interface for a CRM grid control. - * - * @sa Control - */ - export interface GridControl extends Control - { - /** - * Use this method to add event handlers to the GridControl's OnLoad event. - * - * @param {Function} handler The event handler. - */ - addOnLoad( handler: () => void ): void; - - /** - * This method returns context information about the GridControl. - * - * @return The context type. - */ - getContextType(): XrmEnum.GridControlContext; - - /** - * Use this method to get the logical name of the entity data displayed in the grid. - * - * @return The entity name. - */ - getEntityName(): string; - - /** - * Use this method to get access to the Grid available in the GridControl. - * - * @return The grid. - */ - getGrid(): ui.Grid; - - /** - * Use this method to get access to the ViewSelector available for the GridControl when it is configured to display views. - * - * @return The view selector. - */ - getViewSelector(): ui.ViewSelector; - - /** - * Refreshes the sub grid. - * - * @remarks Not available during the "on load" event of the form. - */ - refresh(): void; - - /** - * Use this method to remove event handlers from the GridControl's OnLoad event. - * - * @param {Function} handler The handler. - */ - removeOnLoad( handler: () => void ): void; - } - - /** - * Interface for a framed control, which is either a Web Resource or an Iframe. - * - * @sa Control - * - * @remarks An Iframe control provides additional methods, so use {@link IframeControl} where - * appropriate. Silverlight controls should use {@link SilverlightControl}. - */ - export interface FramedControl extends Control - { - /** - * Gets the DOM element containing the control. - * - * @return The container object. - * - * @remarks Unavailable for Microsoft Dynamics CRM for tablets. - */ - getObject(): HTMLIFrameElement; - - /** - * Gets the URL value of the control. - * - * @return The source URL. - * - * @remarks Unavailable for Microsoft Dynamics CRM for tablets. - */ - getSrc(): string; - - /** - * Sets the URL value of the control. - * - * @param {string} src The source URL. - * - * @remarks Unavailable for Microsoft Dynamics CRM for tablets. - */ - setSrc( src: string ): void; - } - - /** - * Interface for an Iframe control. - * - * @sa FramedControl - */ - export interface IframeControl extends FramedControl, UiCanSetVisibleElement - { - /** - * Gets initial URL defined for the Iframe. - * - * @return The initial URL. - * - * @remarks Unavailable for Microsoft Dynamics CRM for tablets. - */ - getInitialUrl(): string; - } - - /** - * Interface for a Silverlight control. - * - * @sa Control - */ - export interface SilverlightControl extends Control - { - /** - * Gets the query string value passed to Silverlight. - * - * @return The data. - * - * @remarks Unavailable for Microsoft Dynamics CRM for tablets. - */ - getData(): string; - - /** - * Sets the query string value passed to Silverlight. - * - * @param {string} data The data. - * - * @remarks Unavailable for Microsoft Dynamics CRM for tablets. - */ - setData( data: string ): void; - - /** - * Gets the DOM element containing the control. - * - * @return The container object. - * - * @remarks Unavailable for Microsoft Dynamics CRM for tablets. - */ - getObject(): HTMLObjectElement; - } - - /** - * Interface for a form tab. - * - * @sa UiElement - * @sa UiFocusable - */ - export interface Tab extends UiStandardElement, UiFocusable - { - /** - * Gets display state of the tab. - * - * @return The display state, as either "expanded" or "collapsed" - */ - getDisplayState(): ui.DisplayState; - - /** - * Gets the name of the tab. - * - * @return The name. - */ - getName(): string; - - /** - * Gets a reference to the Xrm.Page.ui parent of the tab. - * - * @return The parent. - */ - getParent(): Ui; - - /** - * Sets display state of the tab. - * - * @param {string} displayState Display state of the tab, as either "expanded" or "collapsed" - */ - setDisplayState(displayState: ui.DisplayState ): void; - - /** - * A reference to the collection of form sections within this tab. - */ - sections: Collection.ItemCollection
; - } - - /** - * Interface for a form section. - * - * @sa UiElement - */ - export interface Section extends UiStandardElement - { - /** - * Gets the name of the section. - * - * @return The name. - */ - getName(): string; - - /** - * Gets a reference to the Xrm.Page.Tab parent of this item. - * - * @return The parent. - */ - getParent(): Tab; - - /** - * A reference to the collection of controls within this tab. - */ - controls: Collection.ItemCollection; - } - - /** - * Module for Xrm.Page.ui API. - */ - export module ui - { - /** - * Form Notification Levels for Xrm.Ui.setFormNotification(). - */ - export type FormNotificationLevel = "ERROR" | "INFO" | "WARNING"; - - /** - * Display States for Xrm.ui.ProcessMonitor.setDisplayState(). - */ - export type DisplayState = "collapsed" | "expanded"; - - /** - * Interface for Xrm.Page.ui.process API - */ - export interface ProcessManager - { - /** - * Sets display state of the process flow control. - * - * @param {string} displayState Display state of the process flow control, as either "expanded" or "collapsed" - */ - setDisplayState( displayState: ui.DisplayState ): void; - - /** - * Sets the visibility state. - * - * @param {boolean} visible true to show, false to hide. - */ - setVisible( visible: boolean ): void; - } - - /** - * Interface for a grid. Use Grid methods to access information about data in the grid. Grid is returned by the - * GridControl.getGrid method. - */ - export interface Grid - { - /** - * Returns a collection of every GridRow in the Grid. - * - * @return The rows. - */ - getRows(): Collection.ItemCollection; - - /** - * Returns a collection of every selected GridRow in the Grid. - * - * @return The selected rows. - */ - getSelectedRows(): Collection.ItemCollection; - - /** - * Returns the total number of records in the Grid. - * - * @return The total record count. - */ - getTotalRecordCount(): number; - } - - /** - * Interface for a grid row. Use the GridRow.getData method to access the GridRowData. A collection of GridRow is - * returned by Grid.getRows and Grid.getSelectedRows methods. - */ - export interface GridRow - { - /** - * Returns the GridRowData for the GridRow. - * - * @return The data. - */ - getData(): GridRowData; - } - - /** - * Interface for grid row data. Use the GridRowData.getEntity method to access the GridEntity. GridRowData is - * returned by the GridRow.getData method. - */ - export interface GridRowData - { - /** - * Returns the GridEntity for the GridRowData. - * - * @return The entity. - */ - getEntity(): GridEntity; - } - - /** - * Interface for a grid entity. Use the GridEntity methods to access data about the specific records in the rows. - * GridEntity is returned by the GridRowData.getEntity method. - */ - export interface GridEntity - { - /** - * Returns the logical name for the record in the row. - * - * @return The entity name. - */ - getEntityName(): string; - - /** - * Returns a LookupValue that references this record. - * - * @return The entity reference. - */ - getEntityReference(): LookupValue; - - /** - * Returns the id for the record in the row. - * - * @return The identifier of the GridEntity, in GUID format. - * - * @remarks Example return: "{00000000-0000-0000-0000-000000000000}" - */ - getId(): string; - - /** - * Returns the primary attribute value for the record in the row. (Commonly the name.) - * - * @return The primary attribute value. - */ - getPrimaryAttributeValue(): string; - } - - /** - * Interface for the view selector. Use the ViewSelector methods to get or set information about the view selector - * of the grid control. - */ - export interface ViewSelector - { - /** - * Use this method to get a reference to the current view. - * - * @return The current view. - */ - getCurrentView(): ViewSelectorItem; - - /** - * Use this method to determine whether the view selector is visible. - * - * @return true if visible, false if not. - */ - isVisible(): boolean; - - /** - * Use this method to set the current view. - * - * @param {ViewSelectorItem} viewSelectorItem The view selector item. - */ - setCurrentView( viewSelectorItem: ViewSelectorItem ): void; - } - - /** - * Interface for a view selector item. This object contains data that identifies a view. Use this as a parameter to - * the ViewSelector.setCurrentView method. - */ - export interface ViewSelectorItem - { - /** - * Returns a LookupValue that references this view. - * - * @return The entity reference. - */ - getEntityReference(): LookupValue; - } - - /** - * Interface for a quick view control instance on a form. - * - * @see {@link https://msdn.microsoft.com/en-us/library/mt736908.aspx#bkmk_isLoaded} for details. - */ - export interface QuickForm extends Control, UiLabelElement, UiCanGetVisibleElement - { - /** - * Gets the constituent controls in a quick view control. - * - * @return An array of controls. - * - * @remarks Constituent controls in a quick view control are read only. - */ - getControl(): Page.Control[]; - - /** - * Gets the constituent controls in a quick view control. - * - * @tparam T A Control type - * @param {string} controlName Name of the control. - * - * @return The control. - * - * @remarks Constituent controls in a quick view control are read only. - */ - getControl( controlName: string ): T; - - /** - * Gets the constituent controls in a quick view control. - * - * @param {string} controlName Name of the control. - * - * @return The control. - * - * @remarks Constituent controls in a quick view control are read only. - */ - getControl( controlName: string ): Page.Control; - - /** - * Gets a control by index. - * - * @tparam T A Control type - * @param {number} index The control index. - * - * @return The control. - * - * @remarks Constituent controls in a quick view control are read only. - */ - getControl( index: number ): T; - - /** - * Gets a control by index. - * - * @param {number} index The control index. - * - * @return The control. - * - * @remarks Constituent controls in a quick view control are read only. - */ - getControl( index: number ): Page.Control; - - /** - * Gets the controls type. - * - * @return Returns a string value that categorizes quick view controls. - */ - getControlType(): ControlQuickFormType; - - /** - * Returns whether the data binding for the constituent controls in a quick view control is complete. - * - * @return True is the data binding for a constituent control is complete, otherwise false. - * because the quick view form that the control is bound to may not have loaded completely. - * As a result, using the getAttribute or any data-related methods on a constituent control might not work. - * The isLoaded method for the quick view control helps determine the data binding status for constituent controls in a quick view control. - * - * @remarks The data binding for the constituent controls in a quick view control may not be complete during the main form OnLoad event - */ - isLoaded(): boolean; - - /** - * Refreshes the data displayed in a quick view control. - */ - refresh(): void; - } - } - - /** - * Interface for a navigation item. - * - * @sa UiElement - * @sa UiFocusable - */ - export interface NavigationItem extends UiStandardElement, UiFocusable - { - /** - * Gets the name of the item. - * - * @return The identifier. - */ - getId(): string; - } - - /** - * Interface for Xrm.Page.ui.navigation. - */ - export interface Navigation - { - /** - * A reference to the collection of available navigation items. - */ - items: Collection.ItemCollection; - } - - /** - * Interface for an entity's form selector item. - */ - export interface FormItem - { - /** - * Gets the unique identifier of the form. - * - * @return The identifier, in Guid format. - */ - getId(): string; - - /** - * Gets the label for the form. - * - * @return The label. - */ - getLabel(): string; - - /** - * Navigates the user to this form. - */ - navigate(): void; - } - - /** - * Interface for the form selector API. - */ - export interface FormSelector - { - /** - * Gets current form. - * - * @return The current item. - * - * @remarks When only one form is available this method will return null. - */ - getCurrentItem(): FormItem; - - /** - * A reference to the collection of available forms. - */ - items: Collection.ItemCollection; - } - } - - /** - * An definition module for URL-based, CRM component parameters. - * - * @see {@link http://msdn.microsoft.com/en-us/library/gg328483.aspx} for details. - */ - export module Url - { - /** - * Command Bar Display options for Xrm.Url.FormOpenParameters.cmdbar, Xrm.Url.ViewOpenParameters.cmdbar, and Xrm.Utility.FormOpenParameters.cmdbar. - */ - - export type CmdBarDisplay = "true" | "false"; - /** - * Navigation Bar Display options for Xrm.Url.FormOpenParameters.navbar, Xrm.Url.ViewOpenParameters.navbar, and Xrm.Utility.FormOpenParameters.navbar. - */ - export type NavBarDisplay = "entity" | "off" | "on"; - - /** - * Report Open Action options for Xrm.Url.ReportOpenParameters.actions. - */ - export type ReportAction = "filter" | "run"; - - /** - * Interface for defining parameters on a request to open a form with main.aspx (as with - * window.open). Useful for parsing the keys and values into a string of the format: - * "&key=value". - * - * @see {@link http://msdn.microsoft.com/en-us/library/gg328483.aspx} for details. - * - * @remarks A member for "pagetype" is not provided. The value "entityrecord" is required in - * the URL, for forms. Example: "pagetype=entityrecord" - */ - export interface FormOpenParameters - { - /** - * The logical name of the entity. - */ - etn: string; - - /** - * Additional parameters can be provided to the request. This can only be used to provide - * default field values for the form, or pass data to custom parameters that have been - * customized for the form. See example below for setting the selected form. - * - * @remarks Example: encodeURIComponent( "formid={8c9f3e6f-7839-e211-831e-00155db7d98f}" ); - */ - extraqs?: string; - - /** - * Controls whether the command bar is displayed. - * Accepted values are: "true" (The command bar is displayed.) - * "false" (The command bar is not displayed.) - */ - cmdbar?: CmdBarDisplay; - - /** - * Controls whether the Navigation bar is displayed on the form. - * Accepted values are: "on" (The navigation bar is displayed.) - * "off" (The navigation bar is not displayed.) - * "entity" (On an entity form, only the navigation options for related - * entities are available.) - */ - navbar?: NavBarDisplay; - } - - /** - * Interface for defining parameters on a request to open a view with main.aspx (as with - * window.open). Useful for parsing the keys and values into a string of the format: - * "&key=value". - * - * @see {@link http://msdn.microsoft.com/en-us/library/gg328483.aspx} for details. - * - * @remarks A member for "pagetype" is not provided. The value "entitylist" is required in - * the URL, for views. Example: "pagetype=entitylist" - */ - export interface ViewOpenParameters - { - /** - * The logical name of the entity. - */ - etn: string; - - /** - * The unique identifier of a view, in Guid format, which is valid for the entity described by - * {@link etn}. - */ - viewid: string; - - /** - * The type of view identified by {@link viewid}. - * - * @remarks Accepted values are: 1039 System View - * 4230 User View. - */ - viewtype: XrmEnum.ViewType; - - /** - * Controls whether the command bar is displayed. - * Accepted values are: "true" (The command bar is displayed.) - * "false" (The command bar is not displayed.) - */ - cmdbar?: CmdBarDisplay; - - /** - * Controls whether the Navigation bar is displayed on the form. - * Accepted values are: "on" (The navigation bar is displayed.) - * "off" (The navigation bar is not displayed.) - * "entity" (On an entity form, only the navigation options for related - * entities are available.) - */ - navbar?: NavBarDisplay; - } - - /** - * Interface for defining parameters of a request to open a dialog with rundialog.aspx (as with - * window.open). Useful for parsing the keys and values into a string of the format: - * "&key=value". - * - * @see {@link http://msdn.microsoft.com/en-us/library/gg328483.aspx} for details. - */ - export interface DialogOpenParameters - { - /** - * The unique identifier of the dialog, in Guid format, which is valid for the entity described - * by: {@link EntityName} - */ - DialogId: string; - - /** - * The logical name of the entity. - */ - EntityName: string; - - /** - * The unique identifier for the targeted record. - */ - ObjectId: string; - } - - /** - * Interface for defining parameters of a request to open a report with viewer.apsx (as with - * window.open). Useful for parsing out the keys and values into a string of the format: - * "&key=value" - * - * @see {@link http://msdn.microsoft.com/en-us/library/gg328483.aspx} for details. - */ - export interface ReportOpenParameters - { - /** - * The action to perform, as either "run" or "filter". - * - * @remarks "run" Executes the report with default filters. - * "filter" Presents the user with the filter editor, and a "Run Report" button. - */ - action: ReportAction; - - /** - * The file name of the report. For out-of-box reports, this parameter enables context-sensitive - * help. - */ - helpID?: string; - - /** - * The unique identifier, held in the report's 'reportid' attribute, in Guid format. - */ - id: string; - } - } - - /** - * The Xrm.Utility API - * - * @see {@link http://msdn.microsoft.com/en-us/library/gg328255.aspx|Documentation} for details. - */ - export module Utility - { - export interface OpenParameters - { - /** - * Additional parameters can be provided to the request, by overloading - * this object with additional key and value pairs. This can only be used - * to provide default field values for the form, or pass data to custom - * parameters that have been customized for the form. - */ - [index: string]: string | undefined; - } - - /** - * Interface for defining parameters on a Xrm.Utility.openEntityForm() request. - */ - export interface FormOpenParameters extends OpenParameters - { - /** - * The identifier of the form to use, when several are available. - */ - formid?: string; - - /** - * Controls whether the Navigation bar is displayed on the form. - * Accepted values are: "on" (The navigation bar is displayed.) - * "off" (The navigation bar is not displayed.) - * "entity" (On an entity form, only the navigation options for related - * entities are available.) - */ - navbar?: Url.NavBarDisplay; - - /** - * Controls whether the command bar is displayed. - * Accepted values are: "true" (The command bar is displayed.) - * "false" (The command bar is not displayed.) - */ - cmdbar?: Url.CmdBarDisplay; - } - - /** - * Interface for window options. - */ - export interface WindowOptions - { - /** - * Direct the form to open in a new window. - */ - openInNewWindow: boolean; - } - } -} - -declare namespace XrmEnum -{ - /** - * Enumeration of entity form states/types. - */ - export const enum FormType - { - Undefined = 0, - Create = 1, - Update = 2, - ReadOnly = 3, - Disabled = 4, - BulkEdit = 6 - } - - /** - * Enumeration of entity form save modes. - */ - export const enum SaveMode - { - Save = 1, - SaveAndClose = 2, - SaveAndNew = 59, - AutoSave = 70, - SaveAsCompleted = 58, - Deactivate = 5, - Reactivate = 6, - Assign = 47, - Send = 7, - Qualify = 16, - Disqualify = 15 - } - - /** - * Enumeration of stage categories. - */ - export const enum StageCategory - { - Qualify = 0, - Develop = 1, - Propose = 2, - Close = 3, - Identify = 4, - Research = 5, - Resolve = 6 - } - - /** - * Enumeration of grid control context resolutions. - */ - export const enum GridControlContext - { - Unknown = 0, - RibbonContextForm = 1, - RibbonContextListing = 2, - FormContextUnrelated = 3, - FormContextRelated = 4 - } - - /** - * An enumeration for view types. - */ - export const enum ViewType - { - SystemView = 1039, - UserView = 4230 - } -} \ No newline at end of file From 2ceb210ab505742fbe18e0a77241de5b2beca45c Mon Sep 17 00:00:00 2001 From: Derek Finlinson Date: Thu, 14 Sep 2017 10:27:49 -0600 Subject: [PATCH 3/7] Add separate process event contexts --- types/xrm/index.d.ts | 86 +++++++++++++++++++++++++++++++++++++----- types/xrm/xrm-tests.ts | 2 +- 2 files changed, 78 insertions(+), 10 deletions(-) diff --git a/types/xrm/index.d.ts b/types/xrm/index.d.ts index d20992e385..f910412942 100644 --- a/types/xrm/index.d.ts +++ b/types/xrm/index.d.ts @@ -935,6 +935,11 @@ declare namespace Xrm { */ type AttributeType = "boolean" | "datetime" | "decimal" | "double" | "integer" | "lookup" | "memo" | "money" | "optionset" | "string"; + /** + * Direction types for a process stage change event + */ + type StageChangeDirection = "next" | "previous"; + /** * Attribute formats for Xrm.Page.Attribute.getFormat(). */ @@ -1074,15 +1079,6 @@ declare namespace Xrm { */ getDepth(): number; - /** - * Gets save-event arguments. - * - * @return The event arguments. - * - * @remarks Returns null for all but the "save" event. - */ - getEventArgs(): SaveEventArguments; - /** * Gets a reference to the object for which event occurred. * @@ -1114,6 +1110,43 @@ declare namespace Xrm { setSharedVariable(key: string, value: T): void; } + /** + * Interface for a save event context + */ + interface SaveEventContext extends EventContext { + /** + * Gets save-event arguments. + * + * @return The event arguments. + * + * @remarks Returns null for all but the "save" event. + */ + getEventArgs(): SaveEventArguments; + } + + /** + * Interface for a process stage change event context + */ + interface StageChangeEventContext extends EventContext { + /** + * Gets process stage change event arguments. + * + * @return The event arguments. + * + */ + getEventArgs(): StageChangeEventArguments; + } + + interface StageSelectedEventContext extends EventContext { + /** + * Gets process stage selected event arguments. + * + * @return The event arguments. + * + */ + getEventArgs(): StageSelectedEventArguments; + } + /** * Type for a context-sensitive handler. * @param {EventContext} context The context. @@ -1916,6 +1949,41 @@ declare namespace Xrm { preventDefault(): void; } + /** + * Interface for process stage change event arguments. + */ + interface StageChangeEventArguments { + /** + * Gets the direction of the stage change. + * + * @return The direction. + * + * @remarks Values returned are: "next" or "previous" + */ + getDirection(): Xrm.Page.StageChangeDirection; + + /** + * Gets the destionation stage object + * + * @return The stage object + * + * @remarks For switching between entities, returns the previous stage object + */ + getStage(): Xrm.Page.Stage; + } + + /** + * Interface for process stage selected event arguments. + */ + interface StageSelectedEventArguments { + /** + * Gets the selected stage object + * + * @return The stage object + */ + getStage(): Xrm.Page.Stage; + } + /** * Module for the Xrm.Page.data API. */ diff --git a/types/xrm/xrm-tests.ts b/types/xrm/xrm-tests.ts index 5b5b12c333..9d5173c5f7 100644 --- a/types/xrm/xrm-tests.ts +++ b/types/xrm/xrm-tests.ts @@ -83,7 +83,7 @@ Xrm.Page.ui.tabs.forEach((tab) => { /// Demonstrate OnSave event context. -Xrm.Page.data.entity.addOnSave((context) => { +Xrm.Page.data.entity.addOnSave((context : Xrm.Page.SaveEventContext) => { const eventArgs = context.getEventArgs(); if (eventArgs.getSaveMode() === XrmEnum.SaveMode.AutoSave || eventArgs.getSaveMode() === XrmEnum.SaveMode.SaveAndClose) From 2fd410d80dbe07df7c00354d549dcecce6cbc4b9 Mon Sep 17 00:00:00 2001 From: Derek Finlinson Date: Thu, 14 Sep 2017 10:47:22 -0600 Subject: [PATCH 4/7] Fix lint errors --- types/xrm/index.d.ts | 10 +++++----- types/xrm/xrm-tests.ts | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/types/xrm/index.d.ts b/types/xrm/index.d.ts index f910412942..cc51db6dfb 100644 --- a/types/xrm/index.d.ts +++ b/types/xrm/index.d.ts @@ -1960,16 +1960,16 @@ declare namespace Xrm { * * @remarks Values returned are: "next" or "previous" */ - getDirection(): Xrm.Page.StageChangeDirection; + getDirection(): StageChangeDirection; /** * Gets the destionation stage object * * @return The stage object - * + * * @remarks For switching between entities, returns the previous stage object */ - getStage(): Xrm.Page.Stage; + getStage(): Stage; } /** @@ -1978,10 +1978,10 @@ declare namespace Xrm { interface StageSelectedEventArguments { /** * Gets the selected stage object - * + * * @return The stage object */ - getStage(): Xrm.Page.Stage; + getStage(): Stage; } /** diff --git a/types/xrm/xrm-tests.ts b/types/xrm/xrm-tests.ts index 9d5173c5f7..182afa1450 100644 --- a/types/xrm/xrm-tests.ts +++ b/types/xrm/xrm-tests.ts @@ -83,7 +83,7 @@ Xrm.Page.ui.tabs.forEach((tab) => { /// Demonstrate OnSave event context. -Xrm.Page.data.entity.addOnSave((context : Xrm.Page.SaveEventContext) => { +Xrm.Page.data.entity.addOnSave((context: Xrm.Page.SaveEventContext) => { const eventArgs = context.getEventArgs(); if (eventArgs.getSaveMode() === XrmEnum.SaveMode.AutoSave || eventArgs.getSaveMode() === XrmEnum.SaveMode.SaveAndClose) From c7b816f1a2a58662c5b18295aec886600e41c9d2 Mon Sep 17 00:00:00 2001 From: Derek Finlinson Date: Thu, 14 Sep 2017 12:18:23 -0600 Subject: [PATCH 5/7] Typo fix --- types/xrm/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/xrm/index.d.ts b/types/xrm/index.d.ts index cc51db6dfb..a1f9296541 100644 --- a/types/xrm/index.d.ts +++ b/types/xrm/index.d.ts @@ -1963,7 +1963,7 @@ declare namespace Xrm { getDirection(): StageChangeDirection; /** - * Gets the destionation stage object + * Gets the destination stage object * * @return The stage object * From 64fa17e7793ca750d960bfa0ae801e6862535fde Mon Sep 17 00:00:00 2001 From: Derek Finlinson Date: Thu, 14 Sep 2017 14:41:22 -0600 Subject: [PATCH 6/7] Change stage direction to proper case --- types/xrm/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/xrm/index.d.ts b/types/xrm/index.d.ts index a1f9296541..26cba57ab5 100644 --- a/types/xrm/index.d.ts +++ b/types/xrm/index.d.ts @@ -938,7 +938,7 @@ declare namespace Xrm { /** * Direction types for a process stage change event */ - type StageChangeDirection = "next" | "previous"; + type StageChangeDirection = "Next" | "Previous"; /** * Attribute formats for Xrm.Page.Attribute.getFormat(). From 6d87ef3695e3bf73546bbf4846cb6db68bf565e3 Mon Sep 17 00:00:00 2001 From: Derek Finlinson Date: Thu, 14 Sep 2017 16:35:59 -0600 Subject: [PATCH 7/7] Add remaining missing Xrm.Page.data.process methods --- types/xrm/index.d.ts | 116 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 114 insertions(+), 2 deletions(-) diff --git a/types/xrm/index.d.ts b/types/xrm/index.d.ts index 26cba57ab5..a3b49f391d 100644 --- a/types/xrm/index.d.ts +++ b/types/xrm/index.d.ts @@ -893,7 +893,12 @@ declare namespace Xrm { /** * Status for Xrm.Page.Stage.getStatus(). */ - type Status = "active" | "inactive"; + type StageStatus = "active" | "inactive"; + + /** + * Status for Xrm.Page.Process.getStatus(). + */ + type ProcessStatus = "active" | "aborted" | "finished"; /** * Submit Mode for Xrm.Page.Attribute.getSubmitMode() and Xrm.Page.Attribute.setSubmitMode(). @@ -1022,7 +1027,7 @@ declare namespace Xrm { * * @remarks This method will return either "active" or "inactive". */ - getStatus(): Status; + getStatus(): StageStatus; /** * Returns a collection of steps in the stage. @@ -1153,6 +1158,12 @@ declare namespace Xrm { */ type ContextSensitiveHandler = (context: EventContext) => void; + /** + * Type for a process status change handler. + * @param {ProcessStatus} status The process status. + */ + type ProcessStatusChangeHandler = (status: ProcessStatus) => void; + /** * Interface for UI elements with labels. */ @@ -2007,6 +2018,21 @@ declare namespace Xrm { */ setActiveProcess(processId: string, callbackFunction?: ProcessCallbackDelegate): void; + /** + * Returns all process instances for the entity record that the calling user has access to. + * + * @param {function} callbackFunction (Optional) a function to call when the operation is complete. + */ + getProcessInstances(callbackFunction: GetProcessInstancesDelegate): void; + + /** + * Sets a process instance as the active instance + * + * @param {string} processInstanceId The Id of the process instance to make the active instance. + * @param {function} callbackFunction (Optional) a function to call when the operation is complete. + */ + setActiveProcessInstance(processInstanceId: string, callbackFunction: SetProcessInstanceDelegate): void; + /** * Returns a Stage object representing the active stage. * @@ -2069,6 +2095,19 @@ declare namespace Xrm { */ addOnStageChange(handler: ContextSensitiveHandler): void; + /** + * Use this to add a function as an event handler for the OnProcessStatusChange event so that it will be called when the + * business process flow status changes. + * @param {ProcessStatusChangeHandler} handler The function will be added to the bottom of the event + * handler pipeline. The execution context is automatically + * set to be the first parameter passed to the event handler. + * + * Use a reference to a named function rather than an + * anonymous function if you may later want to remove the + * event handler. + */ + addOnProcessStatusChange(handler: ProcessStatusChangeHandler): void; + /** * Use this to add a function as an event handler for the OnStageSelected event so that it will be called * when a business process flow stage is selected. @@ -2083,6 +2122,14 @@ declare namespace Xrm { */ addOnStageSelected(handler: ContextSensitiveHandler): void; + /** + * Use this to remove a function as an event handler for the OnProcessStatusChange event. + * + * @param {ProcessStatusChangeHandler} handler If an anonymous function is set using the addOnProcessStatusChange method it + * cannot be removed using this method. + */ + removeOnProcessStatusChange(handler: ProcessStatusChangeHandler): void; + /** * Use this to remove a function as an event handler for the OnStageChange event. * @@ -2114,8 +2161,62 @@ declare namespace Xrm { * complete. */ movePrevious(callbackFunction?: ProcessCallbackDelegate): void; + + /** + * Use this method to get the unique identifier of the process instance + * + * @return The unique identifier of the process instance + */ + getInstanceId(): string; + + /** + * Use this method to get the name of the process instance + * + * @return The name of the process instance + */ + getInstanceName(): string; + + /** + * Use this method to get the current status of the process instance + * + * @return The current status of the process + */ + getStatus(): ProcessStatus; + + /** + * Use this method to set the current status of the process instance + * + * @param {ProcessStatus} status The new status for the process + * @param {function} callbackFunction (Optional) a function to call when the operation is complete. + */ + setStatus(status: ProcessStatus, callbackFunction: ProcessSetStatusDelegate): void; } + /** + * Called when method to get active processes is complete + * + * @param {string} status The result of the get active processes operation. + * + * @remarks Returns object with the following key-value pairs: + * CreatedOn + * ProcessDefinitionID + * ProcessDefinitionName + * ProcessInstanceID + * ProcessInstanceName + * StatusCodeName + */ + type GetProcessInstancesDelegate = (object: ProcessDictionary) => void; + + /** + * Called when method to set active process is complete + * + * @param {string} status The result of the set active process operation. + * + * @remarks Values returned are: success (The operation succeeded.) + * invalid (The processInstanceId isn’t valid or the process isn’t enabled.) + */ + type SetProcessInstanceDelegate = (status: string) => void; + /** * Called when process change methods have completed. * @@ -2130,6 +2231,17 @@ declare namespace Xrm { */ type ProcessCallbackDelegate = (status: string) => void; + /** + * Called when process set status method has completed. + * + * @param {ProcessStatus} status The new status of the process instance + * + * @remarks Values returned are: active + * aborted + * finished + */ + type ProcessSetStatusDelegate = (status: ProcessStatus) => void; + /** * Represents a key-value pair, where the key is the Process Flow's ID, and the value is the name thereof. */