@adaptabletools/adaptable-cjs 22.0.0-canary.6 → 22.0.0-canary.8
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 +63 -74
- package/index.css.map +1 -1
- package/package.json +1 -1
- package/src/AdaptableInterfaces/IAdaptable.d.ts +6 -6
- package/src/AdaptableOptions/ContainerOptions.d.ts +55 -15
- package/src/AdaptableState/AdaptableState.d.ts +2 -0
- package/src/AdaptableState/AlertState.d.ts +1 -2
- package/src/AdaptableState/Common/AdaptableColumnContext.d.ts +9 -0
- package/src/AdaptableState/Common/AdaptableObject.d.ts +4 -0
- package/src/AdaptableState/Common/AdaptableRowContext.d.ts +11 -0
- package/src/AdaptableState/Common/AdaptableRowContext.js +2 -0
- package/src/AdaptableState/Common/BaseContext.d.ts +2 -0
- package/src/AdaptableState/Common/DataUpdateConfig.d.ts +7 -0
- package/src/AdaptableState/Common/NamedObject.d.ts +10 -0
- package/src/AdaptableState/Common/NamedObject.js +2 -0
- package/src/AdaptableState/Common/RowSummary.d.ts +1 -1
- package/src/AdaptableState/Common/Schedule.d.ts +2 -2
- package/src/AdaptableState/Common/SuspendableObject.d.ts +10 -0
- package/src/AdaptableState/Common/SuspendableObject.js +2 -0
- package/src/AdaptableState/Common/TransposeConfig.d.ts +11 -9
- package/src/AdaptableState/CustomSortState.d.ts +1 -1
- package/src/AdaptableState/FormatColumnState.d.ts +1 -1
- package/src/AdaptableState/InitialState.d.ts +9 -0
- package/src/AdaptableState/LayoutState.d.ts +2 -3
- package/src/AdaptableState/PlusMinusState.d.ts +1 -1
- package/src/AdaptableState/ShortcutState.d.ts +1 -1
- package/src/AdaptableState/StyledColumnState.d.ts +1 -1
- package/src/AdaptableState/UserInterfaceState.d.ts +14 -0
- package/src/AdaptableState/UserInterfaceState.js +2 -0
- package/src/Api/AlertApi.d.ts +6 -0
- package/src/Api/CustomSortApi.d.ts +6 -0
- package/src/Api/FlashingCellApi.d.ts +6 -0
- package/src/Api/FormatColumnApi.d.ts +10 -4
- package/src/Api/GridApi.d.ts +5 -9
- package/src/Api/Implementation/AlertApiImpl.d.ts +1 -0
- package/src/Api/Implementation/AlertApiImpl.js +5 -6
- package/src/Api/Implementation/ChartingApiImpl.js +2 -2
- package/src/Api/Implementation/CustomSortApiImpl.d.ts +1 -0
- package/src/Api/Implementation/CustomSortApiImpl.js +3 -0
- package/src/Api/Implementation/FlashingCellApiImpl.d.ts +1 -0
- package/src/Api/Implementation/FlashingCellApiImpl.js +3 -0
- package/src/Api/Implementation/FormatColumnApiImpl.d.ts +6 -5
- package/src/Api/Implementation/FormatColumnApiImpl.js +6 -5
- package/src/Api/Implementation/GridApiImpl.d.ts +2 -6
- package/src/Api/Implementation/GridApiImpl.js +9 -9
- package/src/Api/Implementation/LayoutApiImpl.d.ts +1 -0
- package/src/Api/Implementation/LayoutApiImpl.js +4 -1
- package/src/Api/Implementation/NamedQueryApiImpl.js +2 -2
- package/src/Api/Implementation/PlusMinusApiImpl.d.ts +1 -0
- package/src/Api/Implementation/PlusMinusApiImpl.js +3 -0
- package/src/Api/Implementation/ScheduleApiImpl.d.ts +1 -0
- package/src/Api/Implementation/ScheduleApiImpl.js +3 -0
- package/src/Api/Implementation/ShortcutApiImpl.d.ts +1 -0
- package/src/Api/Implementation/ShortcutApiImpl.js +3 -0
- package/src/Api/Implementation/SystemStatusApiImpl.js +6 -9
- package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +5 -0
- package/src/Api/Implementation/UserInterfaceApiImpl.js +13 -0
- package/src/Api/Internal/CalculatedColumnInternalApi.js +2 -2
- package/src/Api/Internal/FreeTextColumnInternalApi.js +2 -2
- package/src/Api/Internal/LayoutInternalApi.js +1 -1
- package/src/Api/Internal/NamedQueryInternalApi.js +4 -4
- package/src/Api/LayoutApi.d.ts +6 -0
- package/src/Api/PlusMinusApi.d.ts +6 -0
- package/src/Api/ScheduleApi.d.ts +6 -0
- package/src/Api/ShortcutApi.d.ts +6 -0
- package/src/Api/UserInterfaceApi.d.ts +17 -0
- package/src/Redux/ActionsReducers/FormatColumnRedux.d.ts +8 -0
- package/src/Redux/ActionsReducers/FormatColumnRedux.js +17 -1
- package/src/Redux/ActionsReducers/UserInterfaceRedux.d.ts +11 -0
- package/src/Redux/ActionsReducers/UserInterfaceRedux.js +26 -0
- package/src/Redux/Store/AdaptableStore.js +45 -16
- package/src/Strategy/BulkUpdateModule.js +8 -8
- package/src/Strategy/PlusMinusModule.js +1 -1
- package/src/Strategy/QuickSearchModule.js +1 -1
- package/src/Strategy/SettingsPanelModule.js +11 -7
- package/src/Strategy/SmartEditModule.js +10 -10
- package/src/Utilities/Services/DataService.js +1 -1
- package/src/Utilities/Services/Fdc3Service.js +4 -4
- package/src/Utilities/Services/ModuleService.js +1 -3
- package/src/Utilities/Services/ThemeService.js +2 -6
- package/src/Utilities/Services/ValidationService.js +1 -1
- package/src/Utilities/logDeprecation.js +3 -4
- package/src/Utilities/resolveContainerElement.d.ts +23 -0
- package/src/Utilities/resolveContainerElement.js +47 -0
- package/src/View/Alert/Wizard/isValidAlertRules.js +1 -1
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnDefinitionWizardSection.js +2 -2
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnExpressionWizardSection.js +2 -2
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnSettingsWizardSection.js +1 -1
- package/src/View/Charting/ChartingWizard/AgChargingWizard/SettingsSection.js +2 -2
- package/src/View/Charting/ChartingWizard/ExternalChartingWizard/SettingsSection.js +2 -2
- package/src/View/Components/CellPopup/index.js +1 -1
- package/src/View/Components/ColumnFilter/components/ColumnFilterInput.js +1 -1
- package/src/View/Components/EntityRulesEditor/Utilities.js +5 -5
- package/src/View/Components/NewScopeComponent.js +3 -3
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopup.js +2 -1
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupBody.js +1 -1
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.d.ts +1 -1
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupDialog.js +1 -8
- package/src/View/Components/Popups/AdaptablePopupConfirmation.js +1 -1
- package/src/View/Components/Popups/WindowPopups/WindowPopups.js +35 -0
- package/src/View/Components/WizardSummaryPage.js +1 -1
- package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +3 -3
- package/src/View/CustomSort/Wizard/CustomSortValuesWizardSection.js +1 -1
- package/src/View/Dashboard/CustomToolbar.js +1 -1
- package/src/View/DataChangeHistory/DataChangeHistoryViewPanel.js +1 -1
- package/src/View/FlashingCell/Wizard/isValidFlashingCellRules.js +1 -1
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.d.ts +1 -1
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnSettingsWizardSection.js +3 -3
- package/src/View/Layout/LayoutViewPanel.js +1 -1
- package/src/View/Layout/TransposedPopup.js +144 -138
- package/src/View/Layout/Wizard/sections/AggregationsSection.js +1 -1
- package/src/View/Layout/Wizard/sections/FilterSection.js +1 -1
- package/src/View/Layout/Wizard/sections/GridFilterSection.js +1 -1
- package/src/View/Layout/Wizard/sections/PivotAggregationsSection.js +3 -3
- package/src/View/Layout/Wizard/sections/RowSummarySection.js +1 -1
- package/src/View/NamedQuery/Wizard/NamedQueryExpressionWizardSection.js +2 -2
- package/src/View/PlusMinus/Wizard/PlusMinusSettingsWizardSection.js +5 -5
- package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReminder.js +1 -1
- package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.d.ts +1 -1
- package/src/View/Schedule/Wizard/ScheduleSettingsWizard/isSettingsValid.js +11 -11
- package/src/View/StateManagement/handleExportState.js +1 -1
- package/src/View/StyledColumn/Wizard/StyledColumnWizardColumnSection.js +1 -1
- package/src/View/UIHelper.d.ts +2 -1
- package/src/View/UIHelper.js +8 -14
- package/src/agGrid/Adaptable.js +11 -11
- package/src/agGrid/AdaptableAgGrid.d.ts +12 -8
- package/src/agGrid/AdaptableAgGrid.js +150 -82
- package/src/agGrid/AgGridAdapter.js +8 -8
- package/src/agGrid/AgGridColumnAdapter.js +1 -1
- package/src/agGrid/AgGridExportAdapter.js +5 -5
- package/src/agGrid/AgGridFloatingFilterAdapter.js +1 -1
- package/src/agGrid/AgGridMenuAdapter.js +9 -1
- package/src/agGrid/AgGridThemeAdapter.js +2 -2
- package/src/components/CheckBox/index.js +1 -1
- package/src/components/Dropdown/Arrows.js +1 -1
- package/src/components/ExpressionEditor/DataTableEditor.js +3 -3
- package/src/components/FormLayout/index.js +1 -1
- package/src/components/OverlayTrigger/index.js +1 -1
- package/src/components/Select/Select.js +1 -1
- package/src/components/Tree/TreeDropdown/index.js +1 -1
- package/src/env.js +2 -2
- package/src/metamodel/adaptable.metamodel.d.ts +62 -0
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/migration/AdaptableUpgradeHelper.js +2 -2
- package/src/migration/VersionUpgrade17.js +4 -4
- package/src/migration/VersionUpgrade20.js +4 -4
- package/src/types.d.ts +5 -2
- package/themes/dark.css +30 -29
- package/themes/light.css +4 -2
- package/tsconfig.cjs.tsbuildinfo +1 -1
|
@@ -10,6 +10,7 @@ const DocumentationLinkConstants_1 = require("../Utilities/Constants/Documentati
|
|
|
10
10
|
const StringExtensions_1 = tslib_1.__importDefault(require("../Utilities/Extensions/StringExtensions"));
|
|
11
11
|
const Emitter_1 = tslib_1.__importDefault(require("../Utilities/Emitter"));
|
|
12
12
|
const DefaultAdaptableOptions_1 = require("../AdaptableOptions/DefaultAdaptableOptions");
|
|
13
|
+
const resolveContainerElement_1 = require("../Utilities/resolveContainerElement");
|
|
13
14
|
const AgGridAdapter_1 = require("./AgGridAdapter");
|
|
14
15
|
const GeneralConstants = tslib_1.__importStar(require("../Utilities/Constants/GeneralConstants"));
|
|
15
16
|
const GeneralConstants_1 = require("../Utilities/Constants/GeneralConstants");
|
|
@@ -225,6 +226,8 @@ class AdaptableAgGrid {
|
|
|
225
226
|
* Temporary, these are MIGRATION technical debts, and should be removed as soon as possible
|
|
226
227
|
*/
|
|
227
228
|
adaptableStatusPanelKeys = [];
|
|
229
|
+
adaptableStatusPanelDefs = [];
|
|
230
|
+
hasAdaptableStatusBar;
|
|
228
231
|
// see #no_additional_react_root
|
|
229
232
|
_PRIVATE_adaptableJSXElement;
|
|
230
233
|
_prevLayout;
|
|
@@ -363,7 +366,7 @@ class AdaptableAgGrid {
|
|
|
363
366
|
this.adaptableOptions = this.normalizeAdaptableOptions(this.adaptableOptions);
|
|
364
367
|
const { showLoadingScreen, loadingScreenDelay, loadingScreenText, loadingScreenTitle } = this.adaptableOptions.userInterfaceOptions.loadingScreenOptions;
|
|
365
368
|
if (showLoadingScreen) {
|
|
366
|
-
this.logger.info(
|
|
369
|
+
this.logger.info('Showing loading screen');
|
|
367
370
|
// it's important to use ensureLoadingScreenPortalElement
|
|
368
371
|
// and not ensurePortalElement, because multiple adaptable instances share the same portal element
|
|
369
372
|
// so when displaying the second one, the react root associated to the portal element
|
|
@@ -379,7 +382,7 @@ class AdaptableAgGrid {
|
|
|
379
382
|
}), portalElement);
|
|
380
383
|
}
|
|
381
384
|
else {
|
|
382
|
-
this.logger.consoleError(
|
|
385
|
+
this.logger.consoleError('Failed to create loading screen portal element.');
|
|
383
386
|
}
|
|
384
387
|
}
|
|
385
388
|
this.forPlugins((plugin) => plugin.afterInitOptions(this, this.adaptableOptions));
|
|
@@ -438,7 +441,7 @@ class AdaptableAgGrid {
|
|
|
438
441
|
// see #map_dateString_to_date
|
|
439
442
|
this.agGridAdapter.patchColDefs(columnDefs, (colDef) => {
|
|
440
443
|
if (colDef.cellDataType === 'dateString') {
|
|
441
|
-
this.logger.consoleError(`
|
|
444
|
+
this.logger.consoleError(`Column "${colDef.colId}" uses cellDataType="dateString" which is no longer supported. It has been replaced with cellDataType="date". Please update your column definition.`);
|
|
442
445
|
colDef.cellDataType = 'date';
|
|
443
446
|
}
|
|
444
447
|
});
|
|
@@ -469,8 +472,8 @@ class AdaptableAgGrid {
|
|
|
469
472
|
const agGridApi = await this.initializeAgGrid(gridOptions, config.modules, config.renderAgGridFrameworkComponent);
|
|
470
473
|
if (agGridApi === false) {
|
|
471
474
|
this.midwayDestroy();
|
|
472
|
-
this.logger.consoleError(
|
|
473
|
-
return Promise.reject('
|
|
475
|
+
this.logger.consoleError('Failed to initialize AG Grid.');
|
|
476
|
+
return Promise.reject('Failed to initialize AG Grid.');
|
|
474
477
|
}
|
|
475
478
|
this.layoutManager = new src_1.LayoutManager({
|
|
476
479
|
gridApi: agGridApi,
|
|
@@ -495,7 +498,7 @@ class AdaptableAgGrid {
|
|
|
495
498
|
this.layoutManager.onColumnDefsChanged(() => {
|
|
496
499
|
this.updateColumnModelAndRefreshGrid();
|
|
497
500
|
});
|
|
498
|
-
this.logger.info(
|
|
501
|
+
this.logger.info('Hiding loading screen');
|
|
499
502
|
this.unmountLoadingScreen?.();
|
|
500
503
|
perfInitAgGrid.end();
|
|
501
504
|
initAgGridMarker.end();
|
|
@@ -506,7 +509,7 @@ class AdaptableAgGrid {
|
|
|
506
509
|
this.lifecycleState = 'agGridReady';
|
|
507
510
|
this.api.entitlementApi.internalApi.setModulesAgGridDepsInfos();
|
|
508
511
|
this.ModuleService.logMissingAgGridDepsInfos();
|
|
509
|
-
this.logger.info(
|
|
512
|
+
this.logger.info('Registered AG Grid modules (including dependents):', this.agGridModulesAdapter.getAgGridRegisteredModuleNames().sort());
|
|
510
513
|
/**
|
|
511
514
|
* At this point AG Grid is initialized!
|
|
512
515
|
*/
|
|
@@ -596,10 +599,7 @@ class AdaptableAgGrid {
|
|
|
596
599
|
const layoutState = state.Layout;
|
|
597
600
|
// ensure that at least one Layout has been provided
|
|
598
601
|
if (!layoutState || !layoutState.Layouts?.length) {
|
|
599
|
-
this.logger
|
|
600
|
-
.consoleError(`You have not defined any Layout in your InitialState.Layout.Layouts[] state!
|
|
601
|
-
|
|
602
|
-
You need to define at least one Layout!`);
|
|
602
|
+
this.logger.consoleError('No Layouts defined in InitialState.Layout.Layouts[]. At least one Layout is required.');
|
|
603
603
|
}
|
|
604
604
|
// ensure CurrentLayout is valid
|
|
605
605
|
if (!layoutState.CurrentLayout ||
|
|
@@ -762,21 +762,90 @@ You need to define at least one Layout!`);
|
|
|
762
762
|
hideQuickFilter() {
|
|
763
763
|
this.agGridAdapter.getAgGridApi().setGridOption('floatingFiltersHeight', 0);
|
|
764
764
|
}
|
|
765
|
+
showAdaptableToolPanel() {
|
|
766
|
+
if (!this.hasAdaptableToolPanel) {
|
|
767
|
+
// don't re-add the ToolPanel if it's hidden by entitlement
|
|
768
|
+
if (this.api.entitlementApi.isModuleHiddenEntitlement('ToolPanel')) {
|
|
769
|
+
return;
|
|
770
|
+
}
|
|
771
|
+
const currentSideBar = this.agGridAdapter.getGridOption('sideBar');
|
|
772
|
+
if (currentSideBar?.toolPanels) {
|
|
773
|
+
const updatedSideBar = {
|
|
774
|
+
...currentSideBar,
|
|
775
|
+
toolPanels: [...currentSideBar.toolPanels, this.buildAdaptableToolPanelDef()],
|
|
776
|
+
};
|
|
777
|
+
this.agGridAdapter.setGridOption('sideBar', updatedSideBar);
|
|
778
|
+
this.hasAdaptableToolPanel = true;
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
hideAdaptableToolPanel() {
|
|
783
|
+
if (this.hasAdaptableToolPanel) {
|
|
784
|
+
// close the tool panel if it's currently open
|
|
785
|
+
this.api.toolPanelApi.closeAdapTableToolPanel();
|
|
786
|
+
const currentSideBar = this.agGridAdapter.getGridOption('sideBar');
|
|
787
|
+
if (currentSideBar?.toolPanels) {
|
|
788
|
+
const updatedSideBar = {
|
|
789
|
+
...currentSideBar,
|
|
790
|
+
toolPanels: currentSideBar.toolPanels.filter((toolPanelDef) => {
|
|
791
|
+
if (typeof toolPanelDef === 'string') {
|
|
792
|
+
return toolPanelDef !== GeneralConstants.ADAPTABLE_TOOLPANEL_ID;
|
|
793
|
+
}
|
|
794
|
+
return toolPanelDef.id !== GeneralConstants.ADAPTABLE_TOOLPANEL_ID;
|
|
795
|
+
}),
|
|
796
|
+
};
|
|
797
|
+
this.agGridAdapter.setGridOption('sideBar', updatedSideBar);
|
|
798
|
+
}
|
|
799
|
+
this.hasAdaptableToolPanel = false;
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
buildAdaptableToolPanelDef() {
|
|
803
|
+
return {
|
|
804
|
+
id: GeneralConstants.ADAPTABLE_TOOLPANEL_ID,
|
|
805
|
+
toolPanel: GeneralConstants.ADAPTABLE_TOOLPANEL_COMPONENT,
|
|
806
|
+
labelDefault: GeneralConstants.ADAPTABLE,
|
|
807
|
+
labelKey: 'adaptable',
|
|
808
|
+
iconKey: 'menu',
|
|
809
|
+
width: UIHelper_1.default.getAdaptableToolPanelWidth(),
|
|
810
|
+
minWidth: UIHelper_1.default.getAdaptableToolPanelWidth(),
|
|
811
|
+
};
|
|
812
|
+
}
|
|
813
|
+
showAdaptableStatusBar() {
|
|
814
|
+
if (!this.hasAdaptableStatusBar && this.adaptableStatusPanelDefs.length > 0) {
|
|
815
|
+
const currentStatusBar = this.agGridAdapter.getGridOption('statusBar');
|
|
816
|
+
if (currentStatusBar) {
|
|
817
|
+
// filter out any Adaptable panels that may already exist to avoid duplicates
|
|
818
|
+
const existingNonAdaptablePanels = (currentStatusBar.statusPanels ?? []).filter((panel) => !this.adaptableStatusPanelKeys.includes(panel.key));
|
|
819
|
+
const updatedStatusBar = {
|
|
820
|
+
...currentStatusBar,
|
|
821
|
+
statusPanels: [...existingNonAdaptablePanels, ...this.adaptableStatusPanelDefs],
|
|
822
|
+
};
|
|
823
|
+
this.agGridAdapter.setGridOption('statusBar', updatedStatusBar);
|
|
824
|
+
this.hasAdaptableStatusBar = true;
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
hideAdaptableStatusBar() {
|
|
829
|
+
if (this.hasAdaptableStatusBar) {
|
|
830
|
+
const currentStatusBar = this.agGridAdapter.getGridOption('statusBar');
|
|
831
|
+
if (currentStatusBar?.statusPanels) {
|
|
832
|
+
const updatedStatusBar = {
|
|
833
|
+
...currentStatusBar,
|
|
834
|
+
statusPanels: currentStatusBar.statusPanels.filter((panel) => !this.adaptableStatusPanelKeys.includes(panel.key)),
|
|
835
|
+
};
|
|
836
|
+
this.agGridAdapter.setGridOption('statusBar', updatedStatusBar);
|
|
837
|
+
}
|
|
838
|
+
this.hasAdaptableStatusBar = false;
|
|
839
|
+
}
|
|
840
|
+
}
|
|
765
841
|
normalizeAdaptableOptions(adaptableOptions) {
|
|
766
842
|
if (this.hasAutogeneratedPrimaryKey) {
|
|
767
|
-
this.logger
|
|
768
|
-
.warn(`Autogenerated primary key (adaptableOptions.autogeneratedPrimaryKey = TRUE) should be used only as a last resort,
|
|
769
|
-
when no unique column is available, as it limits some Adaptable functionalities!
|
|
770
|
-
|
|
771
|
-
For more details see: ${DocumentationLinkConstants_1.PrimaryKeyDocsLink}`);
|
|
843
|
+
this.logger.warn(`Autogenerated primary key is enabled (adaptableOptions.autogeneratedPrimaryKey = true). This should be a last resort as it limits some Adaptable features. See: ${DocumentationLinkConstants_1.PrimaryKeyDocsLink}`);
|
|
772
844
|
this.adaptableOptions.primaryKey = GeneralConstants_1.AUTOGENERATED_PK_COLUMN;
|
|
773
845
|
return this.adaptableOptions;
|
|
774
846
|
}
|
|
775
847
|
if (StringExtensions_1.default.IsNullOrEmpty(adaptableOptions.primaryKey)) {
|
|
776
|
-
this.logger.consoleError(`
|
|
777
|
-
As a fallback, you can set adaptableOptions.autogeneratedPrimaryKey = TRUE
|
|
778
|
-
|
|
779
|
-
For more details see: ${DocumentationLinkConstants_1.PrimaryKeyDocsLink}`);
|
|
848
|
+
this.logger.consoleError(`adaptableOptions.primaryKey is required and must not be empty. As a fallback, set adaptableOptions.autogeneratedPrimaryKey = true. See: ${DocumentationLinkConstants_1.PrimaryKeyDocsLink}`);
|
|
780
849
|
}
|
|
781
850
|
return adaptableOptions;
|
|
782
851
|
}
|
|
@@ -808,7 +877,7 @@ You need to define at least one Layout!`);
|
|
|
808
877
|
*/
|
|
809
878
|
this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'defaultColDef', (original_defaultColDef) => {
|
|
810
879
|
if (original_defaultColDef?.headerValueGetter) {
|
|
811
|
-
this.logger.warn(
|
|
880
|
+
this.logger.warn('defaultColDef.headerValueGetter overrides the Adaptable header mechanism. Consider using ColumnOptions.columnHeader instead.');
|
|
812
881
|
return original_defaultColDef;
|
|
813
882
|
}
|
|
814
883
|
// #customize_header
|
|
@@ -825,7 +894,7 @@ You need to define at least one Layout!`);
|
|
|
825
894
|
*/
|
|
826
895
|
this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'defaultColGroupDef', (original_defaultColGroupDef) => {
|
|
827
896
|
if (original_defaultColGroupDef?.headerValueGetter) {
|
|
828
|
-
this.logger.warn(
|
|
897
|
+
this.logger.warn('defaultColGroupDef.headerValueGetter overrides the Adaptable header mechanism. Consider using ColumnOptions.tableColumnHeader instead.');
|
|
829
898
|
return original_defaultColGroupDef;
|
|
830
899
|
}
|
|
831
900
|
const defaultColGroupDef = { ...original_defaultColGroupDef };
|
|
@@ -845,12 +914,11 @@ You need to define at least one Layout!`);
|
|
|
845
914
|
}
|
|
846
915
|
if (original_autoGroupColumnDef?.filter === false) {
|
|
847
916
|
// if user disables filter on autoGroupColumnDef, we respect that
|
|
848
|
-
this.logger.info(
|
|
917
|
+
this.logger.info('autoGroupColumnDef.filter is disabled via user configuration.');
|
|
849
918
|
return original_autoGroupColumnDef;
|
|
850
919
|
}
|
|
851
920
|
if (typeof original_autoGroupColumnDef?.filter === 'object') {
|
|
852
|
-
this.logger.consoleWarn(
|
|
853
|
-
Please contact the Adaptable Support Team for further assistance and investigation.`);
|
|
921
|
+
this.logger.consoleWarn('autoGroupColumnDef.filter overrides the Adaptable filtering mechanism for the Group Column. Adaptable-managed filters will not apply to this column. Contact support for alternatives.');
|
|
854
922
|
return original_autoGroupColumnDef;
|
|
855
923
|
}
|
|
856
924
|
const autoGroupColumnDef = { ...original_autoGroupColumnDef };
|
|
@@ -858,8 +926,7 @@ You need to define at least one Layout!`);
|
|
|
858
926
|
// !! DO NOT REMOVE THIS !!
|
|
859
927
|
// see https://github.com/ag-grid/ag-grid/blob/6f43ff257c2e285068eb425b655e58d6eeb89816/packages/ag-grid-enterprise/src/rowHierarchy/autoColService.ts#L225
|
|
860
928
|
autoGroupColumnDef.filterValueGetter = (params) => {
|
|
861
|
-
this.logger.consoleWarn(
|
|
862
|
-
Please contact the Adaptable Support Team for further assistance and investigation.`, params);
|
|
929
|
+
this.logger.consoleWarn('Unexpected invocation of autoGroupColumnDef.filterValueGetter. This is not expected under normal operation. Please contact support.', params);
|
|
863
930
|
return '';
|
|
864
931
|
};
|
|
865
932
|
// !! it is important that we always return the same component / handler instances
|
|
@@ -1173,16 +1240,7 @@ You need to define at least one Layout!`);
|
|
|
1173
1240
|
return original_sideBar;
|
|
1174
1241
|
}
|
|
1175
1242
|
const isAdaptableToolPanelHidden = this.api.entitlementApi.isModuleHiddenEntitlement('ToolPanel');
|
|
1176
|
-
const adaptableToolPanelDef =
|
|
1177
|
-
id: GeneralConstants.ADAPTABLE_TOOLPANEL_ID,
|
|
1178
|
-
toolPanel: GeneralConstants.ADAPTABLE_TOOLPANEL_COMPONENT,
|
|
1179
|
-
labelDefault: GeneralConstants.ADAPTABLE,
|
|
1180
|
-
labelKey: 'adaptable',
|
|
1181
|
-
iconKey: 'menu',
|
|
1182
|
-
width: UIHelper_1.default.getAdaptableToolPanelWidth(),
|
|
1183
|
-
minWidth: UIHelper_1.default.getAdaptableToolPanelWidth(),
|
|
1184
|
-
// maxWidth = undefined,
|
|
1185
|
-
};
|
|
1243
|
+
const adaptableToolPanelDef = this.buildAdaptableToolPanelDef();
|
|
1186
1244
|
const mapToolPanelDefs = (toolPanelDefs = []) => {
|
|
1187
1245
|
// if it's an alias for the adaptable tool panel, map it to a ToolPanelDef, otherwise return it as it is
|
|
1188
1246
|
return toolPanelDefs.map((toolPanelDef) => toolPanelDef === GeneralConstants.ADAPTABLE_TOOLPANEL_ID
|
|
@@ -1257,19 +1315,29 @@ You need to define at least one Layout!`);
|
|
|
1257
1315
|
this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'statusBar', (original_statusBar) => {
|
|
1258
1316
|
const statusPanels = (original_statusBar?.statusPanels ?? [])?.map((statusPanel) => {
|
|
1259
1317
|
if (statusPanel.statusPanel === StatusBarState_1.ADAPTABLE_STATUS_PANEL) {
|
|
1318
|
+
if (!statusPanel.key) {
|
|
1319
|
+
this.logger.consoleWarn('AdaptableStatusPanel is missing a "key" property. This panel will not be managed by HideAdaptableUI. Please provide a unique key.');
|
|
1320
|
+
return statusPanel;
|
|
1321
|
+
}
|
|
1260
1322
|
this.adaptableStatusPanelKeys.push(statusPanel.key);
|
|
1261
1323
|
const context = {
|
|
1262
1324
|
Key: statusPanel.key,
|
|
1263
1325
|
};
|
|
1264
|
-
|
|
1326
|
+
const adaptablePanelDef = {
|
|
1265
1327
|
...statusPanel,
|
|
1266
1328
|
statusPanel: (0, createAgStatusPanelComponent_1.createAgStatusPanelComponent)(AdaptableStatusBar_1.AdaptableStatusBar, this, context),
|
|
1267
1329
|
};
|
|
1330
|
+
this.adaptableStatusPanelDefs.push(adaptablePanelDef);
|
|
1331
|
+
return adaptablePanelDef;
|
|
1268
1332
|
}
|
|
1269
1333
|
return statusPanel;
|
|
1270
1334
|
});
|
|
1271
1335
|
return { ...original_statusBar, statusPanels };
|
|
1272
1336
|
});
|
|
1337
|
+
this.hasAdaptableStatusBar = this.adaptableStatusPanelKeys.length > 0;
|
|
1338
|
+
}
|
|
1339
|
+
else {
|
|
1340
|
+
this.hasAdaptableStatusBar = false;
|
|
1273
1341
|
}
|
|
1274
1342
|
/**
|
|
1275
1343
|
* `getRowStyle`
|
|
@@ -1429,15 +1497,14 @@ You need to define at least one Layout!`);
|
|
|
1429
1497
|
const rowData = agGridApi.getGridOption('rowData');
|
|
1430
1498
|
this.initWithLazyData = rowData == undefined || rowData.length === 0;
|
|
1431
1499
|
if (this.initWithLazyData) {
|
|
1432
|
-
this.logger.info('
|
|
1500
|
+
this.logger.info('Initializing with lazy data (no initial rowData).');
|
|
1433
1501
|
}
|
|
1434
1502
|
if (!this.getAgGridContainerElement()) {
|
|
1435
1503
|
// initialize the agGridContainerElement from the AgGrid instance
|
|
1436
1504
|
const gridRoot = this.agGridAdapter.getAgGridRootElement();
|
|
1437
1505
|
const gridContainer = gridRoot?.closest('[class*="ag-theme"]');
|
|
1438
1506
|
if (!gridContainer) {
|
|
1439
|
-
this.logger.consoleError(
|
|
1440
|
-
Please contact AdapTable Support and in the meantime provide a valid container element in 'ContainerOptions.agGridContainer'!`);
|
|
1507
|
+
this.logger.consoleError('Failed to derive AG Grid container from the framework wrapper. Please provide a valid container element via ContainerOptions.agGridContainer.');
|
|
1441
1508
|
}
|
|
1442
1509
|
this.DANGER_USE_GETTER_agGridContainerElement = gridContainer;
|
|
1443
1510
|
}
|
|
@@ -1445,7 +1512,7 @@ You need to define at least one Layout!`);
|
|
|
1445
1512
|
}
|
|
1446
1513
|
const agGridContainer = this.getAgGridContainerElement();
|
|
1447
1514
|
if (!agGridContainer) {
|
|
1448
|
-
this.logger.consoleError('
|
|
1515
|
+
this.logger.consoleError('AG Grid container element not found in the DOM. Please provide a valid element via ContainerOptions.agGridContainer.');
|
|
1449
1516
|
return Promise.resolve(false);
|
|
1450
1517
|
}
|
|
1451
1518
|
let gridParams;
|
|
@@ -1458,21 +1525,22 @@ You need to define at least one Layout!`);
|
|
|
1458
1525
|
useRowNodeLookUp() {
|
|
1459
1526
|
return this.agGridAdapter.getAgGridApi().getGridOption('getRowId') != undefined;
|
|
1460
1527
|
}
|
|
1528
|
+
buildInitContainerContext() {
|
|
1529
|
+
return {
|
|
1530
|
+
adaptableId: this.adaptableOptions?.adaptableId ?? '',
|
|
1531
|
+
adaptableStateKey: this.adaptableOptions?.adaptableStateKey ?? '',
|
|
1532
|
+
adaptableContext: this.adaptableOptions?.adaptableContext,
|
|
1533
|
+
};
|
|
1534
|
+
}
|
|
1461
1535
|
getAgGridContainerElement() {
|
|
1462
1536
|
if (!this.DANGER_USE_GETTER_agGridContainerElement) {
|
|
1463
|
-
this.DANGER_USE_GETTER_agGridContainerElement =
|
|
1464
|
-
typeof this.adaptableOptions?.containerOptions?.agGridContainer === 'string'
|
|
1465
|
-
? document.getElementById(this.adaptableOptions?.containerOptions?.agGridContainer)
|
|
1466
|
-
: this.adaptableOptions?.containerOptions?.agGridContainer;
|
|
1537
|
+
this.DANGER_USE_GETTER_agGridContainerElement = (0, resolveContainerElement_1.resolveContainerElement)(this.adaptableOptions?.containerOptions?.agGridContainer, this.buildInitContainerContext());
|
|
1467
1538
|
}
|
|
1468
1539
|
return this.DANGER_USE_GETTER_agGridContainerElement;
|
|
1469
1540
|
}
|
|
1470
1541
|
getAdaptableContainerElement() {
|
|
1471
1542
|
if (!this.DANGER_USE_GETTER_adaptableContainerElement) {
|
|
1472
|
-
this.DANGER_USE_GETTER_adaptableContainerElement =
|
|
1473
|
-
typeof this.adaptableOptions?.containerOptions?.adaptableContainer === 'string'
|
|
1474
|
-
? document.getElementById(this.adaptableOptions?.containerOptions?.adaptableContainer)
|
|
1475
|
-
: this.adaptableOptions?.containerOptions?.adaptableContainer;
|
|
1543
|
+
this.DANGER_USE_GETTER_adaptableContainerElement = (0, resolveContainerElement_1.resolveContainerElement)(this.adaptableOptions?.containerOptions?.adaptableContainer, this.buildInitContainerContext());
|
|
1476
1544
|
}
|
|
1477
1545
|
return this.DANGER_USE_GETTER_adaptableContainerElement;
|
|
1478
1546
|
}
|
|
@@ -1860,7 +1928,7 @@ You need to define at least one Layout!`);
|
|
|
1860
1928
|
// if no primary key column then lets check the first row to see if its a data item
|
|
1861
1929
|
const primaryKeyDataItem = this.getFirstRowNode()?.data[primaryKey];
|
|
1862
1930
|
if (!primaryKeyDataItem) {
|
|
1863
|
-
errorMessage = `
|
|
1931
|
+
errorMessage = `Primary key column "${this.adaptableOptions.primaryKey}" not found. This will affect many Adaptable features.`;
|
|
1864
1932
|
if (this.adaptableOptions.alertOptions.showMissingPrimaryKeyAlert) {
|
|
1865
1933
|
// show an alert if that is the option
|
|
1866
1934
|
this.api.alertApi.showAlertError('No Primary Key', errorMessage);
|
|
@@ -1917,12 +1985,12 @@ You need to define at least one Layout!`);
|
|
|
1917
1985
|
checkShouldClearExistingFiltersOrSearches() {
|
|
1918
1986
|
// if they have selected to clear Filters on startup then do it
|
|
1919
1987
|
if (this.adaptableOptions.filterOptions.clearFiltersOnStartUp) {
|
|
1920
|
-
this.logger.warn('Clearing
|
|
1988
|
+
this.logger.warn('Clearing saved filters (clearFiltersOnStartUp is enabled).');
|
|
1921
1989
|
this.api.filterApi.clearAllFilters();
|
|
1922
1990
|
}
|
|
1923
1991
|
// if they have selected to clear searches on startup then do it
|
|
1924
1992
|
if (this.adaptableOptions.quickSearchOptions.clearQuickSearchOnStartUp) {
|
|
1925
|
-
this.logger.warn('Clearing
|
|
1993
|
+
this.logger.warn('Clearing saved Quick Search (clearQuickSearchOnStartUp is enabled).');
|
|
1926
1994
|
this.api.quickSearchApi.clearQuickSearch();
|
|
1927
1995
|
}
|
|
1928
1996
|
}
|
|
@@ -2151,7 +2219,7 @@ You need to define at least one Layout!`);
|
|
|
2151
2219
|
}
|
|
2152
2220
|
}
|
|
2153
2221
|
_updateColumnModelAndRefreshGridNow() {
|
|
2154
|
-
this.logger.info(
|
|
2222
|
+
this.logger.info('Updating column model and refreshing grid.');
|
|
2155
2223
|
this.deriveAdaptableColumnStateFromAgGrid();
|
|
2156
2224
|
this.agGridColumnAdapter.setupColumns();
|
|
2157
2225
|
this.redrawBody();
|
|
@@ -2177,7 +2245,7 @@ You need to define at least one Layout!`);
|
|
|
2177
2245
|
this.agGridAdapter.getAgGridApi().redrawRows(redrawRowsParams);
|
|
2178
2246
|
}
|
|
2179
2247
|
catch (ex) {
|
|
2180
|
-
this.logger.consoleError('AG Grid redrawRows
|
|
2248
|
+
this.logger.consoleError('AG Grid redrawRows failed to locate some row nodes.', rowNodes, ex);
|
|
2181
2249
|
}
|
|
2182
2250
|
}
|
|
2183
2251
|
redrawRow(rowNode) {
|
|
@@ -2471,31 +2539,31 @@ You need to define at least one Layout!`);
|
|
|
2471
2539
|
});
|
|
2472
2540
|
}
|
|
2473
2541
|
}
|
|
2474
|
-
async manageGridRows(
|
|
2542
|
+
async manageGridRows(dataRowConfig, dataUpdateConfig = {}) {
|
|
2475
2543
|
const result = {
|
|
2476
2544
|
addedRows: [],
|
|
2477
2545
|
updatedRows: [],
|
|
2478
2546
|
removedRows: [],
|
|
2479
2547
|
};
|
|
2480
|
-
if (!dataRows) {
|
|
2548
|
+
if (!dataRowConfig || !dataRowConfig.dataRows) {
|
|
2481
2549
|
return result;
|
|
2482
2550
|
}
|
|
2483
|
-
const addDataRows = dataRows.add;
|
|
2484
|
-
const updateDataRows = dataRows.update;
|
|
2485
|
-
const removeDataRows = dataRows.delete;
|
|
2551
|
+
const addDataRows = dataRowConfig.dataRows.add;
|
|
2552
|
+
const updateDataRows = dataRowConfig.dataRows.update;
|
|
2553
|
+
const removeDataRows = dataRowConfig.dataRows.delete;
|
|
2486
2554
|
if (this.hasAutogeneratedPrimaryKey) {
|
|
2487
2555
|
this.addSyntheticPrimaryKeyIfMissing(addDataRows);
|
|
2488
2556
|
}
|
|
2489
|
-
if (
|
|
2557
|
+
if (dataUpdateConfig.runAsync) {
|
|
2490
2558
|
return new Promise((resolve) => {
|
|
2491
2559
|
this.applyAgGridTransactionAsync({
|
|
2492
2560
|
update: updateDataRows,
|
|
2493
2561
|
add: addDataRows,
|
|
2494
2562
|
remove: removeDataRows,
|
|
2495
|
-
addIndex:
|
|
2563
|
+
addIndex: dataUpdateConfig.addIndex,
|
|
2496
2564
|
}, (transaction) => {
|
|
2497
|
-
if (typeof
|
|
2498
|
-
|
|
2565
|
+
if (typeof dataUpdateConfig.callback === 'function') {
|
|
2566
|
+
dataUpdateConfig.callback(transaction);
|
|
2499
2567
|
}
|
|
2500
2568
|
if (transaction?.add) {
|
|
2501
2569
|
this.updateRowGroupsAndColumnGroupsExpandedState();
|
|
@@ -2506,7 +2574,7 @@ You need to define at least one Layout!`);
|
|
|
2506
2574
|
removedRows: transaction?.remove,
|
|
2507
2575
|
});
|
|
2508
2576
|
});
|
|
2509
|
-
if (
|
|
2577
|
+
if (dataUpdateConfig.flushAsync) {
|
|
2510
2578
|
this.agGridAdapter.getAgGridApi().flushAsyncTransactions();
|
|
2511
2579
|
}
|
|
2512
2580
|
});
|
|
@@ -2516,12 +2584,12 @@ You need to define at least one Layout!`);
|
|
|
2516
2584
|
update: updateDataRows,
|
|
2517
2585
|
add: addDataRows,
|
|
2518
2586
|
remove: removeDataRows,
|
|
2519
|
-
addIndex:
|
|
2587
|
+
addIndex: dataUpdateConfig.addIndex,
|
|
2520
2588
|
});
|
|
2521
2589
|
if (transaction?.add) {
|
|
2522
2590
|
this.updateRowGroupsAndColumnGroupsExpandedState();
|
|
2523
2591
|
}
|
|
2524
|
-
if (
|
|
2592
|
+
if (dataUpdateConfig.flushAsync) {
|
|
2525
2593
|
this.agGridAdapter.getAgGridApi().flushAsyncTransactions();
|
|
2526
2594
|
}
|
|
2527
2595
|
return Promise.resolve({
|
|
@@ -2587,14 +2655,14 @@ You need to define at least one Layout!`);
|
|
|
2587
2655
|
}
|
|
2588
2656
|
autoSizeColumns(columnIds) {
|
|
2589
2657
|
if (!this.agGridModulesAdapter.isAgGridModuleRegistered('ColumnAutoSizeModule')) {
|
|
2590
|
-
this.logger.consoleError(`
|
|
2658
|
+
this.logger.consoleError(`Auto-sizing columns [${columnIds}] requires the AG Grid "ColumnAutoSizeModule". Please register this module.`);
|
|
2591
2659
|
return;
|
|
2592
2660
|
}
|
|
2593
2661
|
this.layoutManager.autoSizeColumns(columnIds);
|
|
2594
2662
|
}
|
|
2595
2663
|
autoSizeAllColumns() {
|
|
2596
2664
|
if (!this.agGridModulesAdapter.isAgGridModuleRegistered('ColumnAutoSizeModule')) {
|
|
2597
|
-
this.logger.consoleError(
|
|
2665
|
+
this.logger.consoleError('Auto-sizing all columns requires the AG Grid "ColumnAutoSizeModule". Please register this module.');
|
|
2598
2666
|
return;
|
|
2599
2667
|
}
|
|
2600
2668
|
const agGridApi = this.agGridAdapter.getAgGridApi();
|
|
@@ -2752,7 +2820,7 @@ You need to define at least one Layout!`);
|
|
|
2752
2820
|
customInFilterValuesResult = await customInFilterValues(customInFilterValuesContext);
|
|
2753
2821
|
}
|
|
2754
2822
|
catch (error) {
|
|
2755
|
-
this.logger.consoleError(
|
|
2823
|
+
this.logger.consoleError('Failed to retrieve custom filter values.', column, error);
|
|
2756
2824
|
}
|
|
2757
2825
|
return customInFilterValuesResult;
|
|
2758
2826
|
}
|
|
@@ -2792,7 +2860,7 @@ You need to define at least one Layout!`);
|
|
|
2792
2860
|
customDistinctValues = await customEditColumnValues(customEditValuesContext);
|
|
2793
2861
|
}
|
|
2794
2862
|
catch (error) {
|
|
2795
|
-
this.logger.consoleError(
|
|
2863
|
+
this.logger.consoleError('Failed to retrieve custom edit values.', column, error);
|
|
2796
2864
|
}
|
|
2797
2865
|
return customDistinctValues ?? [];
|
|
2798
2866
|
}
|
|
@@ -3247,7 +3315,7 @@ You need to define at least one Layout!`);
|
|
|
3247
3315
|
if (this.getAgGridRowModelType() !== 'clientSide') {
|
|
3248
3316
|
// only in client-side row model can we loop through filtered&sorted rows
|
|
3249
3317
|
// see https://www.ag-grid.com/javascript-data-grid/accessing-data/#iterating-rows
|
|
3250
|
-
this.logger.warn('
|
|
3318
|
+
this.logger.warn('forAllVisibleRowNodesDo() is only supported with client-side row model. Falling back to forAllRowNodesDo().');
|
|
3251
3319
|
return this.forAllRowNodesDo(func, config);
|
|
3252
3320
|
}
|
|
3253
3321
|
this.agGridAdapter.getAgGridApi().forEachNodeAfterFilterAndSort((rowNode, rowIndex) => {
|
|
@@ -3299,14 +3367,14 @@ You need to define at least one Layout!`);
|
|
|
3299
3367
|
}
|
|
3300
3368
|
selectNode(rowNode, clearSelection) {
|
|
3301
3369
|
if (!rowNode) {
|
|
3302
|
-
this.logger.error('
|
|
3370
|
+
this.logger.error('Cannot select: row node is null.');
|
|
3303
3371
|
return;
|
|
3304
3372
|
}
|
|
3305
3373
|
rowNode.setSelected(true, clearSelection);
|
|
3306
3374
|
}
|
|
3307
3375
|
deSelectNode(rowNode, clearSelection) {
|
|
3308
3376
|
if (!rowNode) {
|
|
3309
|
-
this.logger.error('
|
|
3377
|
+
this.logger.error('Cannot deselect: row node is null.');
|
|
3310
3378
|
return;
|
|
3311
3379
|
}
|
|
3312
3380
|
rowNode.setSelected(false, clearSelection);
|
|
@@ -3394,7 +3462,7 @@ You need to define at least one Layout!`);
|
|
|
3394
3462
|
}
|
|
3395
3463
|
showChart(chartDefinition, container) {
|
|
3396
3464
|
if (!this.isReady) {
|
|
3397
|
-
this.logger.consoleError('
|
|
3465
|
+
this.logger.consoleError('Cannot call showChart before Adaptable is fully initialized.');
|
|
3398
3466
|
return null;
|
|
3399
3467
|
}
|
|
3400
3468
|
/**
|
|
@@ -3415,7 +3483,7 @@ You need to define at least one Layout!`);
|
|
|
3415
3483
|
}
|
|
3416
3484
|
updateChart(chart) {
|
|
3417
3485
|
if (!chart.Model) {
|
|
3418
|
-
this.logger.consoleError(`
|
|
3486
|
+
this.logger.consoleError(`Cannot update chart "${chart.Name}": the chart definition is missing the required Model property.`);
|
|
3419
3487
|
return;
|
|
3420
3488
|
}
|
|
3421
3489
|
const upgradableProperties = {
|
|
@@ -3441,7 +3509,7 @@ You need to define at least one Layout!`);
|
|
|
3441
3509
|
}
|
|
3442
3510
|
getChartModels() {
|
|
3443
3511
|
if (!this.isReady) {
|
|
3444
|
-
this.logger.consoleError('
|
|
3512
|
+
this.logger.consoleError('Cannot call getChartModels before Adaptable is fully initialized.');
|
|
3445
3513
|
return [];
|
|
3446
3514
|
}
|
|
3447
3515
|
return this.agGridAdapter.getAgGridApi().getChartModels();
|
|
@@ -3475,7 +3543,7 @@ You need to define at least one Layout!`);
|
|
|
3475
3543
|
}
|
|
3476
3544
|
setAgGridQuickSearch(searchText) {
|
|
3477
3545
|
if (!this.agGridModulesAdapter.isAgGridModuleRegistered('QuickFilterModule')) {
|
|
3478
|
-
this.logger.consoleError(
|
|
3546
|
+
this.logger.consoleError('Quick Search requires the AG Grid "QuickFilterModule". Please register this module to enable Quick Search.');
|
|
3479
3547
|
return;
|
|
3480
3548
|
}
|
|
3481
3549
|
this.agGridAdapter.setGridOption('quickFilterText', searchText);
|
|
@@ -3485,7 +3553,7 @@ You need to define at least one Layout!`);
|
|
|
3485
3553
|
}
|
|
3486
3554
|
setAgGridFindSearchValue(searchText) {
|
|
3487
3555
|
if (!this.agGridModulesAdapter.isAgGridModuleRegistered('FindModule')) {
|
|
3488
|
-
this.logger.consoleError(
|
|
3556
|
+
this.logger.consoleError('Find Search requires the AG Grid "FindModule". Please register this module to enable Find Search.');
|
|
3489
3557
|
return;
|
|
3490
3558
|
}
|
|
3491
3559
|
this.agGridAdapter.setGridOption('findSearchValue', searchText);
|
|
@@ -4014,7 +4082,7 @@ You need to define at least one Layout!`);
|
|
|
4014
4082
|
cellDataChangedInfos.forEach((cellDataChangedInfo) => {
|
|
4015
4083
|
// if a Cell Data Change is undone, log to the Console
|
|
4016
4084
|
if (cellDataChangedInfo.trigger === 'undo') {
|
|
4017
|
-
this.logger.info(`
|
|
4085
|
+
this.logger.info(`Data change reverted: column="${cellDataChangedInfo.column}", primaryKey="${cellDataChangedInfo.primaryKeyValue}", from=${cellDataChangedInfo.newValue} to=${cellDataChangedInfo.oldValue}`);
|
|
4018
4086
|
}
|
|
4019
4087
|
// For Changes except Aggregations, reset cell selection if required
|
|
4020
4088
|
if (cellDataChangedInfo.trigger === 'edit' ||
|
|
@@ -4219,7 +4287,7 @@ You need to define at least one Layout!`);
|
|
|
4219
4287
|
this.api.layoutApi.createOrUpdateLayout(layout);
|
|
4220
4288
|
}
|
|
4221
4289
|
refreshAdaptableAfterLayoutChange(layout) {
|
|
4222
|
-
this.logger.info('
|
|
4290
|
+
this.logger.info('Refreshing Adaptable after layout change.');
|
|
4223
4291
|
const prevLayoutForRefresh = this.__prevLayoutForRefresh || this.api.layoutApi.getCurrentLayout();
|
|
4224
4292
|
// see #on-regroup-expect-group-column-to-be-recomputed-and-setup-properly
|
|
4225
4293
|
const rowGroupsChanged = this.isRowGroupDifferentInLayout(prevLayoutForRefresh, layout);
|
|
@@ -4265,7 +4333,7 @@ You need to define at least one Layout!`);
|
|
|
4265
4333
|
.forEach((colType) => {
|
|
4266
4334
|
const newValidCellDataType = (0, VersionUpgrade20_1.mapOldTypeToDataType)(colType);
|
|
4267
4335
|
if (newValidCellDataType) {
|
|
4268
|
-
this.logger.consoleWarn(`Column ${columnDefinition.colId ?? columnDefinition.field}
|
|
4336
|
+
this.logger.consoleWarn(`Column "${columnDefinition.colId ?? columnDefinition.field}" uses deprecated type "${colType}"${newValidCellDataType !== 'unknown' ? `. Use colDef.cellDataType="${newValidCellDataType}" instead.` : '. This type is no longer supported.'}`);
|
|
4269
4337
|
}
|
|
4270
4338
|
});
|
|
4271
4339
|
});
|
|
@@ -149,7 +149,7 @@ class AgGridAdapter {
|
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
options['columnDefs'] = colDefsWithSpecialColumns;
|
|
152
|
-
self.logger.info(`Added
|
|
152
|
+
self.logger.info(`Added special columns on GridOptions.columnDefs update (source="${source}").`);
|
|
153
153
|
}
|
|
154
154
|
// `context`
|
|
155
155
|
const passedContext = options.context;
|
|
@@ -169,7 +169,7 @@ class AgGridAdapter {
|
|
|
169
169
|
}
|
|
170
170
|
const agGridColumnFilterService = this.DANGER_getPrivateAgGridBeans()?.colFilter;
|
|
171
171
|
if (!agGridColumnFilterService) {
|
|
172
|
-
this.logger.consoleError('
|
|
172
|
+
this.logger.consoleError('Failed to initialize ColumnFilterService. Filtering and related features will not function correctly.');
|
|
173
173
|
return;
|
|
174
174
|
}
|
|
175
175
|
const self = this;
|
|
@@ -215,7 +215,7 @@ class AgGridAdapter {
|
|
|
215
215
|
DANGER_getPrivateAgGridBeans() {
|
|
216
216
|
const beans = DANGER_AG_GRID_BEANS_MAP[this._agGridId];
|
|
217
217
|
if (!beans) {
|
|
218
|
-
this.logger.consoleError('
|
|
218
|
+
this.logger.consoleError('Failed to access AG Grid internal beans. Adaptable will not function correctly.');
|
|
219
219
|
}
|
|
220
220
|
return beans;
|
|
221
221
|
}
|
|
@@ -359,7 +359,7 @@ class AgGridAdapter {
|
|
|
359
359
|
if (isEndRowPin) {
|
|
360
360
|
shouldIncludeRange = false;
|
|
361
361
|
}
|
|
362
|
-
this.logger.consoleWarn('
|
|
362
|
+
this.logger.consoleWarn('Pinned rows cannot be selected in AG Grid.');
|
|
363
363
|
}
|
|
364
364
|
if (shouldIncludeRange) {
|
|
365
365
|
const y1 = Math.min(rangeSelection.startRow.rowIndex, rangeSelection.endRow.rowIndex);
|
|
@@ -529,7 +529,7 @@ class AgGridAdapter {
|
|
|
529
529
|
deriveAdaptableColumnDataType(agColumn, logWarning = true) {
|
|
530
530
|
// Some columns can have no ID or Title. we return string as a consequence but it needs testing
|
|
531
531
|
if (!agColumn) {
|
|
532
|
-
this.logger.warn(
|
|
532
|
+
this.logger.warn('Column is undefined. Defaulting data type to "text".');
|
|
533
533
|
return 'text';
|
|
534
534
|
}
|
|
535
535
|
if (this.adaptableApi.columnApi.isAutoRowGroupColumnForSingle(agColumn.getId())) {
|
|
@@ -572,7 +572,7 @@ class AgGridAdapter {
|
|
|
572
572
|
let row = this.getAgGridApi().getDisplayedRowAtIndex(0);
|
|
573
573
|
if (row == null) {
|
|
574
574
|
// possible that there will be no data.
|
|
575
|
-
this.logger.consoleError(`No data in grid
|
|
575
|
+
this.logger.consoleError(`No data in grid. Returning type "unknown" for column "${agColumn.getColId()}". This will affect features such as Filters and Column Formats.`);
|
|
576
576
|
return 'unknown';
|
|
577
577
|
}
|
|
578
578
|
// // if it's a group we need the content of the group
|
|
@@ -614,7 +614,7 @@ class AgGridAdapter {
|
|
|
614
614
|
dataType = arrayDataType;
|
|
615
615
|
}
|
|
616
616
|
}
|
|
617
|
-
this.logger.consoleWarn(`No
|
|
617
|
+
this.logger.consoleWarn(`No explicit type for column "${agColumn.getColId()}". Inferred type from first row value: "${dataType}".`);
|
|
618
618
|
return dataType;
|
|
619
619
|
}
|
|
620
620
|
isColumnReadonly(colDef) {
|
|
@@ -800,7 +800,7 @@ class AgGridAdapter {
|
|
|
800
800
|
colDef.colId = colDef.field;
|
|
801
801
|
}
|
|
802
802
|
if (!colDef.colId) {
|
|
803
|
-
this.logger.warn('
|
|
803
|
+
this.logger.warn('Column definition is missing colId. Provide either a "field" or "colId" property.', colDef);
|
|
804
804
|
}
|
|
805
805
|
};
|
|
806
806
|
this.patchColDefs(colDefs, assignColId);
|