@adaptabletools/adaptable 12.0.9 → 12.1.0-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/base.css +231 -120
  2. package/bundle.cjs.js +142 -114
  3. package/index.css +268 -130
  4. package/package.json +3 -3
  5. package/publishTimestamp.d.ts +1 -1
  6. package/publishTimestamp.js +1 -1
  7. package/src/AdaptableInterfaces/IAdaptable.d.ts +1 -0
  8. package/src/AdaptableOptions/SettingsPanelOptions.d.ts +1 -2
  9. package/src/Api/ColumnApi.d.ts +5 -0
  10. package/src/Api/FilterApi.d.ts +15 -1
  11. package/src/Api/Implementation/CalculatedColumnApiImpl.js +2 -3
  12. package/src/Api/Implementation/ColumnApiImpl.d.ts +2 -0
  13. package/src/Api/Implementation/ColumnApiImpl.js +10 -0
  14. package/src/Api/Implementation/FilterApiImpl.d.ts +6 -1
  15. package/src/Api/Implementation/FilterApiImpl.js +58 -0
  16. package/src/Api/Implementation/LayoutApiImpl.d.ts +2 -1
  17. package/src/Api/Implementation/LayoutApiImpl.js +8 -16
  18. package/src/Api/Implementation/ScheduleApiImpl.js +4 -1
  19. package/src/PredefinedConfig/Common/AdaptableIcon.d.ts +1 -1
  20. package/src/PredefinedConfig/Common/AdaptablePredicate.d.ts +7 -2
  21. package/src/PredefinedConfig/LayoutState.d.ts +2 -0
  22. package/src/PredefinedConfig/ScheduleState.d.ts +4 -0
  23. package/src/Redux/Store/AdaptableStore.js +11 -5
  24. package/src/Strategy/AlertModule.js +2 -2
  25. package/src/Strategy/CustomSortModule.js +2 -2
  26. package/src/Strategy/ExportModule.js +2 -2
  27. package/src/Strategy/FlashingCellModule.js +3 -3
  28. package/src/Strategy/FormatColumnModule.js +2 -2
  29. package/src/Strategy/LayoutModule.js +10 -17
  30. package/src/Strategy/ShortcutModule.js +1 -1
  31. package/src/Strategy/Utilities/{getAlertBehaviourViewItems.d.ts → Alert/getAlertBehaviourViewItems.d.ts} +0 -0
  32. package/src/Strategy/Utilities/{getAlertBehaviourViewItems.js → Alert/getAlertBehaviourViewItems.js} +2 -2
  33. package/src/Strategy/Utilities/{getAlertPreviewViewItems.d.ts → Alert/getAlertPreviewViewItems.d.ts} +2 -2
  34. package/src/Strategy/Utilities/{getAlertPreviewViewItems.js → Alert/getAlertPreviewViewItems.js} +2 -2
  35. package/src/Strategy/Utilities/{getCustomSortColumnViewItems.d.ts → CustomSort/getCustomSortColumnViewItems.d.ts} +1 -1
  36. package/src/Strategy/Utilities/{getCustomSortColumnViewItems.js → CustomSort/getCustomSortColumnViewItems.js} +0 -0
  37. package/src/Strategy/Utilities/{getCustomSortSortOrderViewItems.d.ts → CustomSort/getCustomSortSortOrderViewItems.d.ts} +1 -1
  38. package/src/Strategy/Utilities/{getCustomSortSortOrderViewItems.js → CustomSort/getCustomSortSortOrderViewItems.js} +0 -0
  39. package/src/Strategy/Utilities/Export/getExportColumnsViewItems.d.ts +3 -0
  40. package/src/Strategy/Utilities/{getExportColumnsViewItems.js → Export/getExportColumnsViewItems.js} +0 -0
  41. package/src/Strategy/Utilities/{getExportRowsViewItems.d.ts → Export/getExportRowsViewItems.d.ts} +0 -0
  42. package/src/Strategy/Utilities/{getExportRowsViewItems.js → Export/getExportRowsViewItems.js} +0 -0
  43. package/src/Strategy/Utilities/{getFlashingCellDurationViewItems.d.ts → FlashingCell/getFlashingCellDurationViewItems.d.ts} +1 -1
  44. package/src/Strategy/Utilities/{getFlashingCellDurationViewItems.js → FlashingCell/getFlashingCellDurationViewItems.js} +0 -0
  45. package/src/Strategy/Utilities/{getFlashingCellStyleViewItems.d.ts → FlashingCell/getFlashingCellStyleViewItems.d.ts} +1 -1
  46. package/src/Strategy/Utilities/{getFlashingCellStyleViewItems.js → FlashingCell/getFlashingCellStyleViewItems.js} +1 -1
  47. package/src/Strategy/Utilities/{getFlashingTargetViewItems.d.ts → FlashingCell/getFlashingTargetViewItems.d.ts} +1 -1
  48. package/src/Strategy/Utilities/{getFlashingTargetViewItems.js → FlashingCell/getFlashingTargetViewItems.js} +0 -0
  49. package/src/Strategy/Utilities/{getFormatColumnSettingsViewItems.d.ts → FormatColumn/getFormatColumnSettingsViewItems.d.ts} +1 -1
  50. package/src/Strategy/Utilities/{getFormatColumnSettingsViewItems.js → FormatColumn/getFormatColumnSettingsViewItems.js} +0 -0
  51. package/src/Strategy/Utilities/{getFormatColumnStyleViewItems.d.ts → FormatColumn/getFormatColumnStyleViewItems.d.ts} +0 -0
  52. package/src/Strategy/Utilities/{getFormatColumnStyleViewItems.js → FormatColumn/getFormatColumnStyleViewItems.js} +1 -1
  53. package/src/Strategy/Utilities/Layout/getLayoutFilterViewItems.d.ts +5 -0
  54. package/src/Strategy/Utilities/Layout/getLayoutFilterViewItems.js +24 -0
  55. package/src/Strategy/Utilities/Layout/getLayoutSortViewItems.d.ts +5 -0
  56. package/src/Strategy/Utilities/Layout/getLayoutSortViewItems.js +14 -0
  57. package/src/Strategy/Utilities/{getShortcutSettingsViewItems.d.ts → Shortcut/getShortcutSettingsViewItems.d.ts} +1 -1
  58. package/src/Strategy/Utilities/{getShortcutSettingsViewItems.js → Shortcut/getShortcutSettingsViewItems.js} +0 -0
  59. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.d.ts +4 -2
  60. package/src/Utilities/ExpressionFunctions/aggregatedScalarExpressionFunctions.js +134 -0
  61. package/src/Utilities/ExpressionFunctions/scalarAggregationHelper.d.ts +1 -1
  62. package/src/Utilities/ExpressionFunctions/scalarAggregationHelper.js +6 -6
  63. package/src/Utilities/ObjectFactory.d.ts +1 -1
  64. package/src/Utilities/ObjectFactory.js +12 -11
  65. package/src/Utilities/Services/CalculatedColumnExpressionService.js +24 -1
  66. package/src/View/AdaptableView.js +3 -2
  67. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.d.ts +27 -1
  68. package/src/View/Components/AdaptableObjectList/AdaptableObjectList.js +46 -36
  69. package/src/View/Components/FilterForm/ListBoxFilterForm.js +5 -4
  70. package/src/View/Components/Popups/AdaptablePopup/AdaptablePopupModuleView.js +4 -2
  71. package/src/View/Components/Popups/AdaptableToaster.js +16 -33
  72. package/src/View/Components/ValueSelector/index.d.ts +10 -1
  73. package/src/View/Components/ValueSelector/index.js +16 -8
  74. package/src/View/FormatColumn/FormatColumnSummary.js +2 -1
  75. package/src/View/Layout/Wizard/LayoutEditor/index.js +1 -1
  76. package/src/View/Layout/Wizard/LayoutWizard.d.ts +4 -7
  77. package/src/View/Layout/Wizard/LayoutWizard.js +127 -13
  78. package/src/View/Layout/Wizard/sections/AggregationsSection.d.ts +8 -0
  79. package/src/View/Layout/Wizard/sections/AggregationsSection.js +102 -0
  80. package/src/View/Layout/Wizard/sections/ColumnsSection.d.ts +8 -0
  81. package/src/View/Layout/Wizard/sections/ColumnsSection.js +226 -0
  82. package/src/View/Layout/Wizard/sections/FilterSection.d.ts +8 -0
  83. package/src/View/Layout/Wizard/sections/FilterSection.js +35 -0
  84. package/src/View/Layout/Wizard/sections/PivotColumnsSection.d.ts +8 -0
  85. package/src/View/Layout/Wizard/sections/PivotColumnsSection.js +39 -0
  86. package/src/View/Layout/Wizard/sections/RowGroupingSection.d.ts +8 -0
  87. package/src/View/Layout/Wizard/sections/RowGroupingSection.js +46 -0
  88. package/src/View/Layout/Wizard/sections/SettingsSection.d.ts +8 -0
  89. package/src/View/Layout/Wizard/sections/SettingsSection.js +51 -0
  90. package/src/View/Layout/Wizard/sections/SortSection.d.ts +8 -0
  91. package/src/View/Layout/Wizard/sections/SortSection.js +69 -0
  92. package/src/View/Layout/Wizard/sections/Utilities.d.ts +2 -0
  93. package/src/View/Layout/Wizard/sections/Utilities.js +5 -0
  94. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReminder.js +7 -2
  95. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsReport.js +2 -2
  96. package/src/View/Schedule/Wizard/ScheduleSettingsWizard/ScheduleSettingsSummary.js +4 -0
  97. package/src/View/StatusBar/StatusBarPanel.js +1 -1
  98. package/src/View/Wizard/OnePageAdaptableWizard.d.ts +1 -0
  99. package/src/View/Wizard/OnePageAdaptableWizard.js +3 -3
  100. package/src/View/Wizard/OnePageWizards.d.ts +1 -0
  101. package/src/View/Wizard/OnePageWizards.js +1 -1
  102. package/src/agGrid/Adaptable.d.ts +2 -0
  103. package/src/agGrid/Adaptable.js +33 -9
  104. package/src/agGrid/agGridHelper.js +11 -1
  105. package/src/components/ExpressionEditor/editorButtonsAggregatedScalar.js +5 -0
  106. package/src/components/ExpressionEditor/index.js +1 -1
  107. package/src/components/Tabs/index.js +4 -2
  108. package/src/components/icons/arrow-down-long.d.ts +3 -0
  109. package/src/components/icons/arrow-down-long.js +7 -0
  110. package/src/components/icons/arrow-up-long.d.ts +3 -0
  111. package/src/components/icons/arrow-up-long.js +7 -0
  112. package/src/components/icons/index.js +4 -0
  113. package/src/metamodel/adaptable.metamodel.d.ts +9 -0
  114. package/src/metamodel/adaptable.metamodel.js +1 -1
  115. package/src/types.d.ts +1 -1
  116. package/version.d.ts +1 -1
  117. package/version.js +1 -1
  118. package/src/Strategy/Utilities/getExportColumnsViewItems.d.ts +0 -3
  119. package/src/View/Layout/LayoutEntityRow.d.ts +0 -13
  120. package/src/View/Layout/LayoutEntityRow.js +0 -23
  121. package/src/View/Layout/LayoutPopup.d.ts +0 -32
  122. package/src/View/Layout/LayoutPopup.js +0 -153
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AggregationsSection = exports.AggregationsSectionSummary = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const rebass_1 = require("rebass");
7
+ const CheckBox_1 = require("../../../../components/CheckBox");
8
+ const DropdownButton_1 = tslib_1.__importDefault(require("../../../../components/DropdownButton"));
9
+ const FormLayout_1 = tslib_1.__importStar(require("../../../../components/FormLayout"));
10
+ const Tabs_1 = require("../../../../components/Tabs");
11
+ const Tag_1 = require("../../../../components/Tag");
12
+ const sortWithOrder_1 = require("../../../../Utilities/sortWithOrder");
13
+ const AdaptableContext_1 = require("../../../AdaptableContext");
14
+ const ValueSelector_1 = require("../../../Components/ValueSelector");
15
+ const OnePageAdaptableWizard_1 = require("../../../Wizard/OnePageAdaptableWizard");
16
+ const Utilities_1 = require("./Utilities");
17
+ const AggregationsSectionSummary = () => {
18
+ const adaptable = AdaptableContext_1.useAdaptable();
19
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
20
+ const aggregations = layout.AggregationColumns;
21
+ const entires = Object.entries(aggregations !== null && aggregations !== void 0 ? aggregations : {});
22
+ let content = null;
23
+ if (entires.length) {
24
+ content = (React.createElement(FormLayout_1.default, null, entires.map(([columnId, aggregation]) => (React.createElement(FormLayout_1.FormRow, { key: columnId, label: adaptable.api.columnApi.getFriendlyNameFromColumnId(columnId) },
25
+ React.createElement(Tag_1.Tag, null, aggregation))))));
26
+ }
27
+ else {
28
+ content = React.createElement(Tag_1.Tag, null, "No Aggregations");
29
+ }
30
+ return React.createElement(rebass_1.Box, null, content);
31
+ };
32
+ exports.AggregationsSectionSummary = AggregationsSectionSummary;
33
+ const ColumnRow = (props) => {
34
+ var _a, _b;
35
+ const aggValue = (_b = (_a = props.layout) === null || _a === void 0 ? void 0 : _a.AggregationColumns) === null || _b === void 0 ? void 0 : _b[props.column.columnId];
36
+ const aggOptions = props.column.availableAggregationFunctions.map((fnName) => {
37
+ return {
38
+ label: fnName,
39
+ onClick: () => {
40
+ const aggCols = Object.assign({}, props.layout.AggregationColumns);
41
+ if (!aggCols) {
42
+ return;
43
+ }
44
+ aggCols[props.column.columnId] = fnName;
45
+ props.onChangeAggFunction(aggCols);
46
+ },
47
+ };
48
+ });
49
+ return (React.createElement(rebass_1.Box, null,
50
+ props.column.friendlyName,
51
+ aggValue && (React.createElement(DropdownButton_1.default, { columns: ['label'], items: aggOptions, ml: 2 }, props.aggregationColumnsMap[props.column.columnId]))));
52
+ };
53
+ const AggregationsSection = (props) => {
54
+ var _a, _b;
55
+ const adaptable = AdaptableContext_1.useAdaptable();
56
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
57
+ const allAggregableColumns = adaptable.api.columnApi.getAggregetableColumns();
58
+ const allColumns = adaptable.api.columnApi.getColumns();
59
+ const sortedAggregableColumns = React.useMemo(() => {
60
+ var _a, _b;
61
+ return sortWithOrder_1.sortWithOrderArray(allAggregableColumns.map((col) => col.columnId), (_b = Object.keys((_a = layout.AggregationColumns) !== null && _a !== void 0 ? _a : {})) !== null && _b !== void 0 ? _b : [], { sortUnorderedItems: true }).map((colId) => adaptable.api.columnApi.getColumnFromId(colId));
62
+ }, [layout, allAggregableColumns]);
63
+ const handleColumnsSelectionChange = React.useCallback((columnIds) => {
64
+ props.onChange(Object.assign(Object.assign({}, layout), { AggregationColumns: columnIds.reduce((acc, colId) => {
65
+ var _a, _b;
66
+ acc[colId] =
67
+ (_b = (_a = layout.AggregationColumns) === null || _a === void 0 ? void 0 : _a[colId]) !== null && _b !== void 0 ? _b : adaptable.api.columnApi.getDefaultAggFunc(colId);
68
+ return acc;
69
+ }, {}) }));
70
+ }, [layout]);
71
+ const handleAggregationChange = React.useCallback((aggFunctions) => {
72
+ props.onChange(Object.assign(Object.assign({}, layout), { AggregationColumns: aggFunctions }));
73
+ }, [layout]);
74
+ const aggregationColumnsMap = React.useMemo(() => {
75
+ const allColumnsMap = allColumns.reduce((acc, col) => {
76
+ acc[col.columnId] = col;
77
+ return acc;
78
+ }, {});
79
+ return Object.keys(layout.AggregationColumns || {}).reduce((acc, colId) => {
80
+ var _a;
81
+ let fn = (_a = layout.AggregationColumns) === null || _a === void 0 ? void 0 : _a[colId];
82
+ if (typeof fn === 'boolean') {
83
+ fn = allColumnsMap[colId].aggregationFunction;
84
+ }
85
+ acc[colId] = fn;
86
+ return acc;
87
+ }, {});
88
+ }, [layout]);
89
+ const handleSuppressAggFuncInHeader = (checked) => {
90
+ props.onChange(Object.assign(Object.assign({}, layout), { SuppressAggFuncInHeader: checked }));
91
+ };
92
+ return (React.createElement(Tabs_1.Tabs, { style: { height: '100%' } },
93
+ React.createElement(Tabs_1.Tabs.Tab, null, "Columns Aggregations"),
94
+ React.createElement(Tabs_1.Tabs.Content, null,
95
+ React.createElement(rebass_1.Flex, null,
96
+ React.createElement(FormLayout_1.default, null,
97
+ React.createElement(CheckBox_1.CheckBox, { checked: layout.SuppressAggFuncInHeader, onChange: handleSuppressAggFuncInHeader }, "Suppress Aggregation Function in Header"))),
98
+ React.createElement(ValueSelector_1.ValueSelector, { showFilterInput: true, showSelectedOnlyPosition: "top", filter: Utilities_1.columnFilter, toIdentifier: (option) => `${option.columnId}`, toLabel: (option) => { var _a; return (_a = option.friendlyName) !== null && _a !== void 0 ? _a : option.columnId; }, toListLabel: (column) => (React.createElement(ColumnRow, { onChangeAggFunction: handleAggregationChange, layout: layout, column: column, aggregationColumnsMap: aggregationColumnsMap })), options: sortedAggregableColumns, value: (_b = Object.keys((_a = layout.AggregationColumns) !== null && _a !== void 0 ? _a : {})) !== null && _b !== void 0 ? _b : [], allowReorder: () => false, xSelectedLabel: () => {
99
+ return `Active aggregations:`;
100
+ }, onChange: handleColumnsSelectionChange }))));
101
+ };
102
+ exports.AggregationsSection = AggregationsSection;
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { Layout } from '../../../../../types';
3
+ export declare const ColumnsSectionSummary: React.FunctionComponent;
4
+ interface ColumnsSectionProps {
5
+ onChange: (data: Layout) => void;
6
+ }
7
+ export declare const ColumnsSection: React.FunctionComponent<ColumnsSectionProps>;
8
+ export {};
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ColumnsSection = exports.ColumnsSectionSummary = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const InfiniteTable_1 = require("../../../../components/InfiniteTable");
6
+ const React = tslib_1.__importStar(require("react"));
7
+ const rebass_1 = require("rebass");
8
+ const DropdownButton_1 = tslib_1.__importDefault(require("../../../../components/DropdownButton"));
9
+ const FormLayout_1 = tslib_1.__importStar(require("../../../../components/FormLayout"));
10
+ const Input_1 = tslib_1.__importDefault(require("../../../../components/Input"));
11
+ const SimpleButton_1 = tslib_1.__importDefault(require("../../../../components/SimpleButton"));
12
+ const Tabs_1 = require("../../../../components/Tabs");
13
+ const Tag_1 = require("../../../../components/Tag");
14
+ const AdaptableColumn_1 = require("../../../../PredefinedConfig/Common/AdaptableColumn");
15
+ const sortWithOrder_1 = require("../../../../Utilities/sortWithOrder");
16
+ const AdaptableContext_1 = require("../../../AdaptableContext");
17
+ const ValueSelector_1 = require("../../../Components/ValueSelector");
18
+ const OnePageAdaptableWizard_1 = require("../../../Wizard/OnePageAdaptableWizard");
19
+ const ColumnLabels_1 = require("../LayoutEditor/ColumnLabels");
20
+ const Utilities_1 = require("./Utilities");
21
+ const lodash_1 = require("lodash");
22
+ const icons_1 = require("../../../../components/icons");
23
+ const CheckBox_1 = require("../../../../components/CheckBox");
24
+ const PropertyOrderText = (props) => (React.createElement(rebass_1.Text, { fontWeight: 600, fontSize: 2 }, props.children));
25
+ const ColumnsSectionSummary = () => {
26
+ const adaptable = AdaptableContext_1.useAdaptable();
27
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
28
+ const rowHeight = 40;
29
+ const headerHeight = 40;
30
+ const tableHeight = headerHeight + lodash_1.clamp(rowHeight * layout.Columns.length, 100, 360);
31
+ const data = React.useMemo(() => {
32
+ return layout.Columns.map((columnId) => {
33
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
34
+ const friendlyName = adaptable.api.columnApi.getFriendlyNameFromColumnId(columnId);
35
+ const header = (_b = (_a = layout.ColumnHeadersMap) === null || _a === void 0 ? void 0 : _a[columnId]) !== null && _b !== void 0 ? _b : '';
36
+ const columnWidth = (_c = layout.ColumnWidthMap) === null || _c === void 0 ? void 0 : _c[columnId];
37
+ const columnPinning = (_d = layout.PinnedColumnsMap) === null || _d === void 0 ? void 0 : _d[columnId];
38
+ const agg = (_e = layout.AggregationColumns) === null || _e === void 0 ? void 0 : _e[columnId];
39
+ const sortIndex = ((_f = layout === null || layout === void 0 ? void 0 : layout.ColumnSorts) !== null && _f !== void 0 ? _f : []).findIndex((sort) => sort.ColumnId === columnId);
40
+ const sortOrder = sortIndex != -1
41
+ ? {
42
+ index: sortIndex + 1,
43
+ sort: (_h = (_g = layout.ColumnSorts[sortIndex]) === null || _g === void 0 ? void 0 : _g.SortOrder) !== null && _h !== void 0 ? _h : null,
44
+ }
45
+ : {};
46
+ let grouping = (_k = (_j = layout.RowGroupedColumns) === null || _j === void 0 ? void 0 : _j.indexOf) === null || _k === void 0 ? void 0 : _k.call(_j, columnId);
47
+ grouping = grouping != -1 ? grouping + 1 : null;
48
+ const filter = (_l = layout.ColumnFilters) === null || _l === void 0 ? void 0 : _l.find((colFilter) => colFilter.ColumnId === columnId);
49
+ return {
50
+ columnId,
51
+ agg,
52
+ friendlyName,
53
+ header,
54
+ columnWidth,
55
+ columnPinning,
56
+ sortOrder,
57
+ grouping,
58
+ filter,
59
+ };
60
+ });
61
+ }, [layout]);
62
+ const columns = React.useMemo(() => {
63
+ return {
64
+ name: { header: 'Name', field: 'friendlyName', minWidth: 100 },
65
+ header: { header: 'Header', field: 'header', minWidth: 120 },
66
+ colId: { header: 'ID', field: 'columnId' },
67
+ agg: { header: 'Agg', field: 'agg', minWidth: 70 },
68
+ width: { header: 'Width', field: 'columnWidth', minWidth: 70 },
69
+ pin: { header: 'Pin', field: 'columnPinning', minWidth: 80 },
70
+ sort: {
71
+ header: 'Sort',
72
+ field: 'sortOrder',
73
+ minWidth: 50,
74
+ align: 'center',
75
+ render: (params) => {
76
+ var _a, _b, _c, _d, _e, _f, _g;
77
+ if (!((_b = (_a = params.data) === null || _a === void 0 ? void 0 : _a.sortOrder) === null || _b === void 0 ? void 0 : _b.sort)) {
78
+ return React.createElement(React.Fragment, null);
79
+ }
80
+ return (React.createElement(rebass_1.Flex, null,
81
+ React.createElement(icons_1.Icon, { name: ((_d = (_c = params.data) === null || _c === void 0 ? void 0 : _c.sortOrder) === null || _d === void 0 ? void 0 : _d.sort) === 'Asc' ? 'arrow-up-long' : 'arrow-down-long' }),
82
+ ' ',
83
+ React.createElement(PropertyOrderText, null, (_g = (_f = (_e = params.data) === null || _e === void 0 ? void 0 : _e.sortOrder) === null || _f === void 0 ? void 0 : _f.index) !== null && _g !== void 0 ? _g : '')));
84
+ },
85
+ },
86
+ filter: {
87
+ header: 'Filter',
88
+ field: 'filter',
89
+ align: 'center',
90
+ minWidth: 50,
91
+ render: (params) => {
92
+ var _a;
93
+ if (!((_a = params.data) === null || _a === void 0 ? void 0 : _a.filter)) {
94
+ return React.createElement(React.Fragment, null);
95
+ }
96
+ return React.createElement(CheckBox_1.CheckBox, { checked: true });
97
+ },
98
+ },
99
+ group: {
100
+ header: 'Group',
101
+ minWidth: 50,
102
+ field: 'columnGroupping',
103
+ align: 'center',
104
+ render: (params) => {
105
+ var _a;
106
+ if (!params.data.grouping) {
107
+ return React.createElement(React.Fragment, null);
108
+ }
109
+ return (React.createElement(rebass_1.Flex, null,
110
+ React.createElement(CheckBox_1.CheckBox, { margin: 0, mr: 1, checked: true }),
111
+ React.createElement(PropertyOrderText, null, (_a = params.data) === null || _a === void 0 ? void 0 : _a.grouping)));
112
+ },
113
+ },
114
+ };
115
+ }, []);
116
+ const tableDOMProps = {
117
+ style: {
118
+ height: '100%',
119
+ minWidth: '10rem',
120
+ minHeight: tableHeight,
121
+ },
122
+ };
123
+ return (React.createElement(InfiniteTable_1.DataSource, { data: data, primaryKey: "columnId" },
124
+ React.createElement(InfiniteTable_1.InfiniteTable, { columnTypes: {
125
+ default: {
126
+ defaultFlex: 1,
127
+ },
128
+ }, rowHeight: rowHeight, domProps: tableDOMProps, columns: columns })));
129
+ };
130
+ exports.ColumnsSectionSummary = ColumnsSectionSummary;
131
+ const ColumnRow = (props) => {
132
+ var _a, _b, _c, _d;
133
+ const [isExpanded, setIsExpanded] = React.useState(false);
134
+ const adaptable = AdaptableContext_1.useAdaptable();
135
+ // headers
136
+ const initialHeader = adaptable.api.columnApi.getFriendlyNameFromColumnId(props.column.columnId);
137
+ const customHeader = (_b = (_a = props.layout.ColumnHeadersMap) === null || _a === void 0 ? void 0 : _a[props.column.columnId]) !== null && _b !== void 0 ? _b : '';
138
+ // column pinning
139
+ const columnPinning = ((_c = props.layout.PinnedColumnsMap) === null || _c === void 0 ? void 0 : _c[props.column.columnId]) || 'None';
140
+ const pinningOptions = [
141
+ { value: 'None', label: 'None', onClick: () => props.onPinChange(props.column.columnId, null) },
142
+ {
143
+ value: 'left',
144
+ label: 'Left',
145
+ onClick: () => props.onPinChange(props.column.columnId, 'left'),
146
+ },
147
+ {
148
+ value: 'right',
149
+ label: 'Right',
150
+ onClick: () => props.onPinChange(props.column.columnId, 'right'),
151
+ },
152
+ ];
153
+ // behaviour
154
+ const behaviourHeader = 'Column ' + adaptable.api.internalApi.getCorrectEnglishVariant('Behaviours');
155
+ // width
156
+ const columnWidth = (_d = props.layout.ColumnWidthMap) === null || _d === void 0 ? void 0 : _d[props.column.columnId];
157
+ return (React.createElement(rebass_1.Box, { className: "ab-Layout-Wizard__ColumnRow" },
158
+ React.createElement(rebass_1.Flex, { className: "ab-Layout-Wizard__ColumnRow__Header", mt: 1, mb: 1, onClick: () => setIsExpanded(!isExpanded) },
159
+ React.createElement(rebass_1.Flex, { mr: 2, alignItems: "center" }, initialHeader),
160
+ props.column.columnGroup && props.column.columnGroup.groupCount > 1 ? (React.createElement(rebass_1.Box, { className: "ab-Layout-Wizard__ColumnRow__Title", ml: 2, mr: 2, padding: 1 },
161
+ "Group: ",
162
+ props.column.columnGroup.friendlyName)) : null,
163
+ React.createElement(rebass_1.Flex, { mr: 2 },
164
+ React.createElement(ColumnLabels_1.ColumnLabels, { showTitle: false, sortable: props.column.sortable, filterable: props.column.filterable, pivotable: props.column.pivotable, moveable: props.column.moveable, groupable: props.column.groupable, aggregatable: props.column.aggregatable })),
165
+ React.createElement(rebass_1.Box, { flex: 1 }),
166
+ React.createElement(SimpleButton_1.default, { ml: 10, padding: 0, iconSize: 24, variant: "text", onClick: () => setIsExpanded(!isExpanded), icon: isExpanded ? 'triangle-up' : 'triangle-down' })),
167
+ isExpanded && (React.createElement(rebass_1.Box, { className: "ab-Layout-Wizard__ColumnRow__Expanded-Container", mb: 2, padding: 2, mt: 2 },
168
+ React.createElement(rebass_1.Flex, { mb: 2 },
169
+ React.createElement(FormLayout_1.default, { width: "100%", mr: 3 },
170
+ React.createElement(FormLayout_1.FormRow, { label: "Column ID" },
171
+ React.createElement(Tag_1.Tag, null, props.column.friendlyName)),
172
+ React.createElement(FormLayout_1.FormRow, { label: "Header" },
173
+ React.createElement(Input_1.default, { className: "ab-Layout-Wizard__ColumnRow__Input", placehoder: "Custom name (optional)", onChange: () => {
174
+ props.onColumnNameChange(props.column.columnId, event.target.value);
175
+ }, value: customHeader })),
176
+ React.createElement(FormLayout_1.FormRow, { label: "Width" },
177
+ React.createElement(Input_1.default, { className: "ab-Layout-Wizard__ColumnRow__Input", type: "number", placeholder: "Column width", onChange: (event) => {
178
+ let value = parseFloat(event.target.value);
179
+ value = typeof value === 'number' && !isNaN(value) ? value : void 0;
180
+ props.onColumnWidthChange(props.column.columnId, value);
181
+ }, value: columnWidth })),
182
+ React.createElement(FormLayout_1.FormRow, { label: "Pinning" },
183
+ React.createElement(DropdownButton_1.default, { columns: ['label'], items: pinningOptions }, pinningOptions.find((option) => option.value === columnPinning).label))))))));
184
+ };
185
+ const ColumnsSection = (props) => {
186
+ const adaptable = AdaptableContext_1.useAdaptable();
187
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
188
+ const allColumns = adaptable.api.columnApi.getColumns();
189
+ const sortedColumns = React.useMemo(() => {
190
+ return sortWithOrder_1.sortWithOrderArray(allColumns.map((col) => col.columnId), layout.Columns, { sortUnorderedItems: true }).map((colId) => adaptable.api.columnApi.getColumnFromId(colId));
191
+ }, [layout, allColumns]);
192
+ const handlePinChange = (columnId, pinning) => {
193
+ props.onChange(Object.assign(Object.assign({}, layout), { PinnedColumnsMap: Object.assign(Object.assign({}, layout.PinnedColumnsMap), { [columnId]: pinning }) }));
194
+ };
195
+ const handleColumnNameChange = (columnId, headerName) => {
196
+ props.onChange(Object.assign(Object.assign({}, layout), { ColumnHeadersMap: Object.assign(Object.assign({}, layout.ColumnHeadersMap), { [columnId]: headerName }) }));
197
+ };
198
+ const handleColumnsChange = (columnIds) => {
199
+ var _a, _b;
200
+ const oldColumns = (_a = layout.Columns.map((colId) => adaptable.api.columnApi.getColumnFromId(colId))) !== null && _a !== void 0 ? _a : [];
201
+ const newColumns = (_b = columnIds.map((colId) => adaptable.api.columnApi.getColumnFromId(colId))) !== null && _b !== void 0 ? _b : [];
202
+ if (!AdaptableColumn_1.isValidOrderForColumnGroups({ oldColumns, newColumns })) {
203
+ return;
204
+ }
205
+ props.onChange(Object.assign(Object.assign({}, layout), { Columns: columnIds }));
206
+ };
207
+ const handleColumnWidthChange = (columnId, width) => {
208
+ props.onChange(Object.assign(Object.assign({}, layout), { ColumnWidthMap: Object.assign(Object.assign({}, layout.ColumnWidthMap), { [columnId]: width }) }));
209
+ };
210
+ return (React.createElement(Tabs_1.Tabs, { style: { height: '100%' } },
211
+ React.createElement(Tabs_1.Tabs.Tab, null, "Columns"),
212
+ React.createElement(Tabs_1.Tabs.Content, null,
213
+ React.createElement(rebass_1.Flex, { mt: 2, mb: 3 },
214
+ React.createElement(ColumnLabels_1.ColumnLabels, { flexDirection: "row", showBoth: false, labels: {
215
+ Sortable: 'Sortable',
216
+ Filterable: 'Filterable',
217
+ Aggregatable: 'Shows Aggregations',
218
+ Groupable: 'Groupable',
219
+ Moveable: 'Moveable',
220
+ Pivotable: 'Pivotable',
221
+ }, sortable: true, filterable: true, moveable: true, pivotable: true, groupable: true, aggregatable: true })),
222
+ React.createElement(ValueSelector_1.ValueSelector, { showSelectedOnlyPosition: "top", showFilterInput: true, filter: Utilities_1.columnFilter, toIdentifier: (option) => `${option.columnId}`, toLabel: (option) => { var _a; return (_a = option.friendlyName) !== null && _a !== void 0 ? _a : option.columnId; }, toListLabel: (option) => (React.createElement(ColumnRow, { onColumnNameChange: handleColumnNameChange, onColumnWidthChange: handleColumnWidthChange, onPinChange: handlePinChange, layout: layout, column: option })), options: sortedColumns, value: layout.Columns, allowReorder: true, xSelectedLabel: () => {
223
+ return `Selected Columns:`;
224
+ }, onChange: handleColumnsChange }))));
225
+ };
226
+ exports.ColumnsSection = ColumnsSection;
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { Layout } from '../../../../../types';
3
+ export declare const FilterSectionSummary: React.FunctionComponent;
4
+ interface FilterSectionProps {
5
+ onChange: (data: Layout) => void;
6
+ }
7
+ export declare const FilterSection: React.FunctionComponent<FilterSectionProps>;
8
+ export {};
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FilterSection = exports.FilterSectionSummary = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const rebass_1 = require("rebass");
7
+ const ModuleConstants = tslib_1.__importStar(require("../../../../Utilities/Constants/ModuleConstants"));
8
+ const Tabs_1 = require("../../../../components/Tabs");
9
+ const AdaptableContext_1 = require("../../../AdaptableContext");
10
+ const AdaptableObjectList_1 = require("../../../Components/AdaptableObjectList/AdaptableObjectList");
11
+ const OnePageAdaptableWizard_1 = require("../../../Wizard/OnePageAdaptableWizard");
12
+ const getLayoutFilterViewItems_1 = require("../../../../Strategy/Utilities/Layout/getLayoutFilterViewItems");
13
+ const Tag_1 = require("../../../../components/Tag");
14
+ const FilterSectionSummary = () => {
15
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
16
+ const adaptable = AdaptableContext_1.useAdaptable();
17
+ const fitlerViewItems = getLayoutFilterViewItems_1.getLayoutFilterViewItems(layout, adaptable.api);
18
+ return (React.createElement(rebass_1.Box, null, fitlerViewItems.values.length ? (fitlerViewItems.values.map((value) => (React.createElement(Tag_1.Tag, { key: value, mb: 1, mr: 1 }, value)))) : (React.createElement(Tag_1.Tag, null, "No Filters"))));
19
+ };
20
+ exports.FilterSectionSummary = FilterSectionSummary;
21
+ const FilterSection = (props) => {
22
+ var _a;
23
+ const adaptable = AdaptableContext_1.useAdaptable();
24
+ const filterModule = adaptable.ModuleService.getModuleById(ModuleConstants.FilterModuleId);
25
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
26
+ const layoutFilters = (_a = layout.ColumnFilters) !== null && _a !== void 0 ? _a : [];
27
+ const handleDelete = React.useCallback((columnFilter) => {
28
+ props.onChange(Object.assign(Object.assign({}, layout), { ColumnFilters: layoutFilters.filter((layoutFilter) => layoutFilter.ColumnId !== columnFilter.ColumnId) }));
29
+ }, [layout]);
30
+ return (React.createElement(Tabs_1.Tabs, { style: { height: '100%' } },
31
+ React.createElement(Tabs_1.Tabs.Tab, null, "Column Filters"),
32
+ React.createElement(Tabs_1.Tabs.Content, null, (layoutFilters === null || layoutFilters === void 0 ? void 0 : layoutFilters.length) ? (React.createElement(rebass_1.Box, { p: 0, as: "ul" }, layoutFilters.map((columnFilter) => (React.createElement(AdaptableObjectList_1.AdaptableObjectListItemView, { abObject: columnFilter, entityType: "Filter", showActions: true, showEditButton: false, items: filterModule.toView(columnFilter).items, onDelete: () => handleDelete(columnFilter) }))))) : (React.createElement(rebass_1.Box, null,
33
+ React.createElement(Tag_1.Tag, null, "No Column Filters are applied. Filters are set using the grid."))))));
34
+ };
35
+ exports.FilterSection = FilterSection;
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { Layout } from '../../../../types';
3
+ export declare const PivotColumnsSectionSummary: React.FunctionComponent;
4
+ interface PivotColumnsSectionProps {
5
+ onChange: (data: Layout) => void;
6
+ }
7
+ export declare const PivotColumnsSection: React.FunctionComponent<PivotColumnsSectionProps>;
8
+ export {};
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PivotColumnsSection = exports.PivotColumnsSectionSummary = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const rebass_1 = require("rebass");
7
+ const Tabs_1 = require("../../../../components/Tabs");
8
+ const Tag_1 = require("../../../../components/Tag");
9
+ const sortWithOrder_1 = require("../../../../Utilities/sortWithOrder");
10
+ const AdaptableContext_1 = require("../../../AdaptableContext");
11
+ const ValueSelector_1 = require("../../../Components/ValueSelector");
12
+ const OnePageAdaptableWizard_1 = require("../../../Wizard/OnePageAdaptableWizard");
13
+ const Utilities_1 = require("./Utilities");
14
+ const PivotColumnsSectionSummary = () => {
15
+ const adaptable = AdaptableContext_1.useAdaptable();
16
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
17
+ return (React.createElement(rebass_1.Box, { p: 2, style: { borderRadius: 'var(--ab__border-radius)' }, backgroundColor: "var(--ab-color-defaultbackground)" }, layout.PivotColumns.length ? (layout.PivotColumns.map((columnId) => (React.createElement(Tag_1.Tag, { mr: 1, key: columnId }, adaptable.api.columnApi.getFriendlyNameFromColumnId(columnId))))) : (React.createElement(Tag_1.Tag, null, "No Column Pivoting"))));
18
+ };
19
+ exports.PivotColumnsSectionSummary = PivotColumnsSectionSummary;
20
+ const PivotColumnsSection = (props) => {
21
+ var _a;
22
+ const adaptable = AdaptableContext_1.useAdaptable();
23
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
24
+ const allPivotColumns = adaptable.api.columnApi.getPivotableColumns();
25
+ const sortedPivotColumns = React.useMemo(() => {
26
+ var _a;
27
+ return sortWithOrder_1.sortWithOrderArray(allPivotColumns.map((col) => col.columnId), (_a = layout.PivotColumns) !== null && _a !== void 0 ? _a : [], { sortUnorderedItems: true }).map((colId) => adaptable.api.columnApi.getColumnFromId(colId));
28
+ }, [layout, allPivotColumns]);
29
+ const handleColumnsChange = (columnIds) => {
30
+ props.onChange(Object.assign(Object.assign({}, layout), { PivotColumns: columnIds }));
31
+ };
32
+ return (React.createElement(Tabs_1.Tabs, { style: { height: '100%' } },
33
+ React.createElement(Tabs_1.Tabs.Tab, null, "Pivot Columns"),
34
+ React.createElement(Tabs_1.Tabs.Content, null,
35
+ React.createElement(ValueSelector_1.ValueSelector, { showFilterInput: true, showSelectedOnlyPosition: "top", filter: Utilities_1.columnFilter, toIdentifier: (option) => `${option.columnId}`, toLabel: (option) => { var _a; return (_a = option.friendlyName) !== null && _a !== void 0 ? _a : option.columnId; }, options: sortedPivotColumns, value: (_a = layout.PivotColumns) !== null && _a !== void 0 ? _a : [], allowReorder: true, xSelectedLabel: () => {
36
+ return `Selected Columns:`;
37
+ }, onChange: handleColumnsChange }))));
38
+ };
39
+ exports.PivotColumnsSection = PivotColumnsSection;
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { Layout } from '../../../../../types';
3
+ export declare const RowGroupingSectionSummary: React.FunctionComponent;
4
+ interface RowGroupingSectionProps {
5
+ onChange: (data: Layout) => void;
6
+ }
7
+ export declare const RowGroupingSection: React.FunctionComponent<RowGroupingSectionProps>;
8
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RowGroupingSection = exports.RowGroupingSectionSummary = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const rebass_1 = require("rebass");
7
+ const FormLayout_1 = tslib_1.__importStar(require("../../../../components/FormLayout"));
8
+ const Utilities_1 = require("./Utilities");
9
+ const Tabs_1 = require("../../../../components/Tabs");
10
+ const Tag_1 = require("../../../../components/Tag");
11
+ const sortWithOrder_1 = require("../../../../Utilities/sortWithOrder");
12
+ const AdaptableContext_1 = require("../../../AdaptableContext");
13
+ const ValueSelector_1 = require("../../../Components/ValueSelector");
14
+ const OnePageAdaptableWizard_1 = require("../../../Wizard/OnePageAdaptableWizard");
15
+ const RowGroupingSectionSummary = () => {
16
+ var _a;
17
+ const adaptable = AdaptableContext_1.useAdaptable();
18
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
19
+ return (React.createElement(rebass_1.Box, null, ((_a = layout.RowGroupedColumns) === null || _a === void 0 ? void 0 : _a.length) ? (layout.RowGroupedColumns.map((columnId) => (React.createElement(Tag_1.Tag, { mr: 1, key: columnId }, adaptable.api.columnApi.getFriendlyNameFromColumnId(columnId))))) : (React.createElement(Tag_1.Tag, null, "No Row Grouping"))));
20
+ };
21
+ exports.RowGroupingSectionSummary = RowGroupingSectionSummary;
22
+ const RowGroupingSection = (props) => {
23
+ var _a, _b, _c;
24
+ const adaptable = AdaptableContext_1.useAdaptable();
25
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
26
+ const allGroupableColumns = adaptable.api.columnApi.getGroupableColumns();
27
+ const sortedGroupableColumns = React.useMemo(() => {
28
+ var _a;
29
+ return sortWithOrder_1.sortWithOrderArray(allGroupableColumns.map((col) => col.columnId), (_a = layout.RowGroupedColumns) !== null && _a !== void 0 ? _a : [], { sortUnorderedItems: true }).map((colId) => adaptable.api.columnApi.getColumnFromId(colId));
30
+ }, [layout, allGroupableColumns]);
31
+ const handleColumnsChange = (columnIds) => {
32
+ props.onChange(Object.assign(Object.assign({}, layout), { RowGroupedColumns: columnIds }));
33
+ };
34
+ return (React.createElement(Tabs_1.Tabs, { style: { height: '100%' } },
35
+ React.createElement(Tabs_1.Tabs.Tab, null, "Grouped Rows"),
36
+ ((_a = layout.ExpandedRowGroupValues) === null || _a === void 0 ? void 0 : _a.length) && React.createElement(Tabs_1.Tabs.Tab, null, "Expanded Rows"),
37
+ React.createElement(Tabs_1.Tabs.Content, null,
38
+ React.createElement(ValueSelector_1.ValueSelector, { showFilterInput: true, showSelectedOnlyPosition: "top", filter: Utilities_1.columnFilter, toIdentifier: (option) => `${option.columnId}`, toLabel: (option) => { var _a; return (_a = option.friendlyName) !== null && _a !== void 0 ? _a : option.columnId; }, options: sortedGroupableColumns, value: (_b = layout.RowGroupedColumns) !== null && _b !== void 0 ? _b : [], allowReorder: true, xSelectedLabel: () => {
39
+ return `Selected Columns:`;
40
+ }, onChange: handleColumnsChange })),
41
+ ((_c = layout.ExpandedRowGroupValues) === null || _c === void 0 ? void 0 : _c.length) && (React.createElement(Tabs_1.Tabs.Content, null,
42
+ React.createElement(rebass_1.Box, { backgroundColor: "var(--ab-color-defaultbackground)" },
43
+ React.createElement(FormLayout_1.default, { p: 2 },
44
+ React.createElement(FormLayout_1.FormRow, { label: "Values" }, layout.ExpandedRowGroupValues.map((value, index) => (React.createElement(Tag_1.Tag, { mb: 2, mr: 2, key: index }, value))))))))));
45
+ };
46
+ exports.RowGroupingSection = RowGroupingSection;
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { Layout } from '../../../../../types';
3
+ export declare const SettingsSectionSummary: React.FunctionComponent;
4
+ interface SettingsSectionProps {
5
+ onChange: (data: Layout) => void;
6
+ }
7
+ export declare const SettingsSection: React.FunctionComponent<SettingsSectionProps>;
8
+ export {};
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SettingsSection = exports.SettingsSectionSummary = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const rebass_1 = require("rebass");
7
+ const FormLayout_1 = tslib_1.__importStar(require("../../../../components/FormLayout"));
8
+ const Input_1 = tslib_1.__importDefault(require("../../../../components/Input"));
9
+ const Radio_1 = tslib_1.__importDefault(require("../../../../components/Radio"));
10
+ const Tabs_1 = require("../../../../components/Tabs");
11
+ const Tag_1 = require("../../../../components/Tag");
12
+ const OnePageAdaptableWizard_1 = require("../../../Wizard/OnePageAdaptableWizard");
13
+ const SettingsSectionSummary = () => {
14
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
15
+ return (React.createElement(rebass_1.Box, null,
16
+ React.createElement(Tag_1.Tag, { mr: 2 },
17
+ "Layout Name: ",
18
+ layout.Name),
19
+ React.createElement(Tag_1.Tag, { mr: 2 },
20
+ "Pivot Layout: ",
21
+ layout.EnablePivot ? 'Yes' : 'No'),
22
+ React.createElement(Tag_1.Tag, { mr: 2 },
23
+ "Suppress Aggregation Function in Header: ",
24
+ layout.SuppressAggFuncInHeader ? 'Yes' : 'No')));
25
+ };
26
+ exports.SettingsSectionSummary = SettingsSectionSummary;
27
+ const SettingsSection = (props) => {
28
+ var _a;
29
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
30
+ const onNameChange = (event) => {
31
+ props.onChange(Object.assign(Object.assign({}, layout), { Name: event.target.value }));
32
+ };
33
+ const handlePivotChange = (checked) => {
34
+ props.onChange(Object.assign(Object.assign({}, layout), { EnablePivot: checked }));
35
+ };
36
+ return (React.createElement(React.Fragment, null,
37
+ React.createElement(Tabs_1.Tabs, { mb: 3 },
38
+ React.createElement(Tabs_1.Tabs.Tab, null, "Settings"),
39
+ React.createElement(Tabs_1.Tabs.Content, null,
40
+ React.createElement(rebass_1.Flex, { flexDirection: "row" },
41
+ React.createElement(FormLayout_1.default, { width: "100%", style: { maxWidth: 300 } },
42
+ React.createElement(FormLayout_1.FormRow, { label: "Name" },
43
+ React.createElement(Input_1.default, { width: "100%", "data-name": "layout-name", onChange: onNameChange, value: (_a = layout === null || layout === void 0 ? void 0 : layout.Name) !== null && _a !== void 0 ? _a : '' })))))),
44
+ React.createElement(Tabs_1.Tabs, { mb: 2 },
45
+ React.createElement(Tabs_1.Tabs.Tab, null, "Grid Type"),
46
+ React.createElement(Tabs_1.Tabs.Content, null,
47
+ React.createElement(rebass_1.Flex, { flexDirection: "column" },
48
+ React.createElement(Radio_1.default, { onClick: () => handlePivotChange(false), checked: !Boolean(layout.EnablePivot) }, "Table"),
49
+ React.createElement(Radio_1.default, { onClick: () => handlePivotChange(true), checked: Boolean(layout.EnablePivot) }, "Pivot"))))));
50
+ };
51
+ exports.SettingsSection = SettingsSection;
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import { Layout } from '../../../../../types';
3
+ export declare const SortSectionSummary: React.FunctionComponent;
4
+ interface SortSectionProps {
5
+ onChange: (data: Layout) => void;
6
+ }
7
+ export declare const SortSection: React.FunctionComponent<SortSectionProps>;
8
+ export {};
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SortSection = exports.SortSectionSummary = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const rebass_1 = require("rebass");
7
+ const SimpleButton_1 = tslib_1.__importDefault(require("../../../../components/SimpleButton"));
8
+ const Tabs_1 = require("../../../../components/Tabs");
9
+ const Tag_1 = require("../../../../components/Tag");
10
+ const getLayoutSortViewItems_1 = require("../../../../Strategy/Utilities/Layout/getLayoutSortViewItems");
11
+ const sortWithOrder_1 = require("../../../../Utilities/sortWithOrder");
12
+ const AdaptableContext_1 = require("../../../AdaptableContext");
13
+ const ValueSelector_1 = require("../../../Components/ValueSelector");
14
+ const OnePageAdaptableWizard_1 = require("../../../Wizard/OnePageAdaptableWizard");
15
+ const Utilities_1 = require("./Utilities");
16
+ const SortSectionSummary = () => {
17
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
18
+ const adaptable = AdaptableContext_1.useAdaptable();
19
+ const sortViewItems = getLayoutSortViewItems_1.getLayoutSortViewItems(layout, adaptable.api);
20
+ return (React.createElement(rebass_1.Box, null, sortViewItems.values.length ? (sortViewItems.values.map((value) => (React.createElement(Tag_1.Tag, { key: value, mb: 1, mr: 1 }, value)))) : (React.createElement(Tag_1.Tag, null, "No Sorts"))));
21
+ };
22
+ exports.SortSectionSummary = SortSectionSummary;
23
+ const ColumnRow = (props) => {
24
+ var _a, _b, _c;
25
+ const SortOrder = (_c = ((_b = (_a = props.layout) === null || _a === void 0 ? void 0 : _a.ColumnSorts) !== null && _b !== void 0 ? _b : []).find((sort) => sort.ColumnId === props.column.columnId)) === null || _c === void 0 ? void 0 : _c.SortOrder;
26
+ const icon = SortOrder === 'Asc' ? 'sort-asc' : 'sort-desc';
27
+ return (React.createElement(rebass_1.Box, null,
28
+ props.column.friendlyName,
29
+ SortOrder && (React.createElement(SimpleButton_1.default, { ml: 2, onClick: () => props.onSortChange(props.column.columnId, SortOrder === 'Asc' ? 'Desc' : 'Asc'), variant: "raised", icon: icon }))));
30
+ };
31
+ const SortSection = (props) => {
32
+ var _a;
33
+ const adaptable = AdaptableContext_1.useAdaptable();
34
+ const { data: layout } = OnePageAdaptableWizard_1.useOnePageAdaptableWizardContext();
35
+ const allSortableColumns = adaptable.api.columnApi.getSortableColumns().filter((column) => {
36
+ // filter out columns that are not in the layout
37
+ return layout.Columns.includes(column.columnId);
38
+ });
39
+ const sortedSortColumns = React.useMemo(() => {
40
+ var _a;
41
+ return sortWithOrder_1.sortWithOrderArray(allSortableColumns.map((col) => col.columnId), ((_a = layout.ColumnSorts) !== null && _a !== void 0 ? _a : []).map((sort) => sort.ColumnId), { sortUnorderedItems: true }).map((colId) => adaptable.api.columnApi.getColumnFromId(colId));
42
+ }, [layout, allSortableColumns]);
43
+ const handleColumnsSelectionChange = React.useCallback((columnIds) => {
44
+ props.onChange(Object.assign(Object.assign({}, layout), { ColumnSorts: (columnIds || []).map((columnId) => {
45
+ var _a, _b, _c;
46
+ const SortOrder = (_c = (_b = (_a = layout.ColumnSorts) === null || _a === void 0 ? void 0 : _a.find((sort) => sort.ColumnId === columnId)) === null || _b === void 0 ? void 0 : _b.SortOrder) !== null && _c !== void 0 ? _c : 'Asc';
47
+ return {
48
+ ColumnId: columnId,
49
+ SortOrder: SortOrder,
50
+ };
51
+ }) }));
52
+ }, [layout]);
53
+ const handleSortChange = React.useCallback((columnId, SortOrder) => {
54
+ var _a;
55
+ props.onChange(Object.assign(Object.assign({}, layout), { ColumnSorts: (_a = layout.ColumnSorts) === null || _a === void 0 ? void 0 : _a.map((sort) => {
56
+ if (sort.ColumnId === columnId) {
57
+ return Object.assign(Object.assign({}, sort), { SortOrder: SortOrder });
58
+ }
59
+ return sort;
60
+ }) }));
61
+ }, [layout]);
62
+ return (React.createElement(Tabs_1.Tabs, { style: { height: '100%' } },
63
+ React.createElement(Tabs_1.Tabs.Tab, null, "Column Sorts"),
64
+ React.createElement(Tabs_1.Tabs.Content, null,
65
+ React.createElement(ValueSelector_1.ValueSelector, { showFilterInput: true, showSelectedOnlyPosition: "top", filter: Utilities_1.columnFilter, toIdentifier: (option) => `${option.columnId}`, toLabel: (option) => { var _a; return (_a = option.friendlyName) !== null && _a !== void 0 ? _a : option.columnId; }, toListLabel: (column) => (React.createElement(ColumnRow, { onSortChange: handleSortChange, layout: layout, column: column })), options: sortedSortColumns, value: ((_a = layout.ColumnSorts) !== null && _a !== void 0 ? _a : []).map((sort) => sort.ColumnId), allowReorder: () => true, xSelectedLabel: () => {
66
+ return `Active aggregations:`;
67
+ }, onChange: handleColumnsSelectionChange }))));
68
+ };
69
+ exports.SortSection = SortSection;