@adaptabletools/adaptable 18.0.0-canary.30 → 18.0.0-canary.32

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.
Files changed (98) hide show
  1. package/package.json +1 -1
  2. package/src/AdaptableOptions/ActionColumnOptions.d.ts +3 -2
  3. package/src/AdaptableOptions/CustomSortOptions.d.ts +2 -2
  4. package/src/AdaptableOptions/FormatColumnOptions.d.ts +2 -2
  5. package/src/AdaptableOptions/PredicateOptions.d.ts +2 -2
  6. package/src/AdaptableOptions/UserInterfaceOptions.d.ts +2 -2
  7. package/src/Api/AdaptableApi.d.ts +2 -2
  8. package/src/Api/{ScopeApi.d.ts → ColumnScopeApi.d.ts} +28 -28
  9. package/src/Api/FlashingCellApi.d.ts +2 -2
  10. package/src/Api/GridApi.d.ts +5 -0
  11. package/src/Api/Implementation/AdaptableApiImpl.d.ts +2 -2
  12. package/src/Api/Implementation/AdaptableApiImpl.js +3 -3
  13. package/src/Api/Implementation/AlertApiImpl.js +3 -3
  14. package/src/Api/Implementation/ApiBase.d.ts +2 -2
  15. package/src/Api/Implementation/ApiBase.js +2 -2
  16. package/src/Api/Implementation/ColumnFilterApiImpl.js +1 -1
  17. package/src/Api/Implementation/ColumnScopeApiImpl.d.ts +33 -0
  18. package/src/Api/Implementation/{ScopeApiImpl.js → ColumnScopeApiImpl.js} +2 -2
  19. package/src/Api/Implementation/FlashingCellApiImpl.d.ts +2 -2
  20. package/src/Api/Implementation/FlashingCellApiImpl.js +1 -1
  21. package/src/Api/Implementation/FormatColumnApiImpl.js +3 -3
  22. package/src/Api/Implementation/GridApiImpl.d.ts +1 -0
  23. package/src/Api/Implementation/GridApiImpl.js +5 -0
  24. package/src/Api/Implementation/UserInterfaceApiImpl.js +3 -3
  25. package/src/Api/Internal/AdaptableInternalApi.js +1 -1
  26. package/src/Api/Internal/AlertInternalApi.d.ts +2 -2
  27. package/src/Api/Internal/AlertInternalApi.js +3 -3
  28. package/src/Api/Internal/CustomSortInternalApi.js +1 -1
  29. package/src/Api/Internal/ExportInternalApi.js +1 -1
  30. package/src/Api/Internal/ExpressionInternalApi.js +1 -1
  31. package/src/Api/Internal/FormatColumnInternalApi.d.ts +2 -2
  32. package/src/Api/Internal/FormatColumnInternalApi.js +24 -14
  33. package/src/Api/Internal/PredicateInternalApi.d.ts +6 -6
  34. package/src/Api/Internal/StyledColumnInternalApi.d.ts +2 -2
  35. package/src/Api/Internal/StyledColumnInternalApi.js +4 -5
  36. package/src/PredefinedConfig/AlertState.d.ts +2 -2
  37. package/src/PredefinedConfig/Common/AdaptableObject.d.ts +4 -4
  38. package/src/PredefinedConfig/Common/AdaptablePredicate.d.ts +2 -2
  39. package/src/PredefinedConfig/Common/{AdaptableScope.d.ts → ColumnScope.d.ts} +1 -1
  40. package/src/PredefinedConfig/Common/RowScope.d.ts +17 -0
  41. package/src/PredefinedConfig/Common/RowScope.js +1 -0
  42. package/src/PredefinedConfig/ExportState.d.ts +2 -2
  43. package/src/PredefinedConfig/FlashingCellState.d.ts +2 -2
  44. package/src/PredefinedConfig/FormatColumnState.d.ts +7 -8
  45. package/src/PredefinedConfig/PlusMinusState.d.ts +2 -2
  46. package/src/PredefinedConfig/ShortcutState.d.ts +2 -2
  47. package/src/PredefinedConfig/StyledColumnState.d.ts +5 -10
  48. package/src/Strategy/AlertModule.js +2 -2
  49. package/src/Strategy/ExportModule.js +2 -2
  50. package/src/Strategy/FlashingCellModule.js +4 -4
  51. package/src/Strategy/FormatColumnModule.js +2 -2
  52. package/src/Strategy/PlusMinusModule.js +3 -3
  53. package/src/Strategy/ShortcutModule.js +1 -1
  54. package/src/Strategy/StyledColumnModule.js +7 -5
  55. package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsViewItems.js +4 -3
  56. package/src/Strategy/Utilities/getScopeViewItems.d.ts +2 -2
  57. package/src/Utilities/ObjectFactory.js +1 -1
  58. package/src/Utilities/Services/ReportService.js +2 -2
  59. package/src/Utilities/Services/ValidationService.js +2 -2
  60. package/src/View/Alert/AlertEntityRow.js +1 -1
  61. package/src/View/Alert/Utilities/getAvailablePredicates.d.ts +2 -2
  62. package/src/View/Alert/Utilities/getDefaultAlertDefinition.d.ts +1 -1
  63. package/src/View/Alert/Wizard/AlertScopeWizardSection.js +2 -2
  64. package/src/View/Alert/Wizard/BaseAlertScopeWizardSection.js +1 -1
  65. package/src/View/ColumnInfo/ColumnInfo.js +1 -1
  66. package/src/View/Components/EntityRulesEditor/EntityRulePredicatesEditor/EntityRulePredicatesEditor.d.ts +3 -3
  67. package/src/View/Components/EntityRulesEditor/index.d.ts +3 -3
  68. package/src/View/Components/NewScopeComponent.d.ts +5 -5
  69. package/src/View/Components/NewScopeComponent.js +2 -2
  70. package/src/View/Components/RangesComponent.d.ts +2 -2
  71. package/src/View/Components/RangesComponent.js +1 -1
  72. package/src/View/Components/SharedProps/WizardScopeState.d.ts +2 -2
  73. package/src/View/CustomSort/Wizard/CustomSortColumnWizardSection.js +1 -1
  74. package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +4 -1
  75. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.d.ts +2 -2
  76. package/src/View/FormatColumn/Wizard/FormatColumnFormatWizardSection.js +1 -1
  77. package/src/View/FormatColumn/Wizard/FormatColumnRuleWizardSection.js +1 -1
  78. package/src/View/FormatColumn/Wizard/FormatColumnScopeWizardSection.js +1 -1
  79. package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +24 -13
  80. package/src/View/FormatColumn/Wizard/FormatColumnStyleWizardSection.js +1 -1
  81. package/src/View/PlusMinus/PlusMinusSummary.js +2 -2
  82. package/src/View/StyledColumn/Wizard/StyledColumnWizardColumnSection.js +1 -1
  83. package/src/View/StyledColumn/Wizard/StyledColumnWizardSettingsSection.js +32 -12
  84. package/src/View/StyledColumn/Wizard/StyledColumnWizardStyleSection/StyledColumnWizardStyleSection.js +1 -1
  85. package/src/agGrid/ActionColumnRenderer.js +40 -4
  86. package/src/agGrid/AdaptableAgGrid.js +2 -3
  87. package/src/agGrid/AgGridColumnAdapter.js +11 -10
  88. package/src/agGrid/BadgeRenderer.d.ts +2 -2
  89. package/src/agGrid/BadgeRenderer.js +23 -16
  90. package/src/agGrid/PercentBarRenderer.js +0 -1
  91. package/src/env.js +2 -2
  92. package/src/metamodel/adaptable.metamodel.d.ts +19 -26
  93. package/src/metamodel/adaptable.metamodel.js +1 -1
  94. package/src/types.d.ts +3 -2
  95. package/tsconfig.esm.tsbuildinfo +1 -1
  96. package/src/Api/Implementation/ScopeApiImpl.d.ts +0 -33
  97. /package/src/Api/{ScopeApi.js → ColumnScopeApi.js} +0 -0
  98. /package/src/PredefinedConfig/Common/{AdaptableScope.js → ColumnScope.js} +0 -0
