From 3cb1536946155d56ced6dc88c86f533759f4c2e4 Mon Sep 17 00:00:00 2001 From: Dominik Brych Date: Wed, 16 Oct 2024 11:20:26 +0200 Subject: [PATCH] Added docs for Virtual Dataset --- src/.vuepress/config.js | 43 ++ .../applications/Controls/virtualdataset.png | Bin 0 -> 118304 bytes .../API/classes/DataProvider.md | 63 ++ .../API/classes/Dataset.md | 544 ++++++++++++++++++ .../API/classes/FetchXmlDataProvider.md | 33 ++ .../API/classes/MemoryDataProvider.md | 33 ++ .../ClientExtensibility/API/classes/Record.md | 159 +++++ .../ClientExtensibility/API/globals.md | 20 + .../interfaces/IDataProviderEventListeners.md | 43 ++ .../API/interfaces/IDatasetEventListeners.md | 65 +++ .../ClientExtensibility/general.md | 73 +++ .../controls/VirtualDataset/general.md | 342 +++++++++++ 12 files changed, 1418 insertions(+) create mode 100644 src/.vuepress/public/.attachments/applications/Controls/virtualdataset.png create mode 100644 src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/DataProvider.md create mode 100644 src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Dataset.md create mode 100644 src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/FetchXmlDataProvider.md create mode 100644 src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/MemoryDataProvider.md create mode 100644 src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Record.md create mode 100644 src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/globals.md create mode 100644 src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderEventListeners.md create mode 100644 src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDatasetEventListeners.md create mode 100644 src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/general.md create mode 100644 src/en/developer-guide/applications/controls/VirtualDataset/general.md diff --git a/src/.vuepress/config.js b/src/.vuepress/config.js index 2ce05fea..048a9b7a 100644 --- a/src/.vuepress/config.js +++ b/src/.vuepress/config.js @@ -399,6 +399,49 @@ module.exports = config({ ['/en/developer-guide/applications/controls/quicklookupedit.md', 'Quick Lookup Edit'], ['/en/developer-guide/applications/controls/rating.md', 'Rating'], ['/en/developer-guide/applications/controls/treeview.md', 'Tree View'], + { + title: 'Virtual Dataset', + collapsable: true, + children: [ + ['/en/developer-guide/applications/controls/VirtualDataset/general.md', 'General'], + { + title: 'Client Extensibility', + collapsable: true, + children: [ + ['/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/general.md', 'General'], + { + title: 'API', + collapsable: true, + children: [ + ['/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/globals.md', 'General'], + { + title: 'interfaces', + collapsable: true, + children: [ + ['/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataset.md', 'IDataset'], + ['/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDatasetEventListeners.md', 'IDatasetEventListeners'], + ['/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProvider.md', 'IDataProvider'], + ['/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderEventListeners.md', 'IDataProviderEventListeners'], + ['/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecord.md', 'IRecord'] + ] + }, + { + title: 'classes', + collapsable: true, + children: [ + ['/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/FetchXmlDataProvider.md', 'FetchXmlDataProvider'], + ['/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/MemoryDataProvider.md', 'MemoryDataProvider'], + ['/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Record.md', 'Record'], + ['/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Dataset.md', 'Dataset'], + ['/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/DataProvider.md', 'DataProvider'], + ] + } + ] + } + ] + } + ] + }, ['/en/developer-guide/applications/controls/wbs.md', 'WBS - Work Breakdown Structure'] ] }, diff --git a/src/.vuepress/public/.attachments/applications/Controls/virtualdataset.png b/src/.vuepress/public/.attachments/applications/Controls/virtualdataset.png new file mode 100644 index 0000000000000000000000000000000000000000..85f0bec7a979e0a2dcbcce43658c929143c798a7 GIT binary patch literal 118304 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

