@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.
- package/README.md +4 -6
- package/index.css +3 -14
- package/index.css.map +1 -1
- package/package.json +1 -1
- package/src/AdaptableInterfaces/IAdaptable.d.ts +9 -0
- package/src/AdaptableOptions/AdaptablePlugin.js +6 -1
- package/src/AdaptableOptions/ExportOptions.d.ts +1 -2
- package/src/AdaptableOptions/FilterOptions.d.ts +3 -0
- package/src/AdaptableState/Common/AdaptableColumn.d.ts +6 -0
- package/src/AdaptableState/Common/RowDataChangedInfo.d.ts +3 -0
- package/src/AdaptableState/InitialState.d.ts +1 -1
- package/src/AdaptableState/Selection/GridCell.d.ts +9 -0
- package/src/Api/GridApi.d.ts +14 -0
- package/src/Api/Implementation/ActionColumnApiImpl.js +1 -0
- package/src/Api/Implementation/AdaptableApiImpl.js +52 -0
- package/src/Api/Implementation/AlertApiImpl.js +1 -0
- package/src/Api/Implementation/ApiBase.js +1 -0
- package/src/Api/Implementation/CalculatedColumnApiImpl.js +1 -0
- package/src/Api/Implementation/ChartingApiImpl.js +4 -0
- package/src/Api/Implementation/ColumnApiImpl.js +1 -0
- package/src/Api/Implementation/ColumnFilterApiImpl.js +1 -0
- package/src/Api/Implementation/CommentsApiImpl.js +1 -0
- package/src/Api/Implementation/CustomSortApiImpl.js +1 -0
- package/src/Api/Implementation/DashboardApiImpl.js +1 -0
- package/src/Api/Implementation/DataChangeHistoryApiImpl.js +12 -15
- package/src/Api/Implementation/DataImportApiImpl.js +1 -0
- package/src/Api/Implementation/DataSetApiImpl.js +1 -0
- package/src/Api/Implementation/EntitlementApiImpl.js +1 -0
- package/src/Api/Implementation/EventApiImpl.js +16 -14
- package/src/Api/Implementation/ExportApiImpl.js +1 -0
- package/src/Api/Implementation/ExpressionApiImpl.js +1 -0
- package/src/Api/Implementation/Fdc3ApiImpl.js +1 -0
- package/src/Api/Implementation/FilterApiImpl.js +3 -0
- package/src/Api/Implementation/FlashingCellApiImpl.js +1 -0
- package/src/Api/Implementation/FormatColumnApiImpl.js +1 -0
- package/src/Api/Implementation/FreeTextColumnApiImpl.js +1 -0
- package/src/Api/Implementation/GridApiImpl.d.ts +9 -0
- package/src/Api/Implementation/GridApiImpl.js +17 -0
- package/src/Api/Implementation/GridFilterApiImpl.js +1 -0
- package/src/Api/Implementation/LayoutApiImpl.js +1 -0
- package/src/Api/Implementation/NamedQueryApiImpl.js +1 -0
- package/src/Api/Implementation/NoteApiImpl.js +1 -0
- package/src/Api/Implementation/PredicateApiImpl.js +1 -0
- package/src/Api/Implementation/RowFormApiImpl.js +1 -0
- package/src/Api/Implementation/StyledColumnApiImpl.js +1 -0
- package/src/Api/Implementation/SystemStatusApiImpl.js +2 -0
- package/src/Api/Implementation/TeamSharingApiImpl.js +1 -0
- package/src/Api/Implementation/ThemeApiImpl.js +1 -0
- package/src/Api/Implementation/UserInterfaceApiImpl.js +2 -1
- package/src/Redux/Store/AdaptableReduxLocalStorageEngine.js +6 -0
- package/src/Redux/Store/AdaptableStore.js +57 -50
- package/src/Strategy/AdaptableModuleBase.js +4 -0
- package/src/Strategy/AlertModule.js +1 -0
- package/src/Strategy/CalculatedColumnModule.js +1 -0
- package/src/Strategy/CellSummaryModule.js +1 -1
- package/src/Strategy/DataChangeHistoryModule.js +1 -0
- package/src/Strategy/FlashingCellModule.js +1 -0
- package/src/Strategy/FreeTextColumnModule.js +1 -0
- package/src/Strategy/LayoutModule.js +2 -1
- package/src/Strategy/PlusMinusModule.js +2 -0
- package/src/Strategy/ScheduleModule.js +1 -0
- package/src/Strategy/ShortcutModule.js +2 -0
- package/src/Strategy/TeamSharingModule.js +10 -10
- package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +18 -17
- package/src/Utilities/Constants/DocumentationLinkConstants.js +18 -17
- package/src/Utilities/ExpressionFunctions/deepMap.js +31 -31
- package/src/Utilities/MenuItem.js +18 -0
- package/src/Utilities/Services/AggregatedScalarLiveValue.js +8 -0
- package/src/Utilities/Services/AlertService.js +6 -4
- package/src/Utilities/Services/AnnotationsService.js +3 -0
- package/src/Utilities/Services/CalculatedColumnExpressionService.js +2 -1
- package/src/Utilities/Services/ChartingService.js +1 -0
- package/src/Utilities/Services/DataService.js +10 -2
- package/src/Utilities/Services/Fdc3Service.js +5 -3
- package/src/Utilities/Services/FlashingCellService.js +5 -0
- package/src/Utilities/Services/LicenseService/index.js +1 -1
- package/src/Utilities/Services/MetamodelService.js +2 -2
- package/src/Utilities/Services/ModuleService.js +38 -38
- package/src/Utilities/Services/QueryLanguageService.js +6 -5
- package/src/Utilities/Services/RowFormService.js +1 -0
- package/src/Utilities/Services/RowSummaryService.js +10 -7
- package/src/Utilities/Services/TeamSharingService.js +3 -1
- package/src/Utilities/Services/ThemeService.js +11 -9
- package/src/Utilities/Services/ValidationService.js +1 -0
- package/src/Utilities/createAgStatusPanelComponent.js +3 -0
- package/src/View/BulkUpdate/BulkUpdateViewPanel.js +1 -0
- package/src/View/CalculatedColumn/CalculatedColumnSummary.js +8 -8
- package/src/View/CellSummary/CellSummaryViewPanel.js +1 -0
- package/src/View/Components/Buttons/ButtonBase/index.js +9 -9
- package/src/View/Components/Buttons/EntityListActionButtons.js +18 -18
- package/src/View/Components/ColumnFilter/components/FloatingFilterValues.js +1 -1
- package/src/View/Components/ExpressionWizard.js +5 -5
- package/src/View/Components/Panels/PanelDashboard/index.js +8 -8
- package/src/View/Components/Panels/PanelToolPanel/index.js +7 -7
- package/src/View/Components/ToolPanel/AdaptableToolPanel.js +2 -0
- package/src/View/CustomSort/CustomSortSummary.js +13 -13
- package/src/View/FormatColumn/FormatColumnSummary.js +13 -13
- package/src/View/FreeTextColumn/FreeTextColumnSummary.js +13 -13
- package/src/View/SmartEdit/SmartEditViewPanel.js +1 -0
- package/src/View/Theme/ThemePopup.js +13 -16
- package/src/agGrid/Adaptable.js +4 -0
- package/src/agGrid/AdaptableAgGrid.d.ts +9 -0
- package/src/agGrid/AdaptableAgGrid.js +160 -37
- package/src/agGrid/AdaptableFilterHandler.js +4 -0
- package/src/agGrid/AdaptableLogger.d.ts +3 -0
- package/src/agGrid/AdaptableLogger.js +10 -0
- package/src/agGrid/AgGridAdapter.js +11 -1
- package/src/agGrid/AgGridColumnAdapter.js +2 -0
- package/src/agGrid/AgGridExportAdapter.js +10 -9
- package/src/agGrid/AgGridFilterAdapter.js +4 -0
- package/src/agGrid/AgGridFloatingFilterAdapter.js +3 -0
- package/src/agGrid/AgGridMenuAdapter.js +1 -0
- package/src/agGrid/AgGridModulesAdapter.js +2 -1
- package/src/agGrid/AgGridOptionsService.js +3 -0
- package/src/agGrid/AgGridThemeAdapter.js +2 -0
- package/src/agGrid/cellRenderers/ActionColumnRenderer.js +5 -0
- package/src/agGrid/cellRenderers/BadgeRenderer.js +2 -0
- package/src/agGrid/cellRenderers/PercentBarRenderer.js +1 -0
- package/src/agGrid/editors/AdaptableDateEditor/index.js +6 -3
- package/src/agGrid/editors/AdaptableNumberEditor/index.js +16 -12
- package/src/agGrid/editors/AdaptablePercentageEditor/index.js +17 -13
- package/src/agGrid/index.d.ts +6 -0
- package/src/agGrid/index.js +6 -0
- package/src/components/Datepicker/index.js +1 -1
- package/src/components/overlayBaseZIndex.js +1 -1
- package/src/components/utils/useContainerScrollObserver/index.js +17 -14
- package/src/devTools/index.js +54 -53
- package/src/env.js +2 -2
- package/src/layout-manager/src/LMEmitter.js +11 -11
- package/src/layout-manager/src/LMLogger.js +7 -0
- package/src/layout-manager/src/index.js +56 -51
- package/src/metamodel/adaptable.metamodel.d.ts +57 -0
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/migration/AdaptableUpgradeHelper.js +3 -0
- package/src/migration/VersionUpgrade.js +1 -0
- package/src/migration/VersionUpgrade17.js +1 -2
- package/src/parser/src/ExpressionEvaluationError.js +1 -0
- 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 = {
|