@adaptabletools/adaptable 22.0.0-canary.0 → 22.0.0-canary.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.
Files changed (138) hide show
  1. package/README.md +4 -6
  2. package/index.css +3 -14
  3. package/index.css.map +1 -1
  4. package/package.json +1 -1
  5. package/src/AdaptableInterfaces/IAdaptable.d.ts +9 -0
  6. package/src/AdaptableOptions/AdaptablePlugin.js +6 -1
  7. package/src/AdaptableOptions/ExportOptions.d.ts +1 -2
  8. package/src/AdaptableOptions/FilterOptions.d.ts +3 -0
  9. package/src/AdaptableState/Common/AdaptableColumn.d.ts +6 -0
  10. package/src/AdaptableState/Common/RowDataChangedInfo.d.ts +3 -0
  11. package/src/AdaptableState/InitialState.d.ts +1 -1
  12. package/src/AdaptableState/Selection/GridCell.d.ts +9 -0
  13. package/src/Api/GridApi.d.ts +14 -0
  14. package/src/Api/Implementation/ActionColumnApiImpl.js +1 -0
  15. package/src/Api/Implementation/AdaptableApiImpl.js +52 -0
  16. package/src/Api/Implementation/AlertApiImpl.js +1 -0
  17. package/src/Api/Implementation/ApiBase.js +1 -0
  18. package/src/Api/Implementation/CalculatedColumnApiImpl.js +1 -0
  19. package/src/Api/Implementation/ChartingApiImpl.js +4 -0
  20. package/src/Api/Implementation/ColumnApiImpl.js +1 -0
  21. package/src/Api/Implementation/ColumnFilterApiImpl.js +1 -0
  22. package/src/Api/Implementation/CommentsApiImpl.js +1 -0
  23. package/src/Api/Implementation/CustomSortApiImpl.js +1 -0
  24. package/src/Api/Implementation/DashboardApiImpl.js +1 -0
  25. package/src/Api/Implementation/DataChangeHistoryApiImpl.js +12 -15
  26. package/src/Api/Implementation/DataImportApiImpl.js +1 -0
  27. package/src/Api/Implementation/DataSetApiImpl.js +1 -0
  28. package/src/Api/Implementation/EntitlementApiImpl.js +1 -0
  29. package/src/Api/Implementation/EventApiImpl.js +16 -14
  30. package/src/Api/Implementation/ExportApiImpl.js +1 -0
  31. package/src/Api/Implementation/ExpressionApiImpl.js +1 -0
  32. package/src/Api/Implementation/Fdc3ApiImpl.js +1 -0
  33. package/src/Api/Implementation/FilterApiImpl.js +3 -0
  34. package/src/Api/Implementation/FlashingCellApiImpl.js +1 -0
  35. package/src/Api/Implementation/FormatColumnApiImpl.js +1 -0
  36. package/src/Api/Implementation/FreeTextColumnApiImpl.js +1 -0
  37. package/src/Api/Implementation/GridApiImpl.d.ts +9 -0
  38. package/src/Api/Implementation/GridApiImpl.js +17 -0
  39. package/src/Api/Implementation/GridFilterApiImpl.js +1 -0
  40. package/src/Api/Implementation/LayoutApiImpl.js +1 -0
  41. package/src/Api/Implementation/NamedQueryApiImpl.js +1 -0
  42. package/src/Api/Implementation/NoteApiImpl.js +1 -0
  43. package/src/Api/Implementation/PredicateApiImpl.js +1 -0
  44. package/src/Api/Implementation/RowFormApiImpl.js +1 -0
  45. package/src/Api/Implementation/StyledColumnApiImpl.js +1 -0
  46. package/src/Api/Implementation/SystemStatusApiImpl.js +2 -0
  47. package/src/Api/Implementation/TeamSharingApiImpl.js +1 -0
  48. package/src/Api/Implementation/ThemeApiImpl.js +1 -0
  49. package/src/Api/Implementation/UserInterfaceApiImpl.js +2 -1
  50. package/src/Redux/Store/AdaptableReduxLocalStorageEngine.js +6 -0
  51. package/src/Redux/Store/AdaptableStore.js +57 -50
  52. package/src/Strategy/AdaptableModuleBase.js +4 -0
  53. package/src/Strategy/AlertModule.js +1 -0
  54. package/src/Strategy/CalculatedColumnModule.js +1 -0
  55. package/src/Strategy/CellSummaryModule.js +1 -1
  56. package/src/Strategy/DataChangeHistoryModule.js +1 -0
  57. package/src/Strategy/FlashingCellModule.js +1 -0
  58. package/src/Strategy/FreeTextColumnModule.js +1 -0
  59. package/src/Strategy/LayoutModule.js +2 -1
  60. package/src/Strategy/PlusMinusModule.js +2 -0
  61. package/src/Strategy/ScheduleModule.js +1 -0
  62. package/src/Strategy/ShortcutModule.js +2 -0
  63. package/src/Strategy/TeamSharingModule.js +10 -10
  64. package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +18 -17
  65. package/src/Utilities/Constants/DocumentationLinkConstants.js +18 -17
  66. package/src/Utilities/ExpressionFunctions/deepMap.js +31 -31
  67. package/src/Utilities/MenuItem.js +18 -0
  68. package/src/Utilities/Services/AggregatedScalarLiveValue.js +8 -0
  69. package/src/Utilities/Services/AlertService.js +6 -4
  70. package/src/Utilities/Services/AnnotationsService.js +3 -0
  71. package/src/Utilities/Services/CalculatedColumnExpressionService.js +2 -1
  72. package/src/Utilities/Services/ChartingService.js +1 -0
  73. package/src/Utilities/Services/DataService.js +10 -2
  74. package/src/Utilities/Services/Fdc3Service.js +5 -3
  75. package/src/Utilities/Services/FlashingCellService.js +5 -0
  76. package/src/Utilities/Services/LicenseService/index.js +1 -1
  77. package/src/Utilities/Services/MetamodelService.js +2 -2
  78. package/src/Utilities/Services/ModuleService.js +38 -38
  79. package/src/Utilities/Services/QueryLanguageService.js +6 -5
  80. package/src/Utilities/Services/RowFormService.js +1 -0
  81. package/src/Utilities/Services/RowSummaryService.js +10 -7
  82. package/src/Utilities/Services/TeamSharingService.js +3 -1
  83. package/src/Utilities/Services/ThemeService.js +11 -9
  84. package/src/Utilities/Services/ValidationService.js +1 -0
  85. package/src/Utilities/createAgStatusPanelComponent.js +3 -0
  86. package/src/View/BulkUpdate/BulkUpdateViewPanel.js +1 -0
  87. package/src/View/CalculatedColumn/CalculatedColumnSummary.js +8 -8
  88. package/src/View/CellSummary/CellSummaryViewPanel.js +1 -0
  89. package/src/View/Components/Buttons/ButtonBase/index.js +9 -9
  90. package/src/View/Components/Buttons/EntityListActionButtons.js +18 -18
  91. package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +1 -1
  92. package/src/View/Components/ExpressionWizard.js +5 -5
  93. package/src/View/Components/Panels/PanelDashboard/index.js +8 -8
  94. package/src/View/Components/Panels/PanelToolPanel/index.js +7 -7
  95. package/src/View/Components/ToolPanel/AdaptableToolPanel.js +2 -0
  96. package/src/View/CustomSort/CustomSortSummary.js +13 -13
  97. package/src/View/FormatColumn/FormatColumnSummary.js +13 -13
  98. package/src/View/FreeTextColumn/FreeTextColumnSummary.js +13 -13
  99. package/src/View/SmartEdit/SmartEditViewPanel.js +1 -0
  100. package/src/View/Theme/ThemePopup.js +13 -16
  101. package/src/agGrid/Adaptable.js +4 -0
  102. package/src/agGrid/AdaptableAgGrid.d.ts +9 -0
  103. package/src/agGrid/AdaptableAgGrid.js +160 -37
  104. package/src/agGrid/AdaptableFilterHandler.js +4 -0
  105. package/src/agGrid/AdaptableLogger.d.ts +3 -0
  106. package/src/agGrid/AdaptableLogger.js +10 -0
  107. package/src/agGrid/AgGridAdapter.js +11 -1
  108. package/src/agGrid/AgGridColumnAdapter.js +2 -0
  109. package/src/agGrid/AgGridExportAdapter.js +10 -9
  110. package/src/agGrid/AgGridFilterAdapter.js +4 -0
  111. package/src/agGrid/AgGridFloatingFilterAdapter.js +3 -0
  112. package/src/agGrid/AgGridMenuAdapter.js +1 -0
  113. package/src/agGrid/AgGridModulesAdapter.js +2 -1
  114. package/src/agGrid/AgGridOptionsService.js +3 -0
  115. package/src/agGrid/AgGridThemeAdapter.js +2 -0
  116. package/src/agGrid/cellRenderers/ActionColumnRenderer.js +5 -0
  117. package/src/agGrid/cellRenderers/BadgeRenderer.js +2 -0
  118. package/src/agGrid/cellRenderers/PercentBarRenderer.js +1 -0
  119. package/src/agGrid/editors/AdaptableDateEditor/index.js +6 -3
  120. package/src/agGrid/editors/AdaptableNumberEditor/index.js +16 -12
  121. package/src/agGrid/editors/AdaptablePercentageEditor/index.js +17 -13
  122. package/src/agGrid/index.d.ts +6 -0
  123. package/src/agGrid/index.js +6 -0
  124. package/src/components/Datepicker/index.js +1 -1
  125. package/src/components/overlayBaseZIndex.js +1 -1
  126. package/src/components/utils/useContainerScrollObserver/index.js +17 -14
  127. package/src/devTools/index.js +54 -53
  128. package/src/env.js +2 -2
  129. package/src/layout-manager/src/LMEmitter.js +11 -11
  130. package/src/layout-manager/src/LMLogger.js +7 -0
  131. package/src/layout-manager/src/index.js +56 -51
  132. package/src/metamodel/adaptable.metamodel.d.ts +57 -0
  133. package/src/metamodel/adaptable.metamodel.js +1 -1
  134. package/src/migration/AdaptableUpgradeHelper.js +3 -0
  135. package/src/migration/VersionUpgrade.js +1 -0
  136. package/src/migration/VersionUpgrade17.js +1 -2
  137. package/src/parser/src/ExpressionEvaluationError.js +1 -0
  138. package/tsconfig.esm.tsbuildinfo +1 -1