Zu5;tFQrV+_~xJA13boa+0>uu`c}y;w)`)baY5 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 **new DataProvider**(`dataSource`, `columns`, `options`?): [`DataProvider`](DataProvider.md) + +Creates an instance of DataProvider. + +#### Parameters + +• **dataSource**: `any` + +• **columns**: `Column` & `object`[] + +• **options?**: [`IDataProviderOptions`](../interfaces/IDataProviderOptions.md) + +#### Returns + +[`DataProvider`](DataProvider.md) + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:41 + + +### addEventListener() + +> **addEventListener**\<`K`\>(`event`, `eventListener`): `void` + +Allows to define listener method that will trigger when specific event occurs. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderEventListeners`](../interfaces/IDataProviderEventListeners.md) + +#### Parameters + +• **event**: `K` + +• **eventListener**: [`IDataProviderEventListeners`](../interfaces/IDataProviderEventListeners.md)\[`K`\] + +#### Returns + +`void` + +#### Implementation of + +[`IDataProvider`](../interfaces/IDataProvider.md).[`addEventListener`](../interfaces/IDataProvider.md#addeventlistener) + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:139 \ No newline at end of file diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Dataset.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Dataset.md new file mode 100644 index 00000000..e999cb8b --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Dataset.md @@ -0,0 +1,544 @@ +Uses Data Provider and is passed as dataset parameter to PCF's + +## Implements + +- [`IDataset`](../interfaces/IDataset.md) + +## Constructors + +### new Dataset() + +> **new Dataset**(`dataProvider`): [`Dataset`](Dataset.md) + +Creates an instance of Dataset. + +#### Parameters + +• **dataProvider**: `DataProvider` + +#### Returns + +[`Dataset`](Dataset.md) + +#### Defined in + +src/utils/dataset/Dataset.ts:28 + +## Accessors + +### columns + +> `get` **columns**(): `Column` & `object`[] + +Metadata about a column in a dataset. If the column name ends with `__virtual`, it tells the provider it should not try to fetch column metadata from its Data Source. +In this case, you need to specify all the necessary metadata yourself. + +#### Returns + +`Column` & `object`[] + +Metadata about a column in a dataset. If the column name ends with `__virtual`, it tells the provider it should not try to fetch column metadata from its Data Source. +In this case, you need to specify all the necessary metadata yourself. + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`columns`](../interfaces/IDataset.md#columns) + +#### Defined in + +src/utils/dataset/Dataset.ts:31 + +*** + +### error + +> `get` **error**(): `boolean` + +True if encountered error while data retrieval + +#### Returns + +`boolean` + +True if encountered error while data retrieval + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`error`](../interfaces/IDataset.md#error) + +#### Defined in + +src/utils/dataset/Dataset.ts:43 + +*** + +### errorMessage + +> `get` **errorMessage**(): `string` + +The error message associated with the last encountered error, if applicable + +#### Returns + +`string` + +The error message associated with the last encountered error, if applicable + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`errorMessage`](../interfaces/IDataset.md#errormessage) + +#### Defined in + +src/utils/dataset/Dataset.ts:46 + +*** + +### filtering + +> `get` **filtering**(): `Omit`\<`Filtering`, `"getFilter"`\> & `object` + +Filter state for a dataset. + +#### Returns + +`Omit`\<`Filtering`, `"getFilter"`\> & `object` + +Filter state for a dataset. + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`filtering`](../interfaces/IDataset.md#filtering) + +#### Defined in + +src/utils/dataset/Dataset.ts:88 + +*** + +### linking + +> `get` **linking**(): `Linking` + +Related entity info + +#### Returns + +`Linking` + +Related entity info + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`linking`](../interfaces/IDataset.md#linking) + +#### Defined in + +src/utils/dataset/Dataset.ts:58 + +*** + +### loading + +> `get` **loading**(): `boolean` + +Indicate if the dataset property is in loading state or not + +#### Returns + +`boolean` + +Indicate if the dataset property is in loading state or not + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`loading`](../interfaces/IDataset.md#loading) + +#### Defined in + +src/utils/dataset/Dataset.ts:49 + +*** + +### records + +> `get` **records**(): `object` + +Map of IDs to the full record object. + +#### Returns + +`object` + +Map of IDs to the full record object. + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`records`](../interfaces/IDataset.md#records) + +#### Defined in + +src/utils/dataset/Dataset.ts:102 + +*** + +### sortedRecordIds + +> `get` **sortedRecordIds**(): `string`[] + +IDs of the records in the dataset, order by the query response result + +#### Returns + +`string`[] + +IDs of the records in the dataset, order by the query response result + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`sortedRecordIds`](../interfaces/IDataset.md#sortedrecordids) + +#### Defined in + +src/utils/dataset/Dataset.ts:123 + +*** + +### sorting + +> `get` **sorting**(): `SortStatus`[] + +The sorting status for the current query. + +> `set` **sorting**(`sort`): `void` + +The sorting status for the current query. + +#### Parameters + +• **sort**: `SortStatus`[] + +#### Returns + +`SortStatus`[] + +The sorting status for the current query. + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`sorting`](../interfaces/IDataset.md#sorting) + +#### Defined in + +src/utils/dataset/Dataset.ts:52 + +## Methods + +### addEventListener() + +> **addEventListener**\<`K`\>(`event`, `eventListener`): `void` + +Allows to define listener method that will trigger when specific event occurs. + +#### Type Parameters + +• **K** *extends* keyof [`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md) + +#### Parameters + +• **event**: `K` + +• **eventListener**: [`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md)\[`K`\] + +#### Returns + +`void` + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`addEventListener`](../interfaces/IDataset.md#addeventlistener) + +#### Defined in + +src/utils/dataset/Dataset.ts:197 + +*** + +### clearSelectedRecordIds() + +> **clearSelectedRecordIds**(): `void` + +Clear selected record ids list + +#### Returns + +`void` + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`clearSelectedRecordIds`](../interfaces/IDataset.md#clearselectedrecordids) + +#### Defined in + +src/utils/dataset/Dataset.ts:130 + +*** + +### getDataProvider() + +> **getDataProvider**(): `DataProvider` + +Returns a data provider instance. + +#### Returns + +`DataProvider` + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`getDataProvider`](../interfaces/IDataset.md#getdataprovider) + +#### Defined in + +src/utils/dataset/Dataset.ts:173 + +*** + +### getDataSource() + +> **getDataSource**(): `any` + +Gets the Data Source. + +#### Returns + +`any` + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`getDataSource`](../interfaces/IDataset.md#getdatasource) + +#### Defined in + +src/utils/dataset/Dataset.ts:40 + +*** + +### getMetadata() + +> **getMetadata**(): `null` \| `EntityMetadata` + +Gets the associated entity metadata. + +#### Returns + +`null` \| `EntityMetadata` + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`getMetadata`](../interfaces/IDataset.md#getmetadata) + +#### Defined in + +src/utils/dataset/Dataset.ts:158 + +*** + +### getSelectedRecordIds() + +> **getSelectedRecordIds**(): `string`[] + +Retrieves all selected record ids + +#### Returns + +`string`[] + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`getSelectedRecordIds`](../interfaces/IDataset.md#getselectedrecordids) + +#### Defined in + +src/utils/dataset/Dataset.ts:133 + +*** + +### getTargetEntityType() + +> **getTargetEntityType**(): `string` + +Get DataSet target entity logical name + +#### Returns + +`string` + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`getTargetEntityType`](../interfaces/IDataset.md#gettargetentitytype) + +#### Defined in + +src/utils/dataset/Dataset.ts:142 + +*** + +### getTitle() + +> **getTitle**(): `string` + +Retrieves the view display name used by the dataset property + +#### Returns + +`string` + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`getTitle`](../interfaces/IDataset.md#gettitle) + +#### Defined in + +src/utils/dataset/Dataset.ts:145 + +*** + +### getViewId() + +> **getViewId**(): `string` + +Gets Id of view used by the dataset property + +#### Returns + +`string` + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`getViewId`](../interfaces/IDataset.md#getviewid) + +#### Defined in + +src/utils/dataset/Dataset.ts:148 + +*** + +### openDatasetItem() + +> **openDatasetItem**(`entityReference`): `void` + +Open dataSet item for a given EntityReference. It will check if there is a command with command button id "Mscrm.OpenRecordItem". +If there is, it will execute the command, otherwise it will just navigate to the associated form of the entityReference + +#### Parameters + +• **entityReference**: `EntityReference` + +entity reference + +#### Returns + +`void` + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`openDatasetItem`](../interfaces/IDataset.md#opendatasetitem) + +#### Defined in + +src/utils/dataset/Dataset.ts:151 + +*** + +### refresh() + +> **refresh**(): `Promise`\<`void`\> + +Refreshes the dataset based on filters, sorting, linking, new column. New data will be pushed to control in another 'updateView' cycle. + +#### Returns + +`Promise`\<`void`\> + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`refresh`](../interfaces/IDataset.md#refresh) + +#### Defined in + +src/utils/dataset/Dataset.ts:154 + +*** + +### setDataSource() + +> **setDataSource**(`dataSource`): `void` + +Allows you to change the initial Data Source. + +#### Parameters + +• **dataSource**: `any` + +#### Returns + +`void` + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`setDataSource`](../interfaces/IDataset.md#setdatasource) + +#### Defined in + +src/utils/dataset/Dataset.ts:37 + +*** + +### setMetadata() + +> **setMetadata**(`metadata`): `void` + +Allows you to change the initial associated entity metadata. + +#### Parameters + +• **metadata**: `EntityMetadata` + +#### Returns + +`void` + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`setMetadata`](../interfaces/IDataset.md#setmetadata) + +#### Defined in + +src/utils/dataset/Dataset.ts:161 + +*** + +### setSelectedRecordIds() + +> **setSelectedRecordIds**(`ids`): `void` + +Set the ids of the selected records + +#### Parameters + +• **ids**: `string`[] + +List of recordId's + +#### Returns + +`void` + +#### Implementation of + +[`IDataset`](../interfaces/IDataset.md).[`setSelectedRecordIds`](../interfaces/IDataset.md#setselectedrecordids) + +#### Defined in + +src/utils/dataset/Dataset.ts:138 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/FetchXmlDataProvider.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/FetchXmlDataProvider.md new file mode 100644 index 00000000..6a908791 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/FetchXmlDataProvider.md @@ -0,0 +1,33 @@ +Allows you to use fetchXml as a Data Source. + +## Extends + +- `DataProvider` + +## Constructors + +### new FetchXmlDataProvider() + +> **new FetchXmlDataProvider**(`fetchXml`, `columns`?, `options`?): [`FetchXmlDataProvider`](FetchXmlDataProvider.md) + +Creates an instance of FetchXmlDataProvider. + +#### Parameters + +• **fetchXml**: `string` + +• **columns?**: `Column` & `object`[] + +• **options?**: [`IDataProviderOptions`](../interfaces/IDataProviderOptions.md) + +#### Returns + +[`FetchXmlDataProvider`](FetchXmlDataProvider.md) + +#### Overrides + +`DataProvider.constructor` + +#### Defined in + +src/utils/dataset/data-providers/FetchXmlDataProvider.ts:21 \ No newline at end of file diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/MemoryDataProvider.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/MemoryDataProvider.md new file mode 100644 index 00000000..49467b74 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/MemoryDataProvider.md @@ -0,0 +1,33 @@ +Allows you to use in-memory array as Data Source. + +## Extends + +- `DataProvider` + +## Constructors + +### new MemoryDataProvider() + +> **new MemoryDataProvider**(`dataSource`, `columns`, `options`?): [`MemoryDataProvider`](MemoryDataProvider.md) + +Creates an instance of MemoryDataProvider. + +#### Parameters + +• **dataSource**: `object`[] + +• **columns**: `Column` & `object`[] + +• **options?**: [`IDataProviderOptions`](../interfaces/IDataProviderOptions.md) + +#### Returns + +[`MemoryDataProvider`](MemoryDataProvider.md) + +#### Overrides + +`DataProvider.constructor` + +#### Defined in + +src/utils/dataset/data-providers/memory-provider/MemoryDataProvider.ts:16 \ No newline at end of file diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Record.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Record.md new file mode 100644 index 00000000..eaf03cbc --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Record.md @@ -0,0 +1,159 @@ +Instance of a record, + +## Implements + +- [`IRecord`](../interfaces/IRecord.md) + +## Constructors + +### new Record() + +> **new Record**(`recordId`, `dataProvider`): [`Record`](Record.md) + +Creates an instance of Record. + +#### Parameters + +• **recordId**: `string` + +• **dataProvider**: `DataProvider` + +#### Returns + +[`Record`](Record.md) + +#### Defined in + +src/utils/dataset/data-providers/Record.ts:24 + +## Methods + +### getFormattedValue() + +> **getFormattedValue**(`columnName`): `null` \| `string` + +Get the current formatted value of this record column. + +#### Parameters + +• **columnName**: `string` + +Column name of the record + +#### Returns + +`null` \| `string` + +#### Implementation of + +[`IRecord`](../interfaces/IRecord.md).[`getFormattedValue`](../interfaces/IRecord.md#getformattedvalue) + +#### Defined in + +src/utils/dataset/data-providers/Record.ts:34 + +*** + +### getNamedReference() + +> **getNamedReference**(): `EntityReference` + +Get the object that encapsulates an Entity Reference as a plain object + +#### Returns + +`EntityReference` + +#### Implementation of + +[`IRecord`](../interfaces/IRecord.md).[`getNamedReference`](../interfaces/IRecord.md#getnamedreference) + +#### Defined in + +src/utils/dataset/data-providers/Record.ts:199 + +*** + +### getRawData() + +> **getRawData**(): `object` + +Retrieves the raw record data. + +#### Returns + +`object` + +#### Implementation of + +[`IRecord`](../interfaces/IRecord.md).[`getRawData`](../interfaces/IRecord.md#getrawdata) + +#### Defined in + +src/utils/dataset/data-providers/Record.ts:213 + +*** + +### getRecordId() + +> **getRecordId**(): `string` + +Get the record ID + +#### Returns + +`string` + +#### Implementation of + +[`IRecord`](../interfaces/IRecord.md).[`getRecordId`](../interfaces/IRecord.md#getrecordid) + +#### Defined in + +src/utils/dataset/data-providers/Record.ts:107 + +*** + +### save() + +> **save**(): `Promise`\<`void`\> + +Saves the record. + +#### Returns + +`Promise`\<`void`\> + +#### Implementation of + +[`IRecord`](../interfaces/IRecord.md).[`save`](../interfaces/IRecord.md#save) + +#### Defined in + +src/utils/dataset/data-providers/Record.ts:209 + +*** + +### setValue() + +> **setValue**(`columnName`, `value`): `void` + +Sets the value of a given column. + +#### Parameters + +• **columnName**: `string` + +• **value**: `any` + +#### Returns + +`void` + +#### Implementation of + +[`IRecord`](../interfaces/IRecord.md).[`setValue`](../interfaces/IRecord.md#setvalue) + +#### Defined in + +src/utils/dataset/data-providers/Record.ts:123 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/globals.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/globals.md new file mode 100644 index 00000000..a99174f9 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/globals.md @@ -0,0 +1,20 @@ +--- +Author: Dominik Brych +--- +# API + +## Classes + +- [Dataset](classes/Dataset.md) +- [FetchXmlDataProvider](classes/FetchXmlDataProvider.md) +- [MemoryDataProvider](classes/MemoryDataProvider.md) +- [Record](classes/Record.md) + +## Interfaces + +- [IDataProvider](interfaces/IDataProvider.md) +- [IDataProviderEventListeners](interfaces/IDataProviderEventListeners.md) +- [IDataProviderOptions](interfaces/IDataProviderOptions.md) +- [IDataset](interfaces/IDataset.md) +- [IDatasetEventListeners](interfaces/IDatasetEventListeners.md) +- [IRecord](interfaces/IRecord.md) diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderEventListeners.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderEventListeners.md new file mode 100644 index 00000000..7b19ff8b --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderEventListeners.md @@ -0,0 +1,43 @@ +Allows you to define callbacks that will trigger during specific events. + +## Properties + +### onCellValueChanged() + +> **onCellValueChanged**: (`record`, `columnName`) => `void` + +Triggers when column value has been changed. + +#### Parameters + +• **record**: [`IRecord`](IRecord.md) + +• **columnName**: `string` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:179 + +*** + +### onRecordSaved() + +> **onRecordSaved**: (`record`) => `void` + +Triggers when record has been saved. + +#### Parameters + +• **record**: [`IRecord`](IRecord.md) + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:174 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDatasetEventListeners.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDatasetEventListeners.md new file mode 100644 index 00000000..1a1ed9ab --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDatasetEventListeners.md @@ -0,0 +1,65 @@ +Allows you to define callbacks that will trigger during specific events. + +## Properties + +### onDatasetItemOpened() + +> **onDatasetItemOpened**: (`dataset`, `entityReference`) => `void` + +Triggers when record has been opened by a PCF. + +#### Parameters + +• **dataset**: [`IDataset`](IDataset.md) + +• **entityReference**: `EntityReference` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/interfaces.ts:15 + +*** + +### onNewDataLoaded() + +> **onNewDataLoaded**: (`dataset`) => `void` + +Triggers when new load has been loaded, for example after a `refresh` or `loadExactPage` events. + +#### Parameters + +• **dataset**: [`IDataset`](IDataset.md) + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/interfaces.ts:20 + +*** + +### onRecordsSelected() + +> **onRecordsSelected**: (`dataset`, `selectedRecordIds`) => `void` + +Triggers when some record/s has been selected by the PCF. + +#### Parameters + +• **dataset**: [`IDataset`](IDataset.md) + +• **selectedRecordIds**: `string`[] + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/interfaces.ts:10 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/general.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/general.md new file mode 100644 index 00000000..d2380b57 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/general.md @@ -0,0 +1,73 @@ +--- +Author: Dominik Brych +--- +# Client Extensibility + +You can extend the PCF functionalities by acessing it's API from a client script. You can access the API by registering an [`addOnOutputChange`](https://learn.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/reference/controls/addonoutputchange) callback. +When your callback fires, you can retrieve the dataset instance. You can then use it's API to manipulate the control and register event handlers. Please refer to our [API docs](API/globals.md) to learn more. + + +

