@adaptabletools/adaptable 12.0.8 → 12.0.9
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/bundle.cjs.js +78 -78
- package/package.json +1 -1
- package/publishTimestamp.d.ts +1 -1
- package/publishTimestamp.js +1 -1
- package/src/Api/EventApi.d.ts +13 -1
- package/src/Api/Events/AdaptableStateReloaded.d.ts +23 -0
- package/src/Api/Events/AdaptableStateReloaded.js +2 -0
- package/src/Api/Implementation/ConfigApiImpl.js +11 -0
- package/src/Redux/Store/AdaptableStore.js +1 -1
- package/src/Strategy/AdaptableModuleBase.d.ts +2 -0
- package/src/Strategy/AdaptableModuleBase.js +6 -0
- package/src/Strategy/CalculatedColumnModule.d.ts +2 -0
- package/src/Strategy/CalculatedColumnModule.js +4 -0
- package/src/Strategy/TeamSharingModule.js +4 -2
- package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +10 -0
- package/src/Utilities/Services/CalculatedColumnExpressionService.js +26 -10
- package/src/agGrid/Adaptable.d.ts +1 -0
- package/src/agGrid/Adaptable.js +14 -1
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adaptabletools/adaptable",
|
|
3
|
-
"version": "12.0.
|
|
3
|
+
"version": "12.0.9",
|
|
4
4
|
"description": "Powerful data-agnostic HTML5 datagrid add-on that sits on top of an underlying grid component and provides all the rich functionality that advanced users expect from their DataGrids and Data Tables",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"web-components",
|
package/publishTimestamp.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default:
|
|
1
|
+
declare const _default: 1657803750403;
|
|
2
2
|
export default _default;
|
package/publishTimestamp.js
CHANGED
package/src/Api/EventApi.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ import { GridDataChangedInfo } from './Events/GridDataChanged';
|
|
|
16
16
|
import { TeamSharingEntityChangedInfo } from './Events/TeamSharingEntityChanged';
|
|
17
17
|
import { ActionRowSubmittedInfo } from './Events/ActionRowSubmitted';
|
|
18
18
|
import { DataSetSelectedInfo } from './Events/DataSetSelected';
|
|
19
|
+
import { AdaptableStateReloadedInfo } from './Events/AdaptableStateReloaded';
|
|
19
20
|
/**
|
|
20
21
|
* Responsible for publishing the many Events that AdapTable fires
|
|
21
22
|
*/
|
|
@@ -183,6 +184,17 @@ export interface EventApi {
|
|
|
183
184
|
* Unsubscribe from AdaptableStateChanged
|
|
184
185
|
*/
|
|
185
186
|
off(eventName: 'AdaptableStateChanged', callback: (adaptableStateChangedInfo: AdaptableStateChangedInfo) => void): void;
|
|
187
|
+
/**
|
|
188
|
+
* Event fired whenever **Adaptable State is reloaded**
|
|
189
|
+
* @param eventName AdaptableStateReloaded
|
|
190
|
+
* @param callback AdaptableStateReloadedInfo
|
|
191
|
+
* @returns the unsubscribe function
|
|
192
|
+
*/
|
|
193
|
+
on(eventName: 'AdaptableStateReloaded', callback: (adaptableStateReloadedInfo: AdaptableStateReloadedInfo) => void): () => void;
|
|
194
|
+
/**
|
|
195
|
+
* Unsubscribe from AdaptableStateReloaded
|
|
196
|
+
*/
|
|
197
|
+
off(eventName: 'AdaptableStateReloaded', callback: (adaptableStateReloadedInfo: AdaptableStateReloadedInfo) => void): void;
|
|
186
198
|
/**
|
|
187
199
|
* Event fired whenever **a change occurs relating to live reports / data**
|
|
188
200
|
* Used in conjunction with AdapTable's partners OpenFin, ipushpull or Glue42
|
|
@@ -252,6 +264,6 @@ export interface EventApi {
|
|
|
252
264
|
emitSync(eventName: 'DashboardChanged', data?: any): any[];
|
|
253
265
|
emitSync(eventName: 'FlashingCellDisplayed', data?: any): any[];
|
|
254
266
|
emitSync(eventName: 'AdaptableDestroy'): any[];
|
|
255
|
-
emit(eventName: 'AdaptableReady' | 'AlertFired' | 'CheckboxColumnClicked' | 'CustomToolbarConfigured' | 'AdaptableStateChanged' | 'DashboardChanged' | 'CellChanged' | 'GridDataChanged' | 'LayoutChanged' | 'LiveDataChanged' | 'SearchChanged' | 'SelectionChanged' | 'SystemStatusMessageDisplayed' | 'TeamSharingEntityChanged' | 'ThemeChanged' | 'FDC3MessageSent' | 'ActionRowSubmitted' | 'DataSetSelected', data?: any): Promise<any>;
|
|
267
|
+
emit(eventName: 'AdaptableReady' | 'AlertFired' | 'CheckboxColumnClicked' | 'CustomToolbarConfigured' | 'AdaptableStateChanged' | 'AdaptableStateReloaded' | 'DashboardChanged' | 'CellChanged' | 'GridDataChanged' | 'LayoutChanged' | 'LiveDataChanged' | 'SearchChanged' | 'SelectionChanged' | 'SystemStatusMessageDisplayed' | 'TeamSharingEntityChanged' | 'ThemeChanged' | 'FDC3MessageSent' | 'ActionRowSubmitted' | 'DataSetSelected', data?: any): Promise<any>;
|
|
256
268
|
destroy(): void;
|
|
257
269
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AdaptablePersistentState } from '../../PredefinedConfig/AdaptableState';
|
|
2
|
+
import { BaseEventInfo } from './BaseEventInfo';
|
|
3
|
+
/**
|
|
4
|
+
* Object returned by the `AdaptableStateReloaded` event
|
|
5
|
+
*/
|
|
6
|
+
export interface AdaptableStateReloadedInfo extends BaseEventInfo {
|
|
7
|
+
/**
|
|
8
|
+
* Current AdapTableId
|
|
9
|
+
*/
|
|
10
|
+
adaptableId: string;
|
|
11
|
+
/**
|
|
12
|
+
* Current Adaptable State Key
|
|
13
|
+
*/
|
|
14
|
+
adaptableStateKey: string;
|
|
15
|
+
/**
|
|
16
|
+
* Adaptable State before the reload
|
|
17
|
+
*/
|
|
18
|
+
oldState: AdaptablePersistentState;
|
|
19
|
+
/**
|
|
20
|
+
* Adaptable State after the reload
|
|
21
|
+
*/
|
|
22
|
+
newState: AdaptablePersistentState;
|
|
23
|
+
}
|
|
@@ -48,6 +48,7 @@ class ConfigApiImpl extends ApiBase_1.ApiBase {
|
|
|
48
48
|
reloadPredefinedConfig(newPredefinedConfig) {
|
|
49
49
|
var _a;
|
|
50
50
|
const adaptableOptions = this.adaptable.adaptableOptions;
|
|
51
|
+
const oldState = this.getPersistedState();
|
|
51
52
|
const clearStateFn = ((_a = adaptableOptions.stateOptions) === null || _a === void 0 ? void 0 : _a.clearState) ||
|
|
52
53
|
(() => {
|
|
53
54
|
localStorage.removeItem(adaptableOptions.adaptableStateKey);
|
|
@@ -63,6 +64,16 @@ class ConfigApiImpl extends ApiBase_1.ApiBase {
|
|
|
63
64
|
this.setAdaptableStateKey(adaptableOptions.adaptableStateKey, {
|
|
64
65
|
predefinedConfig: newPredefinedConfig || adaptableOptions.predefinedConfig,
|
|
65
66
|
flushCurrentState: false,
|
|
67
|
+
}).then(() => {
|
|
68
|
+
const newState = this.getPersistedState();
|
|
69
|
+
const stateReloadedInfo = {
|
|
70
|
+
oldState,
|
|
71
|
+
newState,
|
|
72
|
+
adaptableStateKey: adaptableOptions.adaptableStateKey,
|
|
73
|
+
adaptableId: adaptableOptions.adaptableId,
|
|
74
|
+
adaptableApi: this.adaptable.api,
|
|
75
|
+
};
|
|
76
|
+
this.adaptable.api.eventApi.emit('AdaptableStateReloaded', stateReloadedInfo);
|
|
66
77
|
});
|
|
67
78
|
});
|
|
68
79
|
});
|
|
@@ -570,7 +570,7 @@ const adaptableMiddleware = (adaptable) => function (middlewareAPI) {
|
|
|
570
570
|
.getCalculatedColumnExpressionService()
|
|
571
571
|
.createAggregatedScalarCalculatedColumn(calculatedColumn);
|
|
572
572
|
});
|
|
573
|
-
// refresh
|
|
573
|
+
// refresh calculated columns
|
|
574
574
|
const aggCalculatedColumnIds = aggregatedCalculatedColumns.map((calculatedColumn) => calculatedColumn.ColumnId);
|
|
575
575
|
adaptable.refreshCells(null, aggCalculatedColumnIds, true);
|
|
576
576
|
return;
|
|
@@ -12,6 +12,7 @@ import { AccessLevel } from '../PredefinedConfig/Common/Entitlement';
|
|
|
12
12
|
import { CalculatedColumn } from '../PredefinedConfig/CalculatedColumnState';
|
|
13
13
|
import { FreeTextColumn } from '../PredefinedConfig/FreeTextColumnState';
|
|
14
14
|
import { AdaptableInternalIconName } from '../PredefinedConfig/Common/AdaptableIcon';
|
|
15
|
+
import { AdaptableStateReloadedInfo } from '../Api/Events/AdaptableStateReloaded';
|
|
15
16
|
/**
|
|
16
17
|
* Base class for all strategies and does most of the work of creating menus
|
|
17
18
|
*/
|
|
@@ -34,6 +35,7 @@ export declare abstract class AdaptableModuleBase implements IModule {
|
|
|
34
35
|
getReferencedNamedQueryNames(adaptableObject: AdaptableObject): string[];
|
|
35
36
|
hasNamedQueryReferences(): boolean;
|
|
36
37
|
handleAdaptableReady(): void;
|
|
38
|
+
handleConfigReloaded(adaptableStateReloadedInfo: AdaptableStateReloadedInfo): void;
|
|
37
39
|
setModuleEntitlement(): void;
|
|
38
40
|
addModuleMenuItem(source: 'ModuleMenu' | 'ModuleButton'): AdaptableMenuItem | undefined;
|
|
39
41
|
addModuleButtonMenuItem(): AdaptableMenuItem | undefined;
|
|
@@ -24,6 +24,9 @@ class AdaptableModuleBase {
|
|
|
24
24
|
this.handleAdaptableReady();
|
|
25
25
|
this.api.configApi.dispatchStateReadyAction(this.moduleInfo.ModuleName);
|
|
26
26
|
});
|
|
27
|
+
this.api.eventApi.on('AdaptableStateReloaded', (adaptableStateReloadedInfo) => {
|
|
28
|
+
this.handleConfigReloaded(adaptableStateReloadedInfo);
|
|
29
|
+
});
|
|
27
30
|
}
|
|
28
31
|
getViewAccessLevel() {
|
|
29
32
|
// override where necessary (ex. only 'Full' accessLevel should be displayed)
|
|
@@ -68,6 +71,9 @@ class AdaptableModuleBase {
|
|
|
68
71
|
handleAdaptableReady() {
|
|
69
72
|
// override where necessary in base classes
|
|
70
73
|
}
|
|
74
|
+
handleConfigReloaded(adaptableStateReloadedInfo) {
|
|
75
|
+
// override where necessary in base classes
|
|
76
|
+
}
|
|
71
77
|
setModuleEntitlement() {
|
|
72
78
|
this.AccessLevel = this.api.internalApi
|
|
73
79
|
.getEntitlementService()
|
|
@@ -8,8 +8,10 @@ import { CalculatedColumn } from '../PredefinedConfig/CalculatedColumnState';
|
|
|
8
8
|
import { AdaptableObjectItemView, IModule } from './Interface/IModule';
|
|
9
9
|
import { AdaptableApi } from '../Api/AdaptableApi';
|
|
10
10
|
import { AdaptableObject } from '../PredefinedConfig/Common/AdaptableObject';
|
|
11
|
+
import { AdaptableStateReloadedInfo } from '../Api/Events/AdaptableStateReloaded';
|
|
11
12
|
export declare class CalculatedColumnModule extends AdaptableModuleBase implements IModule {
|
|
12
13
|
constructor(api: AdaptableApi);
|
|
14
|
+
handleConfigReloaded(adaptableStateReloadedInfo: AdaptableStateReloadedInfo): void;
|
|
13
15
|
getModuleAdaptableObjects(): AdaptableObject[];
|
|
14
16
|
updateOldConfig(): void;
|
|
15
17
|
getExplicitlyReferencedColumnIds(calculatedColumn: CalculatedColumn): string[];
|
|
@@ -15,6 +15,10 @@ class CalculatedColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
15
15
|
constructor(api) {
|
|
16
16
|
super(ModuleConstants.CalculatedColumnModuleId, 'Calculated Column', 'calculated-column', 'CalculatedColumnPopup', 'Create bespoke columns whose cell value is derived dynamically from an Expression', api);
|
|
17
17
|
}
|
|
18
|
+
handleConfigReloaded(adaptableStateReloadedInfo) {
|
|
19
|
+
// re-dispatch the CalculatedColumnReady action to recreate all the aggregated scalar columns
|
|
20
|
+
this.api.internalApi.dispatchReduxAction(CalculatedColumnRedux.CalculatedColumnReady(this.api.calculatedColumnApi.getCalculatedColumnState()));
|
|
21
|
+
}
|
|
18
22
|
getModuleAdaptableObjects() {
|
|
19
23
|
return this.api.calculatedColumnApi.getAllCalculatedColumn();
|
|
20
24
|
}
|
|
@@ -32,10 +32,12 @@ class TeamSharingModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
32
32
|
// make sure there is no zombie import process remaining (in case a previous import crashed)
|
|
33
33
|
this.api.internalApi.dispatchReduxAction(TeamSharingRedux.TeamSharingCommitImport());
|
|
34
34
|
});
|
|
35
|
-
this.api.teamSharingApi.
|
|
35
|
+
if (this.api.teamSharingApi.isTeamSharingAvailable()) {
|
|
36
|
+
this.api.teamSharingApi.triggerLoadingTeamSharingEntries();
|
|
37
|
+
}
|
|
36
38
|
}
|
|
37
39
|
isModuleAvailable() {
|
|
38
|
-
return super.isModuleAvailable() && this.api.teamSharingApi.
|
|
40
|
+
return super.isModuleAvailable() && this.api.teamSharingApi.isTeamSharingAvailable();
|
|
39
41
|
}
|
|
40
42
|
isModuleObjectsShareable() {
|
|
41
43
|
return false;
|
|
@@ -177,6 +177,11 @@ exports.aggregatedScalarExpressionFunctions = {
|
|
|
177
177
|
}
|
|
178
178
|
return rowValue < minValue ? rowValue : minValue;
|
|
179
179
|
},
|
|
180
|
+
done: (minValue) => {
|
|
181
|
+
if (minValue !== Number.MAX_VALUE) {
|
|
182
|
+
return minValue;
|
|
183
|
+
}
|
|
184
|
+
},
|
|
180
185
|
},
|
|
181
186
|
},
|
|
182
187
|
},
|
|
@@ -218,6 +223,11 @@ exports.aggregatedScalarExpressionFunctions = {
|
|
|
218
223
|
}
|
|
219
224
|
return rowValue > maxValue ? rowValue : maxValue;
|
|
220
225
|
},
|
|
226
|
+
done: (maxValue) => {
|
|
227
|
+
if (maxValue !== Number.MIN_VALUE) {
|
|
228
|
+
return maxValue;
|
|
229
|
+
}
|
|
230
|
+
},
|
|
221
231
|
},
|
|
222
232
|
},
|
|
223
233
|
},
|
|
@@ -29,6 +29,16 @@ class CalculatedColumnExpressionService {
|
|
|
29
29
|
this.adaptableApi.gridApi.refreshCells(null, refreshedCalculatedColumns);
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
|
+
this.adaptableApi.eventApi.on('GridDataChanged', () => {
|
|
33
|
+
const refreshedCalculatedColumns = [];
|
|
34
|
+
this.aggregatedScalarCalculatedColumnsMap.forEach((aggregatedScalarCalculatedColumn) => {
|
|
35
|
+
aggregatedScalarCalculatedColumn.refreshAggregatedColumnValue();
|
|
36
|
+
refreshedCalculatedColumns.push(aggregatedScalarCalculatedColumn.getCalculatedColumnId());
|
|
37
|
+
});
|
|
38
|
+
if (refreshedCalculatedColumns.length) {
|
|
39
|
+
this.adaptableApi.gridApi.refreshCells(null, refreshedCalculatedColumns);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
32
42
|
}
|
|
33
43
|
destroy() {
|
|
34
44
|
[...this.aggregatedScalarCalculatedColumnsMap.values()].forEach((aggregatedScalarCalculatedColumn) => aggregatedScalarCalculatedColumn.destroy());
|
|
@@ -116,10 +126,7 @@ class CalculatedColumnExpressionService {
|
|
|
116
126
|
// if there is already an aggregated scalar, delete it (possible when editing)
|
|
117
127
|
this.destroyAggregatedScalarCalculatedColumn(calculatedColumn);
|
|
118
128
|
if ((_a = calculatedColumn.Query) === null || _a === void 0 ? void 0 : _a.AggregatedScalarExpression) {
|
|
119
|
-
const
|
|
120
|
-
.getQueryLanguageService()
|
|
121
|
-
.evaluateAggregatedScalarExpression(calculatedColumn.Query.AggregatedScalarExpression, ModuleConstants_1.CalculatedColumnModuleId);
|
|
122
|
-
const aggregatedScalarCalculatedColumn = new AggregatedScalarCalculatedColumn(aggregationConfig.value, calculatedColumn, this.adaptableApi);
|
|
129
|
+
const aggregatedScalarCalculatedColumn = new AggregatedScalarCalculatedColumn(calculatedColumn, this.adaptableApi);
|
|
123
130
|
this.aggregatedScalarCalculatedColumnsMap.set(calculatedColumn.Uuid, aggregatedScalarCalculatedColumn);
|
|
124
131
|
}
|
|
125
132
|
}
|
|
@@ -131,13 +138,16 @@ class CalculatedColumnExpressionService {
|
|
|
131
138
|
}
|
|
132
139
|
exports.CalculatedColumnExpressionService = CalculatedColumnExpressionService;
|
|
133
140
|
class AggregatedScalarCalculatedColumn {
|
|
134
|
-
constructor(
|
|
135
|
-
this.expressionEvaluation = expressionEvaluation;
|
|
141
|
+
constructor(calculatedColumn, adaptableApi) {
|
|
136
142
|
this.calculatedColumn = calculatedColumn;
|
|
137
143
|
this.adaptableApi = adaptableApi;
|
|
138
|
-
|
|
144
|
+
const aggregationConfig = this.adaptableApi.internalApi
|
|
145
|
+
.getQueryLanguageService()
|
|
146
|
+
.evaluateAggregatedScalarExpression(calculatedColumn.Query.AggregatedScalarExpression, ModuleConstants_1.CalculatedColumnModuleId);
|
|
147
|
+
this.expressionEvaluation = aggregationConfig.value;
|
|
148
|
+
this.aggregationResult = this.computeAggregatedValue(this.expressionEvaluation);
|
|
139
149
|
// currently we support only one reducer
|
|
140
|
-
this.aggregationReducerName = Object.keys(expressionEvaluation.aggregationParams.reducers)[0];
|
|
150
|
+
this.aggregationReducerName = Object.keys(this.expressionEvaluation.aggregationParams.reducers)[0];
|
|
141
151
|
}
|
|
142
152
|
destroy() {
|
|
143
153
|
this.expressionEvaluation = null;
|
|
@@ -153,6 +163,10 @@ class AggregatedScalarCalculatedColumn {
|
|
|
153
163
|
return aggregationValue;
|
|
154
164
|
}
|
|
155
165
|
refreshAggregatedColumnValue() {
|
|
166
|
+
const aggregationConfig = this.adaptableApi.internalApi
|
|
167
|
+
.getQueryLanguageService()
|
|
168
|
+
.evaluateAggregatedScalarExpression(this.calculatedColumn.Query.AggregatedScalarExpression, ModuleConstants_1.CalculatedColumnModuleId);
|
|
169
|
+
this.expressionEvaluation = aggregationConfig.value;
|
|
156
170
|
this.aggregationResult = this.computeAggregatedValue(this.expressionEvaluation);
|
|
157
171
|
}
|
|
158
172
|
getCalculatedColumnId() {
|
|
@@ -167,11 +181,13 @@ class AggregatedScalarCalculatedColumn {
|
|
|
167
181
|
// we iterate over the RowNode list (we need this to handle complex column values (nested values, valueGetters etc)
|
|
168
182
|
// so we will map the fieldNames to RowNode.data
|
|
169
183
|
const mapReducerValueGetter = (fieldName) => {
|
|
170
|
-
return (rowNode) =>
|
|
184
|
+
return (rowNode) => {
|
|
185
|
+
return this.adaptableApi.gridApi.getRawValueFromRowNode(rowNode, fieldName);
|
|
186
|
+
};
|
|
171
187
|
};
|
|
172
188
|
Object.values(expressionEvaluation.aggregationParams.reducers).forEach((aggregationReducer) => {
|
|
173
189
|
aggregationReducer.getter = mapReducerValueGetter(aggregationReducer.field);
|
|
174
|
-
// nullify the
|
|
190
|
+
// nullify the field to force the fallback on the getter fn
|
|
175
191
|
aggregationReducer.field = null;
|
|
176
192
|
});
|
|
177
193
|
const mapGroupByToKey = (fieldName) => {
|
|
@@ -95,6 +95,7 @@ export declare class Adaptable implements IAdaptable {
|
|
|
95
95
|
private listenerGlobalSetRowSelection;
|
|
96
96
|
private listenerGlobalColumnEventsThatTriggerStateChange;
|
|
97
97
|
private listenerGlobalColumnEventsThatTriggerAutoLayoutSave;
|
|
98
|
+
private listenerGlobalRowGroupEventsThatTriggerAutoLayoutSave;
|
|
98
99
|
static init(adaptableOptions: AdaptableOptions): Promise<AdaptableApi>;
|
|
99
100
|
/**
|
|
100
101
|
* Lazy static constructor for Adaptable
|
package/src/agGrid/Adaptable.js
CHANGED
|
@@ -2515,6 +2515,7 @@ class Adaptable {
|
|
|
2515
2515
|
this.gridOptions.api.removeGlobalListener(this.listenerGlobalSetRowSelection);
|
|
2516
2516
|
this.gridOptions.api.removeGlobalListener(this.listenerGlobalColumnEventsThatTriggerStateChange);
|
|
2517
2517
|
this.gridOptions.api.removeGlobalListener(this.listenerGlobalColumnEventsThatTriggerAutoLayoutSave);
|
|
2518
|
+
this.gridOptions.api.removeGlobalListener(this.listenerGlobalRowGroupEventsThatTriggerAutoLayoutSave);
|
|
2518
2519
|
this.listenerFirstDataRendered = null;
|
|
2519
2520
|
this.listenerPivotModeChanged = null;
|
|
2520
2521
|
this.listenerPivotChanged = null;
|
|
@@ -2526,6 +2527,7 @@ class Adaptable {
|
|
|
2526
2527
|
this.listenerModelUpdated = null;
|
|
2527
2528
|
this.listenerGlobalColumnEventsThatTriggerStateChange = null;
|
|
2528
2529
|
this.listenerGlobalColumnEventsThatTriggerAutoLayoutSave = null;
|
|
2530
|
+
this.listenerGlobalRowGroupEventsThatTriggerAutoLayoutSave = null;
|
|
2529
2531
|
this.gridOptions.api.__adaptable = null;
|
|
2530
2532
|
this.gridOptions.api.setColumnDefs = GridApi_setColumnDefs;
|
|
2531
2533
|
this.gridOptions.getRowStyle = null;
|
|
@@ -2759,7 +2761,6 @@ class Adaptable {
|
|
|
2759
2761
|
all_modules_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED,
|
|
2760
2762
|
all_modules_1.Events.EVENT_SORT_CHANGED,
|
|
2761
2763
|
all_modules_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED,
|
|
2762
|
-
all_modules_1.Events.EVENT_ROW_GROUP_OPENED,
|
|
2763
2764
|
all_modules_1.Events.EVENT_COLUMN_VALUE_CHANGED,
|
|
2764
2765
|
];
|
|
2765
2766
|
// ADD filter event
|
|
@@ -2768,6 +2769,18 @@ class Adaptable {
|
|
|
2768
2769
|
this.debouncedSaveGridLayout();
|
|
2769
2770
|
}
|
|
2770
2771
|
}));
|
|
2772
|
+
// Save Layout if Display Row Groups is "dynamic"
|
|
2773
|
+
const rowGroupEventsThatTriggersAutoLayoutSave = [
|
|
2774
|
+
all_modules_1.Events.EVENT_ROW_GROUP_OPENED,
|
|
2775
|
+
all_modules_1.Events.EVENT_EXPAND_COLLAPSE_ALL,
|
|
2776
|
+
];
|
|
2777
|
+
this.gridOptions.api.addGlobalListener((this.listenerGlobalRowGroupEventsThatTriggerAutoLayoutSave = (type) => {
|
|
2778
|
+
if (rowGroupEventsThatTriggersAutoLayoutSave.indexOf(type) > -1) {
|
|
2779
|
+
if (this.adaptableOptions.layoutOptions.displayRowGroups == 'dynamic') {
|
|
2780
|
+
this.debouncedSaveGridLayout();
|
|
2781
|
+
}
|
|
2782
|
+
}
|
|
2783
|
+
}));
|
|
2771
2784
|
/**
|
|
2772
2785
|
* Use Case: A visible Column has become row grouped and 'hideColumnWhenGrouped' is true
|
|
2773
2786
|
* Action: Make the column invisible
|