@@ -49,6 +49,58 @@ import { ContextMenuApiImpl } from './ContextMenuApiImpl';
49
49
  import { FilterApiImpl } from './FilterApiImpl';
50
50
  import { RowFormApiImpl } from './RowFormApiImpl';
51
51
  export class AdaptableApiImpl {
52
+ adaptable;
53
+ internalApi;
54
+ optionsApi;
55
+ actionColumnApi;
56
+ applicationApi;
57
+ alertApi;
58
+ flashingCellApi;
59
+ predicateApi;
60
+ bulkUpdateApi;
61
+ calendarApi;
62
+ calculatedColumnApi;
63
+ cellSummaryApi;
64
+ columnApi;
65
+ stateApi;
66
+ customSortApi;
67
+ dashboardApi;
68
+ dataSetApi;
69
+ entitlementApi;
70
+ eventApi;
71
+ exportApi;
72
+ formatColumnApi;
73
+ freeTextColumnApi;
74
+ gridApi;
75
+ layoutApi;
76
+ plusMinusApi;
77
+ quickSearchApi;
78
+ rowFormApi;
79
+ scheduleApi;
80
+ shortcutApi;
81
+ smartEditApi;
82
+ filterApi;
83
+ systemStatusApi;
84
+ pluginsApi;
85
+ themeApi;
86
+ userInterfaceApi;
87
+ expressionApi;
88
+ settingsPanelApi;
89
+ styledColumnApi;
90
+ toolPanelApi;
91
+ teamSharingApi;
92
+ columnScopeApi;
93
+ dataChangeHistoryApi;
94
+ chartingApi;
95
+ statusBarApi;
96
+ noteApi;
97
+ columnMenuApi;
98
+ contextMenuApi;
99
+ fdc3Api;
100
+ dataImportApi;
101
+ namedQueryApi;
102
+ commentApi;
103
+ destroyed;
52
104
  constructor(adaptable) {
53
105
  this.adaptable = adaptable;
54
106
  this.destroyed = false;
@@ -8,6 +8,7 @@ import { isAdaptableCellChangedAlert, isAdaptableRowChangedAlert, } from '../../
8
8
  import StringExtensions from '../../Utilities/Extensions/StringExtensions';
9
9
  import { AlertInternalApi } from '../Internal/AlertInternalApi';
10
10
  export class AlertApiImpl extends ApiBase {
11
+ internalApi;
11
12
  constructor(_adaptable) {
12
13
  super(_adaptable);
13
14
  this.internalApi = new AlertInternalApi(_adaptable);
@@ -2,6 +2,7 @@ import Helper from '../../Utilities/Helpers/Helper';
2
2
  import { createUuid } from '../../AdaptableState/Uuid';
3
3
  // Base class for the Api - provides checking dispatching methods
4
4
  export class ApiBase {
5
+ _adaptable;
5
6
  /**
6
7
  * Constructor for all the api classes which simply takes and assigns an instance of Adaptable
7
8
  * @param _adaptable the core IAdaptable object
@@ -4,6 +4,7 @@ import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants';
4
4
  import { CalculatedColumnInternalApi } from '../Internal/CalculatedColumnInternalApi';
5
5
  import ArrayExtensions from '../../Utilities/Extensions/ArrayExtensions';
6
6
  export class CalculatedColumnApiImpl extends ApiBase {
7
+ internalApi;
7
8
  constructor(_adaptable) {
8
9
  super(_adaptable);
9
10
  this.internalApi = new CalculatedColumnInternalApi(_adaptable);
@@ -5,6 +5,10 @@ import StringExtensions from '../../Utilities/Extensions/StringExtensions';
5
5
  import { ChartingInternalApi } from '../Internal/ChartingInternalApi';
6
6
  import ObjectFactory from '../../Utilities/ObjectFactory';
7
7
  export class ChartingApiImpl extends ApiBase {
8
+ /**
9
+ * @internal
10
+ */
11
+ internalApi;
8
12
  constructor(_adaptable) {
9
13
  super(_adaptable);
10
14
  this.internalApi = new ChartingInternalApi(_adaptable);
@@ -109,6 +109,7 @@ export function isPivotGrandTotal(columnId) {
109
109
  return columnId?.startsWith(GeneralConstants.AG_GRID_PIVOT_GRAND_TOTAL_COLUMN);
110
110
  }
111
111
  export class ColumnApiImpl extends ApiBase {
112
+ internalApi;
112
113
  constructor(_adaptable) {
113
114
  super(_adaptable);
114
115
  this.internalApi = new ColumnInternalApi(_adaptable);
@@ -5,6 +5,7 @@ import ArrayExtensions from '../../Utilities/Extensions/ArrayExtensions';
5
5
  import { ColumnFilterInternalApi } from '../Internal/ColumnFilterInternalApi';
6
6
  import StringExtensions from '../../Utilities/Extensions/StringExtensions';
7
7
  export class ColumnFilterApiImpl extends ApiBase {
8
+ internalApi;
8
9
  constructor(_adaptable) {
9
10
  super(_adaptable);
10
11
  this.internalApi = new ColumnFilterInternalApi(_adaptable);
@@ -4,6 +4,7 @@ import ObjectFactory from '../../Utilities/ObjectFactory';
4
4
  import AdaptableHelper from '../../Utilities/Helpers/AdaptableHelper';
5
5
  import { CommentsInternalApi } from '../Internal/CommentsInternalApi';
6
6
  export class CommentsApiImpl extends ApiBase {
7
+ internalApi;
7
8
  constructor(_adaptable) {
8
9
  super(_adaptable);
9
10
  this.internalApi = new CommentsInternalApi(_adaptable);
@@ -3,6 +3,7 @@ import * as CustomSortRedux from '../../Redux/ActionsReducers/CustomSortRedux';
3
3
  import { ApiBase } from './ApiBase';
4
4
  import { CustomSortInternalApi } from '../Internal/CustomSortInternalApi';
5
5
  export class CustomSortApiImpl extends ApiBase {
6
+ internalApi;
6
7
  constructor(_adaptable) {
7
8
  super(_adaptable);
8
9
  this.internalApi = new CustomSortInternalApi(_adaptable);
@@ -5,6 +5,7 @@ import * as React from 'react';
5
5
  import { DashboardRefresh } from '../../Redux/ActionsReducers/InternalRedux';
6
6
  import { DashboardInternalApi } from '../Internal/DashboardInternalApi';
7
7
  export class DashboardApiImpl extends ApiBase {
8
+ internalApi;
8
9
  constructor(_adaptable) {
9
10
  super(_adaptable);
10
11
  this.internalApi = new DashboardInternalApi(_adaptable);
@@ -2,21 +2,6 @@ import { ApiBase } from './ApiBase';
2
2
  import { DataChangeHistoryClearRow, DataChangeHistoryDisable, DataChangeHistoryEnable, DataChangeHistoryResume, DataChangeHistorySuspend, DataChangeHistoryUndo, DataChangeHistoryAdd, } from '../../Redux/ActionsReducers/InternalRedux';
3
3
  import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants';
4
4
  export class DataChangeHistoryApiImpl extends ApiBase {
5
- constructor() {
6
- super(...arguments);
7
- this.getDataChangeHistoryKey = (dataChangeInfo) => {
8
- const columnId = dataChangeInfo.column.columnId;
9
- const primaryKeyValue = dataChangeInfo.primaryKeyValue;
10
- const changedAt = dataChangeInfo.changedAt;
11
- const showLastDataChangeOnly = this.getDataChangeHistoryOptions().showLastDataChangeOnly;
12
- if (showLastDataChangeOnly) {
13
- return JSON.stringify({ columnId, primaryKeyValue });
14
- }
15
- else {
16
- return JSON.stringify({ columnId, primaryKeyValue, changedAt });
17
- }
18
- };
19
- }
20
5
  getDataChangeHistoryMode() {
21
6
  return this.getAdaptableState().Internal.DataChangeHistory.currentMode;
22
7
  }
@@ -67,4 +52,16 @@ export class DataChangeHistoryApiImpl extends ApiBase {
67
52
  openDataChangeHistorySettingsPanel() {
68
53
  this.showModulePopup(ModuleConstants.DataChangeHistoryModuleId);
69
54
  }
55
+ getDataChangeHistoryKey = (dataChangeInfo) => {
56
+ const columnId = dataChangeInfo.column.columnId;
57
+ const primaryKeyValue = dataChangeInfo.primaryKeyValue;
58
+ const changedAt = dataChangeInfo.changedAt;
59
+ const showLastDataChangeOnly = this.getDataChangeHistoryOptions().showLastDataChangeOnly;
60
+ if (showLastDataChangeOnly) {
61
+ return JSON.stringify({ columnId, primaryKeyValue });
62
+ }
63
+ else {
64
+ return JSON.stringify({ columnId, primaryKeyValue, changedAt });
65
+ }
66
+ };
70
67
  }
@@ -1,6 +1,7 @@
1
1
  import { DataImportInternalApi } from '../Internal/DataImportInternalApi';
2
2
  import { ApiBase } from './ApiBase';
3
3
  export class DataImportApiImpl extends ApiBase {
4
+ internalApi;
4
5
  constructor(_adaptable) {
5
6
  super(_adaptable);
6
7
  this.internalApi = new DataImportInternalApi(_adaptable);
@@ -3,6 +3,7 @@ import * as InternalRedux from '../../Redux/ActionsReducers/InternalRedux';
3
3
  import { ApiBase } from './ApiBase';
4
4
  import { DataSetInternalApi } from '../Internal/DataSetInternalApi';
5
5
  export class DataSetApiImpl extends ApiBase {
6
+ internalApi;
6
7
  constructor(_adaptable) {
7
8
  super(_adaptable);
8
9
  this.internalApi = new DataSetInternalApi(_adaptable);
@@ -1,6 +1,7 @@
1
1
  import { ApiBase } from './ApiBase';
2
2
  import { EntitlementInternalApi } from '../Internal/EntitlementInternalApi';
3
3
  export class EntitlementApiImpl extends ApiBase {
4
+ internalApi;
4
5
  constructor(_adaptable) {
5
6
  super(_adaptable);
6
7
  this.internalApi = new EntitlementInternalApi(_adaptable);
@@ -2,22 +2,10 @@ import { ApiBase } from './ApiBase';
2
2
  import Emitter from '../../Utilities/Emitter';
3
3
  import { EventInternalApi } from '../Internal/EventInternalApi';
4
4
  export class EventApiImpl extends ApiBase {
5
+ emitter;
6
+ internalApi;
5
7
  constructor(_adaptable) {
6
8
  super(_adaptable);
7
- this.on = (eventName, callback) => {
8
- let result;
9
- if (eventName === 'AdaptableReady') {
10
- this.emitter.onIncludeFiredOnce(eventName).then(callback);
11
- return () => { };
12
- }
13
- else {
14
- result = this.emitter.on(eventName, callback);
15
- }
16
- return result;
17
- };
18
- this.off = (eventName, callback) => this.emitter.off(eventName, callback);
19
- this.emit = (eventName, data) => this.emitter.emit(eventName, data);
20
- this.emitSync = (eventName, data) => this.emitter.emitSync(eventName, data);
21
9
  this.emitter = new Emitter();
22
10
  this.internalApi = new EventInternalApi(_adaptable);
23
11
  }
@@ -26,4 +14,18 @@ export class EventApiImpl extends ApiBase {
26
14
  this.emitSync('AdaptableDestroy');
27
15
  this.emitter.destroy();
28
16
  }
17
+ on = (eventName, callback) => {
18
+ let result;
19
+ if (eventName === 'AdaptableReady') {
20
+ this.emitter.onIncludeFiredOnce(eventName).then(callback);
21
+ return () => { };
22
+ }
23
+ else {
24
+ result = this.emitter.on(eventName, callback);
25
+ }
26
+ return result;
27
+ };
28
+ off = (eventName, callback) => this.emitter.off(eventName, callback);
29
+ emit = (eventName, data) => this.emitter.emit(eventName, data);
30
+ emitSync = (eventName, data) => this.emitter.emitSync(eventName, data);
29
31
  }
@@ -4,6 +4,7 @@ import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants';
4
4
  import { ExportInternalApi } from '../Internal/ExportInternalApi';
5
5
  import { ALL_DATA_REPORT, CLIPBOARD_EXPORT_DESTINATION, DOWNLOAD_EXPORT_DESTINATION, EMPTY_STRING, SYSTEM_EXPORT_DESTINATIONS, SYSTEM_REPORT_FORMATS, SYSTEM_REPORT_NAMES, } from '../../Utilities/Constants/GeneralConstants';
6
6
  export class ExportApiImpl extends ApiBase {
7
+ internalApi;
7
8
  constructor(_adaptable) {
8
9
  super(_adaptable);
9
10
  this.internalApi = new ExportInternalApi(_adaptable);
@@ -2,6 +2,7 @@ import { ApiBase } from './ApiBase';
2
2
  import * as parser from '../../parser/src';
3
3
  import { ExpressionInternalApi } from '../Internal/ExpressionInternalApi';
4
4
  export class ExpressionApiImpl extends ApiBase {
5
+ internalApi;
5
6
  constructor(_adaptable) {
6
7
  super(_adaptable);
7
8
  this.internalApi = new ExpressionInternalApi(_adaptable);
@@ -2,6 +2,7 @@ import { ApiBase } from './ApiBase';
2
2
  import { Fdc3InternalApi } from '../Internal/Fdc3InternalApi';
3
3
  import { ContextConfiguration } from '../../AdaptableState/Common/Fdc3Context';
4
4
  export class Fdc3ApiImpl extends ApiBase {
5
+ internalApi;
5
6
  constructor(_adaptable) {
6
7
  super(_adaptable);
7
8
  this.internalApi = new Fdc3InternalApi(_adaptable);
@@ -3,6 +3,9 @@ import { FilterInternalApi } from '../Internal/FilterInternalApi';
3
3
  import { ColumnFilterApiImpl } from './ColumnFilterApiImpl';
4
4
  import { GridFilterApiImpl } from './GridFilterApiImpl';
5
5
  export class FilterApiImpl extends ApiBase {
6
+ internalApi;
7
+ columnFilterApi;
8
+ gridFilterApi;
6
9
  constructor(_adaptable) {
7
10
  super(_adaptable);
8
11
  this.internalApi = new FilterInternalApi(_adaptable);
@@ -2,6 +2,7 @@ import * as FlashingCellRedux from '../../Redux/ActionsReducers/FlashingCellRedu
2
2
  import { ApiBase } from './ApiBase';
3
3
  import { FlashingCellInternalApi } from '../Internal/FlashingCellInternalApi';
4
4
  export class FlashingCellApiImpl extends ApiBase {
5
+ internalApi;
5
6
  constructor(_adaptable) {
6
7
  super(_adaptable);
7
8
  this.internalApi = new FlashingCellInternalApi(_adaptable);
@@ -4,6 +4,7 @@ import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants';
4
4
  import { FormatColumnInternalApi } from '../Internal/FormatColumnInternalApi';
5
5
  import ArrayExtensions from '../../Utilities/Extensions/ArrayExtensions';
6
6
  export class FormatColumnApiImpl extends ApiBase {
7
+ internalApi;
7
8
  constructor(_adaptable) {
8
9
  super(_adaptable);
9
10
  this.internalApi = new FormatColumnInternalApi(_adaptable);
@@ -4,6 +4,7 @@ import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants';
4
4
  import ArrayExtensions from '../../Utilities/Extensions/ArrayExtensions';
5
5
  import { FreeTextColumnInternalApi } from '../Internal/FreeTextColumnInternalApi';
6
6
  export class FreeTextColumnApiImpl extends ApiBase {
7
+ internalApi;
7
8
  constructor(_adaptable) {
8
9
  super(_adaptable);
9
10
  this.internalApi = new FreeTextColumnInternalApi(_adaptable);
@@ -151,4 +151,13 @@ export declare class GridApiImpl extends ApiBase implements GridApi {
151
151
  updateAgGridColumnDefinitions(columnDefinitionsToBeUpdated: ColDefWithId[]): void;
152
152
  removeAgGridColumnDefinition(columnId: string): void;
153
153
  addAgGridColumnDefinition(newColumnDefinition: ColDefWithId): void;
154
+ applyGridDataTransaction(dataTransaction: {
155
+ add?: any[];
156
+ update?: any[];
157
+ remove?: any[];
158
+ }, config?: DataUpdateConfig): Promise<{
159
+ addedRows: IRowNode[];
160
+ updatedRows: IRowNode[];
161
+ removedRows: IRowNode[];
162
+ }>;
154
163
  }
@@ -7,6 +7,7 @@ import { WINDOW_SHOW_TRANSPOSED_VIEW } from '../../View/Components/Popups/Window
7
7
  import { ROW_SUMMARY_ROW_ID } from '../../AdaptableState/Common/RowSummary';
8
8
  import { errorOnce } from '../../agGrid/AdaptableLogger';
9
9
  export class GridApiImpl extends ApiBase {
10
+ internalApi;
10
11
  constructor(_adaptable) {
11
12
  super(_adaptable);
12
13
  this.internalApi = new GridInternalApi(_adaptable);
@@ -683,4 +684,20 @@ export class GridApiImpl extends ApiBase {
683
684
  .filter(Boolean);
684
685
  this.setAgGridColumnDefinitions([...sanitizedColDefs, newColumnDefinition]);
685
686
  }
687
+ async applyGridDataTransaction(dataTransaction, config) {
688
+ const transactionResult = await this._adaptable.applyGridDataTransaction(dataTransaction, config);
689
+ if (Array.isArray(transactionResult.removedRows) && transactionResult.removedRows.length) {
690
+ const rowDataChangedInfo = this.getAdaptableInternalApi().buildRowDataChangedInfo(dataTransaction.remove, transactionResult.removedRows, 'Delete');
691
+ this.getAdaptableInternalApi().getDataService().CreateRowDataChangedEvent(rowDataChangedInfo);
692
+ }
693
+ if (Array.isArray(transactionResult.updatedRows) && transactionResult.updatedRows.length) {
694
+ const rowDataChangedInfo = this.getAdaptableInternalApi().buildRowDataChangedInfo(dataTransaction.update, transactionResult.updatedRows, 'Update');
695
+ this.getAdaptableInternalApi().getDataService().CreateRowDataChangedEvent(rowDataChangedInfo);
696
+ }
697
+ if (Array.isArray(transactionResult.addedRows) && transactionResult.addedRows.length) {
698
+ const rowDataChangedInfo = this.getAdaptableInternalApi().buildRowDataChangedInfo(dataTransaction.add, transactionResult.addedRows, 'Add');
699
+ this.getAdaptableInternalApi().getDataService().CreateRowDataChangedEvent(rowDataChangedInfo);
700
+ }
701
+ return transactionResult;
702
+ }
686
703
  }
@@ -4,6 +4,7 @@ import { GridFilterInternalApi } from '../Internal/GridFilterInternalApi';
4
4
  import { ApiBase } from './ApiBase';
5
5
  import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants';
6
6
  export class GridFilterApiImpl extends ApiBase {
7
+ internalApi;
7
8
  constructor(_adaptable) {
8
9
  super(_adaptable);
9
10
  this.internalApi = new GridFilterInternalApi(_adaptable);
@@ -8,6 +8,7 @@ import { LayoutInternalApi } from '../Internal/LayoutInternalApi';
8
8
  import { isPivotLayout, normalizeLayout } from './LayoutHelpers';
9
9
  import { ERROR_LAYOUT } from '../../Utilities/Constants/GeneralConstants';
10
10
  export class LayoutApiImpl extends ApiBase {
11
+ internalApi;
11
12
  constructor(_adaptable) {
12
13
  super(_adaptable);
13
14
  this.internalApi = new LayoutInternalApi(_adaptable);
@@ -4,6 +4,7 @@ import { NamedQueryInternalApi } from '../Internal/NamedQueryInternalApi';
4
4
  import { ApiBase } from './ApiBase';
5
5
  import * as NamedQueryRedux from '../../Redux/ActionsReducers/NamedQueryRedux';
6
6
  export class NamedQueryApiImpl extends ApiBase {
7
+ internalApi;
7
8
  constructor(_adaptable) {
8
9
  super(_adaptable);
9
10
  this.internalApi = new NamedQueryInternalApi(_adaptable);
@@ -2,6 +2,7 @@ import { ApiBase } from './ApiBase';
2
2
  import * as NoteRedux from '../../Redux/ActionsReducers/NoteRedux';
3
3
  import { NoteInternalApi } from '../Internal/NoteInternalApi';
4
4
  export class NoteApiImpl extends ApiBase {
5
+ internalApi;
5
6
  constructor(_adaptable) {
6
7
  super(_adaptable);
7
8
  this.internalApi = new NoteInternalApi(_adaptable);
@@ -26,6 +26,7 @@ export const getTreeSelectionStateForPredicateInputs = (inputs, cache = treeSele
26
26
  return newTreeSelectionState;
27
27
  };
28
28
  export class PredicateApiImpl extends ApiBase {
29
+ internalApi;
29
30
  constructor(_adaptable) {
30
31
  super(_adaptable);
31
32
  this.internalApi = new PredicateInternalApi(_adaptable);
@@ -2,6 +2,7 @@ import { ApiBase } from './ApiBase';
2
2
  import { RowFormInternalApi } from '../Internal/RowFormInternalApi';
3
3
  import { PopupShowForm } from '../../Redux/ActionsReducers/PopupRedux';
4
4
  export class RowFormApiImpl extends ApiBase {
5
+ internalApi;
5
6
  constructor(_adaptable) {
6
7
  super(_adaptable);
7
8
  this.internalApi = new RowFormInternalApi(_adaptable);
@@ -3,6 +3,7 @@ import * as StyledColumnRedux from '../../Redux/ActionsReducers/StyledColumnRedu
3
3
  import { StyledColumnInternalApi } from '../Internal/StyledColumnInternalApi';
4
4
  import * as ModuleConstants from '../../Utilities/Constants/ModuleConstants';
5
5
  export class StyledColumnApiImpl extends ApiBase {
6
+ internalApi;
6
7
  constructor(_adaptable) {
7
8
  super(_adaptable);
8
9
  this.internalApi = new StyledColumnInternalApi(_adaptable);
@@ -8,6 +8,8 @@ import UIHelper from '../../View/UIHelper';
8
8
  import StringExtensions from '../../Utilities/Extensions/StringExtensions';
9
9
  import { SystemStatusInternalApi } from '../Internal/SystemStatusInternalApi';
10
10
  export class SystemStatusApiImpl extends ApiBase {
11
+ systemStatusDiv;
12
+ internalApi;
11
13
  constructor(_adaptable) {
12
14
  super(_adaptable);
13
15
  this.internalApi = new SystemStatusInternalApi(_adaptable);
@@ -5,6 +5,7 @@ import { TeamSharingCheckForUpdates } from '../../Redux/ActionsReducers/TeamShar
5
5
  import { TeamSharingInternalApi } from '../Internal/TeamSharingInternalApi';
6
6
  import { isAdaptableSharedEntity, isCustomSharedEntity, } from '../../AdaptableState/TeamSharingState';
7
7
  export class TeamSharingApiImpl extends ApiBase {
8
+ internalApi;
8
9
  constructor(_adaptable) {
9
10
  super(_adaptable);
10
11
  this.internalApi = new TeamSharingInternalApi(_adaptable);
@@ -6,6 +6,7 @@ import { ThemeInternalApi } from '../Internal/ThemeInternalApi';
6
6
  import AdaptableHelper from '../../Utilities/Helpers/AdaptableHelper';
7
7
  import { logDeprecation } from '../../Utilities/logDeprecation';
8
8
  export class ThemeApiImpl extends ApiBase {
9
+ internalApi;
9
10
  constructor(_adaptable) {
10
11
  super(_adaptable);
11
12
  this.internalApi = new ThemeInternalApi(_adaptable);
@@ -5,9 +5,10 @@ import { UserInterfaceInternalApi } from '../Internal/UserInterfaceInternalApi';
5
5
  import { ApiBase } from './ApiBase';
6
6
  import { ProgressIndicatorHide, ProgressIndicatorShow, } from '../../Redux/ActionsReducers/PopupRedux';
7
7
  export class UserInterfaceApiImpl extends ApiBase {
8
+ internalApi;
9
+ showProgressIndicatorTimeout = null;
8
10
  constructor(_adaptable) {
9
11
  super(_adaptable);
10
- this.showProgressIndicatorTimeout = null;
11
12
  this.internalApi = new UserInterfaceInternalApi(_adaptable);
12
13
  }
13
14
  getColorPalette() {
@@ -26,6 +26,12 @@ const loadState = ({ adaptableId, adaptableStateKey }) => {
26
26
  return Promise.resolve(parsedJsonState);
27
27
  };
28
28
  class AdaptableReduxLocalStorageEngine {
29
+ adaptableId;
30
+ adaptableStateKey;
31
+ userName;
32
+ initialState;
33
+ loadState;
34
+ persistState;
29
35
  constructor(config) {
30
36
  this.adaptableId = config.adaptableId;
31
37
  this.adaptableStateKey = config.adaptableStateKey;
@@ -66,6 +66,23 @@ export const LoadState = (State) => ({
66
66
  State,
67
67
  });
68
68
  export class AdaptableStore {
69
+ TheStore;
70
+ Load;
71
+ emitter;
72
+ storageEngine;
73
+ currentStorageState;
74
+ previousStorageState;
75
+ loadStorageInProgress = false;
76
+ loadStateOnStartup = true; // set to false if you want no state
77
+ on = (eventName, callback) => {
78
+ return this.emitter.on(eventName, callback);
79
+ };
80
+ onAny = (callback) => {
81
+ return this.emitter.onAny(callback);
82
+ };
83
+ emit = (eventName, data) => {
84
+ return this.emitter.emit(eventName, data);
85
+ };
69
86
  /**
70
87
  *
71
88
  * @param adaptable The Adaptable instance
@@ -75,49 +92,6 @@ export class AdaptableStore {
75
92
  /*
76
93
  This is the main store for Adaptable State
77
94
  */
78
- this.loadStorageInProgress = false;
79
- this.loadStateOnStartup = true; // set to false if you want no state
80
- this.on = (eventName, callback) => {
81
- return this.emitter.on(eventName, callback);
82
- };
83
- this.onAny = (callback) => {
84
- return this.emitter.onAny(callback);
85
- };
86
- this.emit = (eventName, data) => {
87
- return this.emitter.emit(eventName, data);
88
- };
89
- this.loadStore = (config) => {
90
- const { adaptable, adaptableStateKey, initialState, postLoadHook } = config;
91
- const postProcessState = postLoadHook ?? ((state) => state);
92
- this.storageEngine.setStateKey(adaptableStateKey);
93
- // START STATE LOAD
94
- this.loadStorageInProgress = true;
95
- return (this.Load = this.storageEngine
96
- .load(adaptable, initialState)
97
- .then((storedState) => {
98
- if (storedState && this.loadStateOnStartup) {
99
- this.TheStore.dispatch(LoadState(postProcessState(adaptable.adaptableOptions.stateOptions.applyState(storedState, buildAdaptableStateFunctionConfig(adaptable)))));
100
- }
101
- })
102
- .then(() => {
103
- this.TheStore.dispatch(InitState());
104
- // END STATE LOAD
105
- this.loadStorageInProgress = false;
106
- }, (e) => {
107
- adaptable.api.consoleError('Failed to load previous Adaptable State : ', e);
108
- //for now i'm still initializing Adaptable even if loading state has failed....
109
- //we may revisit that later
110
- this.TheStore.dispatch(InitState());
111
- // END STATE LOAD
112
- this.loadStorageInProgress = false;
113
- this.TheStore.dispatch(PopupRedux.PopupShowAlert({
114
- alertType: 'generic',
115
- header: 'Configuration',
116
- message: 'Error loading your configuration:' + e,
117
- alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
118
- }));
119
- }));
120
- };
121
95
  let rootReducerObject = {
122
96
  // Reducers for Non-Persisted State
123
97
  Popup: PopupRedux.PopupReducer,
@@ -262,6 +236,38 @@ export class AdaptableStore {
262
236
  }
263
237
  return Promise.resolve(true);
264
238
  }
239
+ loadStore = (config) => {
240
+ const { adaptable, adaptableStateKey, initialState, postLoadHook } = config;
241
+ const postProcessState = postLoadHook ?? ((state) => state);
242
+ this.storageEngine.setStateKey(adaptableStateKey);
243
+ // START STATE LOAD
244
+ this.loadStorageInProgress = true;
245
+ return (this.Load = this.storageEngine
246
+ .load(adaptable, initialState)
247
+ .then((storedState) => {
248
+ if (storedState && this.loadStateOnStartup) {
249
+ this.TheStore.dispatch(LoadState(postProcessState(adaptable.adaptableOptions.stateOptions.applyState(storedState, buildAdaptableStateFunctionConfig(adaptable)))));
250
+ }
251
+ })
252
+ .then(() => {
253
+ this.TheStore.dispatch(InitState());
254
+ // END STATE LOAD
255
+ this.loadStorageInProgress = false;
256
+ }, (e) => {
257
+ adaptable.api.consoleError('Failed to load previous Adaptable State : ', e);
258
+ //for now i'm still initializing Adaptable even if loading state has failed....
259
+ //we may revisit that later
260
+ this.TheStore.dispatch(InitState());
261
+ // END STATE LOAD
262
+ this.loadStorageInProgress = false;
263
+ this.TheStore.dispatch(PopupRedux.PopupShowAlert({
264
+ alertType: 'generic',
265
+ header: 'Configuration',
266
+ message: 'Error loading your configuration:' + e,
267
+ alertDefinition: ObjectFactory.CreateInternalAlertDefinitionForMessages('Error'),
268
+ }));
269
+ }));
270
+ };
265
271
  }
266
272
  function createDevToolsActionMarkerMiddleware(adaptable) {
267
273
  const adaptableId = adaptable?.adaptableOptions?.adaptableId;
@@ -1000,6 +1006,14 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1000
1006
  const newLayout = (newLayoutState.Layouts || []).find((l) => l.Name == newLayoutState.CurrentLayout) ||
1001
1007
  newLayoutState.Layouts[0] ||
1002
1008
  ERROR_LAYOUT;
1009
+ if (returnAction.type == LayoutRedux.LAYOUT_SELECT ||
1010
+ returnAction.type == LayoutRedux.LAYOUT_DELETE) {
1011
+ // tell AdapTable the Layout has been selected
1012
+ if (newLayout) {
1013
+ adaptable.updateLayoutInManagerAfterStoreHasChanged(newLayout);
1014
+ }
1015
+ }
1016
+ // !!! filter refresh has to be AFTER the layout has been set in the store
1003
1017
  let refreshColumnFilters = false;
1004
1018
  if (adaptable.api.filterApi.columnFilterApi.internalApi.areColumnFiltersDifferent(oldLayout.ColumnFilters, newLayout.ColumnFilters)) {
1005
1019
  refreshColumnFilters = true;
@@ -1011,13 +1025,6 @@ const adaptableMiddleware = (adaptable) => (function(middlewareAPI) {
1011
1025
  if (refreshColumnFilters || refreshGridFilter) {
1012
1026
  adaptable.applyFiltering({ updateColumnFilterModel: refreshColumnFilters });
1013
1027
  }
1014
- if (returnAction.type == LayoutRedux.LAYOUT_SELECT ||
1015
- returnAction.type == LayoutRedux.LAYOUT_DELETE) {
1016
- // tell AdapTable the Layout has been selected
1017
- if (newLayout) {
1018
- adaptable.updateLayoutInManagerAfterStoreHasChanged(newLayout);
1019
- }
1020
- }
1021
1028
  // when changing current layout via the api, the layout should update
1022
1029
  if (returnAction.type == LayoutRedux.LAYOUT_SAVE) {
1023
1030
  const savingLayout = returnAction.layout;
@@ -4,6 +4,10 @@ import ArrayExtensions from '../Utilities/Extensions/ArrayExtensions';
4
4
  * Base class for all strategies and does most of the work of creating menus
5
5
  */
6
6
  export class AdaptableModuleBase {
7
+ api;
8
+ moduleInfo;
9
+ AccessLevel;
10
+ agGridModuleDepsInfo;
7
11
  constructor(module, friendlyName, glyph, popup, description, api) {
8
12
  this.api = api;
9
13
  this.moduleInfo = {