@adaptabletools/adaptable 18.0.0-canary.11 → 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 +5 -1
- package/base.css.map +1 -1
- package/index.css +7 -1
- package/index.css.map +1 -1
- package/package.json +1 -1
- package/src/AdaptableOptions/AdaptableOptions.d.ts +2 -2
- package/src/AdaptableOptions/ColumnOptions.d.ts +7 -4
- package/src/AdaptableOptions/CommentOptions.d.ts +9 -7
- package/src/AdaptableOptions/MenuOptions.d.ts +1 -53
- package/src/AdaptableOptions/MenuOptions.js +3 -3
- package/src/AdaptableOptions/NoteOptions.d.ts +4 -1
- package/src/Api/AdaptableApi.d.ts +4 -4
- package/src/Api/ColumnApi.d.ts +4 -0
- package/src/Api/CommentApi.d.ts +11 -12
- package/src/Api/ConfigApi.d.ts +3 -4
- package/src/Api/EventApi.d.ts +7 -9
- package/src/Api/Events/CommentChanged.d.ts +11 -0
- package/src/Api/GridApi.d.ts +6 -1
- package/src/Api/Implementation/ActionColumnApiImpl.js +3 -6
- package/src/Api/Implementation/AdaptableApiImpl.d.ts +2 -2
- package/src/Api/Implementation/AdaptableApiImpl.js +2 -2
- package/src/Api/Implementation/ApiBase.d.ts +2 -2
- package/src/Api/Implementation/ApiBase.js +1 -1
- package/src/Api/Implementation/ColumnApiImpl.d.ts +1 -0
- package/src/Api/Implementation/ColumnApiImpl.js +10 -0
- package/src/Api/Implementation/CommentsApiImpl.d.ts +1 -2
- package/src/Api/Implementation/ConfigApiImpl.d.ts +2 -2
- package/src/Api/Implementation/ConfigApiImpl.js +8 -8
- package/src/Api/Implementation/GridApiImpl.d.ts +3 -1
- package/src/Api/Implementation/GridApiImpl.js +17 -1
- package/src/Api/Implementation/{NotesApiImpl.d.ts → NoteApiImpl.d.ts} +8 -8
- package/src/Api/Implementation/{NotesApiImpl.js → NoteApiImpl.js} +12 -12
- package/src/Api/Implementation/OptionsApiImpl.d.ts +4 -5
- package/src/Api/Implementation/OptionsApiImpl.js +2 -12
- 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 +3 -3
- package/src/Api/Internal/AdaptableInternalApi.js +11 -11
- package/src/Api/Internal/CalculatedColumnInternalApi.js +3 -2
- package/src/Api/Internal/ExportInternalApi.d.ts +2 -1
- package/src/Api/Internal/ExportInternalApi.js +4 -1
- 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/Internal/{NotesInternalApi.d.ts → NoteInternalApi.d.ts} +1 -1
- package/src/Api/Internal/{NotesInternalApi.js → NoteInternalApi.js} +1 -1
- package/src/Api/NoteApi.d.ts +48 -0
- package/src/Api/OptionsApi.d.ts +8 -12
- package/src/Api/UserInterfaceApi.d.ts +0 -11
- package/src/PredefinedConfig/AdaptableState.d.ts +2 -2
- package/src/PredefinedConfig/CommentState.d.ts +27 -23
- package/src/PredefinedConfig/Common/RowSummary.d.ts +6 -0
- package/src/PredefinedConfig/Common/TransposeConfig.d.ts +6 -0
- package/src/PredefinedConfig/Common/Types.d.ts +4 -4
- package/src/PredefinedConfig/Common/Types.js +4 -1
- package/src/PredefinedConfig/{NotesState.d.ts → NoteState.d.ts} +3 -3
- package/src/PredefinedConfig/NoteState.js +1 -0
- package/src/PredefinedConfig/PredefinedConfig.d.ts +2 -2
- package/src/PredefinedConfig/Selection/GridCell.d.ts +13 -0
- package/src/PredefinedConfig/SystemState.d.ts +2 -3
- package/src/Redux/ActionsReducers/NoteRedux.d.ts +38 -0
- package/src/Redux/ActionsReducers/{NotesRedux.js → NoteRedux.js} +21 -21
- package/src/Redux/ActionsReducers/SystemRedux.d.ts +1 -1
- package/src/Redux/ActionsReducers/SystemRedux.js +3 -3
- package/src/Redux/Store/AdaptableStore.js +11 -17
- package/src/Strategy/{CommentsModule.d.ts → CommentModule.d.ts} +1 -5
- package/src/Strategy/{CommentsModule.js → CommentModule.js} +9 -10
- 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} +11 -7
- package/src/Strategy/Utilities/getScopeViewItems.js +3 -0
- package/src/Utilities/Constants/ModuleConstants.d.ts +6 -6
- package/src/Utilities/Constants/ModuleConstants.js +6 -6
- 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/Interface/IReportService.d.ts +1 -4
- package/src/Utilities/Services/ModuleService.js +4 -0
- package/src/Utilities/Services/QueryLanguageService.js +2 -2
- package/src/Utilities/Services/ReportService.d.ts +7 -5
- package/src/Utilities/Services/ReportService.js +238 -22
- package/src/Utilities/Services/SummaryService.d.ts +1 -1
- package/src/Utilities/adaptableQlUtils.d.ts +2 -0
- package/src/Utilities/adaptableQlUtils.js +14 -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/NewScopeComponent.js +2 -2
- package/src/View/Components/Popups/GridCellPopup/GridCellPopup.js +6 -6
- 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/LayoutViewPanel.js +2 -1
- package/src/View/Layout/TransposedPopup.js +19 -18
- package/src/View/Layout/Wizard/LayoutWizard.js +11 -2
- package/src/View/Layout/Wizard/sections/RowSummarySection.d.ts +8 -0
- package/src/View/Layout/Wizard/sections/RowSummarySection.js +140 -0
- package/src/View/Note/NotePopup.d.ts +2 -0
- package/src/View/{Notes/NotesPopup.js → Note/NotePopup.js} +6 -6
- package/src/View/SpecialColumnSettingsWizardStep.js +1 -1
- package/src/agGrid/AdaptableAgGrid.d.ts +2 -0
- package/src/agGrid/AdaptableAgGrid.js +97 -58
- package/src/agGrid/AgGridAdapter.d.ts +2 -0
- package/src/agGrid/AgGridAdapter.js +8 -0
- package/src/agGrid/AgGridColumnAdapter.d.ts +1 -1
- package/src/agGrid/AgGridColumnAdapter.js +4 -4
- package/src/agGrid/AgGridOptionsService.d.ts +4 -1
- package/src/agGrid/AgGridOptionsService.js +22 -0
- 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 +1 -14
- package/src/components/icons/note.js +2 -2
- package/src/env.js +2 -2
- package/src/metamodel/adaptable.metamodel.d.ts +77 -14
- 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 +23 -20
- package/tsconfig.esm.tsbuildinfo +1 -1
- package/src/Api/Events/CommentsChangedInfo.d.ts +0 -5
- package/src/Api/NotesApi.d.ts +0 -48
- package/src/PredefinedConfig/CellAddress.d.ts +0 -13
- package/src/PredefinedConfig/CellAddress.js +0 -4
- package/src/Redux/ActionsReducers/NotesRedux.d.ts +0 -38
- package/src/View/Notes/NotesPopup.d.ts +0 -2
- /package/src/Api/Events/{CommentsChangedInfo.js → CommentChanged.js} +0 -0
- /package/src/Api/{NotesApi.js → NoteApi.js} +0 -0
- /package/src/PredefinedConfig/{NotesState.js → Common/TransposeConfig.js} +0 -0
- /package/src/View/{Notes → Note}/NoteEditor.d.ts +0 -0
- /package/src/View/{Notes → Note}/NoteEditor.js +0 -0
|
@@ -14,6 +14,7 @@ import { AggregationsSection, AggregationsSectionSummary, isAggregationsSectionV
|
|
|
14
14
|
import { SortSection, SortSectionSummary } from './sections/SortSection';
|
|
15
15
|
import { FilterSection, FilterSectionSummary, isColumnFiltersValid, } from './sections/FilterSection';
|
|
16
16
|
import { GridFilterSection, GridFilterSectionSummary, isGridFiltersValid, } from './sections/GridFilterSection';
|
|
17
|
+
import { RowSummarySection } from './sections/RowSummarySection';
|
|
17
18
|
export const LayoutWizard = (props) => {
|
|
18
19
|
var _a, _b;
|
|
19
20
|
const dispatch = useDispatch();
|
|
@@ -33,8 +34,9 @@ export const LayoutWizard = (props) => {
|
|
|
33
34
|
preparedLayout = ObjectFactory.CreateEmptyLayout({ Name: '' });
|
|
34
35
|
}
|
|
35
36
|
if (preparedLayout.SuppressAggFuncInHeader === undefined) {
|
|
36
|
-
preparedLayout.SuppressAggFuncInHeader =
|
|
37
|
-
|
|
37
|
+
preparedLayout.SuppressAggFuncInHeader = !!adaptable.agGridAdapter
|
|
38
|
+
.getAgGridApi()
|
|
39
|
+
.getGridOption('suppressAggFuncInHeader');
|
|
38
40
|
}
|
|
39
41
|
return preparedLayout;
|
|
40
42
|
});
|
|
@@ -106,6 +108,13 @@ export const LayoutWizard = (props) => {
|
|
|
106
108
|
render: () => (React.createElement(Box, { p: 2, style: { height: '100%' } },
|
|
107
109
|
React.createElement(RowGroupingSection, { onChange: setLayout }))),
|
|
108
110
|
},
|
|
111
|
+
{
|
|
112
|
+
title: 'Row Summaries',
|
|
113
|
+
details: 'Configure Row Summaries',
|
|
114
|
+
renderSummary: () => React.createElement(RowGroupingSectionSummary, null),
|
|
115
|
+
render: () => (React.createElement(Box, { p: 2, style: { height: '100%' } },
|
|
116
|
+
React.createElement(RowSummarySection, { onChange: setLayout }))),
|
|
117
|
+
},
|
|
109
118
|
{
|
|
110
119
|
title: 'Aggregations',
|
|
111
120
|
isVisible: () => layoutSupportedFeatures.AggregationColumns,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Layout } from '../../../../../types';
|
|
3
|
+
export declare const RowGroupingSectionSummary: React.FunctionComponent;
|
|
4
|
+
interface RowSummarySectionProps {
|
|
5
|
+
onChange: (data: Layout) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const RowSummarySection: React.FunctionComponent<RowSummarySectionProps>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Box, Flex } from 'rebass';
|
|
3
|
+
import FormLayout, { FormRow } from '../../../../components/FormLayout';
|
|
4
|
+
import Panel from '../../../../components/Panel';
|
|
5
|
+
import { Select } from '../../../../components/Select';
|
|
6
|
+
import SimpleButton from '../../../../components/SimpleButton';
|
|
7
|
+
import { Tabs } from '../../../../components/Tabs';
|
|
8
|
+
import { Tag } from '../../../../components/Tag';
|
|
9
|
+
import { mapColumnDataTypeToExpressionFunctionType } from '../../../../Utilities/adaptableQlUtils';
|
|
10
|
+
import { LayoutModuleId } from '../../../../Utilities/Constants/ModuleConstants';
|
|
11
|
+
import { summarySupportedExpressions } from '../../../../Utilities/Services/SummaryService';
|
|
12
|
+
import { sortWithOrderArray } from '../../../../Utilities/sortWithOrder';
|
|
13
|
+
import { useAdaptable } from '../../../AdaptableContext';
|
|
14
|
+
import { ValueSelector } from '../../../Components/ValueSelector';
|
|
15
|
+
import { useOnePageAdaptableWizardContext } from '../../../Wizard/OnePageAdaptableWizard';
|
|
16
|
+
import { columnFilter } from './Utilities';
|
|
17
|
+
const getAvailableExpressionsForColumnType = (columnType, availableScalarExpressions) => {
|
|
18
|
+
const inputType = mapColumnDataTypeToExpressionFunctionType(columnType);
|
|
19
|
+
return Object.entries(availableScalarExpressions !== null && availableScalarExpressions !== void 0 ? availableScalarExpressions : {})
|
|
20
|
+
.map(([expression, expressionDef]) => {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
let firstArg = null;
|
|
23
|
+
if (!summarySupportedExpressions.includes(expression)) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
if (Array.isArray((_a = expressionDef === null || expressionDef === void 0 ? void 0 : expressionDef.inputs) === null || _a === void 0 ? void 0 : _a[0])) {
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
firstArg = (_b = expressionDef.inputs.find((input) => input.includes(inputType))) === null || _b === void 0 ? void 0 : _b[0];
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
firstArg = expressionDef.inputs[0];
|
|
32
|
+
}
|
|
33
|
+
if (inputType === firstArg) {
|
|
34
|
+
return expression;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
})
|
|
40
|
+
.filter(Boolean);
|
|
41
|
+
};
|
|
42
|
+
export const RowGroupingSectionSummary = () => {
|
|
43
|
+
var _a;
|
|
44
|
+
const adaptable = useAdaptable();
|
|
45
|
+
const { data: layout } = useOnePageAdaptableWizardContext();
|
|
46
|
+
return (React.createElement(Box, null, ((_a = layout.RowGroupedColumns) === null || _a === void 0 ? void 0 : _a.length) ? (layout.RowGroupedColumns.map((columnId) => (React.createElement(Tag, { mr: 1, key: columnId }, adaptable.api.columnApi.getFriendlyNameForColumnId(columnId))))) : (React.createElement(Tag, null, "No Row Grouping"))));
|
|
47
|
+
};
|
|
48
|
+
const RowSummaryEditor = ({ rowSummary, onChange, availableScalarExpressions, onDelete, }) => {
|
|
49
|
+
const { data: layout } = useOnePageAdaptableWizardContext();
|
|
50
|
+
const adaptable = useAdaptable();
|
|
51
|
+
const columns = React.useMemo(() => {
|
|
52
|
+
const colIds = adaptable.api.columnApi
|
|
53
|
+
.getColumns()
|
|
54
|
+
.filter((column) => {
|
|
55
|
+
var _a, _b;
|
|
56
|
+
if (!['Number', 'String'].includes(column.dataType))
|
|
57
|
+
return false;
|
|
58
|
+
return (_b = (_a = layout.Columns) === null || _a === void 0 ? void 0 : _a.includes) === null || _b === void 0 ? void 0 : _b.call(_a, column.columnId);
|
|
59
|
+
})
|
|
60
|
+
.map((c) => c.columnId);
|
|
61
|
+
return sortWithOrderArray(colIds, Object.keys(rowSummary.ColumnsMap), {
|
|
62
|
+
sortUnorderedItems: false,
|
|
63
|
+
}).map((colId) => adaptable.api.columnApi.getColumnWithColumnId(colId));
|
|
64
|
+
}, [rowSummary.ColumnsMap]);
|
|
65
|
+
return (React.createElement(Panel, { header: React.createElement(Flex, { style: { width: '100%' } },
|
|
66
|
+
React.createElement(Flex, { flex: 1, alignItems: "center" }, "Row Summary"),
|
|
67
|
+
React.createElement(SimpleButton, { icon: "delete", onClick: () => {
|
|
68
|
+
onDelete();
|
|
69
|
+
} })), p: 2 },
|
|
70
|
+
React.createElement(FormLayout, null,
|
|
71
|
+
React.createElement(FormRow, { label: "Position" },
|
|
72
|
+
React.createElement(Select, { options: [
|
|
73
|
+
{
|
|
74
|
+
label: 'Top',
|
|
75
|
+
value: 'Top',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
label: 'Bottom',
|
|
79
|
+
value: 'Bottom',
|
|
80
|
+
},
|
|
81
|
+
], value: rowSummary.Position, onChange: (position) => {
|
|
82
|
+
onChange(Object.assign(Object.assign({}, rowSummary), { Position: position }));
|
|
83
|
+
} }))),
|
|
84
|
+
React.createElement(Flex, { flexDirection: 'column', mt: 2, mb: 1 },
|
|
85
|
+
React.createElement(Flex, { alignItems: "center", flex: 1, mb: 2 }, "Column Aggregations"),
|
|
86
|
+
React.createElement(Panel, { bodyProps: { maxHeight: '100%' }, style: { height: 360 } },
|
|
87
|
+
React.createElement(ValueSelector, { style: { maxHeight: '100%' }, showFilterInput: true, filter: columnFilter, toIdentifier: (column) => column.columnId, toLabel: (option) => { var _a; return (_a = option.friendlyName) !== null && _a !== void 0 ? _a : option.columnId; }, options: columns, xSelectedLabel: () => {
|
|
88
|
+
return 'Active Aggregations:';
|
|
89
|
+
}, toListLabel: (column) => {
|
|
90
|
+
var _a, _b;
|
|
91
|
+
const label = (_a = column.friendlyName) !== null && _a !== void 0 ? _a : column.columnId;
|
|
92
|
+
if (!(column.columnId in ((_b = rowSummary.ColumnsMap) !== null && _b !== void 0 ? _b : {}))) {
|
|
93
|
+
return label;
|
|
94
|
+
}
|
|
95
|
+
const expressionOptions = getAvailableExpressionsForColumnType(column.dataType, availableScalarExpressions).map((expression) => ({
|
|
96
|
+
label: expression,
|
|
97
|
+
value: expression,
|
|
98
|
+
}));
|
|
99
|
+
const expression = rowSummary.ColumnsMap[column.columnId];
|
|
100
|
+
return (React.createElement(Flex, null,
|
|
101
|
+
React.createElement(Flex, { mr: 2, alignItems: 'center' }, label),
|
|
102
|
+
React.createElement(Select, { value: expression, options: expressionOptions, onChange: (expression) => {
|
|
103
|
+
onChange(Object.assign(Object.assign({}, rowSummary), { ColumnsMap: Object.assign(Object.assign({}, rowSummary.ColumnsMap), { [column.columnId]: expression }) }));
|
|
104
|
+
} })));
|
|
105
|
+
}, value: Object.keys(rowSummary.ColumnsMap), onChange: (colIds) => {
|
|
106
|
+
const newColumnsMap = {};
|
|
107
|
+
colIds.forEach((colId) => {
|
|
108
|
+
var _a;
|
|
109
|
+
newColumnsMap[colId] = (_a = rowSummary.ColumnsMap[colId]) !== null && _a !== void 0 ? _a : null;
|
|
110
|
+
});
|
|
111
|
+
onChange(Object.assign(Object.assign({}, rowSummary), { ColumnsMap: newColumnsMap }));
|
|
112
|
+
} })))));
|
|
113
|
+
};
|
|
114
|
+
export const RowSummarySection = (props) => {
|
|
115
|
+
const adaptable = useAdaptable();
|
|
116
|
+
const { data: layout } = useOnePageAdaptableWizardContext();
|
|
117
|
+
const availableScalarExpressions = React.useMemo(() => {
|
|
118
|
+
return adaptable.api.internalApi
|
|
119
|
+
.getQueryLanguageService()
|
|
120
|
+
.getModuleExpressionFunctionsMap(LayoutModuleId).aggregatedScalarFunctions;
|
|
121
|
+
}, []);
|
|
122
|
+
return (React.createElement(Tabs, { style: { height: '100%' } },
|
|
123
|
+
React.createElement(Tabs.Tab, null, "Row Summaries"),
|
|
124
|
+
React.createElement(Tabs.Content, null,
|
|
125
|
+
React.createElement("div", null,
|
|
126
|
+
React.createElement(Flex, { mb: 1 },
|
|
127
|
+
React.createElement(Flex, { flex: 1 }),
|
|
128
|
+
React.createElement(SimpleButton, { icon: "plus" }, "Add Row Summary")),
|
|
129
|
+
layout.RowSummaries.map((rowSummary, index) => {
|
|
130
|
+
return (React.createElement(RowSummaryEditor, { key: index, onDelete: () => {
|
|
131
|
+
const newSummaries = [...layout.RowSummaries];
|
|
132
|
+
newSummaries.splice(index, 1);
|
|
133
|
+
props.onChange(Object.assign(Object.assign({}, layout), { RowSummaries: newSummaries }));
|
|
134
|
+
}, availableScalarExpressions: availableScalarExpressions, rowSummary: rowSummary, onChange: (rowSummary) => {
|
|
135
|
+
const newSummaries = [...layout.RowSummaries];
|
|
136
|
+
newSummaries[index] = rowSummary;
|
|
137
|
+
props.onChange(Object.assign(Object.assign({}, layout), { RowSummaries: newSummaries }));
|
|
138
|
+
} }));
|
|
139
|
+
})))));
|
|
140
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useSelector } from 'react-redux';
|
|
3
3
|
import { DataSource, InfiniteTable } from '../../components/InfiniteTable';
|
|
4
|
-
import { GetAllNotesSelector } from '../../Redux/ActionsReducers/
|
|
4
|
+
import { GetAllNotesSelector } from '../../Redux/ActionsReducers/NoteRedux';
|
|
5
5
|
import { useAdaptable } from '../AdaptableContext';
|
|
6
6
|
import { AdaptableButtonComponent } from '../Components/AdaptableButton';
|
|
7
7
|
import { PopupPanel } from '../Components/Popups/AdaptablePopup/PopupPanel';
|
|
@@ -12,10 +12,10 @@ const tableDOMProps = {
|
|
|
12
12
|
// minHeight: 600,
|
|
13
13
|
},
|
|
14
14
|
};
|
|
15
|
-
export const
|
|
15
|
+
export const NotePopup = (props) => {
|
|
16
16
|
const adaptable = useAdaptable();
|
|
17
17
|
const primaryKeyHeader = adaptable.api.columnApi.getFriendlyNameForColumnId(adaptable.api.columnApi.getPrimaryKeyColumn().columnId);
|
|
18
|
-
const allNotes = useSelector((state) => GetAllNotesSelector(state.
|
|
18
|
+
const allNotes = useSelector((state) => GetAllNotesSelector(state.Note));
|
|
19
19
|
const columnsMap = React.useMemo(() => {
|
|
20
20
|
const columns = {
|
|
21
21
|
primaryKey: {
|
|
@@ -45,8 +45,8 @@ export const NotesPopup = (props) => {
|
|
|
45
45
|
defaultWidth: 50,
|
|
46
46
|
render: (params) => {
|
|
47
47
|
return (React.createElement(AdaptableButtonComponent, { variant: "text", icon: "delete", onClick: () => {
|
|
48
|
-
const note = adaptable.api.
|
|
49
|
-
adaptable.api.
|
|
48
|
+
const note = adaptable.api.noteApi.getNoteByUuid(params.data.Uuid);
|
|
49
|
+
adaptable.api.noteApi.deleteNote(note);
|
|
50
50
|
} }));
|
|
51
51
|
},
|
|
52
52
|
},
|
|
@@ -62,7 +62,7 @@ export const NotesPopup = (props) => {
|
|
|
62
62
|
const data = change.data;
|
|
63
63
|
const prevNote = allNotes.find((x) => x.Uuid === uuid);
|
|
64
64
|
if (prevNote.Text !== data.Text) {
|
|
65
|
-
adaptable.api.
|
|
65
|
+
adaptable.api.noteApi.updateNoteText(data.Text, prevNote);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
}
|
|
@@ -9,7 +9,7 @@ import { useAdaptable } from './AdaptableContext';
|
|
|
9
9
|
export const SpecialColumnSettingsWizardStep = (props) => {
|
|
10
10
|
var _a, _b, _c;
|
|
11
11
|
const adaptable = useAdaptable();
|
|
12
|
-
const possibleColumnTypes = (_a = adaptable.api.
|
|
12
|
+
const possibleColumnTypes = (_a = adaptable.api.columnApi.getColumnTypes()) !== null && _a !== void 0 ? _a : [];
|
|
13
13
|
const { Filterable, Resizable, Groupable, Sortable, Pivotable, Aggregatable, SuppressMenu, SuppressMovable, } = (_b = props.settings) !== null && _b !== void 0 ? _b : {};
|
|
14
14
|
const handleColumnTypeChange = (columnType, checked) => {
|
|
15
15
|
var _a, _b, _c;
|
|
@@ -300,6 +300,8 @@ export declare class AdaptableAgGrid implements IAdaptable {
|
|
|
300
300
|
canExportToExcel(): boolean;
|
|
301
301
|
exportToExcel(reportData: ReportData, fileName: string): void;
|
|
302
302
|
exportVisualDataToExcel(): void;
|
|
303
|
+
private processRowGroupForExcelExport;
|
|
304
|
+
private processCellForExcelExport;
|
|
303
305
|
isQuickFilterAvailable(): boolean;
|
|
304
306
|
private hasFloatingFilterOnAtLeastOneColumn;
|
|
305
307
|
getChartRef(chartId: string): ChartRef;
|
|
@@ -59,12 +59,12 @@ import { ColumnInfoModule } from '../Strategy/ColumnInfoModule';
|
|
|
59
59
|
import { SettingsPanelModule } from '../Strategy/SettingsPanelModule';
|
|
60
60
|
import { StatusBarModule } from '../Strategy/StatusBarModule';
|
|
61
61
|
import { ChartingModule } from '../Strategy/ChartingModule';
|
|
62
|
-
import {
|
|
62
|
+
import { NoteModule } from '../Strategy/NoteModule';
|
|
63
63
|
import { StyledColumnModule } from '../Strategy/StyledColumnModule';
|
|
64
64
|
import { Fdc3Module } from '../Strategy/Fdc3Module';
|
|
65
65
|
import { GridFilterModule } from '../Strategy/GridFilterModule';
|
|
66
66
|
import { NamedQueryModule } from '../Strategy/NamedQueryModule';
|
|
67
|
-
import {
|
|
67
|
+
import { CommentModule } from '../Strategy/CommentModule';
|
|
68
68
|
import { AdaptableNumberEditor, ReactAdaptableNumberEditor } from './editors/AdaptableNumberEditor';
|
|
69
69
|
import { AdaptableDateEditor, ReactAdaptableDateEditor } from './editors/AdaptableDateEditor';
|
|
70
70
|
import { Helper } from '../Utilities/Helpers/Helper';
|
|
@@ -360,7 +360,7 @@ export class AdaptableAgGrid {
|
|
|
360
360
|
this.api.themeApi.applyCurrentTheme();
|
|
361
361
|
this.validatePrimaryKey();
|
|
362
362
|
this.embedColumnMenu = this.agGridAdapter.isModulePresent(ModuleNames.MenuModule);
|
|
363
|
-
this.api.internalApi.setTreeMode(this.agGridAdapter.
|
|
363
|
+
this.api.internalApi.setTreeMode(!!this.agGridAdapter.getAgGridApi().getGridOption('treeData'));
|
|
364
364
|
// TODO AFL MIG: we could just patch the defautl Layout on init? instead
|
|
365
365
|
this.checkShouldClearExistingFiltersOrSearches();
|
|
366
366
|
this.applyColumnFiltering();
|
|
@@ -886,6 +886,13 @@ export class AdaptableAgGrid {
|
|
|
886
886
|
}
|
|
887
887
|
return original_floatingFiltersHeight;
|
|
888
888
|
});
|
|
889
|
+
/**
|
|
890
|
+
* `excelStyles`
|
|
891
|
+
*/
|
|
892
|
+
this.agGridOptionsService.setGridOptionsProperty(gridOptions, 'excelStyles', (original_excelStyles) => {
|
|
893
|
+
// we need this here just to register the original excelStyles in the service
|
|
894
|
+
return original_excelStyles;
|
|
895
|
+
});
|
|
889
896
|
/**
|
|
890
897
|
* `columnTypes`
|
|
891
898
|
*/
|
|
@@ -1058,7 +1065,7 @@ export class AdaptableAgGrid {
|
|
|
1058
1065
|
return resultColDefs;
|
|
1059
1066
|
}
|
|
1060
1067
|
useRowNodeLookUp() {
|
|
1061
|
-
return this.agGridAdapter.
|
|
1068
|
+
return this.agGridAdapter.getAgGridApi().getGridOption('getRowId') != undefined;
|
|
1062
1069
|
}
|
|
1063
1070
|
getAgGridContainerElement() {
|
|
1064
1071
|
if (!this.DANGER_USE_GETTER_agGridContainerElement) {
|
|
@@ -1105,8 +1112,8 @@ export class AdaptableAgGrid {
|
|
|
1105
1112
|
return selectedRowInfo;
|
|
1106
1113
|
}
|
|
1107
1114
|
isGridSelectable() {
|
|
1108
|
-
|
|
1109
|
-
|
|
1115
|
+
const rowSelection = this.agGridAdapter.getAgGridApi().getGridOption('rowSelection');
|
|
1116
|
+
return rowSelection === 'single' || rowSelection === 'multiple';
|
|
1110
1117
|
}
|
|
1111
1118
|
initAdaptableStore() {
|
|
1112
1119
|
const perfNewAdaptableStore = this.logger.beginPerf(`initAdaptableStore()`);
|
|
@@ -1574,7 +1581,7 @@ export class AdaptableAgGrid {
|
|
|
1574
1581
|
modules.set(ModuleConstants.ChartingModuleId, new ChartingModule(this.api));
|
|
1575
1582
|
modules.set(ModuleConstants.ColumnFilterModuleId, new ColumnFilterModule(this.api));
|
|
1576
1583
|
modules.set(ModuleConstants.ColumnInfoModuleId, new ColumnInfoModule(this.api));
|
|
1577
|
-
modules.set(ModuleConstants.
|
|
1584
|
+
modules.set(ModuleConstants.CommentModuleId, new CommentModule(this.api));
|
|
1578
1585
|
modules.set(ModuleConstants.CustomSortModuleId, new CustomSortModule(this.api));
|
|
1579
1586
|
modules.set(ModuleConstants.DashboardModuleId, new DashboardModule(this.api));
|
|
1580
1587
|
modules.set(ModuleConstants.DataChangeHistoryModuleId, new DataChangeHistoryModule(this.api));
|
|
@@ -1589,7 +1596,7 @@ export class AdaptableAgGrid {
|
|
|
1589
1596
|
modules.set(ModuleConstants.GridInfoModuleId, new GridInfoModule(this.api));
|
|
1590
1597
|
modules.set(ModuleConstants.LayoutModuleId, new LayoutModule(this.api));
|
|
1591
1598
|
modules.set(ModuleConstants.NamedQueryModuleId, new NamedQueryModule(this.api));
|
|
1592
|
-
modules.set(ModuleConstants.
|
|
1599
|
+
modules.set(ModuleConstants.NoteModuleId, new NoteModule(this.api));
|
|
1593
1600
|
modules.set(ModuleConstants.PlusMinusModuleId, new PlusMinusModule(this.api));
|
|
1594
1601
|
modules.set(ModuleConstants.QuickSearchModuleId, new QuickSearchModule(this.api));
|
|
1595
1602
|
modules.set(ModuleConstants.ScheduleModuleId, new ScheduleModule(this.api));
|
|
@@ -1614,7 +1621,9 @@ export class AdaptableAgGrid {
|
|
|
1614
1621
|
this.api.eventApi.on('AdaptableReady', () => {
|
|
1615
1622
|
var _a, _b;
|
|
1616
1623
|
// update status bar state
|
|
1617
|
-
const adaptableStatusPanels = (_b = (_a = this.agGridAdapter
|
|
1624
|
+
const adaptableStatusPanels = (_b = (_a = this.agGridAdapter
|
|
1625
|
+
.getAgGridApi()
|
|
1626
|
+
.getGridOption('statusBar')) === null || _a === void 0 ? void 0 : _a.statusPanels) === null || _b === void 0 ? void 0 : _b.filter((statusPanel) => this.adaptableStatusPanelKeys.includes(statusPanel.key));
|
|
1618
1627
|
const statusBarModule = this.ModuleService.getModuleById(ModuleConstants.StatusBarModuleId);
|
|
1619
1628
|
// need to add only the adaptable panels
|
|
1620
1629
|
statusBarModule.syncStateWithOptions(adaptableStatusPanels);
|
|
@@ -2407,10 +2416,10 @@ export class AdaptableAgGrid {
|
|
|
2407
2416
|
});
|
|
2408
2417
|
}
|
|
2409
2418
|
getAgGridRowModelType() {
|
|
2410
|
-
var _a
|
|
2419
|
+
var _a;
|
|
2411
2420
|
// it seems that this can be null so we need explicitly to return "clientSide" in this case
|
|
2412
2421
|
// need to check that for ServerSideRowModel it is ALWAYS returned...
|
|
2413
|
-
return (
|
|
2422
|
+
return (_a = this.agGridAdapter.getAgGridApi().getGridOption('rowModelType')) !== null && _a !== void 0 ? _a : 'clientSide';
|
|
2414
2423
|
}
|
|
2415
2424
|
getAllRowNodes(config) {
|
|
2416
2425
|
let rowNodes = [];
|
|
@@ -2533,7 +2542,7 @@ export class AdaptableAgGrid {
|
|
|
2533
2542
|
}
|
|
2534
2543
|
canGenerateCharts() {
|
|
2535
2544
|
return (this.agGridAdapter.isModulePresent(ModuleNames.GridChartsModule) &&
|
|
2536
|
-
this.agGridAdapter.
|
|
2545
|
+
this.agGridAdapter.getAgGridApi().getGridOption('enableCharts'));
|
|
2537
2546
|
}
|
|
2538
2547
|
canDisplaySparklines() {
|
|
2539
2548
|
return this.agGridAdapter.isModulePresent(ModuleNames.SparklinesModule);
|
|
@@ -3048,52 +3057,82 @@ export class AdaptableAgGrid {
|
|
|
3048
3057
|
ephemeralGridApi.destroy();
|
|
3049
3058
|
}
|
|
3050
3059
|
exportVisualDataToExcel() {
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3060
|
+
try {
|
|
3061
|
+
const exportExcelStyles = this.ReportService.buildExcelStylesForVisualReports();
|
|
3062
|
+
this.agGridOptionsService.CAREFUL_patchGridOptionsProperty('excelStyles', exportExcelStyles);
|
|
3063
|
+
this.agGridAdapter.getAgGridApi().exportDataAsExcel({
|
|
3064
|
+
sheetName: 'Sheet 1',
|
|
3065
|
+
fileName: this.ReportService.getReportFileName(this.adaptableOptions.adaptableId, 'Excel'),
|
|
3066
|
+
// delegate the cell value processing to Adaptable
|
|
3067
|
+
processCellCallback: ({ node, column, value }) => {
|
|
3068
|
+
var _a;
|
|
3069
|
+
const columnId = column.getColId();
|
|
3070
|
+
if ((node === null || node === void 0 ? void 0 : node.group) &&
|
|
3071
|
+
(this.api.columnApi.isAutoRowGroupColumn(columnId) ||
|
|
3072
|
+
// we would still need to process the cell if this is a group row with an aggregated value
|
|
3073
|
+
((_a = node === null || node === void 0 ? void 0 : node.aggData) === null || _a === void 0 ? void 0 : _a[columnId]) == undefined)) {
|
|
3074
|
+
// skip processing of row groups, this was already handled in processRowGroupCallback()
|
|
3075
|
+
return value;
|
|
3076
|
+
}
|
|
3077
|
+
return this.processCellForExcelExport(node, columnId);
|
|
3078
|
+
},
|
|
3079
|
+
processRowGroupCallback: (params) => {
|
|
3080
|
+
var _a;
|
|
3081
|
+
// recreating the standard AG Grid styling for row groups: 'Parent -> Child'
|
|
3082
|
+
// additionally the values are formatted
|
|
3083
|
+
let rowGroupNode = params.node;
|
|
3084
|
+
const isFooterRow = rowGroupNode.footer;
|
|
3085
|
+
const rowGroupSummary = [(_a = this.processRowGroupForExcelExport(rowGroupNode)) !== null && _a !== void 0 ? _a : ''];
|
|
3086
|
+
while (rowGroupNode.parent) {
|
|
3087
|
+
rowGroupNode = rowGroupNode.parent;
|
|
3088
|
+
const formattedParentNode = this.processRowGroupForExcelExport(rowGroupNode);
|
|
3089
|
+
if (formattedParentNode) {
|
|
3090
|
+
rowGroupSummary.push(formattedParentNode);
|
|
3091
|
+
}
|
|
3092
|
+
}
|
|
3093
|
+
let summary = rowGroupSummary.reverse().join(' -> ');
|
|
3094
|
+
if (isFooterRow) {
|
|
3095
|
+
summary = `Total: ${summary}`;
|
|
3096
|
+
}
|
|
3097
|
+
return summary;
|
|
3098
|
+
},
|
|
3099
|
+
});
|
|
3100
|
+
this.agGridOptionsService.revertGridOptionsPropertyToUserValue('excelStyles');
|
|
3101
|
+
}
|
|
3102
|
+
catch (error) {
|
|
3103
|
+
this.logger.consoleError('Error exporting visual data to Excel', error);
|
|
3104
|
+
}
|
|
3105
|
+
}
|
|
3106
|
+
processRowGroupForExcelExport(rowNode) {
|
|
3107
|
+
var _a, _b, _c, _d, _e;
|
|
3108
|
+
const columnId = (_c = (_a = rowNode.field) !== null && _a !== void 0 ? _a : (_b = rowNode.rowGroupColumn) === null || _b === void 0 ? void 0 : _b.getColId()) !== null && _c !== void 0 ? _c : (_e = (_d = rowNode.rowGroupColumn) === null || _d === void 0 ? void 0 : _d.getColDef()) === null || _e === void 0 ? void 0 : _e.field;
|
|
3109
|
+
if (!columnId || !rowNode.key) {
|
|
3110
|
+
return;
|
|
3111
|
+
}
|
|
3112
|
+
let rawValue = rowNode.key;
|
|
3113
|
+
if (this.api.columnApi.getColumnDataTypeForColumnId(columnId) === 'Date' &&
|
|
3114
|
+
typeof rawValue === 'string' &&
|
|
3115
|
+
// rawValue is composed only of digits
|
|
3116
|
+
/^\d+$/.test(rawValue)) {
|
|
3117
|
+
// AG-Grid converts the value to string, we have to reconvert it back
|
|
3118
|
+
const dateRawValue = parseInt(rawValue);
|
|
3119
|
+
if (dateRawValue != undefined) {
|
|
3120
|
+
// @ts-ignore
|
|
3121
|
+
rawValue = dateRawValue;
|
|
3122
|
+
}
|
|
3123
|
+
}
|
|
3124
|
+
return this.ReportService.getCellExportValueFromRawValue(rowNode, rawValue, columnId);
|
|
3125
|
+
}
|
|
3126
|
+
processCellForExcelExport(rowNode, columnId) {
|
|
3127
|
+
if (this.api.exportApi.internalApi.isVisualDataExportInProgress()) {
|
|
3128
|
+
const cellKey = this.agGridColumnAdapter.getExcelClassNameForCell(columnId, this.getPrimaryKeyValueFromRowNode(rowNode));
|
|
3129
|
+
const isoFormattedDate = this.ReportService.getExcelStyleWithFormattedDate(cellKey);
|
|
3130
|
+
if (isoFormattedDate) {
|
|
3131
|
+
// this is a Date cell which will be formatted by Excel
|
|
3132
|
+
return isoFormattedDate;
|
|
3133
|
+
}
|
|
3134
|
+
}
|
|
3135
|
+
return this.ReportService.getCellExportValueFromRowNode(rowNode, columnId);
|
|
3097
3136
|
}
|
|
3098
3137
|
isQuickFilterAvailable() {
|
|
3099
3138
|
if (this.api.layoutApi.getCurrentLayout().EnablePivot) {
|
|
@@ -25,6 +25,7 @@ export declare class AgGridAdapter {
|
|
|
25
25
|
getLiveGridOptions(): GridOptions | undefined;
|
|
26
26
|
updateGridOptions(options: ManagedGridOptions): void;
|
|
27
27
|
setGridOption<Key extends ManagedGridOptionKey>(key: Key, value: GridOptions[Key]): void;
|
|
28
|
+
getUserGridOptionsProperty<T extends keyof GridOptions>(propertyName: T): GridOptions[T];
|
|
28
29
|
updateColumnFilterActiveState(): void;
|
|
29
30
|
deriveSelectedCellInfoFromAgGrid(): SelectedCellInfo;
|
|
30
31
|
deriveSelectedRowInfoFromAgGrid(): SelectedRowInfo;
|
|
@@ -59,4 +60,5 @@ export declare class AgGridAdapter {
|
|
|
59
60
|
* Mutates the colDefs to ensure that each column has a colId
|
|
60
61
|
*/
|
|
61
62
|
assignColumnIdsToColDefs(colDefs?: (ColDef | ColGroupDef)[]): void;
|
|
63
|
+
getDefaultColumnDefinition(): GridOptions['defaultColDef'];
|
|
62
64
|
}
|
|
@@ -64,6 +64,9 @@ export class AgGridAdapter {
|
|
|
64
64
|
var _a;
|
|
65
65
|
(_a = this.getAgGridApi()) === null || _a === void 0 ? void 0 : _a.setGridOption(key, value);
|
|
66
66
|
}
|
|
67
|
+
getUserGridOptionsProperty(propertyName) {
|
|
68
|
+
return this.adaptableInstance.agGridOptionsService.getUserGridOptionsProperty(propertyName);
|
|
69
|
+
}
|
|
67
70
|
updateColumnFilterActiveState() {
|
|
68
71
|
var _a;
|
|
69
72
|
const columnFilters = this.adaptableApi.columnFilterApi.getActiveColumnFilters();
|
|
@@ -574,4 +577,9 @@ export class AgGridAdapter {
|
|
|
574
577
|
};
|
|
575
578
|
colDefs.forEach((colDef) => assignColId(colDef));
|
|
576
579
|
}
|
|
580
|
+
getDefaultColumnDefinition() {
|
|
581
|
+
var _a, _b;
|
|
582
|
+
// for early init phase, gridApi might not be ready yet
|
|
583
|
+
return (_b = (_a = this.getAgGridApi(true)) === null || _a === void 0 ? void 0 : _a.getGridOption('defaultColDef')) !== null && _b !== void 0 ? _b : {};
|
|
584
|
+
}
|
|
577
585
|
}
|
|
@@ -30,7 +30,7 @@ export declare class AgGridColumnAdapter {
|
|
|
30
30
|
private setupColumnEditable;
|
|
31
31
|
private setupColumnValueSetter;
|
|
32
32
|
private setupColumnComparator;
|
|
33
|
-
|
|
33
|
+
getExcelClassNameForCell(colId: string, primaryKeyValue: any, userDefinedCellClass?: string | string[]): string;
|
|
34
34
|
private isQuickSearchActive;
|
|
35
35
|
private getEditableCellClass;
|
|
36
36
|
private getReadonlyCellClass;
|
|
@@ -603,24 +603,24 @@ export class AgGridColumnAdapter {
|
|
|
603
603
|
: undefined;
|
|
604
604
|
}
|
|
605
605
|
getNoteCellClassName(gridCell, params) {
|
|
606
|
-
if (!this.adaptableApi.internalApi.getModuleService().isModuleAvailable('
|
|
606
|
+
if (!this.adaptableApi.internalApi.getModuleService().isModuleAvailable('Note')) {
|
|
607
607
|
return;
|
|
608
608
|
}
|
|
609
|
-
if (!this.adaptableApi.
|
|
609
|
+
if (!this.adaptableApi.noteApi.internalApi.areNotesAvailable()) {
|
|
610
610
|
return;
|
|
611
611
|
}
|
|
612
612
|
const cellPosition = {
|
|
613
613
|
PrimaryKeyValue: gridCell.primaryKeyValue,
|
|
614
614
|
ColumnId: gridCell.column.columnId,
|
|
615
615
|
};
|
|
616
|
-
const cellNotes = this.adaptableApi.
|
|
616
|
+
const cellNotes = this.adaptableApi.noteApi.getNotesForCell(cellPosition);
|
|
617
617
|
if (!(cellNotes === null || cellNotes === void 0 ? void 0 : cellNotes.length)) {
|
|
618
618
|
return undefined;
|
|
619
619
|
}
|
|
620
620
|
return 'ab-Cell-Note';
|
|
621
621
|
}
|
|
622
622
|
getCommentCellClassName(gridCell, params) {
|
|
623
|
-
if (!this.adaptableApi.internalApi.getModuleService().isModuleAvailable('
|
|
623
|
+
if (!this.adaptableApi.internalApi.getModuleService().isModuleAvailable('Comment')) {
|
|
624
624
|
return;
|
|
625
625
|
}
|
|
626
626
|
if (!this.adaptableApi.commentApi.internalApi.areCommentsAvailable()) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AdaptableAgGrid } from './AdaptableAgGrid';
|
|
2
|
-
import { GridOptions } from '@ag-grid-community/core';
|
|
2
|
+
import { GridOptions, ManagedGridOptionKey } from '@ag-grid-community/core';
|
|
3
3
|
export declare class AgGridOptionsService {
|
|
4
4
|
private adaptableInstance;
|
|
5
5
|
private gridOptionsPropertyCache;
|
|
@@ -7,6 +7,9 @@ export declare class AgGridOptionsService {
|
|
|
7
7
|
constructor(adaptableInstance: AdaptableAgGrid);
|
|
8
8
|
destroy(): void;
|
|
9
9
|
setGridOptionsProperty<T extends keyof GridOptions>(gridOptions: GridOptions, propertyName: T, propertyGetter: (userPropertyValue: GridOptions[T]) => GridOptions[T] | undefined): GridOptions;
|
|
10
|
+
getUserGridOptionsProperty<T extends keyof GridOptions>(propertyName: T): GridOptions[T];
|
|
11
|
+
revertGridOptionsPropertyToUserValue(propertyName: ManagedGridOptionKey): void;
|
|
12
|
+
CAREFUL_patchGridOptionsProperty<T extends keyof GridOptions>(propertyName: T, value: GridOptions[T]): void;
|
|
10
13
|
revertGridOptionsPropertiesToUserValue<T extends keyof GridOptions>(gridOptions: GridOptions, propertyNames: T[]): void;
|
|
11
14
|
private get agGridAdapter();
|
|
12
15
|
}
|
|
@@ -40,6 +40,28 @@ export class AgGridOptionsService {
|
|
|
40
40
|
gridOptions[propertyName] = adaptableValue !== null && adaptableValue !== void 0 ? adaptableValue : userValue;
|
|
41
41
|
return gridOptions;
|
|
42
42
|
}
|
|
43
|
+
getUserGridOptionsProperty(propertyName) {
|
|
44
|
+
const userKey = `user.${propertyName}`;
|
|
45
|
+
return this.gridOptionsPropertyCache.get(userKey);
|
|
46
|
+
}
|
|
47
|
+
revertGridOptionsPropertyToUserValue(propertyName) {
|
|
48
|
+
const userKey = `user.${propertyName}`;
|
|
49
|
+
const userValue = this.gridOptionsPropertyCache.get(userKey);
|
|
50
|
+
this.agGridAdapter.setGridOption(propertyName, userValue);
|
|
51
|
+
}
|
|
52
|
+
CAREFUL_patchGridOptionsProperty(propertyName, value) {
|
|
53
|
+
var _a;
|
|
54
|
+
// @ts-ignore this is required to set gridOptions peroperties which are marked as initial (writable once, before grid is initialised)
|
|
55
|
+
const gos = (_a = this.agGridAdapter.getAgGridApi()) === null || _a === void 0 ? void 0 : _a.gos;
|
|
56
|
+
if (gos) {
|
|
57
|
+
gos.updateGridOptions({
|
|
58
|
+
options: {
|
|
59
|
+
[propertyName]: value,
|
|
60
|
+
},
|
|
61
|
+
source: 'api',
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
43
65
|
revertGridOptionsPropertiesToUserValue(gridOptions, propertyNames) {
|
|
44
66
|
for (const propertyName of propertyNames) {
|
|
45
67
|
// see this.setGridOptionsProperty(...)
|
|
@@ -170,13 +170,6 @@ const DefaultAdaptableOptions = {
|
|
|
170
170
|
menuOptions: {
|
|
171
171
|
customColumnMenu: undefined,
|
|
172
172
|
customContextMenu: undefined,
|
|
173
|
-
showAdaptableContextMenu: true,
|
|
174
|
-
showAdaptableColumnMenu: true,
|
|
175
|
-
showUngroupColumnMenuItem: true,
|
|
176
|
-
columnMenuOrder: ['aggrid', 'adaptable', 'user'],
|
|
177
|
-
contextMenuOrder: ['aggrid', 'adaptable', 'user'],
|
|
178
|
-
columnMenuItems: undefined,
|
|
179
|
-
contextMenuItems: undefined,
|
|
180
173
|
},
|
|
181
174
|
columnFilterOptions: {
|
|
182
175
|
quickFilterOptions: {
|