@adaptabletools/adaptable 22.0.0-canary.1 → 22.0.0-canary.3
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/index.css +55 -37
- package/index.css.map +1 -1
- package/package.json +1 -1
- package/src/AdaptableInterfaces/IAdaptable.d.ts +2 -2
- 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/AdaptableStyle.d.ts +8 -0
- package/src/AdaptableState/Common/RowDataChangedInfo.d.ts +3 -0
- package/src/AdaptableState/FormatColumnState.d.ts +0 -8
- package/src/AdaptableState/InitialState.d.ts +1 -1
- package/src/AdaptableState/Selection/GridCell.d.ts +9 -0
- package/src/Api/DataSetApi.d.ts +1 -1
- package/src/Api/GridApi.d.ts +3 -3
- 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 -9
- package/src/Api/Implementation/GridApiImpl.js +17 -16
- 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/Api/Internal/ColumnInternalApi.js +1 -1
- package/src/Api/Internal/FormatColumnInternalApi.d.ts +0 -10
- package/src/Api/Internal/FormatColumnInternalApi.js +1 -19
- package/src/Redux/ActionsReducers/NoteRedux.js +1 -1
- package/src/Redux/Store/AdaptableReduxLocalStorageEngine.js +6 -0
- package/src/Redux/Store/AdaptableStore.js +49 -43
- 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/Strategy/Utilities/FormatColumn/getFormatColumnSettingsViewItems.js +0 -3
- package/src/Utilities/Constants/DocumentationLinkConstants.d.ts +3 -3
- package/src/Utilities/Constants/DocumentationLinkConstants.js +3 -3
- package/src/Utilities/ExpressionFunctions/deepMap.js +31 -31
- package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +3 -3
- package/src/Utilities/Helpers/StyleHelper.js +14 -0
- package/src/Utilities/MenuItem.js +18 -0
- package/src/Utilities/ObjectFactory.js +1 -1
- package/src/Utilities/Services/AggregatedScalarLiveValue.js +8 -0
- package/src/Utilities/Services/AlertService.js +6 -4
- package/src/Utilities/Services/AnnotationsService.js +4 -1
- 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 +4 -3
- 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/AdaptablePopover/index.d.ts +1 -0
- package/src/View/AdaptablePopover/index.js +1 -1
- package/src/View/Alert/ActiveAlertsPanel.js +8 -0
- package/src/View/Alert/AlertViewPanel.js +13 -9
- package/src/View/Alert/Utilities/getAlertButtonStyle.d.ts +1 -0
- package/src/View/Alert/Utilities/getAlertButtonStyle.js +8 -0
- package/src/View/BulkUpdate/BulkUpdateViewPanel.js +24 -11
- package/src/View/CalculatedColumn/CalculatedColumnSummary.js +8 -8
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +2 -2
- package/src/View/CellSummary/CellSummaryViewPanel.js +16 -17
- package/src/View/Components/AdaptableDateInput/index.js +1 -1
- package/src/View/Components/Buttons/ButtonApply.js +1 -1
- package/src/View/Components/Buttons/ButtonBase/index.js +9 -9
- package/src/View/Components/Buttons/ButtonClear.d.ts +1 -0
- 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/Selectors/BulkUpdateValueSelector.js +19 -18
- package/src/View/Components/StyleComponent.js +20 -1
- package/src/View/Components/ToolPanel/AdaptableToolPanel.js +2 -0
- package/src/View/CustomSort/CustomSortSummary.js +13 -13
- package/src/View/Dashboard/DashboardPopup.js +4 -5
- package/src/View/Export/ExportDestinationPicker.js +1 -1
- package/src/View/Export/ExportStatusBar.js +4 -2
- package/src/View/Export/ExportViewPanel.js +25 -18
- package/src/View/FormatColumn/FormatColumnSummary.js +13 -13
- package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +0 -23
- package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +2 -2
- package/src/View/FreeTextColumn/FreeTextColumnSummary.js +13 -13
- package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +57 -65
- package/src/View/QuickSearch/QuickSearchPopup.js +4 -1
- package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReminder.js +2 -2
- package/src/View/SmartEdit/SmartEditViewPanel.js +1 -0
- package/src/View/Theme/ThemePopup.js +13 -16
- package/src/View/UIHelper.d.ts +2 -0
- package/src/View/UIHelper.js +15 -0
- package/src/agGrid/Adaptable.js +4 -0
- package/src/agGrid/AdaptableAgGrid.d.ts +2 -2
- package/src/agGrid/AdaptableAgGrid.js +104 -38
- 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 +5 -18
- 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/Dashboard/DashboardToolbar.js +1 -1
- package/src/components/Datepicker/index.js +1 -1
- package/src/components/ExpressionEditor/EditorInput.js +19 -3
- package/src/components/Tree/TreeDropdown/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 +66 -7
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/migration/AdaptableUpgradeHelper.js +5 -0
- package/src/migration/VersionUpgrade.js +1 -0
- package/src/migration/VersionUpgrade17.js +1 -2
- package/src/migration/VersionUpgrade22.d.ts +6 -0
- package/src/migration/VersionUpgrade22.js +27 -0
- package/src/parser/src/ExpressionEvaluationError.js +1 -0
- package/src/types.d.ts +1 -1
- package/tsconfig.esm.tsbuildinfo +1 -1
|
@@ -277,7 +277,7 @@ export class ColumnInternalApi extends ApiBase {
|
|
|
277
277
|
getQueryableColumnsForUIEditor() {
|
|
278
278
|
return this.getColumnApi()
|
|
279
279
|
.getQueryableColumns()
|
|
280
|
-
.filter((column) => !column.isGeneratedPivotResultColumn && !column.isGeneratedRowGroupColumn);
|
|
280
|
+
.filter((column) => !column.isGeneratedPivotResultColumn && !column.isGeneratedRowGroupColumn && !column.isGeneratedSelectionColumn);
|
|
281
281
|
}
|
|
282
282
|
isAlwaysHiddenColumn(columnIdentifier) {
|
|
283
283
|
return this.getColumnApi().hasColumnType(columnIdentifier, HIDDEN_COLUMN_TYPE);
|
|
@@ -7,21 +7,11 @@ export declare class FormatColumnInternalApi extends ApiBase {
|
|
|
7
7
|
* @returns format columns
|
|
8
8
|
*/
|
|
9
9
|
getAllFormatColumnWithStyle(config?: FormatColumnConfig): FormatColumn[];
|
|
10
|
-
/**
|
|
11
|
-
* Retrieves all Format Columns in Adaptable State with the `Style` or the `CellAlignment` property set
|
|
12
|
-
* @returns format columns
|
|
13
|
-
*/
|
|
14
|
-
getAllFormatColumnWithStyleAndCellAlignment(config?: FormatColumnConfig): FormatColumn[];
|
|
15
10
|
/**
|
|
16
11
|
* Retrieves all Format Columns in Adaptable State with `DisplayFormat` property set
|
|
17
12
|
* @returns format columns
|
|
18
13
|
*/
|
|
19
14
|
getAllFormatColumnWithDisplayFormat(config?: FormatColumnConfig): FormatColumn[];
|
|
20
|
-
/**
|
|
21
|
-
* Retrieves all Format Columns in Adaptable State with `CellAlignment` property set
|
|
22
|
-
* @returns format columns
|
|
23
|
-
*/
|
|
24
|
-
getAllFormatColumnWithCellAlignment(config?: FormatColumnConfig): FormatColumn[];
|
|
25
15
|
/**
|
|
26
16
|
* Get all FormatColumns which are defined for this column and have a custom AdaptableStyle
|
|
27
17
|
* @param column
|
|
@@ -41,15 +41,6 @@ export class FormatColumnInternalApi extends ApiBase {
|
|
|
41
41
|
.getFormatColumns(config)
|
|
42
42
|
.filter((fc) => fc.Style);
|
|
43
43
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Retrieves all Format Columns in Adaptable State with the `Style` or the `CellAlignment` property set
|
|
46
|
-
* @returns format columns
|
|
47
|
-
*/
|
|
48
|
-
getAllFormatColumnWithStyleAndCellAlignment(config) {
|
|
49
|
-
return this.getFormatColumnApi()
|
|
50
|
-
.getFormatColumns(config)
|
|
51
|
-
.filter((fc) => fc.Style || fc.CellAlignment);
|
|
52
|
-
}
|
|
53
44
|
/**
|
|
54
45
|
* Retrieves all Format Columns in Adaptable State with `DisplayFormat` property set
|
|
55
46
|
* @returns format columns
|
|
@@ -59,15 +50,6 @@ export class FormatColumnInternalApi extends ApiBase {
|
|
|
59
50
|
.getFormatColumns(config)
|
|
60
51
|
.filter((fc) => fc.DisplayFormat);
|
|
61
52
|
}
|
|
62
|
-
/**
|
|
63
|
-
* Retrieves all Format Columns in Adaptable State with `CellAlignment` property set
|
|
64
|
-
* @returns format columns
|
|
65
|
-
*/
|
|
66
|
-
getAllFormatColumnWithCellAlignment(config) {
|
|
67
|
-
return this.getFormatColumnApi()
|
|
68
|
-
.getFormatColumns(config)
|
|
69
|
-
.filter((fc) => fc.CellAlignment);
|
|
70
|
-
}
|
|
71
53
|
/**
|
|
72
54
|
* Get all FormatColumns which are defined for this column and have a custom AdaptableStyle
|
|
73
55
|
* @param column
|
|
@@ -75,7 +57,7 @@ export class FormatColumnInternalApi extends ApiBase {
|
|
|
75
57
|
* @returns list of FormatColumn
|
|
76
58
|
*/
|
|
77
59
|
getFormatColumnsWithStyleForColumn(column, config) {
|
|
78
|
-
const formatColumns = this.
|
|
60
|
+
const formatColumns = this.getAllFormatColumnWithStyle()
|
|
79
61
|
.filter((formatColumn) => {
|
|
80
62
|
// FormatColumn default target is 'cell', so if no target is specified, we assume 'cell'
|
|
81
63
|
const fcTarget = formatColumn.Target ?? 'cell';
|
|
@@ -42,7 +42,7 @@ export const GetNoteSelector = (state, address) => {
|
|
|
42
42
|
// happy check
|
|
43
43
|
return true;
|
|
44
44
|
}
|
|
45
|
-
// Primary keys
|
|
45
|
+
// Primary keys retrieved from the grid dom are always strings, so we must also consider them strings
|
|
46
46
|
if ((typeof address.PrimaryKeyValue === 'number' && typeof note.PrimaryKeyValue === 'string') ||
|
|
47
47
|
(typeof address.PrimaryKeyValue === 'string' && typeof note.PrimaryKeyValue === 'number')) {
|
|
48
48
|
return (note.PrimaryKeyValue.toString() === address.PrimaryKeyValue.toString() &&
|
|
@@ -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;
|
|
@@ -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 = {
|
|
@@ -16,6 +16,7 @@ import { getAlertBehaviourViewItems } from './Utilities/Alert/getAlertBehaviourV
|
|
|
16
16
|
import { getAlertPreviewViewItems } from './Utilities/Alert/getAlertPreviewViewItems';
|
|
17
17
|
import { getAlertTypeViewItems } from './Utilities/Alert/getAlertTypeViewItems';
|
|
18
18
|
export class AlertModule extends AdaptableModuleBase {
|
|
19
|
+
isListeningToCellDataChanges;
|
|
19
20
|
constructor(api) {
|
|
20
21
|
super(ModuleConstants.AlertModuleId, ModuleConstants.AlertModuleFriendlyName, 'alert', 'AlertPopup', 'Get notified when things happen in Adaptable that you need to know about', api);
|
|
21
22
|
this.isListeningToCellDataChanges = false;
|
|
@@ -7,6 +7,7 @@ import { getCalculatedColumnSettingsTags } from '../View/CalculatedColumn/Utilit
|
|
|
7
7
|
import { getExpressionViewItems } from '../Utilities/getExpressionViewItems';
|
|
8
8
|
import { getObjectTagsViewItems } from '../Utilities/getObjectTagsViewItems';
|
|
9
9
|
export class CalculatedColumnModule extends AdaptableModuleBase {
|
|
10
|
+
isListeningToCellDataChanges;
|
|
10
11
|
constructor(api) {
|
|
11
12
|
super(ModuleConstants.CalculatedColumnModuleId, ModuleConstants.CalculatedColumnFriendlyName, 'calculated-column', 'CalculatedColumnPopup', 'Create bespoke columns whose cell value is derived dynamically from an Expression', api);
|
|
12
13
|
this.isListeningToCellDataChanges = false;
|
|
@@ -8,9 +8,9 @@ import { AdaptableModuleBase } from './AdaptableModuleBase';
|
|
|
8
8
|
* Module that provides Cell Summaries on numeric columns
|
|
9
9
|
*/
|
|
10
10
|
export class CellSummaryModule extends AdaptableModuleBase {
|
|
11
|
+
cachedCellSummary = new WeakMap();
|
|
11
12
|
constructor(api) {
|
|
12
13
|
super(ModuleConstants.CellSummaryModuleId, ModuleConstants.CellSummaryFriendlyName, 'cells', 'CellSummaryPopup', 'See summary information on a group of numeric cells using multiple summary operations', api);
|
|
13
|
-
this.cachedCellSummary = new WeakMap();
|
|
14
14
|
}
|
|
15
15
|
getViewAccessLevel() {
|
|
16
16
|
return 'Full';
|
|
@@ -2,6 +2,7 @@ import { AdaptableModuleBase } from './AdaptableModuleBase';
|
|
|
2
2
|
import * as ModuleConstants from '../Utilities/Constants/ModuleConstants';
|
|
3
3
|
import { DataChangeHistoryStatusBarContent } from '../View/DataChangeHistory/DataChangeHistoryStatusBarContent';
|
|
4
4
|
export class DataChangeHistoryModule extends AdaptableModuleBase {
|
|
5
|
+
isListeningToCellDataChanges;
|
|
5
6
|
constructor(api) {
|
|
6
7
|
super(ModuleConstants.DataChangeHistoryModuleId, ModuleConstants.DataChangeHistoryFriendlyName, 'target', 'DataChangeHistoryPopup', 'Provides an overview of all previous changes, giving the possibility to undo specific changes', api);
|
|
7
8
|
this.isListeningToCellDataChanges = false;
|
|
@@ -12,6 +12,7 @@ import { FlashingCellWizard } from '../View/FlashingCell/Wizard/FlashingCellWiza
|
|
|
12
12
|
import { getFlashingCellDurationViewItems } from './Utilities/FlashingCell/getFlashingCellDurationViewItems';
|
|
13
13
|
import { errorOnce } from '../agGrid/AdaptableLogger';
|
|
14
14
|
export class FlashingCellModule extends AdaptableModuleBase {
|
|
15
|
+
isListeningToCellDataChanges;
|
|
15
16
|
constructor(api) {
|
|
16
17
|
super(ModuleConstants.FlashingCellModuleId, ModuleConstants.FlashingCellFriendlyName, 'lightning', 'FlashingAlert', 'Flash cells when they change', api);
|
|
17
18
|
this.isListeningToCellDataChanges = false;
|
|
@@ -5,6 +5,7 @@ import { FreeTextColumnWizard } from '../View/FreeTextColumn/Wizard/FreeTextColu
|
|
|
5
5
|
import { getObjectTagsViewItems } from '../Utilities/getObjectTagsViewItems';
|
|
6
6
|
import ArrayExtensions from '../Utilities/Extensions/ArrayExtensions';
|
|
7
7
|
export class FreeTextColumnModule extends AdaptableModuleBase {
|
|
8
|
+
isListeningToCellDataChanges;
|
|
8
9
|
constructor(api) {
|
|
9
10
|
super(ModuleConstants.FreeTextColumnModuleId, ModuleConstants.FreeTextColumnFriendlyName, 'horizontal-lines', 'FreeTextColumnPopup', 'Dynamic column showing custom content (stored in state and not with grid data)', api);
|
|
10
11
|
this.isListeningToCellDataChanges = false;
|
|
@@ -17,9 +17,10 @@ import { getGridFilterViewItems } from '../View/Layout/Wizard/getGridFilterPrevi
|
|
|
17
17
|
import { RowSummaryService } from '../Utilities/Services/RowSummaryService';
|
|
18
18
|
import { isPivotLayout } from '../Api/Implementation/LayoutHelpers';
|
|
19
19
|
export class LayoutModule extends AdaptableModuleBase {
|
|
20
|
+
LayoutState;
|
|
21
|
+
rowSummaryService = new RowSummaryService(this.api);
|
|
20
22
|
constructor(api) {
|
|
21
23
|
super(ModuleConstants.LayoutModuleId, ModuleConstants.LayoutFriendlyName, 'grid', 'LayoutPopup', 'Named sets of column visibility, order, groupings, aggregation, pivots etc.', api);
|
|
22
|
-
this.rowSummaryService = new RowSummaryService(this.api);
|
|
23
24
|
}
|
|
24
25
|
onAdaptableReady() {
|
|
25
26
|
this.rowSummaryService.onAdaptableReady();
|
|
@@ -11,6 +11,8 @@ import { MovePlusMinus } from '../View/PlusMinus/MovePlusMinus';
|
|
|
11
11
|
import { PlusMinusWizard } from '../View/PlusMinus/Wizard/PlusMinusWizard';
|
|
12
12
|
import { errorOnce } from '../agGrid/AdaptableLogger';
|
|
13
13
|
export class PlusMinusModule extends AdaptableModuleBase {
|
|
14
|
+
shouldHandleKeyDown;
|
|
15
|
+
adaptable;
|
|
14
16
|
constructor(api) {
|
|
15
17
|
super(ModuleConstants.PlusMinusModuleId, ModuleConstants.PlusMinusFriendlyName, 'add-circle', 'PlusMinusPopup', 'Configure how a cell value will edit when the + or - keys are pressed', api);
|
|
16
18
|
this.shouldHandleKeyDown = false;
|
|
@@ -31,6 +31,7 @@ const NodeSchedule = {
|
|
|
31
31
|
},
|
|
32
32
|
};
|
|
33
33
|
export class ScheduleModule extends AdaptableModuleBase {
|
|
34
|
+
scheduleJobs;
|
|
34
35
|
constructor(api) {
|
|
35
36
|
super(ModuleConstants.ScheduleModuleId, ModuleConstants.ScheduleFriendlyName, 'schedule', 'SchedulePopup', 'Schedule AdapTable functionality to run at times of your choosing (e.g. run reports)', api);
|
|
36
37
|
this.scheduleJobs = [];
|
|
@@ -9,6 +9,8 @@ import { getShortcutSettingsViewItems } from './Utilities/Shortcut/getShortcutSe
|
|
|
9
9
|
import { getObjectTagsViewItems } from '../Utilities/getObjectTagsViewItems';
|
|
10
10
|
import { getScopeViewItems } from '../Utilities/getScopeViewItems';
|
|
11
11
|
export class ShortcutModule extends AdaptableModuleBase {
|
|
12
|
+
shouldHandleKeyDown;
|
|
13
|
+
adaptable;
|
|
12
14
|
constructor(api) {
|
|
13
15
|
super(ModuleConstants.ShortcutModuleId, ModuleConstants.ShortcutFriendlyName, 'link', 'ShortcutPopup', 'Set up rules so cells update mathematically when keys are pressed in numeric cells', api);
|
|
14
16
|
this.shouldHandleKeyDown = false;
|
|
@@ -11,18 +11,18 @@ import ArrayExtensions from '../Utilities/Extensions/ArrayExtensions';
|
|
|
11
11
|
import flatten from 'lodash/flatten';
|
|
12
12
|
import AdaptableHelper from '../Utilities/Helpers/AdaptableHelper';
|
|
13
13
|
export class TeamSharingModule extends AdaptableModuleBase {
|
|
14
|
+
SKIP_TEAMSHARING_UPDATE_ACTIONS = [
|
|
15
|
+
TEAMSHARING_GET,
|
|
16
|
+
TEAMSHARING_SET,
|
|
17
|
+
TEAMSHARING_SHARE,
|
|
18
|
+
TEAMSHARING_IMPORT_ITEM,
|
|
19
|
+
TEAMSHARING_PROCESS_IMPORT,
|
|
20
|
+
TEAMSHARING_REMOVE_ITEM,
|
|
21
|
+
TEAMSHARING_LINK_ITEM,
|
|
22
|
+
TEAMSHARING_UPDATE_ITEM,
|
|
23
|
+
];
|
|
14
24
|
constructor(api) {
|
|
15
25
|
super(ModuleConstants.TeamSharingModuleId, ModuleConstants.TeamSharingFriendlyName, 'folder-shared', 'TeamSharingPopup', 'Team Sharing allows users to share - at run-time - Adaptable Objects between colleagues.', api);
|
|
16
|
-
this.SKIP_TEAMSHARING_UPDATE_ACTIONS = [
|
|
17
|
-
TEAMSHARING_GET,
|
|
18
|
-
TEAMSHARING_SET,
|
|
19
|
-
TEAMSHARING_SHARE,
|
|
20
|
-
TEAMSHARING_IMPORT_ITEM,
|
|
21
|
-
TEAMSHARING_PROCESS_IMPORT,
|
|
22
|
-
TEAMSHARING_REMOVE_ITEM,
|
|
23
|
-
TEAMSHARING_LINK_ITEM,
|
|
24
|
-
TEAMSHARING_UPDATE_ITEM,
|
|
25
|
-
];
|
|
26
26
|
}
|
|
27
27
|
onAdaptableReady() {
|
|
28
28
|
if (this.api.teamSharingApi.isTeamSharingAvailable()) {
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
export const getFormatColumnSettingsViewItems = (formatColumn) => {
|
|
2
2
|
let values = [];
|
|
3
|
-
if (formatColumn.CellAlignment) {
|
|
4
|
-
values.push(`Cell Alignment: ${formatColumn.CellAlignment}`);
|
|
5
|
-
}
|
|
6
3
|
if (formatColumn.RowScope) {
|
|
7
4
|
if (formatColumn.RowScope.ExcludeDataRows) {
|
|
8
5
|
values.push('Exclude Data Rows');
|
|
@@ -11,8 +11,8 @@ export declare const QuantileAggregatedScalarQueryDocsLink = "https://www.adapta
|
|
|
11
11
|
export declare const PredicateDocsLink = "https://www.adaptabletools.com/docs/adaptable-predicate";
|
|
12
12
|
export declare const PrimaryKeyDocsLink = "https://www.adaptabletools.com/docs/getting-started-primary-key";
|
|
13
13
|
export declare const LicenseDocsLink = "https://www.adaptabletools.com/buy/buying-adaptable-licensing";
|
|
14
|
-
export declare const AdaptableOptionsDocsLink = "https://www.adaptabletools.com/docs/reference-options
|
|
15
|
-
export declare const AgGridModulesDocsLink = "https://www.adaptabletools.com/docs/
|
|
14
|
+
export declare const AdaptableOptionsDocsLink = "https://www.adaptabletools.com/docs/technical-reference-adaptable-options";
|
|
15
|
+
export declare const AgGridModulesDocsLink = "https://www.adaptabletools.com/docs/getting-started-aggrid-modules";
|
|
16
16
|
export declare const AlertMessageDocsLink = "https://www.adaptabletools.com/docs/handbook-alerting-message";
|
|
17
17
|
export declare const FormatColumnPlaceholderDocsLink = "https://www.adaptabletools.com/docs/handbook-column-formatting-display-format-placeholder";
|
|
18
|
-
export declare const AgGridRequiredModulesDocsLink = "https://www.adaptabletools.com/docs/
|
|
18
|
+
export declare const AgGridRequiredModulesDocsLink = "https://www.adaptabletools.com/docs/getting-started-aggrid-modules#mandatory-modules";
|
|
@@ -12,8 +12,8 @@ export const QuantileAggregatedScalarQueryDocsLink = `${HOST_URL_DOCS}/adaptable
|
|
|
12
12
|
export const PredicateDocsLink = `${HOST_URL_DOCS}/adaptable-predicate`;
|
|
13
13
|
export const PrimaryKeyDocsLink = `${HOST_URL_DOCS}/getting-started-primary-key`;
|
|
14
14
|
export const LicenseDocsLink = `${HOST_URL_ROOT}/buy/buying-adaptable-licensing`;
|
|
15
|
-
export const AdaptableOptionsDocsLink = `${HOST_URL_DOCS}/reference-options
|
|
16
|
-
export const AgGridModulesDocsLink = `${HOST_URL_DOCS}/
|
|
15
|
+
export const AdaptableOptionsDocsLink = `${HOST_URL_DOCS}/technical-reference-adaptable-options`;
|
|
16
|
+
export const AgGridModulesDocsLink = `${HOST_URL_DOCS}/getting-started-aggrid-modules`;
|
|
17
17
|
export const AlertMessageDocsLink = `${HOST_URL_DOCS}/handbook-alerting-message`;
|
|
18
18
|
export const FormatColumnPlaceholderDocsLink = `${HOST_URL_DOCS}/handbook-column-formatting-display-format-placeholder`;
|
|
19
|
-
export const AgGridRequiredModulesDocsLink = `${HOST_URL_DOCS}/
|
|
19
|
+
export const AgGridRequiredModulesDocsLink = `${HOST_URL_DOCS}/getting-started-aggrid-modules#mandatory-modules`;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
const SORT_ASC_REVISION = (p1, p2) => sortAscending(p1.revision, p2.revision);
|
|
2
2
|
export class DeepMap {
|
|
3
|
+
map = new Map();
|
|
4
|
+
length = 0;
|
|
5
|
+
revision = 0;
|
|
3
6
|
static clone(map) {
|
|
4
7
|
const clone = new DeepMap();
|
|
5
8
|
map.visit((pair, keys) => {
|
|
@@ -8,37 +11,6 @@ export class DeepMap {
|
|
|
8
11
|
return clone;
|
|
9
12
|
}
|
|
10
13
|
constructor(initial) {
|
|
11
|
-
this.map = new Map();
|
|
12
|
-
this.length = 0;
|
|
13
|
-
this.revision = 0;
|
|
14
|
-
this.visit = (fn) => {
|
|
15
|
-
this.map.forEach((_, k) => this.visitKey(k, this.map, [], fn));
|
|
16
|
-
};
|
|
17
|
-
this.visitDepthFirst = (fn) => {
|
|
18
|
-
this.visitWithNext([], fn);
|
|
19
|
-
};
|
|
20
|
-
this.visitWithNext = (parentKeys, fn, currentMap = this.map) => {
|
|
21
|
-
if (!currentMap) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
let i = 0;
|
|
25
|
-
currentMap.forEach((_, key) => {
|
|
26
|
-
const pair = currentMap.get(key);
|
|
27
|
-
if (!pair) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
const { map } = pair;
|
|
31
|
-
const keys = [...parentKeys, key];
|
|
32
|
-
const next = map ? () => this.visitWithNext(keys, fn, map) : undefined;
|
|
33
|
-
if (pair.hasOwnProperty('value')) {
|
|
34
|
-
fn(pair.value, keys, i, next);
|
|
35
|
-
i++;
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
next?.();
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
};
|
|
42
14
|
if (initial) {
|
|
43
15
|
initial.forEach((entry) => {
|
|
44
16
|
const [keys, value] = entry;
|
|
@@ -222,6 +194,34 @@ export class DeepMap {
|
|
|
222
194
|
// if it was called by fn, it won't be called again, as it's once-d
|
|
223
195
|
next();
|
|
224
196
|
}
|
|
197
|
+
visit = (fn) => {
|
|
198
|
+
this.map.forEach((_, k) => this.visitKey(k, this.map, [], fn));
|
|
199
|
+
};
|
|
200
|
+
visitDepthFirst = (fn) => {
|
|
201
|
+
this.visitWithNext([], fn);
|
|
202
|
+
};
|
|
203
|
+
visitWithNext = (parentKeys, fn, currentMap = this.map) => {
|
|
204
|
+
if (!currentMap) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
let i = 0;
|
|
208
|
+
currentMap.forEach((_, key) => {
|
|
209
|
+
const pair = currentMap.get(key);
|
|
210
|
+
if (!pair) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const { map } = pair;
|
|
214
|
+
const keys = [...parentKeys, key];
|
|
215
|
+
const next = map ? () => this.visitWithNext(keys, fn, map) : undefined;
|
|
216
|
+
if (pair.hasOwnProperty('value')) {
|
|
217
|
+
fn(pair.value, keys, i, next);
|
|
218
|
+
i++;
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
next?.();
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
};
|
|
225
225
|
getArray(fn) {
|
|
226
226
|
const result = [];
|
|
227
227
|
this.visit((pair, keys) => {
|
|
@@ -639,7 +639,7 @@ export const scalarExpressionFunctions = {
|
|
|
639
639
|
}
|
|
640
640
|
return result;
|
|
641
641
|
},
|
|
642
|
-
description: "Returns
|
|
642
|
+
description: "Returns percentage difference between a cell's current value and previous value",
|
|
643
643
|
signatures: [
|
|
644
644
|
'PERCENT_CHANGE( [colName], <INCREASE|DECREASE> )',
|
|
645
645
|
'PERCENT_CHANGE( COL(name: string), <INCREASE|DECREASE> )',
|
|
@@ -684,7 +684,7 @@ export const scalarExpressionFunctions = {
|
|
|
684
684
|
}
|
|
685
685
|
return result;
|
|
686
686
|
},
|
|
687
|
-
description: "Returns
|
|
687
|
+
description: "Returns absolute difference between a cell's current value and previous value",
|
|
688
688
|
signatures: [
|
|
689
689
|
'ABSOLUTE_CHANGE( [colName] )',
|
|
690
690
|
'ABSOLUTE_CHANGE( COL(name: string) )',
|
|
@@ -716,7 +716,7 @@ export const scalarExpressionFunctions = {
|
|
|
716
716
|
const previousValue = context.dataChangedEvent.oldValue;
|
|
717
717
|
return currentColumnValue !== previousValue;
|
|
718
718
|
},
|
|
719
|
-
description: "Returns true if
|
|
719
|
+
description: "Returns true if cell's current value is different from previous value, otherwise false; if no column is provided, it checks if any value has changed",
|
|
720
720
|
signatures: ['ANY_CHANGE( [colName] )', 'ANY_CHANGE()'],
|
|
721
721
|
examples: ['ANY_CHANGE([col1])', 'ANY_CHANGE()'],
|
|
722
722
|
category: 'changes',
|
|
@@ -80,6 +80,20 @@ export const convertAdaptableStyleToCSS = (style) => {
|
|
|
80
80
|
break;
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
+
if (style.Alignment) {
|
|
84
|
+
switch (style.Alignment) {
|
|
85
|
+
case 'Default':
|
|
86
|
+
case 'Left':
|
|
87
|
+
result.textAlign = 'left';
|
|
88
|
+
break;
|
|
89
|
+
case 'Right':
|
|
90
|
+
result.textAlign = 'right';
|
|
91
|
+
break;
|
|
92
|
+
case 'Center':
|
|
93
|
+
result.textAlign = 'center';
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
83
97
|
// assertion added to comply with the ag-Grid types
|
|
84
98
|
return result;
|
|
85
99
|
};
|
|
@@ -11,6 +11,12 @@ export class MenuItemDoReduxAction {
|
|
|
11
11
|
};
|
|
12
12
|
this.reduxAction = reduxAction;
|
|
13
13
|
}
|
|
14
|
+
name;
|
|
15
|
+
reduxAction;
|
|
16
|
+
label;
|
|
17
|
+
category;
|
|
18
|
+
isVisible;
|
|
19
|
+
icon;
|
|
14
20
|
}
|
|
15
21
|
export class MenuItemDoClickFunction {
|
|
16
22
|
constructor(name, label, module, clickFunction, icon, isVisible) {
|
|
@@ -23,6 +29,12 @@ export class MenuItemDoClickFunction {
|
|
|
23
29
|
};
|
|
24
30
|
this.onClick = clickFunction;
|
|
25
31
|
}
|
|
32
|
+
name;
|
|
33
|
+
onClick;
|
|
34
|
+
label;
|
|
35
|
+
category;
|
|
36
|
+
isVisible;
|
|
37
|
+
icon;
|
|
26
38
|
}
|
|
27
39
|
// A menu item which shows a popup screen when it is clieked
|
|
28
40
|
export class MenuItemShowPopup {
|
|
@@ -36,4 +48,10 @@ export class MenuItemShowPopup {
|
|
|
36
48
|
};
|
|
37
49
|
this.reduxAction = PopupRedux.PopupShowScreen(module, componentName, popupParams);
|
|
38
50
|
}
|
|
51
|
+
name;
|
|
52
|
+
reduxAction;
|
|
53
|
+
label;
|
|
54
|
+
category;
|
|
55
|
+
isVisible;
|
|
56
|
+
icon;
|
|
39
57
|
}
|
|
@@ -228,7 +228,6 @@ export function CreateEmptyFormatColumn() {
|
|
|
228
228
|
Scope: undefined,
|
|
229
229
|
Style: CreateEmptyStyle(),
|
|
230
230
|
DisplayFormat: undefined,
|
|
231
|
-
CellAlignment: undefined,
|
|
232
231
|
RowScope: undefined,
|
|
233
232
|
Target: 'cell',
|
|
234
233
|
};
|
|
@@ -292,6 +291,7 @@ export function CreateEmptyStyle() {
|
|
|
292
291
|
FontStyle: undefined,
|
|
293
292
|
FontSize: undefined,
|
|
294
293
|
ClassName: undefined,
|
|
294
|
+
Alignment: undefined,
|
|
295
295
|
};
|
|
296
296
|
}
|
|
297
297
|
export function CreateSystemStatusMessageInfo(message, type, furtherInfo) {
|
|
@@ -8,6 +8,14 @@ const logOnce = (message, loggingFn) => {
|
|
|
8
8
|
doOnceFlags[message] = true;
|
|
9
9
|
};
|
|
10
10
|
export class AggregatedScalarLiveValue {
|
|
11
|
+
source;
|
|
12
|
+
requestingModule;
|
|
13
|
+
adaptableApi;
|
|
14
|
+
getRowNodes;
|
|
15
|
+
aggregationReducerName;
|
|
16
|
+
aggregatedScalarExpression;
|
|
17
|
+
expressionEvaluation;
|
|
18
|
+
aggregationResult;
|
|
11
19
|
constructor(source, requestingModule, adaptableApi, getRowNodes) {
|
|
12
20
|
this.source = source;
|
|
13
21
|
this.requestingModule = requestingModule;
|
|
@@ -3,12 +3,11 @@ import Emitter from '../Emitter';
|
|
|
3
3
|
import { combineLatest, of } from 'rxjs';
|
|
4
4
|
import { AlertModuleId } from '../Constants/ModuleConstants';
|
|
5
5
|
export class AlertService {
|
|
6
|
+
adaptableApi;
|
|
7
|
+
emitter;
|
|
8
|
+
reactiveAlertsMap = new Map();
|
|
6
9
|
constructor(adaptableApi) {
|
|
7
10
|
this.adaptableApi = adaptableApi;
|
|
8
|
-
this.reactiveAlertsMap = new Map();
|
|
9
|
-
this.onReactiveAlertTriggered = (callback) => {
|
|
10
|
-
return this.emitter.on('ReactiveAlertTriggered', callback);
|
|
11
|
-
};
|
|
12
11
|
this.emitter = new Emitter();
|
|
13
12
|
}
|
|
14
13
|
destroy() {
|
|
@@ -18,6 +17,9 @@ export class AlertService {
|
|
|
18
17
|
this.reactiveAlertsMap.clear();
|
|
19
18
|
this.reactiveAlertsMap = null;
|
|
20
19
|
}
|
|
20
|
+
onReactiveAlertTriggered = (callback) => {
|
|
21
|
+
return this.emitter.on('ReactiveAlertTriggered', callback);
|
|
22
|
+
};
|
|
21
23
|
createReactiveAlert(alertDefinition) {
|
|
22
24
|
// if there is already a reactive alert for this definition, delete it (possible in case of editing definitions),
|
|
23
25
|
this.deleteReactiveAlert(alertDefinition);
|
|
@@ -5,6 +5,9 @@ import ArrayExtensions from '../Extensions/ArrayExtensions';
|
|
|
5
5
|
* If there are active Notes or Comments it listens to Cell Selection and Mouse Enter events
|
|
6
6
|
*/
|
|
7
7
|
export class AnnotationsService {
|
|
8
|
+
api;
|
|
9
|
+
adaptable;
|
|
10
|
+
isListeningToEvents;
|
|
8
11
|
constructor(api) {
|
|
9
12
|
this.api = api;
|
|
10
13
|
this.isListeningToEvents = false;
|
|
@@ -25,7 +28,7 @@ export class AnnotationsService {
|
|
|
25
28
|
if (a?.ColumnId === b?.ColumnId && a?.PrimaryKeyValue === b?.PrimaryKeyValue) {
|
|
26
29
|
return true;
|
|
27
30
|
}
|
|
28
|
-
// Primary keys
|
|
31
|
+
// Primary keys retrieved from the grid dom are always strings, so we must also consider them strings
|
|
29
32
|
if ((typeof a.PrimaryKeyValue === 'number' && typeof b.PrimaryKeyValue === 'string') ||
|
|
30
33
|
(typeof b.PrimaryKeyValue === 'string' && typeof a.PrimaryKeyValue === 'number')) {
|
|
31
34
|
return (a.PrimaryKeyValue.toString() === b.PrimaryKeyValue.toString() && a.ColumnId === b.ColumnId);
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { CalculatedColumnModuleId } from '../Constants/ModuleConstants';
|
|
2
2
|
import { AggregatedScalarLiveValue } from './AggregatedScalarLiveValue';
|
|
3
3
|
export class CalculatedColumnExpressionService {
|
|
4
|
+
adaptableApi;
|
|
5
|
+
aggregatedScalarLiveValuesMap = new Map();
|
|
4
6
|
constructor(adaptableApi) {
|
|
5
7
|
this.adaptableApi = adaptableApi;
|
|
6
|
-
this.aggregatedScalarLiveValuesMap = new Map();
|
|
7
8
|
this.adaptableApi = adaptableApi;
|
|
8
9
|
}
|
|
9
10
|
listentoCellDataChange(cellDataChangedInfo) {
|