@talxis/base-controls 1.2605.2-alpha → 1.2606.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Grid/cells/cell/Cell.js +2 -6
- package/dist/components/Grid/cells/cell/Cell.js.map +1 -1
- package/dist/components/Grid/column-headers/column-header/ColumnHeader.js +1 -1
- package/dist/components/Grid/column-headers/column-header/ColumnHeader.js.map +1 -1
- package/dist/components/Grid/grid/ag-grid/AgGridModel.js +1 -1
- package/dist/components/Grid/grid/ag-grid/AgGridModel.js.map +1 -1
- package/dist/components/Lookup/components/TargetSelector.js +1 -1
- package/dist/components/Lookup/components/TargetSelector.js.map +1 -1
- package/dist/components/Lookup/hooks/useLookup.d.ts +4 -0
- package/dist/components/Lookup/translations.d.ts +4 -0
- package/dist/components/Lookup/translations.js +4 -0
- package/dist/components/Lookup/translations.js.map +1 -1
- package/dist/components/TaskGrid/TaskGrid.js +2 -2
- package/dist/components/TaskGrid/TaskGrid.js.map +1 -1
- package/dist/components/TaskGrid/TaskGridDatasetControl.d.ts +2 -0
- package/dist/components/TaskGrid/TaskGridDatasetControl.js +42 -28
- package/dist/components/TaskGrid/TaskGridDatasetControl.js.map +1 -1
- package/dist/components/TaskGrid/TaskGridDatasetControlFactory.js +3 -0
- package/dist/components/TaskGrid/TaskGridDatasetControlFactory.js.map +1 -1
- package/dist/components/TaskGrid/components/grid/cell-renderers/lookup-many/LookupManyCellRenderer.js +6 -3
- package/dist/components/TaskGrid/components/grid/cell-renderers/lookup-many/LookupManyCellRenderer.js.map +1 -1
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.js +2 -4
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.js.map +1 -1
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/styles.d.ts +0 -6
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/styles.js +0 -6
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/styles.js.map +1 -1
- package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.js +10 -5
- package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.js.map +1 -1
- package/dist/components/TaskGrid/components/grid/group-cell/styles.d.ts +3 -0
- package/dist/components/TaskGrid/components/grid/group-cell/styles.js +3 -0
- package/dist/components/TaskGrid/components/grid/group-cell/styles.js.map +1 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/LookupMany.d.ts +1 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/LookupMany.js +3 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/LookupMany.js.map +1 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/index.d.ts +1 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/index.js +1 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/colorful-lookup-many/components/index.js.map +1 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/components/components.d.ts +11 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/components/components.js +17 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/components/components.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/components/index.d.ts +1 -10
- package/dist/components/TaskGrid/components/grid/lookup-many/components/index.js +1 -14
- package/dist/components/TaskGrid/components/grid/lookup-many/components/index.js.map +1 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/components/menu/Menu.d.ts +3 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/components/menu/Menu.js +10 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/components/menu/Menu.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/components/menu/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/components/menu/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/components/menu/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/MultiValueContainer.d.ts +5 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/MultiValueContainer.js +3 -2
- package/dist/components/TaskGrid/components/grid/lookup-many/components/multi-value-container/MultiValueContainer.js.map +1 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/PeopleLookupMany.js +1 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/PeopleLookupMany.js.map +1 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/components.d.ts +2 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/components.js +15 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/components.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/index.d.ts +1 -2
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/index.js +1 -12
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/index.js.map +1 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/MultiValueContainer.d.ts +3 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/MultiValueContainer.js +12 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/MultiValueContainer.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/styles.d.ts +9 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/styles.js +18 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-container/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/MultiValueLabel.js +1 -1
- package/dist/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/MultiValueLabel.js.map +1 -1
- package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/MultiValueLabel.d.ts +1 -1
- package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/MultiValueLabel.js +3 -2
- package/dist/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/MultiValueLabel.js.map +1 -1
- package/dist/components/TaskGrid/components/header/Header.d.ts +1 -1
- package/dist/components/TaskGrid/components/header/Header.js +58 -44
- package/dist/components/TaskGrid/components/header/Header.js.map +1 -1
- package/dist/components/TaskGrid/extensions/dataverse/DataverseCustomColumnsStrategy.d.ts +12 -6
- package/dist/components/TaskGrid/extensions/dataverse/DataverseCustomColumnsStrategy.js +23 -20
- package/dist/components/TaskGrid/extensions/dataverse/DataverseCustomColumnsStrategy.js.map +1 -1
- package/dist/components/TaskGrid/extensions/dataverse/DataverseGridCustomizerStrategy.d.ts +3 -3
- package/dist/components/TaskGrid/extensions/dataverse/DataverseGridCustomizerStrategy.js +4 -5
- package/dist/components/TaskGrid/extensions/dataverse/DataverseGridCustomizerStrategy.js.map +1 -1
- package/dist/components/TaskGrid/extensions/dataverse/DataverseSavedQueryStrategy.js +15 -15
- package/dist/components/TaskGrid/extensions/dataverse/DataverseSavedQueryStrategy.js.map +1 -1
- package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskGridDescriptor.d.ts +27 -25
- package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskGridDescriptor.js +68 -29
- package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskGridDescriptor.js.map +1 -1
- package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskStrategy.d.ts +19 -17
- package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskStrategy.js +119 -74
- package/dist/components/TaskGrid/extensions/dataverse/DataverseTaskStrategy.js.map +1 -1
- package/dist/components/TaskGrid/extensions/dataverse/index.js +1 -1
- package/dist/components/TaskGrid/extensions/dataverse/lookup-many/LookupManyHandler.d.ts +18 -2
- package/dist/components/TaskGrid/extensions/dataverse/lookup-many/LookupManyHandler.js +80 -17
- package/dist/components/TaskGrid/extensions/dataverse/lookup-many/LookupManyHandler.js.map +1 -1
- package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlLookupManyCellRenderer.js +10 -4
- package/dist/components/TaskGrid/extensions/dataverse/lookup-many/cell-renderer/FetchXmlLookupManyCellRenderer.js.map +1 -1
- package/dist/components/TaskGrid/interfaces.d.ts +36 -22
- package/dist/components/TaskGrid/providers/custom-columns/CustomColumnsDataProvider.d.ts +7 -1
- package/dist/components/TaskGrid/providers/custom-columns/CustomColumnsDataProvider.js +3 -0
- package/dist/components/TaskGrid/providers/custom-columns/CustomColumnsDataProvider.js.map +1 -1
- package/dist/components/TaskGrid/providers/saved-query/SavedQueryDataProvider.d.ts +1 -1
- package/dist/components/TaskGrid/providers/saved-query/SavedQueryDataProvider.js +9 -26
- package/dist/components/TaskGrid/providers/saved-query/SavedQueryDataProvider.js.map +1 -1
- package/dist/components/TaskGrid/providers/task/TaskDataProvider.d.ts +13 -20
- package/dist/components/TaskGrid/providers/task/TaskDataProvider.js +30 -22
- package/dist/components/TaskGrid/providers/task/TaskDataProvider.js.map +1 -1
- package/dist/components/TaskGrid/providers/task/record-tree/RecordTree.d.ts +8 -0
- package/dist/components/TaskGrid/providers/task/record-tree/RecordTree.js.map +1 -1
- package/dist/index.d.ts +68 -42
- package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js.map +1 -1
- package/package.json +4 -4
- package/dist/components/TaskGrid/extensions/LexoRank.d.ts +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiValueLabel.js","sources":["../../../../../../../../../src/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/MultiValueLabel.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Persona, PersonaSize, TooltipHost } from '@fluentui/react';\nimport { MultiValueGenericProps } from 'react-select';\nimport { getMultiValueLabelStyles } from './styles';\nimport { usePeopleLookupManyProps } from '../../context';\nimport { MultiValueLabel as MultiValueLabelBase } from '../../../components/multi-value-label';\n\nexport const MultiValueLabel = (props: MultiValueGenericProps<ComponentFramework.EntityReference, boolean, any>) => {\n const styles = React.useMemo(() => getMultiValueLabelStyles(), []);\n const {imageUrlPropertyName = 'imageurl'} = usePeopleLookupManyProps();\n const imageUrl = (props.data as any).rawData?.[imageUrlPropertyName] ?? undefined;\n\n const persona = (\n <TooltipHost content={props.data.name}>\n <Persona\n text={props.data.name}\n size={PersonaSize.size24}\n imageUrl={imageUrl}\n hidePersonaDetails\n styles={{ root: styles.persona }}\n />\n </TooltipHost>\n );\n\n return <MultiValueLabelBase {...props}>\n {persona}\n </MultiValueLabelBase>\n};\n"],"names":["_jsx","MultiValueLabelBase"],"mappings":";;;;;;;AAOa,MAAA,eAAe,GAAG,CAAC,KAA+E,KAAI;AAC/G,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,wBAAwB,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,MAAM,EAAC,oBAAoB,GAAG,UAAU,EAAC,GAAG,wBAAwB,EAAE,CAAC;AACvE,IAAA,MAAM,QAAQ,GAAI,KAAK,CAAC,IAAY,CAAC,OAAO,GAAG,oBAAoB,CAAC,IAAI,SAAS,CAAC;IAElF,MAAM,OAAO,IACTA,
|
|
1
|
+
{"version":3,"file":"MultiValueLabel.js","sources":["../../../../../../../../../src/components/TaskGrid/components/grid/lookup-many/people-lookup-many/components/multi-value-label/MultiValueLabel.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Persona, PersonaSize, TooltipHost } from '@fluentui/react';\nimport { MultiValueGenericProps } from 'react-select';\nimport { getMultiValueLabelStyles } from './styles';\nimport { usePeopleLookupManyProps } from '../../context';\nimport { MultiValueLabel as MultiValueLabelBase } from '../../../components/multi-value-label';\n\nexport const MultiValueLabel = (props: MultiValueGenericProps<ComponentFramework.EntityReference, boolean, any>) => {\n const styles = React.useMemo(() => getMultiValueLabelStyles(), []);\n const {imageUrlPropertyName = 'imageurl'} = usePeopleLookupManyProps();\n const imageUrl = (props.data as any).rawData?.[imageUrlPropertyName] ?? undefined;\n\n const persona = (\n <TooltipHost content={props.data.name}>\n <Persona\n imageShouldFadeIn={false}\n text={props.data.name}\n size={PersonaSize.size24}\n imageUrl={imageUrl}\n hidePersonaDetails\n styles={{ root: styles.persona }}\n />\n </TooltipHost>\n );\n\n return <MultiValueLabelBase {...props}>\n {persona}\n </MultiValueLabelBase>\n};\n"],"names":["_jsx","MultiValueLabelBase"],"mappings":";;;;;;;AAOa,MAAA,eAAe,GAAG,CAAC,KAA+E,KAAI;AAC/G,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,wBAAwB,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,MAAM,EAAC,oBAAoB,GAAG,UAAU,EAAC,GAAG,wBAAwB,EAAE,CAAC;AACvE,IAAA,MAAM,QAAQ,GAAI,KAAK,CAAC,IAAY,CAAC,OAAO,GAAG,oBAAoB,CAAC,IAAI,SAAS,CAAC;IAElF,MAAM,OAAO,IACTA,GAAC,CAAA,WAAW,IAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EACjC,QAAA,EAAAA,GAAA,CAAC,OAAO,EAAA,EACJ,iBAAiB,EAAE,KAAK,EACxB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EACrB,IAAI,EAAE,WAAW,CAAC,MAAM,EACxB,QAAQ,EAAE,QAAQ,EAClB,kBAAkB,QAClB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,EAAA,CAClC,EACQ,CAAA,CACjB,CAAC;AAEF,IAAA,OAAOA,IAACC,iBAAmB,EAAA,EAAA,GAAK,KAAK,EAChC,QAAA,EAAA,OAAO,GACU,CAAA;AAC1B;;;;"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/// <reference types="@types/powerapps-component-framework" />
|
|
2
2
|
import { MultiValueGenericProps } from 'react-select';
|
|
3
|
-
export declare const MultiValueLabel: (
|
|
3
|
+
export declare const MultiValueLabel: (props: MultiValueGenericProps<ComponentFramework.EntityReference, boolean, any>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,13 +3,14 @@ import * as React from 'react';
|
|
|
3
3
|
import { Link } from '@fluentui/react';
|
|
4
4
|
import { getMultiValueLabelStyles } from './styles.js';
|
|
5
5
|
|
|
6
|
-
const MultiValueLabel = (
|
|
6
|
+
const MultiValueLabel = (props) => {
|
|
7
7
|
const styles = React.useMemo(() => getMultiValueLabelStyles(), []);
|
|
8
|
+
const { selectProps, data, children } = props;
|
|
8
9
|
const { onNavigate } = selectProps;
|
|
9
10
|
if (onNavigate) {
|
|
10
11
|
return (jsx(Link, { styles: { root: styles.link }, onClick: (e) => {
|
|
11
12
|
e.preventDefault();
|
|
12
|
-
onNavigate();
|
|
13
|
+
onNavigate(data);
|
|
13
14
|
}, children: children }));
|
|
14
15
|
}
|
|
15
16
|
return jsx("span", { className: styles.root, children: children });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultiValueLabel.js","sources":["../../../../../../../../src/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/MultiValueLabel.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Link } from '@fluentui/react';\nimport { MultiValueGenericProps } from 'react-select';\nimport { getMultiValueLabelStyles } from './styles';\n\nexport const MultiValueLabel = (
|
|
1
|
+
{"version":3,"file":"MultiValueLabel.js","sources":["../../../../../../../../src/components/TaskGrid/components/grid/multi-record-selector/components/multi-value-label/MultiValueLabel.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Link } from '@fluentui/react';\nimport { MultiValueGenericProps } from 'react-select';\nimport { getMultiValueLabelStyles } from './styles';\n\nexport const MultiValueLabel = (props: MultiValueGenericProps<ComponentFramework.EntityReference, boolean, any>) => {\n const styles = React.useMemo(() => getMultiValueLabelStyles(), []);\n const {selectProps, data, children} = props;\n const { onNavigate } = selectProps as any;\n\n if (onNavigate) {\n return (\n <Link\n styles={{root: styles.link}}\n onClick={(e) => {\n e.preventDefault();\n onNavigate(data);\n }}\n >\n {children}\n </Link>\n );\n }\n\n return <span className={styles.root}>{children}</span>;\n};\n"],"names":["_jsx"],"mappings":";;;;;AAKa,MAAA,eAAe,GAAG,CAAC,KAA+E,KAAI;AAC/G,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,wBAAwB,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,MAAM,EAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAC,GAAG,KAAK,CAAC;AAC5C,IAAA,MAAM,EAAE,UAAU,EAAE,GAAG,WAAkB,CAAC;AAE1C,IAAA,IAAI,UAAU,EAAE;AACZ,QAAA,QACIA,GAAC,CAAA,IAAI,IACD,MAAM,EAAE,EAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAC,EAC3B,OAAO,EAAE,CAAC,CAAC,KAAI;gBACX,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,UAAU,CAAC,IAAI,CAAC,CAAC;AACrB,aAAC,EAEA,QAAA,EAAA,QAAQ,EACN,CAAA,EACT;AACL,KAAA;IAED,OAAOA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,IAAI,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAQ,CAAC;AAC3D;;;;"}
|
|
@@ -4,5 +4,5 @@ interface ITaskGridHeaderProps {
|
|
|
4
4
|
headerProps: IHeaderProps;
|
|
5
5
|
defaultRender: (props: IHeaderProps) => React.ReactElement;
|
|
6
6
|
}
|
|
7
|
-
export declare const Header: (props: ITaskGridHeaderProps) =>
|
|
7
|
+
export declare const Header: (props: ITaskGridHeaderProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
8
|
export {};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { CommandBarButton, ContextualMenuItemType } from '@fluentui/react';
|
|
4
4
|
import { getHeaderStyles } from './styles.js';
|
|
5
5
|
import { useLocalizationService, useDatasetControl, useTaskDataProvider, usePcfContext, useTaskGridComponents } from '../../context.js';
|
|
6
6
|
import { EditColumns } from './edit-columns/EditColumns.js';
|
|
7
7
|
import { ViewSwitcher } from './view-switcher/ViewSwitcher.js';
|
|
8
|
-
import { RecordSelector } from '../grid/record-selector/RecordSelector.js';
|
|
9
8
|
import { SettingsCallout } from './settings-callout/SettingsCallout.js';
|
|
9
|
+
import { RecordSelector } from '../grid/record-selector/RecordSelector.js';
|
|
10
10
|
|
|
11
11
|
const Header = (props) => {
|
|
12
12
|
const localizationService = useLocalizationService();
|
|
@@ -16,12 +16,59 @@ const Header = (props) => {
|
|
|
16
16
|
const [editColumnsOpen, setEditColumnsOpen] = React.useState(false);
|
|
17
17
|
const pcfContext = usePcfContext();
|
|
18
18
|
const components = useTaskGridComponents();
|
|
19
|
+
const hasContent = () => {
|
|
20
|
+
return datasetControl.isViewSwitcherEnabled() ||
|
|
21
|
+
datasetControl.isTaskCreatingEnabled() ||
|
|
22
|
+
datasetControl.isTemplatingEnabled() ||
|
|
23
|
+
datasetControl.isTaskEditingEnabled() ||
|
|
24
|
+
datasetControl.isTaskDeletingEnabled() ||
|
|
25
|
+
datasetControl.isEditColumnsVisible() ||
|
|
26
|
+
datasetControl.isShowHierarchyToggleVisible() ||
|
|
27
|
+
datasetControl.isHideInactiveTasksToggleVisible();
|
|
28
|
+
};
|
|
19
29
|
const createTaskFromTemplate = (templateId) => {
|
|
20
30
|
provider.createTasksFromTemplate(templateId);
|
|
21
31
|
};
|
|
32
|
+
const getNewSubMenuItems = (isTemplatingEnabled, isTaskAddingEnabled, selectedIds, isLoading) => {
|
|
33
|
+
return [
|
|
34
|
+
...(isTaskAddingEnabled ? [{
|
|
35
|
+
key: 'addTopLevelTask',
|
|
36
|
+
disabled: isLoading,
|
|
37
|
+
iconProps: { iconName: 'AddToShoppingList' },
|
|
38
|
+
text: localizationService.getLocalizedString('topLevel'),
|
|
39
|
+
onClick: () => { provider.createTask(); }
|
|
40
|
+
}] : []),
|
|
41
|
+
...(isTemplatingEnabled ? [
|
|
42
|
+
...(isTaskAddingEnabled ? [{ key: 'divider', itemType: ContextualMenuItemType.Divider }] : []),
|
|
43
|
+
...(selectedIds.length === 1 ? [{
|
|
44
|
+
key: 'templateFromTask',
|
|
45
|
+
iconProps: { iconName: 'PageList' },
|
|
46
|
+
text: localizationService.getLocalizedString('templateFromTask'),
|
|
47
|
+
disabled: isLoading,
|
|
48
|
+
onClick: () => { provider.createTemplateFromTask(selectedIds[0]); }
|
|
49
|
+
}] : []),
|
|
50
|
+
...(isTaskAddingEnabled ? [{
|
|
51
|
+
key: 'taskFromTemplate',
|
|
52
|
+
iconProps: { iconName: 'AddToShoppingList' },
|
|
53
|
+
text: localizationService.getLocalizedString('taskFromTemplate'),
|
|
54
|
+
disabled: isLoading,
|
|
55
|
+
subMenuProps: {
|
|
56
|
+
items: [{ key: 'dummy' }],
|
|
57
|
+
focusZoneProps: {
|
|
58
|
+
shouldInputLoseFocusOnArrowKey: () => true
|
|
59
|
+
},
|
|
60
|
+
onRenderMenuList: () => isLoading ? jsx(Fragment, {}) : (jsx(RecordSelector, { provider: datasetControl.getTemplateDataProvider(), onRenderRecord: (props, defaultRender) => defaultRender({
|
|
61
|
+
...props,
|
|
62
|
+
iconProps: { iconName: 'AddToShoppingList' }
|
|
63
|
+
}), onRecordSelected: createTaskFromTemplate }))
|
|
64
|
+
}
|
|
65
|
+
}] : [])
|
|
66
|
+
] : [])
|
|
67
|
+
];
|
|
68
|
+
};
|
|
22
69
|
const getCommandBarItems = (items) => {
|
|
23
70
|
const isTemplatingEnabled = datasetControl.isTemplatingEnabled();
|
|
24
|
-
const isEditColumnsEnabled = datasetControl.
|
|
71
|
+
const isEditColumnsEnabled = datasetControl.isEditColumnsVisible();
|
|
25
72
|
const isTaskAddingEnabled = datasetControl.isTaskCreatingEnabled();
|
|
26
73
|
const isTaskEditingEnabled = datasetControl.isTaskEditingEnabled();
|
|
27
74
|
const isTaskDeletingEnabled = datasetControl.isTaskDeletingEnabled();
|
|
@@ -30,49 +77,13 @@ const Header = (props) => {
|
|
|
30
77
|
const selectedIds = provider.getSelectedRecordIds();
|
|
31
78
|
const isLoading = provider.isLoading();
|
|
32
79
|
return [
|
|
33
|
-
...((isTaskAddingEnabled
|
|
80
|
+
...((getNewSubMenuItems(isTemplatingEnabled, isTaskAddingEnabled, selectedIds, isLoading).length > 0) ? [{
|
|
34
81
|
key: 'new',
|
|
35
82
|
text: localizationService.getLocalizedString('new'),
|
|
36
83
|
disabled: isLoading,
|
|
37
84
|
iconProps: { iconName: 'Add' },
|
|
38
85
|
onClick: (isTaskAddingEnabled && !isTemplatingEnabled) ? () => { provider.createTask(); } : undefined,
|
|
39
|
-
subMenuProps: (isTaskAddingEnabled && !isTemplatingEnabled) ? undefined : {
|
|
40
|
-
items: [
|
|
41
|
-
...(isTaskAddingEnabled ? [{
|
|
42
|
-
key: 'addTopLevelTask',
|
|
43
|
-
disabled: isLoading,
|
|
44
|
-
iconProps: { iconName: 'AddToShoppingList' },
|
|
45
|
-
text: localizationService.getLocalizedString('topLevel'),
|
|
46
|
-
onClick: () => { provider.createTask(); }
|
|
47
|
-
}] : []),
|
|
48
|
-
...(isTemplatingEnabled ? [
|
|
49
|
-
...(isTaskAddingEnabled ? [{ key: 'divider', itemType: ContextualMenuItemType.Divider }] : []),
|
|
50
|
-
...(selectedIds.length === 1 ? [{
|
|
51
|
-
key: 'templateFromTask',
|
|
52
|
-
iconProps: { iconName: 'PageList' },
|
|
53
|
-
text: localizationService.getLocalizedString('templateFromTask'),
|
|
54
|
-
disabled: isLoading,
|
|
55
|
-
onClick: () => { provider.createTemplateFromTask(selectedIds[0]); }
|
|
56
|
-
}] : []),
|
|
57
|
-
{
|
|
58
|
-
key: 'taskFromTemplate',
|
|
59
|
-
iconProps: { iconName: 'AddToShoppingList' },
|
|
60
|
-
text: localizationService.getLocalizedString('taskFromTemplate'),
|
|
61
|
-
disabled: isLoading,
|
|
62
|
-
subMenuProps: {
|
|
63
|
-
items: [{ key: 'dummy' }],
|
|
64
|
-
focusZoneProps: {
|
|
65
|
-
shouldInputLoseFocusOnArrowKey: () => true
|
|
66
|
-
},
|
|
67
|
-
onRenderMenuList: () => isLoading ? jsx(Fragment, {}) : (jsx(RecordSelector, { provider: datasetControl.getTemplateDataProvider(), onRenderRecord: (props, defaultRender) => defaultRender({
|
|
68
|
-
...props,
|
|
69
|
-
iconProps: { iconName: 'AddToShoppingList' }
|
|
70
|
-
}), onRecordSelected: createTaskFromTemplate }))
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
] : [])
|
|
74
|
-
]
|
|
75
|
-
}
|
|
86
|
+
subMenuProps: (isTaskAddingEnabled && !isTemplatingEnabled) ? undefined : { items: getNewSubMenuItems(isTemplatingEnabled, isTaskAddingEnabled, selectedIds, isLoading) }
|
|
76
87
|
}] : []),
|
|
77
88
|
...(selectedIds.length !== 0 ? [
|
|
78
89
|
...(isTaskEditingEnabled ? [{
|
|
@@ -80,7 +91,7 @@ const Header = (props) => {
|
|
|
80
91
|
text: localizationService.getLocalizedString('bulkEdit'),
|
|
81
92
|
disabled: isLoading,
|
|
82
93
|
iconProps: { iconName: 'Edit' },
|
|
83
|
-
onClick: () => { provider.
|
|
94
|
+
onClick: () => { provider.openTaskItems(selectedIds); }
|
|
84
95
|
}] : []),
|
|
85
96
|
...(isTaskDeletingEnabled ? [{
|
|
86
97
|
key: 'delete',
|
|
@@ -119,10 +130,13 @@ const Header = (props) => {
|
|
|
119
130
|
}] : [])
|
|
120
131
|
];
|
|
121
132
|
};
|
|
133
|
+
if (!hasContent())
|
|
134
|
+
return jsx(Fragment, {});
|
|
122
135
|
return props.defaultRender({
|
|
123
136
|
...props.headerProps,
|
|
124
137
|
onRenderRibbonQuickFindWrapper: (props, defaultRender) => {
|
|
125
|
-
return jsxs("div", { className: styles.root, children: [
|
|
138
|
+
return jsxs("div", { className: styles.root, children: [datasetControl.isViewSwitcherEnabled() &&
|
|
139
|
+
jsx(ViewSwitcher, {}), defaultRender({
|
|
126
140
|
...props,
|
|
127
141
|
ribbonQuickFindContainerProps: {
|
|
128
142
|
...props.ribbonQuickFindContainerProps,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sources":["../../../../../src/components/TaskGrid/components/header/Header.tsx"],"sourcesContent":["import { IHeaderProps } from \"../../../DatasetControl/interfaces\"\nimport { ICommandBarItemProps } from \"@talxis/react-components\";\nimport * as React from \"react\"\nimport { CommandBarButton, ContextualMenuItemType, useTheme } from \"@fluentui/react\";\nimport { getHeaderStyles } from \"./styles\";\nimport { SettingsCallout } from \"./settings-callout\";\nimport { useDatasetControl, useLocalizationService, usePcfContext, useTaskDataProvider, useTaskGridComponents } from \"../../context\";\nimport { RecordSelector } from \"../grid/record-selector\";\nimport { ViewSwitcher } from \"./view-switcher\";\nimport { EditColumns } from \"./edit-columns/EditColumns\";\n\ninterface ITaskGridHeaderProps {\n headerProps: IHeaderProps;\n defaultRender: (props: IHeaderProps) => React.ReactElement;\n}\n\nexport const Header = (props: ITaskGridHeaderProps) => {\n const localizationService = useLocalizationService();\n const datasetControl = useDatasetControl();\n const styles = React.useMemo(() => getHeaderStyles(), []);\n const provider = useTaskDataProvider();\n const [editColumnsOpen, setEditColumnsOpen] = React.useState(false);\n const pcfContext = usePcfContext();\n const components = useTaskGridComponents();\n\n const createTaskFromTemplate = (templateId: string) => {\n provider.createTasksFromTemplate(templateId);\n }\n\n const getCommandBarItems = (items: ICommandBarItemProps[]): ICommandBarItemProps[] => {\n const isTemplatingEnabled = datasetControl.isTemplatingEnabled();\n const isEditColumnsEnabled = datasetControl.getParameters().EnableEditColumns?.raw;\n const isTaskAddingEnabled = datasetControl.isTaskCreatingEnabled();\n const isTaskEditingEnabled = datasetControl.isTaskEditingEnabled();\n const isTaskDeletingEnabled = datasetControl.isTaskDeletingEnabled();\n const isShowHierarchyToggleVisible = datasetControl.isShowHierarchyToggleVisible();\n const isHideInactiveTasksToggleVisible = datasetControl.isHideInactiveTasksToggleVisible();\n const selectedIds = provider.getSelectedRecordIds();\n const isLoading = provider.isLoading();\n\n return [\n ...((isTaskAddingEnabled || isTemplatingEnabled) ? [{\n key: 'new',\n text: localizationService.getLocalizedString('new'),\n disabled: isLoading,\n iconProps: { iconName: 'Add' },\n onClick: (isTaskAddingEnabled && !isTemplatingEnabled) ? () => { provider.createTask(); } : undefined,\n subMenuProps: (isTaskAddingEnabled && !isTemplatingEnabled) ? undefined : {\n items: [\n ...(isTaskAddingEnabled ? [{\n key: 'addTopLevelTask',\n disabled: isLoading,\n iconProps: { iconName: 'AddToShoppingList' },\n text: localizationService.getLocalizedString('topLevel'),\n onClick: () => { provider.createTask(); }\n }] : []),\n ...(isTemplatingEnabled ? [\n ...(isTaskAddingEnabled ? [{ key: 'divider', itemType: ContextualMenuItemType.Divider }] : []),\n ...(selectedIds.length === 1 ? [{\n key: 'templateFromTask',\n iconProps: { iconName: 'PageList' },\n text: localizationService.getLocalizedString('templateFromTask'),\n disabled: isLoading,\n onClick: () => { provider.createTemplateFromTask(selectedIds[0]); }\n }] : []),\n {\n key: 'taskFromTemplate',\n iconProps: { iconName: 'AddToShoppingList' },\n text: localizationService.getLocalizedString('taskFromTemplate'),\n disabled: isLoading,\n subMenuProps: {\n items: [{ key: 'dummy' }],\n focusZoneProps: {\n shouldInputLoseFocusOnArrowKey: () => true\n },\n onRenderMenuList: () => isLoading ? <></> : (\n <RecordSelector\n provider={datasetControl.getTemplateDataProvider()}\n onRenderRecord={(props, defaultRender) => defaultRender({\n ...props,\n iconProps: { iconName: 'AddToShoppingList' }\n })}\n onRecordSelected={createTaskFromTemplate} />\n )\n }\n }\n ] : [])\n ]\n }\n }] : []),\n ...(selectedIds.length !== 0 ? [\n ...(isTaskEditingEnabled ? [{\n key: 'edit',\n text: localizationService.getLocalizedString('bulkEdit'),\n disabled: isLoading,\n iconProps: { iconName: 'Edit' },\n onClick: () => { provider.editTasks(selectedIds); }\n }] : []),\n ...(isTaskDeletingEnabled ? [{\n key: 'delete',\n text: localizationService.getLocalizedString('deleteSelected'),\n disabled: isLoading,\n iconProps: { iconName: 'Delete' },\n onClick: async () => {\n const result = await pcfContext.navigation.openConfirmDialog({\n text: localizationService.getLocalizedString(\"confirmDialog.deleteSelectedRows.text\"),\n });\n if (result.confirmed) {\n provider.deleteTasks(selectedIds);\n }\n }\n }] : []),\n ] : []),\n ...items,\n ...(isEditColumnsEnabled ? [{\n key: 'editColumns',\n disabled: isLoading,\n text: localizationService.getLocalizedString('editColumns'),\n iconProps: { iconName: 'ColumnOptions' },\n onRender: (item) => <CommandBarButton {...item} onClick={() => setEditColumnsOpen(true)} />\n } as ICommandBarItemProps,\n ] : []),\n ...(isShowHierarchyToggleVisible || isHideInactiveTasksToggleVisible ? [{\n key: 'settings',\n id: 'taskGridSettingsButton',\n disabled: isLoading,\n text: localizationService.getLocalizedString('settings'),\n subMenuProps: {\n items: [{ key: 'dummy' }],\n onRenderMenuList: () => <SettingsCallout />\n },\n iconProps: { iconName: 'Settings' },\n }] : [])\n ];\n }\n\n return props.defaultRender({\n ...props.headerProps,\n onRenderRibbonQuickFindWrapper: (props, defaultRender) => {\n return <div className={styles.root}>\n <ViewSwitcher />\n {defaultRender({\n ...props,\n ribbonQuickFindContainerProps: {\n ...props.ribbonQuickFindContainerProps,\n className: `${props.ribbonQuickFindContainerProps.className} ${styles.ribbonQuickFindContainer}`,\n },\n onRenderRibbon: (props, defaultRender) => {\n return defaultRender({\n ...props,\n onRenderCommandBar: (props, defaultRender) => {\n return components.onRenderCommandBar({\n ...props as any,\n items: getCommandBarItems(props.items as any)\n })\n }\n })\n }\n })}\n {editColumnsOpen &&\n <EditColumns onDismiss={() => setEditColumnsOpen(false)} />\n }\n </div>\n }\n });\n}"],"names":["_jsx","_Fragment","_jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Header.js","sources":["../../../../../src/components/TaskGrid/components/header/Header.tsx"],"sourcesContent":["import { IHeaderProps } from \"../../../DatasetControl/interfaces\"\nimport { ICommandBarItemProps } from \"@talxis/react-components\";\nimport * as React from \"react\"\nimport { CommandBarButton, ContextualMenuItemType, useTheme } from \"@fluentui/react\";\nimport { getHeaderStyles } from \"./styles\";\nimport { SettingsCallout } from \"./settings-callout\";\nimport { useDatasetControl, useLocalizationService, usePcfContext, useTaskDataProvider, useTaskGridComponents } from \"../../context\";\nimport { RecordSelector } from \"../grid/record-selector\";\nimport { ViewSwitcher } from \"./view-switcher\";\nimport { EditColumns } from \"./edit-columns/EditColumns\";\n\ninterface ITaskGridHeaderProps {\n headerProps: IHeaderProps;\n defaultRender: (props: IHeaderProps) => React.ReactElement;\n}\n\nexport const Header = (props: ITaskGridHeaderProps) => {\n const localizationService = useLocalizationService();\n const datasetControl = useDatasetControl();\n const styles = React.useMemo(() => getHeaderStyles(), []);\n const provider = useTaskDataProvider();\n const [editColumnsOpen, setEditColumnsOpen] = React.useState(false);\n const pcfContext = usePcfContext();\n const components = useTaskGridComponents();\n\n const hasContent = () => {\n return datasetControl.isViewSwitcherEnabled() ||\n datasetControl.isTaskCreatingEnabled() ||\n datasetControl.isTemplatingEnabled() ||\n datasetControl.isTaskEditingEnabled() ||\n datasetControl.isTaskDeletingEnabled() ||\n datasetControl.isEditColumnsVisible() ||\n datasetControl.isShowHierarchyToggleVisible() ||\n datasetControl.isHideInactiveTasksToggleVisible();\n }\n\n const createTaskFromTemplate = (templateId: string) => {\n provider.createTasksFromTemplate(templateId);\n }\n\n const getNewSubMenuItems = (\n isTemplatingEnabled: boolean,\n isTaskAddingEnabled: boolean,\n selectedIds: string[],\n isLoading: boolean,\n ): ICommandBarItemProps[] => {\n return [\n ...(isTaskAddingEnabled ? [{\n key: 'addTopLevelTask',\n disabled: isLoading,\n iconProps: { iconName: 'AddToShoppingList' },\n text: localizationService.getLocalizedString('topLevel'),\n onClick: () => { provider.createTask(); }\n }] : []),\n ...(isTemplatingEnabled ? [\n ...(isTaskAddingEnabled ? [{ key: 'divider', itemType: ContextualMenuItemType.Divider }] : []),\n ...(selectedIds.length === 1 ? [{\n key: 'templateFromTask',\n iconProps: { iconName: 'PageList' },\n text: localizationService.getLocalizedString('templateFromTask'),\n disabled: isLoading,\n onClick: () => { provider.createTemplateFromTask(selectedIds[0]); }\n }] : []),\n ...(isTaskAddingEnabled ? [{\n key: 'taskFromTemplate',\n iconProps: { iconName: 'AddToShoppingList' },\n text: localizationService.getLocalizedString('taskFromTemplate'),\n disabled: isLoading,\n subMenuProps: {\n items: [{ key: 'dummy' }],\n focusZoneProps: {\n shouldInputLoseFocusOnArrowKey: () => true\n },\n onRenderMenuList: () => isLoading ? <></> : (\n <RecordSelector\n provider={datasetControl.getTemplateDataProvider()}\n onRenderRecord={(props, defaultRender) => defaultRender({\n ...props,\n iconProps: { iconName: 'AddToShoppingList' }\n })}\n onRecordSelected={createTaskFromTemplate} />\n )\n }\n }] : [])\n ] : [])\n ];\n }\n\n const getCommandBarItems = (items: ICommandBarItemProps[]): ICommandBarItemProps[] => {\n const isTemplatingEnabled = datasetControl.isTemplatingEnabled();\n const isEditColumnsEnabled = datasetControl.isEditColumnsVisible();\n const isTaskAddingEnabled = datasetControl.isTaskCreatingEnabled();\n const isTaskEditingEnabled = datasetControl.isTaskEditingEnabled();\n const isTaskDeletingEnabled = datasetControl.isTaskDeletingEnabled();\n const isShowHierarchyToggleVisible = datasetControl.isShowHierarchyToggleVisible();\n const isHideInactiveTasksToggleVisible = datasetControl.isHideInactiveTasksToggleVisible();\n const selectedIds = provider.getSelectedRecordIds();\n const isLoading = provider.isLoading();\n\n return [\n ...((getNewSubMenuItems(isTemplatingEnabled, isTaskAddingEnabled, selectedIds, isLoading).length > 0) ? [{\n key: 'new',\n text: localizationService.getLocalizedString('new'),\n disabled: isLoading,\n iconProps: { iconName: 'Add' },\n onClick: (isTaskAddingEnabled && !isTemplatingEnabled) ? () => { provider.createTask(); } : undefined,\n subMenuProps: (isTaskAddingEnabled && !isTemplatingEnabled) ? undefined : { items: getNewSubMenuItems(isTemplatingEnabled, isTaskAddingEnabled, selectedIds, isLoading) }\n }] : []),\n ...(selectedIds.length !== 0 ? [\n ...(isTaskEditingEnabled ? [{\n key: 'edit',\n text: localizationService.getLocalizedString('bulkEdit'),\n disabled: isLoading,\n iconProps: { iconName: 'Edit' },\n onClick: () => { provider.openTaskItems(selectedIds); }\n }] : []),\n ...(isTaskDeletingEnabled ? [{\n key: 'delete',\n text: localizationService.getLocalizedString('deleteSelected'),\n disabled: isLoading,\n iconProps: { iconName: 'Delete' },\n onClick: async () => {\n const result = await pcfContext.navigation.openConfirmDialog({\n text: localizationService.getLocalizedString(\"confirmDialog.deleteSelectedRows.text\"),\n });\n if (result.confirmed) {\n provider.deleteTasks(selectedIds);\n }\n }\n }] : []),\n ] : []),\n ...items,\n ...(isEditColumnsEnabled ? [{\n key: 'editColumns',\n disabled: isLoading,\n text: localizationService.getLocalizedString('editColumns'),\n iconProps: { iconName: 'ColumnOptions' },\n onRender: (item) => <CommandBarButton {...item} onClick={() => setEditColumnsOpen(true)} />\n } as ICommandBarItemProps,\n ] : []),\n ...(isShowHierarchyToggleVisible || isHideInactiveTasksToggleVisible ? [{\n key: 'settings',\n id: 'taskGridSettingsButton',\n disabled: isLoading,\n text: localizationService.getLocalizedString('settings'),\n subMenuProps: {\n items: [{ key: 'dummy' }],\n onRenderMenuList: () => <SettingsCallout />\n },\n iconProps: { iconName: 'Settings' },\n }] : [])\n ];\n }\n\n if (!hasContent()) return <></>\n\n return props.defaultRender({\n ...props.headerProps,\n onRenderRibbonQuickFindWrapper: (props, defaultRender) => {\n return <div className={styles.root}>\n {datasetControl.isViewSwitcherEnabled() &&\n <ViewSwitcher />\n }\n {defaultRender({\n ...props,\n ribbonQuickFindContainerProps: {\n ...props.ribbonQuickFindContainerProps,\n className: `${props.ribbonQuickFindContainerProps.className} ${styles.ribbonQuickFindContainer}`,\n },\n onRenderRibbon: (props, defaultRender) => {\n return defaultRender({\n ...props,\n onRenderCommandBar: (props, defaultRender) => {\n return components.onRenderCommandBar({\n ...props as any,\n items: getCommandBarItems(props.items as any)\n })\n }\n })\n }\n })}\n {editColumnsOpen &&\n <EditColumns onDismiss={() => setEditColumnsOpen(false)} />\n }\n </div>\n }\n });\n}"],"names":["_jsx","_Fragment","_jsxs"],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { IColumn, IRawRecord,
|
|
1
|
+
import { IColumn, IRawRecord, IRecordSaveOperationResult } from "@talxis/client-libraries";
|
|
2
2
|
import { ICustomColumnsStrategy } from "../../providers/custom-columns/CustomColumnsDataProvider";
|
|
3
3
|
export declare const ATTRIBUTE_DEFINITION_ENTITY_NAME = "talxis_attributedefinition";
|
|
4
4
|
export declare const ATTRIBUTE_VALUE_ENTITY_NAME = "talxis_attributevalue";
|
|
5
|
-
export declare const CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME = "talxis_task_talxis_attributevalue_regardingobjectid";
|
|
6
5
|
/** Constructor parameters for {@link DataverseCustomColumnsStrategy}. */
|
|
7
6
|
interface IDataverseCustomColumnsStrategyParameters {
|
|
8
7
|
/** Logical name of the entity for which dynamic attribute definitions are managed (e.g. `"task"`). */
|
|
@@ -15,17 +14,21 @@ interface IDataverseCustomColumnsStrategyParameters {
|
|
|
15
14
|
* custom column values through the `talxis_attributevalue` entity.
|
|
16
15
|
*/
|
|
17
16
|
export interface IDataverseCustomColumnsStrategy extends ICustomColumnsStrategy {
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
getNavigationPropertyName: () => string;
|
|
18
|
+
getAttributeDefinitionIdFromColumnName: (columnName: string) => string;
|
|
19
|
+
/** Returns the `$expand` query parameter needed to fetch the related `talxis_attributevalue` records. */
|
|
20
|
+
getExpand: () => string;
|
|
20
21
|
/** Reads and returns the typed value for `column` from the raw attribute-value payload embedded in `rawRecord`. */
|
|
21
22
|
getValueFromRawRecord: (recordId: string, rawRecord: IRawRecord, column: IColumn) => any;
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
24
|
-
*
|
|
25
|
+
* Work-in-progress {@link ICustomColumnsStrategy} implementation for the Dataverse / Talxis platform.
|
|
25
26
|
*
|
|
26
27
|
* Dynamic (user-defined) columns are modelled as `talxis_attributedefinition` records.
|
|
27
28
|
* Column values are stored as `talxis_attributevalue` records linked to the task record.
|
|
28
29
|
*
|
|
30
|
+
* WARNING: This strategy is still WIP and should not yet be used in production.
|
|
31
|
+
*
|
|
29
32
|
* Pass an instance to the `onCreateCustomColumnsStrategy` hook of your descriptor to enable the
|
|
30
33
|
* custom-columns feature in the TaskGrid.
|
|
31
34
|
*/
|
|
@@ -40,12 +43,15 @@ export declare class DataverseCustomColumnsStrategy implements IDataverseCustomC
|
|
|
40
43
|
onRefresh(): Promise<IColumn[]>;
|
|
41
44
|
onGetRawRecords(): Promise<IRawRecord[]>;
|
|
42
45
|
onGetRawRecord(recordId: string): Promise<IRawRecord>;
|
|
46
|
+
getAttributeDefinitionIdFromColumnName(columnName: string): string;
|
|
47
|
+
getNavigationPropertyName(): string;
|
|
43
48
|
/** Returns the currently cached attribute definitions as `IColumn[]` without a network fetch. */
|
|
44
49
|
onGetColumns(): IColumn[];
|
|
45
50
|
/** Deletes the `talxis_attributedefinition` record backing `columnName`, then refreshes the column list. Returns the deleted column name. */
|
|
46
51
|
onDeleteColumn(columnName: string): Promise<string | null>;
|
|
47
52
|
/** Opens the `talxis_attributedefinition` entity record form in a side dialog. Returns the new column name (with the custom-column suffix) when the record is saved, or `null` when the dialog is dismissed. */
|
|
48
53
|
onCreateColumn(): Promise<string | null>;
|
|
54
|
+
getExpand(): string;
|
|
49
55
|
/** Opens the existing `talxis_attributedefinition` record in a side dialog for editing, then refreshes columns. Returns `columnName` unchanged. */
|
|
50
56
|
onUpdateColumn(columnName: string): Promise<string | null>;
|
|
51
57
|
/**
|
|
@@ -53,7 +59,7 @@ export declare class DataverseCustomColumnsStrategy implements IDataverseCustomC
|
|
|
53
59
|
* Creates a new record when no value exists yet; updates the existing one otherwise.
|
|
54
60
|
* @returns A save-operation result indicating success or the encountered error.
|
|
55
61
|
*/
|
|
56
|
-
|
|
62
|
+
onSaveValue(regardingRecordId: string, column: IColumn, value: any): Promise<IRecordSaveOperationResult>;
|
|
57
63
|
/**
|
|
58
64
|
* Resolves the typed value for `column` from the embedded `talxis_attributevalue` collection inside `rawRecord`.
|
|
59
65
|
* Also caches the `talxis_attributevalueid` for subsequent upsert calls in {@link saveValueToCustomColumn}.
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DatasetConstants, Attribute, Sanitizer, DataTypes } from '@talxis/client-libraries';
|
|
2
2
|
import { DynamicEntityDefinition } from '@talxis/client-metadata';
|
|
3
3
|
|
|
4
4
|
const ATTRIBUTE_DEFINITION_ENTITY_NAME = 'talxis_attributedefinition';
|
|
5
5
|
const ATTRIBUTE_VALUE_ENTITY_NAME = 'talxis_attributevalue';
|
|
6
6
|
const CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME = 'talxis_task_talxis_attributevalue_regardingobjectid';
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* Work-in-progress {@link ICustomColumnsStrategy} implementation for the Dataverse / Talxis platform.
|
|
9
9
|
*
|
|
10
10
|
* Dynamic (user-defined) columns are modelled as `talxis_attributedefinition` records.
|
|
11
11
|
* Column values are stored as `talxis_attributevalue` records linked to the task record.
|
|
12
12
|
*
|
|
13
|
+
* WARNING: This strategy is still WIP and should not yet be used in production.
|
|
14
|
+
*
|
|
13
15
|
* Pass an instance to the `onCreateCustomColumnsStrategy` hook of your descriptor to enable the
|
|
14
16
|
* custom-columns feature in the TaskGrid.
|
|
15
17
|
*/
|
|
@@ -34,6 +36,12 @@ class DataverseCustomColumnsStrategy {
|
|
|
34
36
|
async onGetRawRecord(recordId) {
|
|
35
37
|
throw new Error('Method not implemented.');
|
|
36
38
|
}
|
|
39
|
+
getAttributeDefinitionIdFromColumnName(columnName) {
|
|
40
|
+
return columnName.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];
|
|
41
|
+
}
|
|
42
|
+
getNavigationPropertyName() {
|
|
43
|
+
return CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME;
|
|
44
|
+
}
|
|
37
45
|
/** Returns the currently cached attribute definitions as `IColumn[]` without a network fetch. */
|
|
38
46
|
onGetColumns() {
|
|
39
47
|
return this._attributes.map(attr => {
|
|
@@ -76,6 +84,11 @@ class DataverseCustomColumnsStrategy {
|
|
|
76
84
|
else
|
|
77
85
|
return null;
|
|
78
86
|
}
|
|
87
|
+
getExpand() {
|
|
88
|
+
return `${CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME}(
|
|
89
|
+
$select=talxis_serialized_value,talxis_text_value,talxis_int_value,talxis_decimal_value,_talxis_choice_value_value,talxis_bit_value,talxis_date_value,talxis_datetime_userlocal_value,talxis_datetime_tzi_value,_talxis_attributedefinitionid_value
|
|
90
|
+
)`;
|
|
91
|
+
}
|
|
79
92
|
/** Opens the existing `talxis_attributedefinition` record in a side dialog for editing, then refreshes columns. Returns `columnName` unchanged. */
|
|
80
93
|
async onUpdateColumn(columnName) {
|
|
81
94
|
const attributeDefinitionId = columnName.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];
|
|
@@ -94,31 +107,21 @@ class DataverseCustomColumnsStrategy {
|
|
|
94
107
|
* Creates a new record when no value exists yet; updates the existing one otherwise.
|
|
95
108
|
* @returns A save-operation result indicating success or the encountered error.
|
|
96
109
|
*/
|
|
97
|
-
async
|
|
98
|
-
const dirtyField = record.getFields().find(field => field.isDirty());
|
|
99
|
-
const column = dirtyField?.getColumn();
|
|
100
|
-
if (!column?.name.endsWith(DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX)) {
|
|
101
|
-
return {
|
|
102
|
-
success: true,
|
|
103
|
-
fields: [],
|
|
104
|
-
recordId: record.getRecordId(),
|
|
105
|
-
};
|
|
106
|
-
}
|
|
110
|
+
async onSaveValue(regardingRecordId, column, value) {
|
|
107
111
|
const attributeDefinitionId = column.name.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];
|
|
108
|
-
const
|
|
109
|
-
const attributeValueId = this._attributeIdsMap.get(`${regardingObjectId}_${attributeDefinitionId}`);
|
|
112
|
+
const attributeValueId = this._attributeIdsMap.get(`${regardingRecordId}_${attributeDefinitionId}`);
|
|
110
113
|
const payload = {
|
|
111
|
-
[this._getFieldNameForColumn(column)]: this._getValueForPayload(
|
|
112
|
-
'talxis_serialized_value': this._getSerializedValue(
|
|
114
|
+
[this._getFieldNameForColumn(column)]: this._getValueForPayload(value, column),
|
|
115
|
+
'talxis_serialized_value': this._getSerializedValue(value),
|
|
113
116
|
};
|
|
114
117
|
try {
|
|
115
118
|
if (!attributeValueId) {
|
|
116
119
|
const result = await window.Xrm.WebApi.createRecord(ATTRIBUTE_VALUE_ENTITY_NAME, {
|
|
117
120
|
...payload,
|
|
118
121
|
'talxis_attributedefinitionid@odata.bind': `/talxis_attributedefinitions(${attributeDefinitionId})`,
|
|
119
|
-
'talxis_regardingobjectid_task@odata.bind': `/tasks(${
|
|
122
|
+
'talxis_regardingobjectid_task@odata.bind': `/tasks(${regardingRecordId})`,
|
|
120
123
|
});
|
|
121
|
-
this._attributeIdsMap.set(`${
|
|
124
|
+
this._attributeIdsMap.set(`${regardingRecordId}_${attributeDefinitionId}`, result.id);
|
|
122
125
|
return {
|
|
123
126
|
success: true,
|
|
124
127
|
recordId: result.id,
|
|
@@ -165,7 +168,7 @@ class DataverseCustomColumnsStrategy {
|
|
|
165
168
|
const option = optionSet.find((option) => option.OptionId == attribute['_talxis_choice_value_value']);
|
|
166
169
|
return option ? option.Value : null;
|
|
167
170
|
}
|
|
168
|
-
return
|
|
171
|
+
return attribute[fieldName];
|
|
169
172
|
}
|
|
170
173
|
_getAttributeFromRawRecord(recordId, rawRecord, column) {
|
|
171
174
|
const attributes = rawRecord[CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME] ?? [];
|
|
@@ -255,5 +258,5 @@ class DataverseCustomColumnsStrategy {
|
|
|
255
258
|
}
|
|
256
259
|
}
|
|
257
260
|
|
|
258
|
-
export { ATTRIBUTE_DEFINITION_ENTITY_NAME, ATTRIBUTE_VALUE_ENTITY_NAME,
|
|
261
|
+
export { ATTRIBUTE_DEFINITION_ENTITY_NAME, ATTRIBUTE_VALUE_ENTITY_NAME, DataverseCustomColumnsStrategy };
|
|
259
262
|
//# sourceMappingURL=DataverseCustomColumnsStrategy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataverseCustomColumnsStrategy.js","sources":["../../../../../src/components/TaskGrid/extensions/dataverse/DataverseCustomColumnsStrategy.ts"],"sourcesContent":["import { Attribute, DatasetConstants, DataType, DataTypes, FieldValue, IColumn, IEventEmitter, IRawRecord, IRecord, IRecordSaveOperationResult, Sanitizer } from \"@talxis/client-libraries\";\nimport { DynamicEntityDefinition } from \"@talxis/client-metadata\";\nimport { Attribute as IAttribute } from '@talxis/client-metadata/dist/interfaces/entity/IEntityDefinition';\nimport { ICustomColumnsStrategy } from \"../../providers/custom-columns/CustomColumnsDataProvider\";\n\nexport const ATTRIBUTE_DEFINITION_ENTITY_NAME = 'talxis_attributedefinition';\nexport const ATTRIBUTE_VALUE_ENTITY_NAME = 'talxis_attributevalue';\nexport const CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME = 'talxis_task_talxis_attributevalue_regardingobjectid';\n\n/** Constructor parameters for {@link DataverseCustomColumnsStrategy}. */\ninterface IDataverseCustomColumnsStrategyParameters {\n /** Logical name of the entity for which dynamic attribute definitions are managed (e.g. `\"task\"`). */\n entityName: string;\n /** Optional record ID used to scope attribute definitions to a specific parent record. */\n recordId?: string;\n}\n\n/**\n * Extends {@link ICustomColumnsStrategy} with Dataverse-specific accessors needed to persist\n * custom column values through the `talxis_attributevalue` entity.\n */\nexport interface IDataverseCustomColumnsStrategy extends ICustomColumnsStrategy {\n /** Saves the dirty custom-column value on `record` to the appropriate `talxis_attributevalue` record, creating it if it doesn't exist yet. */\n saveValueToCustomColumn: (record: IRecord) => Promise<IRecordSaveOperationResult>;\n /** Reads and returns the typed value for `column` from the raw attribute-value payload embedded in `rawRecord`. */\n getValueFromRawRecord: (recordId: string, rawRecord: IRawRecord, column: IColumn) => any;\n}\n\n/**\n * Ready-to-use {@link ICustomColumnsStrategy} implementation for the Dataverse / Talxis platform.\n *\n * Dynamic (user-defined) columns are modelled as `talxis_attributedefinition` records.\n * Column values are stored as `talxis_attributevalue` records linked to the task record.\n *\n * Pass an instance to the `onCreateCustomColumnsStrategy` hook of your descriptor to enable the\n * custom-columns feature in the TaskGrid.\n */\nexport class DataverseCustomColumnsStrategy implements IDataverseCustomColumnsStrategy {\n private _entityName: string;\n private _recordId?: string;\n private _attributes: IAttribute[] = [];\n private _attributeIdsMap: Map<string, string> = new Map();\n\n /** @param parameters — see {@link IDataverseCustomColumnsStrategyParameters}. */\n constructor(parameters: IDataverseCustomColumnsStrategyParameters) {\n this._entityName = parameters.entityName;\n this._recordId = parameters.recordId;\n }\n\n /** Fetches the latest `talxis_attributedefinition` records for the entity/record scope and returns them as `IColumn[]`. */\n public async onRefresh(): Promise<IColumn[]> {\n const entityDefinition = await DynamicEntityDefinition.fetchForRecord(this._entityName, this._recordId);\n this._attributes = entityDefinition.Attributes;\n return this.onGetColumns();\n }\n\n //get all attribute values based given the \n public async onGetRawRecords(): Promise<IRawRecord[]> {\n return [];\n }\n\n public async onGetRawRecord(recordId: string): Promise<IRawRecord> {\n throw new Error('Method not implemented.');\n }\n\n /** Returns the currently cached attribute definitions as `IColumn[]` without a network fetch. */\n public onGetColumns(): IColumn[] {\n return this._attributes.map(attr => {\n const dataType = Attribute.GetDataTypeFromMetadata({ ...attr as any, attributeDescriptor: attr });\n return {\n name: `${attr.LogicalName}${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`,\n isVirtual: true,\n displayName: attr.DisplayName,\n dataType: dataType,\n visualSizeFactor: 200,\n metadata: this._getMetadataForDataType(dataType, attr) as any\n }\n })\n }\n\n /** Deletes the `talxis_attributedefinition` record backing `columnName`, then refreshes the column list. Returns the deleted column name. */\n public async onDeleteColumn(columnName: string): Promise<string | null> {\n const id = columnName.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];\n await window.Xrm.WebApi.deleteRecord(ATTRIBUTE_DEFINITION_ENTITY_NAME, id);\n await this.onRefresh();\n return columnName\n }\n\n /** Opens the `talxis_attributedefinition` entity record form in a side dialog. Returns the new column name (with the custom-column suffix) when the record is saved, or `null` when the dialog is dismissed. */\n public async onCreateColumn(): Promise<string | null> {\n const { savedEntityReference } = await window.Xrm.Navigation.navigateTo({\n entityName: ATTRIBUTE_DEFINITION_ENTITY_NAME,\n pageType: 'entityrecord',\n data: {\n 'talxis_entityname': this._entityName,\n 'talxis_recordid': this._recordId,\n }\n }, {\n target: 2,\n });\n if (savedEntityReference && savedEntityReference.length > 0) {\n const entityReference = savedEntityReference[0];\n const id = Sanitizer.Guid.removeGuidBrackets(entityReference.id);\n await this.onRefresh();\n return `${id}${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`;\n }\n else return null\n }\n\n /** Opens the existing `talxis_attributedefinition` record in a side dialog for editing, then refreshes columns. Returns `columnName` unchanged. */\n public async onUpdateColumn(columnName: string): Promise<string | null> {\n const attributeDefinitionId = columnName.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];\n await window.Xrm.Navigation.navigateTo({\n entityName: ATTRIBUTE_DEFINITION_ENTITY_NAME,\n pageType: 'entityrecord',\n entityId: attributeDefinitionId\n }, {\n target: 2,\n });\n await this.onRefresh();\n return columnName;\n }\n\n /**\n * Upserts the `talxis_attributevalue` record for the dirty custom-column field on `record`.\n * Creates a new record when no value exists yet; updates the existing one otherwise.\n * @returns A save-operation result indicating success or the encountered error.\n */\n public async saveValueToCustomColumn(record: IRecord): Promise<IRecordSaveOperationResult> {\n const dirtyField = record.getFields().find(field => field.isDirty());\n const column = dirtyField?.getColumn();\n\n if (!column?.name.endsWith(DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX)) {\n return {\n success: true,\n fields: [],\n recordId: record.getRecordId(),\n }\n }\n const attributeDefinitionId = column.name.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];\n const regardingObjectId = record.getRecordId();\n const attributeValueId = this._attributeIdsMap.get(`${regardingObjectId}_${attributeDefinitionId}`);\n const payload = {\n [this._getFieldNameForColumn(column)]: this._getValueForPayload(record.getValue(column.name), column),\n 'talxis_serialized_value': this._getSerializedValue(record.getValue(column.name)),\n }\n\n try {\n\n if (!attributeValueId) {\n const result = await window.Xrm.WebApi.createRecord(ATTRIBUTE_VALUE_ENTITY_NAME, {\n ...payload,\n 'talxis_attributedefinitionid@odata.bind': `/talxis_attributedefinitions(${attributeDefinitionId})`,\n 'talxis_regardingobjectid_task@odata.bind': `/tasks(${regardingObjectId})`,\n });\n this._attributeIdsMap.set(`${regardingObjectId}_${attributeDefinitionId}`, result.id);\n return {\n success: true,\n recordId: result.id,\n fields: [column.name]\n }\n }\n\n else {\n await window.Xrm.WebApi.updateRecord(ATTRIBUTE_VALUE_ENTITY_NAME, attributeValueId, {\n ...payload\n });\n return {\n success: true,\n recordId: attributeValueId,\n fields: [column.name]\n }\n }\n }\n catch (err: any) {\n return {\n success: false,\n recordId: attributeValueId ?? '',\n fields: [column.name],\n errors: [{\n message: err.message,\n fieldName: column.name\n }]\n }\n }\n }\n\n /**\n * Resolves the typed value for `column` from the embedded `talxis_attributevalue` collection inside `rawRecord`.\n * Also caches the `talxis_attributevalueid` for subsequent upsert calls in {@link saveValueToCustomColumn}.\n * @returns The typed column value, or `null` when no matching attribute value record is found.\n */\n public getValueFromRawRecord(recordId: string, rawRecord: IRawRecord, column: IColumn) {\n const attribute = this._getAttributeFromRawRecord(recordId, rawRecord, column);\n if (attribute == null) {\n return null;\n }\n const fieldName = this._getFieldNameForColumn(column);\n\n if (column.dataType === DataTypes.OptionSet) {\n const metadata = column.metadata as any;\n const optionSet = metadata.OptionSet as any;\n const option = optionSet.find((option: any) => option.OptionId == attribute['_talxis_choice_value_value']);\n return option ? option.Value : null;\n }\n return new FieldValue(attribute[fieldName], column.dataType).getValue();\n }\n\n private _getAttributeFromRawRecord(recordId: string, rawRecord: IRawRecord, column: IColumn) {\n const attributes: any[] = rawRecord[CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME] ?? [];\n if (attributes.length === 0) {\n return null;\n }\n const attributeDefinitionId = column.name.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];\n const attribute = attributes.find(attr => attr['_talxis_attributedefinitionid_value'] === attributeDefinitionId);\n if (attribute) {\n this._attributeIdsMap.set(`${recordId}_${attributeDefinitionId}`, attribute['talxis_attributevalueid']);\n }\n return attribute;\n }\n\n private _getFieldNameForColumn(column: IColumn): string {\n switch (column.dataType) {\n case DataTypes.WholeNone:\n case DataTypes.WholeDuration:\n case DataTypes.WholeLanguage:\n case DataTypes.WholeTimeZone:\n return 'talxis_int_value';\n case DataTypes.Decimal:\n return 'talxis_decimal_value';\n case DataTypes.OptionSet:\n return 'talxis_choice_value@odata.bind';\n case DataTypes.TwoOptions:\n return 'talxis_bit_value';\n case DataTypes.DateAndTimeDateOnly:\n return 'talxis_date_value';\n case DataTypes.DateAndTimeDateAndTime: {\n return column.metadata?.Behavior === 3 ? 'talxis_datetime_tzi_value' : 'talxis_datetime_userlocal_value';\n }\n default:\n return 'talxis_text_value';\n }\n }\n\n private _getValueForPayload(value: any, column: IColumn): any {\n switch (column.dataType) {\n case 'TwoOptions': {\n return value == '1' ? true : false;\n }\n case 'OptionSet': {\n const attribute: IAttribute = column.metadata as any;\n const optionSet = attribute.OptionSet as any;\n const optionId = optionSet.find((option: any) => option.Value == value)?.OptionId;\n if (optionId) {\n return `/talxis_attributeoptions(${optionId})`;\n }\n return null;\n }\n case 'DateAndTime.DateAndTime':\n case 'DateAndTime.DateOnly': {\n return value;\n }\n default: {\n return value;\n }\n }\n }\n\n //this is wrong, but it has been developed as part of dynamic attributes like this\n private _getSerializedValue(value: any) {\n return JSON.stringify({\n raw: value,\n error: false,\n errorMessage: ''\n })\n }\n\n private _getMetadataForDataType(dataType: DataType, attr: IAttribute) {\n switch (dataType) {\n case DataTypes.OptionSet:\n case DataTypes.TwoOptions: {\n return {\n ...attr,\n OptionSet: attr.OptionSet?.Options.map(option => {\n return {\n Label: option.Label,\n Value: option.Value,\n Color: option.Color,\n OptionId: option.talxis_OptionId\n }\n })\n }\n }\n default: {\n return attr;\n }\n }\n }\n}"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataverseCustomColumnsStrategy.js","sources":["../../../../../src/components/TaskGrid/extensions/dataverse/DataverseCustomColumnsStrategy.ts"],"sourcesContent":["import { Attribute, DatasetConstants, DataType, DataTypes, FieldValue, IColumn, IEventEmitter, IRawRecord, IRecord, IRecordSaveOperationResult, Sanitizer } from \"@talxis/client-libraries\";\nimport { DynamicEntityDefinition } from \"@talxis/client-metadata\";\nimport { Attribute as IAttribute } from '@talxis/client-metadata/dist/interfaces/entity/IEntityDefinition';\nimport { ICustomColumnsStrategy } from \"../../providers/custom-columns/CustomColumnsDataProvider\";\n\nexport const ATTRIBUTE_DEFINITION_ENTITY_NAME = 'talxis_attributedefinition';\nexport const ATTRIBUTE_VALUE_ENTITY_NAME = 'talxis_attributevalue';\nconst CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME = 'talxis_task_talxis_attributevalue_regardingobjectid';\n\n/** Constructor parameters for {@link DataverseCustomColumnsStrategy}. */\ninterface IDataverseCustomColumnsStrategyParameters {\n /** Logical name of the entity for which dynamic attribute definitions are managed (e.g. `\"task\"`). */\n entityName: string;\n /** Optional record ID used to scope attribute definitions to a specific parent record. */\n recordId?: string;\n}\n\n/**\n * Extends {@link ICustomColumnsStrategy} with Dataverse-specific accessors needed to persist\n * custom column values through the `talxis_attributevalue` entity.\n */\nexport interface IDataverseCustomColumnsStrategy extends ICustomColumnsStrategy {\n getNavigationPropertyName: () => string;\n getAttributeDefinitionIdFromColumnName: (columnName: string) => string;\n /** Returns the `$expand` query parameter needed to fetch the related `talxis_attributevalue` records. */\n getExpand: () => string;\n /** Reads and returns the typed value for `column` from the raw attribute-value payload embedded in `rawRecord`. */\n getValueFromRawRecord: (recordId: string, rawRecord: IRawRecord, column: IColumn) => any;\n}\n\n/**\n * Work-in-progress {@link ICustomColumnsStrategy} implementation for the Dataverse / Talxis platform.\n *\n * Dynamic (user-defined) columns are modelled as `talxis_attributedefinition` records.\n * Column values are stored as `talxis_attributevalue` records linked to the task record.\n *\n * WARNING: This strategy is still WIP and should not yet be used in production.\n *\n * Pass an instance to the `onCreateCustomColumnsStrategy` hook of your descriptor to enable the\n * custom-columns feature in the TaskGrid.\n */\nexport class DataverseCustomColumnsStrategy implements IDataverseCustomColumnsStrategy {\n private _entityName: string;\n private _recordId?: string;\n private _attributes: IAttribute[] = [];\n private _attributeIdsMap: Map<string, string> = new Map();\n\n /** @param parameters — see {@link IDataverseCustomColumnsStrategyParameters}. */\n constructor(parameters: IDataverseCustomColumnsStrategyParameters) {\n this._entityName = parameters.entityName;\n this._recordId = parameters.recordId;\n }\n\n /** Fetches the latest `talxis_attributedefinition` records for the entity/record scope and returns them as `IColumn[]`. */\n public async onRefresh(): Promise<IColumn[]> {\n const entityDefinition = await DynamicEntityDefinition.fetchForRecord(this._entityName, this._recordId);\n this._attributes = entityDefinition.Attributes;\n return this.onGetColumns();\n }\n\n //get all attribute values based given the \n public async onGetRawRecords(): Promise<IRawRecord[]> {\n return [];\n }\n\n public async onGetRawRecord(recordId: string): Promise<IRawRecord> {\n throw new Error('Method not implemented.');\n }\n\n public getAttributeDefinitionIdFromColumnName(columnName: string): string {\n return columnName.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];\n }\n\n public getNavigationPropertyName(): string {\n return CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME;\n }\n\n /** Returns the currently cached attribute definitions as `IColumn[]` without a network fetch. */\n public onGetColumns(): IColumn[] {\n return this._attributes.map(attr => {\n const dataType = Attribute.GetDataTypeFromMetadata({ ...attr as any, attributeDescriptor: attr });\n return {\n name: `${attr.LogicalName}${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`,\n isVirtual: true,\n displayName: attr.DisplayName,\n dataType: dataType,\n visualSizeFactor: 200,\n metadata: this._getMetadataForDataType(dataType, attr) as any\n }\n })\n }\n\n /** Deletes the `talxis_attributedefinition` record backing `columnName`, then refreshes the column list. Returns the deleted column name. */\n public async onDeleteColumn(columnName: string): Promise<string | null> {\n const id = columnName.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];\n await window.Xrm.WebApi.deleteRecord(ATTRIBUTE_DEFINITION_ENTITY_NAME, id);\n await this.onRefresh();\n return columnName\n }\n\n /** Opens the `talxis_attributedefinition` entity record form in a side dialog. Returns the new column name (with the custom-column suffix) when the record is saved, or `null` when the dialog is dismissed. */\n public async onCreateColumn(): Promise<string | null> {\n const { savedEntityReference } = await window.Xrm.Navigation.navigateTo({\n entityName: ATTRIBUTE_DEFINITION_ENTITY_NAME,\n pageType: 'entityrecord',\n data: {\n 'talxis_entityname': this._entityName,\n 'talxis_recordid': this._recordId,\n }\n }, {\n target: 2,\n });\n if (savedEntityReference && savedEntityReference.length > 0) {\n const entityReference = savedEntityReference[0];\n const id = Sanitizer.Guid.removeGuidBrackets(entityReference.id);\n await this.onRefresh();\n return `${id}${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`;\n }\n else return null\n }\n\n public getExpand(): string {\n return `${CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME}(\n $select=talxis_serialized_value,talxis_text_value,talxis_int_value,talxis_decimal_value,_talxis_choice_value_value,talxis_bit_value,talxis_date_value,talxis_datetime_userlocal_value,talxis_datetime_tzi_value,_talxis_attributedefinitionid_value\n )`\n }\n\n /** Opens the existing `talxis_attributedefinition` record in a side dialog for editing, then refreshes columns. Returns `columnName` unchanged. */\n public async onUpdateColumn(columnName: string): Promise<string | null> {\n const attributeDefinitionId = columnName.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];\n await window.Xrm.Navigation.navigateTo({\n entityName: ATTRIBUTE_DEFINITION_ENTITY_NAME,\n pageType: 'entityrecord',\n entityId: attributeDefinitionId\n }, {\n target: 2,\n });\n await this.onRefresh();\n return columnName;\n }\n\n /**\n * Upserts the `talxis_attributevalue` record for the dirty custom-column field on `record`.\n * Creates a new record when no value exists yet; updates the existing one otherwise.\n * @returns A save-operation result indicating success or the encountered error.\n */\n public async onSaveValue(regardingRecordId: string, column: IColumn, value: any): Promise<IRecordSaveOperationResult> {\n const attributeDefinitionId = column.name.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];\n const attributeValueId = this._attributeIdsMap.get(`${regardingRecordId}_${attributeDefinitionId}`);\n const payload = {\n [this._getFieldNameForColumn(column)]: this._getValueForPayload(value, column),\n 'talxis_serialized_value': this._getSerializedValue(value),\n }\n\n try {\n\n if (!attributeValueId) {\n const result = await window.Xrm.WebApi.createRecord(ATTRIBUTE_VALUE_ENTITY_NAME, {\n ...payload,\n 'talxis_attributedefinitionid@odata.bind': `/talxis_attributedefinitions(${attributeDefinitionId})`,\n 'talxis_regardingobjectid_task@odata.bind': `/tasks(${regardingRecordId})`,\n });\n this._attributeIdsMap.set(`${regardingRecordId}_${attributeDefinitionId}`, result.id);\n return {\n success: true,\n recordId: result.id,\n fields: [column.name]\n }\n }\n\n else {\n await window.Xrm.WebApi.updateRecord(ATTRIBUTE_VALUE_ENTITY_NAME, attributeValueId, {\n ...payload\n });\n return {\n success: true,\n recordId: attributeValueId,\n fields: [column.name]\n }\n }\n }\n catch (err: any) {\n return {\n success: false,\n recordId: attributeValueId ?? '',\n fields: [column.name],\n errors: [{\n message: err.message,\n fieldName: column.name\n }]\n }\n }\n }\n\n /**\n * Resolves the typed value for `column` from the embedded `talxis_attributevalue` collection inside `rawRecord`.\n * Also caches the `talxis_attributevalueid` for subsequent upsert calls in {@link saveValueToCustomColumn}.\n * @returns The typed column value, or `null` when no matching attribute value record is found.\n */\n public getValueFromRawRecord(recordId: string, rawRecord: IRawRecord, column: IColumn) {\n const attribute = this._getAttributeFromRawRecord(recordId, rawRecord, column);\n if (attribute == null) {\n return null;\n }\n const fieldName = this._getFieldNameForColumn(column);\n\n if (column.dataType === DataTypes.OptionSet) {\n const metadata = column.metadata as any;\n const optionSet = metadata.OptionSet as any;\n const option = optionSet.find((option: any) => option.OptionId == attribute['_talxis_choice_value_value']);\n return option ? option.Value : null;\n }\n return attribute[fieldName];\n }\n\n private _getAttributeFromRawRecord(recordId: string, rawRecord: IRawRecord, column: IColumn) {\n const attributes: any[] = rawRecord[CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME] ?? [];\n if (attributes.length === 0) {\n return null;\n }\n const attributeDefinitionId = column.name.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];\n const attribute = attributes.find(attr => attr['_talxis_attributedefinitionid_value'] === attributeDefinitionId);\n if (attribute) {\n this._attributeIdsMap.set(`${recordId}_${attributeDefinitionId}`, attribute['talxis_attributevalueid']);\n }\n return attribute;\n }\n\n private _getFieldNameForColumn(column: IColumn): string {\n switch (column.dataType) {\n case DataTypes.WholeNone:\n case DataTypes.WholeDuration:\n case DataTypes.WholeLanguage:\n case DataTypes.WholeTimeZone:\n return 'talxis_int_value';\n case DataTypes.Decimal:\n return 'talxis_decimal_value';\n case DataTypes.OptionSet:\n return 'talxis_choice_value@odata.bind';\n case DataTypes.TwoOptions:\n return 'talxis_bit_value';\n case DataTypes.DateAndTimeDateOnly:\n return 'talxis_date_value';\n case DataTypes.DateAndTimeDateAndTime: {\n return column.metadata?.Behavior === 3 ? 'talxis_datetime_tzi_value' : 'talxis_datetime_userlocal_value';\n }\n default:\n return 'talxis_text_value';\n }\n }\n\n private _getValueForPayload(value: any, column: IColumn): any {\n switch (column.dataType) {\n case 'TwoOptions': {\n return value == '1' ? true : false;\n }\n case 'OptionSet': {\n const attribute: IAttribute = column.metadata as any;\n const optionSet = attribute.OptionSet as any;\n const optionId = optionSet.find((option: any) => option.Value == value)?.OptionId;\n if (optionId) {\n return `/talxis_attributeoptions(${optionId})`;\n }\n return null;\n }\n case 'DateAndTime.DateAndTime':\n case 'DateAndTime.DateOnly': {\n return value;\n }\n default: {\n return value;\n }\n }\n }\n\n //this is wrong, but it has been developed as part of dynamic attributes like this\n private _getSerializedValue(value: any) {\n return JSON.stringify({\n raw: value,\n error: false,\n errorMessage: ''\n })\n }\n\n private _getMetadataForDataType(dataType: DataType, attr: IAttribute) {\n switch (dataType) {\n case DataTypes.OptionSet:\n case DataTypes.TwoOptions: {\n return {\n ...attr,\n OptionSet: attr.OptionSet?.Options.map(option => {\n return {\n Label: option.Label,\n Value: option.Value,\n Color: option.Color,\n OptionId: option.talxis_OptionId\n }\n })\n }\n }\n default: {\n return attr;\n }\n }\n }\n}"],"names":[],"mappings":";;;AAKO,MAAM,gCAAgC,GAAG,6BAA6B;AACtE,MAAM,2BAA2B,GAAG,wBAAwB;AACnE,MAAM,+CAA+C,GAAG,qDAAqD,CAAC;AAuB9G;;;;;;;;;;AAUG;MACU,8BAA8B,CAAA;;AAOvC,IAAA,WAAA,CAAY,UAAqD,EAAA;QAJzD,IAAW,CAAA,WAAA,GAAiB,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,gBAAgB,GAAwB,IAAI,GAAG,EAAE,CAAC;AAItD,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;AACzC,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC;KACxC;;AAGM,IAAA,MAAM,SAAS,GAAA;AAClB,QAAA,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC;AAC/C,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;KAC9B;;AAGM,IAAA,MAAM,eAAe,GAAA;AACxB,QAAA,OAAO,EAAE,CAAC;KACb;IAEM,MAAM,cAAc,CAAC,QAAgB,EAAA;AACxC,QAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAC9C;AAEM,IAAA,sCAAsC,CAAC,UAAkB,EAAA;AAC5D,QAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAG,EAAA,gBAAgB,CAAC,yBAAyB,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/E;IAEM,yBAAyB,GAAA;AAC5B,QAAA,OAAO,+CAA+C,CAAC;KAC1D;;IAGM,YAAY,GAAA;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,IAAG;AAC/B,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,uBAAuB,CAAC,EAAE,GAAG,IAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;YAClG,OAAO;gBACH,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAG,EAAA,gBAAgB,CAAC,yBAAyB,CAAE,CAAA;AACxE,gBAAA,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,gBAAgB,EAAE,GAAG;gBACrB,QAAQ,EAAE,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAQ;aAChE,CAAA;AACL,SAAC,CAAC,CAAA;KACL;;IAGM,MAAM,cAAc,CAAC,UAAkB,EAAA;AAC1C,QAAA,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA,EAAG,gBAAgB,CAAC,yBAAyB,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,QAAA,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC;AAC3E,QAAA,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;AACvB,QAAA,OAAO,UAAU,CAAA;KACpB;;AAGM,IAAA,MAAM,cAAc,GAAA;AACvB,QAAA,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;AACpE,YAAA,UAAU,EAAE,gCAAgC;AAC5C,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,IAAI,EAAE;gBACF,mBAAmB,EAAE,IAAI,CAAC,WAAW;gBACrC,iBAAiB,EAAE,IAAI,CAAC,SAAS;AACpC,aAAA;SACJ,EAAE;AACC,YAAA,MAAM,EAAE,CAAC;AACZ,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;AACzD,YAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAChD,YAAA,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;AACjE,YAAA,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;AACvB,YAAA,OAAO,GAAG,EAAE,CAAA,EAAG,gBAAgB,CAAC,yBAAyB,EAAE,CAAC;AAC/D,SAAA;;AACI,YAAA,OAAO,IAAI,CAAA;KACnB;IAEM,SAAS,GAAA;AACZ,QAAA,OAAO,GAAG,+CAA+C,CAAA;;UAEvD,CAAA;KACL;;IAGM,MAAM,cAAc,CAAC,UAAkB,EAAA;AAC1C,QAAA,MAAM,qBAAqB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA,EAAG,gBAAgB,CAAC,yBAAyB,CAAE,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC;AACnG,QAAA,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;AACnC,YAAA,UAAU,EAAE,gCAAgC;AAC5C,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,QAAQ,EAAE,qBAAqB;SAClC,EAAE;AACC,YAAA,MAAM,EAAE,CAAC;AACZ,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;AACvB,QAAA,OAAO,UAAU,CAAC;KACrB;AAED;;;;AAIG;AACI,IAAA,MAAM,WAAW,CAAC,iBAAyB,EAAE,MAAe,EAAE,KAAU,EAAA;AAC3E,QAAA,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAG,EAAA,gBAAgB,CAAC,yBAAyB,CAAA,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA,EAAG,iBAAiB,CAAA,CAAA,EAAI,qBAAqB,CAAA,CAAE,CAAC,CAAC;AACpG,QAAA,MAAM,OAAO,GAAG;AACZ,YAAA,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC;AAC9E,YAAA,yBAAyB,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;SAC7D,CAAA;QAED,IAAI;YAEA,IAAI,CAAC,gBAAgB,EAAE;AACnB,gBAAA,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,2BAA2B,EAAE;AAC7E,oBAAA,GAAG,OAAO;oBACV,yCAAyC,EAAE,CAAgC,6BAAA,EAAA,qBAAqB,CAAG,CAAA,CAAA;oBACnG,0CAA0C,EAAE,CAAU,OAAA,EAAA,iBAAiB,CAAG,CAAA,CAAA;AAC7E,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAG,EAAA,iBAAiB,CAAI,CAAA,EAAA,qBAAqB,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBACtF,OAAO;AACH,oBAAA,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,MAAM,CAAC,EAAE;AACnB,oBAAA,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;iBACxB,CAAA;AACJ,aAAA;AAEI,iBAAA;gBACD,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,2BAA2B,EAAE,gBAAgB,EAAE;AAChF,oBAAA,GAAG,OAAO;AACb,iBAAA,CAAC,CAAC;gBACH,OAAO;AACH,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;iBACxB,CAAA;AACJ,aAAA;AACJ,SAAA;AACD,QAAA,OAAO,GAAQ,EAAE;YACb,OAAO;AACH,gBAAA,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,gBAAgB,IAAI,EAAE;AAChC,gBAAA,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACrB,gBAAA,MAAM,EAAE,CAAC;wBACL,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,SAAS,EAAE,MAAM,CAAC,IAAI;qBACzB,CAAC;aACL,CAAA;AACJ,SAAA;KACJ;AAED;;;;AAIG;AACI,IAAA,qBAAqB,CAAC,QAAgB,EAAE,SAAqB,EAAE,MAAe,EAAA;AACjF,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/E,IAAI,SAAS,IAAI,IAAI,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAEtD,QAAA,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,SAAS,EAAE;AACzC,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAe,CAAC;AACxC,YAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAgB,CAAC;YAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAW,KAAK,MAAM,CAAC,QAAQ,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAC3G,OAAO,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;AACvC,SAAA;AACD,QAAA,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;KAC/B;AAEO,IAAA,0BAA0B,CAAC,QAAgB,EAAE,SAAqB,EAAE,MAAe,EAAA;QACvF,MAAM,UAAU,GAAU,SAAS,CAAC,+CAA+C,CAAC,IAAI,EAAE,CAAC;AAC3F,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AACD,QAAA,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAG,EAAA,gBAAgB,CAAC,yBAAyB,CAAA,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,qCAAqC,CAAC,KAAK,qBAAqB,CAAC,CAAC;AACjH,QAAA,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAA,CAAA,EAAI,qBAAqB,CAAA,CAAE,EAAE,SAAS,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAC3G,SAAA;AACD,QAAA,OAAO,SAAS,CAAC;KACpB;AAEO,IAAA,sBAAsB,CAAC,MAAe,EAAA;QAC1C,QAAQ,MAAM,CAAC,QAAQ;YACnB,KAAK,SAAS,CAAC,SAAS,CAAC;YACzB,KAAK,SAAS,CAAC,aAAa,CAAC;YAC7B,KAAK,SAAS,CAAC,aAAa,CAAC;YAC7B,KAAK,SAAS,CAAC,aAAa;AACxB,gBAAA,OAAO,kBAAkB,CAAC;YAC9B,KAAK,SAAS,CAAC,OAAO;AAClB,gBAAA,OAAO,sBAAsB,CAAC;YAClC,KAAK,SAAS,CAAC,SAAS;AACpB,gBAAA,OAAO,gCAAgC,CAAC;YAC5C,KAAK,SAAS,CAAC,UAAU;AACrB,gBAAA,OAAO,kBAAkB,CAAC;YAC9B,KAAK,SAAS,CAAC,mBAAmB;AAC9B,gBAAA,OAAO,mBAAmB,CAAC;AAC/B,YAAA,KAAK,SAAS,CAAC,sBAAsB,EAAE;AACnC,gBAAA,OAAO,MAAM,CAAC,QAAQ,EAAE,QAAQ,KAAK,CAAC,GAAG,2BAA2B,GAAG,iCAAiC,CAAC;AAC5G,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,mBAAmB,CAAC;AAClC,SAAA;KACJ;IAEO,mBAAmB,CAAC,KAAU,EAAE,MAAe,EAAA;QACnD,QAAQ,MAAM,CAAC,QAAQ;YACnB,KAAK,YAAY,EAAE;gBACf,OAAO,KAAK,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;AACtC,aAAA;YACD,KAAK,WAAW,EAAE;AACd,gBAAA,MAAM,SAAS,GAAe,MAAM,CAAC,QAAe,CAAC;AACrD,gBAAA,MAAM,SAAS,GAAG,SAAS,CAAC,SAAgB,CAAC;AAC7C,gBAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,MAAW,KAAK,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,QAAQ,CAAC;AAClF,gBAAA,IAAI,QAAQ,EAAE;oBACV,OAAO,CAAA,yBAAA,EAA4B,QAAQ,CAAA,CAAA,CAAG,CAAC;AAClD,iBAAA;AACD,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACD,YAAA,KAAK,yBAAyB,CAAC;YAC/B,KAAK,sBAAsB,EAAE;AACzB,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACD,YAAA,SAAS;AACL,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AACJ,SAAA;KACJ;;AAGO,IAAA,mBAAmB,CAAC,KAAU,EAAA;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC;AAClB,YAAA,GAAG,EAAE,KAAK;AACV,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,YAAY,EAAE,EAAE;AACnB,SAAA,CAAC,CAAA;KACL;IAEO,uBAAuB,CAAC,QAAkB,EAAE,IAAgB,EAAA;AAChE,QAAA,QAAQ,QAAQ;YACZ,KAAK,SAAS,CAAC,SAAS,CAAC;AACzB,YAAA,KAAK,SAAS,CAAC,UAAU,EAAE;gBACvB,OAAO;AACH,oBAAA,GAAG,IAAI;oBACP,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;wBAC5C,OAAO;4BACH,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,KAAK,EAAE,MAAM,CAAC,KAAK;4BACnB,QAAQ,EAAE,MAAM,CAAC,eAAe;yBACnC,CAAA;AACL,qBAAC,CAAC;iBACL,CAAA;AACJ,aAAA;AACD,YAAA,SAAS;AACL,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;KACJ;AACJ;;;;"}
|
|
@@ -2,8 +2,8 @@ import { ColDef, IGridCustomizer, IGridCustomizerStrategy } from "../../componen
|
|
|
2
2
|
/**
|
|
3
3
|
* Ready-to-use {@link IGridCustomizerStrategy} for the Dataverse / Talxis platform.
|
|
4
4
|
*
|
|
5
|
-
* Automatically applies custom cell renderers to lookup-many columns (columns whose
|
|
6
|
-
*
|
|
5
|
+
* Automatically applies custom cell renderers to lookup-many columns (columns whose
|
|
6
|
+
* `metadata.LookupMany` is set). Returned by {@link DataverseTaskGridDescriptor} by default.
|
|
7
7
|
*
|
|
8
8
|
* Extend or replace this class via `onCreateGridCustomizerStrategy` on your descriptor when
|
|
9
9
|
* you need additional AG Grid column, editor, or row-class customizations.
|
|
@@ -14,7 +14,7 @@ export declare class DataverseGridCustomizerStrategy implements IGridCustomizerS
|
|
|
14
14
|
private _gridApi;
|
|
15
15
|
/** Stores references to the customizer, task data provider, and grid API. Called once by the internal `GridCustomizer` after the AG Grid instance is ready. */
|
|
16
16
|
onInitialize(customizer: IGridCustomizer): void;
|
|
17
|
-
/** Injects the lookup-many {@link CellRenderer} and sets `autoHeight`/non-editable flags for any column whose
|
|
17
|
+
/** Injects the lookup-many {@link CellRenderer} and sets `autoHeight`/non-editable flags for any column whose `metadata.LookupMany` is set. */
|
|
18
18
|
onGetColumnDefinitions(colDefs: ColDef[]): ColDef[];
|
|
19
19
|
private _getProvider;
|
|
20
20
|
}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { FetchXmlLookupManyCellRenderer } from './lookup-many/cell-renderer/FetchXmlLookupManyCellRenderer.js';
|
|
2
|
-
import { LOOKUP_MANY_COLUMN_NAME_SUFFIX } from './lookup-many/LookupManyHandler.js';
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* Ready-to-use {@link IGridCustomizerStrategy} for the Dataverse / Talxis platform.
|
|
6
5
|
*
|
|
7
|
-
* Automatically applies custom cell renderers to lookup-many columns (columns whose
|
|
8
|
-
*
|
|
6
|
+
* Automatically applies custom cell renderers to lookup-many columns (columns whose
|
|
7
|
+
* `metadata.LookupMany` is set). Returned by {@link DataverseTaskGridDescriptor} by default.
|
|
9
8
|
*
|
|
10
9
|
* Extend or replace this class via `onCreateGridCustomizerStrategy` on your descriptor when
|
|
11
10
|
* you need additional AG Grid column, editor, or row-class customizations.
|
|
@@ -17,11 +16,11 @@ class DataverseGridCustomizerStrategy {
|
|
|
17
16
|
this._provider = customizer.getTaskDataProvider();
|
|
18
17
|
this._gridApi = customizer.getGridApi();
|
|
19
18
|
}
|
|
20
|
-
/** Injects the lookup-many {@link CellRenderer} and sets `autoHeight`/non-editable flags for any column whose
|
|
19
|
+
/** Injects the lookup-many {@link CellRenderer} and sets `autoHeight`/non-editable flags for any column whose `metadata.LookupMany` is set. */
|
|
21
20
|
onGetColumnDefinitions(colDefs) {
|
|
22
21
|
for (const colDef of colDefs) {
|
|
23
22
|
const column = this._getProvider().getColumnsMap()[colDef.field];
|
|
24
|
-
if (column?.
|
|
23
|
+
if (column?.metadata?.LookupMany) {
|
|
25
24
|
colDef.cellRenderer = FetchXmlLookupManyCellRenderer;
|
|
26
25
|
colDef.autoHeight = true;
|
|
27
26
|
colDef.editable = false;
|