@adaptabletools/adaptable 12.0.6 → 12.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle.cjs.js +96 -96
- package/package.json +1 -1
- package/publishTimestamp.d.ts +1 -1
- package/publishTimestamp.js +1 -1
- package/src/Api/EventApi.d.ts +13 -1
- package/src/Api/Events/AdaptableStateReloaded.d.ts +23 -0
- package/src/Api/Events/AdaptableStateReloaded.js +2 -0
- package/src/Api/GridApi.d.ts +2 -1
- package/src/Api/Implementation/ConfigApiImpl.js +11 -0
- package/src/Api/Implementation/GridApiImpl.d.ts +1 -1
- package/src/Api/Implementation/GridApiImpl.js +1 -1
- package/src/Api/Implementation/InternalApiImpl.js +3 -0
- package/src/PredefinedConfig/Common/CellSummary.d.ts +2 -6
- package/src/Redux/Store/AdaptableStore.js +1 -1
- package/src/Strategy/AdaptableModuleBase.d.ts +2 -0
- package/src/Strategy/AdaptableModuleBase.js +6 -0
- package/src/Strategy/AlertModule.js +2 -2
- package/src/Strategy/CalculatedColumnModule.d.ts +2 -0
- package/src/Strategy/CalculatedColumnModule.js +4 -0
- package/src/Strategy/CellSummaryModule.js +4 -3
- package/src/Strategy/FlashingCellModule.js +2 -2
- package/src/Strategy/TeamSharingModule.js +4 -2
- package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +10 -0
- package/src/Utilities/Services/CalculatedColumnExpressionService.js +26 -10
- package/src/Utilities/Services/ReportService.js +1 -1
- package/src/Utilities/Services/RowEditService.js +4 -1
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/AdaptableOptionsForm.d.ts +8 -0
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/{ConfigurationForm.js → AdaptableOptionsForm.js} +3 -39
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/ConfigurationWizard.js +27 -3
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/{ConfigurationForm.d.ts → EntitlementsForm.d.ts} +3 -3
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/EntitlementsForm.js +17 -0
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/GridOptionsForm.d.ts +8 -0
- package/src/View/AdaptableWizardView/AdaptableConfigurationDialog/GridOptionsForm.js +54 -0
- package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +0 -1
- package/src/agGrid/Adaptable.d.ts +1 -0
- package/src/agGrid/Adaptable.js +23 -8
- package/src/agGrid/agGridHelper.js +2 -2
- package/src/components/ExpressionEditor/BaseEditorInput.js +3 -0
- package/src/components/ExpressionEditor/index.js +2 -2
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const React = tslib_1.__importStar(require("react"));
|
|
5
|
+
const FormLayout_1 = tslib_1.__importStar(require("../../../components/FormLayout"));
|
|
6
|
+
const CheckBox_1 = require("../../../components/CheckBox");
|
|
7
|
+
const HelpBlock_1 = tslib_1.__importDefault(require("../../../components/HelpBlock"));
|
|
8
|
+
const DefaultAdaptableOptions_1 = require("../../../Utilities/Defaults/DefaultAdaptableOptions");
|
|
9
|
+
const GridOptionsForm = (props) => {
|
|
10
|
+
var _a;
|
|
11
|
+
let abOptions = props.adaptableOptions;
|
|
12
|
+
const gridOptions = Object.assign(Object.assign({}, DefaultAdaptableOptions_1.DefaultAdaptableOptions.gridOptions), abOptions.gridOptions);
|
|
13
|
+
return (React.createElement(React.Fragment, null,
|
|
14
|
+
React.createElement(HelpBlock_1.default, null, "Grid Options"),
|
|
15
|
+
React.createElement(FormLayout_1.default, { margin: 2, columns: [{ name: 'children' }, { name: 'label', style: { textAlign: 'start' } }] },
|
|
16
|
+
React.createElement(FormLayout_1.FormRow, { label: "Show ToolPanel" },
|
|
17
|
+
React.createElement(CheckBox_1.CheckBox, { checked: gridOptions.sideBar == true, onChange: (addSideBar) => {
|
|
18
|
+
abOptions = Object.assign({}, abOptions);
|
|
19
|
+
abOptions.gridOptions = Object.assign({}, abOptions.gridOptions);
|
|
20
|
+
abOptions.gridOptions.sideBar = addSideBar;
|
|
21
|
+
props.onChangeadaptableOptions(abOptions);
|
|
22
|
+
} })),
|
|
23
|
+
React.createElement(FormLayout_1.FormRow, { label: "Enable Range Selection" },
|
|
24
|
+
React.createElement(CheckBox_1.CheckBox, { checked: gridOptions.enableRangeSelection, onChange: (enableRangeSelection) => {
|
|
25
|
+
abOptions = Object.assign({}, abOptions);
|
|
26
|
+
abOptions.gridOptions = Object.assign({}, abOptions.gridOptions);
|
|
27
|
+
abOptions.gridOptions.enableRangeSelection = enableRangeSelection;
|
|
28
|
+
props.onChangeadaptableOptions(abOptions);
|
|
29
|
+
} })),
|
|
30
|
+
React.createElement(FormLayout_1.FormRow, { label: "Show Quick Filter" },
|
|
31
|
+
React.createElement(CheckBox_1.CheckBox, { checked: (_a = gridOptions.defaultColDef) === null || _a === void 0 ? void 0 : _a.floatingFilter, onChange: (floatingFilter) => {
|
|
32
|
+
abOptions = Object.assign({}, abOptions);
|
|
33
|
+
abOptions.gridOptions = Object.assign({}, abOptions.gridOptions);
|
|
34
|
+
abOptions.gridOptions.defaultColDef = {
|
|
35
|
+
floatingFilter,
|
|
36
|
+
};
|
|
37
|
+
props.onChangeadaptableOptions(abOptions);
|
|
38
|
+
} })),
|
|
39
|
+
React.createElement(FormLayout_1.FormRow, { label: "Suppress Column Virtualisation" },
|
|
40
|
+
React.createElement(CheckBox_1.CheckBox, { checked: gridOptions.suppressColumnVirtualisation, onChange: (suppressColumnVirtualisation) => {
|
|
41
|
+
abOptions = Object.assign({}, abOptions);
|
|
42
|
+
abOptions.gridOptions = Object.assign({}, abOptions.gridOptions);
|
|
43
|
+
abOptions.gridOptions.suppressColumnVirtualisation = suppressColumnVirtualisation;
|
|
44
|
+
props.onChangeadaptableOptions(abOptions);
|
|
45
|
+
} })),
|
|
46
|
+
React.createElement(FormLayout_1.FormRow, { label: "Show Column Menu Button" },
|
|
47
|
+
React.createElement(CheckBox_1.CheckBox, { checked: gridOptions.suppressMenuHide, onChange: (suppressMenuHide) => {
|
|
48
|
+
abOptions = Object.assign({}, abOptions);
|
|
49
|
+
abOptions.gridOptions = Object.assign({}, abOptions.gridOptions);
|
|
50
|
+
abOptions.gridOptions.suppressMenuHide = suppressMenuHide;
|
|
51
|
+
props.onChangeadaptableOptions(abOptions);
|
|
52
|
+
} })))));
|
|
53
|
+
};
|
|
54
|
+
exports.default = GridOptionsForm;
|
|
@@ -324,7 +324,6 @@ const renderStringFormat = (data, _onChange, setFormatOption, scopedCustomFormat
|
|
|
324
324
|
if (data.DisplayFormat.Formatter !== 'StringFormatter') {
|
|
325
325
|
return null;
|
|
326
326
|
}
|
|
327
|
-
console.log('formatters', scopedCustomFormatters);
|
|
328
327
|
return (React.createElement(rebass_1.Box, { "data-name": 'format-column-display-format', padding: 2 },
|
|
329
328
|
React.createElement(Tabs_1.Tabs, null,
|
|
330
329
|
React.createElement(Tabs_1.Tabs.Tab, null, "Format"),
|
|
@@ -95,6 +95,7 @@ export declare class Adaptable implements IAdaptable {
|
|
|
95
95
|
private listenerGlobalSetRowSelection;
|
|
96
96
|
private listenerGlobalColumnEventsThatTriggerStateChange;
|
|
97
97
|
private listenerGlobalColumnEventsThatTriggerAutoLayoutSave;
|
|
98
|
+
private listenerGlobalRowGroupEventsThatTriggerAutoLayoutSave;
|
|
98
99
|
static init(adaptableOptions: AdaptableOptions): Promise<AdaptableApi>;
|
|
99
100
|
/**
|
|
100
101
|
* Lazy static constructor for Adaptable
|
package/src/agGrid/Adaptable.js
CHANGED
|
@@ -1394,13 +1394,6 @@ class Adaptable {
|
|
|
1394
1394
|
shouldUpdateHeaders = this.setupColumnHeader(colSetupInfo) || shouldUpdateHeaders;
|
|
1395
1395
|
});
|
|
1396
1396
|
isChanged = isChanged || shouldUpdateHeaders;
|
|
1397
|
-
if (this.api.layoutApi.areExpandedRowGroupsSavedInLayouts() &&
|
|
1398
|
-
ArrayExtensions_1.ArrayExtensions.IsNotNullOrEmpty(layout.ExpandedRowGroupValues)) {
|
|
1399
|
-
this.expandRowGroupsForValues(layout.ExpandedRowGroupValues);
|
|
1400
|
-
}
|
|
1401
|
-
if (this.adaptableOptions.layoutOptions.displayRowGroups === 'expanded') {
|
|
1402
|
-
this.expandAllRowGroups();
|
|
1403
|
-
}
|
|
1404
1397
|
if (isChanged) {
|
|
1405
1398
|
// it's important we set pivot mode
|
|
1406
1399
|
// before we set column state
|
|
@@ -1421,6 +1414,15 @@ class Adaptable {
|
|
|
1421
1414
|
// so we figured out the following line fixes the issue
|
|
1422
1415
|
// this.gridOptions.api.setColumnDefs(this.gridOptions.api.getColumnDefs()); //TODO find a solution for weighted averages - column floating filters are not showing
|
|
1423
1416
|
GridApi_setColumnDefs.call(this.gridOptions.api, this.gridOptions.api.getColumnDefs());
|
|
1417
|
+
// these updates need to be at the end, the methods are based on the grid state/col defs
|
|
1418
|
+
// the layout needs to be applied for them to work
|
|
1419
|
+
if (this.api.layoutApi.areExpandedRowGroupsSavedInLayouts() &&
|
|
1420
|
+
ArrayExtensions_1.ArrayExtensions.IsNotNullOrEmpty(layout.ExpandedRowGroupValues)) {
|
|
1421
|
+
this.expandRowGroupsForValues(layout.ExpandedRowGroupValues);
|
|
1422
|
+
}
|
|
1423
|
+
if (this.adaptableOptions.layoutOptions.displayRowGroups === 'expanded') {
|
|
1424
|
+
this.expandAllRowGroups();
|
|
1425
|
+
}
|
|
1424
1426
|
// this.updateColumnsIntoStore();// no longer needed
|
|
1425
1427
|
}
|
|
1426
1428
|
const colsToAutoSizeArray = Object.keys(colsToAutoSize);
|
|
@@ -2513,6 +2515,7 @@ class Adaptable {
|
|
|
2513
2515
|
this.gridOptions.api.removeGlobalListener(this.listenerGlobalSetRowSelection);
|
|
2514
2516
|
this.gridOptions.api.removeGlobalListener(this.listenerGlobalColumnEventsThatTriggerStateChange);
|
|
2515
2517
|
this.gridOptions.api.removeGlobalListener(this.listenerGlobalColumnEventsThatTriggerAutoLayoutSave);
|
|
2518
|
+
this.gridOptions.api.removeGlobalListener(this.listenerGlobalRowGroupEventsThatTriggerAutoLayoutSave);
|
|
2516
2519
|
this.listenerFirstDataRendered = null;
|
|
2517
2520
|
this.listenerPivotModeChanged = null;
|
|
2518
2521
|
this.listenerPivotChanged = null;
|
|
@@ -2524,6 +2527,7 @@ class Adaptable {
|
|
|
2524
2527
|
this.listenerModelUpdated = null;
|
|
2525
2528
|
this.listenerGlobalColumnEventsThatTriggerStateChange = null;
|
|
2526
2529
|
this.listenerGlobalColumnEventsThatTriggerAutoLayoutSave = null;
|
|
2530
|
+
this.listenerGlobalRowGroupEventsThatTriggerAutoLayoutSave = null;
|
|
2527
2531
|
this.gridOptions.api.__adaptable = null;
|
|
2528
2532
|
this.gridOptions.api.setColumnDefs = GridApi_setColumnDefs;
|
|
2529
2533
|
this.gridOptions.getRowStyle = null;
|
|
@@ -2757,7 +2761,6 @@ class Adaptable {
|
|
|
2757
2761
|
all_modules_1.Events.EVENT_DISPLAYED_COLUMNS_CHANGED,
|
|
2758
2762
|
all_modules_1.Events.EVENT_SORT_CHANGED,
|
|
2759
2763
|
all_modules_1.Events.EVENT_COLUMN_ROW_GROUP_CHANGED,
|
|
2760
|
-
all_modules_1.Events.EVENT_ROW_GROUP_OPENED,
|
|
2761
2764
|
all_modules_1.Events.EVENT_COLUMN_VALUE_CHANGED,
|
|
2762
2765
|
];
|
|
2763
2766
|
// ADD filter event
|
|
@@ -2766,6 +2769,18 @@ class Adaptable {
|
|
|
2766
2769
|
this.debouncedSaveGridLayout();
|
|
2767
2770
|
}
|
|
2768
2771
|
}));
|
|
2772
|
+
// Save Layout if Display Row Groups is "dynamic"
|
|
2773
|
+
const rowGroupEventsThatTriggersAutoLayoutSave = [
|
|
2774
|
+
all_modules_1.Events.EVENT_ROW_GROUP_OPENED,
|
|
2775
|
+
all_modules_1.Events.EVENT_EXPAND_COLLAPSE_ALL,
|
|
2776
|
+
];
|
|
2777
|
+
this.gridOptions.api.addGlobalListener((this.listenerGlobalRowGroupEventsThatTriggerAutoLayoutSave = (type) => {
|
|
2778
|
+
if (rowGroupEventsThatTriggersAutoLayoutSave.indexOf(type) > -1) {
|
|
2779
|
+
if (this.adaptableOptions.layoutOptions.displayRowGroups == 'dynamic') {
|
|
2780
|
+
this.debouncedSaveGridLayout();
|
|
2781
|
+
}
|
|
2782
|
+
}
|
|
2783
|
+
}));
|
|
2769
2784
|
/**
|
|
2770
2785
|
* Use Case: A visible Column has become row grouped and 'hideColumnWhenGrouped' is true
|
|
2771
2786
|
* Action: Make the column invisible
|
|
@@ -162,9 +162,9 @@ class agGridHelper {
|
|
|
162
162
|
const customFriendlyName = typeof columnFriendlyName === 'function'
|
|
163
163
|
? columnFriendlyName({ colId: colId, agColumn: agGridColumn })
|
|
164
164
|
: null;
|
|
165
|
-
const FriendlyName =
|
|
165
|
+
const FriendlyName = customFriendlyName !== null && customFriendlyName !== void 0 ? customFriendlyName : (isActionRowButtonColumn
|
|
166
166
|
? GeneralConstants_1.ADAPTABLE_ROW_ACTION_BUTTONS_FRIENDLY_NAME
|
|
167
|
-
: this.gridOptions.columnApi.getDisplayNameForColumn(agGridColumn, 'header');
|
|
167
|
+
: this.gridOptions.columnApi.getDisplayNameForColumn(agGridColumn, 'header'));
|
|
168
168
|
if (!this.initialAgGridColDefs[colId]) {
|
|
169
169
|
this.initialAgGridColDefs[colId] = Object.assign({}, agGridColumn.getUserProvidedColDef());
|
|
170
170
|
}
|
|
@@ -40,6 +40,9 @@ function BaseEditorInput(props) {
|
|
|
40
40
|
};
|
|
41
41
|
const testRowNode = react_1.useMemo(() => {
|
|
42
42
|
const firstRowNode = props.api.gridApi.getFirstRowNode();
|
|
43
|
+
if (!firstRowNode || !firstRowNode.data) {
|
|
44
|
+
return {};
|
|
45
|
+
}
|
|
43
46
|
// clone the class instance to still keep the prototype methods
|
|
44
47
|
return Object.assign(Object.create(Object.getPrototypeOf(firstRowNode)), firstRowNode);
|
|
45
48
|
}, []);
|
|
@@ -112,9 +112,9 @@ function ExpressionEditor(props) {
|
|
|
112
112
|
cursor: 'grab',
|
|
113
113
|
marginRight: 'var(--ab-space-1)',
|
|
114
114
|
}, data: `[${column.columnId}]`, "data-name": "column", icon: "drag" },
|
|
115
|
-
React.createElement(rebass_1.Flex, { flexDirection: "column", alignItems: "start" }, showColumnIds ? `[${column.columnId}]` : column.friendlyName)) }, column.dataType === 'Number' ? (React.createElement(Input_1.default, { type: "number", "data-name": "column-input", value: getColValue(column), onChange: (e) => setData(updateColValue(data, column, Number(e.target.value))), width: "100%", disabled: column.readOnly })) : column.dataType === 'String' ? (React.createElement(Input_1.default, { type: "text", "data-name": "column-input", value: getColValue(column), onChange: (e) => setData(updateColValue(data, column, e.target.value)), width: "100%", disabled: column.readOnly })) : column.dataType === 'Date' ? (React.createElement(AdaptableInput_1.default, { type: "date", "data-name": "column-input", value: getColDateValue(column), onChange: (e) => {
|
|
115
|
+
React.createElement(rebass_1.Flex, { flexDirection: "column", alignItems: "start" }, showColumnIds ? `[${column.columnId}]` : column.friendlyName)) }, column.dataType === 'Number' ? (React.createElement(Input_1.default, { type: "number", "data-name": "column-input", "data-value": column.columnId, value: getColValue(column), onChange: (e) => setData(updateColValue(data, column, Number(e.target.value))), width: "100%", disabled: column.readOnly })) : column.dataType === 'String' ? (React.createElement(Input_1.default, { type: "text", "data-name": "column-input", "data-value": column.columnId, value: getColValue(column), onChange: (e) => setData(updateColValue(data, column, e.target.value)), width: "100%", disabled: column.readOnly })) : column.dataType === 'Date' ? (React.createElement(AdaptableInput_1.default, { type: "date", "data-name": "column-input", "data-value": column.columnId, value: getColDateValue(column), onChange: (e) => {
|
|
116
116
|
setData(updateColValue(data, column, new Date(e.target.value)));
|
|
117
|
-
}, style: { width: '100%' }, disabled: column.readOnly })) : column.dataType === 'Boolean' ? (React.createElement(CheckBox_1.CheckBox, { "data-name": "column-input", checked: getColValue(column), onChange: (checked) => setData(updateColValue(data, column, checked)), disabled: column.readOnly })) : null))))));
|
|
117
|
+
}, style: { width: '100%' }, disabled: column.readOnly })) : column.dataType === 'Boolean' ? (React.createElement(CheckBox_1.CheckBox, { "data-name": "column-input", "data-value": column.columnId, checked: getColValue(column), onChange: (checked) => setData(updateColValue(data, column, checked)), disabled: column.readOnly })) : null))))));
|
|
118
118
|
const namedQueries = (React.createElement("div", null, props.namedQueries.map((namedQuery) => (React.createElement(rebass_1.Flex, { key: namedQuery.Uuid, flexDirection: "column", alignItems: "start", style: {
|
|
119
119
|
padding: 3,
|
|
120
120
|
marginTop: 'var(--ab-space-2)',
|