@adaptabletools/adaptable 13.0.0-canary.3 → 13.0.0-canary.5
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 +132 -132
- package/package.json +1 -1
- package/publishTimestamp.d.ts +1 -1
- package/publishTimestamp.js +1 -1
- package/src/AdaptableOptions/GeneralOptions.d.ts +6 -0
- package/src/Api/FormatColumnApi.d.ts +5 -0
- package/src/Api/Implementation/ColumnApiImpl.js +3 -3
- package/src/Api/Implementation/FormatColumnApiImpl.d.ts +1 -0
- package/src/Api/Implementation/FormatColumnApiImpl.js +3 -0
- package/src/Api/Implementation/InternalApiImpl.d.ts +1 -0
- package/src/Api/Implementation/InternalApiImpl.js +4 -0
- package/src/Api/Implementation/ToolPanelApiImpl.d.ts +3 -1
- package/src/Api/Implementation/ToolPanelApiImpl.js +8 -0
- package/src/Api/InternalApi.d.ts +1 -0
- package/src/Api/ToolPanelApi.d.ts +10 -1
- package/src/Strategy/ConditionalStyleModule.d.ts +2 -0
- package/src/Strategy/ConditionalStyleModule.js +6 -0
- package/src/Strategy/FormatColumnModule.d.ts +2 -0
- package/src/Strategy/FormatColumnModule.js +46 -0
- package/src/Strategy/Interface/IModule.d.ts +1 -0
- package/src/Utilities/Defaults/DefaultAdaptableOptions.js +1 -0
- package/src/View/Components/EntityRulesEditor/index.d.ts +2 -1
- package/src/View/Components/EntityRulesEditor/index.js +29 -19
- package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +1 -0
- package/src/View/ConditionalStyle/ConditionalStylePopupHeader.d.ts +2 -0
- package/src/View/ConditionalStyle/ConditionalStylePopupHeader.js +18 -0
- package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +1 -1
- package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.d.ts +0 -1
- package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +18 -55
- package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +1 -2
- package/src/agGrid/Adaptable.js +7 -5
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adaptabletools/adaptable",
|
|
3
|
-
"version": "13.0.0-canary.
|
|
3
|
+
"version": "13.0.0-canary.5",
|
|
4
4
|
"description": "Powerful data-agnostic HTML5 datagrid add-on that sits on top of an underlying grid component and provides all the rich functionality that advanced users expect from their DataGrids and Data Tables",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"web-components",
|
package/publishTimestamp.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default:
|
|
1
|
+
declare const _default: 1663264208160;
|
|
2
2
|
export default _default;
|
package/publishTimestamp.js
CHANGED
|
@@ -65,6 +65,12 @@ export interface GeneralOptions {
|
|
|
65
65
|
* Value to use for 'Unbalanced Groups' (string columns)
|
|
66
66
|
*/
|
|
67
67
|
unbalancedGroupsKey?: string | ((context: UnbalancedGroupsKeyContext) => string);
|
|
68
|
+
/**
|
|
69
|
+
* Starting with v13, ConditionalStyle module is deprecated, and it's functionality is merged into the FormatColumn module. By default, all existing conditional styles are migrated to format columns. By setting this property to TRUE, the conditional styles are not migrated.
|
|
70
|
+
*
|
|
71
|
+
* @defaultValue false
|
|
72
|
+
*/
|
|
73
|
+
keepDeprecatedConditionalStyles?: boolean;
|
|
68
74
|
}
|
|
69
75
|
/**
|
|
70
76
|
* Comparer object for Column Values - used for custom sorting
|
|
@@ -245,4 +245,9 @@ export interface FormatColumnApi {
|
|
|
245
245
|
node: RowNode;
|
|
246
246
|
value: any;
|
|
247
247
|
}): boolean;
|
|
248
|
+
/**
|
|
249
|
+
* Retrieves all Format Columns which have an Expression
|
|
250
|
+
* @returns Format Columns with Expression
|
|
251
|
+
*/
|
|
252
|
+
getFormatColumnsWithExpression(): FormatColumn[] | undefined;
|
|
248
253
|
}
|
|
@@ -89,13 +89,13 @@ class ColumnApiImpl extends ApiBase_1.ApiBase {
|
|
|
89
89
|
return false;
|
|
90
90
|
}
|
|
91
91
|
isNumericColumn(column) {
|
|
92
|
-
return column.dataType == 'Number';
|
|
92
|
+
return (column === null || column === void 0 ? void 0 : column.dataType) == 'Number';
|
|
93
93
|
}
|
|
94
94
|
isBooleanColumn(column) {
|
|
95
|
-
return column.dataType == 'Boolean';
|
|
95
|
+
return (column === null || column === void 0 ? void 0 : column.dataType) == 'Boolean';
|
|
96
96
|
}
|
|
97
97
|
isDateColumn(column) {
|
|
98
|
-
return column.dataType == 'Date';
|
|
98
|
+
return (column === null || column === void 0 ? void 0 : column.dataType) == 'Date';
|
|
99
99
|
}
|
|
100
100
|
getColumnDataTypeFromColumnId(columnId) {
|
|
101
101
|
const column = this.getColumnFromId(columnId); // this.getColumns().find(c => c.ColumnId == columnId);
|
|
@@ -435,5 +435,8 @@ class FormatColumnApiImpl extends ApiBase_1.ApiBase {
|
|
|
435
435
|
.getQueryLanguageService()
|
|
436
436
|
.evaluateBooleanExpression(formatColumn.Rule.BooleanExpression, ModuleConstants.FormatColumnModuleId, node));
|
|
437
437
|
}
|
|
438
|
+
getFormatColumnsWithExpression() {
|
|
439
|
+
return this.getAllFormatColumn().filter((fc) => { var _a; return !!((_a = fc.Rule) === null || _a === void 0 ? void 0 : _a.BooleanExpression); });
|
|
440
|
+
}
|
|
438
441
|
}
|
|
439
442
|
exports.FormatColumnApiImpl = FormatColumnApiImpl;
|
|
@@ -142,4 +142,5 @@ export declare class InternalApiImpl extends ApiBase implements InternalApi {
|
|
|
142
142
|
getValueForTag(adaptableObjectTag: AdaptableObjectTag): string | number;
|
|
143
143
|
getEditLookUpValuesForColumn(editLookUpItem: EditLookUpPermittedValues, column: AdaptableColumn, gridCell?: GridCell): any[] | undefined;
|
|
144
144
|
getAdaptableQueryExpressionText(query: Partial<AdaptableQuery>): string;
|
|
145
|
+
shouldKeepDeprecatedConditionalStyles(): boolean;
|
|
145
146
|
}
|
|
@@ -650,5 +650,9 @@ class InternalApiImpl extends ApiBase_1.ApiBase {
|
|
|
650
650
|
? this.adaptable.api.queryLanguageApi.getAdaptableQueryExpressionWithColumnFriendlyNames(query)
|
|
651
651
|
: this.adaptable.api.queryLanguageApi.getAdaptableQueryExpression(query);
|
|
652
652
|
}
|
|
653
|
+
shouldKeepDeprecatedConditionalStyles() {
|
|
654
|
+
var _a, _b;
|
|
655
|
+
return (_b = (_a = this.getOptions()) === null || _a === void 0 ? void 0 : _a.generalOptions) === null || _b === void 0 ? void 0 : _b.keepDeprecatedConditionalStyles;
|
|
656
|
+
}
|
|
653
657
|
}
|
|
654
658
|
exports.InternalApiImpl = InternalApiImpl;
|
|
@@ -3,7 +3,7 @@ import { ToolPanelApi } from '../ToolPanelApi';
|
|
|
3
3
|
import { ToolPanelState, ToolPanelVisibilityMode } from '../../PredefinedConfig/ToolPanelState';
|
|
4
4
|
import { CustomToolPanel, ToolPanelButtonContext } from '../../AdaptableOptions/ToolPanelOptions';
|
|
5
5
|
import { AdaptableButton } from '../../PredefinedConfig/Common/AdaptableButton';
|
|
6
|
-
import { AdaptableToolPanel } from '../../PredefinedConfig/Common/Types';
|
|
6
|
+
import { AdaptableModuleButtons, AdaptableToolPanel } from '../../PredefinedConfig/Common/Types';
|
|
7
7
|
export declare class ToolPanelApiImpl extends ApiBase implements ToolPanelApi {
|
|
8
8
|
getToolPanelState(): ToolPanelState;
|
|
9
9
|
showToolPanelPopup(): void;
|
|
@@ -14,6 +14,8 @@ export declare class ToolPanelApiImpl extends ApiBase implements ToolPanelApi {
|
|
|
14
14
|
getCustomToolPanelByName(name: string): CustomToolPanel | undefined;
|
|
15
15
|
setAdaptableToolPanelVisibilityMode(adaptableToolPanel: AdaptableToolPanel, visibilityMode: ToolPanelVisibilityMode): void;
|
|
16
16
|
setCustomToolPanelVisibilityMode(customToolPanelName: string, visibilityMode: ToolPanelVisibilityMode): void;
|
|
17
|
+
setModuleButtons(moduleButtons: AdaptableModuleButtons): void;
|
|
18
|
+
getModuleButtons(): AdaptableModuleButtons;
|
|
17
19
|
private setExpandedToolPanelVisibility;
|
|
18
20
|
private setCollapsedToolPanelVisibility;
|
|
19
21
|
}
|
|
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const ApiBase_1 = require("./ApiBase");
|
|
6
6
|
const ModuleConstants = tslib_1.__importStar(require("../../Utilities/Constants/ModuleConstants"));
|
|
7
7
|
const ToolPanelRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/ToolPanelRedux"));
|
|
8
|
+
const ToolPanelRedux_1 = require("../../Redux/ActionsReducers/ToolPanelRedux");
|
|
8
9
|
class ToolPanelApiImpl extends ApiBase_1.ApiBase {
|
|
9
10
|
getToolPanelState() {
|
|
10
11
|
return this.getAdaptableState().ToolPanel;
|
|
@@ -51,6 +52,13 @@ class ToolPanelApiImpl extends ApiBase_1.ApiBase {
|
|
|
51
52
|
this.setCollapsedToolPanelVisibility(customToolPanelName);
|
|
52
53
|
}
|
|
53
54
|
}
|
|
55
|
+
setModuleButtons(moduleButtons) {
|
|
56
|
+
this.dispatchAction((0, ToolPanelRedux_1.ToolPanelSetModuleButtons)(moduleButtons));
|
|
57
|
+
}
|
|
58
|
+
getModuleButtons() {
|
|
59
|
+
var _a, _b;
|
|
60
|
+
return (_b = (_a = this.getToolPanelState()) === null || _a === void 0 ? void 0 : _a.ModuleButtons) !== null && _b !== void 0 ? _b : [];
|
|
61
|
+
}
|
|
54
62
|
setExpandedToolPanelVisibility(toolPanelName) {
|
|
55
63
|
this.dispatchAction(ToolPanelRedux.ToolPanelExpandToolPanel(toolPanelName));
|
|
56
64
|
}
|
package/src/Api/InternalApi.d.ts
CHANGED
|
@@ -144,4 +144,5 @@ export interface InternalApi {
|
|
|
144
144
|
getValueForTag(adaptableObjectTag: AdaptableObjectTag): string | number;
|
|
145
145
|
getEditLookUpValuesForColumn(editLookUpItem: EditLookUpPermittedValues, column: AdaptableColumn, gridCell?: GridCell): any[] | undefined;
|
|
146
146
|
getAdaptableQueryExpressionText(query: Partial<AdaptableQuery>): string;
|
|
147
|
+
shouldKeepDeprecatedConditionalStyles(): boolean;
|
|
147
148
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ToolPanelState, ToolPanelVisibilityMode } from '../PredefinedConfig/ToolPanelState';
|
|
2
2
|
import { CustomToolPanel, ToolPanelButtonContext } from '../AdaptableOptions/ToolPanelOptions';
|
|
3
3
|
import { AdaptableButton } from '../PredefinedConfig/Common/AdaptableButton';
|
|
4
|
-
import { AdaptableToolPanel } from '../PredefinedConfig/Common/Types';
|
|
4
|
+
import { AdaptableModuleButtons, AdaptableToolPanel } from '../PredefinedConfig/Common/Types';
|
|
5
5
|
/**
|
|
6
6
|
* Functions for managing the AdapTable ToolPanel Component (at side of grid)
|
|
7
7
|
*/
|
|
@@ -47,4 +47,13 @@ export interface ToolPanelApi {
|
|
|
47
47
|
* @param visibilityMode
|
|
48
48
|
*/
|
|
49
49
|
setCustomToolPanelVisibilityMode(customToolPanelName: string, visibilityMode: ToolPanelVisibilityMode): void;
|
|
50
|
+
/**
|
|
51
|
+
* Sets the Module buttons in the Adaptable ToolPanel
|
|
52
|
+
* @param moduleButtons the module buttons
|
|
53
|
+
*/
|
|
54
|
+
setModuleButtons(moduleButtons: AdaptableModuleButtons): void;
|
|
55
|
+
/**
|
|
56
|
+
* Sets the Module buttons from the Adaptable ToolPanel
|
|
57
|
+
*/
|
|
58
|
+
getModuleButtons(): AdaptableModuleButtons;
|
|
50
59
|
}
|
|
@@ -7,8 +7,10 @@ import { AdaptableModuleBase } from './AdaptableModuleBase';
|
|
|
7
7
|
import { IConditionalStyleModule } from './Interface/IConditionalStyleModule';
|
|
8
8
|
import { AdaptableObject } from '../PredefinedConfig/Common/AdaptableObject';
|
|
9
9
|
import { AdaptableModuleView, AdaptableObjectView } from './Interface/IModule';
|
|
10
|
+
import { AccessLevel } from '../types';
|
|
10
11
|
export declare class ConditionalStyleModule extends AdaptableModuleBase implements IConditionalStyleModule {
|
|
11
12
|
constructor(api: AdaptableApi);
|
|
13
|
+
getViewAccessLevel(): AccessLevel;
|
|
12
14
|
getModuleAdaptableObjects(config?: {
|
|
13
15
|
includeLayoutNotAssociatedObjects?: boolean;
|
|
14
16
|
}): AdaptableObject[];
|
|
@@ -13,10 +13,15 @@ const ConditionalStyleWizard_1 = require("../View/ConditionalStyle/Wizard/Condit
|
|
|
13
13
|
const getRuleViewItems_1 = require("./Utilities/getRuleViewItems");
|
|
14
14
|
const getStyleViewItems_1 = require("./Utilities/getStyleViewItems");
|
|
15
15
|
const getObjectTagsViewItems_1 = require("./Utilities/getObjectTagsViewItems");
|
|
16
|
+
const ConditionalStylePopupHeader_1 = require("../View/ConditionalStyle/ConditionalStylePopupHeader");
|
|
16
17
|
class ConditionalStyleModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
17
18
|
constructor(api) {
|
|
18
19
|
super(ModuleConstants.ConditionalStyleModuleId, ModuleConstants.ConditionalStyleFriendlyName, 'conditional-style', 'ConditionalStylePopup', 'Style columns and rows dynamically based on rules and cell values', api);
|
|
19
20
|
}
|
|
21
|
+
getViewAccessLevel() {
|
|
22
|
+
const keepDeprecatedConditionalStyles = this.api.internalApi.shouldKeepDeprecatedConditionalStyles();
|
|
23
|
+
return keepDeprecatedConditionalStyles ? super.getViewAccessLevel() : 'Hidden';
|
|
24
|
+
}
|
|
20
25
|
getModuleAdaptableObjects(config) {
|
|
21
26
|
return this.api.conditionalStyleApi.getAllConditionalStyle(config);
|
|
22
27
|
}
|
|
@@ -209,6 +214,7 @@ class ConditionalStyleModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
209
214
|
}
|
|
210
215
|
getViewProperties() {
|
|
211
216
|
return {
|
|
217
|
+
HeaderComponent: ConditionalStylePopupHeader_1.ConditionalStylePopupHeader,
|
|
212
218
|
getDeleteAction: (conditionalStyle) => ConditionalStyleRedux.ConditionalStyleDelete(conditionalStyle),
|
|
213
219
|
getSuspendAction: (conditionalStyle) => ConditionalStyleRedux.ConditionalStyleSuspend(conditionalStyle),
|
|
214
220
|
getUnSuspendAction: (conditionalStyle) => ConditionalStyleRedux.ConditionalStyleUnSuspend(conditionalStyle),
|
|
@@ -14,6 +14,8 @@ export declare class FormatColumnModule extends AdaptableModuleBase implements I
|
|
|
14
14
|
getExplicitlyReferencedColumnIds(formatColumn: FormatColumn): string[];
|
|
15
15
|
hasNamedQueryReferences(): boolean;
|
|
16
16
|
updateOldConfig(): void;
|
|
17
|
+
private updateConditionalStylesColumnsOldConfig;
|
|
18
|
+
private updateGradientColumnsOldConfig;
|
|
17
19
|
private getExistingFormatColumn;
|
|
18
20
|
addColumnMenuItems(column: AdaptableColumn): AdaptableMenuItem[] | undefined;
|
|
19
21
|
getTeamSharingAction(): TeamSharingImportInfo<FormatColumn>;
|
|
@@ -62,6 +62,52 @@ class FormatColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
62
62
|
.FormatColumn) === null || _a === void 0 ? void 0 : _a.FormatColumns) === null || _b === void 0 ? void 0 : _b.some((formatColumn) => !!formatColumn.HeaderName)) {
|
|
63
63
|
(0, LoggingHelper_1.ConsoleLogWarning)(`DEPRECATED: The 'FormatColumn.HeaderName' property is deprecated; use a Layout custom Column Header instead!`);
|
|
64
64
|
}
|
|
65
|
+
this.updateGradientColumnsOldConfig();
|
|
66
|
+
const keepDeprecatedConditionalStyles = this.api.internalApi.shouldKeepDeprecatedConditionalStyles();
|
|
67
|
+
if (!keepDeprecatedConditionalStyles) {
|
|
68
|
+
this.updateConditionalStylesColumnsOldConfig();
|
|
69
|
+
// update ConditionalStyle StatusBarPanel
|
|
70
|
+
const oldStatusBars = this.api.internalApi.getState().StatusBar.StatusBars;
|
|
71
|
+
let replaceConditionalStyleStatusBar = false;
|
|
72
|
+
const newStatusBars = oldStatusBars.map((statusBar) => (Object.assign(Object.assign({}, statusBar), { StatusBarPanels: [
|
|
73
|
+
...new Set(statusBar.StatusBarPanels.map((statusBarPanel) => {
|
|
74
|
+
if (statusBarPanel === 'ConditionalStyle') {
|
|
75
|
+
replaceConditionalStyleStatusBar = true;
|
|
76
|
+
return 'FormatColumn';
|
|
77
|
+
}
|
|
78
|
+
return statusBarPanel;
|
|
79
|
+
})),
|
|
80
|
+
] })));
|
|
81
|
+
if (replaceConditionalStyleStatusBar) {
|
|
82
|
+
this.api.statusBarApi.setStatusBarPanels(newStatusBars);
|
|
83
|
+
}
|
|
84
|
+
// update ConditionalStyle dashboard buttons
|
|
85
|
+
const dashboardModuleButtons = this.api.internalApi.getState().Dashboard.ModuleButtons;
|
|
86
|
+
if (dashboardModuleButtons.includes('ConditionalStyle')) {
|
|
87
|
+
dashboardModuleButtons[dashboardModuleButtons.indexOf('ConditionalStyle')] = 'FormatColumn';
|
|
88
|
+
this.api.dashboardApi.setModuleButtons([...new Set(dashboardModuleButtons)]);
|
|
89
|
+
}
|
|
90
|
+
// update ConditionalStyle toolPanel buttons
|
|
91
|
+
const toolPanelModuleButtons = this.api.internalApi.getState().ToolPanel.ModuleButtons;
|
|
92
|
+
if (toolPanelModuleButtons.includes('ConditionalStyle')) {
|
|
93
|
+
toolPanelModuleButtons[toolPanelModuleButtons.indexOf('ConditionalStyle')] = 'FormatColumn';
|
|
94
|
+
this.api.toolPanelApi.setModuleButtons([...new Set(dashboardModuleButtons)]);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
updateConditionalStylesColumnsOldConfig() {
|
|
99
|
+
var _a;
|
|
100
|
+
const oldConditionalStyles = (_a = this.api.internalApi.getState().ConditionalStyle) === null || _a === void 0 ? void 0 : _a.ConditionalStyles;
|
|
101
|
+
if (!(oldConditionalStyles === null || oldConditionalStyles === void 0 ? void 0 : oldConditionalStyles.length)) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
(0, LoggingHelper_1.ConsoleLogWarning)(`DEPRECATED: The 'ConditionalStyle.ConditionalStyles' property is deprecated; use 'FormatColumn' instead!`);
|
|
105
|
+
// remove conditional styles
|
|
106
|
+
this.api.conditionalStyleApi.deleteConditionalStyles(oldConditionalStyles);
|
|
107
|
+
// add as format column
|
|
108
|
+
this.api.formatColumnApi.addFormatColumns(oldConditionalStyles);
|
|
109
|
+
}
|
|
110
|
+
updateGradientColumnsOldConfig() {
|
|
65
111
|
let newFormatColumns = [];
|
|
66
112
|
let existingFormatColumns = [];
|
|
67
113
|
// 1. Convert Gradient Columns to Format Columns
|
|
@@ -88,6 +88,7 @@ export interface AdaptableModuleView {
|
|
|
88
88
|
*/
|
|
89
89
|
actions?: AdaptableModuleViewAction[];
|
|
90
90
|
onMount?: () => void;
|
|
91
|
+
HeaderComponent?: React.FunctionComponent;
|
|
91
92
|
onOpenEditPopup?: (abObject?: AdaptableObject) => void;
|
|
92
93
|
getDeleteAction?: (abObject: AdaptableObject) => Redux.Action;
|
|
93
94
|
getCompactDeleteAction?: (abObject: AdaptableObject) => Redux.Action;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { FlexProps } from 'rebass';
|
|
3
|
-
import type {
|
|
3
|
+
import type { AdaptableApi, AdaptableModule, AdaptablePredicate, AdaptablePredicateDef, AdaptableScope } from '../../../types';
|
|
4
4
|
import type { XOR } from '../../../Utilities/Extensions/TypeExtensions';
|
|
5
5
|
import { AdaptableQuery } from '../../../PredefinedConfig/Common/AdaptableQuery';
|
|
6
6
|
import { OnePageAdaptableWizardContextType } from '../../Wizard/OnePageAdaptableWizard';
|
|
@@ -13,6 +13,7 @@ export declare const isRuleValid: (abObject: {
|
|
|
13
13
|
declare type EntityRulesEditorProps<T> = {
|
|
14
14
|
data: T;
|
|
15
15
|
module: AdaptableModule;
|
|
16
|
+
showNoRule?: boolean;
|
|
16
17
|
showPredicate?: boolean;
|
|
17
18
|
showObservable?: boolean;
|
|
18
19
|
showAggregation?: boolean;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.EntityRulesEditor = exports.EntityRulesSummary = exports.isRuleValid = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const React = tslib_1.__importStar(require("react"));
|
|
6
|
+
const react_1 = require("react");
|
|
6
7
|
const rebass_1 = require("rebass");
|
|
7
8
|
const Tabs_1 = require("../../../components/Tabs");
|
|
8
9
|
const Radio_1 = tslib_1.__importDefault(require("../../../components/Radio"));
|
|
@@ -13,7 +14,6 @@ const AdaptableInput_1 = tslib_1.__importDefault(require("../AdaptableInput"));
|
|
|
13
14
|
const AdaptableContext_1 = require("../../AdaptableContext");
|
|
14
15
|
const ButtonInfo_1 = require("../Buttons/ButtonInfo");
|
|
15
16
|
const DocumentationLinkConstants_1 = require("../../../Utilities/Constants/DocumentationLinkConstants");
|
|
16
|
-
const react_1 = require("react");
|
|
17
17
|
const PermittedValuesSelector_1 = require("../PermittedValuesSelector");
|
|
18
18
|
const isRuleValid = (abObject, api, context) => {
|
|
19
19
|
var _a, _b, _c, _d, _e, _f;
|
|
@@ -52,20 +52,26 @@ const EntityRulesSummary = (props) => {
|
|
|
52
52
|
};
|
|
53
53
|
exports.EntityRulesSummary = EntityRulesSummary;
|
|
54
54
|
const EntityRulesEditor = (props) => {
|
|
55
|
-
var _a, _b;
|
|
56
|
-
const { data, children, descriptions, predicateDefs, showPredicate = true, showObservable = true, showBoolean = true, showAggregation = true, flexProps, module, } = props;
|
|
55
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
56
|
+
const { data, children, descriptions, predicateDefs, showNoRule = false, showPredicate = true, showObservable = true, showBoolean = true, showAggregation = true, flexProps, module, } = props;
|
|
57
57
|
const { api } = (0, AdaptableContext_1.useAdaptable)();
|
|
58
|
-
const type = data.Rule
|
|
59
|
-
? '
|
|
60
|
-
: data.Rule.
|
|
61
|
-
? '
|
|
62
|
-
: data.Rule.
|
|
63
|
-
? '
|
|
64
|
-
:
|
|
58
|
+
const type = data.Rule == undefined
|
|
59
|
+
? 'NoRule'
|
|
60
|
+
: data.Rule.BooleanExpression != undefined
|
|
61
|
+
? 'BooleanExpression'
|
|
62
|
+
: data.Rule.ObservableExpression != undefined && showObservable
|
|
63
|
+
? 'ObservableExpression'
|
|
64
|
+
: data.Rule.AggregatedBooleanExpression != undefined && showAggregation
|
|
65
|
+
? 'AggregatedBooleanExpression'
|
|
66
|
+
: 'Predicate';
|
|
65
67
|
const [selectedTab, setSelectedTab] = React.useState(type);
|
|
66
68
|
const setType = (type) => {
|
|
67
69
|
setSelectedTab(type);
|
|
68
|
-
if (type === '
|
|
70
|
+
if (type === 'NoRule' && showNoRule) {
|
|
71
|
+
delete data.Rule;
|
|
72
|
+
props.onChange(Object.assign({}, data));
|
|
73
|
+
}
|
|
74
|
+
else if (type === 'BooleanExpression' && showBoolean) {
|
|
69
75
|
props.onChange(Object.assign(Object.assign({}, data), { Rule: {
|
|
70
76
|
BooleanExpression: '',
|
|
71
77
|
} }));
|
|
@@ -88,8 +94,8 @@ const EntityRulesEditor = (props) => {
|
|
|
88
94
|
} }));
|
|
89
95
|
}
|
|
90
96
|
};
|
|
91
|
-
const predicateId = data.Rule.Predicate != undefined ? data.Rule.Predicate.PredicateId : undefined;
|
|
92
|
-
const predicateInputs = predicateId ? (
|
|
97
|
+
const predicateId = ((_a = data.Rule) === null || _a === void 0 ? void 0 : _a.Predicate) != undefined ? (_b = data.Rule) === null || _b === void 0 ? void 0 : _b.Predicate.PredicateId : undefined;
|
|
98
|
+
const predicateInputs = predicateId ? (_d = (_c = data.Rule) === null || _c === void 0 ? void 0 : _c.Predicate.Inputs) !== null && _d !== void 0 ? _d : [] : [];
|
|
93
99
|
const currentPredicateDef = api.predicateApi.getPredicateDefById(predicateId);
|
|
94
100
|
const isValuesPredicateDef = (colDef) => colDef && ['Values', 'ExcludeValues'].includes(colDef.id);
|
|
95
101
|
const predicateDefsOptions = predicateDefs
|
|
@@ -158,6 +164,10 @@ const EntityRulesEditor = (props) => {
|
|
|
158
164
|
return (React.createElement(rebass_1.Flex, Object.assign({ flexDirection: "column", padding: 2, pt: 0, pl: 0 }, flexProps, { style: Object.assign({ height: '100%' }, flexProps === null || flexProps === void 0 ? void 0 : flexProps.style) }),
|
|
159
165
|
children,
|
|
160
166
|
React.createElement(Tabs_1.Tabs, { onValueChange: setType, value: selectedTab, pt: 2, pl: 2, style: { flex: 1, overflow: 'auto' } },
|
|
167
|
+
showNoRule ? (React.createElement(Tabs_1.Tabs.Tab, { value: 'NoRule', style: { flex: 1 } },
|
|
168
|
+
React.createElement(Radio_1.default, { tabIndex: -1, margin: 0, checked: type === 'NoRule' }, "No Condition"))) : null,
|
|
169
|
+
showNoRule ? (React.createElement(Tabs_1.Tabs.Content, { value: 'NoRule' },
|
|
170
|
+
React.createElement(rebass_1.Text, { fontSize: 2, mb: 2 }, 'Format Column is always applied'))) : null,
|
|
161
171
|
showPredicate ? (React.createElement(Tabs_1.Tabs.Tab, { value: 'Predicate', style: { flex: 1 } },
|
|
162
172
|
React.createElement(Radio_1.default, { tabIndex: -1, margin: 0, checked: type === 'Predicate' }, "Predicate"))) : null,
|
|
163
173
|
showPredicate ? (React.createElement(Tabs_1.Tabs.Content, { value: "Predicate" },
|
|
@@ -168,13 +178,13 @@ const EntityRulesEditor = (props) => {
|
|
|
168
178
|
overflow: 'hidden',
|
|
169
179
|
textOverflow: 'ellipsis',
|
|
170
180
|
maxWidth: 'inherit',
|
|
171
|
-
}, placeholder: "Select Rule", showClearButton: !!data.Rule.Predicate, onClear: clearPredicate, items: predicateDefsOptions, columns: ['label'] }, currentPredicateDef ? currentPredicateDef.label : 'Select Rule'), (
|
|
172
|
-
|
|
181
|
+
}, placeholder: "Select Rule", showClearButton: !!((_e = data.Rule) === null || _e === void 0 ? void 0 : _e.Predicate), onClear: clearPredicate, items: predicateDefsOptions, columns: ['label'] }, currentPredicateDef ? currentPredicateDef.label : 'Select Rule'), (_f = currentPredicateDef === null || currentPredicateDef === void 0 ? void 0 : currentPredicateDef.inputs) === null || _f === void 0 ? void 0 :
|
|
182
|
+
_f.map((predicateDefInput, index) => (React.createElement(rebass_1.Flex, { key: predicateId + index, flexDirection: "column" },
|
|
173
183
|
index > 0 && React.createElement(HelpBlock_1.default, { marginTop: 2 }, "AND"),
|
|
174
184
|
React.createElement(AdaptableInput_1.default, { marginTop: 2, type: predicateDefInput.type, autoFocus: index === 0, value: predicateInputs[index], onChange: (e) => onPredicateInputChange(e, index) })))),
|
|
175
185
|
isValuesPredicateDef(currentPredicateDef) &&
|
|
176
186
|
'ColumnIds' in data.Scope &&
|
|
177
|
-
data.Scope.ColumnIds.length === 1 && (React.createElement(PermittedValuesSelector_1.PermitedValuesSelector, { onPredicateValuesChange: onPredicateValuesChange, predicate: data.Rule.Predicate, scope: data.Scope })),
|
|
187
|
+
data.Scope.ColumnIds.length === 1 && (React.createElement(PermittedValuesSelector_1.PermitedValuesSelector, { onPredicateValuesChange: onPredicateValuesChange, predicate: (_g = data.Rule) === null || _g === void 0 ? void 0 : _g.Predicate, scope: data.Scope })),
|
|
178
188
|
showDocumentationLinks && (React.createElement(HelpBlock_1.default, { "data-name": "query-documentation", mt: 3, mb: 2, style: {
|
|
179
189
|
fontSize: 'var(--ab-font-size-3)',
|
|
180
190
|
padding: 0,
|
|
@@ -187,12 +197,12 @@ const EntityRulesEditor = (props) => {
|
|
|
187
197
|
"See Predicate documentation for more details and examples")))) : null,
|
|
188
198
|
showBoolean ? React.createElement(QueryTab, { value: "BooleanExpression", type: type, label: "Boolean" }) : null,
|
|
189
199
|
showBoolean ? (React.createElement(Tabs_1.Tabs.Content, { value: 'BooleanExpression', paddingLeft: 0 },
|
|
190
|
-
React.createElement(ExpressionEditor_1.ExpressionEditor, { type: 'boolean', module: module, value: data.Rule.BooleanExpression, onChange: setBooleanExpression, initialData: initialData, columns: api.columnApi.getQueryableColumns(), namedQueries: api.queryApi.getAllNamedQuery(), api: api }))) : null,
|
|
200
|
+
React.createElement(ExpressionEditor_1.ExpressionEditor, { type: 'boolean', module: module, value: (_h = data.Rule) === null || _h === void 0 ? void 0 : _h.BooleanExpression, onChange: setBooleanExpression, initialData: initialData, columns: api.columnApi.getQueryableColumns(), namedQueries: api.queryApi.getAllNamedQuery(), api: api }))) : null,
|
|
191
201
|
showObservable ? (React.createElement(QueryTab, { value: "ObservableExpression", type: type, label: "Observable" })) : null,
|
|
192
202
|
showObservable ? (React.createElement(Tabs_1.Tabs.Content, { value: 'ObservableExpression', paddingLeft: 0 },
|
|
193
|
-
React.createElement(ExpressionEditor_1.ExpressionEditor, { type: 'observable', module: module, value: data.Rule.ObservableExpression, onChange: setReactiveExpression, initialData: initialData, columns: api.columnApi.getQueryableColumns(), namedQueries: api.queryApi.getAllNamedQuery(), api: api }))) : null,
|
|
203
|
+
React.createElement(ExpressionEditor_1.ExpressionEditor, { type: 'observable', module: module, value: (_j = data.Rule) === null || _j === void 0 ? void 0 : _j.ObservableExpression, onChange: setReactiveExpression, initialData: initialData, columns: api.columnApi.getQueryableColumns(), namedQueries: api.queryApi.getAllNamedQuery(), api: api }))) : null,
|
|
194
204
|
showAggregation ? (React.createElement(QueryTab, { value: "AggregatedBooleanExpression", type: type, label: "Aggregated Boolean" })) : null,
|
|
195
205
|
showAggregation ? (React.createElement(Tabs_1.Tabs.Content, { value: 'AggregatedBooleanExpression', paddingLeft: 0 },
|
|
196
|
-
React.createElement(ExpressionEditor_1.ExpressionEditor, { type: 'aggregatedBoolean', module: module, value: data.Rule.AggregatedBooleanExpression, onChange: setAggregationExpression, initialData: initialData, columns: api.columnApi.getQueryableColumns(), namedQueries: api.queryApi.getAllNamedQuery(), api: api }))) : null)));
|
|
206
|
+
React.createElement(ExpressionEditor_1.ExpressionEditor, { type: 'aggregatedBoolean', module: module, value: (_k = data.Rule) === null || _k === void 0 ? void 0 : _k.AggregatedBooleanExpression, onChange: setAggregationExpression, initialData: initialData, columns: api.columnApi.getQueryableColumns(), namedQueries: api.queryApi.getAllNamedQuery(), api: api }))) : null)));
|
|
197
207
|
};
|
|
198
208
|
exports.EntityRulesEditor = EntityRulesEditor;
|
|
@@ -111,6 +111,7 @@ const AdaptablePopupModuleView = (props) => {
|
|
|
111
111
|
"s not available in current Layout")));
|
|
112
112
|
};
|
|
113
113
|
return (React.createElement(PopupPanel_1.PopupPanel, { glyphicon: moduleInfo.Glyph, infoLink: moduleInfo.HelpPage, headerText: moduleInfo.FriendlyName, button: newButton, infoLinkDisabled: !props.api.internalApi.isDocumentationLinksDisplayed() },
|
|
114
|
+
moduleViewProperties.HeaderComponent && React.createElement(moduleViewProperties.HeaderComponent, null),
|
|
114
115
|
toggleButtonShowLayoutAssociatedObjects(),
|
|
115
116
|
(items === null || items === void 0 ? void 0 : items.length) ? (React.createElement(AdaptableObjectList_1.AdaptableObjectList, { module: props.module, items: items })) : (React.createElement(EmptyContent_1.default, null, emptyContent !== null && emptyContent !== void 0 ? emptyContent : `Click 'New' to create a new ${moduleInfo.FriendlyName}`)),
|
|
116
117
|
isWizardOpen && EditWizard && (React.createElement(EditWizard, { abObjectType: abObjectType, moduleInfo: moduleInfo, data: null, popupParams: props.popupParams, configEntities: null, onCloseWizard: handleWizardClose, onFinishWizard: handleWizardClose }))));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConditionalStylePopupHeader = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const React = tslib_1.__importStar(require("react"));
|
|
6
|
+
const HelpBlock_1 = tslib_1.__importDefault(require("../../components/HelpBlock"));
|
|
7
|
+
const SimpleButton_1 = tslib_1.__importDefault(require("../../components/SimpleButton"));
|
|
8
|
+
const AdaptableContext_1 = require("../AdaptableContext");
|
|
9
|
+
const ConditionalStylePopupHeader = () => {
|
|
10
|
+
const adaptable = (0, AdaptableContext_1.useAdaptable)();
|
|
11
|
+
return (React.createElement(HelpBlock_1.default, null,
|
|
12
|
+
"Conditional Styles are deprecated, use",
|
|
13
|
+
' ',
|
|
14
|
+
React.createElement(SimpleButton_1.default, { onClick: () => adaptable.api.settingsPanelApi.showSettingsPanel('FormatColumn'), variant: "outlined" }, "Format Columns"),
|
|
15
|
+
' ',
|
|
16
|
+
"instead."));
|
|
17
|
+
};
|
|
18
|
+
exports.ConditionalStylePopupHeader = ConditionalStylePopupHeader;
|
|
@@ -125,7 +125,7 @@ const getFormatDisplayTypeForScope = (scope, api) => {
|
|
|
125
125
|
}
|
|
126
126
|
// need to see if all columns are numeric or date
|
|
127
127
|
if ('ColumnIds' in scope) {
|
|
128
|
-
const columns = scope.ColumnIds.map((c) => api.columnApi.getColumnFromId(c));
|
|
128
|
+
const columns = scope.ColumnIds.map((c) => api.columnApi.getColumnFromId(c)).filter(Boolean);
|
|
129
129
|
const columnDataTypes = (0, uniq_1.default)(columns.map((c) => c.dataType));
|
|
130
130
|
if (columnDataTypes.length == 1 && columnDataTypes[0] == 'Number') {
|
|
131
131
|
return 'Number';
|
|
@@ -4,6 +4,5 @@ declare type FormatColumnRuleWizardSectionProps = {
|
|
|
4
4
|
onChange: (data: FormatColumn) => void;
|
|
5
5
|
defaultPredicateId: string;
|
|
6
6
|
};
|
|
7
|
-
export declare function renderFormatColumnRuleSummary(data: FormatColumn): JSX.Element;
|
|
8
7
|
export declare function FormatColumnRuleWizardSection(props: FormatColumnRuleWizardSectionProps): JSX.Element;
|
|
9
8
|
export {};
|
|
@@ -1,66 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FormatColumnRuleWizardSection =
|
|
3
|
+
exports.FormatColumnRuleWizardSection = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const React = tslib_1.__importStar(require("react"));
|
|
6
|
-
const rebass_1 = require("rebass");
|
|
7
6
|
const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
|
|
8
7
|
const EntityRulesEditor_1 = require("../../Components/EntityRulesEditor");
|
|
9
|
-
const CodeBlock_1 = require("../../../components/CodeBlock");
|
|
10
|
-
const CheckBox_1 = require("../../../components/CheckBox");
|
|
11
|
-
const constants_1 = require("./constants");
|
|
12
|
-
function renderFormatColumnRuleSummary(data) {
|
|
13
|
-
return (React.createElement(EntityRulesEditor_1.EntityRulesSummary, { data: data, renderPredicate: (contents) => {
|
|
14
|
-
return (React.createElement(React.Fragment, null,
|
|
15
|
-
"Apply Format Column on ",
|
|
16
|
-
React.createElement(CodeBlock_1.CodeBlock, null, contents)));
|
|
17
|
-
}, renderQueryExpression: (contents) => {
|
|
18
|
-
return (React.createElement(React.Fragment, null,
|
|
19
|
-
"Apply Format Column when",
|
|
20
|
-
' ',
|
|
21
|
-
React.createElement("b", null,
|
|
22
|
-
React.createElement(CodeBlock_1.CodeBlock, null, contents))));
|
|
23
|
-
} }));
|
|
24
|
-
}
|
|
25
|
-
exports.renderFormatColumnRuleSummary = renderFormatColumnRuleSummary;
|
|
26
8
|
function FormatColumnRuleWizardSection(props) {
|
|
27
9
|
const { data, api, moduleInfo } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
|
|
28
|
-
const hasRule = Boolean(data.Rule);
|
|
29
|
-
const handleRuleToggle = React.useCallback(() => {
|
|
30
|
-
const newFormatColumn = Object.assign({}, data);
|
|
31
|
-
if (hasRule) {
|
|
32
|
-
delete newFormatColumn.Rule;
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
newFormatColumn.Rule = {
|
|
36
|
-
Predicate: {
|
|
37
|
-
PredicateId: constants_1.DEFAULT_PREDICATE_ID_FOR_FORMAT_COLUMN,
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
props.onChange(newFormatColumn);
|
|
42
|
-
}, [data.Rule]);
|
|
43
10
|
const hasIncompatibleStyle = Boolean(data.ColumnStyle);
|
|
44
|
-
return (React.createElement(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
"Use an AggregatedBooleanQuery if ",
|
|
62
|
-
React.createElement("i", null, "Scope"),
|
|
63
|
-
" is 'Whole Row' - so any data change may be evaluated in a complex AggregatedBooleanExpression")),
|
|
64
|
-
} }))));
|
|
11
|
+
return (React.createElement(EntityRulesEditor_1.EntityRulesEditor, { module: moduleInfo.ModuleName, defaultPredicateId: props.defaultPredicateId,
|
|
12
|
+
// TODO see what is this
|
|
13
|
+
predicateDefs: api.formatColumnApi.getFormatColumnDefsForScope(data.Scope), showNoRule: true, showBoolean: !hasIncompatibleStyle, showAggregation: false, showObservable: false, showPredicate: !hasIncompatibleStyle && !api.scopeApi.scopeIsAll(data.Scope), data: data, onChange: (formatColumn) => props.onChange(formatColumn), descriptions: {
|
|
14
|
+
selectPredicate: 'Select a Format Column Rule - to be applied when data changes',
|
|
15
|
+
useBooleanQuery: (React.createElement(React.Fragment, null,
|
|
16
|
+
"Use an BooleanQuery if ",
|
|
17
|
+
React.createElement("i", null, "Scope"),
|
|
18
|
+
" is 'Whole Row' - so any data change may be evaluated in a complex BooleanExpression")),
|
|
19
|
+
useObservableQuery: (React.createElement(React.Fragment, null,
|
|
20
|
+
"Use an ObservableQuery if ",
|
|
21
|
+
React.createElement("i", null, "Scope"),
|
|
22
|
+
" is 'Whole Row' - so any data change may be evaluated in a complex ObservableExpression")),
|
|
23
|
+
useAggregationQuery: (React.createElement(React.Fragment, null,
|
|
24
|
+
"Use an AggregatedBooleanQuery if ",
|
|
25
|
+
React.createElement("i", null, "Scope"),
|
|
26
|
+
" is 'Whole Row' - so any data change may be evaluated in a complex AggregatedBooleanExpression")),
|
|
27
|
+
} }));
|
|
65
28
|
}
|
|
66
29
|
exports.FormatColumnRuleWizardSection = FormatColumnRuleWizardSection;
|
|
@@ -123,8 +123,7 @@ function FormatColumnWizard(props) {
|
|
|
123
123
|
title: 'Condition',
|
|
124
124
|
details: 'Build the rules when Format column should be applied',
|
|
125
125
|
render: () => {
|
|
126
|
-
return (React.createElement(
|
|
127
|
-
React.createElement(FormatColumnRuleWizardSection_1.FormatColumnRuleWizardSection, { onChange: setFormatColumn, defaultPredicateId: constants_1.DEFAULT_PREDICATE_ID_FOR_FORMAT_COLUMN })));
|
|
126
|
+
return (React.createElement(FormatColumnRuleWizardSection_1.FormatColumnRuleWizardSection, { onChange: setFormatColumn, defaultPredicateId: constants_1.DEFAULT_PREDICATE_ID_FOR_FORMAT_COLUMN }));
|
|
128
127
|
},
|
|
129
128
|
},
|
|
130
129
|
{
|
package/src/agGrid/Adaptable.js
CHANGED
|
@@ -3733,23 +3733,25 @@ class Adaptable {
|
|
|
3733
3733
|
firstInfo.trigger == 'tick' ? this.filterOnTickingDataChange() : this.filterOnEditDataChange();
|
|
3734
3734
|
}
|
|
3735
3735
|
getExpressionStylesChanges(dataChangedScope, cellDataChangedInfos) {
|
|
3736
|
-
const stylesWithExpression =
|
|
3736
|
+
const stylesWithExpression = [];
|
|
3737
|
+
stylesWithExpression.push(...this.api.conditionalStyleApi.getConditionalStylesWithExpression());
|
|
3738
|
+
stylesWithExpression.push(...this.api.formatColumnApi.getFormatColumnsWithExpression());
|
|
3737
3739
|
if (ArrayExtensions_1.ArrayExtensions.IsNullOrEmpty(stylesWithExpression)) {
|
|
3738
3740
|
return;
|
|
3739
3741
|
}
|
|
3740
3742
|
cellDataChangedInfos.forEach((cellDataChangedInfo) => {
|
|
3741
3743
|
if (!dataChangedScope.wholeRow) {
|
|
3742
|
-
stylesWithExpression.forEach((
|
|
3744
|
+
stylesWithExpression.forEach((styleModule) => {
|
|
3743
3745
|
if (!dataChangedScope.wholeRow) {
|
|
3744
|
-
const columnIds = this.api.queryLanguageApi.getColumnsFromExpression(
|
|
3746
|
+
const columnIds = this.api.queryLanguageApi.getColumnsFromExpression(styleModule.Rule.BooleanExpression);
|
|
3745
3747
|
if (columnIds.includes(cellDataChangedInfo.column.columnId)) {
|
|
3746
|
-
if (this.api.scopeApi.scopeIsAll(
|
|
3748
|
+
if (this.api.scopeApi.scopeIsAll(styleModule.Scope)) {
|
|
3747
3749
|
dataChangedScope.wholeRow = true;
|
|
3748
3750
|
return;
|
|
3749
3751
|
}
|
|
3750
3752
|
else {
|
|
3751
3753
|
this.api.scopeApi
|
|
3752
|
-
.getColumnsForScope(
|
|
3754
|
+
.getColumnsForScope(styleModule.Scope)
|
|
3753
3755
|
.map((c) => c.columnId)
|
|
3754
3756
|
.forEach((colId) => {
|
|
3755
3757
|
dataChangedScope.columnIds.add(colId);
|