@@ -1,9 +1,10 @@
1
1
  export const getFormatColumnSettingsViewItems = (formatColumn) => {
2
- var _a;
2
+ var _a, _b, _c, _d;
3
3
  const values = [
4
4
  `Cell alignment: ${(_a = formatColumn.CellAlignment) !== null && _a !== void 0 ? _a : 'default'}`,
5
- `Include grouped rows: ${formatColumn.IncludeGroupedRows ? 'Yes' : 'No'}`,
6
- `Include row summaries: ${formatColumn.IncludeRowSummaries ? 'Yes' : 'No'}`,
5
+ `Data Rows: ${((_b = formatColumn.RowScope) === null || _b === void 0 ? void 0 : _b.ExcludeDataRows) ? 'Yes' : 'No'}`,
6
+ `Grouped Rows: ${((_c = formatColumn.RowScope) === null || _c === void 0 ? void 0 : _c.ExcludeGroupedRows) ? 'Yes' : 'No'}`,
7
+ `Row Summaries: ${((_d = formatColumn.RowScope) === null || _d === void 0 ? void 0 : _d.ExcludeSummaryRows) ? 'Yes' : 'No'}`,
7
8
  ].filter(Boolean);
8
9
  return {
9
10
  name: 'Settings',
@@ -1,3 +1,3 @@
1
- import { AdaptableApi, AdaptableScope } from '../../../types';
1
+ import { AdaptableApi, ColumnScope } from '../../../types';
2
2
  import { AdaptableObjectItemView } from '../Interface/IModule';
3
- export declare const getScopeViewItems: (scope: AdaptableScope, api: AdaptableApi) => AdaptableObjectItemView;
3
+ export declare const getScopeViewItems: (scope: ColumnScope, api: AdaptableApi) => AdaptableObjectItemView;
@@ -233,6 +233,7 @@ export function CreateEmptyFormatColumn() {
233
233
  Style: CreateEmptyStyle(),
234
234
  DisplayFormat: undefined,
235
235
  CellAlignment: undefined,
236
+ RowScope: undefined,
236
237
  };
237
238
  }
238
239
  export function CreateEmptyFreeTextColumn(defaultSpecialColumnSettings) {
@@ -300,7 +301,6 @@ export function CreateEmptyStyledColumn() {
300
301
  return {
301
302
  Uuid: createUuid(),
302
303
  ColumnId: EMPTY_STRING,
303
- IncludeGroupedRows: false,
304
304
  };
305
305
  }
306
306
  export function CreateDefaultStyledColumnBadge() {
@@ -134,7 +134,7 @@ export class ReportService {
134
134
  case 'SelectedColumns':
135
135
  return '[Selected Columns]';
136
136
  case 'ScopeColumns':
137
- return this.adaptableApi.scopeApi.getScopeDescription(report.Scope);
137
+ return this.adaptableApi.columnScopeApi.getScopeDescription(report.Scope);
138
138
  }
139
139
  }
140
140
  GetReportExpressionDescription(report, cols) {
@@ -197,7 +197,7 @@ export class ReportService {
197
197
  reportColumns = report.Scope.ColumnIds.map((columnId) => this.adaptableApi.columnApi.getColumnWithColumnId(columnId)).filter((c) => c);
198
198
  }
199
199
  else {
200
- reportColumns = this.adaptableApi.scopeApi.getColumnsForScope(report.Scope);
200
+ reportColumns = this.adaptableApi.columnScopeApi.getColumnsForScope(report.Scope);
201
201
  }
202
202
  break;
203
203
  }
@@ -15,7 +15,7 @@ export class ValidationService {
15
15
  }
16
16
  let editingRules = this.adaptableApi.alertApi.internalApi
17
17
  .getAlertDefinitionsWithPreventEdit()
18
- .filter((v) => this.adaptableApi.scopeApi.isColumnInScope(cellDataChangedInfo.column, v.Scope));
18
+ .filter((v) => this.adaptableApi.columnScopeApi.isColumnInScope(cellDataChangedInfo.column, v.Scope));
19
19
  let failedValidations = [];
20
20
  if (ArrayExtensions.IsNotEmpty(editingRules)) {
21
21
  editingRules.forEach((alertDefinition) => {
@@ -127,7 +127,7 @@ export class ValidationService {
127
127
  }
128
128
  createValidationDescription(alertDefinition) {
129
129
  var _a, _b;
130
- return (this.adaptableApi.scopeApi.getScopeDescription(alertDefinition.Scope) +
130
+ return (this.adaptableApi.columnScopeApi.getScopeDescription(alertDefinition.Scope) +
131
131
  ' ' +
132
132
  ((_b = (_a = alertDefinition.Rule) === null || _a === void 0 ? void 0 : _a.Predicates) === null || _b === void 0 ? void 0 : _b.map((predicate) => this.adaptableApi.predicateApi.predicateToString(predicate)).join(' AND ')));
133
133
  }
@@ -9,7 +9,7 @@ export class AlertEntityRow extends React.Component {
9
9
  let alertDefinition = this.props.adaptableObject;
10
10
  let messageTypes = ['Info', 'Success', 'Warning', 'Error'];
11
11
  let colItems = cloneObject(this.props.colItems);
12
- colItems[0].Content = (React.createElement(EntityRowItem, { Content: this.props.api.scopeApi.getScopeToString(alertDefinition.Scope) }));
12
+ colItems[0].Content = (React.createElement(EntityRowItem, { Content: this.props.api.columnScopeApi.getScopeToString(alertDefinition.Scope) }));
13
13
  colItems[1].Content = (React.createElement(EntityRowItem, { Content: this.props.api.alertApi.internalApi.getAlertRuleDescription(alertDefinition) }));
14
14
  colItems[2].Content = (React.createElement("div", null,
15
15
  React.createElement(DropdownButton, { showClearButton: false, items: messageTypes.map((item) => ({
@@ -1,3 +1,3 @@
1
- import { AdaptableApi, AdaptablePredicateDef, AdaptableScope } from '../../../types';
1
+ import { AdaptableApi, AdaptablePredicateDef, ColumnScope } from '../../../types';
2
2
  import { AlertType } from './getAlertType';
3
- export declare const getAvailablePredicateDefinitions: (api: AdaptableApi, scope: AdaptableScope, alertType: AlertType) => AdaptablePredicateDef<string>[];
3
+ export declare const getAvailablePredicateDefinitions: (api: AdaptableApi, scope: ColumnScope, alertType: AlertType) => AdaptablePredicateDef<string>[];
@@ -6,7 +6,7 @@ import { AlertType } from './getAlertType';
6
6
  */
7
7
  export declare const getDefaultAlertDefinition: (alertDefinition: AlertDefinition, type: AlertType) => {
8
8
  Uuid: string;
9
- Scope: import("../../../types").AdaptableScope<import("../../../PredefinedConfig/Common/AdaptableScope").ScopeDataType>;
9
+ Scope: import("../../../types").ColumnScope<import("../../../PredefinedConfig/Common/ColumnScope").ScopeDataType>;
10
10
  Rule: ({
11
11
  Predicates?: never;
12
12
  } & (({
@@ -24,7 +24,7 @@ export const AlertScopeWizardSection = (props) => {
24
24
  Predicates: [{ PredicateId: 'AnyChange' }],
25
25
  };
26
26
  }
27
- if (newData.Rule.ObservableExpression !== undefined && !api.scopeApi.scopeIsAll(Scope)) {
27
+ if (newData.Rule.ObservableExpression !== undefined && !api.columnScopeApi.scopeIsAll(Scope)) {
28
28
  // if it had observable expression and the scope is changed to partial
29
29
  // we need to reset to not be an observable expression, as observable is not supported
30
30
  // for partial scope
@@ -32,7 +32,7 @@ export const AlertScopeWizardSection = (props) => {
32
32
  newData.Rule.BooleanExpression = '';
33
33
  }
34
34
  if (newData.Rule.AggregatedBooleanExpression !== undefined &&
35
- !api.scopeApi.scopeIsAll(Scope)) {
35
+ !api.columnScopeApi.scopeIsAll(Scope)) {
36
36
  // if it had aggregation expression and the scope is changed to partial
37
37
  // we need to reset to not be an aggregation expression, as aggregation is not supported
38
38
  // for partial scope
@@ -3,7 +3,7 @@ import { Box, Text } from 'rebass';
3
3
  import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
4
4
  import { ValueOptionsTags } from '../../Components/ValueSelector';
5
5
  export const renderScopeSummary = (data) => {
6
- const { api: { scopeApi }, } = useOnePageAdaptableWizardContext();
6
+ const { api: { columnScopeApi: scopeApi }, } = useOnePageAdaptableWizardContext();
7
7
  const columnsInScope = scopeApi.getColumnsForScope(data.Scope);
8
8
  return (React.createElement(React.Fragment, null,
9
9
  React.createElement(Box, null,
@@ -132,7 +132,7 @@ const ModuleView = (props) => {
132
132
  var _a;
133
133
  if ('Scope' in item.abObject) {
134
134
  const abColumn = adaptable.api.columnApi.getColumnWithColumnId(props.selectedColumnId);
135
- return adaptable.api.scopeApi.isColumnInScope(abColumn, item.abObject.Scope);
135
+ return adaptable.api.columnScopeApi.isColumnInScope(abColumn, item.abObject.Scope);
136
136
  }
137
137
  if ('ColumnId' in item.abObject) {
138
138
  return ((_a = item.abObject) === null || _a === void 0 ? void 0 : _a.ColumnId) === props.selectedColumnId;
@@ -1,15 +1,15 @@
1
1
  import * as React from 'react';
2
- import { AdaptablePredicateDef, AdaptableScope } from '../../../../types';
2
+ import { AdaptablePredicateDef, ColumnScope } from '../../../../types';
3
3
  import { EntityRulesEditorProps, RuleType } from '../index';
4
4
  export interface EntityRulePredicatesEditorProps {
5
5
  descriptions: EntityRulesEditorProps<any>['descriptions'];
6
6
  data: {
7
7
  Rule: RuleType;
8
- Scope: AdaptableScope;
8
+ Scope: ColumnScope;
9
9
  };
10
10
  onChange: (data: {
11
11
  Rule: RuleType;
12
- Scope: AdaptableScope;
12
+ Scope: ColumnScope;
13
13
  }) => void;
14
14
  predicateDefs: AdaptablePredicateDef[];
15
15
  getPredicateDefsForColId?: (colId: string) => AdaptablePredicateDef[];
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { FlexProps } from 'rebass';
3
- import type { AdaptableColumnPredicate, AdaptableModule, AdaptablePredicateDef, AdaptableScope } from '../../../types';
3
+ import type { AdaptableColumnPredicate, AdaptableModule, AdaptablePredicateDef, ColumnScope } from '../../../types';
4
4
  import type { XOR } from '../../../Utilities/Extensions/TypeExtensions';
5
5
  import { AdaptableQuery } from '../../../PredefinedConfig/Common/AdaptableQuery';
6
6
  export type RuleType = XOR<{
@@ -30,7 +30,7 @@ export type EntityRulesEditorProps<T> = {
30
30
  };
31
31
  export declare const EntityRulesSummary: <T extends {
32
32
  Rule?: RuleType;
33
- Scope: AdaptableScope;
33
+ Scope: ColumnScope;
34
34
  }>(props: {
35
35
  data: T;
36
36
  renderPredicate: (content: string) => React.ReactNode;
@@ -38,5 +38,5 @@ export declare const EntityRulesSummary: <T extends {
38
38
  }) => JSX.Element;
39
39
  export declare const EntityRulesEditor: <T extends {
40
40
  Rule: RuleType;
41
- Scope: AdaptableScope;
41
+ Scope: ColumnScope;
42
42
  }>(props: EntityRulesEditorProps<T>) => JSX.Element;
@@ -1,18 +1,18 @@
1
1
  import * as React from 'react';
2
- import { ScopeDataType, AdaptableScope } from '../../PredefinedConfig/Common/AdaptableScope';
2
+ import { ScopeDataType, ColumnScope } from '../../PredefinedConfig/Common/ColumnScope';
3
3
  import { AdaptableColumn } from '../../types';
4
4
  export declare const isScopeValid: ({ Scope }: {
5
- Scope: AdaptableScope;
5
+ Scope: ColumnScope;
6
6
  }) => string | true;
7
- export declare const renderScopeSummary: (scope: AdaptableScope, labels: {
7
+ export declare const renderScopeSummary: (scope: ColumnScope, labels: {
8
8
  scopeWholeRow: string;
9
9
  scopeColumns: string;
10
10
  scopeDataTypes: string;
11
11
  }) => JSX.Element;
12
12
  export interface NewScopeComponentProps extends React.ClassAttributes<any> {
13
- scope: AdaptableScope;
13
+ scope: ColumnScope;
14
14
  scopeColumns?: AdaptableColumn[];
15
- updateScope: (scope: AdaptableScope) => void;
15
+ updateScope: (scope: ColumnScope) => void;
16
16
  availableDataTypes?: ScopeDataType[];
17
17
  hideWholeRow?: boolean;
18
18
  style?: React.CSSProperties;
@@ -42,7 +42,7 @@ const DATA_TYPES_MAP = {
42
42
  };
43
43
  export const renderScopeSummary = (scope, labels) => {
44
44
  const adaptable = useAdaptable();
45
- const scopeApi = adaptable.api.scopeApi;
45
+ const scopeApi = adaptable.api.columnScopeApi;
46
46
  const columnsInScope = scopeApi.getColumnsForScope(scope);
47
47
  return (React.createElement(React.Fragment, null,
48
48
  React.createElement(Box, null,
@@ -58,7 +58,7 @@ const DATA_TYPES_OPTIONS = Object.values(DATA_TYPES_MAP);
58
58
  export const NewScopeComponent = (props) => {
59
59
  var _a, _b;
60
60
  const { api } = useAdaptable();
61
- const { scopeApi, columnApi } = api;
61
+ const { columnScopeApi: scopeApi, columnApi } = api;
62
62
  const [columnsSearchText, setColumnsSearchText] = useState('');
63
63
  const scopeColumns = React.useMemo(() => {
64
64
  const allColumns = props.scopeColumns || columnApi.getColumns();
@@ -1,13 +1,13 @@
1
1
  import * as React from 'react';
2
2
  import { AdaptableApi } from '../../Api/AdaptableApi';
3
3
  import { CellColorRange, ColumnComparison, NumericStyledColumn } from '../../PredefinedConfig/StyledColumnState';
4
- import { AdaptableScope } from '../../PredefinedConfig/Common/AdaptableScope';
4
+ import { ColumnScope } from '../../PredefinedConfig/Common/ColumnScope';
5
5
  export interface RangesComponentProps extends React.ClassAttributes<RangesComponent> {
6
6
  ranges: CellColorRange[];
7
7
  columnComparison?: ColumnComparison;
8
8
  rangeValueType: NumericStyledColumn['RangeValueType'];
9
9
  onRangeValueTypeChange: (rangeValueType: NumericStyledColumn['RangeValueType']) => void;
10
- scope: AdaptableScope;
10
+ scope: ColumnScope;
11
11
  api: AdaptableApi;
12
12
  showRangeDirection: boolean;
13
13
  updateRanges: (ranges: CellColorRange[]) => void;
@@ -114,7 +114,7 @@ export class RangesComponent extends React.Component {
114
114
  this.props.updateColumnComparison(columnComparison);
115
115
  }
116
116
  else {
117
- const ranges = this.props.api.scopeApi.createCellColorRangesForScope(this.props.scope);
117
+ const ranges = this.props.api.columnScopeApi.createCellColorRangesForScope(this.props.scope);
118
118
  this.setState({
119
119
  rangesType: 'Standard',
120
120
  });
@@ -1,4 +1,4 @@
1
- import { AdaptableScope } from '../../../PredefinedConfig/Common/AdaptableScope';
1
+ import { ColumnScope } from '../../../PredefinedConfig/Common/ColumnScope';
2
2
  export interface WizardScopeState {
3
- scope: AdaptableScope;
3
+ scope: ColumnScope;
4
4
  }
@@ -24,7 +24,7 @@ export const CustomSortColumnWizardSection = (props) => {
24
24
  const columnSortComparers = api.optionsApi.getCustomSortOptions().customSortComparers || [];
25
25
  const usedColumnIds = [
26
26
  ...customSorts.map((customSort) => customSort.ColumnId),
27
- ...columnSortComparers.map((comparer) => api.scopeApi.getColumnIdsInScope(comparer.scope)),
27
+ ...columnSortComparers.map((comparer) => api.columnScopeApi.getColumnIdsInScope(comparer.scope)),
28
28
  ];
29
29
  // filter out used colum ids, but include the current one
30
30
  return sortableColumns.filter((column) => {
@@ -94,7 +94,10 @@ const buildAdaptableOptions = (mainAdaptableInstance, gridOptions, adaptableCont
94
94
  {
95
95
  columnId: 'undoActionColumn',
96
96
  friendlyName: ' ',
97
- includeGroupedRows: true,
97
+ rowScope: {
98
+ ExcludeGroupedRows: true,
99
+ ExcludeSummaryRows: true,
100
+ },
98
101
  actionColumnSettings: { suppressMenu: true, suppressMovable: true },
99
102
  actionColumnButton,
100
103
  },
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { FormatColumn } from '../../../PredefinedConfig/FormatColumnState';
3
3
  import { AdaptableFormat } from '../../../PredefinedConfig/Common/AdaptableFormat';
4
- import { AdaptableScope } from '../../../PredefinedConfig/Common/AdaptableScope';
4
+ import { ColumnScope } from '../../../PredefinedConfig/Common/ColumnScope';
5
5
  import { AdaptableApi } from '../../../Api/AdaptableApi';
6
6
  export type FormatColumnFormatWizardSectionProps = {
7
7
  onChange: (data: FormatColumn) => void;
@@ -12,5 +12,5 @@ export interface FormatColumnFormatWizardState {
12
12
  }
13
13
  export declare const getFormatColumnFormatSummaryValue: (data: FormatColumn) => string;
14
14
  export declare const renderFormatColumnFormatSummary: (data: FormatColumn) => JSX.Element;
15
- export declare const getFormatDisplayTypeForScope: (scope: AdaptableScope, api: AdaptableApi) => 'Number' | 'Date' | 'String' | undefined;
15
+ export declare const getFormatDisplayTypeForScope: (scope: ColumnScope, api: AdaptableApi) => 'Number' | 'Date' | 'String' | undefined;
16
16
  export declare const FormatColumnFormatWizardSection: (props: FormatColumnFormatWizardSectionProps) => JSX.Element;
@@ -410,7 +410,7 @@ export const FormatColumnFormatWizardSection = (props) => {
410
410
  update({ DisplayFormat });
411
411
  };
412
412
  const Type = data.DisplayFormat && data.DisplayFormat.Formatter;
413
- const customScopedFormatters = customDisplayFormatters.filter((displayFormatter) => adaptable.api.scopeApi.isScopeInScope(data.Scope, displayFormatter.scope));
413
+ const customScopedFormatters = customDisplayFormatters.filter((displayFormatter) => adaptable.api.columnScopeApi.isScopeInScope(data.Scope, displayFormatter.scope));
414
414
  if (Type === 'NumberFormatter') {
415
415
  return renderNumberFormat(data, update, setFormatOption, customScopedFormatters, formatColumnApi);
416
416
  }
@@ -5,7 +5,7 @@ export function FormatColumnRuleWizardSection(props) {
5
5
  const { data, api, moduleInfo } = useOnePageAdaptableWizardContext();
6
6
  return (React.createElement(EntityRulesEditor, { module: moduleInfo.ModuleName, defaultPredicateId: props.defaultPredicateId,
7
7
  // TODO see what is this
8
- predicateDefs: api.formatColumnApi.internalApi.getFormatColumnDefsForScope(data.Scope), getPredicateDefsForColId: (colId) => api.formatColumnApi.internalApi.getFormatColumnDefsForScope({ ColumnIds: [colId] }), showNoRule: true, showBoolean: true, showAggregation: false, showObservable: false, showPredicate: !api.scopeApi.scopeIsAll(data.Scope), data: data, onChange: (formatColumn) => props.onChange(formatColumn), descriptions: {
8
+ predicateDefs: api.formatColumnApi.internalApi.getFormatColumnDefsForScope(data.Scope), getPredicateDefsForColId: (colId) => api.formatColumnApi.internalApi.getFormatColumnDefsForScope({ ColumnIds: [colId] }), showNoRule: true, showBoolean: true, showAggregation: false, showObservable: false, showPredicate: !api.columnScopeApi.scopeIsAll(data.Scope), data: data, onChange: (formatColumn) => props.onChange(formatColumn), descriptions: {
9
9
  selectPredicate: 'Create a Format Column Rule - to be applied when data changes',
10
10
  useBooleanQuery: (React.createElement(React.Fragment, null,
11
11
  "Use an BooleanQuery if ",
@@ -17,7 +17,7 @@ export const FormatColumnScopeWizardSection = (props) => {
17
17
  }, scope: data.Scope, updateScope: (Scope) => {
18
18
  var _a, _b;
19
19
  const newData = Object.assign(Object.assign({}, data), { Scope });
20
- const wholeRow = api.scopeApi.scopeIsAll(Scope);
20
+ const wholeRow = api.columnScopeApi.scopeIsAll(Scope);
21
21
  if ((_b = (_a = newData.Rule) === null || _a === void 0 ? void 0 : _a.Predicates) === null || _b === void 0 ? void 0 : _b.length) {
22
22
  if (wholeRow) {
23
23
  // if scope is whole row, a predicate cannot be present, so we set the rule
@@ -8,19 +8,24 @@ import { Tag } from '../../../components/Tag';
8
8
  import { ToggleGroup } from '../../../components/Toggle/ToggleGroup';
9
9
  import { Toggle } from '../../../components/Toggle/Toggle';
10
10
  export const renderFormatColumnSettingsSummary = (data) => {
11
- var _a;
11
+ var _a, _b, _c, _d;
12
12
  return (React.createElement(Box, { padding: 2 },
13
13
  React.createElement(Text, null,
14
14
  "Cell alignment ",
15
15
  React.createElement(Tag, null, (_a = data.CellAlignment) !== null && _a !== void 0 ? _a : 'default')),
16
16
  React.createElement(Text, { mt: 3 },
17
- "Include grouped rows ",
18
- React.createElement(Tag, null, data.IncludeGroupedRows ? 'yes' : 'no')),
17
+ "Data Rows ",
18
+ React.createElement(Tag, null, ((_b = data.RowScope) === null || _b === void 0 ? void 0 : _b.ExcludeDataRows) ? 'no' : 'yes')),
19
+ ' ',
19
20
  React.createElement(Text, { mt: 3 },
20
- "Include row summaries ",
21
- React.createElement(Tag, null, data.IncludeRowSummaries ? 'yes' : 'no'))));
21
+ "Grouped Rows ",
22
+ React.createElement(Tag, null, ((_c = data.RowScope) === null || _c === void 0 ? void 0 : _c.ExcludeGroupedRows) ? 'no' : 'yes')),
23
+ React.createElement(Text, { mt: 3 },
24
+ "Summary Rows ",
25
+ React.createElement(Tag, null, ((_d = data.RowScope) === null || _d === void 0 ? void 0 : _d.ExcludeSummaryRows) ? 'no' : 'yes'))));
22
26
  };
23
27
  export const FormatColumnSettingsWizardSection = (props) => {
28
+ var _a, _b, _c;
24
29
  const { data } = useOnePageAdaptableWizardContext();
25
30
  const onCellAlignmentSelectChanged = (CellAlignment) => {
26
31
  const newData = Object.assign(Object.assign({}, data), { CellAlignment });
@@ -29,11 +34,14 @@ export const FormatColumnSettingsWizardSection = (props) => {
29
34
  }
30
35
  props.onChange(newData);
31
36
  };
32
- const onIncludeGroupedRowsChanged = (IncludeGroupedRows) => {
33
- props.onChange(Object.assign(Object.assign({}, data), { IncludeGroupedRows }));
37
+ const onExcludeDataRowsChanged = (ExcludeDataRows) => {
38
+ props.onChange(Object.assign(Object.assign({}, data), { RowScope: Object.assign(Object.assign({}, data.RowScope), { ExcludeDataRows }) }));
39
+ };
40
+ const onExcludeGroupedRowsChanged = (ExcludeGroupedRows) => {
41
+ props.onChange(Object.assign(Object.assign({}, data), { RowScope: Object.assign(Object.assign({}, data.RowScope), { ExcludeGroupedRows }) }));
34
42
  };
35
- const onIncludeRowSummariesChanged = (IncludeRowSummaries) => {
36
- props.onChange(Object.assign(Object.assign({}, data), { IncludeRowSummaries }));
43
+ const onExcludeSummaryRowsChanged = (ExcludeSummaryRows) => {
44
+ props.onChange(Object.assign(Object.assign({}, data), { RowScope: Object.assign(Object.assign({}, data.RowScope), { ExcludeSummaryRows }) }));
37
45
  };
38
46
  return (React.createElement(Tabs, null,
39
47
  React.createElement(Tabs.Tab, null, "Settings"),
@@ -51,10 +59,13 @@ export const FormatColumnSettingsWizardSection = (props) => {
51
59
  React.createElement(Toggle, { icon: "align-right", pressed: data.CellAlignment === 'Right', onPressedChange: (pressed) => pressed
52
60
  ? onCellAlignmentSelectChanged('Right')
53
61
  : onCellAlignmentSelectChanged(null) }))),
54
- React.createElement(FormRow, { label: "Include Grouped Rows:" },
62
+ React.createElement(FormRow, { label: "Exclude Data Rows:" },
63
+ React.createElement(Flex, { alignItems: "center", marginLeft: 2 },
64
+ React.createElement(CheckBox, { "data-name": "exclude-data-rows-checkbox", checked: (_a = data.RowScope) === null || _a === void 0 ? void 0 : _a.ExcludeDataRows, onChange: onExcludeDataRowsChanged, mr: 2 }))),
65
+ React.createElement(FormRow, { label: "Exclude Grouped Rows:" },
55
66
  React.createElement(Flex, { alignItems: "center", marginLeft: 2 },
56
- React.createElement(CheckBox, { "data-name": "include-grouped-rows-checkbox", checked: data.IncludeGroupedRows, onChange: onIncludeGroupedRowsChanged, mr: 2 }))),
57
- React.createElement(FormRow, { label: "Include Row Summaries:" },
67
+ React.createElement(CheckBox, { "data-name": "exclude-grouped-rows-checkbox", checked: (_b = data.RowScope) === null || _b === void 0 ? void 0 : _b.ExcludeGroupedRows, onChange: onExcludeGroupedRowsChanged, mr: 2 }))),
68
+ React.createElement(FormRow, { label: "Exclude Row Summaries:" },
58
69
  React.createElement(Flex, { alignItems: "center", marginLeft: 2 },
59
- React.createElement(CheckBox, { "data-name": "include-grouped-rows-checkbox", checked: data.IncludeRowSummaries, onChange: onIncludeRowSummariesChanged, mr: 2 }))))))));
70
+ React.createElement(CheckBox, { "data-name": "exclude-summary-rows-checkbox", checked: (_c = data.RowScope) === null || _c === void 0 ? void 0 : _c.ExcludeSummaryRows, onChange: onExcludeSummaryRowsChanged, mr: 2 }))))))));
60
71
  };
@@ -9,7 +9,7 @@ export const isFormatColumnStyleValid = (data, api) => {
9
9
  UIHelper.IsEmptyStyle(data.Style) &&
10
10
  data.DisplayFormat === undefined &&
11
11
  data.CellAlignment === undefined &&
12
- !api.scopeApi.isSingleBooleanColumnScope(data.Scope)) {
12
+ !api.columnScopeApi.isSingleBooleanColumnScope(data.Scope)) {
13
13
  return 'No format applied';
14
14
  }
15
15
  return true;
@@ -19,12 +19,12 @@ export class PlusMinusSummaryComponent extends React.Component {
19
19
  render() {
20
20
  let moduleSummaries = [];
21
21
  // title row
22
- let titleRow = (React.createElement(ModuleHeader, { key: this.props.moduleInfo.FriendlyName, moduleInfo: this.props.moduleInfo, moduleSummary: Helper.returnItemCount(this.props.PlusMinusNudges.filter((item) => this.props.api.scopeApi.isColumnInScopeColumns(this.props.summarisedColumn, item.Scope)), this.props.moduleInfo.FriendlyName), onNew: () => this.onNew(), newButtonTooltip: 'Plus / Minus Rule', accessLevel: this.props.accessLevel }));
22
+ let titleRow = (React.createElement(ModuleHeader, { key: this.props.moduleInfo.FriendlyName, moduleInfo: this.props.moduleInfo, moduleSummary: Helper.returnItemCount(this.props.PlusMinusNudges.filter((item) => this.props.api.columnScopeApi.isColumnInScopeColumns(this.props.summarisedColumn, item.Scope)), this.props.moduleInfo.FriendlyName), onNew: () => this.onNew(), newButtonTooltip: 'Plus / Minus Rule', accessLevel: this.props.accessLevel }));
23
23
  moduleSummaries.push(titleRow);
24
24
  // existing items
25
25
  this.props.PlusMinusNudges.map((item, index) => {
26
26
  var _a;
27
- if (this.props.api.scopeApi.isColumnInScopeColumns(this.props.summarisedColumn, item.Scope)) {
27
+ if (this.props.api.columnScopeApi.isColumnInScopeColumns(this.props.summarisedColumn, item.Scope)) {
28
28
  let detailRow = (React.createElement(ModuleDetail, { key: 'PM' + index, item1: 'Nudge Value: ' + item.NudgeValue, item2: ((_a = item.Rule) === null || _a === void 0 ? void 0 : _a.BooleanExpression) ? item.Rule.BooleanExpression : 'Always', configEnity: item, showShare: this.props.teamSharingActivated, moduleInfo: this.props.moduleInfo, onEdit: () => this.onEdit(item), onShare: (config) => this.props.onShare(item, config), onDelete: PlusMinusRedux.PlusMinusNudgeDelete(item), accessLevel: this.props.accessLevel }));
29
29
  moduleSummaries.push(detailRow);
30
30
  }
@@ -55,7 +55,7 @@ export const StyledColumnWizardColumnSection = (props) => {
55
55
  }, [data]);
56
56
  const handleColumnsChange = (columnIds) => {
57
57
  const columnId = columnIds[0];
58
- const emptyRanges = api.scopeApi.createCellColorRangesForScope({
58
+ const emptyRanges = api.columnScopeApi.createCellColorRangesForScope({
59
59
  ColumnIds: [columnId],
60
60
  });
61
61
  const newStyledColumn = Object.assign(Object.assign({}, data), { ColumnId: columnId });
@@ -6,31 +6,51 @@ import { Tabs } from '../../../components/Tabs';
6
6
  import { Tag } from '../../../components/Tag';
7
7
  import { useOnePageAdaptableWizardContext } from '../../Wizard/OnePageAdaptableWizard';
8
8
  export const renderStyledColumnWizardSettingsSummary = (data) => {
9
+ var _a, _b, _c;
10
+ const badgeStyle = data;
9
11
  return (React.createElement(Box, { padding: 2 },
10
12
  React.createElement(Text, { mt: 3 },
11
- "Include grouped rows ",
12
- React.createElement(Tag, null, data.IncludeGroupedRows ? 'yes' : 'no')),
13
+ "Data Rows ",
14
+ React.createElement(Tag, null, ((_a = badgeStyle.RowScope) === null || _a === void 0 ? void 0 : _a.ExcludeDataRows) ? 'no' : 'yes')),
15
+ ' ',
13
16
  React.createElement(Text, { mt: 3 },
14
- "Include row summaries ",
15
- React.createElement(Tag, null, data.IncludeRowSummaries ? 'yes' : 'no'))));
17
+ "Grouped Rows ",
18
+ React.createElement(Tag, null, ((_b = badgeStyle.RowScope) === null || _b === void 0 ? void 0 : _b.ExcludeGroupedRows) ? 'no' : 'yes')),
19
+ React.createElement(Text, { mt: 3 },
20
+ "Summary Rows ",
21
+ React.createElement(Tag, null, ((_c = badgeStyle.RowScope) === null || _c === void 0 ? void 0 : _c.ExcludeSummaryRows) ? 'no' : 'yes'))));
16
22
  };
17
23
  export const StyledColumnWizardSettingsSection = (props) => {
24
+ var _a, _b, _c;
18
25
  const { data } = useOnePageAdaptableWizardContext();
19
- const onIncludeGroupedRowsChanged = (IncludeGroupedRows) => {
20
- props.onChange(Object.assign(Object.assign({}, data), { IncludeGroupedRows }));
26
+ const onExcludeDataRowsChanged = (ExcludeDataRows) => {
27
+ props.onChange(Object.assign(Object.assign({}, data), { BadgeStyle: Object.assign(Object.assign({}, data.BadgeStyle), { RowScope: Object.assign(Object.assign({}, data.BadgeStyle.RowScope), { ExcludeDataRows }) }) }));
28
+ };
29
+ const onExcludeGroupedRowsChanged = (ExcludeGroupedRows) => {
30
+ props.onChange(Object.assign(Object.assign({}, data), { BadgeStyle: Object.assign(Object.assign({}, data.BadgeStyle), { RowScope: Object.assign(Object.assign({}, data.BadgeStyle.RowScope), { ExcludeGroupedRows }) }) }));
21
31
  };
22
- const onIncludeRowSummariesChanged = (IncludeRowSummaries) => {
23
- props.onChange(Object.assign(Object.assign({}, data), { IncludeRowSummaries }));
32
+ const onExcludeSummaryRowsChanged = (ExcludeSummaryRows) => {
33
+ props.onChange(Object.assign(Object.assign({}, data), { BadgeStyle: Object.assign(Object.assign({}, data.BadgeStyle), { RowScope: Object.assign(Object.assign({}, data.BadgeStyle.RowScope), { ExcludeSummaryRows }) }) }));
24
34
  };
25
35
  return (React.createElement(Tabs, null,
26
36
  React.createElement(Tabs.Tab, null, "Settings"),
27
37
  React.createElement(Tabs.Content, null,
28
38
  React.createElement(Flex, { flexDirection: "row" },
29
39
  React.createElement(FormLayout, null,
30
- React.createElement(FormRow, { label: "Include Grouped Rows:" },
40
+ React.createElement(FormRow, { label: "Exclude Data Rows:" },
41
+ React.createElement(Flex, { alignItems: "center", marginLeft: 2 },
42
+ React.createElement(CheckBox, { "data-name": "exclude-data-rows-checkbox", checked:
43
+ // @ts-ignore
44
+ (_a = data.BadgeStyle.RowScope) === null || _a === void 0 ? void 0 : _a.ExcludeDataRows, onChange: onExcludeDataRowsChanged, mr: 2 }))),
45
+ React.createElement(FormRow, { label: "Exclude Grouped Rows:" },
31
46
  React.createElement(Flex, { alignItems: "center", marginLeft: 2 },
32
- React.createElement(CheckBox, { "data-name": "include-grouped-rows-checkbox", checked: data.IncludeGroupedRows, onChange: onIncludeGroupedRowsChanged, mr: 2 }))),
33
- React.createElement(FormRow, { label: "Include Row Summaries:" },
47
+ React.createElement(CheckBox, { "data-name": "exclude-grouped-rows-checkbox", checked:
48
+ // @ts-ignore
49
+ (_b = data.BadgeStyle.RowScope) === null || _b === void 0 ? void 0 : _b.ExcludeGroupedRows, onChange: onExcludeGroupedRowsChanged, mr: 2 }))),
50
+ React.createElement(FormRow, { label: "Exclude Row Summaries:" },
34
51
  React.createElement(Flex, { alignItems: "center", marginLeft: 2 },
35
- React.createElement(CheckBox, { "data-name": "include-grouped-rows-checkbox", checked: data.IncludeRowSummaries, onChange: onIncludeRowSummariesChanged, mr: 2 }))))))));
52
+ React.createElement(CheckBox, { "data-name": "exclude-summary-rows-checkbox", checked:
53
+ // @ts-ignore
54
+ (_c = data.BadgeStyle.RowScope) === null || _c === void 0 ? void 0 : _c.ExcludeSummaryRows, onChange: onExcludeSummaryRowsChanged, mr: 2 }))),
55
+ ' ')))));
36
56
  };
@@ -204,7 +204,7 @@ export const StyledColumnWizardStyleSection = (props) => {
204
204
  };
205
205
  const handleRangeValueTypeChange = React.useCallback((rangeValueType) => {
206
206
  const ranges = rangeValueType === 'Number'
207
- ? api.scopeApi.createCellColorRangesForScope(scope)
207
+ ? api.columnScopeApi.createCellColorRangesForScope(scope)
208
208
  : [
209
209
  {
210
210
  Min: 0,
@@ -32,14 +32,32 @@ const ActionButtons = (props) => {
32
32
  })));
33
33
  };
34
34
  export const ReactActionColumnRenderer = (props) => {
35
+ var _a, _b, _c;
35
36
  const rerender = useRerender();
36
37
  const adaptable = props.context.__adaptable;
37
38
  const { actionButtons, actionColumn } = adaptable.api.internalApi.getActionButtonsAndActionColumn(props.colDef);
38
39
  if (!actionColumn || !actionButtons.length) {
39
40
  return null;
40
41
  }
41
- // TODO: see why types do not match
42
- if (adaptable.api.gridApi.isGroupRowNode(props.node) && !actionColumn.includeGroupedRows) {
42
+ const isGroupedRow = adaptable.api.gridApi.isGroupRowNode(props.node);
43
+ const isSummaryRow = adaptable.api.gridApi.isSummaryNode(props.node);
44
+ let shouldRender = true;
45
+ if (isGroupedRow) {
46
+ if ((_a = actionColumn.rowScope) === null || _a === void 0 ? void 0 : _a.ExcludeGroupedRows) {
47
+ shouldRender = false;
48
+ }
49
+ }
50
+ else if (isSummaryRow) {
51
+ if ((_b = actionColumn.rowScope) === null || _b === void 0 ? void 0 : _b.ExcludeSummaryRows) {
52
+ shouldRender = false;
53
+ }
54
+ }
55
+ else {
56
+ if ((_c = actionColumn.rowScope) === null || _c === void 0 ? void 0 : _c.ExcludeDataRows) {
57
+ shouldRender = false;
58
+ }
59
+ }
60
+ if (!shouldRender) {
43
61
  return null;
44
62
  }
45
63
  const pkValue = adaptable.getPrimaryKeyValueFromRowNode(props.node, props.api);
@@ -58,6 +76,7 @@ export const ReactActionColumnRenderer = (props) => {
58
76
  export class ActionColumnRenderer {
59
77
  // gets called once before the renderer is used
60
78
  init(params) {
79
+ var _a, _b, _c;
61
80
  const adaptable = params.context.__adaptable;
62
81
  const { actionButtons, actionColumn } = adaptable.api.internalApi.getActionButtonsAndActionColumn(params.colDef);
63
82
  if (!actionColumn || !actionButtons.length) {
@@ -66,8 +85,25 @@ export class ActionColumnRenderer {
66
85
  // create the cell
67
86
  this.eGui = document.createElement('div');
68
87
  this.eGui.className = 'ab-ActionColumn';
69
- // if its a group node then only show if set to do so
70
- if (adaptable.api.gridApi.isGroupRowNode(params.node) && !actionColumn.includeGroupedRows) {
88
+ const isGroupedRow = adaptable.api.gridApi.isGroupRowNode(params.node);
89
+ const isSummaryRow = adaptable.api.gridApi.isSummaryNode(params.node);
90
+ let shouldRender = true;
91
+ if (isGroupedRow) {
92
+ if ((_a = actionColumn.rowScope) === null || _a === void 0 ? void 0 : _a.ExcludeGroupedRows) {
93
+ shouldRender = false;
94
+ }
95
+ }
96
+ else if (isSummaryRow) {
97
+ if ((_b = actionColumn.rowScope) === null || _b === void 0 ? void 0 : _b.ExcludeSummaryRows) {
98
+ shouldRender = false;
99
+ }
100
+ }
101
+ else {
102
+ if ((_c = actionColumn.rowScope) === null || _c === void 0 ? void 0 : _c.ExcludeDataRows) {
103
+ shouldRender = false;
104
+ }
105
+ }
106
+ if (!shouldRender) {
71
107
  this.eGui.innerHTML = '';
72
108
  return;
73
109
  }