@adaptabletools/adaptable-cjs 18.0.0-canary.12 → 18.0.0-canary.13
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/base.css +1 -1
- package/base.css.map +1 -1
- package/index.css +1 -1
- package/index.css.map +1 -1
- package/package.json +1 -1
- package/src/AdaptableOptions/MenuOptions.d.ts +1 -53
- package/src/AdaptableOptions/MenuOptions.js +3 -3
- package/src/Api/AdaptableApi.d.ts +2 -2
- package/src/Api/ConfigApi.d.ts +2 -3
- package/src/Api/GridApi.d.ts +2 -1
- package/src/Api/Implementation/ActionColumnApiImpl.js +3 -6
- package/src/Api/Implementation/ConfigApiImpl.js +7 -7
- package/src/Api/Implementation/GridApiImpl.d.ts +2 -1
- package/src/Api/Implementation/GridApiImpl.js +8 -1
- package/src/Api/Implementation/NoteApiImpl.d.ts +2 -2
- package/src/Api/Implementation/NoteApiImpl.js +9 -9
- package/src/Api/Implementation/UserInterfaceApiImpl.d.ts +0 -3
- package/src/Api/Implementation/UserInterfaceApiImpl.js +0 -8
- package/src/Api/Internal/ActionRowInternalApi.js +1 -1
- package/src/Api/Internal/AdaptableInternalApi.d.ts +2 -2
- package/src/Api/Internal/AdaptableInternalApi.js +11 -11
- package/src/Api/Internal/CalculatedColumnInternalApi.js +3 -2
- package/src/Api/Internal/Fdc3InternalApi.js +2 -2
- package/src/Api/Internal/FreeTextColumnInternalApi.js +3 -2
- package/src/Api/Internal/GridInternalApi.d.ts +2 -0
- package/src/Api/Internal/GridInternalApi.js +15 -0
- package/src/Api/NoteApi.d.ts +5 -5
- package/src/Api/OptionsApi.d.ts +2 -2
- package/src/Api/UserInterfaceApi.d.ts +0 -11
- package/src/PredefinedConfig/AdaptableState.d.ts +1 -1
- package/src/PredefinedConfig/CommentState.d.ts +16 -12
- package/src/PredefinedConfig/Common/TransposeConfig.d.ts +6 -0
- package/src/PredefinedConfig/Common/TransposeConfig.js +2 -0
- package/src/PredefinedConfig/Common/Types.d.ts +4 -4
- package/src/PredefinedConfig/Common/Types.js +4 -1
- package/src/PredefinedConfig/NoteState.d.ts +1 -1
- package/src/PredefinedConfig/PredefinedConfig.d.ts +1 -1
- package/src/Redux/ActionsReducers/NoteRedux.d.ts +38 -0
- package/src/Redux/ActionsReducers/{NotesRedux.js → NoteRedux.js} +26 -26
- package/src/Redux/ActionsReducers/SystemRedux.d.ts +1 -1
- package/src/Redux/Store/AdaptableStore.js +7 -7
- package/src/Strategy/{CommentsModule.d.ts → CommentModule.d.ts} +1 -5
- package/src/Strategy/{CommentsModule.js → CommentModule.js} +7 -8
- package/src/Strategy/LayoutModule.d.ts +1 -0
- package/src/Strategy/LayoutModule.js +17 -1
- package/src/Strategy/{NotesModule.d.ts → NoteModule.d.ts} +2 -1
- package/src/Strategy/{NotesModule.js → NoteModule.js} +9 -5
- package/src/Strategy/Utilities/getScopeViewItems.js +3 -0
- package/src/Utilities/Constants/ModuleConstants.d.ts +6 -6
- package/src/Utilities/Constants/ModuleConstants.js +7 -7
- package/src/Utilities/Defaults/DefaultSettingsPanel.js +2 -2
- package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +10 -0
- package/src/Utilities/ExpressionFunctions/observableExpressionFunctions.js +3 -3
- package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.d.ts +1 -1
- package/src/Utilities/ExpressionFunctions/scalarExpressionFunctions.js +15 -0
- package/src/Utilities/ObjectFactory.d.ts +3 -3
- package/src/Utilities/ObjectFactory.js +4 -24
- package/src/Utilities/Services/AggregatedScalarLiveValue.d.ts +1 -0
- package/src/Utilities/Services/AggregatedScalarLiveValue.js +12 -10
- package/src/Utilities/Services/CellPopupService.js +2 -2
- package/src/Utilities/Services/ModuleService.js +4 -0
- package/src/Utilities/Services/QueryLanguageService.js +2 -2
- package/src/Utilities/Services/SummaryService.d.ts +1 -1
- package/src/Utilities/adaptableQlUtils.d.ts +2 -0
- package/src/Utilities/adaptableQlUtils.js +18 -0
- package/src/View/AdaptableViewFactory.js +2 -2
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.d.ts +1 -1
- package/src/View/CalculatedColumn/Wizard/CalculatedColumnWizard.js +1 -1
- package/src/View/Comments/CommentsEditor.js +1 -1
- package/src/View/Comments/CommentsPopup.js +8 -4
- package/src/View/Components/Popups/GridCellPopup/GridCellPopup.js +5 -5
- package/src/View/Components/ValueSelector/index.d.ts +1 -0
- package/src/View/Components/ValueSelector/index.js +1 -1
- package/src/View/DataChangeHistory/DataChangeHistoryGrid.js +0 -1
- package/src/View/FreeTextColumn/FreeTextColumnSummary.js +1 -1
- package/src/View/FreeTextColumn/Wizard/FreeTextColumnWizard.js +3 -1
- package/src/View/Layout/TransposedPopup.js +19 -18
- package/src/View/Layout/Wizard/LayoutWizard.js +8 -0
- package/src/View/Layout/Wizard/sections/RowSummarySection.d.ts +8 -0
- package/src/View/Layout/Wizard/sections/RowSummarySection.js +146 -0
- package/src/View/Note/NotePopup.d.ts +2 -0
- package/src/View/{Notes/NotesPopup.js → Note/NotePopup.js} +5 -5
- package/src/agGrid/AdaptableAgGrid.js +4 -4
- package/src/agGrid/AgGridAdapter.d.ts +1 -0
- package/src/agGrid/AgGridAdapter.js +5 -0
- package/src/agGrid/AgGridColumnAdapter.js +3 -3
- package/src/agGrid/defaultAdaptableOptions.js +0 -7
- package/src/components/ExpressionEditor/QueryBuilder/QueryPredicateBuilder.js +2 -1
- package/src/components/ExpressionEditor/QueryBuilder/utils.d.ts +0 -1
- package/src/components/ExpressionEditor/QueryBuilder/utils.js +3 -17
- package/src/components/icons/note.js +2 -2
- package/src/env.js +2 -2
- package/src/metamodel/adaptable.metamodel.d.ts +36 -11
- package/src/metamodel/adaptable.metamodel.js +1 -1
- package/src/parser/src/parser.js +117 -1257
- package/src/parser/src/predicate/mapExpressionToQlPredicate.js +1 -1
- package/src/parser/src/predicate/mapQlPredicateToExpression.js +2 -1
- package/src/parser/src/types.d.ts +2 -2
- package/src/types.d.ts +1 -0
- package/tsconfig.cjs.tsbuildinfo +1 -1
- package/src/Redux/ActionsReducers/NotesRedux.d.ts +0 -38
- package/src/View/Notes/NotesPopup.d.ts +0 -2
- /package/src/Api/Internal/{NotesInternalApi.d.ts → NoteInternalApi.d.ts} +0 -0
- /package/src/Api/Internal/{NotesInternalApi.js → NoteInternalApi.js} +0 -0
- /package/src/View/{Notes → Note}/NoteEditor.d.ts +0 -0
- /package/src/View/{Notes → Note}/NoteEditor.js +0 -0
|
@@ -116,6 +116,7 @@ exports.aggregatedScalarExpressionFunctions = {
|
|
|
116
116
|
],
|
|
117
117
|
examples: ['SUM([colA])', 'SUM([colA], GROUP_BY([colB]))'],
|
|
118
118
|
category: 'aggregation',
|
|
119
|
+
inputs: ['number'],
|
|
119
120
|
},
|
|
120
121
|
PERCENTAGE: {
|
|
121
122
|
handler(args, context) {
|
|
@@ -259,6 +260,7 @@ exports.aggregatedScalarExpressionFunctions = {
|
|
|
259
260
|
],
|
|
260
261
|
examples: ['AVG([colA])', 'AVG([colA], GROUP_BY([colB]))', 'AVG([colA], WEIGHT([colB]))'],
|
|
261
262
|
category: 'aggregation',
|
|
263
|
+
inputs: ['number'],
|
|
262
264
|
},
|
|
263
265
|
MEDIAN: {
|
|
264
266
|
handler(args, context) {
|
|
@@ -323,6 +325,7 @@ exports.aggregatedScalarExpressionFunctions = {
|
|
|
323
325
|
],
|
|
324
326
|
examples: ['MEDIAN([colA])', 'MEDIAN([colA], GROUP_BY([colB]))'],
|
|
325
327
|
category: 'aggregation',
|
|
328
|
+
inputs: ['number'],
|
|
326
329
|
},
|
|
327
330
|
MODE: {
|
|
328
331
|
handler(args, context) {
|
|
@@ -384,6 +387,7 @@ exports.aggregatedScalarExpressionFunctions = {
|
|
|
384
387
|
],
|
|
385
388
|
examples: ['MODE([colA])', 'MODE([colA], GROUP_BY([colB]))'],
|
|
386
389
|
category: 'aggregation',
|
|
390
|
+
inputs: [['number'], ['text']],
|
|
387
391
|
},
|
|
388
392
|
DISTINCT: {
|
|
389
393
|
handler(args, context) {
|
|
@@ -431,6 +435,7 @@ exports.aggregatedScalarExpressionFunctions = {
|
|
|
431
435
|
],
|
|
432
436
|
examples: ['DISTINCT([colA])', 'DISTINCT([colA], GROUP_BY([colB]))'],
|
|
433
437
|
category: 'aggregation',
|
|
438
|
+
inputs: [['number'], ['text']],
|
|
434
439
|
},
|
|
435
440
|
ONLY: {
|
|
436
441
|
handler(args, context) {
|
|
@@ -480,6 +485,7 @@ exports.aggregatedScalarExpressionFunctions = {
|
|
|
480
485
|
],
|
|
481
486
|
examples: ['ONLY([colA])', 'ONLY([colA], GROUP_BY([colB]))'],
|
|
482
487
|
category: 'aggregation',
|
|
488
|
+
inputs: [['number'], ['text']],
|
|
483
489
|
},
|
|
484
490
|
STD_DEVIATION: {
|
|
485
491
|
handler(args, context) {
|
|
@@ -537,6 +543,7 @@ exports.aggregatedScalarExpressionFunctions = {
|
|
|
537
543
|
],
|
|
538
544
|
examples: ['ONLY([colA])', 'ONLY([colA], GROUP_BY([colB]))'],
|
|
539
545
|
category: 'aggregation',
|
|
546
|
+
inputs: ['number'],
|
|
540
547
|
},
|
|
541
548
|
MIN: {
|
|
542
549
|
handler(args, context) {
|
|
@@ -588,6 +595,7 @@ exports.aggregatedScalarExpressionFunctions = {
|
|
|
588
595
|
],
|
|
589
596
|
examples: ['MIN([colA])', 'MIN([colA], GROUP_BY([colB]))'],
|
|
590
597
|
category: 'aggregation',
|
|
598
|
+
inputs: ['number'],
|
|
591
599
|
},
|
|
592
600
|
MAX: {
|
|
593
601
|
handler(args, context) {
|
|
@@ -639,6 +647,7 @@ exports.aggregatedScalarExpressionFunctions = {
|
|
|
639
647
|
],
|
|
640
648
|
examples: ['MIN([colA])', 'MIN([colA], GROUP_BY([colB]))'],
|
|
641
649
|
category: 'aggregation',
|
|
650
|
+
inputs: ['number'],
|
|
642
651
|
},
|
|
643
652
|
QUANT: {
|
|
644
653
|
handler(args, context) {
|
|
@@ -837,6 +846,7 @@ exports.aggregatedScalarExpressionFunctions = {
|
|
|
837
846
|
],
|
|
838
847
|
examples: ['COUNT([colA])', 'COUNT([colA], GROUP_BY([colB]))'],
|
|
839
848
|
category: 'aggregation',
|
|
849
|
+
inputs: [['number'], ['text']],
|
|
840
850
|
},
|
|
841
851
|
OVER: {
|
|
842
852
|
handler(args, context) {
|
|
@@ -279,10 +279,10 @@ const isLastElementMinValue = (values) => {
|
|
|
279
279
|
};
|
|
280
280
|
// useful for functions which do NOT have an initial change (ex. GRID_CHANGE NONE)
|
|
281
281
|
const getDataChangedInfoStub = (context) => {
|
|
282
|
-
var _a;
|
|
282
|
+
var _a, _b;
|
|
283
283
|
let rowNodeStub;
|
|
284
284
|
if (!context.filterFn) {
|
|
285
|
-
rowNodeStub = context.adaptableApi.gridApi.getFirstRowNode();
|
|
285
|
+
rowNodeStub = (_a = context.node) !== null && _a !== void 0 ? _a : context.adaptableApi.gridApi.getFirstRowNode();
|
|
286
286
|
}
|
|
287
287
|
else {
|
|
288
288
|
// if there is a WHERE clause defined, find the first rowNode which satisfies the condition
|
|
@@ -297,7 +297,7 @@ const getDataChangedInfoStub = (context) => {
|
|
|
297
297
|
const rowNode = rowNodeStub;
|
|
298
298
|
if (rowNode) {
|
|
299
299
|
const primaryKeyValue = context.adaptableApi.gridApi.getPrimaryKeyValueForRowNode(rowNode);
|
|
300
|
-
const columnId = (
|
|
300
|
+
const columnId = (_b = context.adaptableApi.columnApi.getQueryableColumns()[0]) === null || _b === void 0 ? void 0 : _b.columnId;
|
|
301
301
|
const oldValue = context.adaptableApi.gridApi.getCellRawValue(primaryKeyValue, columnId);
|
|
302
302
|
const column = context.adaptableApi.columnApi.getColumnWithColumnId(columnId);
|
|
303
303
|
const newValue = oldValue;
|
|
@@ -2,6 +2,6 @@ import { ExpressionFunction } from '../../parser/src/types';
|
|
|
2
2
|
/**
|
|
3
3
|
* List of all the Scalar Functions available in AdaptableQL
|
|
4
4
|
*/
|
|
5
|
-
export type ScalarFunctionName = 'ADD' | 'SUB' | 'MUL' | 'DIV' | 'MOD' | 'POW' | 'ABS' | 'CEILING' | 'FLOOR' | 'ROUND' | 'MIN' | 'MAX' | 'AVG' | 'DATE' | 'NOW' | 'CURRENT_DAY' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR' | 'ADD_DAYS' | 'ADD_WEEKS' | 'ADD_MONTHS' | 'ADD_YEARS' | 'DIFF_DAYS' | 'DIFF_WEEKS' | 'DIFF_MONTHS' | 'DIFF_YEARS' | 'SUB_STRING' | 'REPLACE' | 'COALESCE' | 'NULL' | 'LEN' | 'UPPER' | 'LOWER' | 'CONCAT' | 'IF' | 'CASE' | 'COL' | 'VAR' | 'TO_ARRAY' | 'QUERY' | 'IS_BLANK' | 'IS_NOT_BLANK';
|
|
5
|
+
export type ScalarFunctionName = 'ADD' | 'SUB' | 'MUL' | 'DIV' | 'MOD' | 'POW' | 'ABS' | 'CEILING' | 'FLOOR' | 'ROUND' | 'MIN' | 'MAX' | 'AVG' | 'DATE' | 'NOW' | 'CURRENT_DAY' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR' | 'ADD_DAYS' | 'ADD_WEEKS' | 'ADD_MONTHS' | 'ADD_YEARS' | 'DIFF_DAYS' | 'DIFF_WEEKS' | 'DIFF_MONTHS' | 'DIFF_YEARS' | 'SUB_STRING' | 'REPLACE' | 'COALESCE' | 'NULL' | 'LEN' | 'UPPER' | 'LOWER' | 'CONCAT' | 'IF' | 'CASE' | 'COL' | 'FIELD' | 'VAR' | 'TO_ARRAY' | 'QUERY' | 'IS_BLANK' | 'IS_NOT_BLANK';
|
|
6
6
|
export declare const scalarExpressionFunctions: Record<ScalarFunctionName, ExpressionFunction>;
|
|
7
7
|
export declare const scalarExpressionFunctionNames: ScalarFunctionName[];
|
|
@@ -72,6 +72,21 @@ exports.scalarExpressionFunctions = {
|
|
|
72
72
|
category: 'special',
|
|
73
73
|
returnType: 'any',
|
|
74
74
|
},
|
|
75
|
+
FIELD: {
|
|
76
|
+
handler(args, context) {
|
|
77
|
+
var _a, _b;
|
|
78
|
+
const fieldName = args[0];
|
|
79
|
+
if (StringExtensions_1.default.IsNullOrEmpty(fieldName)) {
|
|
80
|
+
throw new ExpressionEvaluationError_1.ExpressionEvaluationError('FIELD', 'requires a field name');
|
|
81
|
+
}
|
|
82
|
+
return (_a = context.adaptableApi) === null || _a === void 0 ? void 0 : _a.internalApi.getValueUsingField((_b = context.node) === null || _b === void 0 ? void 0 : _b.data, fieldName);
|
|
83
|
+
},
|
|
84
|
+
description: 'Returns the value of a row field (not necessarily mapped to a column). If the field is nested, use dot notation (e.g. "nested.fieldName")',
|
|
85
|
+
signatures: ['FIELD(fieldName:string)'],
|
|
86
|
+
examples: ['FIELD("fieldName")', 'FIELD("nested.fieldName")'],
|
|
87
|
+
category: 'special',
|
|
88
|
+
returnType: 'any',
|
|
89
|
+
},
|
|
75
90
|
QUERY: {
|
|
76
91
|
handler(args, context) {
|
|
77
92
|
var _a, _b;
|
|
@@ -21,14 +21,14 @@ import { Shortcut } from '../PredefinedConfig/ShortcutState';
|
|
|
21
21
|
import { IPushPullReport } from '../PredefinedConfig/SystemState';
|
|
22
22
|
import { NotificationsOptions } from '../AdaptableOptions/NotificationsOptions';
|
|
23
23
|
import { CellSummmary } from '../PredefinedConfig/Common/CellSummary';
|
|
24
|
-
import { AdaptableTheme, BaseContext, ChartDefinition, ColumnFilter, CommentThread, CustomDisplayFormatterContext, FlashingCellDefinition, GridDataChangedInfo, SystemFilterPredicateId } from '../types';
|
|
24
|
+
import { AdaptableTheme, BaseContext, ChartDefinition, ColumnFilter, CommentThread, CustomDisplayFormatterContext, FlashingCellDefinition, GridDataChangedInfo, SpecialColumnSettings, SystemFilterPredicateId } from '../types';
|
|
25
25
|
import { IRowNode } from '@ag-grid-community/core';
|
|
26
26
|
import { AdaptableApi, AdaptableComment, BadgeStyleDefinition, CellAddress, NamedQuery } from '../../types';
|
|
27
27
|
import { ToastOptions } from '../components/Toastify';
|
|
28
28
|
import { StyledColumn } from '../PredefinedConfig/StyledColumnState';
|
|
29
29
|
export declare function CreateEmptyCustomSort(): CustomSort;
|
|
30
30
|
export declare function CreateAdaptableComment(text: string, api: AdaptableApi): AdaptableComment;
|
|
31
|
-
export declare function CreateEmptyCalculatedColumn(): CalculatedColumn;
|
|
31
|
+
export declare function CreateEmptyCalculatedColumn(defaultSpecialColumnSettings: Partial<SpecialColumnSettings>): CalculatedColumn;
|
|
32
32
|
export declare function CreateEmptyNamedQuery(expression?: string): NamedQuery;
|
|
33
33
|
export declare function CreateEmptyPlusMinusNudge(): PlusMinusNudge;
|
|
34
34
|
export declare function CreateGenericAlert(alertHeader: string, alertMessage: string, alertDefinition: AlertDefinition): AdaptableGenericAlert;
|
|
@@ -51,7 +51,7 @@ export declare function CreateReportSchedule(reportName: string): ReportSchedule
|
|
|
51
51
|
export declare function CreateEmptySchedule(): Schedule;
|
|
52
52
|
export declare function CreateEmptyShortcut(): Shortcut;
|
|
53
53
|
export declare function CreateEmptyFormatColumn(): FormatColumn;
|
|
54
|
-
export declare function CreateEmptyFreeTextColumn(): FreeTextColumn;
|
|
54
|
+
export declare function CreateEmptyFreeTextColumn(defaultSpecialColumnSettings: Partial<SpecialColumnSettings>): FreeTextColumn;
|
|
55
55
|
export declare function CreateEmptyLayout(layout?: Partial<Layout> & {
|
|
56
56
|
Name: string;
|
|
57
57
|
}, adaptableColumns?: AdaptableColumn[]): Layout;
|
|
@@ -23,7 +23,7 @@ function CreateAdaptableComment(text, api) {
|
|
|
23
23
|
return comment;
|
|
24
24
|
}
|
|
25
25
|
exports.CreateAdaptableComment = CreateAdaptableComment;
|
|
26
|
-
function CreateEmptyCalculatedColumn() {
|
|
26
|
+
function CreateEmptyCalculatedColumn(defaultSpecialColumnSettings) {
|
|
27
27
|
return {
|
|
28
28
|
Uuid: (0, Uuid_1.createUuid)(),
|
|
29
29
|
ColumnId: GeneralConstants_1.EMPTY_STRING,
|
|
@@ -31,17 +31,7 @@ function CreateEmptyCalculatedColumn() {
|
|
|
31
31
|
ScalarExpression: GeneralConstants_1.EMPTY_STRING,
|
|
32
32
|
},
|
|
33
33
|
// need to create some defaults - which we will change later
|
|
34
|
-
CalculatedColumnSettings: {
|
|
35
|
-
DataType: undefined,
|
|
36
|
-
Filterable: true,
|
|
37
|
-
Resizable: true,
|
|
38
|
-
Groupable: false,
|
|
39
|
-
Sortable: true,
|
|
40
|
-
Pivotable: false,
|
|
41
|
-
Aggregatable: false,
|
|
42
|
-
SuppressMenu: false,
|
|
43
|
-
SuppressMovable: false,
|
|
44
|
-
},
|
|
34
|
+
CalculatedColumnSettings: Object.assign(Object.assign({}, defaultSpecialColumnSettings), { DataType: undefined }),
|
|
45
35
|
};
|
|
46
36
|
}
|
|
47
37
|
exports.CreateEmptyCalculatedColumn = CreateEmptyCalculatedColumn;
|
|
@@ -273,24 +263,14 @@ function CreateEmptyFormatColumn() {
|
|
|
273
263
|
};
|
|
274
264
|
}
|
|
275
265
|
exports.CreateEmptyFormatColumn = CreateEmptyFormatColumn;
|
|
276
|
-
function CreateEmptyFreeTextColumn() {
|
|
266
|
+
function CreateEmptyFreeTextColumn(defaultSpecialColumnSettings) {
|
|
277
267
|
return {
|
|
278
268
|
Uuid: (0, Uuid_1.createUuid)(),
|
|
279
269
|
ColumnId: GeneralConstants_1.EMPTY_STRING,
|
|
280
270
|
DefaultValue: GeneralConstants_1.EMPTY_STRING,
|
|
281
271
|
FreeTextStoredValues: [],
|
|
282
272
|
TextEditor: 'Inline',
|
|
283
|
-
FreeTextColumnSettings: {
|
|
284
|
-
DataType: 'String',
|
|
285
|
-
Filterable: true,
|
|
286
|
-
Resizable: true,
|
|
287
|
-
Groupable: false,
|
|
288
|
-
Sortable: true,
|
|
289
|
-
Pivotable: false,
|
|
290
|
-
Aggregatable: false,
|
|
291
|
-
SuppressMenu: false,
|
|
292
|
-
SuppressMovable: false,
|
|
293
|
-
},
|
|
273
|
+
FreeTextColumnSettings: Object.assign(Object.assign({}, defaultSpecialColumnSettings), { DataType: 'String' }),
|
|
294
274
|
};
|
|
295
275
|
}
|
|
296
276
|
exports.CreateEmptyFreeTextColumn = CreateEmptyFreeTextColumn;
|
|
@@ -63,7 +63,7 @@ class AggregatedScalarLiveValue {
|
|
|
63
63
|
var _a, _b;
|
|
64
64
|
if ((_a = this.expressionEvaluation.aggregationParams.groupBy) === null || _a === void 0 ? void 0 : _a.length) {
|
|
65
65
|
const groupColumns = this.expressionEvaluation.aggregationParams.groupBy.map((groupByParam) => groupByParam.field);
|
|
66
|
-
const groupKeys = groupColumns.map((groupColumnName) => this.
|
|
66
|
+
const groupKeys = groupColumns.map((groupColumnName) => this.getRowNodeValueForColumnId(rowNode, groupColumnName));
|
|
67
67
|
return (_b = this.aggregationResult.deepMap.get(groupKeys)) === null || _b === void 0 ? void 0 : _b.reducerResults[this.aggregationReducerName];
|
|
68
68
|
}
|
|
69
69
|
return this.getGlobalAggregatedValue();
|
|
@@ -71,6 +71,11 @@ class AggregatedScalarLiveValue {
|
|
|
71
71
|
getGlobalAggregatedValue() {
|
|
72
72
|
return this.aggregationResult.reducerResults[this.aggregationReducerName];
|
|
73
73
|
}
|
|
74
|
+
getRowNodeValueForColumnId(rowNode, columnId) {
|
|
75
|
+
const rawValue = this.adaptableApi.gridApi.getRawValueFromRowNode(rowNode, columnId);
|
|
76
|
+
// we need to convert the Date object to a number, otherwise the grouping will not work (each Date instance is unique)
|
|
77
|
+
return rawValue instanceof Date ? rawValue.getTime() : rawValue;
|
|
78
|
+
}
|
|
74
79
|
computeAggregatedValue(expressionEvaluation) {
|
|
75
80
|
var _a;
|
|
76
81
|
const gridRowNodes = expressionEvaluation.getRowNodes
|
|
@@ -80,18 +85,16 @@ class AggregatedScalarLiveValue {
|
|
|
80
85
|
});
|
|
81
86
|
// we iterate over the RowNode list (we need this to handle complex column values (nested values, valueGetters etc)
|
|
82
87
|
// so we will map the fieldNames to RowNode.data
|
|
83
|
-
const mapReducerValueGetter = (
|
|
84
|
-
return (rowNode) =>
|
|
85
|
-
return this.adaptableApi.gridApi.getRawValueFromRowNode(rowNode, fieldName);
|
|
86
|
-
};
|
|
88
|
+
const mapReducerValueGetter = (columnId) => {
|
|
89
|
+
return (rowNode) => this.getRowNodeValueForColumnId(rowNode, columnId);
|
|
87
90
|
};
|
|
88
91
|
Object.values(expressionEvaluation.aggregationParams.reducers).forEach((aggregationReducer) => {
|
|
89
92
|
aggregationReducer.getter = mapReducerValueGetter(aggregationReducer.field);
|
|
90
93
|
// nullify the field to force the fallback on the getter fn
|
|
91
94
|
aggregationReducer.field = null;
|
|
92
95
|
});
|
|
93
|
-
const mapGroupByToKey = (
|
|
94
|
-
return (_unusableProperty, rowNode) => this.
|
|
96
|
+
const mapGroupByToKey = (columnId) => {
|
|
97
|
+
return (_unusableProperty, rowNode) => this.getRowNodeValueForColumnId(rowNode, columnId);
|
|
95
98
|
};
|
|
96
99
|
(_a = expressionEvaluation.aggregationParams.groupBy) === null || _a === void 0 ? void 0 : _a.forEach((groupByDef) => {
|
|
97
100
|
groupByDef.toKey = mapGroupByToKey(groupByDef.field);
|
|
@@ -99,11 +102,10 @@ class AggregatedScalarLiveValue {
|
|
|
99
102
|
let aggregatedRowNodes = gridRowNodes;
|
|
100
103
|
if (expressionEvaluation.sortByColumn) {
|
|
101
104
|
const sortByColumn = expressionEvaluation.sortByColumn;
|
|
102
|
-
const getRowNodeValue = (rowNode, columnId) => this.adaptableApi.gridApi.getRawValueFromRowNode(rowNode, columnId);
|
|
103
105
|
// currently, we support only ascending sorting
|
|
104
106
|
aggregatedRowNodes.sort((first, second) => {
|
|
105
|
-
const firstValue =
|
|
106
|
-
const secondValue =
|
|
107
|
+
const firstValue = this.getRowNodeValueForColumnId(first, sortByColumn);
|
|
108
|
+
const secondValue = this.getRowNodeValueForColumnId(second, sortByColumn);
|
|
107
109
|
if (firstValue < secondValue) {
|
|
108
110
|
return -1;
|
|
109
111
|
}
|
|
@@ -78,7 +78,7 @@ class CellPopupService {
|
|
|
78
78
|
this.hidePopup();
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
|
-
const cellNotes = this.adaptable.api.noteApi.
|
|
81
|
+
const cellNotes = this.adaptable.api.noteApi.getNotesForCell(cellPosition);
|
|
82
82
|
const cellComments = this.adaptable.api.commentApi.getCommentThread(cellPosition);
|
|
83
83
|
const hasNotesOrComments = (cellNotes === null || cellNotes === void 0 ? void 0 : cellNotes.length) || cellComments;
|
|
84
84
|
// call only if it is different
|
|
@@ -96,7 +96,7 @@ class CellPopupService {
|
|
|
96
96
|
return;
|
|
97
97
|
}
|
|
98
98
|
// if open but this has no note, close
|
|
99
|
-
const cellNotes = this.adaptable.api.noteApi.
|
|
99
|
+
const cellNotes = this.adaptable.api.noteApi.getNotesForCell(cellAddress);
|
|
100
100
|
const cellComments = this.adaptable.api.commentApi.getCommentThread(cellAddress);
|
|
101
101
|
const hasNotesOrComments = (cellNotes === null || cellNotes === void 0 ? void 0 : cellNotes.length) || cellComments;
|
|
102
102
|
if (openCellAddress && !hasNotesOrComments) {
|
|
@@ -105,6 +105,8 @@ class ModuleService {
|
|
|
105
105
|
return learnUrl + 'handbook-exporting';
|
|
106
106
|
case 'ColumnFilter':
|
|
107
107
|
return learnUrl + 'handbook-column-filter';
|
|
108
|
+
case 'Comment':
|
|
109
|
+
return learnUrl + 'handbook-comments';
|
|
108
110
|
case 'GridFilter':
|
|
109
111
|
return learnUrl + 'handbook-grid-filter';
|
|
110
112
|
case 'FlashingCell':
|
|
@@ -117,6 +119,8 @@ class ModuleService {
|
|
|
117
119
|
return learnUrl + 'handbook-monitoring-grid-info';
|
|
118
120
|
case 'Layout':
|
|
119
121
|
return learnUrl + 'handbook-layouts';
|
|
122
|
+
case 'Note':
|
|
123
|
+
return learnUrl + 'handbook-notes';
|
|
120
124
|
case 'PlusMinus':
|
|
121
125
|
return learnUrl + 'handbook-editing-plus-minus';
|
|
122
126
|
case 'NamedQuery':
|
|
@@ -52,7 +52,7 @@ class QueryLanguageService {
|
|
|
52
52
|
const moduleExpressionFunctions = this.getModuleExpressionFunctionsMap(module);
|
|
53
53
|
const booleanAndScalarFunctions = this.getBooleanAndScalarFunctions(moduleExpressionFunctions);
|
|
54
54
|
const reactiveExpression$ = parser.evaluate(reactiveExpression, {
|
|
55
|
-
node:
|
|
55
|
+
node: this.adaptableApi.gridApi.getFirstRowNode(),
|
|
56
56
|
adaptableApi: this.adaptableApi,
|
|
57
57
|
userName: this.adaptableApi.optionsApi.getUserName(),
|
|
58
58
|
adaptableId: this.adaptableApi.optionsApi.getAdaptableId(),
|
|
@@ -66,7 +66,7 @@ class QueryLanguageService {
|
|
|
66
66
|
const moduleExpressionFunctionsMap = this.getModuleExpressionFunctionsMap(module);
|
|
67
67
|
const booleanAndScalarFunctions = this.getBooleanAndScalarFunctions(moduleExpressionFunctionsMap);
|
|
68
68
|
const aggregationEvaluation = parser.evaluate(aggregationExpression, {
|
|
69
|
-
node:
|
|
69
|
+
node: this.adaptableApi.gridApi.getFirstRowNode(),
|
|
70
70
|
adaptableApi: this.adaptableApi,
|
|
71
71
|
userName: this.adaptableApi.optionsApi.getUserName(),
|
|
72
72
|
adaptableId: this.adaptableApi.optionsApi.getAdaptableId(),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IRowNode } from '@ag-grid-community/core';
|
|
2
|
-
import { AggregatedScalarLiveValue } from './AggregatedScalarLiveValue';
|
|
3
2
|
import { AdaptableApi, AdaptableModule } from '../../types';
|
|
3
|
+
import { AggregatedScalarLiveValue } from './AggregatedScalarLiveValue';
|
|
4
4
|
export declare const summarySupportedExpressions: readonly ["SUM", "AVG", "MIN", "MAX", "COUNT", "MEDIAN", "MODE", "DISTINCT", "ONLY", "STD_DEVIATION"];
|
|
5
5
|
export type SummarySupportedExpression = (typeof summarySupportedExpressions)[number];
|
|
6
6
|
export type SumaryConfig = {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapColumnDataTypeToExpressionFunctionType = void 0;
|
|
4
|
+
const mapColumnDataTypeToExpressionFunctionType = (dataType) => {
|
|
5
|
+
if (dataType === 'Number') {
|
|
6
|
+
return 'number';
|
|
7
|
+
}
|
|
8
|
+
if (dataType === 'Boolean') {
|
|
9
|
+
return 'boolean';
|
|
10
|
+
}
|
|
11
|
+
if (dataType === 'String') {
|
|
12
|
+
return 'text';
|
|
13
|
+
}
|
|
14
|
+
if (dataType === 'Date') {
|
|
15
|
+
return 'date';
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
exports.mapColumnDataTypeToExpressionFunctionType = mapColumnDataTypeToExpressionFunctionType;
|
|
@@ -33,7 +33,7 @@ const StatusBarPopup_1 = require("./StatusBar/StatusBarPopup");
|
|
|
33
33
|
const ChartingViewPanel_1 = require("./Charting/ChartingViewPanel");
|
|
34
34
|
const GridFilterPopup_1 = require("./GridFilter/GridFilterPopup");
|
|
35
35
|
const ColumnInfoPopup_1 = require("./ColumnInfo/ColumnInfoPopup");
|
|
36
|
-
const
|
|
36
|
+
const NotePopup_1 = require("./Note/NotePopup");
|
|
37
37
|
const CommentsPopup_1 = require("./Comments/CommentsPopup");
|
|
38
38
|
const DataImportPopup_1 = require("./DataImport/DataImportPopup");
|
|
39
39
|
exports.AdaptableViewFactory = {
|
|
@@ -50,7 +50,7 @@ exports.AdaptableViewFactory = {
|
|
|
50
50
|
ToolPanelPopup: ToolPanelPopup_1.ToolPanelPopup,
|
|
51
51
|
SystemStatusPopup: SystemStatusPopup_1.SystemStatusPopup,
|
|
52
52
|
DataChangeHistoryPopup: DataChangeHistoryPopup_1.DataChangeHistoryPopup,
|
|
53
|
-
|
|
53
|
+
NotePopup: NotePopup_1.NotePopup,
|
|
54
54
|
CommentsPopup: CommentsPopup_1.CommentsPopup,
|
|
55
55
|
DataImportPopup: DataImportPopup_1.DataImportPopup,
|
|
56
56
|
GridFilterPopup: GridFilterPopup_1.GridFilterPopup,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { CalculatedColumn } from '../../../types';
|
|
3
3
|
import { AdaptableOnePageWizardProps } from '../../Wizard/Interface/IAdaptableWizard';
|
|
4
4
|
export declare const calculatedColumnTypes: readonly ["ScalarExpression", "AggregatedScalarExpression", "CumulativeAggregatedExpression", "QuantileAggregatedExpression"];
|
|
5
|
-
export type ExpressionType =
|
|
5
|
+
export type ExpressionType = typeof calculatedColumnTypes[number];
|
|
6
6
|
export interface CalculatedColumnWizardProps extends AdaptableOnePageWizardProps<CalculatedColumn> {
|
|
7
7
|
}
|
|
8
8
|
export declare const CalculatedColumnWizard: (props: CalculatedColumnWizardProps) => JSX.Element;
|
|
@@ -40,7 +40,7 @@ const CalculatedColumnWizard = (props) => {
|
|
|
40
40
|
return (0, Helper_1.cloneObject)(calculatedColumn);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
return ObjectFactory_1.default.CreateEmptyCalculatedColumn();
|
|
43
|
+
return ObjectFactory_1.default.CreateEmptyCalculatedColumn(adaptable.api.gridApi.internalApi.deriveSpecialColumnSettingsFromAgGridDefaultColDef());
|
|
44
44
|
});
|
|
45
45
|
const dispatch = (0, react_redux_1.useDispatch)();
|
|
46
46
|
const isEdit = Boolean(props.data) || ((_a = props.popupParams) === null || _a === void 0 ? void 0 : _a.action) === 'Edit';
|
|
@@ -89,7 +89,7 @@ const CommentsEditor = (props) => {
|
|
|
89
89
|
}
|
|
90
90
|
}, mt: 2, mb: "2", width: "100%", placeholder: "Write new comment" }),
|
|
91
91
|
React.createElement(SimpleButton_1.default, { width: "100%", variant: "raised", onClick: () => {
|
|
92
|
-
adaptable.api.settingsPanelApi.openSettingsPanel('
|
|
92
|
+
adaptable.api.settingsPanelApi.openSettingsPanel('Comment');
|
|
93
93
|
adaptable.api.internalApi.getCellPopupService().hidePopup();
|
|
94
94
|
} },
|
|
95
95
|
React.createElement(rebass_1.Box, { mr: 2 },
|
|
@@ -49,14 +49,18 @@ const CellComments = (props) => {
|
|
|
49
49
|
const columnFriendlyName = adaptable.api.columnApi.getFriendlyNameForColumnId(props.commentThread.ColumnId);
|
|
50
50
|
return (React.createElement(Panel_1.default, { mb: 2, header: React.createElement(rebass_1.Flex, { width: "100%", alignItems: "center" },
|
|
51
51
|
React.createElement(rebass_1.Box, { mr: 2 },
|
|
52
|
-
"Cell Value:
|
|
52
|
+
React.createElement("b", null, "Cell Value:"),
|
|
53
|
+
" ",
|
|
53
54
|
cellValue),
|
|
54
55
|
React.createElement(rebass_1.Box, { mr: 2 },
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
React.createElement("b", null,
|
|
57
|
+
primaryKeyHeader,
|
|
58
|
+
":"),
|
|
59
|
+
" ",
|
|
57
60
|
props.commentThread.PrimaryKeyValue),
|
|
58
61
|
React.createElement(rebass_1.Box, null,
|
|
59
|
-
"Column:
|
|
62
|
+
React.createElement("b", null, "Column:"),
|
|
63
|
+
" ",
|
|
60
64
|
columnFriendlyName),
|
|
61
65
|
React.createElement(rebass_1.Box, { flex: 1 }),
|
|
62
66
|
React.createElement(AdaptableButton_1.AdaptableButtonComponent, { mr: 1, variant: "text", icon: "visibility-on", onClick: () => {
|
|
@@ -5,15 +5,15 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const React = tslib_1.__importStar(require("react"));
|
|
6
6
|
const react_redux_1 = require("react-redux");
|
|
7
7
|
const rebass_1 = require("rebass");
|
|
8
|
-
const
|
|
8
|
+
const NoteRedux_1 = require("../../../../Redux/ActionsReducers/NoteRedux");
|
|
9
9
|
const SystemRedux_1 = require("../../../../Redux/ActionsReducers/SystemRedux");
|
|
10
10
|
const AdaptableContext_1 = require("../../../AdaptableContext");
|
|
11
11
|
const CommentsEditor_1 = require("../../../Comments/CommentsEditor");
|
|
12
|
-
const NoteEditor_1 = require("../../../
|
|
12
|
+
const NoteEditor_1 = require("../../../Note/NoteEditor");
|
|
13
13
|
const CellPopup_1 = require("../../CellPopup");
|
|
14
14
|
const ConnectedNoteEditor = ({ enableEditMode }) => {
|
|
15
15
|
const { api } = (0, AdaptableContext_1.useAdaptable)();
|
|
16
|
-
const isReadonly = api.entitlementApi.isModuleReadOnlyEntitlement('
|
|
16
|
+
const isReadonly = api.entitlementApi.isModuleReadOnlyEntitlement('Note');
|
|
17
17
|
const editMode = (0, react_redux_1.useSelector)((state) => (0, SystemRedux_1.SystemCommentsAndNotesEditModeSelector)(state.System));
|
|
18
18
|
const cellPopupService = api.internalApi.getCellPopupService();
|
|
19
19
|
const cellAddress = (0, react_redux_1.useSelector)((state) => (0, SystemRedux_1.SystemCommentsAndNotesSelector)(state.System));
|
|
@@ -21,12 +21,12 @@ const ConnectedNoteEditor = ({ enableEditMode }) => {
|
|
|
21
21
|
// Only handle first note for now
|
|
22
22
|
// Later we can handle multiple notes
|
|
23
23
|
note,] = (0, react_redux_1.useSelector)((state) => {
|
|
24
|
-
return cellAddress ? (0,
|
|
24
|
+
return cellAddress ? (0, NoteRedux_1.GetNotesSelector)(state.Note, cellAddress) : [];
|
|
25
25
|
});
|
|
26
26
|
const handleNoteChange = React.useCallback((value) => {
|
|
27
27
|
api.noteApi.updateNoteText(value, note);
|
|
28
28
|
}, [note]);
|
|
29
|
-
return (React.createElement(rebass_1.Flex, { onClick: () => enableEditMode(), flexDirection: "column", className: "ab-
|
|
29
|
+
return (React.createElement(rebass_1.Flex, { onClick: () => enableEditMode(), flexDirection: "column", className: "ab-NotePopup" },
|
|
30
30
|
React.createElement(NoteEditor_1.NoteEditor, { isReadonly: isReadonly, editMode: editMode, key: note === null || note === void 0 ? void 0 : note.Uuid, onClose: () => cellPopupService.hidePopup(), note: note === null || note === void 0 ? void 0 : note.Text, onNoteChange: (value) => handleNoteChange(value) })));
|
|
31
31
|
};
|
|
32
32
|
const GridCellPopup = (props) => {
|
|
@@ -26,6 +26,7 @@ export type ValueSelectorProps<OPTION_TYPE, ID_TYPE extends number | string> = {
|
|
|
26
26
|
onShowSelectedOnlyChange?: (selectedOnly: boolean) => void;
|
|
27
27
|
isOptionDisabled?: (option: OPTION_TYPE) => boolean;
|
|
28
28
|
disabled?: boolean;
|
|
29
|
+
style?: React.CSSProperties;
|
|
29
30
|
};
|
|
30
31
|
export declare function ValueSelector<OPTION_TYPE, ID_TYPE extends number | string>(props: ValueSelectorProps<OPTION_TYPE, ID_TYPE>): JSX.Element;
|
|
31
32
|
export declare namespace ValueSelector {
|
|
@@ -115,7 +115,7 @@ function ValueSelector(props) {
|
|
|
115
115
|
};
|
|
116
116
|
const showOnlySelectedCheckbox = (React.createElement(CheckBox_1.CheckBox, { disabled: !value.length, checked: selectedOnly, onChange: setSelectedOnly }, showSelectedOnlyLabel !== null && showSelectedOnlyLabel !== void 0 ? showSelectedOnlyLabel : 'Show Selected Only'));
|
|
117
117
|
const showSelectedOnlyPosition = (_a = props.showSelectedOnlyPosition) !== null && _a !== void 0 ? _a : 'floating';
|
|
118
|
-
return (React.createElement(rebass_1.Flex, { className: baseClassName, flexDirection: "column", flex: 1 },
|
|
118
|
+
return (React.createElement(rebass_1.Flex, { style: props.style, className: baseClassName, flexDirection: "column", flex: 1 },
|
|
119
119
|
React.createElement(rebass_1.Flex, { mb: 1 },
|
|
120
120
|
showFilterInput && filter ? (React.createElement(AdaptableFormControlTextClear_1.AdaptableFormControlTextClear, { value: searchInputValue, OnTextChange: setSearchInputValue, placeholder: "Type to search", style: { flex: 1, border: 0, margin: 3 } })) : (React.createElement(rebass_1.Box, { flex: 1 })),
|
|
121
121
|
showSelectedOnlyPosition === 'top' && React.createElement(rebass_1.Box, { ml: 20 }, showOnlySelectedCheckbox)),
|
|
@@ -49,7 +49,7 @@ class FreeTextColumnSummaryComponent extends React.Component {
|
|
|
49
49
|
this.state.editedAdaptableObject && (React.createElement(FreeTextColumnWizard_1.FreeTextColumnWizard, { moduleInfo: this.props.moduleInfo, data: this.state.editedAdaptableObject, configEntities: this.props.FreeTextColumns, onCloseWizard: () => this.onCloseWizard(), onFinishWizard: this.onFinishWizard }))));
|
|
50
50
|
}
|
|
51
51
|
onNew() {
|
|
52
|
-
let configEntity = ObjectFactory_1.ObjectFactory.CreateEmptyFreeTextColumn();
|
|
52
|
+
let configEntity = ObjectFactory_1.ObjectFactory.CreateEmptyFreeTextColumn(this.props.api.gridApi.internalApi.deriveSpecialColumnSettingsFromAgGridDefaultColDef());
|
|
53
53
|
configEntity.ColumnId = this.props.summarisedColumn.columnId;
|
|
54
54
|
this.setState({
|
|
55
55
|
editedAdaptableObject: configEntity,
|
|
@@ -12,8 +12,10 @@ const ObjectFactory_1 = tslib_1.__importDefault(require("../../../Utilities/Obje
|
|
|
12
12
|
const FreeTextColumnRedux = tslib_1.__importStar(require("../../../Redux/ActionsReducers/FreeTextColumnRedux"));
|
|
13
13
|
const react_redux_1 = require("react-redux");
|
|
14
14
|
const ObjectTagsWizardSection_1 = require("../../Wizard/ObjectTagsWizardSection");
|
|
15
|
+
const AdaptableContext_1 = require("../../AdaptableContext");
|
|
15
16
|
const FreeTextColumnWizard = (props) => {
|
|
16
17
|
var _a;
|
|
18
|
+
const adaptable = (0, AdaptableContext_1.useAdaptable)();
|
|
17
19
|
const allFreeTextColumns = (0, react_redux_1.useSelector)((state) => state.FreeTextColumn.FreeTextColumns);
|
|
18
20
|
const [freeTextColumn, setFreeTextColumn] = (0, react_1.useState)(() => {
|
|
19
21
|
var _a, _b;
|
|
@@ -23,7 +25,7 @@ const FreeTextColumnWizard = (props) => {
|
|
|
23
25
|
if (((_a = props.popupParams) === null || _a === void 0 ? void 0 : _a.action) === 'Edit' && ((_b = props.popupParams) === null || _b === void 0 ? void 0 : _b.column)) {
|
|
24
26
|
return allFreeTextColumns.find((column) => column.ColumnId === props.popupParams.column.columnId);
|
|
25
27
|
}
|
|
26
|
-
return ObjectFactory_1.default.CreateEmptyFreeTextColumn();
|
|
28
|
+
return ObjectFactory_1.default.CreateEmptyFreeTextColumn(adaptable.api.gridApi.internalApi.deriveSpecialColumnSettingsFromAgGridDefaultColDef());
|
|
27
29
|
});
|
|
28
30
|
const dispatch = (0, react_redux_1.useDispatch)();
|
|
29
31
|
const isEdit = props.data || ((_a = props.popupParams) === null || _a === void 0 ? void 0 : _a.action) === 'Edit';
|