@talxis/base-controls 1.2603.1 → 1.2604.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/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js +4 -4
- package/dist/components/DatasetControl/EditColumns/ColumnSelector/ColumnSelector.js.map +1 -1
- package/dist/components/DatasetControl/EditColumns/Selector/Selector.js +2 -2
- package/dist/components/DatasetControl/EditColumns/Selector/Selector.js.map +1 -1
- package/dist/components/DatasetControl/EditColumns/useEditColumns.js +2 -2
- package/dist/components/DatasetControl/EditColumns/useEditColumns.js.map +1 -1
- package/dist/components/DatasetControl/Filtering/DatasetColumnFiltering.js +2 -2
- package/dist/components/DatasetControl/Filtering/DatasetColumnFiltering.js.map +1 -1
- package/dist/components/DatasetControl/Header/Header.js +1 -0
- package/dist/components/DatasetControl/Header/Header.js.map +1 -1
- package/dist/components/DatasetControl/interfaces.d.ts +1 -0
- package/dist/components/DatasetControl/useModel.js +3 -3
- package/dist/components/DatasetControl/useModel.js.map +1 -1
- package/dist/components/Grid/cells/cell/content/CellContent.js +8 -8
- package/dist/components/Grid/cells/cell/content/CellContent.js.map +1 -1
- package/dist/components/Grid/grid/GridModel.js +1 -1
- package/dist/components/Grid/grid/GridModel.js.map +1 -1
- package/dist/components/Grid/grid/ag-grid/AgGridModel.js +5 -8
- package/dist/components/Grid/grid/ag-grid/AgGridModel.js.map +1 -1
- package/dist/components/GridCellRenderer/ValueRenderer/FileRenderer/FileRenderer.js +3 -3
- package/dist/components/GridCellRenderer/ValueRenderer/FileRenderer/FileRenderer.js.map +1 -1
- package/dist/components/GridCellRenderer/properties/Property.js +3 -1
- package/dist/components/GridCellRenderer/properties/Property.js.map +1 -1
- package/dist/components/GridCellRenderer/useModel.js +3 -3
- package/dist/components/GridCellRenderer/useModel.js.map +1 -1
- package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.js +2 -2
- package/dist/components/MultiSelectOptionSet/MultiSelectOptionSet.js.map +1 -1
- package/dist/components/NestedControlRenderer/NestedControlRenderer.js +2 -2
- package/dist/components/NestedControlRenderer/NestedControlRenderer.js.map +1 -1
- package/dist/components/TaskGrid/TaskGrid.d.ts +12 -0
- package/dist/components/TaskGrid/TaskGrid.js +75 -0
- package/dist/components/TaskGrid/TaskGrid.js.map +1 -0
- package/dist/components/TaskGrid/TaskGridDatasetControl.d.ts +81 -0
- package/dist/components/TaskGrid/TaskGridDatasetControl.js +335 -0
- package/dist/components/TaskGrid/TaskGridDatasetControl.js.map +1 -0
- package/dist/components/TaskGrid/TaskGridDatasetControlFactory.d.ts +21 -0
- package/dist/components/TaskGrid/TaskGridDatasetControlFactory.js +55 -0
- package/dist/components/TaskGrid/TaskGridDatasetControlFactory.js.map +1 -0
- package/dist/components/TaskGrid/components/components.d.ts +8 -0
- package/dist/components/TaskGrid/components/components.js +11 -0
- package/dist/components/TaskGrid/components/components.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/Grid.d.ts +2 -0
- package/dist/components/TaskGrid/components/grid/Grid.js +42 -0
- package/dist/components/TaskGrid/components/grid/Grid.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/TreeExpandCollapseHeader.d.ts +2 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/TreeExpandCollapseHeader.js +34 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/TreeExpandCollapseHeader.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/styles.d.ts +17 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/styles.js +24 -0
- package/dist/components/TaskGrid/components/grid/cell-headers/tree-expand-collapse-header/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/AddTaskButton.d.ts +2 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/AddTaskButton.js +81 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/AddTaskButton.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/styles.d.ts +25 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/styles.js +32 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/add-task-button/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.d.ts +2 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.js +22 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/PercentComplete.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/styles.d.ts +23 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/styles.js +30 -0
- package/dist/components/TaskGrid/components/grid/cell-renderers/percent-complete/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.d.ts +74 -0
- package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.js +308 -0
- package/dist/components/TaskGrid/components/grid/grid-customizer/GridCustomizer.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/grid-customizer/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/grid-customizer/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/grid-customizer/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/grid-drag-handler/GridDragHandler.d.ts +30 -0
- package/dist/components/TaskGrid/components/grid/grid-drag-handler/GridDragHandler.js +80 -0
- package/dist/components/TaskGrid/components/grid/grid-drag-handler/GridDragHandler.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/grid-drag-handler/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/grid-drag-handler/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/grid-drag-handler/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/group-cell/GroupCell.d.ts +7 -0
- package/dist/components/TaskGrid/components/grid/group-cell/GroupCell.js +70 -0
- package/dist/components/TaskGrid/components/grid/group-cell/GroupCell.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/group-cell/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/group-cell/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/group-cell/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/group-cell/styles.d.ts +35 -0
- package/dist/components/TaskGrid/components/grid/group-cell/styles.js +41 -0
- package/dist/components/TaskGrid/components/grid/group-cell/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/index.d.ts +3 -0
- package/dist/components/TaskGrid/components/grid/index.js +4 -0
- package/dist/components/TaskGrid/components/grid/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/multi-record-selector/MultiRecordSelector.d.ts +17 -0
- package/dist/components/TaskGrid/components/grid/multi-record-selector/MultiRecordSelector.js +92 -0
- package/dist/components/TaskGrid/components/grid/multi-record-selector/MultiRecordSelector.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/multi-record-selector/index.d.ts +2 -0
- package/dist/components/TaskGrid/components/grid/multi-record-selector/index.js +3 -0
- package/dist/components/TaskGrid/components/grid/multi-record-selector/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/record-selector/RecordSelector.d.ts +10 -0
- package/dist/components/TaskGrid/components/grid/record-selector/RecordSelector.js +120 -0
- package/dist/components/TaskGrid/components/grid/record-selector/RecordSelector.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/record-selector/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/grid/record-selector/index.js +2 -0
- package/dist/components/TaskGrid/components/grid/record-selector/index.js.map +1 -0
- package/dist/components/TaskGrid/components/grid/record-selector/styles.d.ts +54 -0
- package/dist/components/TaskGrid/components/grid/record-selector/styles.js +60 -0
- package/dist/components/TaskGrid/components/grid/record-selector/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/header/Header.d.ts +8 -0
- package/dist/components/TaskGrid/components/header/Header.js +148 -0
- package/dist/components/TaskGrid/components/header/Header.js.map +1 -0
- package/dist/components/TaskGrid/components/header/command-bar/CommandBar.d.ts +2 -0
- package/dist/components/TaskGrid/components/header/command-bar/CommandBar.js +9 -0
- package/dist/components/TaskGrid/components/header/command-bar/CommandBar.js.map +1 -0
- package/dist/components/TaskGrid/components/header/command-bar/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/command-bar/index.js +2 -0
- package/dist/components/TaskGrid/components/header/command-bar/index.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/CommandBar/CommandBar.d.ts +2 -0
- package/dist/components/TaskGrid/components/header/edit-columns/CommandBar/CommandBar.js +23 -0
- package/dist/components/TaskGrid/components/header/edit-columns/CommandBar/CommandBar.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/EditColumns.d.ts +5 -0
- package/dist/components/TaskGrid/components/header/edit-columns/EditColumns.js +99 -0
- package/dist/components/TaskGrid/components/header/edit-columns/EditColumns.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/OptionCommandBar/OptionCommandBar.d.ts +2 -0
- package/dist/components/TaskGrid/components/header/edit-columns/OptionCommandBar/OptionCommandBar.js +51 -0
- package/dist/components/TaskGrid/components/header/edit-columns/OptionCommandBar/OptionCommandBar.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/OptionCommandBar/styles.d.ts +11 -0
- package/dist/components/TaskGrid/components/header/edit-columns/OptionCommandBar/styles.js +18 -0
- package/dist/components/TaskGrid/components/header/edit-columns/OptionCommandBar/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/SortableItemCommandBar/SortableItemCommandBar.d.ts +2 -0
- package/dist/components/TaskGrid/components/header/edit-columns/SortableItemCommandBar/SortableItemCommandBar.js +27 -0
- package/dist/components/TaskGrid/components/header/edit-columns/SortableItemCommandBar/SortableItemCommandBar.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/styles.d.ts +8 -0
- package/dist/components/TaskGrid/components/header/edit-columns/styles.js +15 -0
- package/dist/components/TaskGrid/components/header/edit-columns/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/header/edit-columns/useTaskGridEditColumns.d.ts +9 -0
- package/dist/components/TaskGrid/components/header/edit-columns/useTaskGridEditColumns.js +9 -0
- package/dist/components/TaskGrid/components/header/edit-columns/useTaskGridEditColumns.js.map +1 -0
- package/dist/components/TaskGrid/components/header/settings-callout/SettingsCallout.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/settings-callout/SettingsCallout.js +24 -0
- package/dist/components/TaskGrid/components/header/settings-callout/SettingsCallout.js.map +1 -0
- package/dist/components/TaskGrid/components/header/settings-callout/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/settings-callout/index.js +2 -0
- package/dist/components/TaskGrid/components/header/settings-callout/index.js.map +1 -0
- package/dist/components/TaskGrid/components/header/settings-callout/styles.d.ts +5 -0
- package/dist/components/TaskGrid/components/header/settings-callout/styles.js +12 -0
- package/dist/components/TaskGrid/components/header/settings-callout/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/header/styles.d.ts +15 -0
- package/dist/components/TaskGrid/components/header/styles.js +22 -0
- package/dist/components/TaskGrid/components/header/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/ViewSwitcher.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/ViewSwitcher.js +104 -0
- package/dist/components/TaskGrid/components/header/view-switcher/ViewSwitcher.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/CreateViewDialog.d.ts +5 -0
- package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/CreateViewDialog.js +66 -0
- package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/CreateViewDialog.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/index.js +2 -0
- package/dist/components/TaskGrid/components/header/view-switcher/create-view-dialog/index.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/index.js +2 -0
- package/dist/components/TaskGrid/components/header/view-switcher/index.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/styles.d.ts +18 -0
- package/dist/components/TaskGrid/components/header/view-switcher/styles.js +24 -0
- package/dist/components/TaskGrid/components/header/view-switcher/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManageDialog.d.ts +5 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManageDialog.js +54 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManageDialog.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManager.d.ts +18 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManager.js +95 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/ViewManager.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/index.js +2 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/index.js.map +1 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/styles.d.ts +18 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/styles.js +25 -0
- package/dist/components/TaskGrid/components/header/view-switcher/view-manager/styles.js.map +1 -0
- package/dist/components/TaskGrid/components/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/index.js +2 -0
- package/dist/components/TaskGrid/components/index.js.map +1 -0
- package/dist/components/TaskGrid/components/skeleton/Skeleton.d.ts +4 -0
- package/dist/components/TaskGrid/components/skeleton/Skeleton.js +32 -0
- package/dist/components/TaskGrid/components/skeleton/Skeleton.js.map +1 -0
- package/dist/components/TaskGrid/components/skeleton/index.d.ts +1 -0
- package/dist/components/TaskGrid/components/skeleton/index.js +2 -0
- package/dist/components/TaskGrid/components/skeleton/index.js.map +1 -0
- package/dist/components/TaskGrid/components/skeleton/styles.d.ts +92 -0
- package/dist/components/TaskGrid/components/skeleton/styles.js +100 -0
- package/dist/components/TaskGrid/components/skeleton/styles.js.map +1 -0
- package/dist/components/TaskGrid/context.d.ts +22 -0
- package/dist/components/TaskGrid/context.js +53 -0
- package/dist/components/TaskGrid/context.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/CustomColumnsDataProvider.d.ts +50 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/CustomColumnsDataProvider.js +45 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/CustomColumnsDataProvider.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.d.ts +33 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.js +227 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/index.d.ts +2 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/index.js +3 -0
- package/dist/components/TaskGrid/data-providers/custom-columns-data-provider/index.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/index.d.ts +3 -0
- package/dist/components/TaskGrid/data-providers/index.js +6 -0
- package/dist/components/TaskGrid/data-providers/index.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/SavedQueryDataProvider.d.ts +125 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/SavedQueryDataProvider.js +192 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/SavedQueryDataProvider.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/TalxisSavedQueryDataProvider.d.ts +21 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/TalxisSavedQueryDataProvider.js +97 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/TalxisSavedQueryDataProvider.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/index.d.ts +2 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/index.js +3 -0
- package/dist/components/TaskGrid/data-providers/saved-query-data-provider/index.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/TaskDataProvider.d.ts +213 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/TaskDataProvider.js +313 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/TaskDataProvider.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/index.d.ts +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/index.js +2 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/index.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/RecordTree.d.ts +55 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/RecordTree.js +304 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/RecordTree.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/index.d.ts +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/index.js +2 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/index.js.map +1 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/patchDataBuilderPrepare.d.ts +5 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/patchDataBuilderPrepare.js +16 -0
- package/dist/components/TaskGrid/data-providers/task-data-provider/record-tree/patchDataBuilderPrepare.js.map +1 -0
- package/dist/components/TaskGrid/index.d.ts +3 -0
- package/dist/components/TaskGrid/index.js +3 -0
- package/dist/components/TaskGrid/index.js.map +1 -0
- package/dist/components/TaskGrid/interfaces.d.ts +161 -0
- package/dist/components/TaskGrid/labels.d.ts +92 -0
- package/dist/components/TaskGrid/labels.js +94 -0
- package/dist/components/TaskGrid/labels.js.map +1 -0
- package/dist/components/TaskGrid/styles.d.ts +65 -0
- package/dist/components/TaskGrid/styles.js +72 -0
- package/dist/components/TaskGrid/styles.js.map +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/hooks/useIsMounted.js +3 -3
- package/dist/hooks/useIsMounted.js.map +1 -1
- package/dist/hooks/useShouldRemount.js +2 -2
- package/dist/hooks/useShouldRemount.js.map +1 -1
- package/dist/index.d.ts +643 -34
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js +11 -3
- package/dist/utils/dataset/adapters/VirtualDatasetAdapter.js.map +1 -1
- package/dist/utils/dataset-control/DatasetControl.js +4 -1
- package/dist/utils/dataset-control/DatasetControl.js.map +1 -1
- package/dist/utils/error-handling/ErrorHelper.d.ts +7 -0
- package/dist/utils/error-handling/ErrorHelper.js +40 -0
- package/dist/utils/error-handling/ErrorHelper.js.map +1 -0
- package/dist/utils/error-handling/index.d.ts +1 -0
- package/dist/utils/error-handling/index.js +2 -0
- package/dist/utils/error-handling/index.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +9 -6
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { Attribute, DatasetConstants, Sanitizer, DataTypes, FieldValue } from '@talxis/client-libraries';
|
|
2
|
+
import { DynamicEntityDefinition } from '@talxis/client-metadata';
|
|
3
|
+
|
|
4
|
+
const ATTRIBUTE_DEFINITION_ENTITY_NAME = 'talxis_attributedefinition';
|
|
5
|
+
const ATTRIBUTE_VALUE_ENTITY_NAME = 'talxis_attributevalue';
|
|
6
|
+
const CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME = 'talxis_task_talxis_attributevalue_regardingobjectid';
|
|
7
|
+
class TalxisCustomColumnsStrategy {
|
|
8
|
+
constructor(parameters) {
|
|
9
|
+
this._attributes = [];
|
|
10
|
+
this._attributeIdsMap = new Map();
|
|
11
|
+
this._entityName = parameters.entityName;
|
|
12
|
+
this._recordId = parameters.recordId;
|
|
13
|
+
}
|
|
14
|
+
async onRefresh() {
|
|
15
|
+
const entityDefinition = await DynamicEntityDefinition.fetchForRecord(this._entityName, this._recordId);
|
|
16
|
+
this._attributes = entityDefinition.Attributes;
|
|
17
|
+
return this.onGetColumns();
|
|
18
|
+
}
|
|
19
|
+
onGetColumns() {
|
|
20
|
+
return this._attributes.map(attr => {
|
|
21
|
+
const dataType = Attribute.GetDataTypeFromMetadata({ ...attr, attributeDescriptor: attr });
|
|
22
|
+
return {
|
|
23
|
+
name: `${attr.LogicalName}${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`,
|
|
24
|
+
isVirtual: true,
|
|
25
|
+
displayName: attr.DisplayName,
|
|
26
|
+
dataType: dataType,
|
|
27
|
+
visualSizeFactor: 200,
|
|
28
|
+
metadata: this._getMetadataForDataType(dataType, attr)
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async onDeleteColumn(columnName) {
|
|
33
|
+
const id = columnName.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];
|
|
34
|
+
await window.Xrm.WebApi.deleteRecord(ATTRIBUTE_DEFINITION_ENTITY_NAME, id);
|
|
35
|
+
await this.onRefresh();
|
|
36
|
+
return columnName;
|
|
37
|
+
}
|
|
38
|
+
async onCreateColumn() {
|
|
39
|
+
const { savedEntityReference } = await window.Xrm.Navigation.navigateTo({
|
|
40
|
+
entityName: ATTRIBUTE_DEFINITION_ENTITY_NAME,
|
|
41
|
+
pageType: 'entityrecord',
|
|
42
|
+
data: {
|
|
43
|
+
'talxis_entityname': this._entityName,
|
|
44
|
+
'talxis_recordid': this._recordId,
|
|
45
|
+
}
|
|
46
|
+
}, {
|
|
47
|
+
target: 2,
|
|
48
|
+
});
|
|
49
|
+
if (savedEntityReference && savedEntityReference.length > 0) {
|
|
50
|
+
const entityReference = savedEntityReference[0];
|
|
51
|
+
const id = Sanitizer.Guid.removeGuidBrackets(entityReference.id);
|
|
52
|
+
await this.onRefresh();
|
|
53
|
+
return `${id}${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`;
|
|
54
|
+
}
|
|
55
|
+
else
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
async onUpdateColumn(columnName) {
|
|
59
|
+
const attributeDefinitionId = columnName.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];
|
|
60
|
+
await window.Xrm.Navigation.navigateTo({
|
|
61
|
+
entityName: ATTRIBUTE_DEFINITION_ENTITY_NAME,
|
|
62
|
+
pageType: 'entityrecord',
|
|
63
|
+
entityId: attributeDefinitionId
|
|
64
|
+
}, {
|
|
65
|
+
target: 2,
|
|
66
|
+
});
|
|
67
|
+
await this.onRefresh();
|
|
68
|
+
return columnName;
|
|
69
|
+
}
|
|
70
|
+
async saveValueToCustomColumn(record) {
|
|
71
|
+
const dirtyField = record.getFields().find(field => field.isDirty());
|
|
72
|
+
const column = dirtyField?.getColumn();
|
|
73
|
+
if (!column?.name.endsWith(DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX)) {
|
|
74
|
+
return {
|
|
75
|
+
success: true,
|
|
76
|
+
fields: [],
|
|
77
|
+
recordId: record.getRecordId(),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const attributeDefinitionId = column.name.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];
|
|
81
|
+
const regardingObjectId = record.getRecordId();
|
|
82
|
+
const attributeValueId = this._attributeIdsMap.get(`${regardingObjectId}_${attributeDefinitionId}`);
|
|
83
|
+
const payload = {
|
|
84
|
+
[this._getFieldNameForColumn(column)]: this._getValueForPayload(record.getValue(column.name), column),
|
|
85
|
+
'talxis_serialized_value': this._getSerializedValue(record.getValue(column.name)),
|
|
86
|
+
};
|
|
87
|
+
try {
|
|
88
|
+
if (!attributeValueId) {
|
|
89
|
+
const result = await window.Xrm.WebApi.createRecord(ATTRIBUTE_VALUE_ENTITY_NAME, {
|
|
90
|
+
...payload,
|
|
91
|
+
'talxis_attributedefinitionid@odata.bind': `/talxis_attributedefinitions(${attributeDefinitionId})`,
|
|
92
|
+
'talxis_regardingobjectid_task@odata.bind': `/tasks(${regardingObjectId})`,
|
|
93
|
+
});
|
|
94
|
+
this._attributeIdsMap.set(`${regardingObjectId}_${attributeDefinitionId}`, result.id);
|
|
95
|
+
return {
|
|
96
|
+
success: true,
|
|
97
|
+
recordId: result.id,
|
|
98
|
+
fields: [column.name]
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
await window.Xrm.WebApi.updateRecord(ATTRIBUTE_VALUE_ENTITY_NAME, attributeValueId, {
|
|
103
|
+
...payload
|
|
104
|
+
});
|
|
105
|
+
return {
|
|
106
|
+
success: true,
|
|
107
|
+
recordId: attributeValueId,
|
|
108
|
+
fields: [column.name]
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
return {
|
|
114
|
+
success: false,
|
|
115
|
+
recordId: attributeValueId ?? '',
|
|
116
|
+
fields: [column.name],
|
|
117
|
+
errors: [{
|
|
118
|
+
message: err.message,
|
|
119
|
+
fieldName: column.name
|
|
120
|
+
}]
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
getValueFromRawRecord(recordId, rawRecord, column) {
|
|
125
|
+
const attribute = this._getAttributeFromRawRecord(recordId, rawRecord, column);
|
|
126
|
+
if (attribute == null) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
const fieldName = this._getFieldNameForColumn(column);
|
|
130
|
+
if (column.dataType === DataTypes.OptionSet) {
|
|
131
|
+
const metadata = column.metadata;
|
|
132
|
+
const optionSet = metadata.OptionSet;
|
|
133
|
+
const option = optionSet.find((option) => option.OptionId == attribute['_talxis_choice_value_value']);
|
|
134
|
+
return option ? option.Value : null;
|
|
135
|
+
}
|
|
136
|
+
return new FieldValue(attribute[fieldName], column.dataType).getValue();
|
|
137
|
+
}
|
|
138
|
+
_getAttributeFromRawRecord(recordId, rawRecord, column) {
|
|
139
|
+
const attributes = rawRecord[CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME] ?? [];
|
|
140
|
+
if (attributes.length === 0) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
const attributeDefinitionId = column.name.split(`${DatasetConstants.CUSTOM_COLUMN_NAME_SUFFIX}`)[0];
|
|
144
|
+
const attribute = attributes.find(attr => attr['_talxis_attributedefinitionid_value'] === attributeDefinitionId);
|
|
145
|
+
if (attribute) {
|
|
146
|
+
this._attributeIdsMap.set(`${recordId}_${attributeDefinitionId}`, attribute['talxis_attributevalueid']);
|
|
147
|
+
}
|
|
148
|
+
return attribute;
|
|
149
|
+
}
|
|
150
|
+
_getFieldNameForColumn(column) {
|
|
151
|
+
switch (column.dataType) {
|
|
152
|
+
case DataTypes.WholeNone:
|
|
153
|
+
case DataTypes.WholeDuration:
|
|
154
|
+
case DataTypes.WholeLanguage:
|
|
155
|
+
case DataTypes.WholeTimeZone:
|
|
156
|
+
return 'talxis_int_value';
|
|
157
|
+
case DataTypes.Decimal:
|
|
158
|
+
return 'talxis_decimal_value';
|
|
159
|
+
case DataTypes.OptionSet:
|
|
160
|
+
return 'talxis_choice_value@odata.bind';
|
|
161
|
+
case DataTypes.TwoOptions:
|
|
162
|
+
return 'talxis_bit_value';
|
|
163
|
+
case DataTypes.DateAndTimeDateOnly:
|
|
164
|
+
return 'talxis_date_value';
|
|
165
|
+
case DataTypes.DateAndTimeDateAndTime: {
|
|
166
|
+
return column.metadata?.Behavior === 3 ? 'talxis_datetime_tzi_value' : 'talxis_datetime_userlocal_value';
|
|
167
|
+
}
|
|
168
|
+
default:
|
|
169
|
+
return 'talxis_text_value';
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
_getValueForPayload(value, column) {
|
|
173
|
+
switch (column.dataType) {
|
|
174
|
+
case 'TwoOptions': {
|
|
175
|
+
return value == '1' ? true : false;
|
|
176
|
+
}
|
|
177
|
+
case 'OptionSet': {
|
|
178
|
+
const attribute = column.metadata;
|
|
179
|
+
const optionSet = attribute.OptionSet;
|
|
180
|
+
const optionId = optionSet.find((option) => option.Value == value)?.OptionId;
|
|
181
|
+
if (optionId) {
|
|
182
|
+
return `/talxis_attributeoptions(${optionId})`;
|
|
183
|
+
}
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
case 'DateAndTime.DateAndTime':
|
|
187
|
+
case 'DateAndTime.DateOnly': {
|
|
188
|
+
return value;
|
|
189
|
+
}
|
|
190
|
+
default: {
|
|
191
|
+
return value;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//this is wrong, but it has been developed as part of dynamic attributes like this
|
|
196
|
+
_getSerializedValue(value) {
|
|
197
|
+
return JSON.stringify({
|
|
198
|
+
raw: value,
|
|
199
|
+
error: false,
|
|
200
|
+
errorMessage: ''
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
_getMetadataForDataType(dataType, attr) {
|
|
204
|
+
switch (dataType) {
|
|
205
|
+
case DataTypes.OptionSet:
|
|
206
|
+
case DataTypes.TwoOptions: {
|
|
207
|
+
return {
|
|
208
|
+
...attr,
|
|
209
|
+
OptionSet: attr.OptionSet?.Options.map(option => {
|
|
210
|
+
return {
|
|
211
|
+
Label: option.Label,
|
|
212
|
+
Value: option.Value,
|
|
213
|
+
Color: option.Color,
|
|
214
|
+
OptionId: option.talxis_OptionId
|
|
215
|
+
};
|
|
216
|
+
})
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
default: {
|
|
220
|
+
return attr;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
export { ATTRIBUTE_DEFINITION_ENTITY_NAME, ATTRIBUTE_VALUE_ENTITY_NAME, CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME, TalxisCustomColumnsStrategy };
|
|
227
|
+
//# sourceMappingURL=TalxisCustomColumnsDataProviderStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TalxisCustomColumnsDataProviderStrategy.js","sources":["../../../../../src/components/TaskGrid/data-providers/custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.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 \"./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\ninterface ITalxisCustomColumnsStrategyParameters {\n //entity name to fetch attributes for\n entityName: string;\n //record id to fetch attributes for\n recordId?: string;\n}\n\nexport interface ITalxisCustomColumnsStrategy extends ICustomColumnsStrategy {\n saveValueToCustomColumn: (record: IRecord) => Promise<IRecordSaveOperationResult>;\n getValueFromRawRecord: (recordId: string, rawRecord: IRawRecord, column: IColumn) => any;\n}\n\nexport class TalxisCustomColumnsStrategy implements ITalxisCustomColumnsStrategy {\n private _entityName: string;\n private _recordId?: string;\n private _attributes: IAttribute[] = [];\n private _attributeIdsMap: Map<string, string> = new Map();\n\n constructor(parameters: ITalxisCustomColumnsStrategyParameters) {\n this._entityName = parameters.entityName;\n this._recordId = parameters.recordId;\n }\n\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 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 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 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 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 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 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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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { CustomColumnsDataProvider } from './CustomColumnsDataProvider.js';
|
|
2
|
+
export { ATTRIBUTE_DEFINITION_ENTITY_NAME, ATTRIBUTE_VALUE_ENTITY_NAME, CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME, TalxisCustomColumnsStrategy } from './TalxisCustomColumnsDataProviderStrategy.js';
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { TaskDataProvider } from './task-data-provider/TaskDataProvider.js';
|
|
2
|
+
export { SavedQueryDataProvider } from './saved-query-data-provider/SavedQueryDataProvider.js';
|
|
3
|
+
export { TalxisSavedQueryStrategy } from './saved-query-data-provider/TalxisSavedQueryDataProvider.js';
|
|
4
|
+
export { CustomColumnsDataProvider } from './custom-columns-data-provider/CustomColumnsDataProvider.js';
|
|
5
|
+
export { ATTRIBUTE_DEFINITION_ENTITY_NAME, ATTRIBUTE_VALUE_ENTITY_NAME, CUSTOM_COLUMNS_REFERENED_ENTITY_NAVIGATION_NAME, TalxisCustomColumnsStrategy } from './custom-columns-data-provider/TalxisCustomColumnsDataProviderStrategy.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/// <reference types="@types/powerapps-component-framework" />
|
|
2
|
+
import { EventEmitter, IColumn, IEventEmitter } from "@talxis/client-libraries";
|
|
3
|
+
import { ITaskDataProvider } from "../task-data-provider";
|
|
4
|
+
import { ICustomColumnsDataProvider } from "../custom-columns-data-provider/CustomColumnsDataProvider";
|
|
5
|
+
import { INativeColumns } from "../../interfaces";
|
|
6
|
+
export interface ICreateUserQueryParams {
|
|
7
|
+
name: string;
|
|
8
|
+
provider: ITaskDataProvider;
|
|
9
|
+
description?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface IUpdateUserQueryParams {
|
|
12
|
+
queryId: string;
|
|
13
|
+
queryMetadata: ISavedQueryMetadata;
|
|
14
|
+
}
|
|
15
|
+
export interface ISavedQueryDataProviderEvents {
|
|
16
|
+
onBeforeUserQueriesDeleted: (queryIds: string[]) => void;
|
|
17
|
+
onAfterUserQueriesDeleted: (result: IDeletedUserQueriesResult) => void;
|
|
18
|
+
onBeforeUserQueryUpdated: (queryId: string) => void;
|
|
19
|
+
onAfterUserQueryUpdated: (result: string | null) => void;
|
|
20
|
+
onBeforeUserQueryCreated: (queryName: string) => void;
|
|
21
|
+
onAfterUserQueryCreated: (result: string | null) => void;
|
|
22
|
+
onError: (error: any, message: string) => void;
|
|
23
|
+
}
|
|
24
|
+
export type IDeletedUserQueriesResult = {
|
|
25
|
+
success: true;
|
|
26
|
+
deletedQueryIds: string[];
|
|
27
|
+
} | {
|
|
28
|
+
success: false;
|
|
29
|
+
deletedQueryIds: string[];
|
|
30
|
+
errors: {
|
|
31
|
+
queryId: string;
|
|
32
|
+
error: any;
|
|
33
|
+
}[];
|
|
34
|
+
};
|
|
35
|
+
export interface ISavedQuery extends ISavedQueryMetadata {
|
|
36
|
+
id: string;
|
|
37
|
+
name: string;
|
|
38
|
+
}
|
|
39
|
+
export interface ISavedQueryMetadata {
|
|
40
|
+
columns: IColumn[];
|
|
41
|
+
sorting?: ComponentFramework.PropertyHelper.DataSetApi.SortStatus[];
|
|
42
|
+
filtering?: ComponentFramework.PropertyHelper.DataSetApi.FilterExpression;
|
|
43
|
+
linking?: ComponentFramework.PropertyHelper.DataSetApi.LinkEntityExposedExpression[];
|
|
44
|
+
isFlatListEnabled?: boolean;
|
|
45
|
+
searchQuery?: string | undefined;
|
|
46
|
+
}
|
|
47
|
+
/** Strategy interface for loading and persisting system and user-defined saved views (queries). */
|
|
48
|
+
export interface ISavedQueryStrategy {
|
|
49
|
+
/** Returns the built-in (non-deletable) views. At least one system query must be returned. */
|
|
50
|
+
onGetSystemQueries: () => Promise<ISavedQuery[]>;
|
|
51
|
+
/** Returns views saved by the current user. */
|
|
52
|
+
onGetUserQueries: () => Promise<ISavedQuery[]>;
|
|
53
|
+
/** Deletes the specified user views. Returns a per-query success/failure result. */
|
|
54
|
+
onDeleteUserQueries: (queryIds: string[]) => Promise<IDeletedUserQueriesResult>;
|
|
55
|
+
/** @returns The updated query id, or `null` if the operation was cancelled by the user. Throws on unexpected failure. */
|
|
56
|
+
onUpdateUserQuery: (currentQuery: ISavedQuery) => Promise<string | null>;
|
|
57
|
+
/** @returns The created query id, or `null` if the operation was cancelled by the user. Throws on unexpected failure. */
|
|
58
|
+
onCreateUserQuery: (newQuery: {
|
|
59
|
+
name: string;
|
|
60
|
+
description?: string;
|
|
61
|
+
}, currentQuery: ISavedQuery) => Promise<string | null>;
|
|
62
|
+
}
|
|
63
|
+
/** Manages system and user-defined saved views and exposes view lifecycle operations. */
|
|
64
|
+
export interface ISavedQueryDataProvider {
|
|
65
|
+
/** EventEmitter for saved-query lifecycle events (create, update, delete, errors). */
|
|
66
|
+
queryEvents: IEventEmitter<ISavedQueryDataProviderEvents>;
|
|
67
|
+
/** Returns the full list of non-deletable system views. */
|
|
68
|
+
getSystemQueries: () => ISavedQuery[];
|
|
69
|
+
/** Returns the full list of user-created views. */
|
|
70
|
+
getUserQueries: () => ISavedQuery[];
|
|
71
|
+
/** Returns the currently active saved query. Throws if `refresh` has not been called yet. */
|
|
72
|
+
getCurrentQuery: () => ISavedQuery;
|
|
73
|
+
/** Looks up a query by id across system and user queries. Throws if not found. */
|
|
74
|
+
getSavedQuery(id: string): ISavedQuery;
|
|
75
|
+
/** @returns The created query id, or `null` if the operation was cancelled by the user. Throws on unexpected failure. */
|
|
76
|
+
createUserQuery: (params: ICreateUserQueryParams) => Promise<string | null>;
|
|
77
|
+
/** Returns `true` when the given query id belongs to a user view (as opposed to a system view). */
|
|
78
|
+
isUserQuery: (queryId: string) => boolean;
|
|
79
|
+
/** @returns The updated query id, or `null` if the operation was cancelled by the user. Throws on unexpected failure. */
|
|
80
|
+
updateUserQuery: (provider: ITaskDataProvider) => Promise<string | null>;
|
|
81
|
+
/** Deletes the specified user views. Returns a per-query success/failure result. */
|
|
82
|
+
deleteUserQueries: (queryIds: string[]) => Promise<IDeletedUserQueriesResult>;
|
|
83
|
+
/** Fetches system and user queries from the strategy and sets the initial active query. */
|
|
84
|
+
refresh: () => Promise<void>;
|
|
85
|
+
/** Ensures all required native columns (subject, parentId, stackRank, path, stateCode) are present in the provided columns array. */
|
|
86
|
+
includeRequiredColumns: (columns: IColumn[]) => void;
|
|
87
|
+
/** Enforces column constraints: subject is never hidden; path column is always read-only. */
|
|
88
|
+
harmonizeColumns: (columns: IColumn[]) => void;
|
|
89
|
+
destroy: () => void;
|
|
90
|
+
}
|
|
91
|
+
interface ISavedQueryDataProviderParameters {
|
|
92
|
+
nativeColumns: INativeColumns;
|
|
93
|
+
customColumnsDataProvider?: ICustomColumnsDataProvider;
|
|
94
|
+
preferredQuery?: Partial<ISavedQuery> & {
|
|
95
|
+
id: string;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export declare class SavedQueryDataProvider implements ISavedQueryDataProvider {
|
|
99
|
+
private _strategy;
|
|
100
|
+
private _systemQueries;
|
|
101
|
+
private _currentQuery?;
|
|
102
|
+
private _userQueries;
|
|
103
|
+
private _customColumnsDataProvider?;
|
|
104
|
+
private _nativeColumns;
|
|
105
|
+
private _preferredQuery?;
|
|
106
|
+
queryEvents: EventEmitter<ISavedQueryDataProviderEvents>;
|
|
107
|
+
constructor(strategy: ISavedQueryStrategy, parameters: ISavedQueryDataProviderParameters);
|
|
108
|
+
getSystemQueries(): ISavedQuery[];
|
|
109
|
+
getUserQueries(): ISavedQuery[];
|
|
110
|
+
getCurrentQuery(): ISavedQuery;
|
|
111
|
+
isUserQuery(queryId: string): boolean;
|
|
112
|
+
getSavedQuery(id: string): ISavedQuery;
|
|
113
|
+
updateUserQuery(provider: ITaskDataProvider): Promise<string | null>;
|
|
114
|
+
createUserQuery(params: ICreateUserQueryParams): Promise<string | null>;
|
|
115
|
+
deleteUserQueries(queryIds: string[]): Promise<IDeletedUserQueriesResult>;
|
|
116
|
+
destroy(): Promise<void>;
|
|
117
|
+
refresh(): Promise<void>;
|
|
118
|
+
private _getMetadataForSavedQuery;
|
|
119
|
+
private _addPropToMetadataQueryCol;
|
|
120
|
+
private _isCustomColumnResolvable;
|
|
121
|
+
private _parseSavedQueryMetadata;
|
|
122
|
+
includeRequiredColumns(columns: IColumn[]): void;
|
|
123
|
+
harmonizeColumns(columns: IColumn[]): void;
|
|
124
|
+
}
|
|
125
|
+
export {};
|
package/dist/components/TaskGrid/data-providers/saved-query-data-provider/SavedQueryDataProvider.js
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { EventEmitter } from '@talxis/client-libraries';
|
|
2
|
+
import { ErrorHelper } from '../../../../utils/error-handling/ErrorHelper.js';
|
|
3
|
+
|
|
4
|
+
const REQUIRED_COLUMNS = ['subject', 'parentId', 'stackRank', 'path', 'stateCode'];
|
|
5
|
+
class SavedQueryDataProvider {
|
|
6
|
+
constructor(strategy, parameters) {
|
|
7
|
+
this._systemQueries = [];
|
|
8
|
+
this._userQueries = [];
|
|
9
|
+
this.queryEvents = new EventEmitter();
|
|
10
|
+
this._strategy = strategy;
|
|
11
|
+
this._preferredQuery = parameters.preferredQuery;
|
|
12
|
+
this._nativeColumns = parameters.nativeColumns;
|
|
13
|
+
this._customColumnsDataProvider = parameters.customColumnsDataProvider;
|
|
14
|
+
}
|
|
15
|
+
getSystemQueries() {
|
|
16
|
+
return this._systemQueries;
|
|
17
|
+
}
|
|
18
|
+
getUserQueries() {
|
|
19
|
+
return this._userQueries;
|
|
20
|
+
}
|
|
21
|
+
getCurrentQuery() {
|
|
22
|
+
if (!this._currentQuery) {
|
|
23
|
+
throw new Error('Current query is not set. Make sure to call refresh() and wait for it to complete before accessing the current query.');
|
|
24
|
+
}
|
|
25
|
+
return this._currentQuery;
|
|
26
|
+
}
|
|
27
|
+
isUserQuery(queryId) {
|
|
28
|
+
return this._userQueries.some(q => q.id === queryId);
|
|
29
|
+
}
|
|
30
|
+
getSavedQuery(id) {
|
|
31
|
+
const query = [...this._systemQueries, ...this._userQueries].find(q => q.id === id);
|
|
32
|
+
if (!query) {
|
|
33
|
+
throw new Error(`Query with id ${id} not found. Make sure to call refresh() and wait for it to complete before accessing the saved query.`);
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
...query,
|
|
37
|
+
...this._parseSavedQueryMetadata(query)
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
async updateUserQuery(provider) {
|
|
41
|
+
this.queryEvents.dispatchEvent('onBeforeUserQueryUpdated', this.getCurrentQuery().id);
|
|
42
|
+
return ErrorHelper.executeWithErrorHandling({
|
|
43
|
+
operation: async () => {
|
|
44
|
+
const result = await this._strategy.onUpdateUserQuery({
|
|
45
|
+
...this.getCurrentQuery(),
|
|
46
|
+
...this._getMetadataForSavedQuery(provider)
|
|
47
|
+
});
|
|
48
|
+
this.queryEvents.dispatchEvent('onAfterUserQueryUpdated', result);
|
|
49
|
+
return result;
|
|
50
|
+
},
|
|
51
|
+
onError: (error, message) => this.queryEvents.dispatchEvent('onError', error, message)
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
async createUserQuery(params) {
|
|
55
|
+
const { name, description, provider } = params;
|
|
56
|
+
this.queryEvents.dispatchEvent('onBeforeUserQueryCreated', name);
|
|
57
|
+
return ErrorHelper.executeWithErrorHandling({
|
|
58
|
+
operation: async () => {
|
|
59
|
+
const result = await this._strategy.onCreateUserQuery({
|
|
60
|
+
name: name,
|
|
61
|
+
description: description,
|
|
62
|
+
}, {
|
|
63
|
+
...this.getCurrentQuery(),
|
|
64
|
+
...this._getMetadataForSavedQuery(provider)
|
|
65
|
+
});
|
|
66
|
+
this.queryEvents.dispatchEvent('onAfterUserQueryCreated', result);
|
|
67
|
+
return result;
|
|
68
|
+
},
|
|
69
|
+
onError: (error, message) => this.queryEvents.dispatchEvent('onError', error, message)
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async deleteUserQueries(queryIds) {
|
|
73
|
+
this.queryEvents.dispatchEvent('onBeforeUserQueriesDeleted', queryIds);
|
|
74
|
+
return ErrorHelper.executeWithErrorHandling({
|
|
75
|
+
operation: async () => {
|
|
76
|
+
const result = await this._strategy.onDeleteUserQueries(queryIds);
|
|
77
|
+
this.queryEvents.dispatchEvent('onAfterUserQueriesDeleted', result);
|
|
78
|
+
return result;
|
|
79
|
+
},
|
|
80
|
+
onError: (error, message) => this.queryEvents.dispatchEvent('onError', error, message)
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
async destroy() {
|
|
84
|
+
this.queryEvents.clearEventListeners();
|
|
85
|
+
}
|
|
86
|
+
async refresh() {
|
|
87
|
+
const systemQueries = await this._strategy.onGetSystemQueries();
|
|
88
|
+
const userQueries = await this._strategy.onGetUserQueries();
|
|
89
|
+
const allQueries = [...systemQueries, ...userQueries];
|
|
90
|
+
this._systemQueries = systemQueries;
|
|
91
|
+
this._userQueries = userQueries;
|
|
92
|
+
if (this._systemQueries.length === 0) {
|
|
93
|
+
throw new Error('At least one system query is required');
|
|
94
|
+
}
|
|
95
|
+
this._currentQuery = allQueries.find(q => q.id === this._preferredQuery?.id) ?? userQueries[0] ?? systemQueries[0];
|
|
96
|
+
this._currentQuery = {
|
|
97
|
+
...this._currentQuery,
|
|
98
|
+
//makes sure custom columns from the current query are properly merged with the columns from the custom columns data provider strategy
|
|
99
|
+
...this._parseSavedQueryMetadata(this._currentQuery)
|
|
100
|
+
};
|
|
101
|
+
this.includeRequiredColumns(this._currentQuery.columns);
|
|
102
|
+
this.harmonizeColumns(this._currentQuery.columns);
|
|
103
|
+
}
|
|
104
|
+
_getMetadataForSavedQuery(provider) {
|
|
105
|
+
return {
|
|
106
|
+
sorting: provider.getSorting(),
|
|
107
|
+
filtering: provider.getFiltering() ?? undefined,
|
|
108
|
+
linking: provider.getLinking(),
|
|
109
|
+
searchQuery: provider.getSearchQuery(),
|
|
110
|
+
isFlatListEnabled: provider.isFlatListEnabled(),
|
|
111
|
+
columns: [
|
|
112
|
+
...provider.getColumns().map((col) => {
|
|
113
|
+
const newCol = {
|
|
114
|
+
name: col.name,
|
|
115
|
+
isHidden: col.isHidden,
|
|
116
|
+
dataType: col.dataType,
|
|
117
|
+
order: col.order,
|
|
118
|
+
visualSizeFactor: col.visualSizeFactor,
|
|
119
|
+
metadata: {}
|
|
120
|
+
};
|
|
121
|
+
this._addPropToMetadataQueryCol(newCol, 'isVirtual', col.isVirtual);
|
|
122
|
+
this._addPropToMetadataQueryCol(newCol, 'autoHeight', col.autoHeight);
|
|
123
|
+
return newCol;
|
|
124
|
+
})
|
|
125
|
+
]
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
_addPropToMetadataQueryCol(col, propName, propValue) {
|
|
129
|
+
if (propValue != undefined) {
|
|
130
|
+
col[propName] = propValue;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
_isCustomColumnResolvable(name, customColumnsMap) {
|
|
134
|
+
return !this._customColumnsDataProvider.isCustomColumn(name) ||
|
|
135
|
+
!!customColumnsMap.get(name);
|
|
136
|
+
}
|
|
137
|
+
_parseSavedQueryMetadata(metadata) {
|
|
138
|
+
const parsed = metadata;
|
|
139
|
+
if (!this._customColumnsDataProvider) {
|
|
140
|
+
return parsed;
|
|
141
|
+
}
|
|
142
|
+
const customColumnsMap = new Map(this._customColumnsDataProvider.getColumns().map(col => [col.name, col]));
|
|
143
|
+
let columns = parsed.columns.filter(col => this._isCustomColumnResolvable(col.name, customColumnsMap));
|
|
144
|
+
columns = columns.map(col => {
|
|
145
|
+
const customCol = customColumnsMap.get(col.name);
|
|
146
|
+
return customCol ? { ...customCol, ...col, metadata: { ...customCol.metadata, ...col.metadata } } : col;
|
|
147
|
+
});
|
|
148
|
+
return {
|
|
149
|
+
...parsed,
|
|
150
|
+
sorting: parsed.sorting?.filter(sort => this._isCustomColumnResolvable(sort.name, customColumnsMap)),
|
|
151
|
+
columns: columns,
|
|
152
|
+
filtering: parsed.filtering ? {
|
|
153
|
+
...parsed.filtering,
|
|
154
|
+
conditions: parsed.filtering.conditions.filter(condition => this._isCustomColumnResolvable(condition.attributeName, customColumnsMap))
|
|
155
|
+
} : undefined
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
includeRequiredColumns(columns) {
|
|
159
|
+
const allQueries = [...this.getSystemQueries(), ...this.getUserQueries()];
|
|
160
|
+
const allQueryColumns = [...new Map(allQueries.flatMap(query => query.columns.map(col => [col.name, col]))).values()];
|
|
161
|
+
for (const requiredColumnName of REQUIRED_COLUMNS) {
|
|
162
|
+
const mappedRequiredColumnName = this._nativeColumns[requiredColumnName];
|
|
163
|
+
if (!columns.find(col => col.name === mappedRequiredColumnName)) {
|
|
164
|
+
const columnFromQueries = allQueryColumns.find(col => col.name === mappedRequiredColumnName);
|
|
165
|
+
if (!columnFromQueries) {
|
|
166
|
+
throw new Error(`Required column ${mappedRequiredColumnName} is missing from both current query and all available queries`);
|
|
167
|
+
}
|
|
168
|
+
columns.push(columnFromQueries);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
harmonizeColumns(columns) {
|
|
173
|
+
for (const column of columns) {
|
|
174
|
+
switch (column.name) {
|
|
175
|
+
case this._nativeColumns.subject: {
|
|
176
|
+
column.isHidden = false;
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
case this._nativeColumns.path: {
|
|
180
|
+
column.metadata = {
|
|
181
|
+
...column.metadata,
|
|
182
|
+
IsValidForUpdate: false
|
|
183
|
+
};
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export { SavedQueryDataProvider };
|
|
192
|
+
//# sourceMappingURL=SavedQueryDataProvider.js.map
|