+Client Script Example + +```javascript +let notificationIds = []; +function onFormLoad(executionContext) { + const formContext = executionContext.getFormContext(); + const control = formContext.getControl('talxis_clientextensibilitybindingfield'); + control.addOnOutputChange((executionContext) => { + const control = executionContext.getFormContext().getControl('talxis_clientextensibilitybindingfield'); + const dataset = control.getOutputs()['talxis_clientextensibilitybindingfield.fieldControl.DatasetControl'].value; + //init, settings you apply to dataset here will be applied before first data fetch + dataset.addEventListener('onNewDataLoaded', (dataset) => { + Object.values(dataset.records).map(record => { + record.setValue('talxis_sum__virtual', calculateSum(record)); + }) + dataset.render(); + }); + dataset.addEventListener('onRecordsSelected', (dataset, ids) => { + notificationIds.map(id => Xrm.App.clearGlobalNotification(id)); + notificationIds = []; + ids.map(id => { + const notification = + { + type: 2, + level: 1, + message: `Record ${dataset.records[id].getFormattedValue('talxis_name')} with id ${id} has been selected.` + } + + Xrm.App.addGlobalNotification(notification).then( + function success(result) { + notificationIds.push(result); + } + ); + }) + }); + dataset.addEventListener('onDatasetItemOpened', (dataset, entityReference) => { + const alertStrings = { text: `Sample client script logic for opening of record ${entityReference.name}`, title: "Open" }; + const alertOptions = { height: 120, width: 260 }; + Xrm.Navigation.openAlertDialog(alertStrings, alertOptions); + }); + + dataset.getDataProvider().addEventListener('onCellValueChanged', (record, columnName) => { + switch (columnName) { + case 'talxis_decimal': + case 'talxis_wholenone': { + record.setValue('talxis_sum__virtual', calculateSum(record)); + dataset.render(); + } + } + }); + dataset.getDataProvider().addEventListener('onRecordSaved', (record) => { + console.log(record.getRecordId(), 'has just been saved'); + }); + }) +} + +const calculateSum = (record) => { + const value1 = record.getValue('talxis_decimal') ?? 0; + const value2 = record.getValue('talxis_wholenone') ?? 0; + return value1 + value2; +} +``` +
\ No newline at end of file diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/general.md b/src/en/developer-guide/applications/controls/VirtualDataset/general.md new file mode 100644 index 00000000..afbcaee6 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/general.md @@ -0,0 +1,342 @@ +--- +Author: Dominik Brych +--- +# Virtual Dataset + +Virtual Dataset allows you to bind a Dataset Base Control to a field while providing your own custom Data Source. We currently have two Data Providers - Memory and FetchXml. Memory Provider allows you to work with a collection of data that you have stored in memory and FetchXml Provider allows you to do the same thing with data retrieved through FetchXml. Both of these providers support basic Dataset features, which include: + +- **Sorting** +- **Filtering** +- **Paging** +- **Editing** +- **Quick Find** + +![Attachments Grid Displayed On Form](/.attachments/applications/Controls/virtualdataset.png) + +NOTE: Due to a bug in Power Apps maker, this PCF can only be bind manually through Form Xml! + +## Data Providers + +Static binding allows you to choose between two providers - **FetchXml** and **Memory**. After you select a provider, you need to specify it's Data Source through additional static binding. + +### FetchXml Data Provider + +FetchXml provider expects a valid FetchXml string as Data Source. + +### Memory Data Provider + +Memory Data Provider expects a stringified JSON array as input. The array should contain key-value pairs consisting of column name and it's value. This is the exact same structure you would see in a raw OData response. This means OptionSets are represented by a number, lookups have GUIDs and etc. This applies to each data type. If you are not sure what value should be used for a specific Data Type, run an OData query against some entity containing fields of this data type and see what you get back. + +
+OData response Example +
+ +```json +{ + "@odata.context":"https://devbox-1959.crm4.dynamics.com/api/data/v9.1/$metadata#talxis_fields", + "value":[ + { + "@odata.etag":"W/\"4363703\"", + "talxis_file_name":null, + "_owninguser_value":"e86450b3-5882-ef11-ac20-000d3abee5ab", + "talxis_clientextensibilitydatasource":null, + "talxis_singlelinetext":"Text", + "talxis_clientextensibilitybindingfield":null, + "talxis_name":"Batch 1", + "talxis_dateandtime":"1972-01-15T00:00:00Z", + "_transactioncurrencyid_value":"13292e9f-7881-ef11-ac21-000d3a2b5e17", + "talxis_clientextensibilitymetadata":null, + "exchangerate":1, + "talxis_currency_base":998472, + "talxis_singlelineemail":"test@test.cz", + "versionnumber":4363703, + "talxis_file":null, + "talxis_singlelineurl":"https://www.seznam.cz", + "talxis_image":null, + "talxis_multiple":"Multiple Text", + "statecode":0, + "talxis_image_timestamp":null, + "talxis_wholeduration":710135, + "talxis_twooptions":true, + "_createdonbehalfby_value":null, + "utcconversiontimezonecode":null, + "statuscode":1, + "talxis_multiselectoptionsetcolorful":"742070000,742070001", + "talxis_fetchxmlbindingfield":null, + "talxis_memorybindingfield":null, + "talxis_clientextensibilitycolumns":null, + "talxis_optionsetcolorful":742070000, + "modifiedon":"2024-10-12T10:34:53Z", + "talxis_wholenone":991020, + "talxis_image_url":null, + "talxis_fetchxmldata":null, + "_ownerid_value":"e86450b3-5882-ef11-ac20-000d3abee5ab", + "talxis_fieldid":"6c9e8489-1086-ef11-ac21-6045bd91c897", + "_owningteam_value":null, + "_modifiedonbehalfby_value":null, + "createdon":"2024-10-09T07:31:46Z", + "talxis_twooptionscolorful":false, + "talxis_imageid":null, + "_owningbusinessunit_value":"551c1778-4881-ef11-ac21-000d3a2b5e17", + "timezoneruleversionnumber":0, + "talxis_dateandtimetzi":null, + "talxis_multiselectoptionset":"742070000,742070001", + "talxis_fetchxmlcolumns":null, + "_createdby_value":"e86450b3-5882-ef11-ac20-000d3abee5ab", + "talxis_fetchxmlentitymetadata":null, + "talxis_singlelinephone":"123456789", + "talxis_dateonly":"1968-09-02T00:00:00Z", + "_talxis_parentfield_value":"ac6aa5c8-4086-ef11-ac21-000d3abee5ab", + "_modifiedby_value":"e86450b3-5882-ef11-ac20-000d3abee5ab", + "overriddencreatedon":null, + "importsequencenumber":null, + "talxis_decimal":2000000, + "talxis_currency":998472, + "talxis_memorydata":null, + "talxis_optionset":742070000, + "talxis_memorycolumns":null, + "talxis_memoryentitymetadata":null + } + ] +} +``` +
+ +
+ +> **_NOTE:_** You always need to include the @OData and @Microsoft fields for lookups. You should not do that for any other Data Types (dates, optionsets etc.), we calculate these values on client automatically + +## Columns + +Columns binding can be used to specify metadata for each column. It expects a stringified JSON array containing objects of column metadata. This object is based on the [PCF Dataset Column interface](https://learn.microsoft.com/en-us/power-apps/developer/component-framework/reference/column). If you do not specify metadata for a column, it will not be visible in the UI. + + +
+Example Columns Definition + +```json +[ + { + "name": "datetime", + "alias": "datetime", + "dataType": "DateAndTime.DateAndTime", + "displayName": "Date Time", + "order": 0, + "visualSizeFactor": 300 + }, + { + "name": "mail", + "alias": "mail", + "dataType": "SingleLine.Email", + "displayName": "Mail", + "order": 1, + "visualSizeFactor": 300, + "metadata": { + "IsValidForUpdate": true + } + }, + { + "name": "lookup", + "alias": "lookup", + "dataType": "Lookup.Simple", + "displayName": "Lookup", + "order": 2, + "visualSizeFactor": 300, + "metadata": { + "Targets": ["customLookup"] + } + }, + { + "name": "optionset", + "alias": "optionset", + "dataType": "OptionSet", + "displayName": "OptionSet", + "order": 3, + "visualSizeFactor": 300, + "metadata": { + "OptionSet": [ + { + "Color": "red", + "Label": "Option 1", + "Value": 1 + }, + { + "Color": "blue", + "Label": "Option 2", + "Value": 2 + } + ] + } + } +] +``` +
+
+ +The [PCF Dataset Column interface](https://learn.microsoft.com/en-us/power-apps/developer/component-framework/reference/column) has also been extended with a `metadata` prop. This allows you to define/override [Xrm Attribute Metadata](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/attributemetadata?view=dataverse-latest) for each column. For example, you can see that we are setting Options for OptionSets in our example through `metadata` prop. That way, the provider will know what Label to use if we would request formatted value for that column. + +Depending on which provider you choose, a different minimal amount of props is required for the column to show in the UI: + +- FetchXml Provider: `name` and `isHidden` +- Memory Provider: `name`, `displayName` and [`dataType`](https://learn.microsoft.com/en-us/power-apps/developer/component-framework/manifest-schema-reference/type) + +You can also specify virtual columns by ending the column name with `__virtual` suffix. This will let the provider know that it should not try to fetch any metadata for the column and it is up to you to specify them. You can then perform actions (`setValue`, `getValue`) on this column, just like on the classic one. + +## Entity Metadata + +Entity Metadata binding allows you to define/override any [Xrm Entity Metadata](https://learn.microsoft.com/en-us/dotnet/api/microsoft.xrm.sdk.metadata.entitymetadata?view=dataverse-sdk-latest). For example, you can change the `DisplayCollectionName`, so the UI can better describe your dataset. For Memory Provider, it is **required** to specify the `PrimaryIdAttribute` prop. The binding accepts a stringified JSON object that corresponts to the [Xrm Entity Metadata](https://learn.microsoft.com/en-us/dotnet/api/microsoft.xrm.sdk.metadata.entitymetadata?view=dataverse-sdk-latest) interface. + +## Bindings Summary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Property NameDescriptionOf TypeInputOutputUsageRequired
bindingFieldBinding FieldSingleLine.TextN/AN/Aboundtrue
DataProviderData Provider that the control will use to fetch data.Enum ("Memory" | "FetchXml")"FetchXml"N/Ainputtrue
DataData Source depending on the provider (FetchXml for FetchXml Provider, JSON array for Memory Provider).Multiple"<fetch><entity name="account"><attribute name="name"/></entity></fetch>"N/Ainputtrue
ColumnsJSON array containing the column definitions.Multiple[{"name": "name", "isHidden": false}]N/Ainputtrue
Entity MetadataOptional property allowing you to override/define Entity MetadataMultiple{"DisplayCollectionName": "Custom Collection Name"}N/Ainputfalse
HeightCan be used to force the control to always stay at fixed height.SingleLine.Text500pxN/Ainputfalse
EnableEditingEnable or disable editing functionality in the control.Enum ("Yes" | "No")"Yes"N/Ainputfalse
EnablePaginationEnable or disable pagination in the control.Enum ("Yes" | "No")"Yes"N/Ainputfalse
EnableFilteringEnable or disable filtering options in the control.Enum ("Yes" | "No")"Yes"N/Ainputfalse
EnableSortingEnable or disable sorting options in the control.Enum ("Yes" | "No")"Yes"N/Ainputfalse
EnableNavigationEnable or disable navigation options in the control.Enum ("Yes" | "No")"Yes"N/Ainputfalse
EnableOptionSetColorsEnable or disable OptionSet colors in the control.Enum ("Yes" | "No")"No"N/Ainputfalse
SelectableRowsDefines if and how rows can be selected.Enum ("None" | "Single" | "Multiple")"Single"N/Ainputfalse
EnableQuickFindEnable or disable the Quick Find feature in the control.Enum ("Yes" | "No")"No"N/Ainputfalse
+ +> **_NOTE:_** You can quickly demo the control locally through [PCF local harness](https://learn.microsoft.com/en-us/power-apps/developer/component-framework/debugging-custom-controls). Just make sure you switch the `_mock` variable `true`. + + + + + + + +