diff --git a/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/grid_fully_custom_ribbon.png b/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/grid_fully_custom_ribbon.png new file mode 100644 index 000000000..3e25b1ed8 Binary files /dev/null and b/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/grid_fully_custom_ribbon.png differ diff --git a/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/grid_native_custom_ribbon.png b/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/grid_native_custom_ribbon.png new file mode 100644 index 000000000..616b5ed80 Binary files /dev/null and b/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/grid_native_custom_ribbon.png differ diff --git a/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/grouping_aggregations.png b/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/grouping_aggregations.png new file mode 100644 index 000000000..9f0b7430c Binary files /dev/null and b/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/grouping_aggregations.png differ diff --git a/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/inline_ribbon.png b/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/inline_ribbon.png new file mode 100644 index 000000000..8ea54899a Binary files /dev/null and b/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/inline_ribbon.png differ diff --git a/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/ribbon.png b/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/ribbon.png new file mode 100644 index 000000000..08f0e729f Binary files /dev/null and b/src/.vuepress/public/.attachments/applications/Controls/VirtualDataset/ribbon.png differ diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/CellCustomizers/general.md b/src/en/developer-guide/applications/controls/VirtualDataset/CellCustomizers/general.md index c92b22ff3..11256566f 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/CellCustomizers/general.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/CellCustomizers/general.md @@ -156,6 +156,86 @@ record.expressions.ui.setHeightExpression('talxis_singlelinetext', () => 50); ``` ![Control customizer](/.attachments/applications/Controls/VirtualDataset/custom_control_formatting.gif) +### Custom Ribbon PCF + +Since Ribbon column is treated like any other column, you can also assign a custom PCF to it. This allows you to create unique Ribbon buttons that align with your specific requirements. You can either create a fuly custom UI or leverage the `GridInlineRibbon` Base Control to build upon the existing Ribbon UI. + +```json +{ + "name": "_talxis_gridRibbonButtons", + "dataType": "SingleLine.Text", + "controls": [ + { + "appliesTo": "renderer", + "name": "talxis_TALXIS.PCF.CustomRibbonDemo", + "bindings": { + } + } + ] + } +``` +**Custom Ribbon Column Definition** + +```typescript +public updateView(context: ComponentFramework.Context): void { + ReactDOM.render( + React.createElement(GridInlineRibbon, { + context: context, + parameters: { + Record: context.parameters.Record, + CommandButtonIds: context.parameters.CommandButtonIds, + Dataset: context.parameters.Dataset + }, + onOverrideComponentProps: (props) => { + return { + onRender: (props, defaultRender) => { + return defaultRender({ + ...props, + onRenderRibbon: (props, defaultRender) => { + return defaultRender({ + ...props, + onRenderCommandBar: (props, defaultRender) => { + if (context.parameters.Type?.raw === 'custom') { + return React.createElement(CustomButtons, { + context: context, + items: props.items + }); + } + return defaultRender({ + ...props, + items: props.items.map((item) => { + return { + ...item, + iconProps: {}, + className: mergeStyles({ + '.ms-Button-label': { + fontWeight: 600 + } + }), + text: `${this._getEmojiFromString(item.text!)} ${item.text}`, + }; + }) + }); + } + }); + } + }); + } + }; + } + } as IGridInlineRibbon), + this._container + ); +} +``` +*Rendering of Custom Ribbon* + +![Control customizer](/.attachments/applications/Controls/VirtualDataset/grid_native_custom_ribbon.png) +*Customized native grid renderer* + +![Custom Ribbon](/.attachments/applications/Controls/VirtualDataset/grid_fully_custom_ribbon.png) +*Fully custom Ribbon PCF* + ### Default Bindings When the PCF is rendered as cell control, it will always receive these **bindings** in PCF context: @@ -175,6 +255,7 @@ When the PCF is rendered as cell control, it will always receive these **binding | `IsInlineNewEnabled` | Whether new records can be created from the control. (Lookup only) | | `EnableTypeSuffix` | Whether the data type related suffix should be displayed, such as an icon for a Phone field. | | `EnableOptionSetColors`| Whether the control should display option set value colors (OptionSet only) | +| `ShouldUnmountWhenOutputChanges`| Whether the control will unmount once a value is outputed | The PCF will also receive `isControlDisabled` within `context.mode`. It's value depends on the control's role: @@ -219,39 +300,6 @@ When using a PCF control as a cell renderer, ensuring a fast render cycle is cri To improve performance and speed up development, you can leverage the native cell renderer in your custom PCF. You can access it via the `GridCellRenderer` Base Control. It’s designed with performance in mind and you can simply customize it through the `onOverrideComponentProps` prop. -```typescript -interface ICustomCellRendererWrapper { - context: ComponentFramework.Context; -} - -export const CustomCellRendererWrapper = (props: ICustomCellRendererWrapper) => { - const { context } = { ...props }; - const formattedValue = context.parameters.value.formatted; - - return ( - { - return { - ...props, - contentWrapperProps: { - ...props.contentWrapperProps, - children: ( - - ), - }, - }; - }} - /> - ); -}; -``` -*The code snippet above utilizes the native cell renderer but replaces its content with a custom button. Since the button is embedded within the native renderer, it inherits all the styling applied at higher layers, such as padding and alignment.* - -![PCF cell renderer](/.attachments/applications/Controls/VirtualDataset/customizer_renderer.gif) > **_NOTE:_** The same concept applies to cell editors. Each native editor is managed through a Base Control, which you can utilize and tailor within your editor PCF. For instance, `talxis_TALXIS.PCF.ColorPicker` leverages the `TextField` Base Control and customizes it to suit it's needs. 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 index f7be1edcb..593cd9aae 100644 --- 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 @@ -4,6 +4,10 @@ Provides functionality to use fetchXml as a data source. - `DataProvider` +## Implements + +- [`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md) + ## Constructors ### new FetchXmlDataProvider() @@ -28,148 +32,191 @@ Allows yout to use fetchXml as Data Source. #### Defined in -src/utils/dataset/data-providers/FetchXmlDataProvider/FetchXmlDataProvider.ts:56 +src/utils/dataset/data-providers/FetchXmlDataProvider/FetchXmlDataProvider.ts:42 -## Methods +## Accessors -### addEventListener() +### aggregation -> **addEventListener**\<`K`\>(`event`, `eventListener`): `void` +> `get` **aggregation**(): [`IAggregation`](../interfaces/IAggregation.md) -Allows defining a listener method that will trigger when a specific event occurs. +Dataset aggregations. -#### Type Parameters +#### Returns -• **K** *extends* keyof [`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md) +[`IAggregation`](../interfaces/IAggregation.md) -#### Parameters +Dataset aggregations. + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`aggregation`](../interfaces/IFetchXmlDataProvider.md#aggregation) + +#### Inherited from + +`DataProvider.aggregation` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:410 + +*** -• **event**: `K` +### grouping -• **eventListener**: [`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md)\[`K`\] +> `get` **grouping**(): [`IGrouping`](../interfaces/IGrouping.md) + +Dataset grouping. #### Returns -`void` +[`IGrouping`](../interfaces/IGrouping.md) + +Dataset grouping. + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`grouping`](../interfaces/IFetchXmlDataProvider.md#grouping) #### Inherited from -`DataProvider.addEventListener` +`DataProvider.grouping` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:284 +src/utils/dataset/data-providers/DataProvider.ts:442 -*** +## Methods ### clearChanges() > **clearChanges**(): `void` -Clears any changes in the dataset, resetting all record values to their initial state. +Clears all unsaved changes in the data provider. #### Returns `void` +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`clearChanges`](../interfaces/IFetchXmlDataProvider.md#clearchanges) + #### Inherited from `DataProvider.clearChanges` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:326 +src/utils/dataset/data-providers/DataProvider.ts:743 *** -### destroy() +### clearSelectedRecordIds() -> **destroy**(): `void` +> **clearSelectedRecordIds**(): `void` -Call to destroy the provider. +Clears the currently selected record IDs. +been used to create the child data provider. #### Returns `void` +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`clearSelectedRecordIds`](../interfaces/IFetchXmlDataProvider.md#clearselectedrecordids) + #### Inherited from -`DataProvider.destroy` +`DataProvider.clearSelectedRecordIds` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:74 +src/utils/dataset/data-providers/DataProvider.ts:707 *** -### fireEventListeners() - -> **fireEventListeners**\<`K`\>(`event`, ...`par`): `ReturnType`\<[`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md)\[`K`\]\>[] - -Fires event listeners for a specific event. +### createGroupedRecordDataProvider() -#### Type Parameters +> **createGroupedRecordDataProvider**(`group`): [`IDataProvider`](../interfaces/IDataProvider.md) -• **K** *extends* keyof [`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md) +Returns a child data provider that can be used to retrieve grouped records. If a provider for this group already exists, it will be returned instead. #### Parameters -• **event**: `K` +• **group**: [`IRecord`](../interfaces/IRecord.md) -• ...**par**: `Parameters`\<[`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md)\[`K`\]\> +The record representing the group for which to retrieve child records. #### Returns -`ReturnType`\<[`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md)\[`K`\]\>[] +[`IDataProvider`](../interfaces/IDataProvider.md) + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`createGroupedRecordDataProvider`](../interfaces/IFetchXmlDataProvider.md#creategroupedrecorddataprovider) #### Inherited from -`DataProvider.fireEventListeners` +`DataProvider.createGroupedRecordDataProvider` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:331 +src/utils/dataset/data-providers/DataProvider.ts:542 *** -### getAllDefinedColumns() +### createNewDataProvider() + +> **createNewDataProvider**(`eventBubbleOptions`?): [`IDataProvider`](../interfaces/IDataProvider.md) -> **getAllDefinedColumns**(): [`IColumn`](../interfaces/IColumn.md)[] +Creates new Data Provider with the same settings as current one. +eventBubbleOptions - Options to control which events should bubble up from the new data provider to the parent. -Same as `getColumns`, but it additionaly returns columns that have previously been defined as well. For example, if a column is removed -via `setColumns`, it will no longer appear in `getColumns` result, but it will still be redurned with `getAllDefinedColumns`. +#### Parameters + +• **eventBubbleOptions?**: [`IEventBubbleOptions`](../interfaces/IEventBubbleOptions.md) #### Returns -[`IColumn`](../interfaces/IColumn.md)[] +[`IDataProvider`](../interfaces/IDataProvider.md) + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`createNewDataProvider`](../interfaces/IFetchXmlDataProvider.md#createnewdataprovider) #### Inherited from -`DataProvider.getAllDefinedColumns` +`DataProvider.createNewDataProvider` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:222 +src/utils/dataset/data-providers/DataProvider.ts:505 *** -### getChanges() +### destroy() -> **getChanges**(): `object` +> **destroy**(): `void` -Retrieves the changes made to the records in the dataset. +Destroys the provider and clears all resources. #### Returns -`object` +`void` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`destroy`](../interfaces/IFetchXmlDataProvider.md#destroy) #### Inherited from -`DataProvider.getChanges` +`DataProvider.destroy` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:311 +src/utils/dataset/data-providers/DataProvider.ts:96 *** @@ -177,13 +224,15 @@ src/utils/dataset/data-providers/DataProvider.ts:311 > **getColumns**(): [`IColumn`](../interfaces/IColumn.md)[] -Returns column information, such as column names and data types. +Returns current columns #### Returns [`IColumn`](../interfaces/IColumn.md)[] -An array of column information objects. +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getColumns`](../interfaces/IFetchXmlDataProvider.md#getcolumns) #### Inherited from @@ -191,459 +240,1179 @@ An array of column information objects. #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:213 +src/utils/dataset/data-providers/DataProvider.ts:262 *** -### getCurrencies() +### getColumnsMap() -> **getCurrencies**(): [`ICurrency`](../interfaces/ICurrency.md)[] +> **getColumnsMap**(): `object` -Gets the currencies the provider is able to work with. +Returns a map of all columns that have been defined for the provider. Also includes columns that have been deleted via `setColumns`. #### Returns -[`ICurrency`](../interfaces/ICurrency.md)[] +`object` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getColumnsMap`](../interfaces/IFetchXmlDataProvider.md#getcolumnsmap) #### Inherited from -`DataProvider.getCurrencies` +`DataProvider.getColumnsMap` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:256 +src/utils/dataset/data-providers/DataProvider.ts:763 *** -### getEntityName() +### getCurrencies() -> **getEntityName**(): `string` +> **getCurrencies**(): [`ICurrency`](../interfaces/ICurrency.md)[] -Returns the name of the associated entity. +Gets the currencies the provider is able to work with. #### Returns -`string` +[`ICurrency`](../interfaces/ICurrency.md)[] -The entity name. +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getCurrencies`](../interfaces/IFetchXmlDataProvider.md#getcurrencies) #### Inherited from -`DataProvider.getEntityName` +`DataProvider.getCurrencies` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:126 +src/utils/dataset/data-providers/DataProvider.ts:302 *** -### getErrorMessage() +### getCurrentFetchXml() -> **getErrorMessage**(): `string` +> **getCurrentFetchXml**(): `string` -Returns the error message from the last data retrieval attempt, if any. +Returns the current FetchXML query string. #### Returns `string` -#### Inherited from +#### Implementation of -`DataProvider.getErrorMessage` +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getCurrentFetchXml`](../interfaces/IFetchXmlDataProvider.md#getcurrentfetchxml) #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:108 +src/utils/dataset/data-providers/FetchXmlDataProvider/FetchXmlDataProvider.ts:259 *** -### getFiltering() +### getCustomProperty() -> **getFiltering**(): `null` \| `FilterExpression` +> **getCustomProperty**(`name`): `any` -Gets the current filtering. +Gets a custom property from the data provider. + +#### Parameters + +• **name**: `string` #### Returns -`null` \| `FilterExpression` +`any` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getCustomProperty`](../interfaces/IFetchXmlDataProvider.md#getcustomproperty) #### Inherited from -`DataProvider.getFiltering` +`DataProvider.getCustomProperty` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:235 +src/utils/dataset/data-providers/DataProvider.ts:191 *** -### getLinking() +### getDirtyRecordIds() -> **getLinking**(): `LinkEntityExposedExpression`[] +> **getDirtyRecordIds**(): `string`[] -Retrieves the link entity expressions used to join related entities. +Returns the IDs of records that have unsaved changes. #### Returns -`LinkEntityExposedExpression`[] +`string`[] + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getDirtyRecordIds`](../interfaces/IFetchXmlDataProvider.md#getdirtyrecordids) #### Inherited from -`DataProvider.getLinking` +`DataProvider.getDirtyRecordIds` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:247 +src/utils/dataset/data-providers/DataProvider.ts:352 *** -### getPaging() +### getEntityName() -> **getPaging**(): `Paging` & `object` +> **getEntityName**(): `string` -Returns paging information (like page number, total pages, etc.). +Returns the name of the associated entity. #### Returns -`Paging` & `object` +`string` + +The entity name. + +#### Implementation of -The paging information. +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getEntityName`](../interfaces/IFetchXmlDataProvider.md#getentityname) #### Inherited from -`DataProvider.getPaging` +`DataProvider.getEntityName` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:166 +src/utils/dataset/data-providers/DataProvider.ts:156 *** -### getRawData() +### getErrorMessage() -> **getRawData**(): `null` \| `object`[] +> **getErrorMessage**(): `string` -Retrieves raw provider data. +Returns the error message from the last data retrieval attempt, if any. #### Returns -`null` \| `object`[] +`string` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getErrorMessage`](../interfaces/IFetchXmlDataProvider.md#geterrormessage) #### Inherited from -`DataProvider.getRawData` +`DataProvider.getErrorMessage` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:149 +src/utils/dataset/data-providers/DataProvider.ts:139 *** -### getRawRecordData() +### getFiltering() -> **getRawRecordData**(`recordId`): `null` \| `object` +> **getFiltering**(): `null` \| `FilterExpression` -Retrieves the raw record data for a given record by its ID. +Gets the current filtering. -#### Parameters +#### Returns -• **recordId**: `string` +`null` \| `FilterExpression` -#### Returns +#### Implementation of -`null` \| `object` +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getFiltering`](../interfaces/IFetchXmlDataProvider.md#getfiltering) #### Inherited from -`DataProvider.getRawRecordData` +`DataProvider.getFiltering` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:146 +src/utils/dataset/data-providers/DataProvider.ts:280 *** -### getRecordCurrencySymbol() +### getGroupedRecordDataProvider() -> **getRecordCurrencySymbol**(`record`, `columnName`): `string` +> **getGroupedRecordDataProvider**(`groupedRecordId`): `null` \| [`IDataProvider`](../interfaces/IDataProvider.md) -Retrieves the currency symbol for a specific column in a record. +Returns a child data provider for a specific parent record ID. #### Parameters -• **record**: [`IRecord`](../interfaces/IRecord.md) - -• **columnName**: `string` +• **groupedRecordId**: `string` #### Returns -`string` +`null` \| [`IDataProvider`](../interfaces/IDataProvider.md) + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getGroupedRecordDataProvider`](../interfaces/IFetchXmlDataProvider.md#getgroupedrecorddataprovider) #### Inherited from -`DataProvider.getRecordCurrencySymbol` +`DataProvider.getGroupedRecordDataProvider` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:262 +src/utils/dataset/data-providers/DataProvider.ts:538 *** -### getRecords() +### getGroupedRecordDataProviders() -> **getRecords**(): [`IRecord`](../interfaces/IRecord.md)[] +> **getGroupedRecordDataProviders**(`allLevels`?): [`IDataProvider`](../interfaces/IDataProvider.md)[] -Returns the list of records. +Returns all direct grouped records data providers. + +#### Parameters + +• **allLevels?**: `boolean` + +If true, returns grouped record providers at all levels. If false, returns only direct children. #### Returns -[`IRecord`](../interfaces/IRecord.md)[] +[`IDataProvider`](../interfaces/IDataProvider.md)[] -A list of records. +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getGroupedRecordDataProviders`](../interfaces/IFetchXmlDataProvider.md#getgroupedrecorddataproviders) #### Inherited from -`DataProvider.getRecords` +`DataProvider.getGroupedRecordDataProviders` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:205 +src/utils/dataset/data-providers/DataProvider.ts:494 *** -### getSearchQuery() +### getInvalidRecordIds() -> **getSearchQuery**(): `string` +> **getInvalidRecordIds**(): `string`[] -Retrieves the search query string. +Returns the IDs of records that have invalid values. #### Returns -`string` +`string`[] + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getInvalidRecordIds`](../interfaces/IFetchXmlDataProvider.md#getinvalidrecordids) #### Inherited from -`DataProvider.getSearchQuery` +`DataProvider.getInvalidRecordIds` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:241 +src/utils/dataset/data-providers/DataProvider.ts:739 *** -### getSorting() +### getLinking() -> **getSorting**(): `SortStatus`[] +> **getLinking**(): `LinkEntityExposedExpression`[] -Retrieves the current sorting criteria. +Retrieves the link entity expressions used to join related entities. #### Returns -`SortStatus`[] +`LinkEntityExposedExpression`[] + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getLinking`](../interfaces/IFetchXmlDataProvider.md#getlinking) #### Inherited from -`DataProvider.getSorting` +`DataProvider.getLinking` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:238 +src/utils/dataset/data-providers/DataProvider.ts:292 *** -### getTitle() +### getNestingLevel() -> **getTitle**(): `string` +> **getNestingLevel**(): `number` -Returns the title provided by the data provider. +Returns how deep the data provider is nested. #### Returns -`string` +`number` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getNestingLevel`](../interfaces/IFetchXmlDataProvider.md#getnestinglevel) #### Inherited from -`DataProvider.getTitle` +`DataProvider.getNestingLevel` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:138 +src/utils/dataset/data-providers/DataProvider.ts:731 *** -### getViewId() +### getPaging() -> **getViewId**(): `string` +> **getPaging**(): `object` -Returns the ID of the current view. +Returns paging information (like page number, total pages, etc.). #### Returns -`string` +`object` -#### Inherited from +The paging information. -`DataProvider.getViewId` +##### firstPageNumber -#### Defined in +> **firstPageNumber**: `number` -src/utils/dataset/data-providers/DataProvider.ts:130 +##### hasNextPage -*** +> **hasNextPage**: `boolean` -### hasInvalidChanges() +##### hasPreviousPage -> **hasInvalidChanges**(): `boolean` +> **hasPreviousPage**: `boolean` -Whether the dataset has any records with invalid values. +##### lastPageNumber -#### Returns +> **lastPageNumber**: `number` -`boolean` +##### loadExactPage() -#### Inherited from +> **loadExactPage**: (`pageNumber`) => `Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> -`DataProvider.hasInvalidChanges` +###### Parameters -#### Defined in +• **pageNumber**: `number` -src/utils/dataset/data-providers/DataProvider.ts:292 +###### Returns -*** +`Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> -### isDirty() +##### loadNextPage() -> **isDirty**(): `boolean` +> **loadNextPage**: () => `Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> -Checks if the dataset has unsaved changes. +###### Returns -#### Returns +`Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> -`boolean` +##### loadPreviousPage() -#### Inherited from +> **loadPreviousPage**: () => `Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> -`DataProvider.isDirty` +###### Returns -#### Defined in +`Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> -src/utils/dataset/data-providers/DataProvider.ts:295 +##### pageNumber -*** +> **pageNumber**: `number` -### isError() +##### pageSize -> **isError**(): `boolean` +> **pageSize**: `number` -Returns true if an error occurred during the last data retrieval process. +##### reset() -#### Returns +> **reset**: () => `void` -`boolean` +###### Returns -#### Inherited from +`void` -`DataProvider.isError` +##### setPageNumber() -#### Defined in +> **setPageNumber**: (`pageNumber`) => `void` -src/utils/dataset/data-providers/DataProvider.ts:111 +###### Parameters -*** +• **pageNumber**: `number` -### isLoading() +###### Returns -> **isLoading**(): `boolean` +`void` -Indicates whether the data provider is currently loading. +##### setPageSize() -#### Returns +> **setPageSize**: (`pageSize`) => `void` -`boolean` +###### Parameters -True if loading, false otherwise. +• **pageSize**: `number` + +###### Returns + +`void` + +##### totalResultCount + +> **totalResultCount**: `number` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getPaging`](../interfaces/IFetchXmlDataProvider.md#getpaging) #### Inherited from -`DataProvider.isLoading` +`DataProvider.getPaging` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:250 +src/utils/dataset/data-providers/DataProvider.ts:231 *** -### isValid() +### getParentDataProvider() -> **isValid**(): `boolean` +> **getParentDataProvider**(): `null` \| [`IDataProvider`](../interfaces/IDataProvider.md) -Whether the provider contains only valid values. +Gets the provider that has been used to create this data provider. #### Returns -`boolean` +`null` \| [`IDataProvider`](../interfaces/IDataProvider.md) + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getParentDataProvider`](../interfaces/IFetchXmlDataProvider.md#getparentdataprovider) #### Inherited from -`DataProvider.isValid` +`DataProvider.getParentDataProvider` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:298 +src/utils/dataset/data-providers/DataProvider.ts:615 *** -### refresh() +### getParentRecordId() -> **refresh**(): `Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> +> **getParentRecordId**(): `string` -Refreshes the records list and returns the refreshed records. +Returns the parent record ID, if this data provider is a child of another data provider. #### Returns -`Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> +`string` -A promise resolving to a list of refreshed records. +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getParentRecordId`](../interfaces/IFetchXmlDataProvider.md#getparentrecordid) #### Inherited from -`DataProvider.refresh` +`DataProvider.getParentRecordId` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:153 +src/utils/dataset/data-providers/DataProvider.ts:735 *** -### setColumns() +### getProperty() + +> **getProperty**\<`K`\>(`name`): [`IDataProviderProperties`](../interfaces/IDataProviderProperties.md)\[`K`\] + +Gets the defined property. -> **setColumns**(`columns`): `void` +#### Type Parameters -Sets the columns for the dataset. +• **K** *extends* keyof [`IDataProviderProperties`](../interfaces/IDataProviderProperties.md) #### Parameters -• **columns**: [`IColumn`](../interfaces/IColumn.md)[] +• **name**: `K` #### Returns -`void` +[`IDataProviderProperties`](../interfaces/IDataProviderProperties.md)\[`K`\] + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getProperty`](../interfaces/IFetchXmlDataProvider.md#getproperty) #### Inherited from -`DataProvider.setColumns` +`DataProvider.getProperty` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:218 +src/utils/dataset/data-providers/DataProvider.ts:182 *** -### setCurrencies() +### getQuickFindColumns() -> **setCurrencies**(`currencies`): `void` +> **getQuickFindColumns**(): [`IColumn`](../interfaces/IColumn.md)[] -Sets the currencies the dataset can work with. +Returns the columns that are used for quick find search. + +#### Returns + +[`IColumn`](../interfaces/IColumn.md)[] + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getQuickFindColumns`](../interfaces/IFetchXmlDataProvider.md#getquickfindcolumns) + +#### Inherited from + +`DataProvider.getQuickFindColumns` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:781 + +*** + +### getRawData() + +> **getRawData**(): [`IRawRecord`](../interfaces/IRawRecord.md)[] + +Returns an array of raw data records. + +#### Returns + +[`IRawRecord`](../interfaces/IRawRecord.md)[] + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getRawData`](../interfaces/IFetchXmlDataProvider.md#getrawdata) + +#### Inherited from + +`DataProvider.getRawData` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:176 + +*** + +### getRawDataMap() + +> **getRawDataMap**(): `object` + +Same as `getRawData`, but returns a map instead of array for fast lookups. + +#### Returns + +`object` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getRawDataMap`](../interfaces/IFetchXmlDataProvider.md#getrawdatamap) + +#### Inherited from + +`DataProvider.getRawDataMap` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:194 + +*** + +### getRecordCurrencySymbol() + +> **getRecordCurrencySymbol**(`record`, `columnName`): `string` + +Retrieves the currency symbol for a specific column in a record. + +#### Parameters + +• **record**: [`IRecord`](../interfaces/IRecord.md) + +• **columnName**: `string` + +#### Returns + +`string` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getRecordCurrencySymbol`](../interfaces/IFetchXmlDataProvider.md#getrecordcurrencysymbol) + +#### Inherited from + +`DataProvider.getRecordCurrencySymbol` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:311 + +*** + +### getRecordIndex() + +> **getRecordIndex**(`recordId`): `number` + +Returns array index of a record by it's ID. This index corresponds to the record's position in an array that's return by the + +#### Parameters + +• **recordId**: `string` + +#### Returns + +`number` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getRecordIndex`](../interfaces/IFetchXmlDataProvider.md#getrecordindex) + +#### Inherited from + +`DataProvider.getRecordIndex` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:755 + +*** + +### getRecords() + +> **getRecords**(): [`IRecord`](../interfaces/IRecord.md)[] + +Returns the list of records. + +#### Returns + +[`IRecord`](../interfaces/IRecord.md)[] + +A list of records. + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getRecords`](../interfaces/IFetchXmlDataProvider.md#getrecords) + +#### Inherited from + +`DataProvider.getRecords` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:711 + +*** + +### getSearchQuery() + +> **getSearchQuery**(): `string` + +Retrieves the search query string. + +#### Returns + +`string` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getSearchQuery`](../interfaces/IFetchXmlDataProvider.md#getsearchquery) + +#### Inherited from + +`DataProvider.getSearchQuery` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:286 + +*** + +### getSelectedRecordIds() + +> **getSelectedRecordIds**(`options`?): `string`[] + +Returns the currently selected record IDs. + +#### Parameters + +• **options?** + +• **options.includeChildrenRecordIds?**: `boolean` + +If true, includes record IDs from child data providers. Defaults to `true`. + +• **options.includeGroupRecordIds?**: `boolean` + +If true, includes group record IDs in the result. Defaults to `false`. + +#### Returns + +`string`[] + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getSelectedRecordIds`](../interfaces/IFetchXmlDataProvider.md#getselectedrecordids) + +#### Inherited from + +`DataProvider.getSelectedRecordIds` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:635 + +*** + +### getSortedRecordIds() + +> **getSortedRecordIds**(): `string`[] + +Returns the current record IDs sorted by the current sorting criteria. + +#### Returns + +`string`[] + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getSortedRecordIds`](../interfaces/IFetchXmlDataProvider.md#getsortedrecordids) + +#### Inherited from + +`DataProvider.getSortedRecordIds` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:631 + +*** + +### getSorting() + +> **getSorting**(): `SortStatus`[] + +Retrieves the current sorting criteria. + +#### Returns + +`SortStatus`[] + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getSorting`](../interfaces/IFetchXmlDataProvider.md#getsorting) + +#### Inherited from + +`DataProvider.getSorting` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:283 + +*** + +### getSummarizationType() + +> **getSummarizationType**(): [`DataProviderSummarizationType`](../type-aliases/DataProviderSummarizationType.md) + +What type of summary operations this provider has applied. +- `none` - no summarization is applied +- `aggregation` - only aggregation is applied, such as sum, average, etc (no grouping). +- `grouping` - grouping is applied, aggregation can be applied as well + +#### Returns + +[`DataProviderSummarizationType`](../type-aliases/DataProviderSummarizationType.md) + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getSummarizationType`](../interfaces/IFetchXmlDataProvider.md#getsummarizationtype) + +#### Inherited from + +`DataProvider.getSummarizationType` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:619 + +*** + +### getTitle() + +> **getTitle**(): `string` + +Returns the title provided by the data provider. + +#### Returns + +`string` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getTitle`](../interfaces/IFetchXmlDataProvider.md#gettitle) + +#### Inherited from + +`DataProvider.getTitle` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:168 + +*** + +### getTopLevelDataProvider() + +> **getTopLevelDataProvider**(): [`IDataProvider`](../interfaces/IDataProvider.md) + +If called on a nested data provider, returns the top-level data provider that servers as the root ancestor for all nested data providers. +I called from a top-level data provider, it returns itself. + +#### Returns + +[`IDataProvider`](../interfaces/IDataProvider.md) + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getTopLevelDataProvider`](../interfaces/IFetchXmlDataProvider.md#gettopleveldataprovider) + +#### Inherited from + +`DataProvider.getTopLevelDataProvider` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:603 + +*** + +### getViewId() + +> **getViewId**(): `string` + +Returns the ID of the current view. + +#### Returns + +`string` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`getViewId`](../interfaces/IFetchXmlDataProvider.md#getviewid) + +#### Inherited from + +`DataProvider.getViewId` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:160 + +*** + +### isDestroyed() + +> **isDestroyed**(): `boolean` + +Whether the data provider has been destroyed. + +#### Returns + +`boolean` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`isDestroyed`](../interfaces/IFetchXmlDataProvider.md#isdestroyed) + +#### Inherited from + +`DataProvider.isDestroyed` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:179 + +*** + +### isDirty() + +> **isDirty**(): `boolean` + +Checks if the dataset has unsaved changes. + +#### Returns + +`boolean` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`isDirty`](../interfaces/IFetchXmlDataProvider.md#isdirty) + +#### Inherited from + +`DataProvider.isDirty` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:339 + +*** + +### isError() + +> **isError**(): `boolean` + +Returns true if an error occurred during the last data retrieval process. + +#### Returns + +`boolean` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`isError`](../interfaces/IFetchXmlDataProvider.md#iserror) + +#### Inherited from + +`DataProvider.isError` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:142 + +*** + +### isLoading() + +> **isLoading**(): `boolean` + +Indicates whether the data provider is currently loading. + +#### Returns + +`boolean` + +True if loading, false otherwise. + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`isLoading`](../interfaces/IFetchXmlDataProvider.md#isloading) + +#### Inherited from + +`DataProvider.isLoading` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:295 + +*** + +### isTopLevelDataProvider() + +> **isTopLevelDataProvider**(): `boolean` + +Returns true if the data provider is a top-level data provider (not a child of another data provider). + +#### Returns + +`boolean` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`isTopLevelDataProvider`](../interfaces/IFetchXmlDataProvider.md#istopleveldataprovider) + +#### Inherited from + +`DataProvider.isTopLevelDataProvider` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:611 + +*** + +### isValid() + +> **isValid**(): `boolean` + +Whether the provider contains only valid values. + +#### Returns + +`boolean` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`isValid`](../interfaces/IFetchXmlDataProvider.md#isvalid) + +#### Inherited from + +`DataProvider.isValid` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:349 + +*** + +### openDatasetItem() + +> **openDatasetItem**(`entityReference`): `void` + +Can be used to specify what default action happens for record opening on a specific provider. + +#### Parameters + +• **entityReference**: `EntityReference` + +#### Returns + +`void` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`openDatasetItem`](../interfaces/IFetchXmlDataProvider.md#opendatasetitem) + +#### Inherited from + +`DataProvider.openDatasetItem` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:87 + +*** + +### refresh() + +> **refresh**(): `Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> + +Refreshes the records list and returns the refreshed records. + +#### Returns + +`Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> + +A promise resolving to a list of refreshed records. + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`refresh`](../interfaces/IFetchXmlDataProvider.md#refresh) + +#### Inherited from + +`DataProvider.refresh` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:197 + +*** + +### requestRender() + +> **requestRender**(): `void` + +Request a render of all components subscribed to the `onRenderRequested` event. + +#### Returns + +`void` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`requestRender`](../interfaces/IFetchXmlDataProvider.md#requestrender) + +#### Inherited from + +`DataProvider.requestRender` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:355 + +*** + +### retrieveRecordCommand() + +> **retrieveRecordCommand**(`options`?): `Promise`\<[`ICommand`](../interfaces/ICommand.md)[]\> + +Retrieve record's associated commands. This method should be used to fetch inline ribbon. + +#### Parameters + +• **options?**: [`IRetrieveRecordCommandOptions`](../interfaces/IRetrieveRecordCommandOptions.md) + +#### Returns + +`Promise`\<[`ICommand`](../interfaces/ICommand.md)[]\> + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`retrieveRecordCommand`](../interfaces/IFetchXmlDataProvider.md#retrieverecordcommand) + +#### Inherited from + +`DataProvider.retrieveRecordCommand` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:359 + +*** + +### save() + +> **save**(`records`?): `Promise`\<[`IRecordSaveOperationResult`](../interfaces/IRecordSaveOperationResult.md)[]\> + +Saves the provided record to the database. + +#### Parameters + +• **records?**: [`IRecord`](../interfaces/IRecord.md)[] + +The records to save. If not provided, all dirty records will be saved. + +#### Returns + +`Promise`\<[`IRecordSaveOperationResult`](../interfaces/IRecordSaveOperationResult.md)[]\> + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`save`](../interfaces/IFetchXmlDataProvider.md#save) + +#### Inherited from + +`DataProvider.save` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:382 + +*** + +### setCurrencies() + +> **setCurrencies**(`currencies`): `void` + +Sets the currencies the dataset can work with. #### Parameters @@ -653,13 +1422,47 @@ Sets the currencies the dataset can work with. `void` +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`setCurrencies`](../interfaces/IFetchXmlDataProvider.md#setcurrencies) + #### Inherited from `DataProvider.setCurrencies` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:259 +src/utils/dataset/data-providers/DataProvider.ts:305 + +*** + +### setCustomProperty() + +> **setCustomProperty**(`name`, `value`): `void` + +Allows you to set custom properties on the data provider. You can use this to store any custom information you need. + +#### Parameters + +• **name**: `string` + +• **value**: `any` + +#### Returns + +`void` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`setCustomProperty`](../interfaces/IFetchXmlDataProvider.md#setcustomproperty) + +#### Inherited from + +`DataProvider.setCustomProperty` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:188 *** @@ -679,13 +1482,17 @@ Sets the error state of the provider. `void` +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`setError`](../interfaces/IFetchXmlDataProvider.md#seterror) + #### Inherited from `DataProvider.setError` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:115 +src/utils/dataset/data-providers/DataProvider.ts:145 *** @@ -705,91 +1512,107 @@ The filtering criteria, or null if no filter is applied. `void` +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`setFiltering`](../interfaces/IFetchXmlDataProvider.md#setfiltering) + #### Inherited from `DataProvider.setFiltering` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:229 +src/utils/dataset/data-providers/DataProvider.ts:274 *** -### setInterceptor() - -> **setInterceptor**\<`K`\>(`name`, `interceptor`): `void` - -Allows you to define interceptors to customize data flows in Dataset. +### setLinking() -#### Type Parameters +> **setLinking**(`expr`): `void` -• **K** *extends* `"columns"` +Sets the link entity expressions for joining related entities. #### Parameters -• **name**: `K` - -• **interceptor**: [`IDatasetInterceptors`](../interfaces/IDatasetInterceptors.md)\[`K`\] +• **expr**: `LinkEntityExposedExpression`[] #### Returns `void` +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`setLinking`](../interfaces/IFetchXmlDataProvider.md#setlinking) + #### Inherited from -`DataProvider.setInterceptor` +`DataProvider.setLinking` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:288 +src/utils/dataset/data-providers/DataProvider.ts:277 *** -### setLinking() +### setLoading() -> **setLinking**(`expr`): `void` +> **setLoading**(`value`): `void` -Sets the link entity expressions for joining related entities. +Sets whether the data provider is currently loading. #### Parameters -• **expr**: `LinkEntityExposedExpression`[] +• **value**: `boolean` #### Returns `void` +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`setLoading`](../interfaces/IFetchXmlDataProvider.md#setloading) + #### Inherited from -`DataProvider.setLinking` +`DataProvider.setLoading` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:232 +src/utils/dataset/data-providers/DataProvider.ts:298 *** -### setLoading() +### setProperty() -> **setLoading**(`value`): `void` +> **setProperty**\<`K`\>(`name`, `value`): `void` -Sets whether the data provider is currently loading. +Allows settings of additional properties on data provider. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderProperties`](../interfaces/IDataProviderProperties.md) #### Parameters -• **value**: `boolean` +• **name**: `K` + +• **value**: [`IDataProviderProperties`](../interfaces/IDataProviderProperties.md)\[`K`\] #### Returns `void` +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`setProperty`](../interfaces/IFetchXmlDataProvider.md#setproperty) + #### Inherited from -`DataProvider.setLoading` +`DataProvider.setProperty` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:253 +src/utils/dataset/data-providers/DataProvider.ts:185 *** @@ -807,13 +1630,49 @@ Sets a new search query for filtering. `void` +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`setSearchQuery`](../interfaces/IFetchXmlDataProvider.md#setsearchquery) + #### Inherited from `DataProvider.setSearchQuery` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:244 +src/utils/dataset/data-providers/DataProvider.ts:289 + +*** + +### setSelectedRecordIds() + +> **setSelectedRecordIds**(`ids`, `options`?): `void` + +Sets the currently selected record IDs. + +#### Parameters + +• **ids**: `string`[] + +• **options?** + +• **options.\_\_bubbleUp?**: `boolean` + +#### Returns + +`void` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`setSelectedRecordIds`](../interfaces/IFetchXmlDataProvider.md#setselectedrecordids) + +#### Inherited from + +`DataProvider.setSelectedRecordIds` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:652 *** @@ -833,13 +1692,17 @@ The latest sorting details as an array of SortStatus objects. `void` +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`setSorting`](../interfaces/IFetchXmlDataProvider.md#setsorting) + #### Inherited from `DataProvider.setSorting` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:226 +src/utils/dataset/data-providers/DataProvider.ts:271 *** @@ -857,36 +1720,74 @@ Sets the dataset's title. `void` +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`setTitle`](../interfaces/IFetchXmlDataProvider.md#settitle) + #### Inherited from `DataProvider.setTitle` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:142 +src/utils/dataset/data-providers/DataProvider.ts:172 + +*** + +### setViewId() + +> **setViewId**(`viewId`): `string` + +Sets the id of the current view + +#### Parameters + +• **viewId**: `string` + +#### Returns + +`string` + +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`setViewId`](../interfaces/IFetchXmlDataProvider.md#setviewid) + +#### Inherited from + +`DataProvider.setViewId` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:164 *** -### toggleRecordFieldValidity() +### toggleSelectedRecordId() -> **toggleRecordFieldValidity**(`recordFieldId`, `isValid`): `void` +> **toggleSelectedRecordId**(`recordId`, `options`?): `void` -Internal method. Toggles whether a record field is valid or not. +Toggles the selection state of a record ID. #### Parameters -• **recordFieldId**: `string` +• **recordId**: `string` + +• **options?** -• **isValid**: `boolean` +• **options.clearExisting?**: `boolean` #### Returns `void` +#### Implementation of + +[`IFetchXmlDataProvider`](../interfaces/IFetchXmlDataProvider.md).[`toggleSelectedRecordId`](../interfaces/IFetchXmlDataProvider.md#toggleselectedrecordid) + #### Inherited from -`DataProvider.toggleRecordFieldValidity` +`DataProvider.toggleSelectedRecordId` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:302 +src/utils/dataset/data-providers/DataProvider.ts:691 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/FieldUi.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/FieldUi.md new file mode 100644 index 000000000..00f111350 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/FieldUi.md @@ -0,0 +1,137 @@ +Class representing the UI aspects of a field. + +## Implements + +- [`IColumnUi`](../interfaces/IColumnUi.md) + +## Methods + +### getControlParameters() + +> **getControlParameters**(`defaultParameters`): [`IControlParameters`](../interfaces/IControlParameters.md) + +Return the control parameters for a control. Includes possibe override from `setControlParametersExpression`. + +#### Parameters + +• **defaultParameters**: [`IControlParameters`](../interfaces/IControlParameters.md) + +#### Returns + +[`IControlParameters`](../interfaces/IControlParameters.md) + +#### Implementation of + +[`IColumnUi`](../interfaces/IColumnUi.md).[`getControlParameters`](../interfaces/IColumnUi.md#getcontrolparameters) + +#### Defined in + +src/utils/dataset/data-providers/Record/Field/FieldUi.ts:33 + +*** + +### getCustomControlComponent() + +> **getCustomControlComponent**(): `undefined` \| [`ICustomColumnComponent`](../interfaces/ICustomColumnComponent.md) + +Returns the custom component used for the column. + +#### Returns + +`undefined` \| [`ICustomColumnComponent`](../interfaces/ICustomColumnComponent.md) + +#### Implementation of + +[`IColumnUi`](../interfaces/IColumnUi.md).[`getCustomControlComponent`](../interfaces/IColumnUi.md#getcustomcontrolcomponent) + +#### Defined in + +src/utils/dataset/data-providers/Record/Field/FieldUi.ts:52 + +*** + +### getCustomControls() + +> **getCustomControls**(`defaultCustomControls`): [`ICustomColumnControl`](../interfaces/ICustomColumnControl.md)[] + +Returns all custom controls that can be used for this column. + +#### Parameters + +• **defaultCustomControls**: [`ICustomColumnControl`](../interfaces/ICustomColumnControl.md)[] + +#### Returns + +[`ICustomColumnControl`](../interfaces/ICustomColumnControl.md)[] + +#### Implementation of + +[`IColumnUi`](../interfaces/IColumnUi.md).[`getCustomControls`](../interfaces/IColumnUi.md#getcustomcontrols) + +#### Defined in + +src/utils/dataset/data-providers/Record/Field/FieldUi.ts:39 + +*** + +### getCustomFormatting() + +> **getCustomFormatting**(`cellTheme`): [`ICustomColumnFormatting`](../interfaces/ICustomColumnFormatting.md) + +Returns custo formatting for column, + +#### Parameters + +• **cellTheme**: `any` + +#### Returns + +[`ICustomColumnFormatting`](../interfaces/ICustomColumnFormatting.md) + +#### Implementation of + +[`IColumnUi`](../interfaces/IColumnUi.md).[`getCustomFormatting`](../interfaces/IColumnUi.md#getcustomformatting) + +#### Defined in + +src/utils/dataset/data-providers/Record/Field/FieldUi.ts:49 + +*** + +### getNotifications() + +> **getNotifications**(): [`IAddControlNotificationOptions`](../interfaces/IAddControlNotificationOptions.md)[] + +Returns all notifications for a column. + +#### Returns + +[`IAddControlNotificationOptions`](../interfaces/IAddControlNotificationOptions.md)[] + +#### Implementation of + +[`IColumnUi`](../interfaces/IColumnUi.md).[`getNotifications`](../interfaces/IColumnUi.md#getnotifications) + +#### Defined in + +src/utils/dataset/data-providers/Record/Field/FieldUi.ts:36 + +*** + +### isLoading() + +> **isLoading**(): `boolean` + +Whether the record column is loading. + +#### Returns + +`boolean` + +#### Implementation of + +[`IColumnUi`](../interfaces/IColumnUi.md).[`isLoading`](../interfaces/IColumnUi.md#isloading) + +#### Defined in + +src/utils/dataset/data-providers/Record/Field/FieldUi.ts:46 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/FieldValue.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/FieldValue.md index 91341b755..8099d93b1 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/FieldValue.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/FieldValue.md @@ -1 +1,5 @@ Uses `MemoryProvider` to create an instance of record for a single value + +## Implements + +- [`IFieldValue`](../interfaces/IFieldValue.md) diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Filtering.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Filtering.md new file mode 100644 index 000000000..0c957cead --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Filtering.md @@ -0,0 +1,25 @@ +Contains methods that simplify filtering operations on a data provider. + +## Extends + +- `DataProviderExtension` + +## Methods + +### getFilterExpression() + +> **getFilterExpression**(`filterOperator`): `false` \| `FilterExpression` + +If `FieldValueClass` was provided, validates all conditions before returning the filter expression. If validation fails, returns `false`. + +#### Parameters + +• **filterOperator**: `FilterOperator` + +#### Returns + +`false` \| `FilterExpression` + +#### Defined in + +src/utils/dataset/data-providers/extensions/filtering/Filtering.ts:45 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Grouping.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Grouping.md new file mode 100644 index 000000000..562b81c2b --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Grouping.md @@ -0,0 +1,5 @@ +Contains methods that simplify grouping operations on a data provider. + +## Extends + +- `DataProviderExtension` 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 index 26eee7ce1..51701b986 100644 --- 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 @@ -4,192 +4,217 @@ Allows you to use in-memory array as Data Source. - `DataProvider` -## Constructors +## Implements -### new MemoryDataProvider() +- [`IMemoryProvider`](../interfaces/IMemoryProvider.md) -> **new MemoryDataProvider**(`dataSource`): [`MemoryDataProvider`](MemoryDataProvider.md) +## Accessors -Creates an instance of MemoryDataProvider. +### aggregation -#### Parameters +> `get` **aggregation**(): [`IAggregation`](../interfaces/IAggregation.md) -• **dataSource**: `object`[] +Dataset aggregations. #### Returns -[`MemoryDataProvider`](MemoryDataProvider.md) +[`IAggregation`](../interfaces/IAggregation.md) -#### Overrides +Dataset aggregations. -`DataProvider.constructor` +#### Implementation of -#### Defined in +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`aggregation`](../interfaces/IMemoryProvider.md#aggregation) -src/utils/dataset/data-providers/memory-provider/MemoryDataProvider.ts:18 +#### Inherited from -## Methods +`DataProvider.aggregation` -### addEventListener() +#### Defined in -> **addEventListener**\<`K`\>(`event`, `eventListener`): `void` +src/utils/dataset/data-providers/DataProvider.ts:410 -Allows defining a listener method that will trigger when a specific event occurs. +*** -#### Type Parameters +### grouping -• **K** *extends* keyof [`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md) +> `get` **grouping**(): [`IGrouping`](../interfaces/IGrouping.md) -#### Parameters +Dataset grouping. -• **event**: `K` +#### Returns -• **eventListener**: [`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md)\[`K`\] +[`IGrouping`](../interfaces/IGrouping.md) -#### Returns +Dataset grouping. -`void` +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`grouping`](../interfaces/IMemoryProvider.md#grouping) #### Inherited from -`DataProvider.addEventListener` +`DataProvider.grouping` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:284 +src/utils/dataset/data-providers/DataProvider.ts:442 -*** +## Methods ### clearChanges() > **clearChanges**(): `void` -Clears any changes in the dataset, resetting all record values to their initial state. +Clears all unsaved changes in the data provider. #### Returns `void` +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`clearChanges`](../interfaces/IMemoryProvider.md#clearchanges) + #### Inherited from `DataProvider.clearChanges` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:326 +src/utils/dataset/data-providers/DataProvider.ts:743 *** -### destroy() +### clearSelectedRecordIds() -> **destroy**(): `void` +> **clearSelectedRecordIds**(): `void` -Call to destroy the provider. +Clears the currently selected record IDs. +been used to create the child data provider. #### Returns `void` +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`clearSelectedRecordIds`](../interfaces/IMemoryProvider.md#clearselectedrecordids) + #### Inherited from -`DataProvider.destroy` +`DataProvider.clearSelectedRecordIds` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:74 +src/utils/dataset/data-providers/DataProvider.ts:707 *** -### fireEventListeners() - -> **fireEventListeners**\<`K`\>(`event`, ...`par`): `ReturnType`\<[`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md)\[`K`\]\>[] - -Fires event listeners for a specific event. +### createGroupedRecordDataProvider() -#### Type Parameters +> **createGroupedRecordDataProvider**(`group`): [`IDataProvider`](../interfaces/IDataProvider.md) -• **K** *extends* keyof [`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md) +Returns a child data provider that can be used to retrieve grouped records. If a provider for this group already exists, it will be returned instead. #### Parameters -• **event**: `K` +• **group**: [`IRecord`](../interfaces/IRecord.md) -• ...**par**: `Parameters`\<[`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md)\[`K`\]\> +The record representing the group for which to retrieve child records. #### Returns -`ReturnType`\<[`IDatasetEventListeners`](../interfaces/IDatasetEventListeners.md)\[`K`\]\>[] +[`IDataProvider`](../interfaces/IDataProvider.md) + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`createGroupedRecordDataProvider`](../interfaces/IMemoryProvider.md#creategroupedrecorddataprovider) #### Inherited from -`DataProvider.fireEventListeners` +`DataProvider.createGroupedRecordDataProvider` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:331 +src/utils/dataset/data-providers/DataProvider.ts:542 *** -### getAllDefinedColumns() +### createNewDataProvider() + +> **createNewDataProvider**(`eventBubbleOptions`?): [`IDataProvider`](../interfaces/IDataProvider.md) -> **getAllDefinedColumns**(): [`IColumn`](../interfaces/IColumn.md)[] +Creates new Data Provider with the same settings as current one. +eventBubbleOptions - Options to control which events should bubble up from the new data provider to the parent. -Same as `getColumns`, but it additionaly returns columns that have previously been defined as well. For example, if a column is removed -via `setColumns`, it will no longer appear in `getColumns` result, but it will still be redurned with `getAllDefinedColumns`. +#### Parameters + +• **eventBubbleOptions?**: [`IEventBubbleOptions`](../interfaces/IEventBubbleOptions.md) #### Returns -[`IColumn`](../interfaces/IColumn.md)[] +[`IDataProvider`](../interfaces/IDataProvider.md) + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`createNewDataProvider`](../interfaces/IMemoryProvider.md#createnewdataprovider) #### Inherited from -`DataProvider.getAllDefinedColumns` +`DataProvider.createNewDataProvider` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:222 +src/utils/dataset/data-providers/DataProvider.ts:505 *** -### getChanges() +### getColumns() -> **getChanges**(): `object` +> **getColumns**(): [`IColumn`](../interfaces/IColumn.md)[] -Retrieves the changes made to the records in the dataset. +Returns current columns #### Returns -`object` +[`IColumn`](../interfaces/IColumn.md)[] + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getColumns`](../interfaces/IMemoryProvider.md#getcolumns) #### Inherited from -`DataProvider.getChanges` +`DataProvider.getColumns` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:311 +src/utils/dataset/data-providers/DataProvider.ts:262 *** -### getColumns() +### getColumnsMap() -> **getColumns**(): [`IColumn`](../interfaces/IColumn.md)[] +> **getColumnsMap**(): `object` -Returns column information, such as column names and data types. +Returns a map of all columns that have been defined for the provider. Also includes columns that have been deleted via `setColumns`. #### Returns -[`IColumn`](../interfaces/IColumn.md)[] +`object` -An array of column information objects. +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getColumnsMap`](../interfaces/IMemoryProvider.md#getcolumnsmap) #### Inherited from -`DataProvider.getColumns` +`DataProvider.getColumnsMap` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:213 +src/utils/dataset/data-providers/DataProvider.ts:763 *** @@ -203,543 +228,1283 @@ Gets the currencies the provider is able to work with. [`ICurrency`](../interfaces/ICurrency.md)[] +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getCurrencies`](../interfaces/IMemoryProvider.md#getcurrencies) + #### Inherited from `DataProvider.getCurrencies` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:256 +src/utils/dataset/data-providers/DataProvider.ts:302 *** -### getEntityName() +### getCustomProperty() -> **getEntityName**(): `string` +> **getCustomProperty**(`name`): `any` -Returns the name of the associated entity. +Gets a custom property from the data provider. + +#### Parameters + +• **name**: `string` #### Returns -`string` +`any` -The entity name. +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getCustomProperty`](../interfaces/IMemoryProvider.md#getcustomproperty) #### Inherited from -`DataProvider.getEntityName` +`DataProvider.getCustomProperty` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:126 +src/utils/dataset/data-providers/DataProvider.ts:191 *** -### getErrorMessage() +### getDataSource() -> **getErrorMessage**(): `string` +> **getDataSource**(): `any` -Returns the error message from the last data retrieval attempt, if any. +Gets the current Data Source. #### Returns -`string` +`any` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getDataSource`](../interfaces/IMemoryProvider.md#getdatasource) #### Inherited from -`DataProvider.getErrorMessage` +`DataProvider.getDataSource` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:108 +src/utils/dataset/data-providers/DataProvider.ts:127 *** -### getFiltering() +### getDirtyRecordIds() -> **getFiltering**(): `null` \| `FilterExpression` +> **getDirtyRecordIds**(): `string`[] -Gets the current filtering. +Returns the IDs of records that have unsaved changes. #### Returns -`null` \| `FilterExpression` +`string`[] + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getDirtyRecordIds`](../interfaces/IMemoryProvider.md#getdirtyrecordids) #### Inherited from -`DataProvider.getFiltering` +`DataProvider.getDirtyRecordIds` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:235 +src/utils/dataset/data-providers/DataProvider.ts:352 *** -### getLinking() +### getEntityName() -> **getLinking**(): `LinkEntityExposedExpression`[] +> **getEntityName**(): `string` -Retrieves the link entity expressions used to join related entities. +Returns the name of the associated entity. #### Returns -`LinkEntityExposedExpression`[] +`string` + +The entity name. + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getEntityName`](../interfaces/IMemoryProvider.md#getentityname) #### Inherited from -`DataProvider.getLinking` +`DataProvider.getEntityName` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:247 +src/utils/dataset/data-providers/DataProvider.ts:156 *** -### getPaging() +### getErrorMessage() -> **getPaging**(): `Paging` & `object` +> **getErrorMessage**(): `string` -Returns paging information (like page number, total pages, etc.). +Returns the error message from the last data retrieval attempt, if any. #### Returns -`Paging` & `object` +`string` -The paging information. +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getErrorMessage`](../interfaces/IMemoryProvider.md#geterrormessage) #### Inherited from -`DataProvider.getPaging` +`DataProvider.getErrorMessage` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:166 +src/utils/dataset/data-providers/DataProvider.ts:139 *** -### getRawData() +### getFiltering() -> **getRawData**(): `null` \| `object`[] +> **getFiltering**(): `null` \| `FilterExpression` -Retrieves raw provider data. +Gets the current filtering. #### Returns -`null` \| `object`[] +`null` \| `FilterExpression` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getFiltering`](../interfaces/IMemoryProvider.md#getfiltering) #### Inherited from -`DataProvider.getRawData` +`DataProvider.getFiltering` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:149 +src/utils/dataset/data-providers/DataProvider.ts:280 *** -### getRawRecordData() +### getGroupedRecordDataProvider() -> **getRawRecordData**(`recordId`): `null` \| `object` +> **getGroupedRecordDataProvider**(`groupedRecordId`): `null` \| [`IDataProvider`](../interfaces/IDataProvider.md) -Retrieves the raw record data for a given record by its ID. +Returns a child data provider for a specific parent record ID. #### Parameters -• **recordId**: `string` +• **groupedRecordId**: `string` #### Returns -`null` \| `object` +`null` \| [`IDataProvider`](../interfaces/IDataProvider.md) + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getGroupedRecordDataProvider`](../interfaces/IMemoryProvider.md#getgroupedrecorddataprovider) #### Inherited from -`DataProvider.getRawRecordData` +`DataProvider.getGroupedRecordDataProvider` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:146 +src/utils/dataset/data-providers/DataProvider.ts:538 *** -### getRecordCurrencySymbol() +### getGroupedRecordDataProviders() -> **getRecordCurrencySymbol**(`record`, `columnName`): `string` +> **getGroupedRecordDataProviders**(`allLevels`?): [`IDataProvider`](../interfaces/IDataProvider.md)[] -Retrieves the currency symbol for a specific column in a record. +Returns all direct grouped records data providers. #### Parameters -• **record**: [`IRecord`](../interfaces/IRecord.md) +• **allLevels?**: `boolean` -• **columnName**: `string` +If true, returns grouped record providers at all levels. If false, returns only direct children. #### Returns -`string` +[`IDataProvider`](../interfaces/IDataProvider.md)[] + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getGroupedRecordDataProviders`](../interfaces/IMemoryProvider.md#getgroupedrecorddataproviders) #### Inherited from -`DataProvider.getRecordCurrencySymbol` +`DataProvider.getGroupedRecordDataProviders` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:262 +src/utils/dataset/data-providers/DataProvider.ts:494 *** -### getRecords() +### getInvalidRecordIds() -> **getRecords**(): [`IRecord`](../interfaces/IRecord.md)[] +> **getInvalidRecordIds**(): `string`[] -Returns the list of records. +Returns the IDs of records that have invalid values. #### Returns -[`IRecord`](../interfaces/IRecord.md)[] +`string`[] -A list of records. +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getInvalidRecordIds`](../interfaces/IMemoryProvider.md#getinvalidrecordids) #### Inherited from -`DataProvider.getRecords` +`DataProvider.getInvalidRecordIds` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:205 +src/utils/dataset/data-providers/DataProvider.ts:739 *** -### getSearchQuery() +### getLinking() -> **getSearchQuery**(): `string` +> **getLinking**(): `LinkEntityExposedExpression`[] -Retrieves the search query string. +Retrieves the link entity expressions used to join related entities. #### Returns -`string` +`LinkEntityExposedExpression`[] + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getLinking`](../interfaces/IMemoryProvider.md#getlinking) #### Inherited from -`DataProvider.getSearchQuery` +`DataProvider.getLinking` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:241 +src/utils/dataset/data-providers/DataProvider.ts:292 *** -### getSorting() +### getMetadata() -> **getSorting**(): `SortStatus`[] +> **getMetadata**(): `any` -Retrieves the current sorting criteria. +Gets the associated entity metadata. #### Returns -`SortStatus`[] +`any` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getMetadata`](../interfaces/IMemoryProvider.md#getmetadata) #### Inherited from -`DataProvider.getSorting` +`DataProvider.getMetadata` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:238 +src/utils/dataset/data-providers/DataProvider.ts:133 *** -### getTitle() +### getNestingLevel() -> **getTitle**(): `string` +> **getNestingLevel**(): `number` -Returns the title provided by the data provider. +Returns how deep the data provider is nested. #### Returns -`string` +`number` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getNestingLevel`](../interfaces/IMemoryProvider.md#getnestinglevel) #### Inherited from -`DataProvider.getTitle` +`DataProvider.getNestingLevel` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:138 +src/utils/dataset/data-providers/DataProvider.ts:731 *** -### getViewId() +### getPaging() -> **getViewId**(): `string` +> **getPaging**(): `object` -Returns the ID of the current view. +Returns paging information (like page number, total pages, etc.). #### Returns -`string` +`object` -#### Inherited from +The paging information. -`DataProvider.getViewId` +##### firstPageNumber -#### Defined in +> **firstPageNumber**: `number` -src/utils/dataset/data-providers/DataProvider.ts:130 +##### hasNextPage -*** +> **hasNextPage**: `boolean` -### hasInvalidChanges() +##### hasPreviousPage -> **hasInvalidChanges**(): `boolean` +> **hasPreviousPage**: `boolean` -Whether the dataset has any records with invalid values. +##### lastPageNumber -#### Returns +> **lastPageNumber**: `number` -`boolean` +##### loadExactPage() -#### Inherited from +> **loadExactPage**: (`pageNumber`) => `Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> -`DataProvider.hasInvalidChanges` +###### Parameters -#### Defined in +• **pageNumber**: `number` -src/utils/dataset/data-providers/DataProvider.ts:292 +###### Returns -*** +`Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> -### isDirty() +##### loadNextPage() -> **isDirty**(): `boolean` +> **loadNextPage**: () => `Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> -Checks if the dataset has unsaved changes. +###### Returns -#### Returns +`Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> -`boolean` +##### loadPreviousPage() -#### Inherited from +> **loadPreviousPage**: () => `Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> -`DataProvider.isDirty` +###### Returns -#### Defined in +`Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> -src/utils/dataset/data-providers/DataProvider.ts:295 +##### pageNumber -*** +> **pageNumber**: `number` -### isError() +##### pageSize -> **isError**(): `boolean` +> **pageSize**: `number` -Returns true if an error occurred during the last data retrieval process. +##### reset() -#### Returns +> **reset**: () => `void` -`boolean` +###### Returns -#### Inherited from +`void` -`DataProvider.isError` +##### setPageNumber() -#### Defined in +> **setPageNumber**: (`pageNumber`) => `void` -src/utils/dataset/data-providers/DataProvider.ts:111 +###### Parameters -*** +• **pageNumber**: `number` -### isLoading() +###### Returns -> **isLoading**(): `boolean` +`void` -Indicates whether the data provider is currently loading. +##### setPageSize() -#### Returns +> **setPageSize**: (`pageSize`) => `void` -`boolean` +###### Parameters -True if loading, false otherwise. +• **pageSize**: `number` + +###### Returns + +`void` + +##### totalResultCount + +> **totalResultCount**: `number` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getPaging`](../interfaces/IMemoryProvider.md#getpaging) #### Inherited from -`DataProvider.isLoading` +`DataProvider.getPaging` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:250 +src/utils/dataset/data-providers/DataProvider.ts:231 *** -### isValid() +### getParentDataProvider() -> **isValid**(): `boolean` +> **getParentDataProvider**(): `null` \| [`IDataProvider`](../interfaces/IDataProvider.md) -Whether the provider contains only valid values. +Gets the provider that has been used to create this data provider. #### Returns -`boolean` +`null` \| [`IDataProvider`](../interfaces/IDataProvider.md) + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getParentDataProvider`](../interfaces/IMemoryProvider.md#getparentdataprovider) #### Inherited from -`DataProvider.isValid` +`DataProvider.getParentDataProvider` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:298 +src/utils/dataset/data-providers/DataProvider.ts:615 *** -### refresh() +### getParentRecordId() -> **refresh**(): `Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> +> **getParentRecordId**(): `string` -Refreshes the records list and returns the refreshed records. +Returns the parent record ID, if this data provider is a child of another data provider. #### Returns -`Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> +`string` -A promise resolving to a list of refreshed records. +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getParentRecordId`](../interfaces/IMemoryProvider.md#getparentrecordid) #### Inherited from -`DataProvider.refresh` +`DataProvider.getParentRecordId` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:153 +src/utils/dataset/data-providers/DataProvider.ts:735 *** -### setColumns() +### getProperty() -> **setColumns**(`columns`): `void` +> **getProperty**\<`K`\>(`name`): [`IDataProviderProperties`](../interfaces/IDataProviderProperties.md)\[`K`\] -Sets the columns for the dataset. +Gets the defined property. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderProperties`](../interfaces/IDataProviderProperties.md) #### Parameters -• **columns**: [`IColumn`](../interfaces/IColumn.md)[] +• **name**: `K` #### Returns -`void` +[`IDataProviderProperties`](../interfaces/IDataProviderProperties.md)\[`K`\] + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getProperty`](../interfaces/IMemoryProvider.md#getproperty) #### Inherited from -`DataProvider.setColumns` +`DataProvider.getProperty` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:218 +src/utils/dataset/data-providers/DataProvider.ts:182 *** -### setCurrencies() +### getQuickFindColumns() -> **setCurrencies**(`currencies`): `void` +> **getQuickFindColumns**(): [`IColumn`](../interfaces/IColumn.md)[] -Sets the currencies the dataset can work with. +Returns the columns that are used for quick find search. -#### Parameters +#### Returns -• **currencies**: [`ICurrency`](../interfaces/ICurrency.md)[] +[`IColumn`](../interfaces/IColumn.md)[] -#### Returns +#### Implementation of -`void` +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getQuickFindColumns`](../interfaces/IMemoryProvider.md#getquickfindcolumns) #### Inherited from -`DataProvider.setCurrencies` +`DataProvider.getQuickFindColumns` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:259 +src/utils/dataset/data-providers/DataProvider.ts:781 *** -### setError() +### getRawData() -> **setError**(`value`, `errorMessage`?): `void` +> **getRawData**(): [`IRawRecord`](../interfaces/IRawRecord.md)[] -Sets the error state of the provider. +Returns an array of raw data records. -#### Parameters +#### Returns -• **value**: `boolean` +[`IRawRecord`](../interfaces/IRawRecord.md)[] -• **errorMessage?**: `string` +#### Implementation of -#### Returns +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getRawData`](../interfaces/IMemoryProvider.md#getrawdata) -`void` +#### Inherited from + +`DataProvider.getRawData` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:176 + +*** + +### getRecordCurrencySymbol() + +> **getRecordCurrencySymbol**(`record`, `columnName`): `string` + +Retrieves the currency symbol for a specific column in a record. + +#### Parameters + +• **record**: [`IRecord`](../interfaces/IRecord.md) + +• **columnName**: `string` + +#### Returns + +`string` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getRecordCurrencySymbol`](../interfaces/IMemoryProvider.md#getrecordcurrencysymbol) + +#### Inherited from + +`DataProvider.getRecordCurrencySymbol` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:311 + +*** + +### getRecordIndex() + +> **getRecordIndex**(`recordId`): `number` + +Returns array index of a record by it's ID. This index corresponds to the record's position in an array that's return by the + +#### Parameters + +• **recordId**: `string` + +#### Returns + +`number` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getRecordIndex`](../interfaces/IMemoryProvider.md#getrecordindex) + +#### Inherited from + +`DataProvider.getRecordIndex` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:755 + +*** + +### getRecords() + +> **getRecords**(): [`IRecord`](../interfaces/IRecord.md)[] + +Returns the list of records. + +#### Returns + +[`IRecord`](../interfaces/IRecord.md)[] + +A list of records. + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getRecords`](../interfaces/IMemoryProvider.md#getrecords) + +#### Inherited from + +`DataProvider.getRecords` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:711 + +*** + +### getSearchQuery() + +> **getSearchQuery**(): `string` + +Retrieves the search query string. + +#### Returns + +`string` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getSearchQuery`](../interfaces/IMemoryProvider.md#getsearchquery) + +#### Inherited from + +`DataProvider.getSearchQuery` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:286 + +*** + +### getSelectedRecordIds() + +> **getSelectedRecordIds**(`options`?): `string`[] + +Returns the currently selected record IDs. + +#### Parameters + +• **options?** + +• **options.includeChildrenRecordIds?**: `boolean` + +If true, includes record IDs from child data providers. Defaults to `true`. + +• **options.includeGroupRecordIds?**: `boolean` + +If true, includes group record IDs in the result. Defaults to `false`. + +#### Returns + +`string`[] + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getSelectedRecordIds`](../interfaces/IMemoryProvider.md#getselectedrecordids) + +#### Inherited from + +`DataProvider.getSelectedRecordIds` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:635 + +*** + +### getSortedRecordIds() + +> **getSortedRecordIds**(): `string`[] + +Returns the current record IDs sorted by the current sorting criteria. + +#### Returns + +`string`[] + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getSortedRecordIds`](../interfaces/IMemoryProvider.md#getsortedrecordids) + +#### Inherited from + +`DataProvider.getSortedRecordIds` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:631 + +*** + +### getSorting() + +> **getSorting**(): `SortStatus`[] + +Retrieves the current sorting criteria. + +#### Returns + +`SortStatus`[] + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getSorting`](../interfaces/IMemoryProvider.md#getsorting) + +#### Inherited from + +`DataProvider.getSorting` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:283 + +*** + +### getSummarizationType() + +> **getSummarizationType**(): [`DataProviderSummarizationType`](../type-aliases/DataProviderSummarizationType.md) + +What type of summary operations this provider has applied. +- `none` - no summarization is applied +- `aggregation` - only aggregation is applied, such as sum, average, etc (no grouping). +- `grouping` - grouping is applied, aggregation can be applied as well + +#### Returns + +[`DataProviderSummarizationType`](../type-aliases/DataProviderSummarizationType.md) + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getSummarizationType`](../interfaces/IMemoryProvider.md#getsummarizationtype) + +#### Inherited from + +`DataProvider.getSummarizationType` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:619 + +*** + +### getTitle() + +> **getTitle**(): `string` + +Returns the title provided by the data provider. + +#### Returns + +`string` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getTitle`](../interfaces/IMemoryProvider.md#gettitle) + +#### Inherited from + +`DataProvider.getTitle` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:168 + +*** + +### getTopLevelDataProvider() + +> **getTopLevelDataProvider**(): [`IDataProvider`](../interfaces/IDataProvider.md) + +If called on a nested data provider, returns the top-level data provider that servers as the root ancestor for all nested data providers. +I called from a top-level data provider, it returns itself. + +#### Returns + +[`IDataProvider`](../interfaces/IDataProvider.md) + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getTopLevelDataProvider`](../interfaces/IMemoryProvider.md#gettopleveldataprovider) + +#### Inherited from + +`DataProvider.getTopLevelDataProvider` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:603 + +*** + +### getViewId() + +> **getViewId**(): `string` + +Returns the ID of the current view. + +#### Returns + +`string` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`getViewId`](../interfaces/IMemoryProvider.md#getviewid) + +#### Inherited from + +`DataProvider.getViewId` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:160 + +*** + +### isDestroyed() + +> **isDestroyed**(): `boolean` + +Whether the data provider has been destroyed. + +#### Returns + +`boolean` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`isDestroyed`](../interfaces/IMemoryProvider.md#isdestroyed) + +#### Inherited from + +`DataProvider.isDestroyed` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:179 + +*** + +### isDirty() + +> **isDirty**(): `boolean` + +Checks if the dataset has unsaved changes. + +#### Returns + +`boolean` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`isDirty`](../interfaces/IMemoryProvider.md#isdirty) + +#### Inherited from + +`DataProvider.isDirty` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:339 + +*** + +### isError() + +> **isError**(): `boolean` + +Returns true if an error occurred during the last data retrieval process. + +#### Returns + +`boolean` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`isError`](../interfaces/IMemoryProvider.md#iserror) + +#### Inherited from + +`DataProvider.isError` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:142 + +*** + +### isLoading() + +> **isLoading**(): `boolean` + +Indicates whether the data provider is currently loading. + +#### Returns + +`boolean` + +True if loading, false otherwise. + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`isLoading`](../interfaces/IMemoryProvider.md#isloading) + +#### Inherited from + +`DataProvider.isLoading` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:295 + +*** + +### isTopLevelDataProvider() + +> **isTopLevelDataProvider**(): `boolean` + +Returns true if the data provider is a top-level data provider (not a child of another data provider). + +#### Returns + +`boolean` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`isTopLevelDataProvider`](../interfaces/IMemoryProvider.md#istopleveldataprovider) + +#### Inherited from + +`DataProvider.isTopLevelDataProvider` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:611 + +*** + +### isValid() + +> **isValid**(): `boolean` + +Whether the provider contains only valid values. + +#### Returns + +`boolean` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`isValid`](../interfaces/IMemoryProvider.md#isvalid) + +#### Inherited from + +`DataProvider.isValid` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:349 + +*** + +### openDatasetItem() + +> **openDatasetItem**(`entityReference`): `void` + +Can be used to specify what default action happens for record opening on a specific provider. + +#### Parameters + +• **entityReference**: `EntityReference` + +#### Returns + +`void` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`openDatasetItem`](../interfaces/IMemoryProvider.md#opendatasetitem) + +#### Inherited from + +`DataProvider.openDatasetItem` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:87 + +*** + +### refresh() + +> **refresh**(): `Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> + +Refreshes the records list and returns the refreshed records. + +#### Returns + +`Promise`\<[`IRecord`](../interfaces/IRecord.md)[]\> + +A promise resolving to a list of refreshed records. + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`refresh`](../interfaces/IMemoryProvider.md#refresh) #### Inherited from -`DataProvider.setError` +`DataProvider.refresh` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:115 +src/utils/dataset/data-providers/DataProvider.ts:197 *** -### setFiltering() +### requestRender() -> **setFiltering**(`filtering`): `void` +> **requestRender**(): `void` -Sets the latest filtering information. +Request a render of all components subscribed to the `onRenderRequested` event. + +#### Returns + +`void` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`requestRender`](../interfaces/IMemoryProvider.md#requestrender) + +#### Inherited from + +`DataProvider.requestRender` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:355 + +*** + +### retrieveRecordCommand() + +> **retrieveRecordCommand**(`options`?): `Promise`\<[`ICommand`](../interfaces/ICommand.md)[]\> + +Retrieve record's associated commands. This method should be used to fetch inline ribbon. #### Parameters -• **filtering**: `null` \| `FilterExpression` +• **options?**: [`IRetrieveRecordCommandOptions`](../interfaces/IRetrieveRecordCommandOptions.md) -The filtering criteria, or null if no filter is applied. +#### Returns + +`Promise`\<[`ICommand`](../interfaces/ICommand.md)[]\> + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`retrieveRecordCommand`](../interfaces/IMemoryProvider.md#retrieverecordcommand) + +#### Inherited from + +`DataProvider.retrieveRecordCommand` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:359 + +*** + +### save() + +> **save**(`records`?): `Promise`\<[`IRecordSaveOperationResult`](../interfaces/IRecordSaveOperationResult.md)[]\> + +Saves the provided record to the database. + +#### Parameters + +• **records?**: [`IRecord`](../interfaces/IRecord.md)[] + +The records to save. If not provided, all dirty records will be saved. + +#### Returns + +`Promise`\<[`IRecordSaveOperationResult`](../interfaces/IRecordSaveOperationResult.md)[]\> + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`save`](../interfaces/IMemoryProvider.md#save) + +#### Inherited from + +`DataProvider.save` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:382 + +*** + +### setColumns() + +> **setColumns**(`columns`): `void` + +Sets the columns for the dataset. + +#### Parameters + +• **columns**: [`IColumn`](../interfaces/IColumn.md)[] #### Returns `void` +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setColumns`](../interfaces/IMemoryProvider.md#setcolumns) + #### Inherited from -`DataProvider.setFiltering` +`DataProvider.setColumns` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:229 +src/utils/dataset/data-providers/DataProvider.ts:266 *** -### setInterceptor() +### setCurrencies() + +> **setCurrencies**(`currencies`): `void` + +Sets the currencies the dataset can work with. -> **setInterceptor**\<`K`\>(`name`, `interceptor`): `void` +#### Parameters -Allows you to define interceptors to customize data flows in Dataset. +• **currencies**: [`ICurrency`](../interfaces/ICurrency.md)[] -#### Type Parameters +#### Returns -• **K** *extends* `"columns"` +`void` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setCurrencies`](../interfaces/IMemoryProvider.md#setcurrencies) + +#### Inherited from + +`DataProvider.setCurrencies` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:305 + +*** + +### setCustomProperty() + +> **setCustomProperty**(`name`, `value`): `void` + +Allows you to set custom properties on the data provider. You can use this to store any custom information you need. #### Parameters -• **name**: `K` +• **name**: `string` + +• **value**: `any` + +#### Returns + +`void` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setCustomProperty`](../interfaces/IMemoryProvider.md#setcustomproperty) + +#### Inherited from + +`DataProvider.setCustomProperty` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:188 + +*** + +### setError() + +> **setError**(`value`, `errorMessage`?): `void` + +Sets the error state of the provider. + +#### Parameters + +• **value**: `boolean` + +• **errorMessage?**: `string` + +#### Returns + +`void` + +#### Implementation of -• **interceptor**: [`IDatasetInterceptors`](../interfaces/IDatasetInterceptors.md)\[`K`\] +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setError`](../interfaces/IMemoryProvider.md#seterror) + +#### Inherited from + +`DataProvider.setError` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:145 + +*** + +### setFiltering() + +> **setFiltering**(`filtering`): `void` + +Sets the latest filtering information. + +#### Parameters + +• **filtering**: `null` \| `FilterExpression` + +The filtering criteria, or null if no filter is applied. #### Returns `void` +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setFiltering`](../interfaces/IMemoryProvider.md#setfiltering) + #### Inherited from -`DataProvider.setInterceptor` +`DataProvider.setFiltering` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:288 +src/utils/dataset/data-providers/DataProvider.ts:274 *** @@ -757,13 +1522,17 @@ Sets the link entity expressions for joining related entities. `void` +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setLinking`](../interfaces/IMemoryProvider.md#setlinking) + #### Inherited from `DataProvider.setLinking` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:232 +src/utils/dataset/data-providers/DataProvider.ts:277 *** @@ -781,13 +1550,79 @@ Sets whether the data provider is currently loading. `void` +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setLoading`](../interfaces/IMemoryProvider.md#setloading) + #### Inherited from `DataProvider.setLoading` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:253 +src/utils/dataset/data-providers/DataProvider.ts:298 + +*** + +### setMetadata() + +> **setMetadata**(`metadata`): `void` + +Allows you to change the initial associated entity metadata. + +#### Parameters + +• **metadata**: `any` + +#### Returns + +`void` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setMetadata`](../interfaces/IMemoryProvider.md#setmetadata) + +#### Inherited from + +`DataProvider.setMetadata` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:136 + +*** + +### setProperty() + +> **setProperty**\<`K`\>(`name`, `value`): `void` + +Allows settings of additional properties on data provider. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderProperties`](../interfaces/IDataProviderProperties.md) + +#### Parameters + +• **name**: `K` + +• **value**: [`IDataProviderProperties`](../interfaces/IDataProviderProperties.md)\[`K`\] + +#### Returns + +`void` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setProperty`](../interfaces/IMemoryProvider.md#setproperty) + +#### Inherited from + +`DataProvider.setProperty` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:185 *** @@ -805,13 +1640,49 @@ Sets a new search query for filtering. `void` +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setSearchQuery`](../interfaces/IMemoryProvider.md#setsearchquery) + #### Inherited from `DataProvider.setSearchQuery` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:244 +src/utils/dataset/data-providers/DataProvider.ts:289 + +*** + +### setSelectedRecordIds() + +> **setSelectedRecordIds**(`ids`, `options`?): `void` + +Sets the currently selected record IDs. + +#### Parameters + +• **ids**: `string`[] + +• **options?** + +• **options.\_\_bubbleUp?**: `boolean` + +#### Returns + +`void` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setSelectedRecordIds`](../interfaces/IMemoryProvider.md#setselectedrecordids) + +#### Inherited from + +`DataProvider.setSelectedRecordIds` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:652 *** @@ -831,13 +1702,17 @@ The latest sorting details as an array of SortStatus objects. `void` +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setSorting`](../interfaces/IMemoryProvider.md#setsorting) + #### Inherited from `DataProvider.setSorting` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:226 +src/utils/dataset/data-providers/DataProvider.ts:271 *** @@ -855,36 +1730,74 @@ Sets the dataset's title. `void` +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setTitle`](../interfaces/IMemoryProvider.md#settitle) + #### Inherited from `DataProvider.setTitle` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:142 +src/utils/dataset/data-providers/DataProvider.ts:172 + +*** + +### setViewId() + +> **setViewId**(`viewId`): `string` + +Sets the id of the current view + +#### Parameters + +• **viewId**: `string` + +#### Returns + +`string` + +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`setViewId`](../interfaces/IMemoryProvider.md#setviewid) + +#### Inherited from + +`DataProvider.setViewId` + +#### Defined in + +src/utils/dataset/data-providers/DataProvider.ts:164 *** -### toggleRecordFieldValidity() +### toggleSelectedRecordId() -> **toggleRecordFieldValidity**(`recordFieldId`, `isValid`): `void` +> **toggleSelectedRecordId**(`recordId`, `options`?): `void` -Internal method. Toggles whether a record field is valid or not. +Toggles the selection state of a record ID. #### Parameters -• **recordFieldId**: `string` +• **recordId**: `string` + +• **options?** -• **isValid**: `boolean` +• **options.clearExisting?**: `boolean` #### Returns `void` +#### Implementation of + +[`IMemoryProvider`](../interfaces/IMemoryProvider.md).[`toggleSelectedRecordId`](../interfaces/IMemoryProvider.md#toggleselectedrecordid) + #### Inherited from -`DataProvider.toggleRecordFieldValidity` +`DataProvider.toggleSelectedRecordId` #### Defined in -src/utils/dataset/data-providers/DataProvider.ts:302 +src/utils/dataset/data-providers/DataProvider.ts:691 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Sorting.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Sorting.md new file mode 100644 index 000000000..d1bac9fdb --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/Sorting.md @@ -0,0 +1,5 @@ +Contains methods that simplify sorting operations on a data provider. + +## Extends + +- `DataProviderExtension` diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/TotalRow.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/TotalRow.md new file mode 100644 index 000000000..8fd12eaf6 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/classes/TotalRow.md @@ -0,0 +1,37 @@ +Can be used to get the total for a data provider. + +## Extends + +- `DataProviderExtension` + +## Methods + +### getDataProvider() + +> **getDataProvider**(): [`IDataProvider`](../interfaces/IDataProvider.md) + +Can be used to get the data provider that is used to get the aggregated values. + +#### Returns + +[`IDataProvider`](../interfaces/IDataProvider.md) + +#### Defined in + +src/utils/dataset/data-providers/extensions/TotalRow.ts:52 + +*** + +### getTotalRowRecord() + +> **getTotalRowRecord**(): `null` \| [`IRecord`](../interfaces/IRecord.md) + +Returns the total row record. If there are no aggregations or the main data provider has no records, null is returned. If the aggregation data provider is loading or in error state, a dummy record is returned with loading/error states set on all columns. + +#### Returns + +`null` \| [`IRecord`](../interfaces/IRecord.md) + +#### Defined in + +src/utils/dataset/data-providers/extensions/TotalRow.ts:25 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 index aab975b54..81d3378a0 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/globals.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/globals.md @@ -1,15 +1,23 @@ ## Classes - [FetchXmlDataProvider](classes/FetchXmlDataProvider.md) +- [FieldUi](classes/FieldUi.md) - [FieldValue](classes/FieldValue.md) +- [Filtering](classes/Filtering.md) +- [Grouping](classes/Grouping.md) - [MemoryDataProvider](classes/MemoryDataProvider.md) +- [Sorting](classes/Sorting.md) +- [TotalRow](classes/TotalRow.md) ## Interfaces - [IAddControlNotificationOptions](interfaces/IAddControlNotificationOptions.md) +- [IAggregation](interfaces/IAggregation.md) +- [IAggregationMetadata](interfaces/IAggregationMetadata.md) - [IColumn](interfaces/IColumn.md) - [IColumnInfo](interfaces/IColumnInfo.md) - [IColumnUi](interfaces/IColumnUi.md) +- [ICommand](interfaces/ICommand.md) - [IControlNotificationAction](interfaces/IControlNotificationAction.md) - [IControlParameters](interfaces/IControlParameters.md) - [ICurrency](interfaces/ICurrency.md) @@ -17,24 +25,42 @@ - [ICustomColumnControl](interfaces/ICustomColumnControl.md) - [ICustomColumnFormatting](interfaces/ICustomColumnFormatting.md) - [IDataProvider](interfaces/IDataProvider.md) +- [IDataProviderCustomProperties](interfaces/IDataProviderCustomProperties.md) +- [IDataProviderEventListeners](interfaces/IDataProviderEventListeners.md) +- [IDataProviderInterceptors](interfaces/IDataProviderInterceptors.md) +- [IDataProviderProperties](interfaces/IDataProviderProperties.md) - [IDataset](interfaces/IDataset.md) -- [IDatasetEventListeners](interfaces/IDatasetEventListeners.md) -- [IDatasetInterceptors](interfaces/IDatasetInterceptors.md) +- [IEventBubbleOptions](interfaces/IEventBubbleOptions.md) +- [IFetchXmlDataProvider](interfaces/IFetchXmlDataProvider.md) - [IFetchXmlDataProviderColumn](interfaces/IFetchXmlDataProviderColumn.md) - [IFetchXmlDataProviderOptions](interfaces/IFetchXmlDataProviderOptions.md) -- [IFieldChange](interfaces/IFieldChange.md) +- [IField](interfaces/IField.md) - [IFieldValidationResult](interfaces/IFieldValidationResult.md) +- [IFieldValue](interfaces/IFieldValue.md) +- [IGroupByMetadata](interfaces/IGroupByMetadata.md) +- [IGrouping](interfaces/IGrouping.md) +- [ILayout](interfaces/ILayout.md) +- [ILinkEntityExposedExpression](interfaces/ILinkEntityExposedExpression.md) +- [IMemoryProvider](interfaces/IMemoryProvider.md) - [IMemoryProviderEntityMetadata](interfaces/IMemoryProviderEntityMetadata.md) +- [IOperator](interfaces/IOperator.md) +- [IPromiseCache](interfaces/IPromiseCache.md) +- [IRawRecord](interfaces/IRawRecord.md) - [IRecord](interfaces/IRecord.md) -- [IRecordChange](interfaces/IRecordChange.md) -- [IRecordChanges](interfaces/IRecordChanges.md) +- [IRecordEvents](interfaces/IRecordEvents.md) - [IRecordExpressions](interfaces/IRecordExpressions.md) +- [IRecordSaveOperationResult](interfaces/IRecordSaveOperationResult.md) - [IRecordUiExpression](interfaces/IRecordUiExpression.md) - [IRetrievedData](interfaces/IRetrievedData.md) +- [IRetrieveRecordCommandOptions](interfaces/IRetrieveRecordCommandOptions.md) - [ISecurityValues](interfaces/ISecurityValues.md) ## Type Aliases +- [AggregationFunction](type-aliases/AggregationFunction.md) +- [DataProviderSummarizationType](type-aliases/DataProviderSummarizationType.md) +- [DataType](type-aliases/DataType.md) - [DeepPartial](type-aliases/DeepPartial.md) - [GetDataEvent](type-aliases/GetDataEvent.md) - [IAttributeMetadata](type-aliases/IAttributeMetadata.md) +- [IInterceptor](type-aliases/IInterceptor.md) diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IAddControlNotificationOptions.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IAddControlNotificationOptions.md index 8a97b7771..60dfb71ee 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IAddControlNotificationOptions.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IAddControlNotificationOptions.md @@ -14,7 +14,7 @@ A collection of actions #### Defined in -src/utils/dataset/data-providers/interfaces.ts:709 +src/utils/dataset/data-providers/interfaces.ts:1156 *** @@ -26,7 +26,7 @@ Optional props to customize the look of notification button. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:704 +src/utils/dataset/data-providers/interfaces.ts:1151 *** @@ -38,7 +38,7 @@ Fluent UI icon representing the notification. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:699 +src/utils/dataset/data-providers/interfaces.ts:1146 *** @@ -83,7 +83,7 @@ Text of the notification. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:694 +src/utils/dataset/data-providers/interfaces.ts:1141 *** diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IAggregation.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IAggregation.md new file mode 100644 index 000000000..9818f2b2a --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IAggregation.md @@ -0,0 +1,93 @@ +Interface for aggregations in dataset. + +## Properties + +### addAggregation() + +> **addAggregation**: (`aggregation`) => `void` + +Adds an aggregation to the dataset. + +#### Parameters + +• **aggregation**: [`IAggregationMetadata`](IAggregationMetadata.md) + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:402 + +*** + +### clear() + +> **clear**: () => `void` + +Clears all aggregations in the dataset. + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:406 + +*** + +### getAggregation() + +> **getAggregation**: (`alias`) => `undefined` \| [`IAggregationMetadata`](IAggregationMetadata.md) + +Gets aggregation metadata for an column alias. + +#### Parameters + +• **alias**: `string` + +#### Returns + +`undefined` \| [`IAggregationMetadata`](IAggregationMetadata.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:415 + +*** + +### getAggregations() + +> **getAggregations**: () => [`IAggregationMetadata`](IAggregationMetadata.md)[] + +Gets all aggregations in the dataset. + +#### Returns + +[`IAggregationMetadata`](IAggregationMetadata.md)[] + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:410 + +*** + +### removeAggregation() + +> **removeAggregation**: (`alias`) => `void` + +Removes an aggregation from the dataset. + +#### Parameters + +• **alias**: `string` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:420 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IAggregationMetadata.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IAggregationMetadata.md new file mode 100644 index 000000000..6a8737024 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IAggregationMetadata.md @@ -0,0 +1,49 @@ +Represents metadata about an aggregation in a dataset. + +## Properties + +### aggregationFunction + +> **aggregationFunction**: [`AggregationFunction`](../type-aliases/AggregationFunction.md) + +Name of the aggregation function to be applied to the column. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:379 + +*** + +### alias + +> **alias**: `string` + +Alias representing the aggregation in the dataset. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:384 + +*** + +### columnName + +> **columnName**: `string` + +Name of the column to which the aggregation is applied. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:388 + +*** + +### uiColumnName? + +> `optional` **uiColumnName**: `string` + +Name of the column where the aggregation appears. Only required if you with to show multiple aggregations for the same column. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:392 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IColumn.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IColumn.md index fc61e5dfa..86b5450e0 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IColumn.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IColumn.md @@ -1,5 +1,4 @@ -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. If a property is optional, it does not exists in Microsoft's dataset implementation. +Metadata about a column in a dataset. If a property is optional, it does not exists in Microsoft's dataset implementation. ## Extends @@ -31,7 +30,19 @@ Alignment of the column. If not defined, numbers will be aligned to right by def #### Defined in -src/utils/dataset/interfaces.ts:156 +src/utils/dataset/data-providers/interfaces.ts:1508 + +*** + +### autoHeight? + +> `optional` **autoHeight**: `boolean` + +Whether the row height should adjust automatically based on cell's content. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1550 *** @@ -43,23 +54,23 @@ Can be used to render custom PCF as cell renderer/editor. #### Defined in -src/utils/dataset/interfaces.ts:168 +src/utils/dataset/data-providers/interfaces.ts:1555 *** -### dataType? +### dataType -> `optional` **dataType**: `string` +> **dataType**: [`DataType`](../type-aliases/DataType.md) The manifest type of this column's values. -#### Inherited from +#### Overrides `Partial.dataType` #### Defined in -node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2633 +src/utils/dataset/data-providers/interfaces.ts:1483 *** @@ -95,6 +106,30 @@ node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2628 *** +### grouping? + +> `optional` **grouping**: `object` + +Grouping information for the column + +#### alias? + +> `optional` **alias**: `string` + +Optional alias. If not provided, it will be derived from the column name. + +#### isGrouped + +> **isGrouped**: `boolean` + +Whether the column should be grouped. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1528 + +*** + ### isDraggable? > `optional` **isDraggable**: `boolean` @@ -103,7 +138,7 @@ If user can customize the column position. Default set to `true`. #### Defined in -src/utils/dataset/interfaces.ts:151 +src/utils/dataset/data-providers/interfaces.ts:1503 *** @@ -139,6 +174,31 @@ node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2658 *** +### isVirtual? + +> `optional` **isVirtual**: `boolean` + +Whether the underlying column exists in Data Provider's data source. If se to true, it will let the provider know +that it should not try to fetch any metadata for it. Any metadata should then be provided through the metadata attribute. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1489 + +*** + +### metadata? + +> `optional` **metadata**: `Partial`\<`Omit`\<`AttributeMetadata`, `"OptionSet"`\> & `object`\> + +Additional metadata for the column. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1494 + +*** + ### name > **name**: `string` @@ -151,7 +211,7 @@ Name of the column, unique in this dataset #### Defined in -src/utils/dataset/interfaces.ts:141 +src/utils/dataset/data-providers/interfaces.ts:1481 *** @@ -165,7 +225,7 @@ NOTE: Cell editor controls can be more resource intensive to render. It is recom #### Defined in -src/utils/dataset/interfaces.ts:163 +src/utils/dataset/data-providers/interfaces.ts:1545 *** @@ -194,7 +254,7 @@ This distinction allows the control to adjust its behavior, such as omitting dat #### Defined in -src/utils/dataset/interfaces.ts:147 +src/utils/dataset/data-providers/interfaces.ts:1499 *** diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IColumnInfo.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IColumnInfo.md index f5b60f998..55e3dd4d6 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IColumnInfo.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IColumnInfo.md @@ -18,7 +18,7 @@ Returns true if the record column value has invalid value. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:679 +src/utils/dataset/data-providers/interfaces.ts:1108 *** @@ -34,7 +34,7 @@ Error message for invalid record column value. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:683 +src/utils/dataset/data-providers/interfaces.ts:1112 *** @@ -46,7 +46,7 @@ Security values for record column. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:27 +src/utils/dataset/data-providers/interfaces.ts:131 *** @@ -58,7 +58,7 @@ Type of the column. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:32 +src/utils/dataset/data-providers/interfaces.ts:136 *** @@ -70,4 +70,4 @@ Contains informatian about the UI of the column. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:37 +src/utils/dataset/data-providers/interfaces.ts:141 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IColumnUi.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IColumnUi.md index 4bf0ac126..218ebf0e6 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IColumnUi.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IColumnUi.md @@ -18,7 +18,7 @@ Return the control parameters for a control. Includes possibe override from `set #### Defined in -src/utils/dataset/data-providers/interfaces.ts:175 +src/utils/dataset/data-providers/interfaces.ts:318 *** @@ -34,7 +34,7 @@ Returns the custom component used for the column. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:190 +src/utils/dataset/data-providers/interfaces.ts:333 *** @@ -54,7 +54,7 @@ Returns all custom controls that can be used for this column. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:180 +src/utils/dataset/data-providers/interfaces.ts:323 *** @@ -74,31 +74,7 @@ Returns custo formatting for column, #### Defined in -src/utils/dataset/data-providers/interfaces.ts:185 - -*** - -### getHeight() - -> **getHeight**: (`currentColumnWidth`, `defaultHeight`) => `number` - -Returns the row height for a given record. -Row height always matches the biggest cell height. -If no cell heights are specified, the default height is returned. - -#### Parameters - -• **currentColumnWidth**: `number` - -• **defaultHeight**: `number` - -#### Returns - -`number` - -#### Defined in - -src/utils/dataset/data-providers/interfaces.ts:170 +src/utils/dataset/data-providers/interfaces.ts:328 *** @@ -114,7 +90,7 @@ Returns all notifications for a column. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:159 +src/utils/dataset/data-providers/interfaces.ts:309 *** @@ -130,4 +106,4 @@ Whether the record column is loading. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:163 +src/utils/dataset/data-providers/interfaces.ts:313 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICommand.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICommand.md new file mode 100644 index 000000000..fa251e601 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICommand.md @@ -0,0 +1,13 @@ +Represents a command that can be executed on records. + +## Properties + +### children + +> **children**: `any`[] + +Seems to be always empty - buttons present in Flyout and SplitButton are put on first level (the array of buttons is flattened). + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1419 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IControlNotificationAction.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IControlNotificationAction.md index 09e30f3c8..637f64d72 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IControlNotificationAction.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IControlNotificationAction.md @@ -30,7 +30,7 @@ Fluent icon associated with the action. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:720 +src/utils/dataset/data-providers/interfaces.ts:1167 *** diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IControlParameters.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IControlParameters.md index d390fc04e..a512ae6f8 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IControlParameters.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IControlParameters.md @@ -2,6 +2,42 @@ Collection of parameters for rendering controls. ## Properties +### AggregatedValue? + +> `optional` **AggregatedValue**: `object` + +Dataset only: If rendering an aggregated or grouped field, this will contain the aggregated value. + +#### formatted + +> **formatted**: `null` \| `string` + +#### raw + +> **raw**: `null` \| `number` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:289 + +*** + +### AggregationFunction? + +> `optional` **AggregationFunction**: `object` + +Dataset only: If the control value comes from an aggregation, this will contain the aggregation function used to calculate the value. + +#### raw + +> **raw**: [`AggregationFunction`](../type-aliases/AggregationFunction.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:282 + +*** + ### AutoFocus? > `optional` **AutoFocus**: `object` @@ -14,7 +50,7 @@ Sets focus on the control when it is rendered. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:112 +src/utils/dataset/data-providers/interfaces.ts:239 *** @@ -27,11 +63,11 @@ or Cell Renderer when rendered as part of a Dataset. #### raw -> **raw**: `"renderer"` \| `"editor"` +> **raw**: `"editor"` \| `"renderer"` #### Defined in -src/utils/dataset/data-providers/interfaces.ts:105 +src/utils/dataset/data-providers/interfaces.ts:232 *** @@ -43,7 +79,7 @@ Dataset only: Column associated with the record, if rendered within a Dataset. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:68 +src/utils/dataset/data-providers/interfaces.ts:195 *** @@ -59,7 +95,7 @@ Dataset only: Aligns content, applicable when rendered as part of a Dataset. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:80 +src/utils/dataset/data-providers/interfaces.ts:207 *** @@ -71,7 +107,7 @@ Dataset only: Dataset instance when the control is rendered as part of a Dataset #### Defined in -src/utils/dataset/data-providers/interfaces.ts:58 +src/utils/dataset/data-providers/interfaces.ts:185 *** @@ -87,7 +123,7 @@ Enables navigation to other pages. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:73 +src/utils/dataset/data-providers/interfaces.ts:200 *** @@ -103,7 +139,7 @@ OptionSet only: Displays colors for each option. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:133 +src/utils/dataset/data-providers/interfaces.ts:260 *** @@ -119,7 +155,7 @@ Dataset only: Displays a type suffix, such as an icon for a Phone field. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:126 +src/utils/dataset/data-providers/interfaces.ts:253 *** @@ -135,7 +171,7 @@ Lookup only: Enables creating new records directly from the control. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:119 +src/utils/dataset/data-providers/interfaces.ts:246 *** @@ -151,7 +187,7 @@ Dataset only: Indicates if the control is bound to a primary Dataset column. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:87 +src/utils/dataset/data-providers/interfaces.ts:214 *** @@ -168,7 +204,7 @@ NOTE: This only works for `GridCellRenderer` Base Control, which is the default #### Defined in -src/utils/dataset/data-providers/interfaces.ts:141 +src/utils/dataset/data-providers/interfaces.ts:268 *** @@ -180,7 +216,23 @@ Dataset only: Record instance when the control is rendered as part of a Record. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:63 +src/utils/dataset/data-providers/interfaces.ts:190 + +*** + +### ShouldUnmountWhenOutputChanges? + +> `optional` **ShouldUnmountWhenOutputChanges**: `object` + +Dataset only: Tells the grid if it should close th editor when output changes. + +#### raw + +> **raw**: `boolean` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:297 *** @@ -199,7 +251,7 @@ that comes with the bound attribute. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:97 +src/utils/dataset/data-providers/interfaces.ts:224 *** @@ -216,4 +268,4 @@ NOTE: This only works for `GridCellRenderer` Base Control, which is the default #### Defined in -src/utils/dataset/data-providers/interfaces.ts:148 +src/utils/dataset/data-providers/interfaces.ts:275 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICurrency.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICurrency.md index 720df6eb4..dd6589606 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICurrency.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICurrency.md @@ -10,7 +10,7 @@ Name of the currency record. #### Defined in -src/utils/dataset/interfaces.ts:210 +src/utils/dataset/data-providers/interfaces.ts:1572 *** @@ -22,7 +22,7 @@ Currency symbol of the record. #### Defined in -src/utils/dataset/interfaces.ts:202 +src/utils/dataset/data-providers/interfaces.ts:1564 *** @@ -34,4 +34,4 @@ ID of the currency record. #### Defined in -src/utils/dataset/interfaces.ts:206 +src/utils/dataset/data-providers/interfaces.ts:1568 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICustomColumnControl.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICustomColumnControl.md index fe9fe3a7d..bcf65316d 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICustomColumnControl.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICustomColumnControl.md @@ -4,13 +4,13 @@ Interface for assigning custom controls to columns. ### appliesTo -> **appliesTo**: `"renderer"` \| `"editor"` \| `"both"` +> **appliesTo**: `"editor"` \| `"renderer"` \| `"both"` Whether the control should be used for `renderer`, `editor` or `both`. #### Defined in -src/utils/dataset/interfaces.ts:121 +src/utils/dataset/data-providers/interfaces.ts:1462 *** @@ -26,7 +26,7 @@ Parameters for the control. Only static bindings are supported. #### Defined in -src/utils/dataset/interfaces.ts:125 +src/utils/dataset/data-providers/interfaces.ts:1466 *** @@ -38,4 +38,4 @@ Name of the control as it's saved in Dataverse (or Base Control, for example `Op #### Defined in -src/utils/dataset/interfaces.ts:117 +src/utils/dataset/data-providers/interfaces.ts:1458 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICustomColumnFormatting.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICustomColumnFormatting.md index 455f935b1..9ff214839 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICustomColumnFormatting.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ICustomColumnFormatting.md @@ -10,7 +10,7 @@ If the className is provided, it will be appended to the root cell element. If n #### Defined in -src/utils/dataset/data-providers/interfaces.ts:13 +src/utils/dataset/data-providers/interfaces.ts:91 *** @@ -22,4 +22,4 @@ Can be used to override values in generated theme. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:17 +src/utils/dataset/data-providers/interfaces.ts:95 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProvider.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProvider.md index 0e1702266..638977b5a 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProvider.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProvider.md @@ -1,4 +1,13 @@ -Interface for the Data Provider. +Main interface for data provider implementations. + +## Extends + +- `IEventEmitter`\<[`IDataProviderEventListeners`](IDataProviderEventListeners.md)\> + +## Extended by + +- [`IMemoryProvider`](IMemoryProvider.md) +- [`IFetchXmlDataProvider`](IFetchXmlDataProvider.md) ## Properties @@ -10,21 +19,37 @@ Allows defining a listener method that will trigger when a specific event occurs #### Type Parameters -• **K** *extends* keyof [`IDatasetEventListeners`](IDatasetEventListeners.md) +• **K** *extends* keyof [`IDataProviderEventListeners`](IDataProviderEventListeners.md) #### Parameters • **event**: `K` -• **eventListener**: [`IDatasetEventListeners`](IDatasetEventListeners.md)\[`K`\] +• **eventListener**: [`IDataProviderEventListeners`](IDataProviderEventListeners.md)\[`K`\] #### Returns `void` +#### Overrides + +`IEventEmitter.addEventListener` + #### Defined in -src/utils/dataset/data-providers/interfaces.ts:440 +src/utils/dataset/data-providers/interfaces.ts:694 + +*** + +### aggregation + +> **aggregation**: [`IAggregation`](IAggregation.md) + +Dataset aggregations. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:750 *** @@ -32,7 +57,7 @@ src/utils/dataset/data-providers/interfaces.ts:440 > **clearChanges**: () => `void` -Clears any changes in the dataset, resetting all record values to their initial state. +Clears all unsaved changes in the data provider. #### Returns @@ -40,15 +65,16 @@ Clears any changes in the dataset, resetting all record values to their initial #### Defined in -src/utils/dataset/data-providers/interfaces.ts:378 +src/utils/dataset/data-providers/interfaces.ts:866 *** -### destroy() +### clearSelectedRecordIds() -> **destroy**: () => `void` +> **clearSelectedRecordIds**: () => `void` -Call to destroy the provider. +Clears the currently selected record IDs. +been used to create the child data provider. #### Returns @@ -56,49 +82,44 @@ Call to destroy the provider. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:455 +src/utils/dataset/data-providers/interfaces.ts:841 *** -### fireEventListeners() - -> **fireEventListeners**: \<`K`\>(`event`, ...`par`) => `ReturnType`\<[`IDatasetEventListeners`](IDatasetEventListeners.md)\[`K`\]\>[] +### createNewDataProvider() -Fires event listeners for a specific event. +> **createNewDataProvider**: (`eventBubbleOptions`?) => [`IDataProvider`](IDataProvider.md) -#### Type Parameters - -• **K** *extends* keyof [`IDatasetEventListeners`](IDatasetEventListeners.md) +Creates new Data Provider with the same settings as current one. +eventBubbleOptions - Options to control which events should bubble up from the new data provider to the parent. #### Parameters -• **event**: `K` - -• ...**par**: `Parameters`\<[`IDatasetEventListeners`](IDatasetEventListeners.md)\[`K`\]\> +• **eventBubbleOptions?**: [`IEventBubbleOptions`](IEventBubbleOptions.md) #### Returns -`ReturnType`\<[`IDatasetEventListeners`](IDatasetEventListeners.md)\[`K`\]\>[] +[`IDataProvider`](IDataProvider.md) #### Defined in -src/utils/dataset/data-providers/interfaces.ts:450 +src/utils/dataset/data-providers/interfaces.ts:771 *** -### getChanges() +### destroy() -> **getChanges**: () => [`IRecordChanges`](IRecordChanges.md) +> **destroy**: () => `void` -Retrieves the changes made to the records in the dataset. +Destroys the provider and clears all resources. #### Returns -[`IRecordChanges`](IRecordChanges.md) +`void` #### Defined in -src/utils/dataset/data-providers/interfaces.ts:373 +src/utils/dataset/data-providers/interfaces.ts:730 *** @@ -114,7 +135,27 @@ Gets the currencies the provider is able to work with. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:303 +src/utils/dataset/data-providers/interfaces.ts:573 + +*** + +### getCustomProperty() + +> **getCustomProperty**: (`name`) => `any` + +Gets a custom property from the data provider. + +#### Parameters + +• **name**: `string` + +#### Returns + +`any` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:720 *** @@ -130,7 +171,23 @@ Gets the current Data Source. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:403 +src/utils/dataset/data-providers/interfaces.ts:652 + +*** + +### getDirtyRecordIds() + +> **getDirtyRecordIds**: () => `string`[] + +Returns the IDs of records that have unsaved changes. + +#### Returns + +`string`[] + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:856 *** @@ -148,7 +205,45 @@ The entity name. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:415 +src/utils/dataset/data-providers/interfaces.ts:664 + +*** + +### getGroupedRecordDataProviders() + +> **getGroupedRecordDataProviders**: (`allLevels`?) => [`IDataProvider`](IDataProvider.md)[] + +Returns all direct grouped records data providers. + +#### Parameters + +• **allLevels?**: `boolean` + +If true, returns grouped record providers at all levels. If false, returns only direct children. + +#### Returns + +[`IDataProvider`](IDataProvider.md)[] + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:778 + +*** + +### getInvalidRecordIds() + +> **getInvalidRecordIds**: () => `string`[] + +Returns the IDs of records that have invalid values. + +#### Returns + +`string`[] + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:861 *** @@ -164,7 +259,95 @@ Gets the associated entity metadata. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:384 +src/utils/dataset/data-providers/interfaces.ts:633 + +*** + +### getNestingLevel() + +> **getNestingLevel**: () => `number` + +Returns how deep the data provider is nested. + +#### Returns + +`number` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:846 + +*** + +### getParentDataProvider() + +> **getParentDataProvider**: () => `null` \| [`IDataProvider`](IDataProvider.md) + +Gets the provider that has been used to create this data provider. + +#### Returns + +`null` \| [`IDataProvider`](IDataProvider.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:765 + +*** + +### getParentRecordId() + +> **getParentRecordId**: () => `string` + +Returns the parent record ID, if this data provider is a child of another data provider. + +#### Returns + +`string` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:760 + +*** + +### getProperty() + +> **getProperty**: \<`K`\>(`name`) => [`IDataProviderProperties`](IDataProviderProperties.md)\[`K`\] + +Gets the defined property. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderProperties`](IDataProviderProperties.md) + +#### Parameters + +• **name**: `K` + +#### Returns + +[`IDataProviderProperties`](IDataProviderProperties.md)\[`K`\] + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:709 + +*** + +### getQuickFindColumns() + +> **getQuickFindColumns**: () => [`IColumn`](IColumn.md)[] + +Returns the columns that are used for quick find search. + +#### Returns + +[`IColumn`](IColumn.md)[] + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:879 *** @@ -186,7 +369,7 @@ Retrieves the currency symbol for a specific column in a record. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:435 +src/utils/dataset/data-providers/interfaces.ts:689 *** @@ -202,7 +385,87 @@ Retrieves the search query string. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:425 +src/utils/dataset/data-providers/interfaces.ts:679 + +*** + +### getSelectedRecordIds() + +> **getSelectedRecordIds**: (`options`?) => `string`[] + +Returns the currently selected record IDs. + +#### Parameters + +• **options?** + +• **options.includeChildrenRecordIds?**: `boolean` + +If true, includes record IDs from child data providers. Defaults to `true`. + +• **options.includeGroupRecordIds?**: `boolean` + +If true, includes group record IDs in the result. Defaults to `false`. + +#### Returns + +`string`[] + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:819 + +*** + +### getSortedRecordIds() + +> **getSortedRecordIds**: () => `string`[] + +Returns the current record IDs sorted by the current sorting criteria. + +#### Returns + +`string`[] + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:813 + +*** + +### getSummarizationType() + +> **getSummarizationType**: () => [`DataProviderSummarizationType`](../type-aliases/DataProviderSummarizationType.md) + +What type of summary operations this provider has applied. +- `none` - no summarization is applied +- `aggregation` - only aggregation is applied, such as sum, average, etc (no grouping). +- `grouping` - grouping is applied, aggregation can be applied as well + +#### Returns + +[`DataProviderSummarizationType`](../type-aliases/DataProviderSummarizationType.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:808 + +*** + +### getTopLevelDataProvider() + +> **getTopLevelDataProvider**: () => [`IDataProvider`](IDataProvider.md) + +If called on a nested data provider, returns the top-level data provider that servers as the root ancestor for all nested data providers. +I called from a top-level data provider, it returns itself. + +#### Returns + +[`IDataProvider`](IDataProvider.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:795 *** @@ -218,15 +481,27 @@ Returns the ID of the current view. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:420 +src/utils/dataset/data-providers/interfaces.ts:669 *** -### hasInvalidChanges() +### grouping -> **hasInvalidChanges**: () => `boolean` +> **grouping**: [`IGrouping`](IGrouping.md) + +Dataset grouping. + +#### Defined in -Whether the dataset has any records with invalid values. +src/utils/dataset/data-providers/interfaces.ts:755 + +*** + +### isDestroyed() + +> **isDestroyed**: () => `boolean` + +Whether the data provider has been destroyed. #### Returns @@ -234,7 +509,7 @@ Whether the dataset has any records with invalid values. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:353 +src/utils/dataset/data-providers/interfaces.ts:725 *** @@ -250,7 +525,7 @@ Checks if the dataset has unsaved changes. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:363 +src/utils/dataset/data-providers/interfaces.ts:623 *** @@ -268,7 +543,23 @@ True if loading, false otherwise. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:409 +src/utils/dataset/data-providers/interfaces.ts:658 + +*** + +### isTopLevelDataProvider() + +> **isTopLevelDataProvider**: () => `boolean` + +Returns true if the data provider is a top-level data provider (not a child of another data provider). + +#### Returns + +`boolean` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:800 *** @@ -284,7 +575,33 @@ Whether the provider contains only valid values. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:368 +src/utils/dataset/data-providers/interfaces.ts:628 + +*** + +### newRecord() + +> **newRecord**: (`options`?) => [`IRecord`](IRecord.md) + +Returns instance of a new record associated with the data provider. + +#### Parameters + +• **options?** + +• **options.addToDataset?**: `boolean` + +If true, the new record will be added to the dataset's record collection. +NOTE: Appending a new record to a dataset is not implemented yet, so this option has currently no effect. +All records created via this method are standalone and not part of the dataset's record collection until such functionality is implemented. + +#### Returns + +[`IRecord`](IRecord.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:874 *** @@ -304,7 +621,43 @@ Can be used to specify what default action happens for record opening on a speci #### Defined in -src/utils/dataset/data-providers/interfaces.ts:348 +src/utils/dataset/data-providers/interfaces.ts:618 + +*** + +### requestRender() + +> **requestRender**: () => `void` + +Request a render of all components subscribed to the `onRenderRequested` event. + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:740 + +*** + +### retrieveRecordCommand() + +> **retrieveRecordCommand**: (`options`?) => `Promise`\<[`ICommand`](ICommand.md)[]\> + +Retrieve record's associated commands. This method should be used to fetch inline ribbon. + +#### Parameters + +• **options?**: [`IRetrieveRecordCommandOptions`](IRetrieveRecordCommandOptions.md) + +#### Returns + +`Promise`\<[`ICommand`](ICommand.md)[]\> + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:745 *** @@ -324,7 +677,29 @@ Sets the currencies the dataset can work with. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:308 +src/utils/dataset/data-providers/interfaces.ts:578 + +*** + +### setCustomProperty() + +> **setCustomProperty**: (`name`, `value`) => `void` + +Allows you to set custom properties on the data provider. You can use this to store any custom information you need. + +#### Parameters + +• **name**: `string` + +• **value**: `any` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:716 *** @@ -346,7 +721,7 @@ The new data source. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:397 +src/utils/dataset/data-providers/interfaces.ts:646 *** @@ -368,7 +743,7 @@ Sets the error state of the provider. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:460 +src/utils/dataset/data-providers/interfaces.ts:735 *** @@ -380,13 +755,13 @@ Allows you to define interceptors to customize data flows in Dataset. #### Type Parameters -• **K** *extends* `"columns"` +• **K** *extends* keyof [`IDataProviderInterceptors`](IDataProviderInterceptors.md) #### Parameters • **name**: `K` -• **interceptor**: [`IDatasetInterceptors`](IDatasetInterceptors.md)\[`K`\] +• **interceptor**: [`IInterceptor`](../type-aliases/IInterceptor.md)\<[`IDataProviderInterceptors`](IDataProviderInterceptors.md), `K`\> #### Returns @@ -394,7 +769,7 @@ Allows you to define interceptors to customize data flows in Dataset. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:445 +src/utils/dataset/data-providers/interfaces.ts:699 *** @@ -414,7 +789,7 @@ Sets whether the data provider is currently loading. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:430 +src/utils/dataset/data-providers/interfaces.ts:684 *** @@ -434,7 +809,53 @@ Allows you to change the initial associated entity metadata. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:390 +src/utils/dataset/data-providers/interfaces.ts:639 + +*** + +### setProperty() + +> **setProperty**: \<`K`\>(`name`, `value`) => `void` + +Allows settings of additional properties on data provider. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderProperties`](IDataProviderProperties.md) + +#### Parameters + +• **name**: `K` + +• **value**: [`IDataProviderProperties`](IDataProviderProperties.md)\[`K`\] + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:704 + +*** + +### setSelectedRecordIds() + +> **setSelectedRecordIds**: (`ids`) => `void` + +Sets the currently selected record IDs. + +#### Parameters + +• **ids**: `string`[] + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:829 *** @@ -454,21 +875,43 @@ Sets the dataset's title. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:298 +src/utils/dataset/data-providers/interfaces.ts:568 + +*** + +### setViewId() + +> **setViewId**: (`id`) => `void` + +Sets the id of the current view + +#### Parameters + +• **id**: `string` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:674 *** -### toggleRecordFieldValidity() +### toggleSelectedRecordId() -> **toggleRecordFieldValidity**: (`recordFieldId`, `isValid`) => `void` +> **toggleSelectedRecordId**: (`recordId`, `options`?) => `void` -Internal method. Toggles whether a record field is valid or not. +Toggles the selection state of a record ID. #### Parameters -• **recordFieldId**: `string` +• **recordId**: `string` + +• **options?** -• **isValid**: `boolean` +• **options.clearExisting?**: `boolean` #### Returns @@ -476,24 +919,29 @@ Internal method. Toggles whether a record field is valid or not. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:358 +src/utils/dataset/data-providers/interfaces.ts:835 ## Methods -### getAllDefinedColumns() +### createGroupedRecordDataProvider() + +> **createGroupedRecordDataProvider**(`group`): [`IDataProvider`](IDataProvider.md) + +Returns a child data provider that can be used to retrieve grouped records. If a provider for this group already exists, it will be returned instead. + +#### Parameters -> **getAllDefinedColumns**(): [`IColumn`](IColumn.md)[] +• **group**: [`IRecord`](IRecord.md) -Same as `getColumns`, but it additionaly returns columns that have previously been defined as well. For example, if a column is removed -via `setColumns`, it will no longer appear in `getColumns` result, but it will still be redurned with `getAllDefinedColumns`. +The record representing the group for which to retrieve child records. #### Returns -[`IColumn`](IColumn.md)[] +[`IDataProvider`](IDataProvider.md) #### Defined in -src/utils/dataset/data-providers/interfaces.ts:277 +src/utils/dataset/data-providers/interfaces.ts:784 *** @@ -501,17 +949,31 @@ src/utils/dataset/data-providers/interfaces.ts:277 > **getColumns**(): [`IColumn`](IColumn.md)[] -Returns column information, such as column names and data types. +Returns current columns #### Returns [`IColumn`](IColumn.md)[] -An array of column information objects. +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:540 + +*** + +### getColumnsMap() + +> **getColumnsMap**(): `object` + +Returns a map of all columns that have been defined for the provider. Also includes columns that have been deleted via `setColumns`. + +#### Returns + +`object` #### Defined in -src/utils/dataset/data-providers/interfaces.ts:271 +src/utils/dataset/data-providers/interfaces.ts:546 *** @@ -527,7 +989,7 @@ Returns the error message from the last data retrieval attempt, if any. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:235 +src/utils/dataset/data-providers/interfaces.ts:491 *** @@ -543,65 +1005,101 @@ Gets the current filtering. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:318 +src/utils/dataset/data-providers/interfaces.ts:588 + +*** + +### getGroupedRecordDataProvider() + +> **getGroupedRecordDataProvider**(`groupedRecordId`): `null` \| [`IDataProvider`](IDataProvider.md) + +Returns a child data provider for a specific parent record ID. + +#### Parameters + +• **groupedRecordId**: `string` + +#### Returns + +`null` \| [`IDataProvider`](IDataProvider.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:789 *** ### getLinking() -> **getLinking**(): `LinkEntityExposedExpression`[] +> **getLinking**(): [`ILinkEntityExposedExpression`](ILinkEntityExposedExpression.md)[] Retrieves the link entity expressions used to join related entities. #### Returns -`LinkEntityExposedExpression`[] +[`ILinkEntityExposedExpression`](ILinkEntityExposedExpression.md)[] #### Defined in -src/utils/dataset/data-providers/interfaces.ts:328 +src/utils/dataset/data-providers/interfaces.ts:598 *** ### getPaging() -> **getPaging**(): `Paging` & `object` +> **getPaging**(): `Omit`\<`Paging`, `"loadNextPage"` \| `"loadExactPage"` \| `"loadPreviousPage"`\> & `object` Returns paging information (like page number, total pages, etc.). #### Returns -`Paging` & `object` +`Omit`\<`Paging`, `"loadNextPage"` \| `"loadExactPage"` \| `"loadPreviousPage"`\> & `object` The paging information. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:265 +src/utils/dataset/data-providers/interfaces.ts:521 *** ### getRawData() -> **getRawData**(): `null` \| `object` +> **getRawData**(): [`IRawRecord`](IRawRecord.md)[] + +Returns an array of raw data records. + +#### Returns + +[`IRawRecord`](IRawRecord.md)[] + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:603 -Retrieves raw provider data. +*** + +### getRawDataMap() + +> **getRawDataMap**(): `object` + +Same as `getRawData`, but returns a map instead of array for fast lookups. #### Returns -`null` \| `object` +`object` #### Defined in -src/utils/dataset/data-providers/interfaces.ts:338 +src/utils/dataset/data-providers/interfaces.ts:608 *** -### getRawRecordData() +### getRecordIndex() -> **getRawRecordData**(`recordId`): `null` \| `object` +> **getRecordIndex**(`recordId`): `number` -Retrieves the raw record data for a given record by its ID. +Returns array index of a record by it's ID. This index corresponds to the record's position in an array that's return by the #### Parameters @@ -609,11 +1107,11 @@ Retrieves the raw record data for a given record by its ID. #### Returns -`null` \| `object` +`number` #### Defined in -src/utils/dataset/data-providers/interfaces.ts:333 +src/utils/dataset/data-providers/interfaces.ts:851 *** @@ -631,7 +1129,7 @@ A list of records. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:259 +src/utils/dataset/data-providers/interfaces.ts:515 *** @@ -647,7 +1145,7 @@ Retrieves the current sorting criteria. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:323 +src/utils/dataset/data-providers/interfaces.ts:593 *** @@ -663,7 +1161,7 @@ Returns the title provided by the data provider. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:293 +src/utils/dataset/data-providers/interfaces.ts:563 *** @@ -679,45 +1177,47 @@ Returns true if an error occurred during the last data retrieval process. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:230 +src/utils/dataset/data-providers/interfaces.ts:486 *** ### refresh() -> **refresh**(): [`IRecord`](IRecord.md)[] \| `Promise`\<[`IRecord`](IRecord.md)[]\> +> **refresh**(): `Promise`\<[`IRecord`](IRecord.md)[]\> Refreshes the records list and returns the refreshed records. #### Returns -[`IRecord`](IRecord.md)[] \| `Promise`\<[`IRecord`](IRecord.md)[]\> +`Promise`\<[`IRecord`](IRecord.md)[]\> A promise resolving to a list of refreshed records. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:253 +src/utils/dataset/data-providers/interfaces.ts:509 *** ### save() -> **save**(`record`): `Promise`\<`void`\> +> **save**(`records`?): `Promise`\<[`IRecordSaveOperationResult`](IRecordSaveOperationResult.md)[]\> Saves the provided record to the database. #### Parameters -• **record**: [`IRecord`](IRecord.md) +• **records?**: [`IRecord`](IRecord.md)[] + +The records to save. If not provided, all dirty records will be saved. #### Returns -`Promise`\<`void`\> +`Promise`\<[`IRecordSaveOperationResult`](IRecordSaveOperationResult.md)[]\> #### Defined in -src/utils/dataset/data-providers/interfaces.ts:288 +src/utils/dataset/data-providers/interfaces.ts:558 *** @@ -737,7 +1237,7 @@ Sets the columns for the dataset. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:283 +src/utils/dataset/data-providers/interfaces.ts:552 *** @@ -759,7 +1259,7 @@ The filtering criteria, or null if no filter is applied. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:247 +src/utils/dataset/data-providers/interfaces.ts:503 *** @@ -771,7 +1271,7 @@ Sets the link entity expressions for joining related entities. #### Parameters -• **expr**: `LinkEntityExposedExpression`[] +• **expr**: [`ILinkEntityExposedExpression`](ILinkEntityExposedExpression.md)[] #### Returns @@ -779,7 +1279,7 @@ Sets the link entity expressions for joining related entities. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:313 +src/utils/dataset/data-providers/interfaces.ts:583 *** @@ -799,7 +1299,7 @@ Sets a new search query for filtering. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:343 +src/utils/dataset/data-providers/interfaces.ts:613 *** @@ -821,4 +1321,4 @@ The latest sorting details as an array of SortStatus objects. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:241 +src/utils/dataset/data-providers/interfaces.ts:497 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderCustomProperties.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderCustomProperties.md new file mode 100644 index 000000000..14a5bad2b --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderCustomProperties.md @@ -0,0 +1 @@ +Custom properties that can be set on a data provider. 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 000000000..8deded9a9 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderEventListeners.md @@ -0,0 +1,321 @@ +Allows you to define callbacks that will trigger during specific events. + +## Properties + +### onAfterRecordSaved() + +> **onAfterRecordSaved**: (`result`) => `void` + +Runs after a record in a dataset has been saved. + +#### Parameters + +• **result**: [`IRecordSaveOperationResult`](IRecordSaveOperationResult.md) + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1359 + +*** + +### onAfterSaved() + +> **onAfterSaved**: (`results`) => `void` + +Runs after all records in dataset have been saved. Does not run if auto-save is disabled. You can use `onAfterRecordSaved` to react to individual record saves. + +#### Parameters + +• **results**: [`IRecordSaveOperationResult`](IRecordSaveOperationResult.md)[] + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1373 + +*** + +### onBeforeFirstDataLoaded() + +> **onBeforeFirstDataLoaded**: () => `void` + +Triggers before first data are loaded. Fires only once, before the data is about to be loaded. + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1351 + +*** + +### onBeforeNewDataLoaded() + +> **onBeforeNewDataLoaded**: () => `void` + +Triggers before the data is loaded, for example before a `refresh` or `loadExactPage` events. + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1312 + +*** + +### onBeforeRecordSaved() + +> **onBeforeRecordSaved**: (`record`) => `void` + +Runs before the datasat is about to be saved. + +#### Parameters + +• **record**: [`IRecord`](IRecord.md) + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1355 + +*** + +### onDestroyed() + +> **onDestroyed**: () => `void` + +Called when the Dataset has been destroyed. + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1338 + +*** + +### onError() + +> **onError**: (`errorMessage`, `details`?) => `void` + +Called when an error occurs in the dataset. + +#### Parameters + +• **errorMessage**: `string` + +• **details?**: `any` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1343 + +*** + +### onFirstDataLoaded() + +> **onFirstDataLoaded**: () => `void` + +Same as `onNewDataLoaded`, but triggers only once, when the dataset is first loaded. + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1316 + +*** + +### onLoading() + +> **onLoading**: (`isLoading`) => `void` + +Triggers when the dataset switches it's loading state. + +#### Parameters + +• **isLoading**: `boolean` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1347 + +*** + +### onNestedProviderPagingLimitReached() + +> **onNestedProviderPagingLimitReached**: () => `void` + +Toggles when a child data provider reaches it's paging limit (5000). + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1378 + +*** + +### onNewDataLoaded() + +> **onNewDataLoaded**: () => `void` + +Triggers when new data has been loaded, for example after a `refresh` or `loadExactPage` events. + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1307 + +*** + +### onPageSizeChanged() + +> **onPageSizeChanged**: (`pageSize`) => `void` + +Triggers when page size changes. + +#### Parameters + +• **pageSize**: `number` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1333 + +*** + +### onRecordColumnValueChanged() + +> **onRecordColumnValueChanged**: (`record`, `columnName`, `newValue`) => `void` + +Triggers when record column value has been changed. + +#### Parameters + +• **record**: [`IRecord`](IRecord.md) + +• **columnName**: `string` + +• **newValue**: `any` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1325 + +*** + +### onRecordCommandsRetrieved() + +> **onRecordCommandsRetrieved**: (`commands`, `options`?) => `void` + +Fires whenever record commands are retrieved by any part of code. + +#### Parameters + +• **commands**: [`ICommand`](ICommand.md)[] + +• **options?**: [`IRetrieveRecordCommandOptions`](IRetrieveRecordCommandOptions.md) + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1368 + +*** + +### onRecordLoaded() + +> **onRecordLoaded**: (`record`) => `void` + +Triggers when new record has been loaded, for example after a `refresh` or `loadExactPage` events. Can be used to register expressions on a record. + +#### Parameters + +• **record**: [`IRecord`](IRecord.md) + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1321 + +*** + +### onRecordsSelected() + +> **onRecordsSelected**: (`selectedRecordIds`) => `void` + +Triggers when some record/s has been selected. + +#### Parameters + +• **selectedRecordIds**: `string`[] + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1329 + +*** + +### onRenderRequested() + +> **onRenderRequested**: () => `void` + +Runs when something from outside of dataset requests a rerender of control that uses it. + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1363 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderInterceptors.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderInterceptors.md new file mode 100644 index 000000000..c5bd0dabb --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderInterceptors.md @@ -0,0 +1,97 @@ +Allows you to intercept certain data flows and inject custom data + +## Properties + +### columns() + +> **columns**: (`columns`) => [`IColumn`](IColumn.md)[] + +Intercepts all column getters. You can use it to add your own custom columns during runtime or edit existing ones. NEVER MANIPULATE THE ORIGINAL OBJECTS, ALWAYS USE SPREAD OPERATORS + +#### Parameters + +• **columns**: [`IColumn`](IColumn.md)[] + +#### Returns + +[`IColumn`](IColumn.md)[] + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1408 + +*** + +### onFirstDataLoad() + +> **onFirstDataLoad**: () => `Promise`\<`void`\> + +Callback that gets triggered nad awaited before the dataset loads first data. Useful for setting initialization code that needs to run before dataset records are loaded. + +#### Returns + +`Promise`\<`void`\> + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1390 + +*** + +### onOpenDatasetItem() + +> **onOpenDatasetItem**: (`entityReference`) => `void` + +Can be used to customizer or override the behavior for opening a dataset item. + +#### Parameters + +• **entityReference**: `EntityReference` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1394 + +*** + +### onRecordSave() + +> **onRecordSave**: (`record`) => `Promise`\<[`IRecordSaveOperationResult`](IRecordSaveOperationResult.md)\> + +Can be used to provide custom logic for record saving. + +#### Parameters + +• **record**: [`IRecord`](IRecord.md) + +#### Returns + +`Promise`\<[`IRecordSaveOperationResult`](IRecordSaveOperationResult.md)\> + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1399 + +*** + +### onRetrieveRecordCommand() + +> **onRetrieveRecordCommand**: (`options`?) => `Promise`\<[`ICommand`](ICommand.md)[]\> + +Can be used to customize both main and inline ribbons. + +#### Parameters + +• **options?**: [`IRetrieveRecordCommandOptions`](IRetrieveRecordCommandOptions.md) + +#### Returns + +`Promise`\<[`ICommand`](ICommand.md)[]\> + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1404 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderProperties.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderProperties.md new file mode 100644 index 000000000..f70f83e13 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataProviderProperties.md @@ -0,0 +1,82 @@ +Configuration properties for data provider behavior and features. + +## Properties + +### allowAggregationWithoutGrouping? + +> `optional` **allowAggregationWithoutGrouping**: `boolean` + +Whether the data provider should support aggregations without grouping. By default, the data provider will ignore aggregations if no columns are grouped. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:53 + +*** + +### autoSave? + +> `optional` **autoSave**: `boolean` + +NOTE: Setting this property to `true` does not mean the provider will auto-save changes. It simply gives provider more context on the environment it is running in. +For example, if `retrieveRecordCommand` is called, and `autoSave` is true, the provider will not return an executable save command if there are unsaved changes. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:42 + +*** + +### groupingType + +> **groupingType**: `"flat"` \| `"nested"` + +Decides how to provider should handle grouping. If set to `nested`, the provider will create a hierarchy of data providers for each group level. +If set to `flat`, the provider will create a flat list of records with filters applied for each group. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:37 + +*** + +### hasPreviousState? + +> `optional` **hasPreviousState**: `boolean` + +Description placeholder + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:64 + +*** + +### inlineRibbonButtonsIds? + +> `optional` **inlineRibbonButtonsIds**: `Set`\<`string`\> + +Set of ribbon button ids that will be considered as inline ribbon buttons. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:60 + +*** + +### isStandalone? + +> `optional` **isStandalone**: `boolean` + +Whether the provider is going to be used in an environment where the host environment does not create any dataset instance, for example in field PCF. +Should only be set to `false` by the host environment (DatasetAdapter for both Power Apps and Portal). + +#### Default + +```ts +true +``` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:48 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataset.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataset.md index ee2e95d09..5cab8441f 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataset.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDataset.md @@ -2,7 +2,7 @@ Dataset object. If a property is optional, it does not exists in Microsoft's dat ## Extends -- `Omit`\<`ComponentFramework.PropertyTypes.DataSet`, `"filtering"` \| `"records"` \| `"columns"`\> +- `Omit`\<`ComponentFramework.PropertyTypes.DataSet`, `"filtering"` \| `"records"` \| `"columns"`\>.`IEventEmitter`\<[`IDataProviderEventListeners`](IDataProviderEventListeners.md)\> ## Properties @@ -36,76 +36,6 @@ node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2244 *** -### addEventListener() - -> **addEventListener**: \<`K`\>(`event`, `eventListener`) => `void` - -Allows to define listener method that will trigger when specific event occurs. - -#### Type Parameters - -• **K** *extends* keyof [`IDatasetEventListeners`](IDatasetEventListeners.md) - -#### Parameters - -• **event**: `K` - -• **eventListener**: [`IDatasetEventListeners`](IDatasetEventListeners.md)\[`K`\] - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:332 - -*** - -### clearChanges() - -> **clearChanges**: () => `void` - -Clears any changes in the dataset, resetting all record values to their initial state. - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:322 - -*** - -### columns - -> **columns**: [`IColumn`](IColumn.md)[] - -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. If a property is optional, it does not exists in Microsoft's dataset implementation. - -#### Defined in - -src/utils/dataset/interfaces.ts:227 - -*** - -### destroy() - -> **destroy**: () => `void` - -Destroyes the dataset. - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:342 - -*** - ### error > **error**: `boolean` @@ -156,162 +86,35 @@ Filter state for a dataset. #### Defined in -src/utils/dataset/interfaces.ts:220 +src/utils/dataset/interfaces.ts:11 *** -### fireEventListeners()? - -> `optional` **fireEventListeners**: \<`K`\>(`event`, ...`par`) => `ReturnType`\<[`IDatasetEventListeners`](IDatasetEventListeners.md)\[`K`\]\>[] - -Fires all registered event listener for a given event. +### getSelectedRecordIds() -#### Type Parameters +> **getSelectedRecordIds**: (`options`?) => `string`[] -• **K** *extends* keyof [`IDatasetEventListeners`](IDatasetEventListeners.md) +Retrieves all selected record ids #### Parameters -• **event**: `K` - -• ...**par**: `Parameters`\<[`IDatasetEventListeners`](IDatasetEventListeners.md)\[`K`\]\> - -#### Returns - -`ReturnType`\<[`IDatasetEventListeners`](IDatasetEventListeners.md)\[`K`\]\>[] - -#### Defined in - -src/utils/dataset/interfaces.ts:347 - -*** - -### getChanges() - -> **getChanges**: () => [`IRecordChanges`](IRecordChanges.md) - -Retrieves the changes made to the records in the dataset. Change occures when `setValue` API on record is used to change it's initial value. -Only dirty changes are kept, meaning if later call of `setValue` resets the value to it's original state, it's change reference is removed. - -#### Returns - -[`IRecordChanges`](IRecordChanges.md) - -#### Defined in - -src/utils/dataset/interfaces.ts:317 - -*** - -### getDataProvider() - -> **getDataProvider**: () => [`IDataProvider`](IDataProvider.md) - -Gets the data provider instance for this dataset. - -#### Returns - -[`IDataProvider`](IDataProvider.md) +• **options?** -#### Defined in - -src/utils/dataset/interfaces.ts:266 - -*** - -### getDataSource() - -> **getDataSource**: () => `any` - -Gets the current Data Source. - -#### Returns - -`any` - -#### Defined in - -src/utils/dataset/interfaces.ts:261 - -*** - -### getMetadata() - -> **getMetadata**: () => `any` - -Gets the associated entity metadata. - -#### Returns - -`any` - -#### Defined in - -src/utils/dataset/interfaces.ts:246 - -*** - -### getSearchQuery() - -> **getSearchQuery**: () => `null` \| `string` - -Gets Quick find search query. - -#### Returns - -`null` \| `string` - -#### Defined in - -src/utils/dataset/interfaces.ts:296 - -*** - -### hasInvalidChanges() - -> **hasInvalidChanges**: () => `boolean` - -Whether the dataset has any invalid changes. +• **options.includeChildrenRecordIds?**: `boolean` -#### Returns - -`boolean` - -#### Defined in - -src/utils/dataset/interfaces.ts:301 - -*** - -### isDirty() - -> **isDirty**: () => `boolean` - -Checks if the dataset has unsaved changes. Change can occure by using the `setValue` API on record. +• **options.includeGroupRecordIds?**: `boolean` #### Returns -`boolean` - -#### Defined in - -src/utils/dataset/interfaces.ts:306 - -*** - -### isValid() - -> **isValid**: () => `boolean` - -Whether the dataset has any invalid values. +`string`[] -#### Returns +#### Overrides -`boolean` +`Omit.getSelectedRecordIds` #### Defined in -src/utils/dataset/interfaces.ts:311 +src/utils/dataset/interfaces.ts:44 *** @@ -349,33 +152,17 @@ node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2274 ### paging -> **paging**: `Paging` & `object` +> **paging**: `Omit`\<`Paging`, `"loadNextPage"` \| `"loadExactPage"` \| `"loadPreviousPage"`\> & `object` -Paging state for a dataset +Pagination status and actions. #### Type declaration ##### loadExactPage() -> **loadExactPage**: (`pageNumber`, `save`?) => `void` - -###### Parameters - -• **pageNumber**: `number` - -• **save?**: `boolean` - -###### Returns - -`void` - -##### pageNumber - -> **pageNumber**: `number` +> **loadExactPage**: (`pageNumber`) => `Promise`\<[`IRecord`](IRecord.md)[]\> -##### setPageNumber() - -> **setPageNumber**: (`pageNumber`) => `void` +Returns exact page of records. ###### Parameters @@ -383,209 +170,75 @@ Paging state for a dataset ###### Returns -`void` +`Promise`\<[`IRecord`](IRecord.md)[]\> -#### Overrides +##### loadNextPage() -`Omit.paging` - -#### Defined in - -src/utils/dataset/interfaces.ts:232 - -*** - -### records - -> **records**: `object` - -Map of IDs to the full record object. - -#### Index Signature - - \[`key`: `string`\]: [`IRecord`](IRecord.md) - -#### Defined in - -src/utils/dataset/interfaces.ts:241 - -*** - -### render() - -> **render**: () => `void` - -Rerenders the Dataset Control - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:286 - -*** - -### save() - -> **save**: () => `Promise`\<`void`\> - -Saves all unsaved changes in dataset. - -#### Returns - -`Promise`\<`void`\> - -#### Defined in - -src/utils/dataset/interfaces.ts:276 - -*** - -### setColumns() +> **loadNextPage**: () => `Promise`\<[`IRecord`](IRecord.md)[]\> -> **setColumns**: (`columns`) => `void` +Returns next page of records. -Sets the columns in the dataset. - -#### Parameters - -• **columns**: `any` - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:327 - -*** - -### setCurrencies() - -> **setCurrencies**: (`currencies`) => `void` - -Sets the currencies the dataset can work with. - -#### Parameters - -• **currencies**: [`ICurrency`](ICurrency.md)[] - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:251 - -*** - -### setDataSource() - -> **setDataSource**: (`dataSource`) => `void` - -Allows you to change the initial Data Source. - -#### Parameters - -• **dataSource**: `any` - -#### Returns +###### Returns -`void` +`Promise`\<[`IRecord`](IRecord.md)[]\> -#### Defined in +##### loadPreviousPage() -src/utils/dataset/interfaces.ts:271 +> **loadPreviousPage**: () => `Promise`\<[`IRecord`](IRecord.md)[]\> -*** +Loads previous page of records -### setInterceptor() +###### Returns -> **setInterceptor**: \<`K`\>(`name`, `interceptor`) => `void` +`Promise`\<[`IRecord`](IRecord.md)[]\> -Allows you to define interceptors to customize data flows in Dataset. +##### pageNumber -#### Type Parameters +> **pageNumber**: `number` -• **K** *extends* `"columns"` +##### setPageNumber() -#### Parameters +> **setPageNumber**: (`pageNumber`) => `void` -• **name**: `K` +###### Parameters -• **interceptor**: [`IDatasetInterceptors`](IDatasetInterceptors.md)\[`K`\] +• **pageNumber**: `number` -#### Returns +###### Returns `void` -#### Defined in - -src/utils/dataset/interfaces.ts:337 - -*** - -### setMetadata() - -> **setMetadata**: (`metadata`) => `void` - -Allows you to change the initial associated entity metadata. - -#### Parameters - -• **metadata**: `any` - -#### Returns +#### Overrides -`void` +`Omit.paging` #### Defined in -src/utils/dataset/interfaces.ts:281 +src/utils/dataset/interfaces.ts:19 *** -### setSearchQuery() - -> **setSearchQuery**: (`query`) => `void` +### refresh() -Sets quick find seach query. +> **refresh**: () => `Promise`\<[`IRecord`](IRecord.md)[]\> -#### Parameters +Refreshes the dataset based on filters, sorting, linking, new column. New data will be pushed to control in another 'updateView' cycle. -• **query**: `string` +Refreshes the records list and returns the refreshed records. #### Returns -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:291 - -*** - -### setTitle() +`Promise`\<[`IRecord`](IRecord.md)[]\> -> **setTitle**: (`title`) => `void` +A promise resolving to a list of refreshed records. -Sets the dataset's title. - -#### Parameters - -• **title**: `string` - -#### Returns +#### Overrides -`void` +`Omit.refresh` #### Defined in -src/utils/dataset/interfaces.ts:256 +src/utils/dataset/interfaces.ts:23 *** @@ -641,26 +294,6 @@ node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2301 *** -### getSelectedRecordIds() - -> **getSelectedRecordIds**(): `string`[] - -Retrieves all selected record ids - -#### Returns - -`string`[] - -#### Inherited from - -`Omit.getSelectedRecordIds` - -#### Defined in - -node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2306 - -*** - ### getTargetEntityType() > **getTargetEntityType**(): `string` @@ -748,26 +381,6 @@ node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2328 *** -### refresh() - -> **refresh**(): `void` - -Refreshes the dataset based on filters, sorting, linking, new column. New data will be pushed to control in another 'updateView' cycle. - -#### Returns - -`void` - -#### Inherited from - -`Omit.refresh` - -#### Defined in - -node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2333 - -*** - ### setSelectedRecordIds() > **setSelectedRecordIds**(`ids`): `void` 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 deleted file mode 100644 index 623255ad1..000000000 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDatasetEventListeners.md +++ /dev/null @@ -1,213 +0,0 @@ -Allows you to define callbacks that will trigger during specific events. - -## Properties - -### onAfterRecordSaved() - -> **onAfterRecordSaved**: (`record`) => `void` - -Triggers when record has been saved. - -#### Parameters - -• **record**: [`IRecord`](IRecord.md) - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:44 - -*** - -### onChangesCleared() - -> **onChangesCleared**: () => `void` - -Triggers when dataset changes get cleared. - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:49 - -*** - -### onDatasetDestroyed() - -> **onDatasetDestroyed**: () => `void` - -Called when the Dataset has been destroyed. - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:64 - -*** - -### onDatasetItemOpened() - -> **onDatasetItemOpened**: (`entityReference`) => `void` - -Triggers when record has been opened. If specified, it overrides the native behavior. - -#### Parameters - -• **entityReference**: `EntityReference` - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:13 - -*** - -### onNewDataLoaded() - -> **onNewDataLoaded**: () => `void` - -Triggers when new data has been loaded, for example after a `refresh` or `loadExactPage` events. - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:18 - -*** - -### onPageSizeChanged() - -> **onPageSizeChanged**: (`pageSize`) => `void` - -Triggers when page size changes. - -#### Parameters - -• **pageSize**: `number` - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:54 - -*** - -### onRecordColumnClick() - -> **onRecordColumnClick**: (`record`, `columnName`) => `void` - -Triggers when user clicks a record column. - -#### Parameters - -• **record**: [`IRecord`](IRecord.md) - -• **columnName**: `string` - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:59 - -*** - -### onRecordColumnValueChanged() - -> **onRecordColumnValueChanged**: (`record`, `columnName`) => `void` - -Triggers when record column value has been changed. - -#### Parameters - -• **record**: [`IRecord`](IRecord.md) - -• **columnName**: `string` - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:29 - -*** - -### onRecordLoaded() - -> **onRecordLoaded**: (`record`) => `void` - -Triggers when new record has been loaded, for example after a `refresh` or `loadExactPage` events. Can be used to register expressions on a record. - -#### Parameters - -• **record**: [`IRecord`](IRecord.md) - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:24 - -*** - -### onRecordSave() - -> **onRecordSave**: (`record`) => `Promise`\<`void`\> - -Allows you to specify custom saving logic. If specified, the native `onSave` code in provider will not execute. - -#### Parameters - -• **record**: [`IRecord`](IRecord.md) - -#### Returns - -`Promise`\<`void`\> - -#### Defined in - -src/utils/dataset/interfaces.ts:39 - -*** - -### onRecordsSelected() - -> **onRecordsSelected**: (`selectedRecordIds`) => `void` - -Triggers when some record/s has been selected. - -#### Parameters - -• **selectedRecordIds**: `string`[] - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/interfaces.ts:34 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDatasetInterceptors.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDatasetInterceptors.md deleted file mode 100644 index a57587ad9..000000000 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IDatasetInterceptors.md +++ /dev/null @@ -1,21 +0,0 @@ -Allows you to intercept certain data flows and inject custom data - -## Properties - -### columns() - -> **columns**: (`columns`) => [`IColumn`](IColumn.md)[] - -Intercepts all column getters. You can use it to add your own custom columns during runtime or edit existing ones. NEVER MANIPULATE THE ORIGINAL OBJECTS, ALWAYS USE SPREAD OPERATORS - -#### Parameters - -• **columns**: [`IColumn`](IColumn.md)[] - -#### Returns - -[`IColumn`](IColumn.md)[] - -#### Defined in - -src/utils/dataset/interfaces.ts:75 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IEventBubbleOptions.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IEventBubbleOptions.md new file mode 100644 index 000000000..0630f04a5 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IEventBubbleOptions.md @@ -0,0 +1 @@ +Options to control which events should bubble up from child data providers. diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFetchXmlDataProvider.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFetchXmlDataProvider.md new file mode 100644 index 000000000..45457fe31 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFetchXmlDataProvider.md @@ -0,0 +1,1611 @@ +Typings exclusive to FetchXmlDataProvider. + +## Extends + +- [`IDataProvider`](IDataProvider.md) + +## Properties + +### addEventListener() + +> **addEventListener**: \<`K`\>(`event`, `eventListener`) => `void` + +Allows defining a listener method that will trigger when a specific event occurs. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderEventListeners`](IDataProviderEventListeners.md) + +#### Parameters + +• **event**: `K` + +• **eventListener**: [`IDataProviderEventListeners`](IDataProviderEventListeners.md)\[`K`\] + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`addEventListener`](IDataProvider.md#addeventlistener) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:694 + +*** + +### aggregation + +> **aggregation**: [`IAggregation`](IAggregation.md) + +Dataset aggregations. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`aggregation`](IDataProvider.md#aggregation) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:750 + +*** + +### clearChanges() + +> **clearChanges**: () => `void` + +Clears all unsaved changes in the data provider. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`clearChanges`](IDataProvider.md#clearchanges) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:866 + +*** + +### clearSelectedRecordIds() + +> **clearSelectedRecordIds**: () => `void` + +Clears the currently selected record IDs. +been used to create the child data provider. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`clearSelectedRecordIds`](IDataProvider.md#clearselectedrecordids) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:841 + +*** + +### createNewDataProvider() + +> **createNewDataProvider**: (`eventBubbleOptions`?) => [`IDataProvider`](IDataProvider.md) + +Creates new Data Provider with the same settings as current one. +eventBubbleOptions - Options to control which events should bubble up from the new data provider to the parent. + +#### Parameters + +• **eventBubbleOptions?**: [`IEventBubbleOptions`](IEventBubbleOptions.md) + +#### Returns + +[`IDataProvider`](IDataProvider.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`createNewDataProvider`](IDataProvider.md#createnewdataprovider) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:771 + +*** + +### destroy() + +> **destroy**: () => `void` + +Destroys the provider and clears all resources. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`destroy`](IDataProvider.md#destroy) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:730 + +*** + +### getCurrencies() + +> **getCurrencies**: () => [`ICurrency`](ICurrency.md)[] + +Gets the currencies the provider is able to work with. + +#### Returns + +[`ICurrency`](ICurrency.md)[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getCurrencies`](IDataProvider.md#getcurrencies) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:573 + +*** + +### getCustomProperty() + +> **getCustomProperty**: (`name`) => `any` + +Gets a custom property from the data provider. + +#### Parameters + +• **name**: `string` + +#### Returns + +`any` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getCustomProperty`](IDataProvider.md#getcustomproperty) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:720 + +*** + +### getDataSource() + +> **getDataSource**: () => `any` + +Gets the current Data Source. + +#### Returns + +`any` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getDataSource`](IDataProvider.md#getdatasource) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:652 + +*** + +### getDirtyRecordIds() + +> **getDirtyRecordIds**: () => `string`[] + +Returns the IDs of records that have unsaved changes. + +#### Returns + +`string`[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getDirtyRecordIds`](IDataProvider.md#getdirtyrecordids) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:856 + +*** + +### getEntityName() + +> **getEntityName**: () => `string` + +Returns the name of the associated entity. + +#### Returns + +`string` + +The entity name. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getEntityName`](IDataProvider.md#getentityname) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:664 + +*** + +### getGroupedRecordDataProviders() + +> **getGroupedRecordDataProviders**: (`allLevels`?) => [`IDataProvider`](IDataProvider.md)[] + +Returns all direct grouped records data providers. + +#### Parameters + +• **allLevels?**: `boolean` + +If true, returns grouped record providers at all levels. If false, returns only direct children. + +#### Returns + +[`IDataProvider`](IDataProvider.md)[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getGroupedRecordDataProviders`](IDataProvider.md#getgroupedrecorddataproviders) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:778 + +*** + +### getInvalidRecordIds() + +> **getInvalidRecordIds**: () => `string`[] + +Returns the IDs of records that have invalid values. + +#### Returns + +`string`[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getInvalidRecordIds`](IDataProvider.md#getinvalidrecordids) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:861 + +*** + +### getMetadata() + +> **getMetadata**: () => `any` + +Gets the associated entity metadata. + +#### Returns + +`any` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getMetadata`](IDataProvider.md#getmetadata) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:633 + +*** + +### getNestingLevel() + +> **getNestingLevel**: () => `number` + +Returns how deep the data provider is nested. + +#### Returns + +`number` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getNestingLevel`](IDataProvider.md#getnestinglevel) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:846 + +*** + +### getParentDataProvider() + +> **getParentDataProvider**: () => `null` \| [`IDataProvider`](IDataProvider.md) + +Gets the provider that has been used to create this data provider. + +#### Returns + +`null` \| [`IDataProvider`](IDataProvider.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getParentDataProvider`](IDataProvider.md#getparentdataprovider) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:765 + +*** + +### getParentRecordId() + +> **getParentRecordId**: () => `string` + +Returns the parent record ID, if this data provider is a child of another data provider. + +#### Returns + +`string` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getParentRecordId`](IDataProvider.md#getparentrecordid) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:760 + +*** + +### getProperty() + +> **getProperty**: \<`K`\>(`name`) => [`IDataProviderProperties`](IDataProviderProperties.md)\[`K`\] + +Gets the defined property. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderProperties`](IDataProviderProperties.md) + +#### Parameters + +• **name**: `K` + +#### Returns + +[`IDataProviderProperties`](IDataProviderProperties.md)\[`K`\] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getProperty`](IDataProvider.md#getproperty) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:709 + +*** + +### getQuickFindColumns() + +> **getQuickFindColumns**: () => [`IColumn`](IColumn.md)[] + +Returns the columns that are used for quick find search. + +#### Returns + +[`IColumn`](IColumn.md)[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getQuickFindColumns`](IDataProvider.md#getquickfindcolumns) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:879 + +*** + +### getRecordCurrencySymbol() + +> **getRecordCurrencySymbol**: (`record`, `columnName`) => `string` + +Retrieves the currency symbol for a specific column in a record. + +#### Parameters + +• **record**: [`IRecord`](IRecord.md) + +• **columnName**: `string` + +#### Returns + +`string` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getRecordCurrencySymbol`](IDataProvider.md#getrecordcurrencysymbol) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:689 + +*** + +### getSearchQuery() + +> **getSearchQuery**: () => `string` + +Retrieves the search query string. + +#### Returns + +`string` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getSearchQuery`](IDataProvider.md#getsearchquery) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:679 + +*** + +### getSelectedRecordIds() + +> **getSelectedRecordIds**: (`options`?) => `string`[] + +Returns the currently selected record IDs. + +#### Parameters + +• **options?** + +• **options.includeChildrenRecordIds?**: `boolean` + +If true, includes record IDs from child data providers. Defaults to `true`. + +• **options.includeGroupRecordIds?**: `boolean` + +If true, includes group record IDs in the result. Defaults to `false`. + +#### Returns + +`string`[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getSelectedRecordIds`](IDataProvider.md#getselectedrecordids) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:819 + +*** + +### getSortedRecordIds() + +> **getSortedRecordIds**: () => `string`[] + +Returns the current record IDs sorted by the current sorting criteria. + +#### Returns + +`string`[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getSortedRecordIds`](IDataProvider.md#getsortedrecordids) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:813 + +*** + +### getSummarizationType() + +> **getSummarizationType**: () => [`DataProviderSummarizationType`](../type-aliases/DataProviderSummarizationType.md) + +What type of summary operations this provider has applied. +- `none` - no summarization is applied +- `aggregation` - only aggregation is applied, such as sum, average, etc (no grouping). +- `grouping` - grouping is applied, aggregation can be applied as well + +#### Returns + +[`DataProviderSummarizationType`](../type-aliases/DataProviderSummarizationType.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getSummarizationType`](IDataProvider.md#getsummarizationtype) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:808 + +*** + +### getTopLevelDataProvider() + +> **getTopLevelDataProvider**: () => [`IDataProvider`](IDataProvider.md) + +If called on a nested data provider, returns the top-level data provider that servers as the root ancestor for all nested data providers. +I called from a top-level data provider, it returns itself. + +#### Returns + +[`IDataProvider`](IDataProvider.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getTopLevelDataProvider`](IDataProvider.md#gettopleveldataprovider) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:795 + +*** + +### getViewId() + +> **getViewId**: () => `string` + +Returns the ID of the current view. + +#### Returns + +`string` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getViewId`](IDataProvider.md#getviewid) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:669 + +*** + +### grouping + +> **grouping**: [`IGrouping`](IGrouping.md) + +Dataset grouping. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`grouping`](IDataProvider.md#grouping) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:755 + +*** + +### isDestroyed() + +> **isDestroyed**: () => `boolean` + +Whether the data provider has been destroyed. + +#### Returns + +`boolean` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`isDestroyed`](IDataProvider.md#isdestroyed) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:725 + +*** + +### isDirty() + +> **isDirty**: () => `boolean` + +Checks if the dataset has unsaved changes. + +#### Returns + +`boolean` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`isDirty`](IDataProvider.md#isdirty) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:623 + +*** + +### isLoading() + +> **isLoading**: () => `boolean` + +Indicates whether the data provider is currently loading. + +#### Returns + +`boolean` + +True if loading, false otherwise. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`isLoading`](IDataProvider.md#isloading) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:658 + +*** + +### isTopLevelDataProvider() + +> **isTopLevelDataProvider**: () => `boolean` + +Returns true if the data provider is a top-level data provider (not a child of another data provider). + +#### Returns + +`boolean` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`isTopLevelDataProvider`](IDataProvider.md#istopleveldataprovider) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:800 + +*** + +### isValid() + +> **isValid**: () => `boolean` + +Whether the provider contains only valid values. + +#### Returns + +`boolean` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`isValid`](IDataProvider.md#isvalid) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:628 + +*** + +### newRecord() + +> **newRecord**: (`options`?) => [`IRecord`](IRecord.md) + +Returns instance of a new record associated with the data provider. + +#### Parameters + +• **options?** + +• **options.addToDataset?**: `boolean` + +If true, the new record will be added to the dataset's record collection. +NOTE: Appending a new record to a dataset is not implemented yet, so this option has currently no effect. +All records created via this method are standalone and not part of the dataset's record collection until such functionality is implemented. + +#### Returns + +[`IRecord`](IRecord.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`newRecord`](IDataProvider.md#newrecord) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:874 + +*** + +### openDatasetItem() + +> **openDatasetItem**: (`entityReference`) => `void` + +Can be used to specify what default action happens for record opening on a specific provider. + +#### Parameters + +• **entityReference**: `EntityReference` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`openDatasetItem`](IDataProvider.md#opendatasetitem) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:618 + +*** + +### requestRender() + +> **requestRender**: () => `void` + +Request a render of all components subscribed to the `onRenderRequested` event. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`requestRender`](IDataProvider.md#requestrender) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:740 + +*** + +### retrieveRecordCommand() + +> **retrieveRecordCommand**: (`options`?) => `Promise`\<[`ICommand`](ICommand.md)[]\> + +Retrieve record's associated commands. This method should be used to fetch inline ribbon. + +#### Parameters + +• **options?**: [`IRetrieveRecordCommandOptions`](IRetrieveRecordCommandOptions.md) + +#### Returns + +`Promise`\<[`ICommand`](ICommand.md)[]\> + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`retrieveRecordCommand`](IDataProvider.md#retrieverecordcommand) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:745 + +*** + +### setColumns() + +> **setColumns**: (`columns`) => `void` + +Sets the columns for the dataset. + +#### Parameters + +• **columns**: [`IFetchXmlDataProviderColumn`](IFetchXmlDataProviderColumn.md)[] + +#### Returns + +`void` + +#### Overrides + +[`IDataProvider`](IDataProvider.md).[`setColumns`](IDataProvider.md#setcolumns) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1611 + +*** + +### setCurrencies() + +> **setCurrencies**: (`currencies`) => `void` + +Sets the currencies the dataset can work with. + +#### Parameters + +• **currencies**: [`ICurrency`](ICurrency.md)[] + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setCurrencies`](IDataProvider.md#setcurrencies) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:578 + +*** + +### setCustomProperty() + +> **setCustomProperty**: (`name`, `value`) => `void` + +Allows you to set custom properties on the data provider. You can use this to store any custom information you need. + +#### Parameters + +• **name**: `string` + +• **value**: `any` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setCustomProperty`](IDataProvider.md#setcustomproperty) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:716 + +*** + +### setDataSource() + +> **setDataSource**: (`dataSource`) => `void` + +Allows you to change the initial Data Source. + +#### Parameters + +• **dataSource**: `any` + +The new data source. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setDataSource`](IDataProvider.md#setdatasource) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:646 + +*** + +### setError() + +> **setError**: (`error`, `errorMessage`?) => `void` + +Sets the error state of the provider. + +#### Parameters + +• **error**: `boolean` + +• **errorMessage?**: `string` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setError`](IDataProvider.md#seterror) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:735 + +*** + +### setInterceptor() + +> **setInterceptor**: \<`K`\>(`name`, `interceptor`) => `void` + +Allows you to define interceptors to customize data flows in Dataset. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderInterceptors`](IDataProviderInterceptors.md) + +#### Parameters + +• **name**: `K` + +• **interceptor**: [`IInterceptor`](../type-aliases/IInterceptor.md)\<[`IDataProviderInterceptors`](IDataProviderInterceptors.md), `K`\> + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setInterceptor`](IDataProvider.md#setinterceptor) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:699 + +*** + +### setLoading() + +> **setLoading**: (`value`) => `void` + +Sets whether the data provider is currently loading. + +#### Parameters + +• **value**: `boolean` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setLoading`](IDataProvider.md#setloading) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:684 + +*** + +### setMetadata() + +> **setMetadata**: (`metadata`) => `void` + +Allows you to change the initial associated entity metadata. + +#### Parameters + +• **metadata**: `any` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setMetadata`](IDataProvider.md#setmetadata) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:639 + +*** + +### setProperty() + +> **setProperty**: \<`K`\>(`name`, `value`) => `void` + +Allows settings of additional properties on data provider. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderProperties`](IDataProviderProperties.md) + +#### Parameters + +• **name**: `K` + +• **value**: [`IDataProviderProperties`](IDataProviderProperties.md)\[`K`\] + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setProperty`](IDataProvider.md#setproperty) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:704 + +*** + +### setSelectedRecordIds() + +> **setSelectedRecordIds**: (`ids`) => `void` + +Sets the currently selected record IDs. + +#### Parameters + +• **ids**: `string`[] + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setSelectedRecordIds`](IDataProvider.md#setselectedrecordids) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:829 + +*** + +### setTitle() + +> **setTitle**: (`title`) => `void` + +Sets the dataset's title. + +#### Parameters + +• **title**: `string` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setTitle`](IDataProvider.md#settitle) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:568 + +*** + +### setViewId() + +> **setViewId**: (`id`) => `void` + +Sets the id of the current view + +#### Parameters + +• **id**: `string` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setViewId`](IDataProvider.md#setviewid) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:674 + +*** + +### toggleSelectedRecordId() + +> **toggleSelectedRecordId**: (`recordId`, `options`?) => `void` + +Toggles the selection state of a record ID. + +#### Parameters + +• **recordId**: `string` + +• **options?** + +• **options.clearExisting?**: `boolean` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`toggleSelectedRecordId`](IDataProvider.md#toggleselectedrecordid) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:835 + +## Methods + +### createGroupedRecordDataProvider() + +> **createGroupedRecordDataProvider**(`group`): [`IDataProvider`](IDataProvider.md) + +Returns a child data provider that can be used to retrieve grouped records. If a provider for this group already exists, it will be returned instead. + +#### Parameters + +• **group**: [`IRecord`](IRecord.md) + +The record representing the group for which to retrieve child records. + +#### Returns + +[`IDataProvider`](IDataProvider.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`createGroupedRecordDataProvider`](IDataProvider.md#creategroupedrecorddataprovider) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:784 + +*** + +### getColumns() + +> **getColumns**(): [`IColumn`](IColumn.md)[] + +Returns current columns + +#### Returns + +[`IColumn`](IColumn.md)[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getColumns`](IDataProvider.md#getcolumns) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:540 + +*** + +### getColumnsMap() + +> **getColumnsMap**(): `object` + +Returns a map of all columns that have been defined for the provider. Also includes columns that have been deleted via `setColumns`. + +#### Returns + +`object` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getColumnsMap`](IDataProvider.md#getcolumnsmap) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:546 + +*** + +### getCurrentFetchXml() + +> **getCurrentFetchXml**(): `string` + +Returns the current FetchXML query string. + +#### Returns + +`string` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1610 + +*** + +### getErrorMessage() + +> **getErrorMessage**(): `string` + +Returns the error message from the last data retrieval attempt, if any. + +#### Returns + +`string` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getErrorMessage`](IDataProvider.md#geterrormessage) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:491 + +*** + +### getFiltering() + +> **getFiltering**(): `null` \| `FilterExpression` + +Gets the current filtering. + +#### Returns + +`null` \| `FilterExpression` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getFiltering`](IDataProvider.md#getfiltering) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:588 + +*** + +### getGroupedRecordDataProvider() + +> **getGroupedRecordDataProvider**(`groupedRecordId`): `null` \| [`IDataProvider`](IDataProvider.md) + +Returns a child data provider for a specific parent record ID. + +#### Parameters + +• **groupedRecordId**: `string` + +#### Returns + +`null` \| [`IDataProvider`](IDataProvider.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getGroupedRecordDataProvider`](IDataProvider.md#getgroupedrecorddataprovider) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:789 + +*** + +### getLinking() + +> **getLinking**(): [`ILinkEntityExposedExpression`](ILinkEntityExposedExpression.md)[] + +Retrieves the link entity expressions used to join related entities. + +#### Returns + +[`ILinkEntityExposedExpression`](ILinkEntityExposedExpression.md)[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getLinking`](IDataProvider.md#getlinking) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:598 + +*** + +### getPaging() + +> **getPaging**(): `Omit`\<`Paging`, `"loadNextPage"` \| `"loadExactPage"` \| `"loadPreviousPage"`\> & `object` + +Returns paging information (like page number, total pages, etc.). + +#### Returns + +`Omit`\<`Paging`, `"loadNextPage"` \| `"loadExactPage"` \| `"loadPreviousPage"`\> & `object` + +The paging information. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getPaging`](IDataProvider.md#getpaging) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:521 + +*** + +### getRawData() + +> **getRawData**(): [`IRawRecord`](IRawRecord.md)[] + +Returns an array of raw data records. + +#### Returns + +[`IRawRecord`](IRawRecord.md)[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getRawData`](IDataProvider.md#getrawdata) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:603 + +*** + +### getRawDataMap() + +> **getRawDataMap**(): `object` + +Same as `getRawData`, but returns a map instead of array for fast lookups. + +#### Returns + +`object` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getRawDataMap`](IDataProvider.md#getrawdatamap) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:608 + +*** + +### getRecordIndex() + +> **getRecordIndex**(`recordId`): `number` + +Returns array index of a record by it's ID. This index corresponds to the record's position in an array that's return by the + +#### Parameters + +• **recordId**: `string` + +#### Returns + +`number` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getRecordIndex`](IDataProvider.md#getrecordindex) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:851 + +*** + +### getRecords() + +> **getRecords**(): [`IRecord`](IRecord.md)[] + +Returns the list of records. + +#### Returns + +[`IRecord`](IRecord.md)[] + +A list of records. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getRecords`](IDataProvider.md#getrecords) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:515 + +*** + +### getSorting() + +> **getSorting**(): `SortStatus`[] + +Retrieves the current sorting criteria. + +#### Returns + +`SortStatus`[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getSorting`](IDataProvider.md#getsorting) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:593 + +*** + +### getTitle() + +> **getTitle**(): `string` + +Returns the title provided by the data provider. + +#### Returns + +`string` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getTitle`](IDataProvider.md#gettitle) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:563 + +*** + +### isError() + +> **isError**(): `boolean` + +Returns true if an error occurred during the last data retrieval process. + +#### Returns + +`boolean` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`isError`](IDataProvider.md#iserror) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:486 + +*** + +### refresh() + +> **refresh**(): `Promise`\<[`IRecord`](IRecord.md)[]\> + +Refreshes the records list and returns the refreshed records. + +#### Returns + +`Promise`\<[`IRecord`](IRecord.md)[]\> + +A promise resolving to a list of refreshed records. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`refresh`](IDataProvider.md#refresh) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:509 + +*** + +### save() + +> **save**(`records`?): `Promise`\<[`IRecordSaveOperationResult`](IRecordSaveOperationResult.md)[]\> + +Saves the provided record to the database. + +#### Parameters + +• **records?**: [`IRecord`](IRecord.md)[] + +The records to save. If not provided, all dirty records will be saved. + +#### Returns + +`Promise`\<[`IRecordSaveOperationResult`](IRecordSaveOperationResult.md)[]\> + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`save`](IDataProvider.md#save) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:558 + +*** + +### setFiltering() + +> **setFiltering**(`filtering`): `void` + +Sets the latest filtering information. + +#### Parameters + +• **filtering**: `null` \| `FilterExpression` + +The filtering criteria, or null if no filter is applied. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setFiltering`](IDataProvider.md#setfiltering) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:503 + +*** + +### setLinking() + +> **setLinking**(`expr`): `void` + +Sets the link entity expressions for joining related entities. + +#### Parameters + +• **expr**: [`ILinkEntityExposedExpression`](ILinkEntityExposedExpression.md)[] + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setLinking`](IDataProvider.md#setlinking) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:583 + +*** + +### setSearchQuery() + +> **setSearchQuery**(`query`?): `void` + +Sets a new search query for filtering. + +#### Parameters + +• **query?**: `string` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setSearchQuery`](IDataProvider.md#setsearchquery) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:613 + +*** + +### setSorting() + +> **setSorting**(`sorting`): `void` + +Sets the latest sorting information. + +#### Parameters + +• **sorting**: `SortStatus`[] + +The latest sorting details as an array of SortStatus objects. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setSorting`](IDataProvider.md#setsorting) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:497 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFetchXmlDataProviderColumn.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFetchXmlDataProviderColumn.md index 52a8143a9..1ae63929a 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFetchXmlDataProviderColumn.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFetchXmlDataProviderColumn.md @@ -35,7 +35,23 @@ Alignment of the column. If not defined, numbers will be aligned to right by def #### Defined in -src/utils/dataset/interfaces.ts:156 +src/utils/dataset/data-providers/interfaces.ts:1508 + +*** + +### autoHeight? + +> `optional` **autoHeight**: `boolean` + +Whether the row height should adjust automatically based on cell's content. + +#### Inherited from + +`DeepPartial.autoHeight` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1550 *** @@ -51,13 +67,13 @@ Can be used to render custom PCF as cell renderer/editor. #### Defined in -src/utils/dataset/interfaces.ts:168 +src/utils/dataset/data-providers/interfaces.ts:1555 *** ### dataType? -> `optional` **dataType**: `string` +> `optional` **dataType**: [`DataType`](../type-aliases/DataType.md) The manifest type of this column's values. @@ -67,7 +83,7 @@ The manifest type of this column's values. #### Defined in -node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2633 +src/utils/dataset/data-providers/interfaces.ts:1483 *** @@ -103,6 +119,34 @@ node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2628 *** +### grouping? + +> `optional` **grouping**: `object` + +Grouping information for the column + +#### alias? + +> `optional` **alias**: `string` + +Optional alias. If not provided, it will be derived from the column name. + +#### isGrouped + +> **isGrouped**: `boolean` + +Whether the column should be grouped. + +#### Inherited from + +`DeepPartial.grouping` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1528 + +*** + ### isDraggable? > `optional` **isDraggable**: `boolean` @@ -115,7 +159,7 @@ If user can customize the column position. Default set to `true`. #### Defined in -src/utils/dataset/interfaces.ts:151 +src/utils/dataset/data-providers/interfaces.ts:1503 *** @@ -151,6 +195,39 @@ node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2658 *** +### isVirtual? + +> `optional` **isVirtual**: `boolean` + +Whether the underlying column exists in Data Provider's data source. If se to true, it will let the provider know +that it should not try to fetch any metadata for it. Any metadata should then be provided through the metadata attribute. + +#### Inherited from + +`DeepPartial.isVirtual` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1489 + +*** + +### metadata? + +> `optional` **metadata**: `Partial`\<`Omit`\<`AttributeMetadata`, `"OptionSet"`\> & `object`\> + +Additional metadata for the column. + +#### Inherited from + +`DeepPartial.metadata` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1494 + +*** + ### oneClickEdit? > `optional` **oneClickEdit**: `boolean` @@ -165,7 +242,7 @@ NOTE: Cell editor controls can be more resource intensive to render. It is recom #### Defined in -src/utils/dataset/interfaces.ts:163 +src/utils/dataset/data-providers/interfaces.ts:1545 *** @@ -198,7 +275,7 @@ This distinction allows the control to adjust its behavior, such as omitting dat #### Defined in -src/utils/dataset/interfaces.ts:147 +src/utils/dataset/data-providers/interfaces.ts:1499 *** diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFetchXmlDataProviderOptions.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFetchXmlDataProviderOptions.md index 2b82fc98d..a4bfb0f86 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFetchXmlDataProviderOptions.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFetchXmlDataProviderOptions.md @@ -4,22 +4,34 @@ DataProviderOptions for FetchXmlDataProvider. ### layoutCache? -> `optional` **layoutCache**: `PromiseCache`\<[`IColumn`](IColumn.md)[]\> +> `optional` **layoutCache**: [`IPromiseCache`](IPromiseCache.md)\<[`IColumn`](IColumn.md)[]\> Cache used to store the grid layout. #### Defined in -src/utils/dataset/data-providers/FetchXmlDataProvider/FetchXmlDataProvider.ts:32 +src/utils/dataset/data-providers/interfaces.ts:1590 + +*** + +### quickFindViewCache? + +> `optional` **quickFindViewCache**: [`IPromiseCache`](IPromiseCache.md)\<`string`\> + +Cache used to store quick find views. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1599 *** ### titleCache? -> `optional` **titleCache**: `PromiseCache`\<`string`\> +> `optional` **titleCache**: [`IPromiseCache`](IPromiseCache.md)\<`string`\> Cache used to store the grid title. #### Defined in -src/utils/dataset/data-providers/FetchXmlDataProvider/FetchXmlDataProvider.ts:37 +src/utils/dataset/data-providers/interfaces.ts:1595 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IField.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IField.md new file mode 100644 index 000000000..8872b9e4a --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IField.md @@ -0,0 +1,251 @@ +Represents a field within a record. + +## Properties + +### destroy() + +> **destroy**: () => `void` + +Destroys the field. + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1297 + +*** + +### getColumn() + +> **getColumn**: () => [`IColumn`](IColumn.md) + +Returns the column definition associated with this field. + +#### Returns + +[`IColumn`](IColumn.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1232 + +*** + +### getColumnInfo() + +> **getColumnInfo**: () => [`IColumnInfo`](IColumnInfo.md) + +Provides column information. + +#### Returns + +[`IColumnInfo`](IColumnInfo.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1282 + +*** + +### getCurrencySymbol() + +> **getCurrencySymbol**: () => `string` + +Gets the currency symbol used for the field. + +#### Returns + +`string` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1272 + +*** + +### getCustomProperty() + +> **getCustomProperty**: (`name`) => `any` + +Retrieves custom properties stored on the field instance. + +#### Parameters + +• **name**: `string` + +#### Returns + +`any` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1292 + +*** + +### getFormattedValue() + +> **getFormattedValue**: () => `null` \| `string` + +Gets the formatted value of the field, if available. + +#### Returns + +`null` \| `string` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1247 + +*** + +### getRecord() + +> **getRecord**: () => [`IRecord`](IRecord.md) + +Returns the record to which the field belongs. + +#### Returns + +[`IRecord`](IRecord.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1277 + +*** + +### getRequiredLevel() + +> **getRequiredLevel**: () => `RequirementLevel` + +Gets the required level for the field. + +#### Returns + +`RequirementLevel` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1262 + +*** + +### getValue() + +> **getValue**: () => `any` + +Gets the current raw value of the field. + +#### Returns + +`any` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1242 + +*** + +### isDirty() + +> **isDirty**: () => `boolean` + +Checks if the field has unsaved changes. + +#### Returns + +`boolean` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1252 + +*** + +### isDisabled() + +> **isDisabled**: () => `boolean` + +Determines if the field is currently disabled. + +#### Returns + +`boolean` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1267 + +*** + +### isValid() + +> **isValid**: () => [`IFieldValidationResult`](IFieldValidationResult.md) + +Whether the field is valid. + +#### Returns + +[`IFieldValidationResult`](IFieldValidationResult.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1257 + +*** + +### setCustomProperty() + +> **setCustomProperty**: (`name`, `value`) => `void` + +Allows you to store custom properties on the field instance. + +#### Parameters + +• **name**: `string` + +• **value**: `any` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1287 + +*** + +### setValue() + +> **setValue**: (`value`) => `void` + +Sets the field's value. + +#### Parameters + +• **value**: `any` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1237 + +*** + +### ui + +> **ui**: [`FieldUi`](../classes/FieldUi.md) + +Contains informatian about the field UI. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1227 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFieldChange.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFieldChange.md deleted file mode 100644 index 66d5e76cc..000000000 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFieldChange.md +++ /dev/null @@ -1,49 +0,0 @@ -Represents changes made on record column value. - -## Properties - -### columnName - -> **columnName**: `string` - -Name of the column. - -#### Defined in - -src/utils/dataset/data-providers/interfaces.ts:664 - -*** - -### currentValue - -> **currentValue**: `any` - -Current value of the column after changes have been made. - -#### Defined in - -src/utils/dataset/data-providers/interfaces.ts:658 - -*** - -### isValid - -> **isValid**: `boolean` - -Whether the change done to the column is valid. - -#### Defined in - -src/utils/dataset/data-providers/interfaces.ts:668 - -*** - -### originalValue - -> **originalValue**: `any` - -Original value of the column (as it came when the data was first fetched from the server). - -#### Defined in - -src/utils/dataset/data-providers/interfaces.ts:654 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFieldValidationResult.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFieldValidationResult.md index 8bfa1158c..2f90a2e54 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFieldValidationResult.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFieldValidationResult.md @@ -14,7 +14,7 @@ Returns true if the record column value has invalid value. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:679 +src/utils/dataset/data-providers/interfaces.ts:1108 *** @@ -26,4 +26,4 @@ Error message for invalid record column value. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:683 +src/utils/dataset/data-providers/interfaces.ts:1112 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFieldValue.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFieldValue.md new file mode 100644 index 000000000..10131d655 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IFieldValue.md @@ -0,0 +1 @@ +Interface for field value operations. diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IGroupByMetadata.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IGroupByMetadata.md new file mode 100644 index 000000000..4cb611a88 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IGroupByMetadata.md @@ -0,0 +1,25 @@ +Represents metadata for grouping records in a dataset. + +## Properties + +### alias + +> **alias**: `string` + +Alias representing the group by in the dataset. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:430 + +*** + +### columnName + +> **columnName**: `string` + +Name of the column to group by + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:434 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IGrouping.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IGrouping.md new file mode 100644 index 000000000..d157d225b --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IGrouping.md @@ -0,0 +1,99 @@ +Interface for grouping records in a dataset. + +## Properties + +### addGroupBy() + +> **addGroupBy**: (`groupBy`, `order`?) => `void` + +Adds a group by metadata to the dataset. + +#### Parameters + +• **groupBy**: [`IGroupByMetadata`](IGroupByMetadata.md) + +The group by metadata to add. + +• **order?**: `number` + +Optional order for the group by. If not provided, it will be added at the end of other grouped columns. + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:454 + +*** + +### clear() + +> **clear**: () => `void` + +Clears all grouping by metadata in the dataset. + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:462 + +*** + +### getGroupBy() + +> **getGroupBy**: (`alias`) => `undefined` \| [`IGroupByMetadata`](IGroupByMetadata.md) + +Gets grouping metadata for a specific alias. + +#### Parameters + +• **alias**: `string` + +#### Returns + +`undefined` \| [`IGroupByMetadata`](IGroupByMetadata.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:448 + +*** + +### getGroupBys() + +> **getGroupBys**: () => [`IGroupByMetadata`](IGroupByMetadata.md)[] + +Gets all grouping metadata in the dataset. + +#### Returns + +[`IGroupByMetadata`](IGroupByMetadata.md)[] + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:444 + +*** + +### removeGroupBy() + +> **removeGroupBy**: (`alias`) => `void` + +Removes grouping for a specific alias. + +#### Parameters + +• **alias**: `string` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:458 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ILayout.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ILayout.md new file mode 100644 index 000000000..7d4abad2e --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ILayout.md @@ -0,0 +1 @@ +Interface for layout configuration diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ILinkEntityExposedExpression.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ILinkEntityExposedExpression.md new file mode 100644 index 000000000..0228da291 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ILinkEntityExposedExpression.md @@ -0,0 +1,85 @@ +Extended link entity expression with additional properties for parent alias. + +## Extends + +- `LinkEntityExposedExpression` + +## Properties + +### alias + +> **alias**: `string` + +The 'alias' for the link-entity relationship + +#### Inherited from + +`ComponentFramework.PropertyHelper.DataSetApi.LinkEntityExposedExpression.alias` + +#### Defined in + +node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2828 + +*** + +### from + +> **from**: `string` + +The 'from' attribute in the link-entity relationship + +#### Inherited from + +`ComponentFramework.PropertyHelper.DataSetApi.LinkEntityExposedExpression.from` + +#### Defined in + +node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2813 + +*** + +### linkType + +> **linkType**: `string` + +The 'type' of the link, referred by the link-entity attribute + +#### Inherited from + +`ComponentFramework.PropertyHelper.DataSetApi.LinkEntityExposedExpression.linkType` + +#### Defined in + +node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2823 + +*** + +### name + +> **name**: `string` + +The 'name' of the entity to link to + +#### Inherited from + +`ComponentFramework.PropertyHelper.DataSetApi.LinkEntityExposedExpression.name` + +#### Defined in + +node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2808 + +*** + +### to + +> **to**: `string` + +The 'to' attribute in the link-entity relationship + +#### Inherited from + +`ComponentFramework.PropertyHelper.DataSetApi.LinkEntityExposedExpression.to` + +#### Defined in + +node\_modules/@types/powerapps-component-framework/componentframework.d.ts:2818 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IMemoryProvider.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IMemoryProvider.md new file mode 100644 index 000000000..fe9f73e82 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IMemoryProvider.md @@ -0,0 +1,1595 @@ +Interface for Memory Provider operations. + +## Extends + +- [`IDataProvider`](IDataProvider.md) + +## Properties + +### addEventListener() + +> **addEventListener**: \<`K`\>(`event`, `eventListener`) => `void` + +Allows defining a listener method that will trigger when a specific event occurs. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderEventListeners`](IDataProviderEventListeners.md) + +#### Parameters + +• **event**: `K` + +• **eventListener**: [`IDataProviderEventListeners`](IDataProviderEventListeners.md)\[`K`\] + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`addEventListener`](IDataProvider.md#addeventlistener) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:694 + +*** + +### aggregation + +> **aggregation**: [`IAggregation`](IAggregation.md) + +Dataset aggregations. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`aggregation`](IDataProvider.md#aggregation) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:750 + +*** + +### clearChanges() + +> **clearChanges**: () => `void` + +Clears all unsaved changes in the data provider. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`clearChanges`](IDataProvider.md#clearchanges) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:866 + +*** + +### clearSelectedRecordIds() + +> **clearSelectedRecordIds**: () => `void` + +Clears the currently selected record IDs. +been used to create the child data provider. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`clearSelectedRecordIds`](IDataProvider.md#clearselectedrecordids) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:841 + +*** + +### createNewDataProvider() + +> **createNewDataProvider**: (`eventBubbleOptions`?) => [`IDataProvider`](IDataProvider.md) + +Creates new Data Provider with the same settings as current one. +eventBubbleOptions - Options to control which events should bubble up from the new data provider to the parent. + +#### Parameters + +• **eventBubbleOptions?**: [`IEventBubbleOptions`](IEventBubbleOptions.md) + +#### Returns + +[`IDataProvider`](IDataProvider.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`createNewDataProvider`](IDataProvider.md#createnewdataprovider) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:771 + +*** + +### destroy() + +> **destroy**: () => `void` + +Destroys the provider and clears all resources. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`destroy`](IDataProvider.md#destroy) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:730 + +*** + +### getCurrencies() + +> **getCurrencies**: () => [`ICurrency`](ICurrency.md)[] + +Gets the currencies the provider is able to work with. + +#### Returns + +[`ICurrency`](ICurrency.md)[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getCurrencies`](IDataProvider.md#getcurrencies) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:573 + +*** + +### getCustomProperty() + +> **getCustomProperty**: (`name`) => `any` + +Gets a custom property from the data provider. + +#### Parameters + +• **name**: `string` + +#### Returns + +`any` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getCustomProperty`](IDataProvider.md#getcustomproperty) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:720 + +*** + +### getDirtyRecordIds() + +> **getDirtyRecordIds**: () => `string`[] + +Returns the IDs of records that have unsaved changes. + +#### Returns + +`string`[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getDirtyRecordIds`](IDataProvider.md#getdirtyrecordids) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:856 + +*** + +### getEntityName() + +> **getEntityName**: () => `string` + +Returns the name of the associated entity. + +#### Returns + +`string` + +The entity name. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getEntityName`](IDataProvider.md#getentityname) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:664 + +*** + +### getGroupedRecordDataProviders() + +> **getGroupedRecordDataProviders**: (`allLevels`?) => [`IDataProvider`](IDataProvider.md)[] + +Returns all direct grouped records data providers. + +#### Parameters + +• **allLevels?**: `boolean` + +If true, returns grouped record providers at all levels. If false, returns only direct children. + +#### Returns + +[`IDataProvider`](IDataProvider.md)[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getGroupedRecordDataProviders`](IDataProvider.md#getgroupedrecorddataproviders) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:778 + +*** + +### getInvalidRecordIds() + +> **getInvalidRecordIds**: () => `string`[] + +Returns the IDs of records that have invalid values. + +#### Returns + +`string`[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getInvalidRecordIds`](IDataProvider.md#getinvalidrecordids) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:861 + +*** + +### getNestingLevel() + +> **getNestingLevel**: () => `number` + +Returns how deep the data provider is nested. + +#### Returns + +`number` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getNestingLevel`](IDataProvider.md#getnestinglevel) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:846 + +*** + +### getParentDataProvider() + +> **getParentDataProvider**: () => `null` \| [`IDataProvider`](IDataProvider.md) + +Gets the provider that has been used to create this data provider. + +#### Returns + +`null` \| [`IDataProvider`](IDataProvider.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getParentDataProvider`](IDataProvider.md#getparentdataprovider) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:765 + +*** + +### getParentRecordId() + +> **getParentRecordId**: () => `string` + +Returns the parent record ID, if this data provider is a child of another data provider. + +#### Returns + +`string` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getParentRecordId`](IDataProvider.md#getparentrecordid) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:760 + +*** + +### getProperty() + +> **getProperty**: \<`K`\>(`name`) => [`IDataProviderProperties`](IDataProviderProperties.md)\[`K`\] + +Gets the defined property. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderProperties`](IDataProviderProperties.md) + +#### Parameters + +• **name**: `K` + +#### Returns + +[`IDataProviderProperties`](IDataProviderProperties.md)\[`K`\] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getProperty`](IDataProvider.md#getproperty) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:709 + +*** + +### getQuickFindColumns() + +> **getQuickFindColumns**: () => [`IColumn`](IColumn.md)[] + +Returns the columns that are used for quick find search. + +#### Returns + +[`IColumn`](IColumn.md)[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getQuickFindColumns`](IDataProvider.md#getquickfindcolumns) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:879 + +*** + +### getRecordCurrencySymbol() + +> **getRecordCurrencySymbol**: (`record`, `columnName`) => `string` + +Retrieves the currency symbol for a specific column in a record. + +#### Parameters + +• **record**: [`IRecord`](IRecord.md) + +• **columnName**: `string` + +#### Returns + +`string` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getRecordCurrencySymbol`](IDataProvider.md#getrecordcurrencysymbol) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:689 + +*** + +### getSearchQuery() + +> **getSearchQuery**: () => `string` + +Retrieves the search query string. + +#### Returns + +`string` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getSearchQuery`](IDataProvider.md#getsearchquery) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:679 + +*** + +### getSelectedRecordIds() + +> **getSelectedRecordIds**: (`options`?) => `string`[] + +Returns the currently selected record IDs. + +#### Parameters + +• **options?** + +• **options.includeChildrenRecordIds?**: `boolean` + +If true, includes record IDs from child data providers. Defaults to `true`. + +• **options.includeGroupRecordIds?**: `boolean` + +If true, includes group record IDs in the result. Defaults to `false`. + +#### Returns + +`string`[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getSelectedRecordIds`](IDataProvider.md#getselectedrecordids) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:819 + +*** + +### getSortedRecordIds() + +> **getSortedRecordIds**: () => `string`[] + +Returns the current record IDs sorted by the current sorting criteria. + +#### Returns + +`string`[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getSortedRecordIds`](IDataProvider.md#getsortedrecordids) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:813 + +*** + +### getSummarizationType() + +> **getSummarizationType**: () => [`DataProviderSummarizationType`](../type-aliases/DataProviderSummarizationType.md) + +What type of summary operations this provider has applied. +- `none` - no summarization is applied +- `aggregation` - only aggregation is applied, such as sum, average, etc (no grouping). +- `grouping` - grouping is applied, aggregation can be applied as well + +#### Returns + +[`DataProviderSummarizationType`](../type-aliases/DataProviderSummarizationType.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getSummarizationType`](IDataProvider.md#getsummarizationtype) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:808 + +*** + +### getTopLevelDataProvider() + +> **getTopLevelDataProvider**: () => [`IDataProvider`](IDataProvider.md) + +If called on a nested data provider, returns the top-level data provider that servers as the root ancestor for all nested data providers. +I called from a top-level data provider, it returns itself. + +#### Returns + +[`IDataProvider`](IDataProvider.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getTopLevelDataProvider`](IDataProvider.md#gettopleveldataprovider) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:795 + +*** + +### getViewId() + +> **getViewId**: () => `string` + +Returns the ID of the current view. + +#### Returns + +`string` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getViewId`](IDataProvider.md#getviewid) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:669 + +*** + +### grouping + +> **grouping**: [`IGrouping`](IGrouping.md) + +Dataset grouping. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`grouping`](IDataProvider.md#grouping) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:755 + +*** + +### isDestroyed() + +> **isDestroyed**: () => `boolean` + +Whether the data provider has been destroyed. + +#### Returns + +`boolean` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`isDestroyed`](IDataProvider.md#isdestroyed) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:725 + +*** + +### isDirty() + +> **isDirty**: () => `boolean` + +Checks if the dataset has unsaved changes. + +#### Returns + +`boolean` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`isDirty`](IDataProvider.md#isdirty) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:623 + +*** + +### isLoading() + +> **isLoading**: () => `boolean` + +Indicates whether the data provider is currently loading. + +#### Returns + +`boolean` + +True if loading, false otherwise. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`isLoading`](IDataProvider.md#isloading) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:658 + +*** + +### isTopLevelDataProvider() + +> **isTopLevelDataProvider**: () => `boolean` + +Returns true if the data provider is a top-level data provider (not a child of another data provider). + +#### Returns + +`boolean` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`isTopLevelDataProvider`](IDataProvider.md#istopleveldataprovider) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:800 + +*** + +### isValid() + +> **isValid**: () => `boolean` + +Whether the provider contains only valid values. + +#### Returns + +`boolean` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`isValid`](IDataProvider.md#isvalid) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:628 + +*** + +### newRecord() + +> **newRecord**: (`options`?) => [`IRecord`](IRecord.md) + +Returns instance of a new record associated with the data provider. + +#### Parameters + +• **options?** + +• **options.addToDataset?**: `boolean` + +If true, the new record will be added to the dataset's record collection. +NOTE: Appending a new record to a dataset is not implemented yet, so this option has currently no effect. +All records created via this method are standalone and not part of the dataset's record collection until such functionality is implemented. + +#### Returns + +[`IRecord`](IRecord.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`newRecord`](IDataProvider.md#newrecord) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:874 + +*** + +### openDatasetItem() + +> **openDatasetItem**: (`entityReference`) => `void` + +Can be used to specify what default action happens for record opening on a specific provider. + +#### Parameters + +• **entityReference**: `EntityReference` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`openDatasetItem`](IDataProvider.md#opendatasetitem) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:618 + +*** + +### requestRender() + +> **requestRender**: () => `void` + +Request a render of all components subscribed to the `onRenderRequested` event. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`requestRender`](IDataProvider.md#requestrender) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:740 + +*** + +### retrieveRecordCommand() + +> **retrieveRecordCommand**: (`options`?) => `Promise`\<[`ICommand`](ICommand.md)[]\> + +Retrieve record's associated commands. This method should be used to fetch inline ribbon. + +#### Parameters + +• **options?**: [`IRetrieveRecordCommandOptions`](IRetrieveRecordCommandOptions.md) + +#### Returns + +`Promise`\<[`ICommand`](ICommand.md)[]\> + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`retrieveRecordCommand`](IDataProvider.md#retrieverecordcommand) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:745 + +*** + +### setCurrencies() + +> **setCurrencies**: (`currencies`) => `void` + +Sets the currencies the dataset can work with. + +#### Parameters + +• **currencies**: [`ICurrency`](ICurrency.md)[] + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setCurrencies`](IDataProvider.md#setcurrencies) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:578 + +*** + +### setCustomProperty() + +> **setCustomProperty**: (`name`, `value`) => `void` + +Allows you to set custom properties on the data provider. You can use this to store any custom information you need. + +#### Parameters + +• **name**: `string` + +• **value**: `any` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setCustomProperty`](IDataProvider.md#setcustomproperty) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:716 + +*** + +### setDataSource() + +> **setDataSource**: (`dataSource`) => `void` + +Allows you to change the initial Data Source. + +#### Parameters + +• **dataSource**: `any` + +The new data source. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setDataSource`](IDataProvider.md#setdatasource) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:646 + +*** + +### setError() + +> **setError**: (`error`, `errorMessage`?) => `void` + +Sets the error state of the provider. + +#### Parameters + +• **error**: `boolean` + +• **errorMessage?**: `string` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setError`](IDataProvider.md#seterror) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:735 + +*** + +### setInterceptor() + +> **setInterceptor**: \<`K`\>(`name`, `interceptor`) => `void` + +Allows you to define interceptors to customize data flows in Dataset. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderInterceptors`](IDataProviderInterceptors.md) + +#### Parameters + +• **name**: `K` + +• **interceptor**: [`IInterceptor`](../type-aliases/IInterceptor.md)\<[`IDataProviderInterceptors`](IDataProviderInterceptors.md), `K`\> + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setInterceptor`](IDataProvider.md#setinterceptor) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:699 + +*** + +### setLoading() + +> **setLoading**: (`value`) => `void` + +Sets whether the data provider is currently loading. + +#### Parameters + +• **value**: `boolean` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setLoading`](IDataProvider.md#setloading) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:684 + +*** + +### setProperty() + +> **setProperty**: \<`K`\>(`name`, `value`) => `void` + +Allows settings of additional properties on data provider. + +#### Type Parameters + +• **K** *extends* keyof [`IDataProviderProperties`](IDataProviderProperties.md) + +#### Parameters + +• **name**: `K` + +• **value**: [`IDataProviderProperties`](IDataProviderProperties.md)\[`K`\] + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setProperty`](IDataProvider.md#setproperty) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:704 + +*** + +### setSelectedRecordIds() + +> **setSelectedRecordIds**: (`ids`) => `void` + +Sets the currently selected record IDs. + +#### Parameters + +• **ids**: `string`[] + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setSelectedRecordIds`](IDataProvider.md#setselectedrecordids) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:829 + +*** + +### setTitle() + +> **setTitle**: (`title`) => `void` + +Sets the dataset's title. + +#### Parameters + +• **title**: `string` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setTitle`](IDataProvider.md#settitle) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:568 + +*** + +### setViewId() + +> **setViewId**: (`id`) => `void` + +Sets the id of the current view + +#### Parameters + +• **id**: `string` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setViewId`](IDataProvider.md#setviewid) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:674 + +*** + +### toggleSelectedRecordId() + +> **toggleSelectedRecordId**: (`recordId`, `options`?) => `void` + +Toggles the selection state of a record ID. + +#### Parameters + +• **recordId**: `string` + +• **options?** + +• **options.clearExisting?**: `boolean` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`toggleSelectedRecordId`](IDataProvider.md#toggleselectedrecordid) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:835 + +## Methods + +### createGroupedRecordDataProvider() + +> **createGroupedRecordDataProvider**(`group`): [`IDataProvider`](IDataProvider.md) + +Returns a child data provider that can be used to retrieve grouped records. If a provider for this group already exists, it will be returned instead. + +#### Parameters + +• **group**: [`IRecord`](IRecord.md) + +The record representing the group for which to retrieve child records. + +#### Returns + +[`IDataProvider`](IDataProvider.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`createGroupedRecordDataProvider`](IDataProvider.md#creategroupedrecorddataprovider) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:784 + +*** + +### getColumns() + +> **getColumns**(): [`IColumn`](IColumn.md)[] + +Returns current columns + +#### Returns + +[`IColumn`](IColumn.md)[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getColumns`](IDataProvider.md#getcolumns) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:540 + +*** + +### getColumnsMap() + +> **getColumnsMap**(): `object` + +Returns a map of all columns that have been defined for the provider. Also includes columns that have been deleted via `setColumns`. + +#### Returns + +`object` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getColumnsMap`](IDataProvider.md#getcolumnsmap) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:546 + +*** + +### getDataSource() + +> **getDataSource**(): [`IRawRecord`](IRawRecord.md)[] + +Gets the current Data Source. + +#### Returns + +[`IRawRecord`](IRawRecord.md)[] + +#### Overrides + +`IDataProvider.getDataSource` + +#### Defined in + +src/utils/dataset/data-providers/memory-provider/MemoryDataProvider.ts:15 + +*** + +### getErrorMessage() + +> **getErrorMessage**(): `string` + +Returns the error message from the last data retrieval attempt, if any. + +#### Returns + +`string` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getErrorMessage`](IDataProvider.md#geterrormessage) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:491 + +*** + +### getFiltering() + +> **getFiltering**(): `null` \| `FilterExpression` + +Gets the current filtering. + +#### Returns + +`null` \| `FilterExpression` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getFiltering`](IDataProvider.md#getfiltering) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:588 + +*** + +### getGroupedRecordDataProvider() + +> **getGroupedRecordDataProvider**(`groupedRecordId`): `null` \| [`IDataProvider`](IDataProvider.md) + +Returns a child data provider for a specific parent record ID. + +#### Parameters + +• **groupedRecordId**: `string` + +#### Returns + +`null` \| [`IDataProvider`](IDataProvider.md) + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getGroupedRecordDataProvider`](IDataProvider.md#getgroupedrecorddataprovider) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:789 + +*** + +### getLinking() + +> **getLinking**(): [`ILinkEntityExposedExpression`](ILinkEntityExposedExpression.md)[] + +Retrieves the link entity expressions used to join related entities. + +#### Returns + +[`ILinkEntityExposedExpression`](ILinkEntityExposedExpression.md)[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getLinking`](IDataProvider.md#getlinking) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:598 + +*** + +### getMetadata() + +> **getMetadata**(): [`IMemoryProviderEntityMetadata`](IMemoryProviderEntityMetadata.md) + +Gets the associated entity metadata. + +#### Returns + +[`IMemoryProviderEntityMetadata`](IMemoryProviderEntityMetadata.md) + +#### Overrides + +`IDataProvider.getMetadata` + +#### Defined in + +src/utils/dataset/data-providers/memory-provider/MemoryDataProvider.ts:17 + +*** + +### getPaging() + +> **getPaging**(): `Omit`\<`Paging`, `"loadNextPage"` \| `"loadExactPage"` \| `"loadPreviousPage"`\> & `object` + +Returns paging information (like page number, total pages, etc.). + +#### Returns + +`Omit`\<`Paging`, `"loadNextPage"` \| `"loadExactPage"` \| `"loadPreviousPage"`\> & `object` + +The paging information. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getPaging`](IDataProvider.md#getpaging) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:521 + +*** + +### getRawData() + +> **getRawData**(): [`IRawRecord`](IRawRecord.md)[] + +Returns an array of raw data records. + +#### Returns + +[`IRawRecord`](IRawRecord.md)[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getRawData`](IDataProvider.md#getrawdata) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:603 + +*** + +### getRawDataMap() + +> **getRawDataMap**(): `object` + +Same as `getRawData`, but returns a map instead of array for fast lookups. + +#### Returns + +`object` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getRawDataMap`](IDataProvider.md#getrawdatamap) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:608 + +*** + +### getRecordIndex() + +> **getRecordIndex**(`recordId`): `number` + +Returns array index of a record by it's ID. This index corresponds to the record's position in an array that's return by the + +#### Parameters + +• **recordId**: `string` + +#### Returns + +`number` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getRecordIndex`](IDataProvider.md#getrecordindex) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:851 + +*** + +### getRecords() + +> **getRecords**(): [`IRecord`](IRecord.md)[] + +Returns the list of records. + +#### Returns + +[`IRecord`](IRecord.md)[] + +A list of records. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getRecords`](IDataProvider.md#getrecords) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:515 + +*** + +### getSorting() + +> **getSorting**(): `SortStatus`[] + +Retrieves the current sorting criteria. + +#### Returns + +`SortStatus`[] + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getSorting`](IDataProvider.md#getsorting) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:593 + +*** + +### getTitle() + +> **getTitle**(): `string` + +Returns the title provided by the data provider. + +#### Returns + +`string` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`getTitle`](IDataProvider.md#gettitle) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:563 + +*** + +### isError() + +> **isError**(): `boolean` + +Returns true if an error occurred during the last data retrieval process. + +#### Returns + +`boolean` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`isError`](IDataProvider.md#iserror) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:486 + +*** + +### refresh() + +> **refresh**(): `Promise`\<[`IRecord`](IRecord.md)[]\> + +Refreshes the records list and returns the refreshed records. + +#### Returns + +`Promise`\<[`IRecord`](IRecord.md)[]\> + +A promise resolving to a list of refreshed records. + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`refresh`](IDataProvider.md#refresh) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:509 + +*** + +### save() + +> **save**(`records`?): `Promise`\<[`IRecordSaveOperationResult`](IRecordSaveOperationResult.md)[]\> + +Saves the provided record to the database. + +#### Parameters + +• **records?**: [`IRecord`](IRecord.md)[] + +The records to save. If not provided, all dirty records will be saved. + +#### Returns + +`Promise`\<[`IRecordSaveOperationResult`](IRecordSaveOperationResult.md)[]\> + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`save`](IDataProvider.md#save) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:558 + +*** + +### setColumns() + +> **setColumns**(`columns`): `void` + +Sets the columns for the dataset. + +#### Parameters + +• **columns**: `any` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setColumns`](IDataProvider.md#setcolumns) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:552 + +*** + +### setFiltering() + +> **setFiltering**(`filtering`): `void` + +Sets the latest filtering information. + +#### Parameters + +• **filtering**: `null` \| `FilterExpression` + +The filtering criteria, or null if no filter is applied. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setFiltering`](IDataProvider.md#setfiltering) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:503 + +*** + +### setLinking() + +> **setLinking**(`expr`): `void` + +Sets the link entity expressions for joining related entities. + +#### Parameters + +• **expr**: [`ILinkEntityExposedExpression`](ILinkEntityExposedExpression.md)[] + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setLinking`](IDataProvider.md#setlinking) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:583 + +*** + +### setMetadata() + +> **setMetadata**(`metadata`): `void` + +Allows you to change the initial associated entity metadata. + +#### Parameters + +• **metadata**: [`IMemoryProviderEntityMetadata`](IMemoryProviderEntityMetadata.md) + +#### Returns + +`void` + +#### Overrides + +`IDataProvider.setMetadata` + +#### Defined in + +src/utils/dataset/data-providers/memory-provider/MemoryDataProvider.ts:16 + +*** + +### setSearchQuery() + +> **setSearchQuery**(`query`?): `void` + +Sets a new search query for filtering. + +#### Parameters + +• **query?**: `string` + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setSearchQuery`](IDataProvider.md#setsearchquery) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:613 + +*** + +### setSorting() + +> **setSorting**(`sorting`): `void` + +Sets the latest sorting information. + +#### Parameters + +• **sorting**: `SortStatus`[] + +The latest sorting details as an array of SortStatus objects. + +#### Returns + +`void` + +#### Inherited from + +[`IDataProvider`](IDataProvider.md).[`setSorting`](IDataProvider.md#setsorting) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:497 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IOperator.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IOperator.md new file mode 100644 index 000000000..c5b8868f1 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IOperator.md @@ -0,0 +1 @@ +Interface representing a filter operator. diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IPromiseCache.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IPromiseCache.md new file mode 100644 index 000000000..6420d3550 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IPromiseCache.md @@ -0,0 +1,9 @@ +Interface for a promise-based cache. + +## Extends + +- `ICache` + +## Type Parameters + +• **T** = `any` diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRawRecord.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRawRecord.md new file mode 100644 index 000000000..27f3584f9 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRawRecord.md @@ -0,0 +1 @@ +Represents raw record data as key-value pairs. diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecord.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecord.md index f6e26d1ff..477e3342a 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecord.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecord.md @@ -2,19 +2,45 @@ Base interface for dataset record result. If a property is optional, it does not ## Extends -- `Omit`\<`ComponentFramework.PropertyHelper.DataSetApi.EntityRecord`, `"getFormattedValue"`\> +- `Omit`\<`ComponentFramework.PropertyHelper.DataSetApi.EntityRecord`, `"getFormattedValue"`\>.`IEventEmitter`\<[`IRecordEvents`](IRecordEvents.md)\> ## Properties -### clearChanges() +### addEventListener() + +> **addEventListener**: \<`K`\>(`event`, `eventListener`) => `void` -> **clearChanges**: (`columnName`?) => `void` +Allows defining a listener method that will trigger when a specific event occurs. -Clears any changes in the record, resetting all record values to their initial state. +#### Type Parameters + +• **K** *extends* keyof [`IRecordEvents`](IRecordEvents.md) #### Parameters -• **columnName?**: `string` +• **event**: `K` + +• **eventListener**: [`IRecordEvents`](IRecordEvents.md)\[`K`\] + +#### Returns + +`void` + +#### Overrides + +`IEventEmitter.addEventListener` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1010 + +*** + +### clearChanges() + +> **clearChanges**: () => `void` + +Clears all unsaved changes in the record. #### Returns @@ -22,7 +48,7 @@ Clears any changes in the record, resetting all record values to their initial s #### Defined in -src/utils/dataset/data-providers/interfaces.ts:541 +src/utils/dataset/data-providers/interfaces.ts:1005 *** @@ -38,7 +64,7 @@ Destroys the record. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:551 +src/utils/dataset/data-providers/interfaces.ts:980 *** @@ -50,36 +76,35 @@ Allows you to set expressions for certain record properties. For example, you ca #### Defined in -src/utils/dataset/data-providers/interfaces.ts:520 +src/utils/dataset/data-providers/interfaces.ts:960 *** -### getChanges() +### getColumnInfo() -> **getChanges**: (`columnName`?) => [`IFieldChange`](IFieldChange.md)[] +> **getColumnInfo**: (`columnName`) => [`IColumnInfo`](IColumnInfo.md) -Retrieves the changes made to the record. Change occurs when `setValue` API on record is used to change its initial value. -Only dirty changes are kept, meaning if a later call of `setValue` resets the value to its original state, the change reference is removed. +Provides column information. #### Parameters -• **columnName?**: `string` +• **columnName**: `string` #### Returns -[`IFieldChange`](IFieldChange.md)[] +[`IColumnInfo`](IColumnInfo.md) #### Defined in -src/utils/dataset/data-providers/interfaces.ts:536 +src/utils/dataset/data-providers/interfaces.ts:941 *** -### getColumnInfo() +### getCurrencySymbol() -> **getColumnInfo**: (`columnName`) => [`IColumnInfo`](IColumnInfo.md) +> **getCurrencySymbol**: (`columnName`) => `string` -Provides column information. +Gets currency symbol for a given column. #### Parameters @@ -87,19 +112,35 @@ Provides column information. #### Returns -[`IColumnInfo`](IColumnInfo.md) +`string` #### Defined in -src/utils/dataset/data-providers/interfaces.ts:505 +src/utils/dataset/data-providers/interfaces.ts:965 *** -### getCurrencySymbol() +### getDataProvider() -> **getCurrencySymbol**: (`columnName`) => `string` +> **getDataProvider**: () => [`IDataProvider`](IDataProvider.md) -Gets currency symbol for a given column. +Returns the data provider associated with this record. + +#### Returns + +[`IDataProvider`](IDataProvider.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:985 + +*** + +### getField() + +> **getField**: (`columnName`) => [`IField`](IField.md) + +Gets Field for a given column. #### Parameters @@ -107,25 +148,35 @@ Gets currency symbol for a given column. #### Returns -`string` +[`IField`](IField.md) #### Defined in -src/utils/dataset/data-providers/interfaces.ts:525 +src/utils/dataset/data-providers/interfaces.ts:931 *** -### getHeight() +### getFields() -> **getHeight**: (`columnWidths`, `defaultRowHeight`) => `number` +> **getFields**: () => [`IField`](IField.md)[] -Returns the height for given record +Returns field instances for all columns in the record. -#### Parameters +#### Returns + +[`IField`](IField.md)[] + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1000 + +*** + +### getIndex() -• **columnWidths** +> **getIndex**: () => `number` -• **defaultRowHeight**: `number` +Return the records index in the dataset. #### Returns @@ -133,23 +184,39 @@ Returns the height for given record #### Defined in -src/utils/dataset/data-providers/interfaces.ts:546 +src/utils/dataset/data-providers/interfaces.ts:956 *** ### getRawData() -> **getRawData**: () => `null` \| `object` +> **getRawData**: () => [`IRawRecord`](IRawRecord.md) -Retrieves the raw record data. +Retrieves the raw record data. This object corresponds to the record's initial state, before any changes are made. #### Returns -`null` \| `object` +[`IRawRecord`](IRawRecord.md) #### Defined in -src/utils/dataset/data-providers/interfaces.ts:530 +src/utils/dataset/data-providers/interfaces.ts:970 + +*** + +### getSummarizationType() + +> **getSummarizationType**: () => [`DataProviderSummarizationType`](../type-aliases/DataProviderSummarizationType.md) + +Returns the summarization type of the record. + +#### Returns + +[`DataProviderSummarizationType`](../type-aliases/DataProviderSummarizationType.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:995 *** @@ -173,7 +240,7 @@ Get the raw value of the record's column. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:495 +src/utils/dataset/data-providers/interfaces.ts:926 *** @@ -193,23 +260,73 @@ Checks if the record has unsaved changes. Change can occur by using the `setValu #### Defined in -src/utils/dataset/data-providers/interfaces.ts:515 +src/utils/dataset/data-providers/interfaces.ts:951 + +*** + +### isSaving() + +> **isSaving**: () => `boolean` + +Whether the record is currently being saved. + +#### Returns + +`boolean` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:990 + +*** + +### removeEventListener() + +> **removeEventListener**: \<`K`\>(`event`, `eventListener`) => `void` + +Removes a previously defined event listener. + +#### Type Parameters + +• **K** *extends* keyof [`IRecordEvents`](IRecordEvents.md) + +#### Parameters + +• **event**: `K` + +The event type to remove the listener from. + +• **eventListener**: [`IRecordEvents`](IRecordEvents.md)\[`K`\] + +The listener function to remove. + +#### Returns + +`void` + +#### Overrides + +`IEventEmitter.removeEventListener` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1017 *** ### save() -> **save**: () => `Promise`\<`void`\> +> **save**: () => `Promise`\<[`IRecordSaveOperationResult`](IRecordSaveOperationResult.md)\> Saves the record. #### Returns -`Promise`\<`void`\> +`Promise`\<[`IRecordSaveOperationResult`](IRecordSaveOperationResult.md)\> #### Defined in -src/utils/dataset/data-providers/interfaces.ts:500 +src/utils/dataset/data-providers/interfaces.ts:936 *** @@ -231,7 +348,23 @@ Sets the value of a given column. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:490 +src/utils/dataset/data-providers/interfaces.ts:921 + +*** + +### toRawData() + +> **toRawData**: () => [`IRawRecord`](IRawRecord.md) + +Gets the current record state as a raw data object, including any unsaved changes. + +#### Returns + +[`IRawRecord`](IRawRecord.md) + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:975 ## Methods @@ -245,15 +378,13 @@ Get the current formatted value of this record column. • **columnName**: `string` -Column name of the record - #### Returns `null` \| `string` #### Defined in -src/utils/dataset/data-providers/interfaces.ts:485 +src/utils/dataset/data-providers/interfaces.ts:916 *** @@ -309,4 +440,4 @@ Whether the record is valid. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:510 +src/utils/dataset/data-providers/interfaces.ts:946 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordChange.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordChange.md deleted file mode 100644 index 85f26f867..000000000 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordChange.md +++ /dev/null @@ -1,25 +0,0 @@ -Interface for changes in record column values. - -## Properties - -### columns - -> **columns**: [`IFieldChange`](IFieldChange.md)[] - -Array of columns with changes. - -#### Defined in - -src/utils/dataset/interfaces.ts:192 - -*** - -### record - -> **record**: [`IRecord`](IRecord.md) - -Pointer to the record instance these changes relate to. - -#### Defined in - -src/utils/dataset/interfaces.ts:188 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordChanges.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordChanges.md deleted file mode 100644 index 0d7c7b348..000000000 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordChanges.md +++ /dev/null @@ -1,5 +0,0 @@ -Map of all records with pending column value changes. - -## Indexable - - \[`recordId`: `string`\]: [`IRecordChange`](IRecordChange.md) diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordEvents.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordEvents.md new file mode 100644 index 000000000..1f53803af --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordEvents.md @@ -0,0 +1,79 @@ +Event handlers for record-level events. + +## Properties + +### onAfterSaved() + +> **onAfterSaved**: (`result`) => `void` + +Triggers when the save operation is completed, either successfully or with an error. + +#### Parameters + +• **result**: [`IRecordSaveOperationResult`](IRecordSaveOperationResult.md) + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:173 + +*** + +### onBeforeSaved() + +> **onBeforeSaved**: () => `void` + +Triggers before the record starts saving. + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:168 + +*** + +### onFieldClicked() + +> **onFieldClicked**: (`columnName`) => `void` + +Triggers when a field is clicked. + +#### Parameters + +• **columnName**: `string` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:164 + +*** + +### onFieldValueChanged() + +> **onFieldValueChanged**: (`columnName`, `newValue`) => `void` + +Triggers when a field value is changed. + +#### Parameters + +• **columnName**: `string` + +• **newValue**: `any` + +#### Returns + +`void` + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:160 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordExpressions.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordExpressions.md index a5e15a955..cf9f40a47 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordExpressions.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordExpressions.md @@ -20,7 +20,7 @@ Allows you to specify a currency symbol for a given column. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:594 +src/utils/dataset/data-providers/interfaces.ts:1061 *** @@ -42,7 +42,7 @@ Allows you to specify whether a column is read-only (disabled) or editable (not #### Defined in -src/utils/dataset/data-providers/interfaces.ts:584 +src/utils/dataset/data-providers/interfaces.ts:1051 *** @@ -64,7 +64,7 @@ Sets an expression as the column's formatted value. The expression is evaluated #### Defined in -src/utils/dataset/data-providers/interfaces.ts:579 +src/utils/dataset/data-providers/interfaces.ts:1046 *** @@ -86,7 +86,7 @@ Allows you to specify the requirement level for a given column. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:589 +src/utils/dataset/data-providers/interfaces.ts:1056 *** @@ -108,7 +108,7 @@ Allows you to create a custom validator for a column. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:568 +src/utils/dataset/data-providers/interfaces.ts:1034 *** @@ -118,6 +118,7 @@ src/utils/dataset/data-providers/interfaces.ts:568 Sets an expression as the column's value. The expression is evaluated each time `getValue` is called, with the resulting value used as the column's value. Setting a value expression does trigger unsaved changes as it is treated as if it were the column's original value. +If you return `undefined` from the expression, provider will ignore it and gets the value from record's raw data as normal #### Parameters @@ -131,7 +132,7 @@ Setting a value expression does trigger unsaved changes as it is treated as if i #### Defined in -src/utils/dataset/data-providers/interfaces.ts:574 +src/utils/dataset/data-providers/interfaces.ts:1041 *** @@ -143,4 +144,4 @@ Expressions to manipulate UI. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:563 +src/utils/dataset/data-providers/interfaces.ts:1029 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordSaveOperationResult.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordSaveOperationResult.md new file mode 100644 index 000000000..f58dca9ce --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordSaveOperationResult.md @@ -0,0 +1,25 @@ +Save operation result for given record. + +## Properties + +### errors? + +> `optional` **errors**: `object`[] + +Optional error message if the save operation failed. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1127 + +*** + +### success + +> **success**: `boolean` + +Returns true if the save operation was successful. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:1123 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordUiExpression.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordUiExpression.md index 74c791733..57e2067eb 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordUiExpression.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRecordUiExpression.md @@ -20,7 +20,7 @@ Allows you to override parameters that are passed to a control. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:638 +src/utils/dataset/data-providers/interfaces.ts:1091 *** @@ -42,7 +42,7 @@ Allows you to create a custom renderer for a record column. ONLY USE IF YOU ARE #### Defined in -src/utils/dataset/data-providers/interfaces.ts:643 +src/utils/dataset/data-providers/interfaces.ts:1096 *** @@ -64,7 +64,7 @@ Allows you to set a custom controls for a column. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:628 +src/utils/dataset/data-providers/interfaces.ts:1081 *** @@ -86,37 +86,7 @@ Allows you to set custom formatting for column. If you do not specify a text col #### Defined in -src/utils/dataset/data-providers/interfaces.ts:633 - -*** - -### setHeightExpression() - -> **setHeightExpression**: (`columnName`, `heightExpression`) => `void` - -Sets the height for individual cells, which determines the height of the entire row. - -- If you specify a height for only one cell, the entire row will adjust to that cell's height. -- If multiple cells in a row have specified heights, the row height will match the tallest cell. - -The provided expression accepts two parameters: - -- `columnWidth` - The current width of the column where the cell is being rendered. -- `rowHeight` - The default row height, used if no cells in the row specify a custom height. - -#### Parameters - -• **columnName**: `string` - -• **heightExpression** - -#### Returns - -`void` - -#### Defined in - -src/utils/dataset/data-providers/interfaces.ts:623 +src/utils/dataset/data-providers/interfaces.ts:1086 *** @@ -138,7 +108,7 @@ Allows you to specify whether the given column is being loaded or not. Useful if #### Defined in -src/utils/dataset/data-providers/interfaces.ts:609 +src/utils/dataset/data-providers/interfaces.ts:1076 *** @@ -160,4 +130,4 @@ Allows you to add notifications to a column. Notifications appear as a set of bu #### Defined in -src/utils/dataset/data-providers/interfaces.ts:604 +src/utils/dataset/data-providers/interfaces.ts:1071 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRetrieveRecordCommandOptions.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRetrieveRecordCommandOptions.md new file mode 100644 index 000000000..166d06728 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRetrieveRecordCommandOptions.md @@ -0,0 +1,25 @@ +Options for retrieving records. + +## Properties + +### isGrouped? + +> `optional` **isGrouped**: `boolean` + +Whether we are fetching results for grouped record. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:121 + +*** + +### isInline? + +> `optional` **isInline**: `boolean` + +Whether we are fetching records for inline ribbon. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:117 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRetrievedData.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRetrievedData.md index 5d349a9b4..889a05e16 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRetrievedData.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/IRetrievedData.md @@ -1 +1,37 @@ Retrieved raw data from the data provider. + +## Properties + +### data + +> **data**: `object`[] + +Raw data retrieved from data source. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:896 + +*** + +### hasNextPage + +> **hasNextPage**: `boolean` + +Whether there is a next page available for the current query. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:906 + +*** + +### totalRecordCount + +> **totalRecordCount**: `number` + +Total number of records for the given query without pagination. + +#### Defined in + +src/utils/dataset/data-providers/interfaces.ts:901 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ISecurityValues.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ISecurityValues.md index 698be73c2..bd6b7e38f 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ISecurityValues.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/interfaces/ISecurityValues.md @@ -10,7 +10,7 @@ Whether this value is meant to be editable in the current context. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:202 +src/utils/dataset/data-providers/interfaces.ts:345 *** @@ -22,7 +22,7 @@ Whether this value is meant to be readable in the current context. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:208 +src/utils/dataset/data-providers/interfaces.ts:351 *** @@ -34,7 +34,7 @@ Required level for field in the current context. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:220 +src/utils/dataset/data-providers/interfaces.ts:363 *** @@ -46,4 +46,4 @@ Whether this field has security rules applied to it. #### Defined in -src/utils/dataset/data-providers/interfaces.ts:214 +src/utils/dataset/data-providers/interfaces.ts:357 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/AggregationFunction.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/AggregationFunction.md new file mode 100644 index 000000000..d62b12d20 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/AggregationFunction.md @@ -0,0 +1,7 @@ +> **AggregationFunction**: `"count"` \| `"sum"` \| `"avg"` \| `"min"` \| `"max"` \| `"countcolumn"` + +Available aggregation functions for data summarization. + +## Defined in + +src/utils/dataset/data-providers/interfaces.ts:369 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/DataProviderSummarizationType.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/DataProviderSummarizationType.md new file mode 100644 index 000000000..2c8c8e723 --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/DataProviderSummarizationType.md @@ -0,0 +1,10 @@ +> **DataProviderSummarizationType**: `"none"` \| `"aggregation"` \| `"grouping"` + +What type of summary operations this dataset has. +- `none` - no summarization is applied +- `aggregation` - only aggregation is applied, such as sum, average, etc (no grouping). +- `grouping` - grouping is applied, aggregation can be applied as well + +## Defined in + +src/utils/dataset/data-providers/interfaces.ts:79 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/DataType.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/DataType.md new file mode 100644 index 000000000..6349dee7f --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/DataType.md @@ -0,0 +1,7 @@ +> **DataType**: `"SingleLine.Text"` \| `"SingleLine.TextArea"` \| `"SingleLine.Email"` \| `"SingleLine.Phone"` \| `"SingleLine.URL"` \| `"Multiple"` \| `"Whole.None"` \| `"Decimal"` \| `"DateAndTime.DateAndTime"` \| `"DateAndTime.DateOnly"` \| `"Currency"` \| `"OptionSet"` \| `"MultiSelectPicklist"` \| `"TwoOptions"` \| `"Lookup.Simple"` \| `"Lookup.Owner"` \| `"Lookup.Customer"` \| `"Lookup.Regarding"` \| `"Whole.Language"` \| `"Whole.Duration"` \| `"Whole.TimeZone"` \| `"File"` \| `"Image"` \| `"Enum"` \| `"Object"` + +Dataverse data types used in the SDK. + +## Defined in + +src/utils/metadata/Datatypes.ts:4 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/DeepPartial.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/DeepPartial.md index 1da8aa163..d0003306c 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/DeepPartial.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/DeepPartial.md @@ -8,4 +8,4 @@ Makes all properties optional. ## Defined in -src/utils/dataset/data-providers/interfaces.ts:726 +src/utils/dataset/data-providers/interfaces.ts:1173 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/GetDataEvent.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/GetDataEvent.md index 86ec34681..8f00fe324 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/GetDataEvent.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/GetDataEvent.md @@ -4,4 +4,4 @@ Type of event used for data retrieval. ## Defined in -src/utils/dataset/data-providers/interfaces.ts:466 +src/utils/dataset/data-providers/interfaces.ts:885 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/IAttributeMetadata.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/IAttributeMetadata.md index b2f05f36f..74ac5e39a 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/IAttributeMetadata.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/IAttributeMetadata.md @@ -4,4 +4,4 @@ Type to hold the Attribute metadata as part of the EntityMetadata ## Defined in -src/utils/dataset/interfaces.ts:98 +src/utils/dataset/data-providers/interfaces.ts:1433 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/IInterceptor.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/IInterceptor.md new file mode 100644 index 000000000..648eda21e --- /dev/null +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/API/type-aliases/IInterceptor.md @@ -0,0 +1,23 @@ +> **IInterceptor**\<`T`, `K`\>: (`parameters`, `defaultAction`) => `ReturnType`\<`T`\[`K`\]\> + +Can be used to simplify injecting of custom logic into existing methods. + +## Type Parameters + +• **T** *extends* `{ [K in keyof T]: Function }` + +• **K** *extends* keyof `T` + +## Parameters + +• **parameters**: `Parameters`\<`T`\[`K`\]\>\[`0`\] + +• **defaultAction** + +## Returns + +`ReturnType`\<`T`\[`K`\]\> + +## Defined in + +src/helpers/events/Interceptors.ts:5 diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/general.md b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/general.md index 876eab338..7d6a442c2 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/general.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/ClientExtensibility/general.md @@ -3,57 +3,37 @@ Author: Dominik Brych --- # Client Extensibility -You can extend the functionalities of the control by accessing it's API through a client script. To access the API, you need to register an [`addOnOutputChange`](https://learn.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/reference/controls/addonoutputchange) callback on the control. - -When the callback is triggered, you can retrieve the dataset instance. From there, you can use its API to manipulate the control and register event handlers. - +The control's functionality can be extended through client-side API access. This API allows interaction with the dataset instance, enabling event handler registration, interceptors setup, and record expression definitions for dynamic cell behavior. In order to utilize the client API, you need to configure the `ClientApiWebresourceName` and `ClientApiFunctionName` bindings to point to a script and function that will be invoked during control initialization (this is usually the same script you would use for the form [OnLoad](https://learn.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/reference/events/form-onload) event). The specified function receives parameters containing the dataset instance and unique control ID, allowing you to manipulate the control and register event handlers. ```javascript -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; - - dataset.addEventListener('onRecordLoaded', (record) => { - //register record expressions - }) - - dataset.addEventListener('onDatasetItemOpened', (entityReference) => { - openAlertDialog(entityReference); - }); - dataset.addEventListener('onRecordsSelected', (ids) => { - showSelectedRecordsNotifications(ids, dataset) - }); - }) +function onDatasetControlInitialized(parameters) { + const { controlId, dataset } = parameters; + + dataset.addEventListener('onRecordLoaded', (record) => { + //register record expressions + }) + dataset.addEventListener('onDatasetItemOpened', (entityReference) => { + openAlertDialog(entityReference); + }); + dataset.addEventListener('onRecordsSelected', (ids) => { + showSelectedRecordsNotifications(ids, dataset) + }); } ``` -> **_NOTE:_** If you are using Typescript, you should always use Dataset typings (`IDataset`, `IRecord`...) from `@talxis/client-libraries`. **DO NOT USE** any properties/methods that are not defined in typings. If you do, your scripts might break with any PCF update! +> **_NOTE:_** For TypeScript implementations, use Dataset typings (`IDataset`, `IRecord`) from `@talxis/client-libraries`. Avoid using properties/methods not defined in typings to prevent compatibility issues with PCF updates. -## Aggregations -If the control has active aggregations, it automatically creates a virtual record that contains the aggregated values and pinnes it to the bottom of the dataset. This record is not part of the regular dataset, so you cannot acces it through the `onRecordLoaded` event. In order to access this record instance, you need to retrieve the dataset that was used to create this record. This can be done by registering the `onChildDatasetInitialized` event on the main dataset. Once you have the aggregated dataset instance, you can register events and expressions the same as you would for the main dataset. - -```javascript -dataset.addEventListener('onChildDatasetInitialized', (childDataset) => { - childDataset.addEventListener('onRecordLoaded', (record) => { - //register record expressions for the aggregated record - }) -}) -``` -> **_NOTE:_** Due to issues with compatibility, validations are completely disabled for the aggregated record. All other client extensibility features are available, including custom controls, notifications, and conditional formatting. ## Interceptors -Interceptors are a way to intercept certain flows in Dataset and inject your own data. +Interceptors enable modification of specific control calls without altering core logic. Use the `setInterceptor` method on the dataset instance with two parameters: interceptor name and callback function. The callback receives original parameters and a proceed callback, allowing parameter modification or complete behavior override. Return types must match the original function signature. ### Columns -You can intercept every column call and tweak the resulting columns as needed. This ensures you keep control over the columns, even when some other code (for example the "Edit Columns" feature) uses `setColumns` and overrides your column definitions. With columns interceptor, you can make sure your customizations stay in place since it triggers whenever the Dataset requests columns (and hence will always be the last writer). +Intercept column calls to modify resulting columns while maintaining control over column definitions. This interceptor ensures customizations persist even when other features (e.g., "Edit Columns") use `setColumns`. The interceptor triggers on every dataset column request, providing final control over column configuration. ```javascript -this._dataset.setInterceptor('columns', (columns: IColumn[]) => { +dataset.setInterceptor('columns', (columns, defaultAction) => { const columnsMap = new Map(columns.map(column => [column.name, column])); const heightColumn = columnsMap.get('height'); if (!heightColumn) { @@ -67,20 +47,105 @@ this._dataset.setInterceptor('columns', (columns: IColumn[]) => { }) ``` -Code example above shows how we can dynamically set the display name of height column to include the information about units. +The example demonstrates dynamic display name modification for the height column to include unit information. -> **_NOTE:_** **NEVER** mutate the columns array directly. Always create a new one. Using `Map` is the recommended approach +> **_NOTE:_** Never mutate the columns array directly. Always create a new array. Using `Map` is the recommended approach. ![Columns interceptor](/.attachments/applications/Controls/VirtualDataset/column_interceptor.png) +### onFirstDataLoad + +Intercept the dataset's initial data load to execute custom logic before rendering. Useful for data fetching or calculations prior to user presentation. This interceptor requires a promise return value, maintaining the control's loading state until promise resolution. + +```javascript +dataset.setInterceptor('onFirstDataLoad', async (parameters, defaultAction) => { + //perform some custom logic here + const dataSource = await fetchDataSource(); + //make the dataset use the fetched data source + dataset.setDataSource(data); +}); +``` + +### onOpenDatasetItem + +Intercept dataset item opening to execute custom logic before item access. Enables validation, logging, or complete behavior override by omitting the `defaultAction` callback. + +```javascript +dataset.setInterceptor('onOpenDatasetItem', (entityReference, defaultAction) => { + //perform some custom logic here + logOpening(entityReference); + //proceed with the original opening behavior + return defaultAction(entityReference); +}); +``` + +### onRecordSave + +Intercept record saving to execute validation or modification logic before persistence. Enables complete save behavior override by omitting the `defaultAction` callback. + +```javascript +dataset.setInterceptor('onRecordSave', (record, defaultAction) => { + //perform some custom logic here + if (!validateRecord(record)) { + return { + recordId: record.getRecordId(), + success: false, + errors: [{ message: 'Record is not valid!' }] + } + } + //proceed with the original saving behavior + return defaultAction(record); +}); +``` + +### onRetrieveRecordCommand + +Intercept ribbon button retrieval to add custom buttons or modify existing ones. + +```javascript +dataset.setInterceptor("onRetrieveRecordCommand", async (options, defaultAction) => { + const commands = await defaultAction(options); + const topButton = { + canExecute: true, + commandButtonId: "Custom.Button", + shouldBeVisible: true, + tooltip: "Custom Button", + commandId: "Custom.Command", + label: "Custom Button", + //fluent ui icon or svg web resource are supported + icon: "Heart", + children: [], + controlType: "", + execute: () => alert("Custom Button clicked!"), + }; + const inlineButton = { + canExecute: true, + commandButtonId: "CustomInline.Button", + shouldBeVisible: true, + tooltip: "Custom Button", + commandId: "CustomInline.Command", + label: "Custom Inline Button", + //fluent ui icon or svg web resource are supported + icon: "Heart", + children: [], + controlType: "", + execute: () => alert("Custom Inline Button clicked!"), + }; + return [...(!options.isInline ? [topButton] : [inlineButton]), ...commands]; + }, +); +``` + +> **_NOTE:_** When adding inline buttons (`options.isInline = true`), include the button ID in the `InlineRibbonButtonIds` control parameter for proper display. + ## Record Expressions -Record expressions allow you to dynamically manipulate specific cells within a record (row) by defining a callback function for certain events. Each expression is tied to a specific record cell. The API currently supports setting expressions for the following types of customizations: +Record expressions enable dynamic cell manipulation within records through event-driven callback functions. Each expression targets a specific record cell. The API supports the following expression types: ### Cell Values -If specified, the control will use it's returned value as cell's value. You can think of it as setting a formula on a cell in Excel. Unlike `setValue`, speficying this callback does not trigger any changes on the dataset, even if the value is different between renders. This means the user will not see any pending changes, unless they directly manipulate the cell value. If they do, that value will take precedence over the expression. If the user removes the change, the expression will be used again. +Defines dynamic cell values similar to Excel formulas. Unlike `setValue`, this callback doesn't trigger dataset changes or display pending modifications. User-entered values take precedence over expressions until removed, after which expressions resume control. ```javascript dataset.addEventListener('onRecordLoaded', (record) => { @@ -94,11 +159,11 @@ dataset.addEventListener('onRecordLoaded', (record) => { }) ``` -> **_NOTE:_** When calculating the value, **DO NOT** call `getValue` on the same record and cell. If you do, you will end up in an infinite loop. +> **_NOTE:_** Avoid calling `getValue` on the same record and cell during value calculation to prevent infinite loops. ### Formatted Cell Values -If specified, the control will use it's returned value as cell's formatted value. For example, you can append some units to the value for better clarity. +Customizes cell display formatting while preserving underlying values. Enables unit appending or other formatting enhancements for improved clarity. ```javascript record.expressions.setFormattedValueExpression("height", (defaultFormattedValue) => { @@ -122,7 +187,7 @@ record.expressions.setFormattedValueExpression("weight", (defaultFormattedValue) ### Cell Validation -You can define custom validation logic to supplement the built-in validation. When triggered, your logic will run alongside the native validation. If your custom validation fails, the user will not be able to save their changes. You can (should) also provide a custom error message that will be displayed in the UI. +Implements custom validation logic alongside native validation. Failed custom validation prevents save operations and displays custom error messages in the interface. ```javascript dataset.addEventListener('onRecordLoaded', (record) => { @@ -139,7 +204,7 @@ dataset.addEventListener('onRecordLoaded', (record) => { ### Cell Disabling -When a control's `EnableEditing` attribute is set to true and a column's `IsValidForUpdate` property is also true, all cells within that column are editable by default. However, there may be cases where you want to disable editing for specific cells. This can be achieved by defining a disabled expression for those cells. +Controls cell-level editing when `EnableEditing` and `IsValidForUpdate` are enabled. Disabled expressions override default editability for specific cells based on custom logic. ```javascript record.expressions?.setDisabledExpression('talxis_name', () => { @@ -154,7 +219,7 @@ record.expressions?.setDisabledExpression('talxis_name', () => { ### Cell Control Parameters -You can adjust the cell control’s parameters to fit your specific needs. Native cell renderer has two optional parameters: `PrefixIcon` and `SuffixIcon` which accept stringified [`IIconProps`](https://developer.microsoft.com/en-us/fluentui#/controls/web/icon) object. You can use them to add custom icons to cell values. Each datatype can have slightly different parameters which you can edit. For example, on Lookups, you can change the method for savedquery retrieval to change the Lookup results. +Customize cell control parameters for specific requirements. Native cell renderers support optional `PrefixIcon` and `SuffixIcon` parameters accepting stringified [`IIconProps`](https://developer.microsoft.com/en-us/fluentui#/controls/web/icon) objects for icon customization. Each data type offers specific parameters; for example, Lookup controls support savedquery retrieval method modification. ```javascript record.expressions.ui.setControlParametersExpression("decimal", (defaultParameters) => { @@ -186,53 +251,9 @@ record.expressions.ui.setControlParametersExpression("number", (defaultParameter ![Cell Control Parameters](/.attachments/applications/Controls/VirtualDataset/cell_control_parameters.png) -### Dynamic Row Height - -You can override the height of a cell in a record by specifying this expression. Your callback function will also receive the current width of the cell and the default row height used by the control. If you set a custom height for a cell, the tallest cell in the row will determine the row's overall height. The remaining cells will automatically adjust to fill the available space. - -```javascript -dataset.addEventListener('onRecordLoaded', (record) => { - record.expressions?.ui.setHeightExpression('talxis_multiline__virtual', (columnWidth, rowHeight) => { - const value = record.getValue('talxis_multiline__virtual') ?? ""; - const length = value.length; - let minHeight = rowHeight; - let maxHeight = 200; - if (length === 0) { - return 42; - } - const avgCharWidth = 14 * 0.5; - - // Calculate the max number of characters that fit in one line - const charsPerLine = Math.floor(columnWidth / avgCharWidth); - - // Calculate the number of lines needed - const numLines = Math.ceil(value.length / charsPerLine); - - // Calculate the height based on the number of lines - const lineHeight = 14 * 1.5; - let totalHeight = numLines * lineHeight; - if (totalHeight < minHeight) { - totalHeight = minHeight; - } - if (totalHeight > maxHeight) { - totalHeight = maxHeight - } - - return Math.ceil(totalHeight); - }) -}) -``` - -> **_NOTE:_** Code for height calculation is AI generated and might need some revision to work correctly in all cases. - - -The above code dynamically calculates the required row height to accommodate the content of a cell with multiline input. This ensures that the text is fully visible without truncation, as the row height automatically adjusts to fit the length of the text. - -![Dynamic Row Heights](/.attachments/applications/Controls/VirtualDataset/dynamic_height.gif) - ### Cell Loading -You can use this expression to tell the control if specific cell should appear as being loaded. This is usefull if you need to do some async operation before the cell value can be calculated. +Controls cell loading state display during asynchronous operations or value calculations. ```javascript dataset.addEventListener('onRecordLoaded', (record) => { @@ -247,9 +268,7 @@ dataset.addEventListener('onRecordLoaded', (record) => { ![Loading](/.attachments/applications/Controls/VirtualDataset/loading.gif) ### Cell Notifications -You can enhance specific cells by adding buttons, each capable of executing multiple actions. -If a button is linked to a single action, clicking it will immediately trigger the action. When multiple actions are assigned, clicking the button will display a pop-up menu, allowing the user to select the desired action. -Additionally, notifications can be assigned to an empty virtual column, effectively creating an inline ribbon. +Enhance cells with interactive buttons supporting single or multiple actions. Single-action buttons execute immediately, while multi-action buttons display selection menus. Notifications can be assigned to virtual columns to create inline ribbons. ```javascript record.expressions?.ui.setNotificationsExpression('talxis_name', () => { @@ -301,7 +320,7 @@ record.expressions?.ui.setNotificationsExpression('talxis_name', () => { ![Dynamic Row Heights](/.attachments/applications/Controls/VirtualDataset/ribbon.gif) -Notifications can be useful tool for extending the control functionality. For instance, they can be utilized to create an interactive counter, as demonstrated in the following example: +Notifications extend control functionality through interactive elements such as counters, as demonstrated below: ```javascript record.expressions?.ui.setNotificationsExpression('talxis_wholenone', () => { @@ -343,7 +362,7 @@ record.expressions?.ui.setNotificationsExpression('talxis_wholenone', () => { ### Conditional Formatting -Cells can be styled with different formatting based on specific conditions, allowing you to customize their appearance with ease. You have the flexibility to define the primary color, background color, or text color for a cell. You can choose to set all of these properties explicitly or specify just one, and the remaining colors will be calculated automatically for a cohesive look. Additionally, you can optionally include a `themeOverride` parameter for more detailed and precise theme customization. Whenever possible, the new colors should be derived from the `defaultCellTheme` parameter to ensure consistency in the design. +Apply condition-based cell styling with customizable primary, background, or text colors. Colors can be set individually with automatic calculation of remaining properties for consistency. The optional `themeOverride` parameter enables detailed theme customization. Derive colors from `defaultCellTheme` to maintain design consistency. ```javascript //calculating the formatting for bmi field based the bmi value @@ -388,7 +407,7 @@ record.expressions.ui.setCustomFormattingExpression('bmi', (defaultTheme) => { ### Custom Controls -You can assign a custom PCF to a specific cell. To read more about this feature, refer to the [cell customizer](../CellCustomizers/general.md) section of this guide. +Assign custom PCF controls to specific cells. For detailed information, see the [cell customizer](../CellCustomizers/general.md) section. ```typescript record.expressions.ui.setCustomControlsExpression( "talxis_singlelinetext", (defaultControls) => { @@ -404,6 +423,6 @@ record.expressions.ui.setCustomControlsExpression( "talxis_singlelinetext", (def } ); ``` -*Code snippet above returns the `talxis_TALXIS.PCF.ColorPicker` if the cell value startsWith with "#". Otherwise it will return the default controls.* +*Returns `talxis_TALXIS.PCF.ColorPicker` for cell values starting with "#", otherwise returns default controls.* ![Conditional control](/.attachments/applications/Controls/VirtualDataset/conditional_control.gif) diff --git a/src/en/developer-guide/applications/controls/VirtualDataset/general.md b/src/en/developer-guide/applications/controls/VirtualDataset/general.md index d59299a74..17b4ee991 100644 --- a/src/en/developer-guide/applications/controls/VirtualDataset/general.md +++ b/src/en/developer-guide/applications/controls/VirtualDataset/general.md @@ -9,32 +9,36 @@ Author: Dominik Brych ## Description -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: +Virtual Dataset enables binding of a Grid control to a field using custom data sources. The control supports two data providers: Memory and FetchXml. The Memory Provider handles in-memory data collections, while the FetchXml Provider processes data retrieved through FetchXml queries. Both providers support the following dataset features: - **Sorting** - **Filtering** - **Aggregations** +- **Grouping** - **Paging** - **Validation** - **Editing (including linked entities)** +- **Row Selection** - **Quick Find** -- **Cell Customizers** ![Attachments Grid Displayed On Form](/.attachments/applications/Controls/VirtualDataset/virtualdataset.png) -NOTE: Due to a bug in Power Apps maker, this PCF can only be bind through legacy form editor. - ## 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. +The control supports two data providers: **FetchXml** and **Memory**. ### FetchXml Data Provider -FetchXml provider expects a valid FetchXml string as Data Source. +Requires a valid FetchXml string as the data source. ### Memory Data Provider -Memory Data Provider expects a stringified JSON key-value 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. +Requires a stringified JSON array containing key-value pairs where keys represent column names and values represent column data. The data structure follows the OData response format: +- OptionSets use numeric values +- Lookups use GUIDs +- Other data types follow standard OData conventions + +To determine the correct value format for a specific data type, reference the structure returned by OData queries for entities containing that data type. ```json { @@ -108,21 +112,21 @@ Memory Data Provider expects a stringified JSON key-value array as input. The ar #### Lookup Column -In order to use Lookups in Memory Provider, your Data Source needs to include these three properties: +Lookup columns in Memory Provider require three properties in the data source: -* **_{lookupColumnName}_value**: GUID assigned to the lookup record. It serves as a unique identifier within the Dataset, allowing it to distinguish a specific lookup record. When utilizing the [Dataset Client API](), this GUID integrates into scenarios where a typical Lookup GUID would appear. For instance, when subscribing to the `onDatasetItemOpened` event, if a user clicks on this lookup, the `entityReference` will include this GUID value. +* **_{lookupColumnName}_value**: GUID identifying the lookup record. This serves as the unique identifier within the dataset and integrates with the Dataset Client API. When users interact with lookup records (e.g., `onDatasetItemOpened` event), this GUID appears in the `entityReference`. -* **\_{lookupColumnName}_@Microsoft.Dynamics.CRM.lookuplogicalname**: Logical name that corresponds to the record table in Dataverse. Within Memory Provider, the logical name can either align with an existing table in Dataverse (entity bound) or be an arbitrary string (virtual). When the Lookup field is entity bound, it gains the ability to search through records, enabling users to edit the Lookup value (assign it a different GUID). You should also add the logical name to the `Targets` metadata prop in the column definition in order for the Lookup to be fully entity bound. If a random string is used, the editing functionality for the Lookup will be disabled. +* **_{lookupColumnName}_@Microsoft.Dynamics.CRM.lookuplogicalname**: Logical name corresponding to the record table in Dataverse. This can reference an existing Dataverse table (entity bound) or use an arbitrary string (virtual). Entity-bound lookups enable record searching and value editing. Add the logical name to the `Targets` metadata property for full entity binding. Virtual lookups disable editing functionality. -* **_{lookupColumnName}_value@OData.Community.Display.V1.FormattedValue**: Refers to the formatted value displayed to the user, representing the result of the Lookup. +* **_{lookupColumnName}_value@OData.Community.Display.V1.FormattedValue**: Formatted value displayed to users. -**Example of entity boud Lookup field:** +**Example of entity bound Lookup field:** ```json { "name":"entityBoundLookup", "alias":"entityBoundLookup", - "dataType":"DataTypes.LookupSimple", + "dataType":"Lookup.Simple", "displayName":"Entity Bound Lookup", "order": 0, "visualSizeFactor":150, @@ -149,12 +153,12 @@ In order to use Lookups in Memory Provider, your Data Source needs to include th ``` *Data Source* -**Example of Example of virtual Lookup field:** +**Example of virtual Lookup field:** ```json { "name":"virtualLookup", "alias":"virtualLookup", - "dataType":"DataTypes.LookupSimple", + "dataType":"Lookup.Simple", "displayName":"Virtual Lookup", "order": 0, "visualSizeFactor":150, @@ -181,11 +185,9 @@ In order to use Lookups in Memory Provider, your Data Source needs to include th ``` *Data Source* - - #### File and Image Columns -In order to use File and Image columns in Memory Provider, your Data Source needs to include these five (six) properties: +File and Image columns in Memory Provider require the following properties in the data source: | Property | Description | |---------------------------------|-----------------------------------------------------------------------------| @@ -248,7 +250,7 @@ In order to use File and Image columns in Memory Provider, your Data Source need ## Columns -Columns binding can be used to specify properties for each column. It expects a stringified JSON array containing objects of column props. This object is based on the [PCF Dataset Column interface](https://learn.microsoft.com/en-us/power-apps/developer/component-framework/reference/column). +Column binding defines properties for each column using a stringified JSON array. Each object in the array follows the [PCF Dataset Column interface](https://learn.microsoft.com/en-us/power-apps/developer/component-framework/reference/column) specification. ```json [ @@ -307,67 +309,115 @@ Columns binding can be used to specify properties for each column. It expects a ] ``` -> **_NOTE:_** When you define columns using `setColumns` in the Client API, the control will utilize these specified columns, overriding any configurations set in the Columns binding or any defaults provided by the data provider. +> **_NOTE:_** Columns defined using `setColumns` in the Client API override configurations set in the Columns binding and provider defaults. ### Extensions -In order to provide more features, we have [extended]() the native column interface with additional props. +The native column interface has been extended with additional properties to provide enhanced functionality. | Prop Name | Description | |-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `type` | A column can serve multiple purposes: it may contain data or fulfill other roles, such as displaying a ribbon or notifications. This property specifies whether the control treats the column as a data or action column, adapting its behavior accordingly (e.g., excluding data-specific features like non-editable icons in headers). | -| `alignment` | Defines the alignment of the column. If not specified, numbers default to right-aligned, while other types default to left-aligned. | -| `isDraggable` | Determines if the user can customize the column's position. | -| `metadata` | Allows you to define or override [Xrm Attribute Metadata](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/attributemetadata?view=dataverse-latest) for a column. | -| `oneClickEdit`| Removes the need to double-click a cell to edit its value. Note: Enabling this on too many columns may reduce performance; use only when the performance decrease is acceptable for your use case. | -| `controls ` | Used to set up [cell customizers](). -| `aggregationFunction` | Name of the aggregation function to apply to the column. This aggregation will be automatically applied to the control. | +| `alignment` | Defines the alignment of the column. If not specified, numbers default to right-aligned, while other types default to left-aligned. | +| `isDraggable` | Determines if the user can customize the column's position. | +| `oneClickEdit`| Removes the need to double-click a cell to edit its value. Note: Enabling this on too many columns may reduce performance; use only when the performance decrease is acceptable for your use case. | +| `controls` | Used to set up [cell customizers](./CellCustomizers/general.md). | +| `autoHeight` | If specified, the control will try to fit the row height to cell's content. User will also be able to adjust the row height manually. This setting defaults to `true` for columns with multiline datatype. | +| `grouping` | Tells the provider that it should [group data](#grouping-and-aggregations) by this column. | +| `aggregation` | Tells the provider that it should [aggregate values](#additional-customization) from this column. | +| `metadata` | Allows you to define or override [Xrm Attribute Metadata](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/attributemetadata?view=dataverse-latest) for a column. | | | -### Provider specific features +### Provider-Specific Features -Depending on which provider you choose, a different minimal amount of props is required for the column to show in the UI: +Each provider requires different minimum properties for column display: -- **FetchXml Provider**: `name` -- **Memory Provider**: `name`, `displayName` and [`dataType`](https://learn.microsoft.com/en-us/power-apps/developer/component-framework/manifest-schema-reference/type) +- **FetchXml Provider**: `name` (if no `savedqueryid` is present in FetchXml) +- **Memory Provider**: `name`, `displayName`, and [`dataType`](https://learn.microsoft.com/en-us/power-apps/developer/component-framework/manifest-schema-reference/type) #### Memory Provider -Memory Provider requires all columns that are being used to be defined in the Column binding. If you do not specify the column in the binding, it will not appear in the control. +All columns must be explicitly defined in the Column binding. Undefined columns will not appear in the control. -#### FetchXm Provider +#### FetchXml Provider FetchXml Provider handles column binding in a slightly different way compared to other providers. When your FetchXml query does not include a `savedqueryid`, it behaves the same as MemoryProvider: any columns not explicitly specified in the Columns binding will be ignored. However, if the FetchXml includes a `savedqueryid`, the control retrieves the associated layoutxml to define the columns automatically. When you define columns in the Columns binding **and** the FetchXml contains a `savedqueryid`, the details provided in the Columns binding take precedence, **overriding** the corresponding information in the `layoutxml`. Additionally, if you specify a column in the Columns binding that isn’t present in the `layoutxml`, it will be added to the control alongside the columns defined by the layout. + + ##### Virtual Columns -FetchXml Provider offers support for virtual columns, which are columns that do not exist in Dataverse. Instead, it’s up to the developer to define their behavior and functionality. To designate a column as virtual, simply append the `__virtual` suffix to its name. This signals the provider that it should skip fetching metadata for that column from Dataverse. Once defined, virtual columns can be manipulated just like regular columns—allowing you to use actions such as `setValue` and `getValue`, apply expressions, and perform other operations as needed. +FetchXml Provider offers support for virtual columns, which are columns that do not exist in Dataverse. Instead, it’s up to the developer to define their behavior and functionality. To designate a column as virtual, set the `isVirtual` prop on it's definition to `true`. This signals the provider that it should skip fetching metadata for that column from Dataverse. Once defined, virtual columns can be manipulated just like regular columns—allowing you to use actions such as `setValue` and `getValue`, apply expressions, and perform other operations as needed. ## 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. +Entity Metadata binding enables definition or override of [Xrm Entity Metadata](https://learn.microsoft.com/en-us/dotnet/api/microsoft.xrm.sdk.metadata.entitymetadata?view=dataverse-sdk-latest) properties. Common use cases include customizing `DisplayCollectionName` for improved dataset description. The Memory Provider requires the `PrimaryIdAttribute` property. The binding accepts a stringified JSON object following the [Xrm Entity Metadata](https://learn.microsoft.com/en-us/dotnet/api/microsoft.xrm.sdk.metadata.entitymetadata?view=dataverse-sdk-latest) interface. -## Height +## Height Configuration -There are multiple ways to set the height of the control. By default, the control height will stretch to fit a maximum of 15 rows. If this limit is reached, a scrollbar will appear automatically. This is due to performance reasons, since row virtualization relies on control container being at fixed height. If the container gets too large, the performance degrades significantly. You can change the size of the container in three ways: +The control height can be configured using multiple approaches. By default, the control displays up to 15 rows with automatic scrollbar activation beyond this limit. This constraint ensures optimal performance as row virtualization requires fixed container heights. -1. **Limit the page size**: If you reduce the number of records per page, the control will automatically adjust its height to fit the specified number of rows (up to 15). This is the recommended way to set the height of the control. You can limit the page size either through fetchXml (FetchXml Provider) or client API. +**Page Size Limitation**: Reduces records per page, automatically adjusting control height to fit the specified number of rows (maximum 15). Configure through FetchXml queries or Client API. This is the recommended approach for height management. -2. **Height property**: If your usecase requires displaying a lot of rows and you do not want to force the user to paginate through records, you can set the height of the control to a fixed value. This will force the control to always stay at this height, regardless of the number of rows. Keep in mind that the performance may degrade if you keep this container too large. This value should **always** be in fixed pixels (e.g. `500px`). +**Fixed Height Property**: Sets a specific pixel value for scenarios requiring many visible rows without pagination. Use fixed pixel values (e.g., `500px`). Performance may degrade with excessively large containers. -2. **Expand to full tab**: The control supports the native `Expand to full tab` feature. This will stretch the control to fit the entire tab, regardless of the number of rows. This is the **recommended way** to set the height of the control if you want to display a lot of rows. In order for this feature to work, you also need to set the `Height` property to `100%`. +**Full Tab Expansion**: Utilizes the native "Expand to full tab" feature, stretching the control across the entire tab. Recommended for displaying large datasets. Requires setting the `Height` property to `100%`. ![Control at Full Height](/.attachments/applications/Controls/VirtualDataset/full_height.png) *Control with Expand to full tab feature on.* -## Column Aggregations +## Saving +The control supports both manual and automatic saving of changes made to editable fields. Manual saving is facilitated through ribbon buttons, while automatic saving can be enabled via the `EnableAutoSave` binding. When auto-save is activated, any modifications to editable fields are saved immediately without user intervention. You can use the `onBeforeRecordSaved` and `onAfterRecordSaved` events in the Client API to implement custom logic before and after the save operation. You can also change saving behavior by using the [`onRecordSave` interceptor](./ClientExtensibility/general.md/#onrecordsave). + +In case of **FetchXml Provider**, the control saves changes directly to the Dataverse. For **Memory Provider**, changes are propagated to the data source directly. This means that calling `dataset.getDataSource()` after editing will return the updated data. +## Grouping and Aggregations + +Data can be grouped by specific columns with value aggregation for each group using the `grouping` and `aggregation` properties in column definitions. + +The `grouping` property requires the `isGrouped` boolean to enable column-based data grouping. -It is possible to set aggregations on columns via the `aggregationFunction` property in the column definition. Depending on the column type and provider, the following aggregation functions are available: +The `aggregation` property requires the `aggregationFunction` parameter. Available functions depend on column type and provider: `countcolumn`, `count`, `min`, `max`, `sum`, `avg` -Each provider populates the `SupportedAggregations` array in column metadata to indicate which aggregations a specific column supports. Users can configure aggregations via the UI when the `EnableAggregation` binding is set to `true`. To limit the aggregations available in the UI, set the `SupportedAggregations` property in the column bindings. +> **_NOTE:_** Specifying only `aggregation` without grouping creates a "Total row" at the control bottom with aggregated values for all rows. + +Pre-configured grouping and aggregations load automatically. Users can modify these settings through the control interface when enabled via `EnableAggregation` and `EnableGrouping` bindings. + +![Grid grouped by two columns](/.attachments/applications/Controls/VirtualDataset/grouping_aggregations.png) +*Grid grouped by two columns with aggregations applied.* + + +```json +{ + "name": "category", + "alias": "category", + "dataType": "SingleLine.Text", + "displayName": "Category", + "order": 0, + "visualSizeFactor": 150, + "grouping": { + "isGrouped": true + } +}, +{ + "name": "amount", + "alias": "amount", + "dataType": "Whole.None", + "displayName": "Amount", + "order": 1, + "visualSizeFactor": 150, + "aggregation": { + "aggregationFunction": "sum" + } +} +``` +*Example of Grouping and Aggregation definitions* + +Restrict user customization of column groupings and aggregations using the `SupportedAggregations` and `CanBeGrouped` metadata properties. + +> **_NOTE:_** These settings only restrict UI customization. Grouping or aggregation defined in column definitions applies regardless of these restrictions. ```json { @@ -378,17 +428,47 @@ Each provider populates the `SupportedAggregations` array in column metadata to "order": 0, "visualSizeFactor": 150, "metadata": { + "CanBeGrouped": false, "SupportedAggregations": ["sum", "avg"] } } ``` -*Restricting aggregations for `Amount` column to sum and average.* +*Restricting aggregations and groupings for `Amount` column.* + +### Limitations + +* Date columns support grouping by specific date values only. Grouping by time periods (month, year, etc.) is not currently supported. +* Nested grouping restricts selection to groups that do not contain other grouped records for performance reasons. + +## Ribbon -![Control at Full Height](/.attachments/applications/Controls/VirtualDataset/aggregations.png) -*Control with aggregations set on `Decimal` and `Whole.None` columns.* +Virtual Dataset includes a built-in ribbon for various actions including grid refresh and change management (save/dismiss). Ribbon buttons support customization through Client API. +![Ribbon](/.attachments/applications/Controls/VirtualDataset/ribbon.png) +*Grid ribbon* +### Inline Ribbon +Display record-contextual buttons within each row by defining a special column named `_talxis_gridRibbonButtons`. You can set any additional properties on this column as you would on a standard one. + +If you are adding your own custom buttons, make sure you include their id in the `InlineRibbonButtonIds` binding. The ids's format should be comma-separated string, eg. `"button1Id,button2Id,button3Id"`. + +When properly configured, the control renders ribbon buttons for each row. + +```json +{ + "name": "_talxis_gridRibbonButtons", + "dataType": "SingleLine.Text", + "visualSizeFactor": 300 +} +``` +*Inline Ribbon Column Definition* + + +![Inline Ribbon](/.attachments/applications/Controls/VirtualDataset/inline_ribbon.png) +*Inline Ribbon* + +Inline ribbon buttons affect individual rows, while main ribbon buttons affect the entire dataset. ## Bindings Summary @@ -541,8 +621,8 @@ Each provider populates the `SupportedAggregations` array in column metadata to false - EnableChangeEditor - Whether the user can display a list of all their changes. + EnablePageSizeSwitcher + Whether the user should be allowed to change number of rows per page. Enum ("Yes" | "No") "Yes" N/A @@ -550,8 +630,8 @@ Each provider populates the `SupportedAggregations` array in column metadata to false - EnablePageSizeSwitcher - Whether the user should be allowed to change number of rows per page. + EnableAggregation + Whether the user should be allowed to set aggregations on columns Enum ("Yes" | "No") "Yes" N/A @@ -559,29 +639,116 @@ Each provider populates the `SupportedAggregations` array in column metadata to false - EnableAggregation - Whether the user should be allowed to set aggregations on columns + EnableGrouping + Enable or disable grouping functionality in the control. + Enum ("Yes" | "No") + "No" + N/A + input + false + + + EnableGroupedColumnsPinning + Enable or disable pinning of grouped columns in the control. Enum ("Yes" | "No") "Yes" N/A input false + + EnableCommandBar + Enable or disable the command bar in the control. + Enum ("Yes" | "No") + "Yes" + N/A + input + false + + + EnableAutoSave + Enable or disable automatic saving of changes in the control. + Enum ("Yes" | "No") + "No" + N/A + input + false + + + EnableRecordCount + Enable or disable display of record count in the control. + Enum ("Yes" | "No") + "Yes" + N/A + input + false + + + EnableZebra + Enable or disable zebra striping (alternating row colors) in the control. + Enum ("Yes" | "No") + "Yes" + N/A + input + false + + + InlineRibbonButtonIds + Comma-separated list of inline ribbon button IDs to display in the control. + SingleLine.Text + N/A + N/A + input + false + + + DefaultExpandedGroupLevel + Default level of group expansion when grouping is enabled. + Whole.None + -1 + N/A + input + false + + + GroupingType + Defines the type of grouping to use when grouping is enabled. + Enum ("Nested" | "Flat") + "Nested" + N/A + input + false + + + ClientApiWebresourceName + Name of the webresource containing client API functions for extended functionality. + SingleLine.Text + N/A + N/A + input + false + + + ClientApiFunctionName + Name of the client API function to call for extended functionality. + SingleLine.Text + N/A + N/A + input + false + ## Additional Customization -The control can be further customized through the the use of **Client API** and **Cell Customizers**. See the following resources for more information: + +The control supports extended customization through **Client API** and **Cell Customizers**: - [Client API](./ClientExtensibility/general.md) - [Cell Customizers](./CellCustomizers/general.md) -> **_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`. - - - - + > **_NOTE:_** For local development and testing, use [PCF local harness](https://learn.microsoft.com/en-us/power-apps/developer/component-framework/debugging-custom-controls) with the `_mock` variable set to `true`. diff --git a/src/en/developer-guide/applications/controls/grid.md b/src/en/developer-guide/applications/controls/grid.md index f77277bd3..686c606d8 100644 --- a/src/en/developer-guide/applications/controls/grid.md +++ b/src/en/developer-guide/applications/controls/grid.md @@ -12,138 +12,10 @@ Grid is a dataset PCF wrapper over [Virtual Dataset](./VirtualDataset/general.md Since Grid can be directly bound to a Subgrid or Homepage grid, it does not require any additional configuration. You can simply add the Grid control to your form and bind it to the desired dataset. Of course, you can still use other parameters to customize the control's behavior the same way as you would with the Virtual Dataset control. Grid behaves the same as Virtual Dataset with `FetchXmlDataProvider`, so the behavior (for example in regards to the `Columns` binding) is identical. -The control can be bound to a Form via the Legacy Form Designer (Modern App Designer is not supported yet). For HomePage grid, please refer to this [guide](https://learn.microsoft.com/en-us/power-apps/developer/component-framework/customize-editable-grid-control#implementing-a-grid-customizer-control)(relevant part starts from step 5). - -## Client Extensibility - -Grid control supports the same Client API as the Virtual Dataset control. However, the dataset instance is acquired a bit differently depending on whether the control is used on a Subgrid or Homepage grid. - -### Subgrid - -When the Grid control is used on a Subgrid, the dataset instance can be acquired similarly to the Virtual Dataset control: - -```javascript -function onFormLoad(executionContext) { - const formContext = executionContext.getFormContext(); - const control = formContext.getControl('Subgrid'); - control.addOnOutputChange((executionContext) => { - const control = executionContext.getFormContext().getControl('Subgrid'); - const dataset = control.getOutputs()['Subgrid.DatasetControl'].value; - dataset.addEventListener('onRecordLoaded', (record) => { - //register record expressions - }) - }) -} -``` - -### Homepage Grid - -Getting the dataset instance in Homepage grid works a bit diffrently. Due to limited support for client scripts on Homepage grids, the dataset instance needs to be retrieved through a hidden ribbon button: - -1. Create a Homepage grid button with an Enable Rule that always returns false. Take a note of the button's ID. -![](/.attachments/applications/Controls/Grid/grid_ribbon_button_workbench.png) - -1. Assign a command to the button that will execute your custom JavaScript method. This method will be used to retrieve the dataset instance. Make sure to also pass `PrimaryControl` as the first parameter. -![](/.attachments/applications/Controls/Grid/grid_ribbon_command.png) - -1. Use the ribbon button ID as value for the `Client API Ribbon Button Id` parameter. -![](/.attachments/applications/Controls/Grid/grid_clientapi_init_btn.png) - -1. If you've done everything correctly, you can retrieve the dataset instance in your custom JavaScript method like this: -```javascript -function onMainGridLoad(primaryControl) { - const dataset = window.Xrm[`talxis_grid_${primaryControl.getGrid().pageId}`]; - dataset.addEventListener('onRecordLoaded', (record) => { - //register record expressions - }) -} -``` - -## Inline Ribbon - -Since the control is bound to a dataset, it can interact with Power Apps ribbon buttons. You are able to whitelist specific ribbon buttons to make them render for each row. This allows for scenarios with quicker UX, since the user can click the button directly without having to select the row first. - -![Homepage Grid](/.attachments/applications/Controls/Grid/grid_inline_ribbon.png) -*Inline Ribbon* - -In order to enable this feature, you need to follow these steps: - -1. Make sure that a column named `_talxis_gridRibbonButtons` exists on the dataset. It can either be added via `layoutXml`, `Columns` binding or [interceptor](../controls/VirtualDataset/ClientExtensibility/general.md) on columns. - -1. Input the button ID's you wisth to be visible in the Grid into the `Inline Ribbon Button Ids` parameter. The ID's should be separated by a comma. -Whitelisting a button **does not guarantee** that Grid will render it. The button must also have an Enable Rule that evaluates to true in order to be rendered. - -### Ribbon Cell Customizer - -You can customize the inline ribbon cell the same way you would do with a regular cell through a [PCF customizer](./VirtualDataset/CellCustomizers/general.md). Once you have the customizer setup, you will receive the ribbon buttons in the `RecordCommands` parameter. You can then either create a fully custom UI or leverage the `GridCellRenderer` to adjust the default UI. - -#### Customizing the default UI - -```typescript -public updateView(context: ComponentFramework.Context): void { - ReactDOM.render(React.createElement(GridCellRenderer, { - context: context, - parameters: context.parameters, - onOverrideComponentProps(props) { - return {...props, - onGetRecordCommandsProps: (props) => { - return { - ...props, - commandBarProps: { - ...props.commandBarProps, - items: props.commandBarProps.items.map((item) => { - return { - ...item, - iconProps: {}, - className: mergeStyles({ - '.ms-Button-label': { - fontWeight: 600 - } - }), - text: `${this._getEmojiFromString(item.text!)} ${item.text}`, - }; - }), - } - } - } - } - }, - }), this._container); -} -``` -![Custom Ribbon Native](/.attachments/applications/Controls/Grid/grid_custom_ribbon_native.png) - -#### Fully Custom UI -```typescript -public updateView(context: ComponentFramework.Context < IInputs > ): void { - return ReactDOM.render(React.createElement(CustomButtons, { - context: context, - commands: context.parameters.RecordCommands.raw - }), this._container) -} - -export const CustomButtons = (props: ICustomButtonsProps) => { - const { context, commands } = props; - const theme = useControlTheme(context.fluentDesignLanguage); - const styles = React.useMemo(() => getCustomButtonsStyles(context.mode.allocatedHeight), [context.mode.allocatedHeight]); - return ( - - {commands.map((command) => { - return ( - command.execute()} - text={command.label} - /> - ); - })} - - ); -}; -``` -![Custom Ribbon Fully](/.attachments/applications/Controls/Grid/grid_custom_ribbon_fully.png) - - +## Ribbon +Grid is able to leverage the same Ribbon commands as the standard Power Apps grids. This means that you can use the existing Ribbon buttons and commands to perform actions on the Grid control, such as creating new records, deleting records, or exporting data. You can also render these buttons inline by following the instructions in the [Ribbon section of the Virtual Dataset documentation](./VirtualDataset/general.md#inline-ribbon). +### Grouping +To enable ribbon functionality with grouped records, configure the `RibbonGroupingDataset` binding to reference a view targeting the same entity as the main dataset. The view must exclude all filters and include any linked entities referenced in the main dataset.