@adaptabletools/adaptable 22.0.10 → 22.1.0-canary.0
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 +33 -1
- package/index.css.map +1 -1
- package/package.json +3 -4
- package/src/AdaptableState/Common/AdaptablePredicate.js +1 -1
- package/src/AdaptableState/InitialState.d.ts +2 -2
- package/src/AdaptableState/LayoutState.d.ts +47 -0
- package/src/Api/CalendarApi.d.ts +15 -0
- package/src/Api/ColumnScopeApi.d.ts +5 -0
- package/src/Api/DataChangeHistoryApi.d.ts +7 -2
- package/src/Api/Implementation/CalendarApiImpl.d.ts +3 -0
- package/src/Api/Implementation/CalendarApiImpl.js +10 -0
- package/src/Api/Implementation/ColumnScopeApiImpl.d.ts +1 -0
- package/src/Api/Implementation/ColumnScopeApiImpl.js +12 -0
- package/src/Api/Implementation/DataChangeHistoryApiImpl.d.ts +2 -1
- package/src/Api/Implementation/DataChangeHistoryApiImpl.js +7 -0
- package/src/Api/Implementation/LayoutHelpers.js +12 -0
- package/src/Api/Internal/AlertInternalApi.js +4 -1
- package/src/Api/Internal/FormatColumnInternalApi.js +3 -3
- package/src/Strategy/FlashingCellModule.js +1 -0
- package/src/Strategy/PlusMinusModule.js +3 -3
- package/src/Utilities/Constants/GeneralConstants.js +2 -1
- package/src/Utilities/ExpressionFunctions/booleanExpressionFunctions.d.ts +1 -1
- package/src/Utilities/ExpressionFunctions/booleanExpressionFunctions.js +41 -2
- package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.d.ts +1 -1
- package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +31 -2
- package/src/Utilities/Helpers/AdaptableHelper.js +30 -4
- package/src/Utilities/Services/Interface/IQueryLanguageService.d.ts +1 -0
- package/src/Utilities/Services/MetamodelService.js +18 -18
- package/src/Utilities/Services/QueryLanguageService.d.ts +2 -0
- package/src/Utilities/Services/QueryLanguageService.js +20 -8
- package/src/Utilities/Services/ValidationService.js +3 -1
- package/src/View/Components/EntityRulesEditor/index.js +1 -1
- package/src/View/Components/ModuleValueSelector/index.js +9 -1
- package/src/View/Components/ReorderDraggable/index.js +22 -36
- package/src/View/Components/ValueSelector/index.js +46 -50
- package/src/View/Dashboard/PinnedToolbarsSelector.js +1 -1
- package/src/View/Layout/Wizard/LayoutWizard.js +16 -1
- package/src/View/Layout/Wizard/sections/RowSelectionSection.d.ts +8 -0
- package/src/View/Layout/Wizard/sections/RowSelectionSection.js +141 -0
- package/src/View/NamedQuery/Wizard/NamedQuerySettingsWizardSection.js +0 -1
- package/src/agGrid/AdaptableAgGrid.js +10 -0
- package/src/components/Dashboard/Dashboard.js +1 -1
- package/src/components/DragAndDropContext/ModuleManager.d.ts +1 -0
- package/src/components/DragAndDropContext/ModuleManager.js +12 -37
- package/src/components/DragAndDropContext/TabList.d.ts +11 -6
- package/src/components/DragAndDropContext/TabList.js +78 -36
- package/src/components/DragAndDropContext/UnusedPanel.js +10 -21
- package/src/components/ExpressionEditor/BaseEditorInput.d.ts +2 -0
- package/src/components/ExpressionEditor/BaseEditorInput.js +4 -0
- package/src/components/ExpressionEditor/EditorInput.d.ts +3 -1
- package/src/components/ExpressionEditor/EditorInput.js +20 -9
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilder.d.ts +2 -1
- package/src/components/ExpressionEditor/QueryBuilder/QueryBuilder.js +3 -12
- package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +17 -19
- package/src/components/ExpressionEditor/index.d.ts +2 -1
- package/src/components/ExpressionEditor/index.js +1 -1
- package/src/components/Tree/TreeDropdown/index.js +38 -27
- package/src/components/dnd/index.d.ts +3 -13
- package/src/components/dnd/index.js +4 -55
- package/src/env.js +2 -2
- package/src/layout-manager/src/LayoutManagerModel.d.ts +2 -1
- package/src/layout-manager/src/index.d.ts +9 -0
- package/src/layout-manager/src/index.js +97 -1
- package/src/layout-manager/src/normalizeLayoutModel.js +8 -0
- package/src/layout-manager/src/simplifyLayoutModel.js +6 -0
- package/src/metamodel/adaptable-metamodel-model.d.ts +22 -13
- package/src/metamodel/adaptable.metamodel.d.ts +3773 -5143
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/parser/src/parser.js +55 -1218
- package/src/parser/src/types.d.ts +5 -0
- package/tsconfig.esm.tsbuildinfo +1 -1
|
@@ -1,55 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* We're doing all this because the placeholder is not correctly displayed in react-beautiful-dnd
|
|
6
|
-
* with React 19.
|
|
7
|
-
* So we make sure it properly occupies the space of the dragged item, so the
|
|
8
|
-
* container won't flicker when we're dragging an item (as the drag item receives
|
|
9
|
-
* position: fixed while dragging, so content does not have the initial height anymore, therefore,
|
|
10
|
-
* the placeholder is included, with the computed height of the dragging element)
|
|
11
|
-
*/
|
|
12
|
-
const Droppable = (props) => {
|
|
13
|
-
const children = props.children;
|
|
14
|
-
const { placeholderStyle } = React.useContext(AdaptableDDContext);
|
|
15
|
-
return (React.createElement(DNDDroppable, { ...props }, (provided, snapshot) => {
|
|
16
|
-
provided.placeholder = (React.createElement("div", { key: "placeholder", style: placeholderStyle || {
|
|
17
|
-
visibility: 'hidden',
|
|
18
|
-
pointerEvents: 'none',
|
|
19
|
-
height: 0,
|
|
20
|
-
} }));
|
|
21
|
-
return children(provided, snapshot);
|
|
22
|
-
}));
|
|
23
|
-
};
|
|
24
|
-
const queryAttr = 'data-rbd-draggable-id';
|
|
25
|
-
const AdaptableDDContext = React.createContext({
|
|
26
|
-
placeholderStyle: null,
|
|
27
|
-
});
|
|
28
|
-
const DragDropContext = (props) => {
|
|
29
|
-
const getDraggedDom = (draggableId) => {
|
|
30
|
-
const domQuery = `[${queryAttr}='${draggableId}']`;
|
|
31
|
-
const draggedDOM = document.querySelector(domQuery);
|
|
32
|
-
return draggedDOM;
|
|
33
|
-
};
|
|
34
|
-
const [placeholderStyle, setPlaceholderStyle] = useState(null);
|
|
35
|
-
const handleDragStart = (initial, provided) => {
|
|
36
|
-
props.onDragStart?.(initial, provided);
|
|
37
|
-
const draggedDOM = getDraggedDom(initial.draggableId);
|
|
38
|
-
if (!draggedDOM) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
const { clientHeight, clientWidth } = draggedDOM;
|
|
42
|
-
const computedStyle = window.getComputedStyle(draggedDOM);
|
|
43
|
-
setPlaceholderStyle({
|
|
44
|
-
height: clientHeight + parseFloat(computedStyle.marginTop) + parseFloat(computedStyle.marginBottom),
|
|
45
|
-
width: clientWidth,
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
const handleDragEnd = (result, provided) => {
|
|
49
|
-
props.onDragEnd?.(result, provided);
|
|
50
|
-
setPlaceholderStyle(null);
|
|
51
|
-
};
|
|
52
|
-
return (React.createElement(AdaptableDDContext.Provider, { value: { placeholderStyle } },
|
|
53
|
-
React.createElement(DDContext, { ...props, onDragStart: handleDragStart, onDragEnd: handleDragEnd })));
|
|
54
|
-
};
|
|
55
|
-
export { Draggable, Droppable, DragDropContext };
|
|
1
|
+
export { DragDropProvider, DragList, useDragDropProvider, useDragListContext, DRAG_ITEM_ATTRIBUTE, } from '@infinite-table/infinite-react';
|
|
2
|
+
export function defaultDragProxyMove({ proxyElement, dx, dy }) {
|
|
3
|
+
proxyElement.style.transform = `translate3d(${Math.round(dx)}px, ${Math.round(dy)}px, 0)`;
|
|
4
|
+
}
|
package/src/env.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
NEXT_PUBLIC_INFINITE_TABLE_LICENSE_KEY: "StartDate=2021-06-29|EndDate=2030-01-01|Owner=Adaptable|Type=distribution|TS=1624971462479|C=137829811,1004007071,2756196225,1839832928,3994409405,636616862" || '',
|
|
3
|
-
PUBLISH_TIMESTAMP:
|
|
4
|
-
VERSION: "22.0.
|
|
3
|
+
PUBLISH_TIMESTAMP: 1776278112836 || Date.now(),
|
|
4
|
+
VERSION: "22.1.0-canary.0" || '--current-version--',
|
|
5
5
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ColumnSizingMap } from '../../AdaptableState/LayoutState';
|
|
1
|
+
import { ColumnSizingMap, LayoutRowSelection } from '../../AdaptableState/LayoutState';
|
|
2
2
|
import { XOR } from '../../Utilities/Extensions/TypeExtensions';
|
|
3
3
|
/**
|
|
4
4
|
* Defines how a Column is sorted
|
|
@@ -112,6 +112,7 @@ export interface BaseLayoutModel {
|
|
|
112
112
|
ColumnPinning?: {
|
|
113
113
|
[columnId: string]: 'left' | 'right';
|
|
114
114
|
};
|
|
115
|
+
RowSelection?: LayoutRowSelection | false;
|
|
115
116
|
/**
|
|
116
117
|
* Display Grand Total Row of the Pivot Table
|
|
117
118
|
*/
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ColumnState, GridApi, GridOptions, GridState } from 'ag-grid-enterprise';
|
|
2
2
|
import { PivotLayoutModel, TableLayoutModel } from './LayoutManagerModel';
|
|
3
3
|
import { LMEmitter } from './LMEmitter';
|
|
4
|
+
import { LayoutRowSelection } from '../../AdaptableState/LayoutState';
|
|
4
5
|
export declare const PIVOT_ANY_TOTAL_COL_TYPE = "pivotAnyTotal";
|
|
5
6
|
export declare const PIVOT_GRAND_TOTAL_COL_TYPE = "pivotGrandTotal";
|
|
6
7
|
export declare const PIVOT_COLUMN_TOTAL_COL_TYPE = "pivotColumnTotal";
|
|
@@ -9,6 +10,7 @@ export type LayoutManagerOptions = {
|
|
|
9
10
|
gridApi: GridApi;
|
|
10
11
|
debugId: string;
|
|
11
12
|
layoutChangeDebounce?: number;
|
|
13
|
+
initialRowSelection?: GridOptions['rowSelection'];
|
|
12
14
|
};
|
|
13
15
|
type ApplyLayoutOptions = {
|
|
14
16
|
skipApplyRowGroupsExpandedState?: boolean;
|
|
@@ -26,6 +28,7 @@ export declare class LayoutManager<DATA_TYPE = any> extends LMEmitter {
|
|
|
26
28
|
private suppressGlobalAgGridEventListener;
|
|
27
29
|
private supressGlobalAgGridEventTimeoutId;
|
|
28
30
|
private layoutManagerDebugId;
|
|
31
|
+
private initialRowSelection;
|
|
29
32
|
constructor(options: LayoutManagerOptions);
|
|
30
33
|
destroy(): void;
|
|
31
34
|
private setupEvents;
|
|
@@ -69,6 +72,12 @@ export declare class LayoutManager<DATA_TYPE = any> extends LMEmitter {
|
|
|
69
72
|
private getLayoutDetailsAsString;
|
|
70
73
|
applyColumnDefsChanges(layout: TableLayoutModel | PivotLayoutModel): boolean;
|
|
71
74
|
private applyColumnSizingColumnDefsChanges;
|
|
75
|
+
static readonly SELECTION_COLUMN_ID = "ag-Grid-SelectionColumn";
|
|
76
|
+
static getGridOptionForRowSelectionFromLayout(layoutRowSelection: LayoutRowSelection | false | undefined, baseGridRowSelection: GridOptions['rowSelection']): GridOptions['rowSelection'] | undefined;
|
|
77
|
+
static isSelectionColumnInNonFirstPosition(tableColumns: string[] | undefined): boolean;
|
|
78
|
+
private ensureSelectionColumnPositionUnlocked;
|
|
79
|
+
private getRowSelectionFromGrid;
|
|
80
|
+
private applyRowSelection;
|
|
72
81
|
private applyTableLayout;
|
|
73
82
|
private getRowGroupNodePathsAs;
|
|
74
83
|
applyRowGroupValues(RowGroupValues: TableLayoutModel['RowGroupValues'], rowGroupedColumns: string[]): void;
|
|
@@ -151,6 +151,7 @@ export class LayoutManager extends LMEmitter {
|
|
|
151
151
|
suppressGlobalAgGridEventListener = false;
|
|
152
152
|
supressGlobalAgGridEventTimeoutId = null;
|
|
153
153
|
layoutManagerDebugId;
|
|
154
|
+
initialRowSelection;
|
|
154
155
|
constructor(options) {
|
|
155
156
|
super({ debugId: options.debugId });
|
|
156
157
|
this.layoutChangeDebounce = options.layoutChangeDebounce ?? 0;
|
|
@@ -159,6 +160,7 @@ export class LayoutManager extends LMEmitter {
|
|
|
159
160
|
wait: this.layoutChangeDebounce,
|
|
160
161
|
}).bind(this);
|
|
161
162
|
}
|
|
163
|
+
this.initialRowSelection = options.initialRowSelection;
|
|
162
164
|
this.setOptions(options);
|
|
163
165
|
// this ensures the grand total columns are positioned correctly (before/after) even when changed at runtime
|
|
164
166
|
// see https://www.ag-grid.com/react-data-grid/pivoting-column-groups/#changing-data-filters-and-configurations
|
|
@@ -400,6 +402,7 @@ export class LayoutManager extends LMEmitter {
|
|
|
400
402
|
PivotGroupedColumns: layout.RowGroupedColumns,
|
|
401
403
|
PivotAggregationColumns: layout.TableAggregationColumns,
|
|
402
404
|
GrandTotalRow: layout.GrandTotalRow,
|
|
405
|
+
RowSelection: layout.RowSelection,
|
|
403
406
|
PivotExpandLevel: prevLayout?.PivotExpandLevel ?? -1,
|
|
404
407
|
};
|
|
405
408
|
if (storePivotResultColumns) {
|
|
@@ -431,7 +434,6 @@ export class LayoutManager extends LMEmitter {
|
|
|
431
434
|
}
|
|
432
435
|
getUndecidedLayoutModelFromGrid(columnState) {
|
|
433
436
|
let TableColumns = columnState.map((c) => c.colId);
|
|
434
|
-
// .filter((colId) => colId !== 'ag-Grid-SelectionColumn');
|
|
435
437
|
let ColumnSorts = [];
|
|
436
438
|
const RowGroupedColumns = [];
|
|
437
439
|
let RowGroupValues = undefined;
|
|
@@ -739,6 +741,7 @@ export class LayoutManager extends LMEmitter {
|
|
|
739
741
|
GrandTotalRow: this.gridApi.getGridOption('grandTotalRow'),
|
|
740
742
|
SuppressAggFuncInHeader: this.gridApi.getGridOption('suppressAggFuncInHeader'),
|
|
741
743
|
RowGroupDisplayType: this.gridApi.getGridOption('groupDisplayType') === 'multipleColumns' ? 'multi' : 'single',
|
|
744
|
+
RowSelection: this.getRowSelectionFromGrid(),
|
|
742
745
|
});
|
|
743
746
|
return layout;
|
|
744
747
|
}
|
|
@@ -813,6 +816,8 @@ export class LayoutManager extends LMEmitter {
|
|
|
813
816
|
const flatColDefs = flattenColDefs(colDefs);
|
|
814
817
|
const colDefsById = new Map(flatColDefs.map((colDef) => [colDef.colId ?? colDef.field, colDef]));
|
|
815
818
|
const getColDef = (colId) => colDefsById.get(colId);
|
|
819
|
+
// TODO to implement support for row selection in server-side row model
|
|
820
|
+
// agGridState.rowSelection = { ... }
|
|
816
821
|
agGridState.columnVisibility = {
|
|
817
822
|
hiddenColIds: flatColDefs
|
|
818
823
|
.filter((colDef) => {
|
|
@@ -1101,6 +1106,7 @@ export class LayoutManager extends LMEmitter {
|
|
|
1101
1106
|
else {
|
|
1102
1107
|
this.gridApi.setGridOption('grandTotalRow', null);
|
|
1103
1108
|
}
|
|
1109
|
+
this.applyRowSelection(layout);
|
|
1104
1110
|
this.applyColumnDefsChanges(layout);
|
|
1105
1111
|
if (isPivotLayoutModel(layout)) {
|
|
1106
1112
|
try {
|
|
@@ -1158,8 +1164,98 @@ export class LayoutManager extends LMEmitter {
|
|
|
1158
1164
|
}
|
|
1159
1165
|
return false;
|
|
1160
1166
|
}
|
|
1167
|
+
static SELECTION_COLUMN_ID = 'ag-Grid-SelectionColumn';
|
|
1168
|
+
static getGridOptionForRowSelectionFromLayout(layoutRowSelection, baseGridRowSelection) {
|
|
1169
|
+
if (layoutRowSelection === false) {
|
|
1170
|
+
return undefined;
|
|
1171
|
+
}
|
|
1172
|
+
if (layoutRowSelection == null) {
|
|
1173
|
+
return baseGridRowSelection;
|
|
1174
|
+
}
|
|
1175
|
+
const current = baseGridRowSelection && typeof baseGridRowSelection !== 'string'
|
|
1176
|
+
? baseGridRowSelection
|
|
1177
|
+
: {};
|
|
1178
|
+
const updated = { ...current };
|
|
1179
|
+
if (layoutRowSelection.Mode != null) {
|
|
1180
|
+
updated.mode = layoutRowSelection.Mode;
|
|
1181
|
+
}
|
|
1182
|
+
if (layoutRowSelection.Checkboxes != null) {
|
|
1183
|
+
updated.checkboxes = layoutRowSelection.Checkboxes;
|
|
1184
|
+
}
|
|
1185
|
+
if (layoutRowSelection.GroupSelectMode != null) {
|
|
1186
|
+
updated.groupSelects = layoutRowSelection.GroupSelectMode;
|
|
1187
|
+
}
|
|
1188
|
+
if (layoutRowSelection.SelectAllMode != null) {
|
|
1189
|
+
updated.selectAll = layoutRowSelection.SelectAllMode;
|
|
1190
|
+
}
|
|
1191
|
+
if (layoutRowSelection.HeaderCheckbox != null) {
|
|
1192
|
+
updated.headerCheckbox = layoutRowSelection.HeaderCheckbox;
|
|
1193
|
+
}
|
|
1194
|
+
if (layoutRowSelection.EnableClickSelection != null) {
|
|
1195
|
+
updated.enableClickSelection = layoutRowSelection.EnableClickSelection;
|
|
1196
|
+
}
|
|
1197
|
+
if (layoutRowSelection.CheckboxInGroupColumn != null) {
|
|
1198
|
+
updated.checkboxLocation = layoutRowSelection.CheckboxInGroupColumn
|
|
1199
|
+
? 'autoGroupColumn'
|
|
1200
|
+
: 'selectionColumn';
|
|
1201
|
+
}
|
|
1202
|
+
return updated;
|
|
1203
|
+
}
|
|
1204
|
+
static isSelectionColumnInNonFirstPosition(tableColumns) {
|
|
1205
|
+
if (!tableColumns) {
|
|
1206
|
+
return false;
|
|
1207
|
+
}
|
|
1208
|
+
const index = tableColumns.indexOf(LayoutManager.SELECTION_COLUMN_ID);
|
|
1209
|
+
return index > 0;
|
|
1210
|
+
}
|
|
1211
|
+
ensureSelectionColumnPositionUnlocked(layout) {
|
|
1212
|
+
if (LayoutManager.isSelectionColumnInNonFirstPosition(layout.TableColumns)) {
|
|
1213
|
+
const current = this.gridApi.getGridOption('selectionColumnDef');
|
|
1214
|
+
if (!current || current.lockPosition !== false) {
|
|
1215
|
+
this.gridApi.setGridOption('selectionColumnDef', {
|
|
1216
|
+
...current,
|
|
1217
|
+
lockPosition: false,
|
|
1218
|
+
});
|
|
1219
|
+
}
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1222
|
+
getRowSelectionFromGrid() {
|
|
1223
|
+
const gridRowSelection = this.gridApi.getGridOption('rowSelection');
|
|
1224
|
+
if (!gridRowSelection || typeof gridRowSelection === 'string') {
|
|
1225
|
+
return this.currentLayout?.RowSelection === false ? false : undefined;
|
|
1226
|
+
}
|
|
1227
|
+
const rs = gridRowSelection;
|
|
1228
|
+
const result = {
|
|
1229
|
+
Mode: rs.mode ?? 'singleRow',
|
|
1230
|
+
};
|
|
1231
|
+
if (rs.checkboxes != null) {
|
|
1232
|
+
result.Checkboxes = rs.checkboxes;
|
|
1233
|
+
}
|
|
1234
|
+
if (rs.mode === 'multiRow' && rs.groupSelects != null) {
|
|
1235
|
+
result.GroupSelectMode = rs.groupSelects;
|
|
1236
|
+
}
|
|
1237
|
+
if (rs.mode === 'multiRow' && rs.selectAll != null) {
|
|
1238
|
+
result.SelectAllMode = rs.selectAll;
|
|
1239
|
+
}
|
|
1240
|
+
if (rs.mode === 'multiRow' && rs.headerCheckbox != null) {
|
|
1241
|
+
result.HeaderCheckbox = rs.headerCheckbox;
|
|
1242
|
+
}
|
|
1243
|
+
if (rs.enableClickSelection != null) {
|
|
1244
|
+
result.EnableClickSelection =
|
|
1245
|
+
rs.enableClickSelection;
|
|
1246
|
+
}
|
|
1247
|
+
if (rs.checkboxLocation != null) {
|
|
1248
|
+
result.CheckboxInGroupColumn = rs.checkboxLocation === 'autoGroupColumn';
|
|
1249
|
+
}
|
|
1250
|
+
return result;
|
|
1251
|
+
}
|
|
1252
|
+
applyRowSelection(layout) {
|
|
1253
|
+
const rowSelection = LayoutManager.getGridOptionForRowSelectionFromLayout(layout.RowSelection, this.initialRowSelection);
|
|
1254
|
+
this.gridApi.setGridOption('rowSelection', rowSelection);
|
|
1255
|
+
}
|
|
1161
1256
|
applyTableLayout(layout, options) {
|
|
1162
1257
|
this.withSuppressColumnAnimation(() => {
|
|
1258
|
+
this.ensureSelectionColumnPositionUnlocked(layout);
|
|
1163
1259
|
// if we apply the state here, before calling setGridOption for groupDisplayType
|
|
1164
1260
|
// the order is not always correctly applied
|
|
1165
1261
|
// this.gridApi.applyColumnState(state);
|
|
@@ -35,6 +35,10 @@ export function normalizeTableLayoutModel(layout, options) {
|
|
|
35
35
|
// make it an own property
|
|
36
36
|
layout.GrandTotalRow = undefined;
|
|
37
37
|
}
|
|
38
|
+
if (!('RowSelection' in layout)) {
|
|
39
|
+
// make it an own property
|
|
40
|
+
layout.RowSelection = undefined;
|
|
41
|
+
}
|
|
38
42
|
const ColumnOrderSet = new Set(layout.TableColumns);
|
|
39
43
|
if (layout.RowGroupedColumns && layout.RowGroupedColumns.length && layout.TableColumns) {
|
|
40
44
|
// the layout.TableColumns might not include the group columns
|
|
@@ -168,6 +172,10 @@ export function normalizePivotLayoutModel(layout) {
|
|
|
168
172
|
// make it an own property
|
|
169
173
|
layout.PivotColumnTotal = undefined;
|
|
170
174
|
}
|
|
175
|
+
if (!('RowSelection' in layout)) {
|
|
176
|
+
// make it an own property
|
|
177
|
+
layout.RowSelection = undefined;
|
|
178
|
+
}
|
|
171
179
|
// if (layout.PivotGroupedColumns && layout.PivotGroupedColumns.length) {
|
|
172
180
|
layout.RowGroupDisplayType = layout.RowGroupDisplayType || 'single';
|
|
173
181
|
// }
|
|
@@ -8,6 +8,9 @@ export function simplifyTableLayoutModel(layout) {
|
|
|
8
8
|
if (layout.ColumnSizing && !Object.keys(layout.ColumnSizing).length) {
|
|
9
9
|
delete layout.ColumnSizing;
|
|
10
10
|
}
|
|
11
|
+
if (layout.RowSelection == undefined) {
|
|
12
|
+
delete layout.RowSelection;
|
|
13
|
+
}
|
|
11
14
|
if (layout.ColumnSorts && !layout.ColumnSorts.length) {
|
|
12
15
|
delete layout.ColumnSorts;
|
|
13
16
|
}
|
|
@@ -72,6 +75,9 @@ export function simplifyPivotLayoutModel(layout) {
|
|
|
72
75
|
if (layout.ColumnSizing && !Object.keys(layout.ColumnSizing).length) {
|
|
73
76
|
delete layout.ColumnSizing;
|
|
74
77
|
}
|
|
78
|
+
if (layout.RowSelection == undefined) {
|
|
79
|
+
delete layout.RowSelection;
|
|
80
|
+
}
|
|
75
81
|
if (!layout.SuppressAggFuncInHeader) {
|
|
76
82
|
delete layout.SuppressAggFuncInHeader;
|
|
77
83
|
}
|
|
@@ -1,19 +1,28 @@
|
|
|
1
1
|
export type AdaptableMetamodel = Record<string, MetamodelItem>;
|
|
2
2
|
export interface MetamodelItem {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
/** Item kind: 'A' (type alias), 'I' (interface), 'C' (class) */
|
|
4
|
+
k: 'A' | 'I' | 'C';
|
|
5
|
+
/** Description (only present for noCode-tagged items) */
|
|
6
|
+
d?: string;
|
|
7
|
+
/** Properties of this item */
|
|
8
|
+
p?: MetamodelItemProperty[];
|
|
7
9
|
}
|
|
8
10
|
export interface MetamodelItemProperty {
|
|
9
|
-
name
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
/** Property name */
|
|
12
|
+
n: string;
|
|
13
|
+
/** Property kind / type */
|
|
14
|
+
k: MetamodelItemPropertyKind;
|
|
15
|
+
/** Description (only present for noCode-tagged properties) */
|
|
16
|
+
d?: string;
|
|
17
|
+
/** UI label override for display */
|
|
18
|
+
l?: string;
|
|
19
|
+
/** Reference to another MetamodelItem key */
|
|
20
|
+
r?: string;
|
|
21
|
+
/** Whether the property is optional */
|
|
22
|
+
o?: boolean;
|
|
23
|
+
/** Grid Info role: 'item' or 'container' */
|
|
24
|
+
g?: 'item' | 'container';
|
|
25
|
+
/** No-Code role: 'item' or 'container' */
|
|
26
|
+
nC?: 'item' | 'container';
|
|
18
27
|
}
|
|
19
28
|
export type MetamodelItemPropertyKind = 'R' | 'n' | 's' | 'b' | 'd' | 'f' | 'a' | 'i' | 'u';
|