@adaptabletools/adaptable-cjs 22.0.0-canary.12 → 22.0.0-canary.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.css +9 -6
- package/index.css.map +1 -1
- package/index.d.ts +8 -8
- package/index.js +8 -8
- package/package.json +1 -1
- package/src/AdaptableOptions/UserInterfaceOptions.d.ts +2 -2
- package/src/AdaptableState/Common/AdaptableColumn.d.ts +3 -3
- package/src/AdaptableState/Common/AggregationColumns.d.ts +1 -0
- package/src/AdaptableState/Common/AggregationColumns.js +2 -1
- package/src/AdaptableState/Common/TransposeConfig.d.ts +0 -5
- package/src/AdaptableState/InitialState.d.ts +1 -1
- package/src/Api/ColumnApi.d.ts +1 -1
- package/src/Api/Implementation/ColumnApiImpl.d.ts +1 -1
- package/src/Api/Implementation/ColumnApiImpl.js +4 -4
- package/src/Api/Implementation/GridApiImpl.js +0 -2
- package/src/Api/Internal/ColumnInternalApi.d.ts +1 -1
- package/src/Api/Internal/ColumnInternalApi.js +4 -2
- package/src/Strategy/FormatColumnModule.js +2 -2
- package/src/Strategy/StyledColumnModule.js +14 -6
- package/src/Strategy/Utilities/FormatColumn/{getFormatColumnSettingsTargetItems.d.ts → getFormatColumnRowTargetItems.d.ts} +1 -1
- package/src/Strategy/Utilities/FormatColumn/getFormatColumnRowTargetItems.js +26 -0
- package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsViewItems.js +5 -13
- package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +1 -1
- package/src/Utilities/getScopeViewItems.js +1 -1
- package/src/Utilities/only.d.ts +15 -0
- package/src/Utilities/only.js +58 -0
- package/src/View/Components/ValueSelector/index.js +7 -2
- package/src/View/Export/Wizard/NewReportWizard.js +8 -8
- package/src/View/FlashingCell/Wizard/FlashingCellSettingsWizardSection.js +19 -10
- package/src/View/FlashingCell/Wizard/FlashingCellWizard.js +1 -1
- package/src/View/FormatColumn/Wizard/FormatColumnRowScopeWizardSection.d.ts +8 -0
- package/src/View/FormatColumn/Wizard/FormatColumnRowScopeWizardSection.js +86 -0
- package/src/View/FormatColumn/Wizard/FormatColumnSettingsWizardSection.js +22 -61
- package/src/View/FormatColumn/Wizard/FormatColumnWizard.js +22 -10
- package/src/View/Layout/TransposedPopup.js +0 -1
- package/src/View/Layout/Wizard/sections/ColumnsSection.js +1 -1
- package/src/View/StyledColumn/Wizard/StyledColumnBadgeRowsSection.d.ts +8 -0
- package/src/View/StyledColumn/Wizard/{StyledColumnWizardSettingsSection.js → StyledColumnBadgeRowsSection.js} +22 -22
- package/src/View/StyledColumn/Wizard/StyledColumnWizard.js +10 -11
- package/src/agGrid/AdaptableAgGrid.js +16 -0
- package/src/agGrid/AgGridAdapter.js +4 -4
- package/src/agGrid/AgGridExportAdapter.d.ts +2 -2
- package/src/agGrid/AgGridExportAdapter.js +7 -6
- package/src/env.js +2 -2
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/migration/VersionUpgrade22.js +8 -0
- package/tsconfig.cjs.tsbuildinfo +1 -1
- package/src/Strategy/Utilities/FormatColumn/getFormatColumnSettingsTargetItems.js +0 -16
- package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.d.ts +0 -8
- package/src/View/FormatColumn/Wizard/FormatColumnTargetWizardSection.js +0 -37
- package/src/View/StyledColumn/Wizard/StyledColumnWizardSettingsSection.d.ts +0 -8
- /package/src/View/FormatColumn/Wizard/{FormatColumnScopeWizardSection.d.ts → FormatColumnColumnScopeWizardSection.d.ts} +0 -0
- /package/src/View/FormatColumn/Wizard/{FormatColumnScopeWizardSection.js → FormatColumnColumnScopeWizardSection.js} +0 -0
|
@@ -611,7 +611,6 @@ class GridApiImpl extends ApiBase_1.ApiBase {
|
|
|
611
611
|
showTransposedView(transposeConfig = {}) {
|
|
612
612
|
const transposedColumnId = transposeConfig.transposedColumnId ?? this.getOptionsApi().getPrimaryKey();
|
|
613
613
|
const hideTransposedColumn = transposeConfig.hideTransposedColumn ?? true;
|
|
614
|
-
const autosize = transposeConfig.autosize ?? true;
|
|
615
614
|
const columnsToTranspose = transposeConfig.columnsToTranspose;
|
|
616
615
|
const rowsToTranspose = transposeConfig.rowsToTranspose;
|
|
617
616
|
this.getAdaptableInternalApi().showPopupWindow({
|
|
@@ -622,7 +621,6 @@ class GridApiImpl extends ApiBase_1.ApiBase {
|
|
|
622
621
|
popupProps: {
|
|
623
622
|
transposedColumnId,
|
|
624
623
|
hideTransposedColumn,
|
|
625
|
-
autosize,
|
|
626
624
|
columnsToTranspose,
|
|
627
625
|
rowsToTranspose,
|
|
628
626
|
},
|
|
@@ -32,6 +32,6 @@ export declare class ColumnInternalApi extends ApiBase {
|
|
|
32
32
|
private buildColumnHeaderContext;
|
|
33
33
|
hasArrayDataType(column: AdaptableColumn): boolean;
|
|
34
34
|
getQueryableColumnsForUIEditor(): AdaptableColumn[];
|
|
35
|
-
|
|
35
|
+
isColumnUIHidden(columnIdentifier: string | ColDef): boolean;
|
|
36
36
|
getColumnDateTypes(): AdaptableColumnDataType[];
|
|
37
37
|
}
|
|
@@ -282,9 +282,11 @@ class ColumnInternalApi extends ApiBase_1.ApiBase {
|
|
|
282
282
|
getQueryableColumnsForUIEditor() {
|
|
283
283
|
return this.getColumnApi()
|
|
284
284
|
.getQueryableColumns()
|
|
285
|
-
.filter((column) => !column.isGeneratedPivotResultColumn &&
|
|
285
|
+
.filter((column) => !column.isGeneratedPivotResultColumn &&
|
|
286
|
+
!column.isGeneratedRowGroupColumn &&
|
|
287
|
+
!column.isGeneratedSelectionColumn);
|
|
286
288
|
}
|
|
287
|
-
|
|
289
|
+
isColumnUIHidden(columnIdentifier) {
|
|
288
290
|
return this.getColumnApi().hasColumnType(columnIdentifier, AdaptableColumn_1.HIDDEN_COLUMN_TYPE);
|
|
289
291
|
}
|
|
290
292
|
getColumnDateTypes() {
|
|
@@ -13,7 +13,7 @@ const MoveFormatColumn_1 = require("../View/FormatColumn/MoveFormatColumn");
|
|
|
13
13
|
const getObjectTagsViewItems_1 = require("../Utilities/getObjectTagsViewItems");
|
|
14
14
|
const getRuleViewItems_1 = require("../Utilities/getRuleViewItems");
|
|
15
15
|
const getScopeViewItems_1 = require("../Utilities/getScopeViewItems");
|
|
16
|
-
const
|
|
16
|
+
const getFormatColumnRowTargetItems_1 = require("./Utilities/FormatColumn/getFormatColumnRowTargetItems");
|
|
17
17
|
const FormatColumnStyleWizardSection_1 = require("../View/FormatColumn/Wizard/FormatColumnStyleWizardSection");
|
|
18
18
|
class FormatColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
19
19
|
constructor(api) {
|
|
@@ -91,7 +91,7 @@ class FormatColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
91
91
|
values: [formatColumn.Name],
|
|
92
92
|
},
|
|
93
93
|
(0, getScopeViewItems_1.getScopeViewItems)(formatColumn.Scope, this.api),
|
|
94
|
-
(0,
|
|
94
|
+
(0, getFormatColumnRowTargetItems_1.getFormatColumnRowTargetItems)(formatColumn),
|
|
95
95
|
formatColumn.Rule && (0, getRuleViewItems_1.getRuleViewItems)(formatColumn.Rule, this.api),
|
|
96
96
|
{
|
|
97
97
|
name: 'Style',
|
|
@@ -191,14 +191,22 @@ class StyledColumnModule extends AdaptableModuleBase_1.AdaptableModuleBase {
|
|
|
191
191
|
});
|
|
192
192
|
}
|
|
193
193
|
if (styledColumn.BadgeStyle) {
|
|
194
|
+
let rowTypes = [];
|
|
195
|
+
if (!styledColumn.BadgeStyle?.RowScope?.ExcludeDataRows) {
|
|
196
|
+
rowTypes.push('Data');
|
|
197
|
+
}
|
|
198
|
+
if (!styledColumn.BadgeStyle?.RowScope?.ExcludeGroupRows) {
|
|
199
|
+
rowTypes.push('Group');
|
|
200
|
+
}
|
|
201
|
+
if (!styledColumn.BadgeStyle?.RowScope?.ExcludeSummaryRows) {
|
|
202
|
+
rowTypes.push('Summary');
|
|
203
|
+
}
|
|
204
|
+
if (!styledColumn.BadgeStyle?.RowScope?.ExcludeTotalRows) {
|
|
205
|
+
rowTypes.push('Total');
|
|
206
|
+
}
|
|
194
207
|
specificTypeItems.push({
|
|
195
208
|
name: 'Rows',
|
|
196
|
-
values:
|
|
197
|
-
`Data Rows: ${styledColumn.BadgeStyle?.RowScope?.ExcludeDataRows ? 'No' : 'Yes'}`,
|
|
198
|
-
`Group Rows: ${styledColumn.BadgeStyle?.RowScope?.ExcludeGroupRows ? 'No' : 'Yes'}`,
|
|
199
|
-
`Summary Rows: ${styledColumn.BadgeStyle?.RowScope?.ExcludeSummaryRows ? 'No' : 'Yes'}`,
|
|
200
|
-
`Total Rows: ${styledColumn.BadgeStyle?.RowScope?.ExcludeTotalRows ? 'No' : 'Yes'}`,
|
|
201
|
-
],
|
|
209
|
+
values: rowTypes
|
|
202
210
|
});
|
|
203
211
|
}
|
|
204
212
|
if (styledColumn.BadgeStyle) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FormatColumn } from '../../../AdaptableState/FormatColumnState';
|
|
2
|
-
export declare const
|
|
2
|
+
export declare const getFormatColumnRowTargetItems: (formatColumn: FormatColumn) => {
|
|
3
3
|
name: string;
|
|
4
4
|
values: string[];
|
|
5
5
|
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFormatColumnRowTargetItems = void 0;
|
|
4
|
+
const getFormatColumnRowTargetItems = (formatColumn) => {
|
|
5
|
+
let values = [];
|
|
6
|
+
if (formatColumn.RowScope) {
|
|
7
|
+
if (!formatColumn.RowScope.ExcludeDataRows) {
|
|
8
|
+
values.push('Data');
|
|
9
|
+
}
|
|
10
|
+
if (!formatColumn.RowScope.ExcludeGroupRows) {
|
|
11
|
+
values.push('Group');
|
|
12
|
+
}
|
|
13
|
+
if (!formatColumn.RowScope.ExcludeSummaryRows) {
|
|
14
|
+
values.push('Summary');
|
|
15
|
+
}
|
|
16
|
+
if (!formatColumn.RowScope.ExcludeTotalRows) {
|
|
17
|
+
values.push('Total');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
values = values.filter(Boolean);
|
|
21
|
+
return {
|
|
22
|
+
name: 'Rows',
|
|
23
|
+
values: values.length > 0 ? values : ['-'],
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
exports.getFormatColumnRowTargetItems = getFormatColumnRowTargetItems;
|
|
@@ -3,19 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getFormatColumnSettingsViewItems = void 0;
|
|
4
4
|
const getFormatColumnSettingsViewItems = (formatColumn) => {
|
|
5
5
|
let values = [];
|
|
6
|
-
if (formatColumn.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
values.push('Exclude Group Rows');
|
|
12
|
-
}
|
|
13
|
-
if (formatColumn.RowScope.ExcludeSummaryRows) {
|
|
14
|
-
values.push('Exclude Summary Rows');
|
|
15
|
-
}
|
|
16
|
-
if (formatColumn.RowScope.ExcludeTotalRows) {
|
|
17
|
-
values.push('Exclude Total Rows');
|
|
18
|
-
}
|
|
6
|
+
if (!formatColumn.Target || formatColumn.Target === 'cell') {
|
|
7
|
+
values.push('Target: Column Cells');
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
values.push('Target: Column Header');
|
|
19
11
|
}
|
|
20
12
|
if (formatColumn.ColumnGroupScope) {
|
|
21
13
|
values.push(`Column Groups: ${formatColumn.ColumnGroupScope === 'Both' ? 'Always' : formatColumn.ColumnGroupScope}`);
|
|
@@ -454,7 +454,7 @@ exports.aggregatedScalarExpressionFunctions = {
|
|
|
454
454
|
handler(args, context) {
|
|
455
455
|
const distinctColumnParameter = (0, expressionFunctionUtils_1.extractColumnParameter)('ONLY', args);
|
|
456
456
|
const onlyColumnName = distinctColumnParameter.value;
|
|
457
|
-
const columnType = (0, expressionFunctionUtils_1.validateColumnType)(onlyColumnName, ['number'], 'ONLY', context.adaptableApi);
|
|
457
|
+
const columnType = (0, expressionFunctionUtils_1.validateColumnType)(onlyColumnName, ['number', 'text'], 'ONLY', context.adaptableApi);
|
|
458
458
|
const groupByParameter = (0, expressionFunctionUtils_1.extractParameter)('ONLY', 'operand', ['GROUP_BY'], args, {
|
|
459
459
|
isOptional: true,
|
|
460
460
|
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IAggFuncParams } from 'ag-grid-enterprise';
|
|
2
|
+
interface OnlyAggResult {
|
|
3
|
+
distinctValues: Set<number | string>;
|
|
4
|
+
value: number | string | null;
|
|
5
|
+
toString(): string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* AG Grid aggFunc that returns the column value only when all rows in the group
|
|
9
|
+
* share the same value. Returns null when values differ (or when there are no values).
|
|
10
|
+
*
|
|
11
|
+
* Supports multiple group levels: leaf groups aggregate raw cell values while
|
|
12
|
+
* parent groups merge the metadata objects returned by child groups.
|
|
13
|
+
*/
|
|
14
|
+
export declare const only: (params: IAggFuncParams, columnId: string) => OnlyAggResult;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.only = void 0;
|
|
4
|
+
function createOnlyResult(distinctValues) {
|
|
5
|
+
const value = distinctValues.size === 1 ? distinctValues.values().next().value : null;
|
|
6
|
+
return {
|
|
7
|
+
distinctValues,
|
|
8
|
+
value,
|
|
9
|
+
toString() {
|
|
10
|
+
return value != null ? String(value) : '';
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* AG Grid aggFunc that returns the column value only when all rows in the group
|
|
16
|
+
* share the same value. Returns null when values differ (or when there are no values).
|
|
17
|
+
*
|
|
18
|
+
* Supports multiple group levels: leaf groups aggregate raw cell values while
|
|
19
|
+
* parent groups merge the metadata objects returned by child groups.
|
|
20
|
+
*/
|
|
21
|
+
const only = (params, columnId) => {
|
|
22
|
+
const { api: gridApi, rowNode: groupRowNode, values } = params;
|
|
23
|
+
// Leaf group: the lowest-level group whose children are actual data rows.
|
|
24
|
+
// We read raw cell values and collect distinct ones, bailing out early
|
|
25
|
+
// as soon as we see a second distinct value (the result would be null anyway).
|
|
26
|
+
if (groupRowNode.leafGroup) {
|
|
27
|
+
const filteredOnly = !gridApi.getGridOption('suppressAggFilteredOnly');
|
|
28
|
+
const childNodes = (filteredOnly ? groupRowNode.childrenAfterFilter : groupRowNode.childrenAfterGroup) ?? [];
|
|
29
|
+
const distinctValues = new Set();
|
|
30
|
+
for (const rowNode of childNodes) {
|
|
31
|
+
const rawValue = gridApi.getCellValue({ colKey: columnId, rowNode });
|
|
32
|
+
if (typeof rawValue === 'number' || typeof rawValue === 'string') {
|
|
33
|
+
distinctValues.add(rawValue);
|
|
34
|
+
if (distinctValues.size > 1) {
|
|
35
|
+
return createOnlyResult(distinctValues);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return createOnlyResult(distinctValues);
|
|
40
|
+
}
|
|
41
|
+
// Non-leaf group: children are other groups, not data rows.
|
|
42
|
+
// AG Grid has already called this aggFunc on each child group, so
|
|
43
|
+
// `params.values` contains the OnlyAggResult objects they returned.
|
|
44
|
+
// We merge their distinctValues sets instead of re-traversing leaf rows.
|
|
45
|
+
const mergedDistinctValues = new Set();
|
|
46
|
+
for (const childResult of values) {
|
|
47
|
+
if (childResult && typeof childResult === 'object' && 'distinctValues' in childResult) {
|
|
48
|
+
for (const val of childResult.distinctValues) {
|
|
49
|
+
mergedDistinctValues.add(val);
|
|
50
|
+
if (mergedDistinctValues.size > 1) {
|
|
51
|
+
return createOnlyResult(mergedDistinctValues);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return createOnlyResult(mergedDistinctValues);
|
|
57
|
+
};
|
|
58
|
+
exports.only = only;
|
|
@@ -164,7 +164,12 @@ const renderSelectionSection = (props) => {
|
|
|
164
164
|
const { value, options, disabled, singleSelect, toLabel, toIdentifier, } = props;
|
|
165
165
|
const selectionBox = (React.createElement(Flex_1.Box, { className: "twa:flex twa:flex-col twa:gap-2 twa:py-2" },
|
|
166
166
|
React.createElement(Flex_1.Box, { className: (0, clsx_1.default)('twa:flex twa:flex-row', 'twa:border-b twa:border-primarydark/30 twa:rounded-standard') },
|
|
167
|
-
React.createElement(
|
|
167
|
+
singleSelect ? (React.createElement(Flex_1.Box, { className: "twa:flex twa:flex-row twa:text-3 twa:font-normal" },
|
|
168
|
+
"(",
|
|
169
|
+
value.length,
|
|
170
|
+
" of ",
|
|
171
|
+
options.length,
|
|
172
|
+
" selected)")) : (React.createElement(CheckBox_1.CheckBox, { className: "twa:ml-0.5 twa:font-bold", checked: !value.length ? false : value.length === options.length ? true : null, onChange: (checked) => {
|
|
168
173
|
if (checked) {
|
|
169
174
|
props.onSelectAll();
|
|
170
175
|
}
|
|
@@ -179,7 +184,7 @@ const renderSelectionSection = (props) => {
|
|
|
179
184
|
value.length,
|
|
180
185
|
" of ",
|
|
181
186
|
options.length,
|
|
182
|
-
" selected)"))),
|
|
187
|
+
" selected)")))),
|
|
183
188
|
React.createElement("div", { className: "twa:flex-1" }),
|
|
184
189
|
React.createElement(Flex_1.Box, { className: "twa:mr-2 twa:text-2 twa:font-normal" }, props.showOnlySelectedCheckbox))));
|
|
185
190
|
return React.createElement(Flex_1.Box, { className: (0, clsx_1.default)(`${baseClassName}__header `) }, selectionBox);
|
|
@@ -39,6 +39,14 @@ const NewReportWizard = (props) => {
|
|
|
39
39
|
props.onFinishWizard(report);
|
|
40
40
|
};
|
|
41
41
|
return (React.createElement(OnePageAdaptableWizard_1.OnePageAdaptableWizard, { defaultCurrentSectionName: props.defaultCurrentSectionName, moduleInfo: props.moduleInfo, data: report, onHide: props.onCloseWizard, onFinish: handleFinish, sections: [
|
|
42
|
+
{
|
|
43
|
+
title: 'Name',
|
|
44
|
+
details: 'Enter the name of the Report',
|
|
45
|
+
isValid: ReportNameWizardSection_1.isValidReportName,
|
|
46
|
+
renderSummary: ReportNameWizardSection_1.renderReportNameSummary,
|
|
47
|
+
render: () => (React.createElement(Flex_1.Box, { className: "twa:p-2" },
|
|
48
|
+
React.createElement(ReportNameWizardSection_1.ReportNameWizardSection, { onChange: setReport }))),
|
|
49
|
+
},
|
|
42
50
|
{
|
|
43
51
|
title: 'Columns',
|
|
44
52
|
details: 'Choose the Columns you want to include in the Report',
|
|
@@ -52,14 +60,6 @@ const NewReportWizard = (props) => {
|
|
|
52
60
|
renderSummary: ReportRowsWizardSection_1.renderReportRowsSummary,
|
|
53
61
|
render: () => React.createElement(ReportRowsWizardSection_1.ReportRowsWizardSection, { onChange: setReport }),
|
|
54
62
|
},
|
|
55
|
-
{
|
|
56
|
-
title: 'Name',
|
|
57
|
-
details: 'Enter the name of the Report',
|
|
58
|
-
isValid: ReportNameWizardSection_1.isValidReportName,
|
|
59
|
-
renderSummary: ReportNameWizardSection_1.renderReportNameSummary,
|
|
60
|
-
render: () => (React.createElement(Flex_1.Box, { className: "twa:p-2" },
|
|
61
|
-
React.createElement(ReportNameWizardSection_1.ReportNameWizardSection, { onChange: setReport }))),
|
|
62
|
-
},
|
|
63
63
|
{
|
|
64
64
|
details: 'Select Report Tags',
|
|
65
65
|
title: 'Tags',
|
|
@@ -86,15 +86,12 @@ const FlashingAlertSettingsWizardSection = (props) => {
|
|
|
86
86
|
React.createElement(Tabs_1.Tabs.Content, null,
|
|
87
87
|
React.createElement(FormLayout_1.default, null,
|
|
88
88
|
React.createElement(FormLayout_1.FormRow, { label: "Name" },
|
|
89
|
-
React.createElement(Input_1.default, { "data-name": "flashing-cell-name", className: "twa:flex-1 twa:mr-3", onChange: handleNameChange, placeholder: "Enter Name", value: flashingCell.Name ?? '' })),
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
React.createElement(CheckBox_1.CheckBox, { "data-name": "flashing-target-aggFuncCell", onChange: (checked) => handleTargetChange('aggFuncCell', checked), checked: flashingCell?.FlashTarget === 'aggFuncCell' ||
|
|
96
|
-
flashingCell?.FlashTarget?.includes?.('aggFuncCell'), tabIndex: -1 }, "Aggregated Function Cell")),
|
|
97
|
-
React.createElement(FormLayout_1.FormRow, { label: "Duration" },
|
|
89
|
+
React.createElement(Input_1.default, { "data-name": "flashing-cell-name", className: "twa:flex-1 twa:mr-3", onChange: handleNameChange, placeholder: "Enter Name", value: flashingCell.Name ?? '' }))))),
|
|
90
|
+
React.createElement(Tabs_1.Tabs, { autoFocus: false, className: "twa:p-2" },
|
|
91
|
+
React.createElement(Tabs_1.Tabs.Tab, null, "Flash Duration"),
|
|
92
|
+
React.createElement(Tabs_1.Tabs.Content, null,
|
|
93
|
+
React.createElement(FormLayout_1.default, null,
|
|
94
|
+
React.createElement(FormLayout_1.FormRow, { label: "" },
|
|
98
95
|
React.createElement(Flex_1.Flex, { alignItems: "center" },
|
|
99
96
|
React.createElement(CheckBox_1.CheckBox, { "data-name": "duration-always", checked: duration === 'always', onChange: (checked) => handleTypeChange(checked ? 'always' : 'number'), className: "twa:mr-4", tabIndex: -1 }, "Always"),
|
|
100
97
|
duration !== 'always' && (React.createElement(React.Fragment, null,
|
|
@@ -102,6 +99,18 @@ const FlashingAlertSettingsWizardSection = (props) => {
|
|
|
102
99
|
const value = event.target.value;
|
|
103
100
|
setDuration(isNaN(Number(value)) ? 500 : Number(value));
|
|
104
101
|
} }),
|
|
105
|
-
React.createElement(Flex_1.Box, { className: "twa:text-2" }, "ms"))))))))
|
|
102
|
+
React.createElement(Flex_1.Box, { className: "twa:text-2" }, "ms")))))))),
|
|
103
|
+
' ',
|
|
104
|
+
React.createElement(Tabs_1.Tabs, { autoFocus: false, className: "twa:p-2" },
|
|
105
|
+
React.createElement(Tabs_1.Tabs.Tab, null, "Flash Target"),
|
|
106
|
+
React.createElement(Tabs_1.Tabs.Content, null,
|
|
107
|
+
React.createElement(FormLayout_1.default, null,
|
|
108
|
+
React.createElement(FormLayout_1.FormRow, { label: "" },
|
|
109
|
+
React.createElement(CheckBox_1.CheckBox, { "data-name": "flashing-target", onChange: (checked) => handleTargetChange('cell', checked), className: "twa:mr-3", checked: flashingCell?.FlashTarget === 'cell' ||
|
|
110
|
+
flashingCell?.FlashTarget?.includes?.('cell'), tabIndex: -1 }, "Cell"),
|
|
111
|
+
React.createElement(CheckBox_1.CheckBox, { "data-name": "flashing-target-row", className: "twa:mr-3", onChange: (checked) => handleTargetChange('row', checked), checked: flashingCell?.FlashTarget === 'row' ||
|
|
112
|
+
flashingCell?.FlashTarget?.includes?.('row'), tabIndex: -1 }, "Row"),
|
|
113
|
+
React.createElement(CheckBox_1.CheckBox, { "data-name": "flashing-target-aggFuncCell", onChange: (checked) => handleTargetChange('aggFuncCell', checked), checked: flashingCell?.FlashTarget === 'aggFuncCell' ||
|
|
114
|
+
flashingCell?.FlashTarget?.includes?.('aggFuncCell'), tabIndex: -1 }, "Aggregated Function Cell")))))));
|
|
106
115
|
};
|
|
107
116
|
exports.FlashingAlertSettingsWizardSection = FlashingAlertSettingsWizardSection;
|
|
@@ -77,7 +77,7 @@ const FlashingCellWizard = (props) => {
|
|
|
77
77
|
isValid: NewScopeComponent_1.isScopeValid,
|
|
78
78
|
render: () => React.createElement(FlashingCellScopeWizardSection_1.FlashingAlertScopeWizardSection, { onChange: setFlashingCell }),
|
|
79
79
|
renderSummary: BaseAlertScopeWizardSection_1.renderScopeSummary,
|
|
80
|
-
title: '
|
|
80
|
+
title: 'Columns',
|
|
81
81
|
},
|
|
82
82
|
{
|
|
83
83
|
details: 'Build the Rules for when Cells should Flash',
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { FormatColumn } from '../../../AdaptableState/FormatColumnState';
|
|
3
|
+
type FormatColumnRowScopeWizardSectionProps = {
|
|
4
|
+
onChange: (data: FormatColumn) => void;
|
|
5
|
+
};
|
|
6
|
+
export declare const renderFormatColumnRowScopeSummary: (data: FormatColumn) => React.JSX.Element;
|
|
7
|
+
export declare const FormatColumnRowScopeWizardSection: (props: FormatColumnRowScopeWizardSectionProps) => React.JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FormatColumnRowScopeWizardSection = exports.renderFormatColumnRowScopeSummary = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const React = tslib_1.__importStar(require("react"));
|
|
6
|
+
const FormLayout_1 = tslib_1.__importStar(require("../../../components/FormLayout"));
|
|
7
|
+
const CheckBox_1 = require("../../../components/CheckBox");
|
|
8
|
+
const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
|
|
9
|
+
const Tag_1 = require("../../../components/Tag");
|
|
10
|
+
const Flex_1 = require("../../../components/Flex");
|
|
11
|
+
const Tabs_1 = require("../../../components/Tabs");
|
|
12
|
+
const renderFormatColumnRowScopeSummary = (data) => {
|
|
13
|
+
return (React.createElement(Flex_1.Box, { className: "twa:p-2" },
|
|
14
|
+
React.createElement(Flex_1.Box, { className: "twa:mt-3" },
|
|
15
|
+
"Data Rows ",
|
|
16
|
+
React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeDataRows ? 'no' : 'yes')),
|
|
17
|
+
' ',
|
|
18
|
+
React.createElement(Flex_1.Box, { className: "twa:mt-3" },
|
|
19
|
+
"Group Rows ",
|
|
20
|
+
React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeGroupRows ? 'no' : 'yes')),
|
|
21
|
+
React.createElement(Flex_1.Box, { className: "twa:mt-3" },
|
|
22
|
+
"Summary Rows ",
|
|
23
|
+
React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeSummaryRows ? 'no' : 'yes')),
|
|
24
|
+
React.createElement(Flex_1.Box, { className: "twa:mt-3" },
|
|
25
|
+
"Total Rows ",
|
|
26
|
+
React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeTotalRows ? 'no' : 'yes'))));
|
|
27
|
+
};
|
|
28
|
+
exports.renderFormatColumnRowScopeSummary = renderFormatColumnRowScopeSummary;
|
|
29
|
+
const FormatColumnRowScopeWizardSection = (props) => {
|
|
30
|
+
const { data } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
|
|
31
|
+
const onExcludeDataRowsChanged = (includeDataRows) => {
|
|
32
|
+
props.onChange({
|
|
33
|
+
...data,
|
|
34
|
+
RowScope: {
|
|
35
|
+
...data.RowScope,
|
|
36
|
+
ExcludeDataRows: !includeDataRows,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const onExcludeGroupedRowsChanged = (includeGroupedRows) => {
|
|
41
|
+
props.onChange({
|
|
42
|
+
...data,
|
|
43
|
+
RowScope: {
|
|
44
|
+
...data.RowScope,
|
|
45
|
+
ExcludeGroupRows: !includeGroupedRows,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
const onExcludeSummaryRowsChanged = (includeSummaryRows) => {
|
|
50
|
+
props.onChange({
|
|
51
|
+
...data,
|
|
52
|
+
RowScope: {
|
|
53
|
+
...data.RowScope,
|
|
54
|
+
ExcludeSummaryRows: !includeSummaryRows,
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
const onExcludeTotalRowsChanged = (includeTotalRows) => {
|
|
59
|
+
props.onChange({
|
|
60
|
+
...data,
|
|
61
|
+
RowScope: {
|
|
62
|
+
...data.RowScope,
|
|
63
|
+
ExcludeTotalRows: !includeTotalRows,
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
return (React.createElement(Flex_1.Flex, { flexDirection: "column", style: { height: '100%' } },
|
|
68
|
+
React.createElement(Tabs_1.Tabs, { className: "twa:mb-3" },
|
|
69
|
+
React.createElement(Tabs_1.Tabs.Tab, null, "Row Types"),
|
|
70
|
+
React.createElement(Tabs_1.Tabs.Content, null,
|
|
71
|
+
React.createElement(Flex_1.Flex, { flexDirection: "row" },
|
|
72
|
+
React.createElement(FormLayout_1.default, null, data.Target === 'cell' && (React.createElement(React.Fragment, null,
|
|
73
|
+
React.createElement(FormLayout_1.FormRow, { label: "Data (leaf) Rows:" },
|
|
74
|
+
React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
|
|
75
|
+
React.createElement(CheckBox_1.CheckBox, { "data-name": "include-data-rows-checkbox", checked: !data.RowScope?.ExcludeDataRows, onChange: onExcludeDataRowsChanged, className: "twa:mr-2" }))),
|
|
76
|
+
React.createElement(FormLayout_1.FormRow, { label: "Group Rows:" },
|
|
77
|
+
React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
|
|
78
|
+
React.createElement(CheckBox_1.CheckBox, { "data-name": "include-grouped-rows-checkbox", checked: !data.RowScope?.ExcludeGroupRows, onChange: onExcludeGroupedRowsChanged, className: "twa:mr-2" }))),
|
|
79
|
+
React.createElement(FormLayout_1.FormRow, { label: "Summary Rows:" },
|
|
80
|
+
React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
|
|
81
|
+
React.createElement(CheckBox_1.CheckBox, { "data-name": "include-summary-rows-checkbox", checked: !data.RowScope?.ExcludeSummaryRows, onChange: onExcludeSummaryRowsChanged, className: "twa:mr-2" }))),
|
|
82
|
+
React.createElement(FormLayout_1.FormRow, { label: "Total Rows:" },
|
|
83
|
+
React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
|
|
84
|
+
React.createElement(CheckBox_1.CheckBox, { "data-name": "include-total-rows-checkbox", checked: !data.RowScope?.ExcludeTotalRows, onChange: onExcludeTotalRowsChanged, className: "twa:mr-2" })))))))))));
|
|
85
|
+
};
|
|
86
|
+
exports.FormatColumnRowScopeWizardSection = FormatColumnRowScopeWizardSection;
|
|
@@ -4,31 +4,23 @@ exports.FormatColumnSettingsWizardSection = exports.renderFormatColumnSettingsSu
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const React = tslib_1.__importStar(require("react"));
|
|
6
6
|
const FormLayout_1 = tslib_1.__importStar(require("../../../components/FormLayout"));
|
|
7
|
-
const CheckBox_1 = require("../../../components/CheckBox");
|
|
8
7
|
const OnePageAdaptableWizard_1 = require("../../Wizard/OnePageAdaptableWizard");
|
|
9
8
|
const Tag_1 = require("../../../components/Tag");
|
|
10
9
|
const Radio_1 = tslib_1.__importStar(require("../../../components/Radio"));
|
|
11
10
|
const Flex_1 = require("../../../components/Flex");
|
|
12
11
|
const Tabs_1 = require("../../../components/Tabs");
|
|
13
12
|
const Input_1 = tslib_1.__importDefault(require("../../../components/Input"));
|
|
13
|
+
const TypeRadio_1 = require("../../Wizard/TypeRadio");
|
|
14
14
|
const renderFormatColumnSettingsSummary = (data) => {
|
|
15
15
|
return (React.createElement(Flex_1.Box, { className: "twa:p-2" },
|
|
16
16
|
React.createElement(Flex_1.Box, { className: "twa:mt-3" },
|
|
17
17
|
"Name ",
|
|
18
18
|
React.createElement(Tag_1.Tag, null, data.Name)),
|
|
19
19
|
React.createElement(Flex_1.Box, { className: "twa:mt-3" },
|
|
20
|
-
"
|
|
21
|
-
|
|
20
|
+
"Target",
|
|
21
|
+
' ',
|
|
22
|
+
React.createElement(Tag_1.Tag, null, !data.Target || data.Target === 'cell' ? 'Column Cells' : 'Column Header')),
|
|
22
23
|
' ',
|
|
23
|
-
React.createElement(Flex_1.Box, { className: "twa:mt-3" },
|
|
24
|
-
"Group Rows ",
|
|
25
|
-
React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeGroupRows ? 'no' : 'yes')),
|
|
26
|
-
React.createElement(Flex_1.Box, { className: "twa:mt-3" },
|
|
27
|
-
"Summary Rows ",
|
|
28
|
-
React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeSummaryRows ? 'no' : 'yes')),
|
|
29
|
-
React.createElement(Flex_1.Box, { className: "twa:mt-3" },
|
|
30
|
-
"Total Rows ",
|
|
31
|
-
React.createElement(Tag_1.Tag, null, data.RowScope?.ExcludeTotalRows ? 'no' : 'yes')),
|
|
32
24
|
React.createElement(Flex_1.Box, { className: "twa:mt-3" },
|
|
33
25
|
"Apply on Column Groups:",
|
|
34
26
|
' ',
|
|
@@ -38,49 +30,22 @@ const renderFormatColumnSettingsSummary = (data) => {
|
|
|
38
30
|
};
|
|
39
31
|
exports.renderFormatColumnSettingsSummary = renderFormatColumnSettingsSummary;
|
|
40
32
|
const FormatColumnSettingsWizardSection = (props) => {
|
|
41
|
-
const { data } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
Name: event.target.value,
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
const onExcludeDataRowsChanged = (ExcludeDataRows) => {
|
|
49
|
-
props.onChange({
|
|
50
|
-
...data,
|
|
51
|
-
RowScope: {
|
|
52
|
-
...data.RowScope,
|
|
53
|
-
ExcludeDataRows,
|
|
54
|
-
},
|
|
55
|
-
});
|
|
56
|
-
};
|
|
57
|
-
const onExcludeGroupedRowsChanged = (ExcludeGroupedRows) => {
|
|
33
|
+
const { data, api } = (0, OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext)();
|
|
34
|
+
const currentTarget = data.Target ? data.Target : 'cell';
|
|
35
|
+
const handleTargetChange = (target) => {
|
|
36
|
+
// Update the formatColumn object
|
|
58
37
|
props.onChange({
|
|
59
38
|
...data,
|
|
60
|
-
|
|
61
|
-
...data.RowScope,
|
|
62
|
-
ExcludeGroupRows: ExcludeGroupedRows,
|
|
63
|
-
},
|
|
39
|
+
Target: target,
|
|
64
40
|
});
|
|
65
41
|
};
|
|
66
|
-
const
|
|
67
|
-
props.onChange({
|
|
68
|
-
...data,
|
|
69
|
-
RowScope: {
|
|
70
|
-
...data.RowScope,
|
|
71
|
-
ExcludeSummaryRows,
|
|
72
|
-
},
|
|
73
|
-
});
|
|
74
|
-
};
|
|
75
|
-
const onExcludeTotalRowsChanged = (ExcludeTotalRows) => {
|
|
42
|
+
const onNameChange = (event) => {
|
|
76
43
|
props.onChange({
|
|
77
44
|
...data,
|
|
78
|
-
|
|
79
|
-
...data.RowScope,
|
|
80
|
-
ExcludeTotalRows,
|
|
81
|
-
},
|
|
45
|
+
Name: event.target.value,
|
|
82
46
|
});
|
|
83
47
|
};
|
|
48
|
+
const behaviourSpellingVariant = api.internalApi.getCorrectEnglishVariant('Behaviour');
|
|
84
49
|
return (React.createElement(Flex_1.Flex, { flexDirection: "column", style: { height: '100%' } },
|
|
85
50
|
React.createElement(Tabs_1.Tabs, { className: "twa:mb-3" },
|
|
86
51
|
React.createElement(Tabs_1.Tabs.Tab, null, "Settings"),
|
|
@@ -89,24 +54,20 @@ const FormatColumnSettingsWizardSection = (props) => {
|
|
|
89
54
|
React.createElement(FormLayout_1.default, { className: "twa:max-w-[300px] twa:w-full" },
|
|
90
55
|
React.createElement(FormLayout_1.FormRow, { label: "Name" },
|
|
91
56
|
React.createElement(Input_1.default, { className: "twa:w-full", "data-name": "format-column-name", onChange: onNameChange, value: data?.Name ?? '' })))))),
|
|
57
|
+
React.createElement(Tabs_1.Tabs, { className: "twa:mb-3" },
|
|
58
|
+
React.createElement(Tabs_1.Tabs.Tab, null, "Target"),
|
|
59
|
+
React.createElement(Tabs_1.Tabs.Content, null,
|
|
60
|
+
React.createElement(Flex_1.Flex, { flexDirection: "column" },
|
|
61
|
+
React.createElement(TypeRadio_1.TypeRadio, { "data-name": "target-column-cell", text: 'Column Cells', description: "Column Cells are styled and formatted", checked: currentTarget === 'cell', onClick: () => handleTargetChange('cell') }),
|
|
62
|
+
React.createElement(TypeRadio_1.TypeRadio, { "data-name": "target-column-header", text: 'Column Header', description: "The Column Header is styled (Note: Conditions are not available for Column Headers)", checked: currentTarget === 'columnHeader', onClick: () => handleTargetChange('columnHeader') })))),
|
|
92
63
|
React.createElement(Tabs_1.Tabs, null,
|
|
93
|
-
React.createElement(Tabs_1.Tabs.Tab, null,
|
|
64
|
+
React.createElement(Tabs_1.Tabs.Tab, null,
|
|
65
|
+
"Column Group ",
|
|
66
|
+
behaviourSpellingVariant,
|
|
67
|
+
" "),
|
|
94
68
|
React.createElement(Tabs_1.Tabs.Content, null,
|
|
95
69
|
React.createElement(Flex_1.Flex, { flexDirection: "row" },
|
|
96
70
|
React.createElement(FormLayout_1.default, null,
|
|
97
|
-
data.Target === 'cell' && (React.createElement(React.Fragment, null,
|
|
98
|
-
React.createElement(FormLayout_1.FormRow, { label: "Exclude Data Rows:" },
|
|
99
|
-
React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
|
|
100
|
-
React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-data-rows-checkbox", checked: data.RowScope?.ExcludeDataRows, onChange: onExcludeDataRowsChanged, className: "twa:mr-2" }))),
|
|
101
|
-
React.createElement(FormLayout_1.FormRow, { label: "Exclude Group Rows:" },
|
|
102
|
-
React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
|
|
103
|
-
React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-grouped-rows-checkbox", checked: data.RowScope?.ExcludeGroupRows, onChange: onExcludeGroupedRowsChanged, className: "twa:mr-2" }))),
|
|
104
|
-
React.createElement(FormLayout_1.FormRow, { label: "Exclude Row Summaries:" },
|
|
105
|
-
React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
|
|
106
|
-
React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-summary-rows-checkbox", checked: data.RowScope?.ExcludeSummaryRows, onChange: onExcludeSummaryRowsChanged, className: "twa:mr-2" }))),
|
|
107
|
-
React.createElement(FormLayout_1.FormRow, { label: "Exclude Total Rows:" },
|
|
108
|
-
React.createElement(Flex_1.Flex, { alignItems: "center", className: "twa:ml-2" },
|
|
109
|
-
React.createElement(CheckBox_1.CheckBox, { "data-name": "exclude-total-rows-checkbox", checked: data.RowScope?.ExcludeTotalRows, onChange: onExcludeTotalRowsChanged, className: "twa:mr-2" }))))),
|
|
110
71
|
React.createElement(FormLayout_1.FormRow, { label: "Apply on Column Group:" },
|
|
111
72
|
React.createElement(Radio_1.RadioGroup, { value: data.ColumnGroupScope || 'Both', name: "columnGroupScope", orientation: "horizontal", onRadioChange: (columnGroupScope) => {
|
|
112
73
|
props.onChange({
|