@adaptabletools/adaptable 19.0.0 → 19.0.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 +1 -2
- package/base.css +1 -1
- package/base.css.map +1 -1
- package/index.css +1 -1
- package/index.css.map +1 -1
- package/package.json +1 -1
- package/src/AdaptableInterfaces/IAdaptable.d.ts +1 -1
- package/src/AdaptableOptions/ActionRowOptions.d.ts +2 -2
- package/src/AdaptableOptions/DataChangeHistoryOptions.d.ts +2 -2
- package/src/AdaptableOptions/UserInterfaceOptions.d.ts +6 -2
- package/src/Api/AlertApi.d.ts +8 -0
- package/src/Api/ColumnApi.d.ts +18 -15
- package/src/Api/CustomSortApi.d.ts +8 -0
- package/src/Api/DataChangeHistoryApi.d.ts +5 -0
- package/src/Api/Events/GridSorted.d.ts +3 -3
- package/src/Api/Events/LiveDataChanged.d.ts +1 -1
- package/src/Api/FlashingCellApi.d.ts +25 -12
- package/src/Api/FormatColumnApi.d.ts +8 -0
- package/src/Api/GridApi.d.ts +53 -2
- package/src/Api/Implementation/AlertApiImpl.d.ts +2 -0
- package/src/Api/Implementation/AlertApiImpl.js +6 -0
- package/src/Api/Implementation/ColumnApiImpl.d.ts +3 -2
- package/src/Api/Implementation/ColumnApiImpl.js +19 -30
- package/src/Api/Implementation/CustomSortApiImpl.d.ts +2 -0
- package/src/Api/Implementation/CustomSortApiImpl.js +6 -0
- package/src/Api/Implementation/DataChangeHistoryApiImpl.d.ts +2 -0
- package/src/Api/Implementation/DataChangeHistoryApiImpl.js +5 -0
- package/src/Api/Implementation/FlashingCellApiImpl.d.ts +3 -0
- package/src/Api/Implementation/FlashingCellApiImpl.js +9 -0
- package/src/Api/Implementation/FormatColumnApiImpl.d.ts +2 -0
- package/src/Api/Implementation/FormatColumnApiImpl.js +6 -0
- package/src/Api/Implementation/GridApiImpl.d.ts +11 -2
- package/src/Api/Implementation/GridApiImpl.js +105 -1
- package/src/Api/Implementation/ShortcutApiImpl.d.ts +2 -0
- package/src/Api/Implementation/ShortcutApiImpl.js +6 -0
- package/src/Api/Implementation/StyledColumnApiImpl.d.ts +2 -0
- package/src/Api/Implementation/StyledColumnApiImpl.js +6 -0
- package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +1 -0
- package/src/Api/Implementation/UserInterfaceApiImpl.js +3 -0
- package/src/Api/Internal/ActionRowInternalApi.d.ts +1 -1
- package/src/Api/Internal/ActionRowInternalApi.js +10 -8
- package/src/Api/Internal/ExportInternalApi.d.ts +3 -3
- package/src/Api/Internal/ExportInternalApi.js +17 -13
- package/src/Api/Internal/GridFilterInternalApi.d.ts +1 -1
- package/src/Api/Internal/GridFilterInternalApi.js +5 -2
- package/src/Api/ShortcutApi.d.ts +8 -0
- package/src/Api/StyledColumnApi.d.ts +8 -0
- package/src/Api/UserInterfaceApi.d.ts +6 -2
- package/src/PredefinedConfig/Common/AdaptableFormat.d.ts +1 -1
- package/src/PredefinedConfig/Common/RowScope.d.ts +1 -1
- package/src/Redux/ActionsReducers/SystemRedux.js +3 -8
- package/src/Utilities/license/hashing.js +1 -1
- package/src/View/Dashboard/DashboardPopup.js +4 -3
- package/src/View/GridInfo/GridInfoPopup/GridInfoPopup.js +1 -0
- package/src/View/Layout/Wizard/getGridFilterPreview.js +1 -1
- package/src/View/Layout/Wizard/sections/ColumnsSection.js +1 -1
- package/src/View/Layout/Wizard/sections/GridFilterSection.js +1 -1
- package/src/agGrid/ActionColumnRenderer.d.ts +2 -0
- package/src/agGrid/ActionColumnRenderer.js +29 -3
- package/src/agGrid/AdaptableAgGrid.d.ts +1 -1
- package/src/agGrid/AdaptableAgGrid.js +22 -8
- package/src/agGrid/AgGridAdapter.d.ts +1 -0
- package/src/agGrid/AgGridAdapter.js +12 -0
- package/src/agGrid/AgGridColumnAdapter.d.ts +2 -0
- package/src/agGrid/AgGridColumnAdapter.js +26 -13
- package/src/agGrid/PercentBarRenderer.js +1 -1
- package/src/agGrid/defaultAdaptableOptions.js +1 -0
- package/src/env.js +2 -2
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/types.d.ts +2 -2
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/src/agGrid/CheckboxRenderer.d.ts +0 -16
- package/src/agGrid/CheckboxRenderer.js +0 -89
|
@@ -491,7 +491,22 @@ export class GridApiImpl extends ApiBase {
|
|
|
491
491
|
if (gridCell.column.readOnly) {
|
|
492
492
|
return false;
|
|
493
493
|
}
|
|
494
|
-
|
|
494
|
+
if (gridCell.rowNode && this.isSummaryNode(gridCell.rowNode)) {
|
|
495
|
+
return false;
|
|
496
|
+
}
|
|
497
|
+
const cellEditableFn = this.getEditOptions().isCellEditable;
|
|
498
|
+
if (cellEditableFn) {
|
|
499
|
+
const cellEditableContext = Object.assign({ gridCell }, this.getAdaptableApi().internalApi.buildBaseContext());
|
|
500
|
+
return cellEditableFn(cellEditableContext);
|
|
501
|
+
}
|
|
502
|
+
return true;
|
|
503
|
+
}
|
|
504
|
+
isCellEdited(gridCell) {
|
|
505
|
+
if (!gridCell) {
|
|
506
|
+
return false;
|
|
507
|
+
}
|
|
508
|
+
const cellDataChangedInfo = this.getDataChangeHistoryApi().getDataChangeForGridCell(gridCell);
|
|
509
|
+
return cellDataChangedInfo != null;
|
|
495
510
|
}
|
|
496
511
|
isEveryCellEditable(gridCells) {
|
|
497
512
|
for (let gridCell of gridCells) {
|
|
@@ -504,6 +519,9 @@ export class GridApiImpl extends ApiBase {
|
|
|
504
519
|
getRowCount() {
|
|
505
520
|
return this.adaptable.getRowCount();
|
|
506
521
|
}
|
|
522
|
+
getVisibleRowCount() {
|
|
523
|
+
return this.adaptable.getVisibleRowCount();
|
|
524
|
+
}
|
|
507
525
|
getRowsInViewport() {
|
|
508
526
|
return this.adaptable.getRowsInViewport();
|
|
509
527
|
}
|
|
@@ -555,4 +573,90 @@ export class GridApiImpl extends ApiBase {
|
|
|
555
573
|
getAllAgGridColumns() {
|
|
556
574
|
return this.adaptable.getAllGridColumns();
|
|
557
575
|
}
|
|
576
|
+
updateAgGridColumnState(columnState) {
|
|
577
|
+
const columnExists = this.getColumnApi().doesColumnExist(columnState.colId);
|
|
578
|
+
if (!columnExists) {
|
|
579
|
+
this.logWarn(`Column with id ${columnState.colId} does not exist, could NOT update configuration`);
|
|
580
|
+
return;
|
|
581
|
+
}
|
|
582
|
+
const agGridApi = this.adaptable.agGridAdapter.getAgGridApi();
|
|
583
|
+
agGridApi.applyColumnState({
|
|
584
|
+
state: [columnState],
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
updateAgGridColumnStates(columnStates) {
|
|
588
|
+
const existingColumnStates = columnStates.filter((cc) => this.getColumnApi().doesColumnExist(cc.colId));
|
|
589
|
+
const notExistingColumnIds = columnStates
|
|
590
|
+
.filter((cc) => !this.getColumnApi().doesColumnExist(cc.colId))
|
|
591
|
+
.map((cc) => cc.colId);
|
|
592
|
+
notExistingColumnIds.forEach((colId) => {
|
|
593
|
+
this.logWarn(`Column with id ${colId} does not exist, could NOT update configuration`);
|
|
594
|
+
});
|
|
595
|
+
const agGridApi = this.adaptable.agGridAdapter.getAgGridApi();
|
|
596
|
+
agGridApi.applyColumnState({
|
|
597
|
+
state: existingColumnStates,
|
|
598
|
+
});
|
|
599
|
+
}
|
|
600
|
+
setAgGridColumnDefinitions(columnDefinitions) {
|
|
601
|
+
const agGridApi = this.adaptable.agGridAdapter.getAgGridApi();
|
|
602
|
+
agGridApi.setGridOption('columnDefs', columnDefinitions);
|
|
603
|
+
this.adaptable.updateColumnModelAndRefreshGrid({ skipColDefsRefresh: true });
|
|
604
|
+
}
|
|
605
|
+
updateAgGridColumnDefinition(columnDefinitionToBeUpdated) {
|
|
606
|
+
const currentColDefs = [...this.adaptable.agGridAdapter.getAgGridApi().getColumnDefs()];
|
|
607
|
+
const columnId = columnDefinitionToBeUpdated.colId;
|
|
608
|
+
const doesColumnExist = this.getColumnApi().doesColumnExist(columnId);
|
|
609
|
+
if (!doesColumnExist) {
|
|
610
|
+
this.logWarn(`Column with id ${columnId} does not exist, will add it instead!`);
|
|
611
|
+
const newColDefs = [...currentColDefs, columnDefinitionToBeUpdated];
|
|
612
|
+
this.setAgGridColumnDefinitions(newColDefs);
|
|
613
|
+
return;
|
|
614
|
+
}
|
|
615
|
+
const updatedColDefs = this.adaptable.agGridAdapter.traverseColDefs(currentColDefs, (colDef) => {
|
|
616
|
+
return colDef.colId === columnId ? Object.assign(Object.assign({}, colDef), columnDefinitionToBeUpdated) : colDef;
|
|
617
|
+
});
|
|
618
|
+
this.setAgGridColumnDefinitions(updatedColDefs);
|
|
619
|
+
}
|
|
620
|
+
updateAgGridColumnDefinitions(columnDefinitionsToBeUpdated) {
|
|
621
|
+
const currentColDefs = [...this.adaptable.agGridAdapter.getAgGridApi().getColumnDefs()];
|
|
622
|
+
const updatedColDefs = this.adaptable.agGridAdapter.traverseColDefs(currentColDefs, (colDef) => {
|
|
623
|
+
const newColDef = newColumnDefinitions.find((c) => c.colId === colDef.colId);
|
|
624
|
+
return newColDef ? Object.assign(Object.assign({}, colDef), newColDef) : colDef;
|
|
625
|
+
});
|
|
626
|
+
// find out new columns which are not in the current column definitions
|
|
627
|
+
const currentColIds = [];
|
|
628
|
+
this.adaptable.agGridAdapter.traverseColDefs(currentColDefs, (colDef) => {
|
|
629
|
+
currentColIds.push(colDef.colId);
|
|
630
|
+
return colDef;
|
|
631
|
+
});
|
|
632
|
+
const newColumnDefinitions = columnDefinitionsToBeUpdated.filter((c) => !currentColIds.includes(c.colId));
|
|
633
|
+
if (newColumnDefinitions.length) {
|
|
634
|
+
this.logWarn(`Columns with ids ${newColumnDefinitions.map((c) => c.colId).join(', ')} do not exist, will add them instead!`);
|
|
635
|
+
}
|
|
636
|
+
this.setAgGridColumnDefinitions([...updatedColDefs, ...newColumnDefinitions]);
|
|
637
|
+
}
|
|
638
|
+
removeAgGridColumnDefinition(columnId) {
|
|
639
|
+
const doesColumnExist = this.getColumnApi().doesColumnExist(columnId);
|
|
640
|
+
if (!doesColumnExist) {
|
|
641
|
+
this.logWarn(`Column with id ${columnId} does not exist!`);
|
|
642
|
+
return;
|
|
643
|
+
}
|
|
644
|
+
const currentColDefs = this.adaptable.agGridAdapter.getAgGridApi().getColumnDefs();
|
|
645
|
+
const updatedColDefs = this.adaptable.agGridAdapter
|
|
646
|
+
.traverseColDefs(currentColDefs, (colDef) => {
|
|
647
|
+
return colDef.colId === columnId ? null : colDef;
|
|
648
|
+
})
|
|
649
|
+
.filter(Boolean);
|
|
650
|
+
this.setAgGridColumnDefinitions(updatedColDefs);
|
|
651
|
+
}
|
|
652
|
+
addAgGridColumnDefinition(newColumnDefinition) {
|
|
653
|
+
const currentColDefs = this.adaptable.agGridAdapter.getAgGridApi().getColumnDefs();
|
|
654
|
+
// just in case check of there is not already an existing column with the same id and eliminate it
|
|
655
|
+
const sanitizedColDefs = this.adaptable.agGridAdapter
|
|
656
|
+
.traverseColDefs(currentColDefs, (colDef) => {
|
|
657
|
+
return colDef.colId === newColumnDefinition.colId ? null : colDef;
|
|
658
|
+
})
|
|
659
|
+
.filter(Boolean);
|
|
660
|
+
this.setAgGridColumnDefinitions([...sanitizedColDefs, newColumnDefinition]);
|
|
661
|
+
}
|
|
558
662
|
}
|
|
@@ -14,5 +14,7 @@ export declare class ShortcutApiImpl extends ApiBase implements ShortcutApi {
|
|
|
14
14
|
deleteAllShortcuts(): void;
|
|
15
15
|
suspendShortcut(shortcut: Shortcut): Shortcut;
|
|
16
16
|
unSuspendShortcut(shortcut: Shortcut): Shortcut;
|
|
17
|
+
suspendAllShortcut(): void;
|
|
18
|
+
unSuspendAllShortcut(): void;
|
|
17
19
|
openShortcutSettingsPanel(): void;
|
|
18
20
|
}
|
|
@@ -39,6 +39,12 @@ export class ShortcutApiImpl extends ApiBase {
|
|
|
39
39
|
this.dispatchAction(ShortcutRedux.ShortcutUnSuspend(shortcut));
|
|
40
40
|
return this.getShortcutById(shortcut.Uuid);
|
|
41
41
|
}
|
|
42
|
+
suspendAllShortcut() {
|
|
43
|
+
this.dispatchAction(ShortcutRedux.ShortcutSuspendAll());
|
|
44
|
+
}
|
|
45
|
+
unSuspendAllShortcut() {
|
|
46
|
+
this.dispatchAction(ShortcutRedux.ShortcutUnSuspendAll());
|
|
47
|
+
}
|
|
42
48
|
openShortcutSettingsPanel() {
|
|
43
49
|
this.showModulePopup(ModuleConstants.ShortcutModuleId);
|
|
44
50
|
}
|
|
@@ -24,5 +24,7 @@ export declare class StyledColumnApiImpl extends ApiBase implements StyledColumn
|
|
|
24
24
|
canDisplaySparklines(): boolean;
|
|
25
25
|
suspendStyledColumn(styledColumn: StyledColumn): void;
|
|
26
26
|
unSuspendStyledColumn(styledColumn: StyledColumn): void;
|
|
27
|
+
suspendAllStyledColumn(): void;
|
|
28
|
+
unSuspendAllStyledColumn(): void;
|
|
27
29
|
openStyledColumnSettingsPanel(): void;
|
|
28
30
|
}
|
|
@@ -63,6 +63,12 @@ export class StyledColumnApiImpl extends ApiBase {
|
|
|
63
63
|
unSuspendStyledColumn(styledColumn) {
|
|
64
64
|
this.dispatchAction(StyledColumnRedux.StyledColumnUnSuspend(styledColumn));
|
|
65
65
|
}
|
|
66
|
+
suspendAllStyledColumn() {
|
|
67
|
+
this.dispatchAction(StyledColumnRedux.StyledColumnSuspendAll());
|
|
68
|
+
}
|
|
69
|
+
unSuspendAllStyledColumn() {
|
|
70
|
+
this.dispatchAction(StyledColumnRedux.StyledColumnUnSuspendAll());
|
|
71
|
+
}
|
|
66
72
|
openStyledColumnSettingsPanel() {
|
|
67
73
|
this.showModulePopup(ModuleConstants.StyledColumnModuleId);
|
|
68
74
|
}
|
|
@@ -26,6 +26,7 @@ export declare class UserInterfaceApiImpl extends ApiBase implements UserInterfa
|
|
|
26
26
|
getEditLookUpItemForColumn(column: AdaptableColumn): EditLookUpPermittedValues | undefined;
|
|
27
27
|
getEditLookUpValuesForEditLookUpItem(editLookUpItem: EditLookUpPermittedValues, gridCell: GridCell): any[] | undefined;
|
|
28
28
|
getEditableCellStyle(): AdaptableStyle | undefined;
|
|
29
|
+
getEditedCellStyle(): AdaptableStyle | undefined;
|
|
29
30
|
getReadOnlyCellStyle(): AdaptableStyle | undefined;
|
|
30
31
|
getAdaptableObjectTags(): AdaptableObjectTag[] | undefined;
|
|
31
32
|
getCustomIconDefinition(iconName: string): import("../../types").AdaptableIcon | import("../../types").CustomIcon;
|
|
@@ -142,6 +142,9 @@ export class UserInterfaceApiImpl extends ApiBase {
|
|
|
142
142
|
getEditableCellStyle() {
|
|
143
143
|
return this.getUserInterfaceOptions().editableCellStyle;
|
|
144
144
|
}
|
|
145
|
+
getEditedCellStyle() {
|
|
146
|
+
return this.getUserInterfaceOptions().editedCellStyle;
|
|
147
|
+
}
|
|
145
148
|
getReadOnlyCellStyle() {
|
|
146
149
|
return this.getUserInterfaceOptions().readOnlyCellStyle;
|
|
147
150
|
}
|
|
@@ -18,7 +18,7 @@ export declare class ActionRowInternalApi extends ApiBase {
|
|
|
18
18
|
private buidActionRowButtons;
|
|
19
19
|
private prepareCreateData;
|
|
20
20
|
private prepareEditData;
|
|
21
|
-
private
|
|
21
|
+
private isCellEditable;
|
|
22
22
|
private buildFormField;
|
|
23
23
|
private getFormFieldLabel;
|
|
24
24
|
private buildFormFieldLabelContext;
|
|
@@ -49,7 +49,7 @@ export class ActionRowInternalApi extends ApiBase {
|
|
|
49
49
|
.columnApi.getColumns()
|
|
50
50
|
.filter((column) => {
|
|
51
51
|
// if there is NO rowNode, do NOT display the non-editable fields as they will be empty
|
|
52
|
-
return !!rowNode || this.
|
|
52
|
+
return !!rowNode || this.isCellEditable(column, rowNode);
|
|
53
53
|
})
|
|
54
54
|
.filter((column) => !this.getAdaptableApi().columnApi.internalApi.isActionRowButtonColumn(column.columnId) &&
|
|
55
55
|
this.showColumnInActionRowForm(column, actionRowType));
|
|
@@ -116,21 +116,23 @@ export class ActionRowInternalApi extends ApiBase {
|
|
|
116
116
|
dataToSave[this.getOptions().primaryKey] = pkValue;
|
|
117
117
|
return dataToSave;
|
|
118
118
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
119
|
+
isCellEditable(column, rowNode) {
|
|
120
|
+
if (!rowNode) {
|
|
121
|
+
return !column.readOnly;
|
|
122
|
+
}
|
|
123
|
+
const gridCell = this.getAdaptableApi().gridApi.getGridCellFromRowNode(rowNode, column.columnId);
|
|
124
|
+
return this.getAdaptableApi().gridApi.isCellEditable(gridCell);
|
|
123
125
|
}
|
|
124
126
|
buildFormField(type, column, rowNode) {
|
|
125
|
-
const
|
|
127
|
+
const isCellEditable = this.isCellEditable(column, rowNode);
|
|
126
128
|
const fieldValueOptions = this.getFieldValueOptions(column, rowNode);
|
|
127
|
-
const fieldType =
|
|
129
|
+
const fieldType = isCellEditable
|
|
128
130
|
? !!(fieldValueOptions === null || fieldValueOptions === void 0 ? void 0 : fieldValueOptions.length)
|
|
129
131
|
? 'select'
|
|
130
132
|
: this.getFieldTypeFromColumnType(column)
|
|
131
133
|
: 'textOutput';
|
|
132
134
|
const defaultValue = rowNode
|
|
133
|
-
?
|
|
135
|
+
? isCellEditable
|
|
134
136
|
? this.getAdaptableApi().gridApi.getRawValueFromRowNode(rowNode, column.columnId)
|
|
135
137
|
: this.getAdaptableApi().gridApi.getDisplayValueFromRowNode(rowNode, column.columnId)
|
|
136
138
|
: null;
|
|
@@ -30,10 +30,10 @@ export declare class ExportInternalApi extends ApiBase {
|
|
|
30
30
|
getReportData(report: Report, includePrimaryKey?: boolean): ReportData;
|
|
31
31
|
getReportDataAsArray(report: Report, includePrimaryKey?: boolean): any[][];
|
|
32
32
|
convertReportDataToArray(reportData: ReportData): any[][];
|
|
33
|
-
getRowObjectForColumnIds(rowNode: IRowNode, columnIds: string[]): Record<string, any>;
|
|
33
|
+
getRowObjectForColumnIds(rowNode: IRowNode, columnIds: string[], reportName: string): Record<string, any>;
|
|
34
34
|
publishLiveLiveDataChangedEvent(reportDestination: 'ipushpull' | 'OpenFin', liveDataTrigger: 'Connected' | 'Disconnected' | 'SnapshotSent' | 'LiveDataStarted' | 'LiveDataStopped' | 'LiveDataUpdated', liveReport?: any): void;
|
|
35
|
-
getCellExportValueFromRowNode(rowNode: IRowNode, columnId: string): any;
|
|
36
|
-
getCellExportValueFromRawValue(rowNode: IRowNode, cellRawValue: any, columnId: string): any;
|
|
35
|
+
getCellExportValueFromRowNode(rowNode: IRowNode, columnId: string, reportName: string): any;
|
|
36
|
+
getCellExportValueFromRawValue(rowNode: IRowNode, cellRawValue: any, columnId: string, reportName: string): any;
|
|
37
37
|
getReportFileName(reportName: string, destination: SystemExportDestination | CustomDestination): string;
|
|
38
38
|
private getCustomExportDateFormat;
|
|
39
39
|
private getCellExportValueFromRawValueByType;
|
|
@@ -361,12 +361,12 @@ export class ExportInternalApi extends ApiBase {
|
|
|
361
361
|
switch (report.ReportRowScope) {
|
|
362
362
|
case 'AllRows':
|
|
363
363
|
this.getAdaptableApi().internalApi.forAllRowNodesDo((rowNode) => {
|
|
364
|
-
resultRowData.push(this.getRowObjectForColumnIds(rowNode, columnIds));
|
|
364
|
+
resultRowData.push(this.getRowObjectForColumnIds(rowNode, columnIds, report.Name));
|
|
365
365
|
});
|
|
366
366
|
break;
|
|
367
367
|
case 'VisibleRows':
|
|
368
368
|
this.getAdaptableApi().internalApi.forAllVisibleRowNodesDo((rowNode) => {
|
|
369
|
-
resultRowData.push(this.getRowObjectForColumnIds(rowNode, columnIds));
|
|
369
|
+
resultRowData.push(this.getRowObjectForColumnIds(rowNode, columnIds, report.Name));
|
|
370
370
|
});
|
|
371
371
|
break;
|
|
372
372
|
case 'ExpressionRows':
|
|
@@ -375,7 +375,7 @@ export class ExportInternalApi extends ApiBase {
|
|
|
375
375
|
if (this.getAdaptableApi()
|
|
376
376
|
.internalApi.getQueryLanguageService()
|
|
377
377
|
.evaluateBooleanExpression((_a = report.Query) === null || _a === void 0 ? void 0 : _a.BooleanExpression, ExportModuleId, rowNode)) {
|
|
378
|
-
resultRowData.push(this.getRowObjectForColumnIds(rowNode, columnIds));
|
|
378
|
+
resultRowData.push(this.getRowObjectForColumnIds(rowNode, columnIds, report.Name));
|
|
379
379
|
}
|
|
380
380
|
});
|
|
381
381
|
break;
|
|
@@ -390,7 +390,7 @@ export class ExportInternalApi extends ApiBase {
|
|
|
390
390
|
if (selectedRowCells) {
|
|
391
391
|
const selectedRowColumnIds = selectedRowCells.map((rowCell) => rowCell.column.columnId);
|
|
392
392
|
const selectedColumnIds = columnIds.filter((columnId) => selectedRowColumnIds.includes(columnId));
|
|
393
|
-
const row = this.getRowObjectForColumnIds(rowNode, selectedColumnIds);
|
|
393
|
+
const row = this.getRowObjectForColumnIds(rowNode, selectedColumnIds, report.Name);
|
|
394
394
|
if (includePrimaryKey) {
|
|
395
395
|
row[this.getAdaptableApi().optionsApi.getPrimaryKey()] = rowPrimaryKeyValue;
|
|
396
396
|
}
|
|
@@ -405,7 +405,7 @@ export class ExportInternalApi extends ApiBase {
|
|
|
405
405
|
this.getAdaptableApi().internalApi.forAllRowNodesDo((rowNode) => {
|
|
406
406
|
const rowPrimaryKeyValue = this.getAdaptableApi().gridApi.getPrimaryKeyValueForRowNode(rowNode);
|
|
407
407
|
if (selectedGridRowPrimaryKeys.includes(rowPrimaryKeyValue)) {
|
|
408
|
-
resultRowData.push(this.getRowObjectForColumnIds(rowNode, columnIds));
|
|
408
|
+
resultRowData.push(this.getRowObjectForColumnIds(rowNode, columnIds, report.Name));
|
|
409
409
|
}
|
|
410
410
|
});
|
|
411
411
|
}
|
|
@@ -431,9 +431,9 @@ export class ExportInternalApi extends ApiBase {
|
|
|
431
431
|
...reportData.rows.map((row) => reportData.columns.map((column) => row[column.columnId])),
|
|
432
432
|
];
|
|
433
433
|
}
|
|
434
|
-
getRowObjectForColumnIds(rowNode, columnIds) {
|
|
434
|
+
getRowObjectForColumnIds(rowNode, columnIds, reportName) {
|
|
435
435
|
return columnIds.reduce((result, columnId) => {
|
|
436
|
-
result[columnId] = this.getCellExportValueFromRowNode(rowNode, columnId);
|
|
436
|
+
result[columnId] = this.getCellExportValueFromRowNode(rowNode, columnId, reportName);
|
|
437
437
|
return result;
|
|
438
438
|
}, {});
|
|
439
439
|
}
|
|
@@ -441,24 +441,28 @@ export class ExportInternalApi extends ApiBase {
|
|
|
441
441
|
const liveDataChangedInfo = Object.assign(Object.assign({}, this.getAdaptableApi().internalApi.buildBaseContext()), { reportDestination: reportDestination, liveDataTrigger: liveDataTrigger, liveReport: liveReport });
|
|
442
442
|
this.getAdaptableApi().eventApi.emit('LiveDataChanged', liveDataChangedInfo);
|
|
443
443
|
}
|
|
444
|
-
getCellExportValueFromRowNode(rowNode, columnId) {
|
|
445
|
-
return this.getCellExportValueFromRawValue(rowNode, this.getAdaptableApi().gridApi.getRawValueFromRowNode(rowNode, columnId), columnId);
|
|
444
|
+
getCellExportValueFromRowNode(rowNode, columnId, reportName) {
|
|
445
|
+
return this.getCellExportValueFromRawValue(rowNode, this.getAdaptableApi().gridApi.getRawValueFromRowNode(rowNode, columnId), columnId, reportName);
|
|
446
446
|
}
|
|
447
|
-
getCellExportValueFromRawValue(rowNode, cellRawValue, columnId) {
|
|
447
|
+
getCellExportValueFromRawValue(rowNode, cellRawValue, columnId, reportName) {
|
|
448
448
|
if (StringExtensions.IsNullOrEmpty(cellRawValue)) {
|
|
449
449
|
return cellRawValue;
|
|
450
450
|
}
|
|
451
451
|
const column = this.getAdaptableApi().columnApi.getColumnWithColumnId(columnId);
|
|
452
452
|
const columnDataType = column.dataType;
|
|
453
|
-
// if
|
|
453
|
+
// 1. if it is a Visual Data report then we always ONLY send the formatted value and ignore all other properties
|
|
454
|
+
if (reportName == VISUAL_DATA_REPORT) {
|
|
455
|
+
return this.getCellExportValueFromRawValueByType(rowNode, cellRawValue, columnId, 'formattedValue');
|
|
456
|
+
}
|
|
457
|
+
// 2. if this is a date column and there is a custom export date format provided, that will next take precedence
|
|
454
458
|
if (columnDataType === 'Date' && !!this.getCustomExportDateFormat()) {
|
|
455
459
|
const exportDateFormat = this.getCustomExportDateFormat();
|
|
456
460
|
return FormatHelper.DateFormatter(cellRawValue, {
|
|
457
461
|
Pattern: exportDateFormat,
|
|
458
462
|
});
|
|
459
463
|
}
|
|
460
|
-
//
|
|
461
|
-
|
|
464
|
+
// 3. in all other cases check the general export format types
|
|
465
|
+
const cellExportFormat = this.getAdaptableApi().exportApi.internalApi.getCellExportFormatType(column, columnDataType);
|
|
462
466
|
return this.getCellExportValueFromRawValueByType(rowNode, cellRawValue, columnId, cellExportFormat);
|
|
463
467
|
}
|
|
464
468
|
getReportFileName(reportName, destination) {
|
|
@@ -3,7 +3,7 @@ import { GridFilter } from '../../types';
|
|
|
3
3
|
export declare class GridFilterInternalApi extends ApiBase {
|
|
4
4
|
fireGridFilterAppliedEvent(): void;
|
|
5
5
|
/**
|
|
6
|
-
* Compares to Grid
|
|
6
|
+
* Compares to Grid Filter to see if they are identical
|
|
7
7
|
*/
|
|
8
8
|
isGridFilterDifferent(oldFilter: GridFilter, newFilter: GridFilter): boolean;
|
|
9
9
|
}
|
|
@@ -11,9 +11,12 @@ export class GridFilterInternalApi extends ApiBase {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
* Compares to Grid
|
|
14
|
+
* Compares to Grid Filter to see if they are identical
|
|
15
15
|
*/
|
|
16
16
|
isGridFilterDifferent(oldFilter, newFilter) {
|
|
17
|
-
|
|
17
|
+
if (oldFilter == undefined && newFilter == undefined) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
return (oldFilter === null || oldFilter === void 0 ? void 0 : oldFilter.Expression) !== (newFilter === null || newFilter === void 0 ? void 0 : newFilter.Expression);
|
|
18
21
|
}
|
|
19
22
|
}
|
package/src/Api/ShortcutApi.d.ts
CHANGED
|
@@ -53,6 +53,14 @@ export interface ShortcutApi {
|
|
|
53
53
|
* @returns shortcut
|
|
54
54
|
*/
|
|
55
55
|
unSuspendShortcut(shortcut: Shortcut): Shortcut;
|
|
56
|
+
/**
|
|
57
|
+
* Suspends all Shortcuts
|
|
58
|
+
*/
|
|
59
|
+
suspendAllShortcut(): void;
|
|
60
|
+
/**
|
|
61
|
+
* Activates all suspended Shortcut
|
|
62
|
+
*/
|
|
63
|
+
unSuspendAllShortcut(): void;
|
|
56
64
|
/**
|
|
57
65
|
* Opens Settings Panel with Shortcut section selected and visible
|
|
58
66
|
*/
|
|
@@ -57,6 +57,14 @@ export interface StyledColumnApi {
|
|
|
57
57
|
* @param styledColumn
|
|
58
58
|
*/
|
|
59
59
|
unSuspendStyledColumn(styledColumn: StyledColumn): void;
|
|
60
|
+
/**
|
|
61
|
+
* Suspends all Styled Columns
|
|
62
|
+
*/
|
|
63
|
+
suspendAllStyledColumn(): void;
|
|
64
|
+
/**
|
|
65
|
+
* Activates all suspended Styled Column
|
|
66
|
+
*/
|
|
67
|
+
unSuspendAllStyledColumn(): void;
|
|
60
68
|
/**
|
|
61
69
|
* Checks whether Column with given `columnId` has a PercentBar Style applied
|
|
62
70
|
* @param columnId column ID
|
|
@@ -55,11 +55,15 @@ export interface UserInterfaceApi {
|
|
|
55
55
|
*/
|
|
56
56
|
getEditLookUpValuesForEditLookUpItem(editLookUpItem: EditLookUpPermittedValues, gridCell: GridCell): any[] | undefined;
|
|
57
57
|
/**
|
|
58
|
-
* Returns Style set for Editable
|
|
58
|
+
* Returns Style set for Editable Cells
|
|
59
59
|
*/
|
|
60
60
|
getEditableCellStyle(): AdaptableStyle | undefined;
|
|
61
61
|
/**
|
|
62
|
-
* Returns Style
|
|
62
|
+
* Returns Style for Cells that have been edited
|
|
63
|
+
*/
|
|
64
|
+
getEditedCellStyle(): AdaptableStyle | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Returns Style set for ReadOnly Cells
|
|
63
67
|
*/
|
|
64
68
|
getReadOnlyCellStyle(): AdaptableStyle | undefined;
|
|
65
69
|
/**
|
|
@@ -43,7 +43,7 @@ export interface NumberFormatterOptions extends BaseFormatterOptions {
|
|
|
43
43
|
*/
|
|
44
44
|
Suffix?: string;
|
|
45
45
|
/**
|
|
46
|
-
* Replaces cell value with supplied value (that can contain
|
|
46
|
+
* Replaces cell value with supplied value (that can contain Template Literals)
|
|
47
47
|
*/
|
|
48
48
|
Content?: string | number;
|
|
49
49
|
/**
|
|
@@ -463,10 +463,8 @@ export const SystemReducer = (state = initialState, action) => {
|
|
|
463
463
|
});
|
|
464
464
|
const AdaptableFlashingCellsMap = Object.assign({}, state.AdaptableFlashingCellsMap);
|
|
465
465
|
AdaptableFlashingCellsMap[FlashingCell.Uuid] = FlashingCell;
|
|
466
|
-
return Object.assign({}, state, {
|
|
467
|
-
|
|
468
|
-
AdaptableFlashingCellsMap: AdaptableFlashingCellsMap,
|
|
469
|
-
});
|
|
466
|
+
return Object.assign(Object.assign({}, state), { AdaptableFlashingCells,
|
|
467
|
+
AdaptableFlashingCellsMap });
|
|
470
468
|
}
|
|
471
469
|
case SYSTEM_FLASHING_CELL_DELETE: {
|
|
472
470
|
const { flashingCell: FlashingCell } = action;
|
|
@@ -490,10 +488,7 @@ export const SystemReducer = (state = initialState, action) => {
|
|
|
490
488
|
return Object.assign(Object.assign({}, state), { AdaptableFlashingCells: AdaptableFlashingCells, AdaptableFlashingCellsMap: AdaptableFlashingCellsMap });
|
|
491
489
|
}
|
|
492
490
|
case SYSTEM_FLASHING_CELL_DELETE_ALL: {
|
|
493
|
-
return Object.assign({}, state, {
|
|
494
|
-
AdaptableFlashingCells: {},
|
|
495
|
-
AdaptableFlashingCellsMap: {},
|
|
496
|
-
});
|
|
491
|
+
return Object.assign(Object.assign({}, state), { AdaptableFlashingCells: {}, AdaptableFlashingCellsMap: {} });
|
|
497
492
|
}
|
|
498
493
|
case SYSTEM_HIGHLIGHT_CELL_ADD: {
|
|
499
494
|
const actionTypedAdd = action;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const r=3988292384;function n(
|
|
1
|
+
const r=3988292384;function n(r=3988292384){var n,t,o,u=new Array;for(n=0;n<256;n++){for(o=n,t=8;t>0;t--)1&~o?o>>>=1:o=o>>>1^r;u[n]=o}return u}function t(){return 4294967295}function o(r,n,t){return n=n>>>8^r[t^255&n]}function u(r){return r=(r=~r)<0?4294967295+r+1:r}export function compute_string(r,e=3988292384){var c,f=n(e),i=0;for(i=t(),c=0;c<r.length;c++)i=o(f,i,r.charCodeAt(c));return`${i=u(i)}`}
|
|
@@ -72,9 +72,10 @@ class DashboardPopupComponent extends React.Component {
|
|
|
72
72
|
React.createElement(CheckBox, { "data-name": "hidden", className: `${baseClassName}__settings-option`, checked: this.props.IsHidden, onChange: (checked) => this.props.onSetDashboardHidden(checked) }, "Hidden"))),
|
|
73
73
|
React.createElement(Panel, { header: 'Dashboard Contents', style: { borderBottom: '1px solid var(--ab-color-primary)' }, variant: "default", borderRadius: "none", marginTop: 4 },
|
|
74
74
|
React.createElement(Flex, { className: `${baseClassName}__contents-selector`, flexDirection: "row", padding: 2 },
|
|
75
|
-
React.createElement(Radio, { marginLeft: 3, value: DashboardConfigView.Toolbars, checked: this.state.DashboardConfigView == DashboardConfigView.Toolbars, onChange: (_, e) => this.onDashboardConfigViewChanged(e) }, "
|
|
76
|
-
React.createElement(Radio, { marginLeft: 3, value: DashboardConfigView.
|
|
77
|
-
|
|
75
|
+
React.createElement(Radio, { marginLeft: 3, value: DashboardConfigView.Toolbars, checked: this.state.DashboardConfigView == DashboardConfigView.Toolbars, onChange: (_, e) => this.onDashboardConfigViewChanged(e) }, "Tabbed Toolbars"),
|
|
76
|
+
React.createElement(Radio, { marginLeft: 3, value: DashboardConfigView.PinnedToolbars, checked: this.state.DashboardConfigView == DashboardConfigView.PinnedToolbars, onChange: (_, e) => this.onDashboardConfigViewChanged(e) }, "Pinned Toolbars"),
|
|
77
|
+
' ',
|
|
78
|
+
React.createElement(Radio, { marginLeft: 3, value: DashboardConfigView.Buttons, checked: this.state.DashboardConfigView == DashboardConfigView.Buttons, onChange: (_, e) => this.onDashboardConfigViewChanged(e) }, "Buttons")),
|
|
78
79
|
React.createElement(Box, { className: `${baseClassName}__Module-Selector`, "data-name": this.state.DashboardConfigView === DashboardConfigView.Toolbars
|
|
79
80
|
? 'toolbars'
|
|
80
81
|
: 'buttons', style: { minHeight: 0, flex: '1 1 0' }, padding: 2 },
|
|
@@ -39,6 +39,7 @@ export const GridInfoPopup = (props) => {
|
|
|
39
39
|
returnRows.push(createReadOnlyColItem(colItems, 'Column Filters', columnFilterDescription));
|
|
40
40
|
returnRows.push(createReadOnlyColItem(colItems, 'Grid Filter', gridFilterExpression));
|
|
41
41
|
returnRows.push(createReadOnlyColItem(colItems, 'All Rows', props.api.gridApi.getRowCount()));
|
|
42
|
+
returnRows.push(createReadOnlyColItem(colItems, 'Visible Rows', props.api.gridApi.getVisibleRowCount()));
|
|
42
43
|
returnRows.push(createReadOnlyColItem(colItems, 'Selected Rows', selectedRowInfo === null || selectedRowInfo === void 0 ? void 0 : selectedRowInfo.gridRows.length));
|
|
43
44
|
returnRows.push(createReadOnlyColItem(colItems, 'Visible Selected Rows', selectedRowInfo === null || selectedRowInfo === void 0 ? void 0 : selectedRowInfo.gridRows.filter((gr) => { var _a; return ((_a = gr.rowNode) === null || _a === void 0 ? void 0 : _a.displayed) == true; }).length));
|
|
44
45
|
returnRows.push(createReadOnlyColItem(colItems, 'All Columns', props.api.gridApi.getColumnCount()));
|
|
@@ -4,7 +4,7 @@ import { Tag } from '../../../components/Tag';
|
|
|
4
4
|
export const getGridFilterViewItems = (layout) => {
|
|
5
5
|
var _a;
|
|
6
6
|
return {
|
|
7
|
-
name: 'Grid
|
|
7
|
+
name: 'Grid Filter',
|
|
8
8
|
view: (React.createElement(Tag, null,
|
|
9
9
|
React.createElement(ExpressionPreview, { query: { BooleanExpression: (_a = layout.GridFilter) === null || _a === void 0 ? void 0 : _a.Expression } }))),
|
|
10
10
|
};
|
|
@@ -185,7 +185,7 @@ const ColumnRow = (props) => {
|
|
|
185
185
|
export const ColumnsSection = (props) => {
|
|
186
186
|
const adaptable = useAdaptable();
|
|
187
187
|
const { data: layout } = useOnePageAdaptableWizardContext();
|
|
188
|
-
const allColumns = adaptable.api.columnApi.
|
|
188
|
+
const allColumns = adaptable.api.columnApi.getStandardColumns();
|
|
189
189
|
const sortedColumns = React.useMemo(() => {
|
|
190
190
|
return ArrayExtensions.sortArrayWithOrder(allColumns.map((col) => col.columnId), layout.Columns, { sortUnorderedItems: false }).map((colId) => adaptable.api.columnApi.getColumnWithColumnId(colId));
|
|
191
191
|
}, [layout, allColumns]);
|
|
@@ -33,7 +33,7 @@ export const GridFilterSection = (props) => {
|
|
|
33
33
|
props.onChange(Object.assign(Object.assign({}, layout), { GridFilter: Object.assign(Object.assign({}, layout.GridFilter), { Expression: expression }) }));
|
|
34
34
|
}, initialData: initialData, columns: api.columnApi.getQueryableColumns(), fields: api.expressionApi.internalApi.getAvailableFields(), namedQueries: api.namedQueryApi.getNamedQueries(), api: api })));
|
|
35
35
|
return (React.createElement(Tabs, { style: { height: '100%' } },
|
|
36
|
-
React.createElement(Tabs.Tab, null, "Grid
|
|
36
|
+
React.createElement(Tabs.Tab, null, "Grid Filter"),
|
|
37
37
|
React.createElement(Tabs.Content, null,
|
|
38
38
|
React.createElement(Panel, null, expressionEditorContent))));
|
|
39
39
|
};
|
|
@@ -7,6 +7,8 @@ export declare class ActionColumnRenderer implements ICellRendererComp {
|
|
|
7
7
|
private eGui;
|
|
8
8
|
private eventListener;
|
|
9
9
|
private unmountReactRoot?;
|
|
10
|
+
private layoutSwitchUnsubscribe?;
|
|
11
|
+
private actionButtons;
|
|
10
12
|
init(params: ActionColumnCellRendererParams): void;
|
|
11
13
|
render(): void;
|
|
12
14
|
getGui(): HTMLElement;
|
|
@@ -2,6 +2,7 @@ import SimpleButton from '../components/SimpleButton';
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { useRerender } from '../components/utils/useRerender';
|
|
4
4
|
import { renderWithAdaptableContext } from '../View/renderWithAdaptableContext';
|
|
5
|
+
import { LAYOUT_SELECT } from '../Redux/ActionsReducers/LayoutRedux';
|
|
5
6
|
const ActionButtons = (props) => {
|
|
6
7
|
const { buttons, adaptableApi, context, rerender } = props;
|
|
7
8
|
return (React.createElement(React.Fragment, null, buttons.map((button, index) => {
|
|
@@ -65,6 +66,20 @@ export const ReactActionColumnRenderer = (props) => {
|
|
|
65
66
|
if (!shouldRender) {
|
|
66
67
|
return null;
|
|
67
68
|
}
|
|
69
|
+
// subscribe to the LayoutChange event and rerender on change
|
|
70
|
+
const unsubscribe = adaptable.api.eventApi.on('AdaptableStateChanged', (eventInfo) => {
|
|
71
|
+
if (eventInfo.actionName === LAYOUT_SELECT) {
|
|
72
|
+
if (eventInfo.oldState.Layout.CurrentLayout !== eventInfo.newState.Layout.CurrentLayout) {
|
|
73
|
+
rerender();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
// unsubscribe on unmount
|
|
78
|
+
React.useEffect(() => {
|
|
79
|
+
return () => {
|
|
80
|
+
unsubscribe();
|
|
81
|
+
};
|
|
82
|
+
}, []);
|
|
68
83
|
const pkValue = adaptable.getPrimaryKeyValueFromRowNode(props.node, props.api);
|
|
69
84
|
const buttonContext = Object.assign(Object.assign({ actionColumn, primaryKeyValue: pkValue, rowNode: props.node }, adaptable.api.internalApi.buildBaseContext()), { data: props.data });
|
|
70
85
|
return (React.createElement("div", { className: "ab-ActionColumn" },
|
|
@@ -83,6 +98,7 @@ export class ActionColumnRenderer {
|
|
|
83
98
|
if (!actionColumn || !actionButtons.length) {
|
|
84
99
|
return;
|
|
85
100
|
}
|
|
101
|
+
this.actionButtons = actionButtons;
|
|
86
102
|
// create the cell
|
|
87
103
|
this.eGui = document.createElement('div');
|
|
88
104
|
this.eGui.className = 'ab-ActionColumn';
|
|
@@ -114,13 +130,22 @@ export class ActionColumnRenderer {
|
|
|
114
130
|
const eGui = this.eGui;
|
|
115
131
|
const doRender = () => {
|
|
116
132
|
this.unmountReactRoot = adaptable.renderReactRoot(renderWithAdaptableContext(ActionButtons({
|
|
117
|
-
buttons: actionButtons,
|
|
133
|
+
buttons: this.actionButtons,
|
|
118
134
|
context: buttonContext,
|
|
119
135
|
rerender: doRender,
|
|
120
136
|
adaptableApi: adaptable.api,
|
|
121
137
|
}), adaptable), eGui);
|
|
122
138
|
};
|
|
123
139
|
this.render = doRender;
|
|
140
|
+
this.layoutSwitchUnsubscribe = adaptable.api.eventApi.on('AdaptableStateChanged', (eventInfo) => {
|
|
141
|
+
if (eventInfo.actionName === LAYOUT_SELECT) {
|
|
142
|
+
if (eventInfo.oldState.Layout.CurrentLayout !== eventInfo.newState.Layout.CurrentLayout) {
|
|
143
|
+
const { actionButtons: freshActionButtons } = adaptable.api.internalApi.getActionButtonsAndActionColumn(params.colDef);
|
|
144
|
+
this.actionButtons = freshActionButtons;
|
|
145
|
+
doRender();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
});
|
|
124
149
|
doRender();
|
|
125
150
|
}
|
|
126
151
|
// defined on init
|
|
@@ -138,8 +163,9 @@ export class ActionColumnRenderer {
|
|
|
138
163
|
}
|
|
139
164
|
// gets called when the cell is removed from the grid
|
|
140
165
|
destroy() {
|
|
141
|
-
var _a;
|
|
142
|
-
(_a = this.
|
|
166
|
+
var _a, _b;
|
|
167
|
+
(_a = this.layoutSwitchUnsubscribe) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
168
|
+
(_b = this.unmountReactRoot) === null || _b === void 0 ? void 0 : _b.call(this);
|
|
143
169
|
// do cleanup, remove event listener from button
|
|
144
170
|
if (this.eGui) {
|
|
145
171
|
this.eGui.removeEventListener('click', this.eventListener);
|
|
@@ -249,7 +249,6 @@ export declare class AdaptableAgGrid implements IAdaptable {
|
|
|
249
249
|
getRowNodeByIndex(index: number): IRowNode;
|
|
250
250
|
getAgGridStatusPanels(): import("@ag-grid-community/core").StatusPanelDef[];
|
|
251
251
|
setDataValue(value: any, column: AdaptableColumn, primaryKeyValue: any, rowNode?: IRowNode): void;
|
|
252
|
-
isCellEditable(rowNode: IRowNode, column: Column): boolean;
|
|
253
252
|
forAllRowNodesDo(func: (rowNode: IRowNode, rowIndex: number) => void, config?: {
|
|
254
253
|
includeGroupRows?: boolean;
|
|
255
254
|
filterFn?: (rowNode: IRowNode) => boolean;
|
|
@@ -285,6 +284,7 @@ export declare class AdaptableAgGrid implements IAdaptable {
|
|
|
285
284
|
updateChart(chart: ChartDefinition): void;
|
|
286
285
|
getChartModels(): import("@ag-grid-community/core").ChartModel[];
|
|
287
286
|
getRowCount(): number;
|
|
287
|
+
getVisibleRowCount(): number;
|
|
288
288
|
getColumnCount(): number;
|
|
289
289
|
getVisibleColumnCount(): number;
|
|
290
290
|
isGridGroupable(): boolean;
|