@deephaven/iris-grid 0.22.3-deep-bot-test.14 → 0.23.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.
- package/dist/AdvancedFilterCreator.d.ts +1 -1
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +7 -65
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +0 -23
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +0 -52
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +1 -5
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +2 -42
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js +0 -11
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.js +1 -20
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.d.ts +14 -14
- package/dist/CommonTypes.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js +2 -23
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js +2 -36
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.d.ts +1 -1
- package/dist/GotoRow.d.ts.map +1 -1
- package/dist/GotoRow.js +2 -7
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.d.ts +45 -39
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +77 -519
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.d.ts +2 -2
- package/dist/IrisGridBottomBar.d.ts.map +1 -1
- package/dist/IrisGridBottomBar.js +2 -2
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +6 -21
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts +3 -3
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +3 -50
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +2 -12
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +3 -3
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +32 -58
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.js +0 -7
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +0 -4
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js +0 -23
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.js +9 -153
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +1 -1
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +41 -183
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +3 -3
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +10 -90
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +3 -3
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +70 -461
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js +0 -23
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.d.ts +1 -1
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +3 -42
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +13 -7
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +98 -196
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.js +0 -7
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.d.ts +2 -2
- package/dist/PartitionSelectorSearch.js +2 -48
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +2 -2
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js +2 -7
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +2 -2
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js +3 -29
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/ToastBottomBar.d.ts +2 -2
- package/dist/ToastBottomBar.d.ts.map +1 -1
- package/dist/ToastBottomBar.js +2 -4
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/TreeTableViewportUpdater.js +0 -21
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.d.ts +1 -1
- package/dist/format-context-menus/CustomFormatAction.d.ts.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +4 -25
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -7
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -9
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +3 -9
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -8
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.js +0 -8
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +1 -10
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +0 -11
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -32
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +4 -34
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -20
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +15 -105
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -9
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -17
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +2 -15
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +0 -6
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/mousehandlers/index.js.map +1 -1
- package/dist/sidebar/AdvancedSettings.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.d.ts +6 -6
- package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +2 -6
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsType.js +0 -2
- package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +2 -2
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +2 -46
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +2 -2
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +6 -58
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +4 -15
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +5 -36
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/OptionType.js +0 -2
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +3 -3
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +9 -65
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +0 -13
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +0 -52
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +1 -1
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +10 -123
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +5 -4
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +37 -116
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts +2 -2
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +2 -14
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationOperation.js +0 -2
- package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +2 -5
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts +4 -4
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +2 -12
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -35
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +4 -4
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +5 -5
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +16 -26
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +3 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +9 -172
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/icons/BarIcon.js +0 -3
- package/dist/sidebar/icons/BarIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/HistogramIcon.js +0 -3
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
- package/dist/sidebar/icons/LineIcon.js +0 -3
- package/dist/sidebar/icons/LineIcon.js.map +1 -1
- package/dist/sidebar/icons/PieIcon.js +0 -3
- package/dist/sidebar/icons/PieIcon.js.map +1 -1
- package/dist/sidebar/icons/ScatterIcon.js +0 -3
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +15 -15
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
-
|
|
3
2
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
-
|
|
5
3
|
/* eslint-disable jsx-a11y/click-events-have-key-events */
|
|
6
4
|
import React, { Component } from 'react';
|
|
7
5
|
import classNames from 'classnames';
|
|
@@ -19,7 +17,6 @@ var log = Log.module('RollupRows');
|
|
|
19
17
|
var DEBOUNCE_SEARCH = 150;
|
|
20
18
|
var GROUPED_LIST_ID = 'grouped-rollup-rows';
|
|
21
19
|
var UNGROUPED_LIST_ID = 'ungrouped-rollup-rows';
|
|
22
|
-
|
|
23
20
|
class RollupRows extends Component {
|
|
24
21
|
static renderColumn(_ref) {
|
|
25
22
|
var {
|
|
@@ -36,72 +33,54 @@ class RollupRows extends Component {
|
|
|
36
33
|
className
|
|
37
34
|
});
|
|
38
35
|
}
|
|
39
|
-
|
|
40
36
|
static addGroupings(currentGroupings, newGroupings) {
|
|
41
37
|
var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : currentGroupings.length;
|
|
42
|
-
|
|
43
38
|
if (newGroupings == null || newGroupings.length === 0) {
|
|
44
39
|
return currentGroupings;
|
|
45
40
|
}
|
|
46
|
-
|
|
47
41
|
var insertIndex = index;
|
|
48
42
|
var groupings = currentGroupings.filter((grouping, i) => {
|
|
49
43
|
if (newGroupings.includes(grouping)) {
|
|
50
44
|
if (i < insertIndex) {
|
|
51
45
|
insertIndex -= 1;
|
|
52
46
|
}
|
|
53
|
-
|
|
54
47
|
return false;
|
|
55
48
|
}
|
|
56
|
-
|
|
57
49
|
return true;
|
|
58
50
|
});
|
|
59
51
|
groupings.splice(insertIndex, 0, ...newGroupings);
|
|
60
52
|
return groupings;
|
|
61
53
|
}
|
|
62
|
-
|
|
63
54
|
static isGroupable(column) {
|
|
64
55
|
return !TableUtils.isDecimalType(column.type);
|
|
65
56
|
}
|
|
66
|
-
|
|
67
57
|
constructor(props) {
|
|
68
58
|
super(props);
|
|
69
|
-
|
|
70
59
|
_defineProperty(this, "ungroupedList", void 0);
|
|
71
|
-
|
|
72
60
|
_defineProperty(this, "groupedList", void 0);
|
|
73
|
-
|
|
74
61
|
_defineProperty(this, "search", debounce(searchFilter => {
|
|
75
62
|
var columns = this.getSortedUngroupedColumns();
|
|
76
63
|
var selectedRanges = [];
|
|
77
64
|
var focusIndex = null;
|
|
78
|
-
|
|
79
65
|
for (var i = 0; i < columns.length; i += 1) {
|
|
80
66
|
var column = columns[i];
|
|
81
|
-
|
|
82
67
|
if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {
|
|
83
68
|
if (focusIndex == null) {
|
|
84
69
|
focusIndex = i;
|
|
85
70
|
}
|
|
86
|
-
|
|
87
71
|
selectedRanges.push([i, i]);
|
|
88
72
|
}
|
|
89
73
|
}
|
|
90
|
-
|
|
91
74
|
assertNotNull(focusIndex);
|
|
92
75
|
this.setState({
|
|
93
76
|
ungroupedSelectedRanges: selectedRanges
|
|
94
77
|
});
|
|
95
|
-
|
|
96
78
|
if (selectedRanges.length > 0 && this.ungroupedList.current) {
|
|
97
79
|
this.ungroupedList.current.scrollToItem(focusIndex);
|
|
98
80
|
}
|
|
99
81
|
}, DEBOUNCE_SEARCH));
|
|
100
|
-
|
|
101
82
|
_defineProperty(this, "getCachedUngroupedColumns", memoize((columns, groupedColumns) => columns.filter(column => RollupRows.isGroupable(column) && groupedColumns.find(name => name === column.name) == null)));
|
|
102
|
-
|
|
103
83
|
_defineProperty(this, "getCachedSortedColumns", memoize((columns, sort) => sort == null ? [...columns] : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING)));
|
|
104
|
-
|
|
105
84
|
this.handleDeleteClicked = this.handleDeleteClicked.bind(this);
|
|
106
85
|
this.handleSearchChange = this.handleSearchChange.bind(this);
|
|
107
86
|
this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);
|
|
@@ -135,7 +114,6 @@ class RollupRows extends Component {
|
|
|
135
114
|
sort: null
|
|
136
115
|
};
|
|
137
116
|
}
|
|
138
|
-
|
|
139
117
|
componentDidUpdate(prevProps, prevState) {
|
|
140
118
|
var {
|
|
141
119
|
config
|
|
@@ -145,7 +123,6 @@ class RollupRows extends Component {
|
|
|
145
123
|
showConstituents,
|
|
146
124
|
showNonAggregatedColumns
|
|
147
125
|
} = this.state;
|
|
148
|
-
|
|
149
126
|
if (config !== prevProps.config) {
|
|
150
127
|
this.updateFromConfig();
|
|
151
128
|
} else if (columns !== prevState.columns || showConstituents !== prevState.showConstituents || showNonAggregatedColumns !== prevState.showNonAggregatedColumns) {
|
|
@@ -154,26 +131,21 @@ class RollupRows extends Component {
|
|
|
154
131
|
}
|
|
155
132
|
}
|
|
156
133
|
}
|
|
157
|
-
|
|
158
134
|
componentWillUnmount() {
|
|
159
135
|
this.search.cancel();
|
|
160
136
|
}
|
|
161
|
-
|
|
162
137
|
handleSearchChange(event) {
|
|
163
138
|
var searchFilter = event.target.value;
|
|
164
139
|
this.setState({
|
|
165
140
|
searchFilter
|
|
166
141
|
});
|
|
167
|
-
|
|
168
142
|
if (!searchFilter) {
|
|
169
143
|
this.search.cancel();
|
|
170
144
|
this.resetSelection();
|
|
171
145
|
return;
|
|
172
146
|
}
|
|
173
|
-
|
|
174
147
|
this.search(searchFilter);
|
|
175
148
|
}
|
|
176
|
-
|
|
177
149
|
handleSortAscending() {
|
|
178
150
|
this.setState(_ref2 => {
|
|
179
151
|
var {
|
|
@@ -184,7 +156,6 @@ class RollupRows extends Component {
|
|
|
184
156
|
};
|
|
185
157
|
});
|
|
186
158
|
}
|
|
187
|
-
|
|
188
159
|
handleSortDescending() {
|
|
189
160
|
this.setState(_ref3 => {
|
|
190
161
|
var {
|
|
@@ -195,14 +166,12 @@ class RollupRows extends Component {
|
|
|
195
166
|
};
|
|
196
167
|
});
|
|
197
168
|
}
|
|
198
|
-
|
|
199
169
|
resetSelection() {
|
|
200
170
|
this.setState({
|
|
201
171
|
ungroupedSelectedRanges: [],
|
|
202
172
|
groupedSelectedRanges: []
|
|
203
173
|
});
|
|
204
174
|
}
|
|
205
|
-
|
|
206
175
|
handleDragStart(e) {
|
|
207
176
|
log.debug('handleDragStart', e);
|
|
208
177
|
document.documentElement.classList.add('drag-pointer-events-none');
|
|
@@ -210,7 +179,6 @@ class RollupRows extends Component {
|
|
|
210
179
|
dragSource: e.source
|
|
211
180
|
});
|
|
212
181
|
}
|
|
213
|
-
|
|
214
182
|
handleDragEnd(e) {
|
|
215
183
|
log.debug('handleDragEnd', e);
|
|
216
184
|
document.documentElement.classList.remove('drag-pointer-events-none');
|
|
@@ -221,13 +189,12 @@ class RollupRows extends Component {
|
|
|
221
189
|
destination,
|
|
222
190
|
source
|
|
223
191
|
} = e;
|
|
224
|
-
|
|
225
192
|
if (destination == null || source == null) {
|
|
226
193
|
return;
|
|
227
|
-
}
|
|
228
|
-
// it must have came from the grouped list. Remove those grouped columns.
|
|
229
|
-
|
|
194
|
+
}
|
|
230
195
|
|
|
196
|
+
// We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,
|
|
197
|
+
// it must have came from the grouped list. Remove those grouped columns.
|
|
231
198
|
if (destination.droppableId === UNGROUPED_LIST_ID) {
|
|
232
199
|
this.setState(_ref4 => {
|
|
233
200
|
var {
|
|
@@ -243,19 +210,17 @@ class RollupRows extends Component {
|
|
|
243
210
|
};
|
|
244
211
|
});
|
|
245
212
|
return;
|
|
246
|
-
}
|
|
247
|
-
|
|
213
|
+
}
|
|
248
214
|
|
|
215
|
+
// Otherwise, it must be dropping into the grouped list, so we just need to check the source
|
|
249
216
|
var isSameList = source.droppableId === GROUPED_LIST_ID;
|
|
250
217
|
var destinationIndex = destination.index;
|
|
251
|
-
|
|
252
218
|
if (isSameList && source.index < destination.index) {
|
|
253
219
|
// react-beautiful-dnd adjusts the index when dragging within a list already, however that only supports single selection
|
|
254
220
|
// We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as
|
|
255
221
|
// we adjust the index based on all the selected ranges, not just the source.index.
|
|
256
222
|
destinationIndex += 1;
|
|
257
223
|
}
|
|
258
|
-
|
|
259
224
|
this.setState(_ref5 => {
|
|
260
225
|
var {
|
|
261
226
|
columns,
|
|
@@ -265,8 +230,9 @@ class RollupRows extends Component {
|
|
|
265
230
|
var newColumns = [...columns];
|
|
266
231
|
var sourceItems = isSameList ? newColumns : this.getSortedUngroupedColumns().map(c => c.name);
|
|
267
232
|
var sourceRanges = isSameList ? groupedSelectedRanges : ungroupedSelectedRanges;
|
|
268
|
-
var draggedItems = DragUtils.reorder(sourceItems, sourceRanges, newColumns, destinationIndex);
|
|
233
|
+
var draggedItems = DragUtils.reorder(sourceItems, sourceRanges, newColumns, destinationIndex);
|
|
269
234
|
|
|
235
|
+
// Select the newly dropped items
|
|
270
236
|
var insertIndex = isSameList ? DragUtils.adjustDestinationIndex(destinationIndex, groupedSelectedRanges) : destinationIndex;
|
|
271
237
|
var newSelectedRanges = [[insertIndex, insertIndex + draggedItems.length - 1]];
|
|
272
238
|
return {
|
|
@@ -277,7 +243,6 @@ class RollupRows extends Component {
|
|
|
277
243
|
});
|
|
278
244
|
this.resetSelection();
|
|
279
245
|
}
|
|
280
|
-
|
|
281
246
|
handleUngroupedSelect(itemIndex) {
|
|
282
247
|
log.debug('handleUngroupedSelect');
|
|
283
248
|
this.setState(_ref6 => {
|
|
@@ -291,43 +256,36 @@ class RollupRows extends Component {
|
|
|
291
256
|
};
|
|
292
257
|
});
|
|
293
258
|
}
|
|
294
|
-
|
|
295
259
|
handleUngroupedSelectionChange(ungroupedSelectedRanges) {
|
|
296
260
|
log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);
|
|
297
261
|
this.setState(_ref7 => {
|
|
298
262
|
var {
|
|
299
263
|
ungroupedSelectedRanges: stateUngroupedSelectedRanges
|
|
300
264
|
} = _ref7;
|
|
301
|
-
|
|
302
265
|
if (ungroupedSelectedRanges === stateUngroupedSelectedRanges) {
|
|
303
266
|
return null;
|
|
304
267
|
}
|
|
305
|
-
|
|
306
268
|
return {
|
|
307
269
|
ungroupedSelectedRanges,
|
|
308
270
|
groupedSelectedRanges: []
|
|
309
271
|
};
|
|
310
272
|
});
|
|
311
273
|
}
|
|
312
|
-
|
|
313
274
|
handleGroupedSelectionChange(groupedSelectedRanges) {
|
|
314
275
|
log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);
|
|
315
276
|
this.setState(_ref8 => {
|
|
316
277
|
var {
|
|
317
278
|
groupedSelectedRanges: stateGroupedSelectedRanges
|
|
318
279
|
} = _ref8;
|
|
319
|
-
|
|
320
280
|
if (groupedSelectedRanges === stateGroupedSelectedRanges) {
|
|
321
281
|
return null;
|
|
322
282
|
}
|
|
323
|
-
|
|
324
283
|
return {
|
|
325
284
|
groupedSelectedRanges,
|
|
326
285
|
ungroupedSelectedRanges: []
|
|
327
286
|
};
|
|
328
287
|
});
|
|
329
288
|
}
|
|
330
|
-
|
|
331
289
|
handleDeleteClicked(index) {
|
|
332
290
|
this.setState(_ref9 => {
|
|
333
291
|
var {
|
|
@@ -340,7 +298,6 @@ class RollupRows extends Component {
|
|
|
340
298
|
};
|
|
341
299
|
});
|
|
342
300
|
}
|
|
343
|
-
|
|
344
301
|
handleShowConstituentsChange() {
|
|
345
302
|
this.setState(_ref10 => {
|
|
346
303
|
var {
|
|
@@ -351,7 +308,6 @@ class RollupRows extends Component {
|
|
|
351
308
|
};
|
|
352
309
|
});
|
|
353
310
|
}
|
|
354
|
-
|
|
355
311
|
handleShowNonAggregatedColumnsChange() {
|
|
356
312
|
this.setState(_ref11 => {
|
|
357
313
|
var {
|
|
@@ -362,7 +318,6 @@ class RollupRows extends Component {
|
|
|
362
318
|
};
|
|
363
319
|
});
|
|
364
320
|
}
|
|
365
|
-
|
|
366
321
|
updateFromConfig() {
|
|
367
322
|
var {
|
|
368
323
|
config
|
|
@@ -378,7 +333,6 @@ class RollupRows extends Component {
|
|
|
378
333
|
showNonAggregatedColumns
|
|
379
334
|
});
|
|
380
335
|
}
|
|
381
|
-
|
|
382
336
|
sendChange() {
|
|
383
337
|
var {
|
|
384
338
|
onChange
|
|
@@ -394,7 +348,6 @@ class RollupRows extends Component {
|
|
|
394
348
|
showNonAggregatedColumns
|
|
395
349
|
});
|
|
396
350
|
}
|
|
397
|
-
|
|
398
351
|
getUngroupedColumns() {
|
|
399
352
|
var {
|
|
400
353
|
model
|
|
@@ -407,7 +360,6 @@ class RollupRows extends Component {
|
|
|
407
360
|
} = model;
|
|
408
361
|
return this.getCachedUngroupedColumns(originalColumns, columns);
|
|
409
362
|
}
|
|
410
|
-
|
|
411
363
|
getSortedUngroupedColumns() {
|
|
412
364
|
var {
|
|
413
365
|
sort
|
|
@@ -415,7 +367,6 @@ class RollupRows extends Component {
|
|
|
415
367
|
var columns = this.getUngroupedColumns();
|
|
416
368
|
return this.getCachedSortedColumns(columns, sort);
|
|
417
369
|
}
|
|
418
|
-
|
|
419
370
|
renderGroupedItem(_ref12) {
|
|
420
371
|
var {
|
|
421
372
|
item,
|
|
@@ -439,7 +390,6 @@ class RollupRows extends Component {
|
|
|
439
390
|
icon: vsTrash
|
|
440
391
|
})));
|
|
441
392
|
}
|
|
442
|
-
|
|
443
393
|
render() {
|
|
444
394
|
var {
|
|
445
395
|
columns,
|
|
@@ -453,11 +403,9 @@ class RollupRows extends Component {
|
|
|
453
403
|
} = this.state;
|
|
454
404
|
var ungroupedColumns = this.getSortedUngroupedColumns();
|
|
455
405
|
var groupListHeight = columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;
|
|
456
|
-
|
|
457
406
|
if ((dragSource === null || dragSource === void 0 ? void 0 : dragSource.droppableId) === UNGROUPED_LIST_ID) {
|
|
458
407
|
groupListHeight += DraggableItemList.DEFAULT_ROW_HEIGHT;
|
|
459
408
|
}
|
|
460
|
-
|
|
461
409
|
var ungroupMaxListHeight = ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;
|
|
462
410
|
var ungroupMinListHeight = Math.min(3 * DraggableItemList.DEFAULT_ROW_HEIGHT, ungroupMaxListHeight);
|
|
463
411
|
return /*#__PURE__*/React.createElement("div", {
|
|
@@ -481,8 +429,8 @@ class RollupRows extends Component {
|
|
|
481
429
|
'is-dragging-over': snapshot.isDraggingOver,
|
|
482
430
|
'is-dropping': snapshot.draggingOverWith
|
|
483
431
|
}),
|
|
484
|
-
ref: provided.innerRef
|
|
485
|
-
|
|
432
|
+
ref: provided.innerRef
|
|
433
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
486
434
|
}, provided.droppableProps), "Create rollup by dragging columns here, from the available columns list below.")), columns.length > 0 && /*#__PURE__*/React.createElement(DraggableItemList, {
|
|
487
435
|
draggingItemClassName: "rollup-rows-dragging-grouped-item",
|
|
488
436
|
draggablePrefix: GROUPED_LIST_ID,
|
|
@@ -556,18 +504,14 @@ class RollupRows extends Component {
|
|
|
556
504
|
onChange: this.handleShowNonAggregatedColumnsChange
|
|
557
505
|
}, "Non-Aggregated Columns")))));
|
|
558
506
|
}
|
|
559
|
-
|
|
560
507
|
}
|
|
561
|
-
|
|
562
508
|
_defineProperty(RollupRows, "SORT", Object.freeze({
|
|
563
509
|
ASCENDING: 'ASC',
|
|
564
510
|
DESCENDING: 'DESC'
|
|
565
511
|
}));
|
|
566
|
-
|
|
567
512
|
_defineProperty(RollupRows, "defaultProps", {
|
|
568
513
|
config: null,
|
|
569
514
|
onChange: () => undefined
|
|
570
515
|
});
|
|
571
|
-
|
|
572
516
|
export default RollupRows;
|
|
573
517
|
//# sourceMappingURL=RollupRows.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RollupRows.js","names":["React","Component","classNames","FontAwesomeIcon","DragDropContext","Droppable","Checkbox","DraggableItemList","DragUtils","SearchInput","Tooltip","Button","vsTrash","dhSortAlphaDown","dhSortAlphaUp","TableUtils","memoize","debounce","Log","assertNotNull","log","module","DEBOUNCE_SEARCH","GROUPED_LIST_ID","UNGROUPED_LIST_ID","RollupRows","renderColumn","item","isClone","selectedCount","text","name","badgeText","undefined","className","renderTextItem","addGroupings","currentGroupings","newGroupings","index","length","insertIndex","groupings","filter","grouping","i","includes","splice","isGroupable","column","isDecimalType","type","constructor","props","searchFilter","columns","getSortedUngroupedColumns","selectedRanges","focusIndex","toLowerCase","push","setState","ungroupedSelectedRanges","ungroupedList","current","scrollToItem","groupedColumns","find","sort","sortColumns","SORT","ASCENDING","handleDeleteClicked","bind","handleSearchChange","handleUngroupedSelect","handleUngroupedSelectionChange","handleDragStart","handleDragEnd","handleGroupedSelectionChange","handleShowConstituentsChange","handleShowNonAggregatedColumnsChange","handleSortAscending","handleSortDescending","renderGroupedItem","createRef","groupedList","config","showConstituents","showNonAggregatedColumns","state","groupedSelectedRanges","dragSource","componentDidUpdate","prevProps","prevState","updateFromConfig","sendChange","componentWillUnmount","search","cancel","event","target","value","resetSelection","DESCENDING","e","debug","document","documentElement","classList","add","source","remove","destination","droppableId","newColumns","reorder","isSameList","destinationIndex","sourceItems","map","c","sourceRanges","draggedItems","adjustDestinationIndex","newSelectedRanges","itemIndex","debug2","stateUngroupedSelectedRanges","stateGroupedSelectedRanges","slice","onChange","getUngroupedColumns","model","originalColumns","getCachedUngroupedColumns","getCachedSortedColumns","indent","repeat","render","ungroupedColumns","groupListHeight","DEFAULT_ROW_HEIGHT","ungroupMaxListHeight","ungroupMinListHeight","Math","min","provided","snapshot","draggingFromThisWith","isDraggingOver","draggingOverWith","innerRef","droppableProps","height","active","maxHeight","minHeight","Object","freeze"],"sources":["../../src/sidebar/RollupRows.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n DragDropContext,\n DraggableLocation,\n DragStart,\n Droppable,\n DropResult,\n} from 'react-beautiful-dnd';\nimport {\n Checkbox,\n DraggableItemList,\n DragUtils,\n SearchInput,\n Tooltip,\n Range,\n RenderItemProps,\n Button,\n} from '@deephaven/components';\nimport { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';\nimport { TableUtils, SortDirection } from '@deephaven/jsapi-utils';\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\nimport './RollupRows.scss';\nimport { Column } from '@deephaven/jsapi-shim';\nimport IrisGridModel from '../IrisGridModel';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('RollupRows');\nconst DEBOUNCE_SEARCH = 150;\nconst GROUPED_LIST_ID = 'grouped-rollup-rows';\nconst UNGROUPED_LIST_ID = 'ungrouped-rollup-rows';\n\nexport interface UIRollupConfig {\n columns: ColumnName[];\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n includeDescriptions: true;\n}\n\ninterface RollupRowsProps {\n model: IrisGridModel;\n onChange: (rollupConfig: UIRollupConfig) => void;\n config: UIRollupConfig | null;\n}\n\ninterface RollupRowsState {\n ungroupedSelectedRanges: Range[];\n columns: ColumnName[];\n groupedSelectedRanges: Range[];\n searchFilter: string;\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n dragSource: DraggableLocation | null;\n sort: SortDirection;\n}\n\nclass RollupRows extends Component<RollupRowsProps, RollupRowsState> {\n static SORT = Object.freeze({\n ASCENDING: 'ASC',\n DESCENDING: 'DESC',\n });\n\n static defaultProps = {\n config: null,\n onChange: (): void => undefined,\n };\n\n static renderColumn({\n item,\n isClone,\n selectedCount,\n }: RenderItemProps<Column> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const text = item?.name;\n const badgeText =\n isClone !== undefined && isClone ? `${selectedCount}` : undefined;\n const className =\n isClone !== undefined && isClone ? 'item-list-item-clone' : '';\n return DraggableItemList.renderTextItem({ text, badgeText, className });\n }\n\n static addGroupings(\n currentGroupings: string[],\n newGroupings: string[],\n index: number = currentGroupings.length\n ): string[] {\n if (newGroupings == null || newGroupings.length === 0) {\n return currentGroupings;\n }\n\n let insertIndex = index;\n const groupings = currentGroupings.filter((grouping, i) => {\n if (newGroupings.includes(grouping)) {\n if (i < insertIndex) {\n insertIndex -= 1;\n }\n return false;\n }\n return true;\n });\n groupings.splice(insertIndex, 0, ...newGroupings);\n return groupings;\n }\n\n static isGroupable(column: Column): boolean {\n return !TableUtils.isDecimalType(column.type);\n }\n\n constructor(props: RollupRowsProps) {\n super(props);\n\n this.handleDeleteClicked = this.handleDeleteClicked.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);\n this.handleUngroupedSelectionChange = this.handleUngroupedSelectionChange.bind(\n this\n );\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleGroupedSelectionChange = this.handleGroupedSelectionChange.bind(\n this\n );\n this.handleShowConstituentsChange = this.handleShowConstituentsChange.bind(\n this\n );\n this.handleShowNonAggregatedColumnsChange = this.handleShowNonAggregatedColumnsChange.bind(\n this\n );\n this.handleSortAscending = this.handleSortAscending.bind(this);\n this.handleSortDescending = this.handleSortDescending.bind(this);\n this.renderGroupedItem = this.renderGroupedItem.bind(this);\n\n this.ungroupedList = React.createRef();\n this.groupedList = React.createRef();\n\n const { config } = props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n\n this.state = {\n ungroupedSelectedRanges: [],\n columns,\n groupedSelectedRanges: [],\n searchFilter: '',\n showConstituents,\n showNonAggregatedColumns,\n dragSource: null,\n sort: null,\n };\n }\n\n componentDidUpdate(\n prevProps: RollupRowsProps,\n prevState: RollupRowsState\n ): void {\n const { config } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n if (config !== prevProps.config) {\n this.updateFromConfig();\n } else if (\n columns !== prevState.columns ||\n showConstituents !== prevState.showConstituents ||\n showNonAggregatedColumns !== prevState.showNonAggregatedColumns\n ) {\n if (\n config == null ||\n columns !== config.columns ||\n showConstituents !== config.showConstituents ||\n showNonAggregatedColumns !== config.showNonAggregatedColumns\n ) {\n this.sendChange();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.search.cancel();\n }\n\n ungroupedList: RefObject<DraggableItemList<Column>>;\n\n groupedList: RefObject<DraggableItemList<string>>;\n\n handleSearchChange(event: ChangeEvent<HTMLInputElement>): void {\n const searchFilter = event.target.value;\n this.setState({ searchFilter });\n if (!searchFilter) {\n this.search.cancel();\n this.resetSelection();\n return;\n }\n this.search(searchFilter);\n }\n\n handleSortAscending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.ASCENDING\n ? null\n : (RollupRows.SORT.ASCENDING as SortDirection),\n }));\n }\n\n handleSortDescending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.DESCENDING\n ? null\n : (RollupRows.SORT.DESCENDING as SortDirection),\n }));\n }\n\n resetSelection(): void {\n this.setState({ ungroupedSelectedRanges: [], groupedSelectedRanges: [] });\n }\n\n search = debounce((searchFilter: string) => {\n const columns = this.getSortedUngroupedColumns();\n const selectedRanges = [] as Range[];\n let focusIndex = null;\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {\n if (focusIndex == null) {\n focusIndex = i;\n }\n selectedRanges.push([i, i]);\n }\n }\n assertNotNull(focusIndex);\n this.setState({ ungroupedSelectedRanges: selectedRanges });\n\n if (selectedRanges.length > 0 && this.ungroupedList.current) {\n this.ungroupedList.current.scrollToItem(focusIndex);\n }\n }, DEBOUNCE_SEARCH);\n\n handleDragStart(e: DragStart): void {\n log.debug('handleDragStart', e);\n\n document.documentElement.classList.add('drag-pointer-events-none');\n\n this.setState({ dragSource: e.source });\n }\n\n handleDragEnd(e: DropResult): void {\n log.debug('handleDragEnd', e);\n\n document.documentElement.classList.remove('drag-pointer-events-none');\n\n this.setState({ dragSource: null });\n\n const { destination, source } = e;\n if (destination == null || source == null) {\n return;\n }\n\n // We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,\n // it must have came from the grouped list. Remove those grouped columns.\n if (destination.droppableId === UNGROUPED_LIST_ID) {\n this.setState(({ groupedSelectedRanges, columns }) => {\n const newColumns = [...columns];\n DragUtils.reorder(newColumns, groupedSelectedRanges, [], 0);\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n };\n });\n return;\n }\n\n // Otherwise, it must be dropping into the grouped list, so we just need to check the source\n const isSameList = source.droppableId === GROUPED_LIST_ID;\n let destinationIndex = destination.index;\n if (isSameList && source.index < destination.index) {\n // react-beautiful-dnd adjusts the index when dragging within a list already, however that only supports single selection\n // We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as\n // we adjust the index based on all the selected ranges, not just the source.index.\n destinationIndex += 1;\n }\n this.setState(\n ({ columns, ungroupedSelectedRanges, groupedSelectedRanges }) => {\n const newColumns = [...columns];\n const sourceItems = isSameList\n ? newColumns\n : this.getSortedUngroupedColumns().map(c => c.name);\n const sourceRanges = isSameList\n ? groupedSelectedRanges\n : ungroupedSelectedRanges;\n const draggedItems = DragUtils.reorder(\n sourceItems,\n sourceRanges,\n newColumns,\n destinationIndex\n );\n\n // Select the newly dropped items\n const insertIndex = isSameList\n ? DragUtils.adjustDestinationIndex(\n destinationIndex,\n groupedSelectedRanges\n )\n : destinationIndex;\n const newSelectedRanges = [\n [insertIndex, insertIndex + draggedItems.length - 1] as Range,\n ];\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [] as Range[],\n groupedSelectedRanges: newSelectedRanges,\n };\n }\n );\n this.resetSelection();\n }\n\n handleUngroupedSelect(itemIndex: number): void {\n log.debug('handleUngroupedSelect');\n\n this.setState(({ columns }) => ({\n columns: RollupRows.addGroupings(columns, [\n this.getSortedUngroupedColumns()[itemIndex].name,\n ]),\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n }));\n }\n\n handleUngroupedSelectionChange(ungroupedSelectedRanges: Range[]): void {\n log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);\n this.setState(\n ({ ungroupedSelectedRanges: stateUngroupedSelectedRanges }) => {\n if (ungroupedSelectedRanges === stateUngroupedSelectedRanges) {\n return null;\n }\n\n return { ungroupedSelectedRanges, groupedSelectedRanges: [] };\n }\n );\n }\n\n handleGroupedSelectionChange(groupedSelectedRanges: Range[]): void {\n log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);\n this.setState(({ groupedSelectedRanges: stateGroupedSelectedRanges }) => {\n if (groupedSelectedRanges === stateGroupedSelectedRanges) {\n return null;\n }\n\n return { groupedSelectedRanges, ungroupedSelectedRanges: [] };\n });\n }\n\n handleDeleteClicked(index: number): void {\n this.setState(({ columns }) => {\n const newColumns = columns.slice();\n newColumns.splice(index, 1);\n return { columns: newColumns };\n });\n }\n\n handleShowConstituentsChange(): void {\n this.setState(({ showConstituents }) => ({\n showConstituents: !showConstituents,\n }));\n }\n\n handleShowNonAggregatedColumnsChange(): void {\n this.setState(({ showNonAggregatedColumns }) => ({\n showNonAggregatedColumns: !showNonAggregatedColumns,\n }));\n }\n\n updateFromConfig(): void {\n const { config } = this.props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n this.setState({ columns, showConstituents, showNonAggregatedColumns });\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n onChange({\n columns,\n showConstituents,\n showNonAggregatedColumns,\n } as UIRollupConfig);\n }\n\n getCachedUngroupedColumns = memoize(\n (columns: Column[], groupedColumns: ColumnName[]): Column[] =>\n columns.filter(\n column =>\n RollupRows.isGroupable(column) &&\n groupedColumns.find(name => name === column.name) == null\n )\n );\n\n getCachedSortedColumns = memoize(\n (columns: Column[], sort?: SortDirection): Column[] =>\n sort == null\n ? [...columns]\n : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING)\n );\n\n getUngroupedColumns(): Column[] {\n const { model } = this.props;\n const { columns } = this.state;\n const { originalColumns } = model;\n\n return this.getCachedUngroupedColumns(originalColumns, columns);\n }\n\n getSortedUngroupedColumns(): Column[] {\n const { sort } = this.state;\n const columns = this.getUngroupedColumns();\n return this.getCachedSortedColumns(columns, sort);\n }\n\n renderGroupedItem({\n item,\n itemIndex,\n isClone,\n selectedCount,\n }: RenderItemProps<string> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const indent =\n isClone !== undefined && isClone ? '' : '\\u00A0\\u00A0'.repeat(itemIndex);\n const text = `${indent}${item}`;\n const badgeText =\n isClone !== undefined && isClone ? `${selectedCount}` : undefined;\n const className =\n isClone !== undefined && isClone ? 'item-list-item-clone' : '';\n return (\n <>\n {DraggableItemList.renderTextItem({ text, badgeText, className })}\n {(isClone === undefined || !isClone) && (\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon btn-delete-grouping float-right\"\n onClick={() => this.handleDeleteClicked(itemIndex)}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </Button>\n )}\n </>\n );\n }\n\n render(): ReactElement {\n const {\n columns,\n dragSource,\n searchFilter,\n groupedSelectedRanges,\n ungroupedSelectedRanges,\n showConstituents,\n showNonAggregatedColumns,\n sort,\n } = this.state;\n\n const ungroupedColumns = this.getSortedUngroupedColumns();\n let groupListHeight = columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;\n if (dragSource?.droppableId === UNGROUPED_LIST_ID) {\n groupListHeight += DraggableItemList.DEFAULT_ROW_HEIGHT;\n }\n const ungroupMaxListHeight =\n ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;\n const ungroupMinListHeight = Math.min(\n 3 * DraggableItemList.DEFAULT_ROW_HEIGHT,\n ungroupMaxListHeight\n );\n\n return (\n <div\n role=\"menu\"\n className={classNames('rollup-rows', {\n 'is-dragging': dragSource != null,\n })}\n tabIndex={0}\n >\n <DragDropContext\n onDragEnd={this.handleDragEnd}\n onDragStart={this.handleDragStart}\n >\n <div className=\"rollup-rows-group-by\">\n <div className=\"section-title\">Group By</div>\n {columns.length === 0 && (\n <Droppable droppableId=\"placeholder\">\n {(provided, snapshot) => (\n <div\n className={classNames('placeholder', 'text-muted', {\n 'is-dragging-from-this': snapshot.draggingFromThisWith,\n 'is-dragging-over': snapshot.isDraggingOver,\n 'is-dropping': snapshot.draggingOverWith,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n Create rollup by dragging columns here, from the available\n columns list below.\n </div>\n )}\n </Droppable>\n )}\n {columns.length > 0 && (\n <DraggableItemList\n draggingItemClassName=\"rollup-rows-dragging-grouped-item\"\n draggablePrefix={GROUPED_LIST_ID}\n droppableId={GROUPED_LIST_ID}\n itemCount={columns.length}\n items={columns}\n offset={0}\n onSelectionChange={this.handleGroupedSelectionChange}\n ref={this.groupedList}\n renderItem={this.renderGroupedItem}\n selectedRanges={groupedSelectedRanges}\n style={{ height: groupListHeight }}\n isMultiSelect\n />\n )}\n </div>\n <div className=\"rollup-rows-available-columns\">\n <div className=\"section-title\">Available Grouping Columns</div>\n <div className=\"top-menu\">\n <SearchInput\n className=\"w-100\"\n value={searchFilter}\n matchCount={\n searchFilter ? ungroupedSelectedRanges.length : undefined\n }\n placeholder=\"Find column...\"\n onChange={this.handleSearchChange}\n />\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.ASCENDING,\n })}\n onClick={this.handleSortAscending}\n >\n <FontAwesomeIcon icon={dhSortAlphaDown} />\n <Tooltip>Sort ascending</Tooltip>\n </Button>\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.DESCENDING,\n })}\n onClick={this.handleSortDescending}\n >\n <FontAwesomeIcon icon={dhSortAlphaUp} />\n <Tooltip>Sort descending</Tooltip>\n </Button>\n </div>\n <DraggableItemList\n className=\"rollup-available-grouping-columns\"\n draggablePrefix={UNGROUPED_LIST_ID}\n droppableId={UNGROUPED_LIST_ID}\n itemCount={ungroupedColumns.length}\n items={ungroupedColumns}\n renderItem={RollupRows.renderColumn}\n offset={0}\n onSelect={this.handleUngroupedSelect}\n onSelectionChange={this.handleUngroupedSelectionChange}\n ref={this.ungroupedList}\n selectedRanges={ungroupedSelectedRanges}\n style={{\n maxHeight: ungroupMaxListHeight,\n minHeight: ungroupMinListHeight,\n }}\n isDropDisabled={dragSource?.droppableId !== GROUPED_LIST_ID}\n isMultiSelect\n />\n <div className=\"bottom-menu\">\n <div className=\"label\">Show:</div>\n <Checkbox\n checked={showConstituents}\n onChange={this.handleShowConstituentsChange}\n >\n Constituents\n </Checkbox>\n <Checkbox\n checked={showNonAggregatedColumns}\n onChange={this.handleShowNonAggregatedColumnsChange}\n >\n Non-Aggregated Columns\n </Checkbox>\n </div>\n </div>\n </DragDropContext>\n </div>\n );\n }\n}\n\nexport default RollupRows;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RollupRows.js","names":["React","Component","classNames","FontAwesomeIcon","DragDropContext","Droppable","Checkbox","DraggableItemList","DragUtils","SearchInput","Tooltip","Button","vsTrash","dhSortAlphaDown","dhSortAlphaUp","TableUtils","memoize","debounce","Log","assertNotNull","log","module","DEBOUNCE_SEARCH","GROUPED_LIST_ID","UNGROUPED_LIST_ID","RollupRows","renderColumn","item","isClone","selectedCount","text","name","badgeText","undefined","className","renderTextItem","addGroupings","currentGroupings","newGroupings","index","length","insertIndex","groupings","filter","grouping","i","includes","splice","isGroupable","column","isDecimalType","type","constructor","props","searchFilter","columns","getSortedUngroupedColumns","selectedRanges","focusIndex","toLowerCase","push","setState","ungroupedSelectedRanges","ungroupedList","current","scrollToItem","groupedColumns","find","sort","sortColumns","SORT","ASCENDING","handleDeleteClicked","bind","handleSearchChange","handleUngroupedSelect","handleUngroupedSelectionChange","handleDragStart","handleDragEnd","handleGroupedSelectionChange","handleShowConstituentsChange","handleShowNonAggregatedColumnsChange","handleSortAscending","handleSortDescending","renderGroupedItem","createRef","groupedList","config","showConstituents","showNonAggregatedColumns","state","groupedSelectedRanges","dragSource","componentDidUpdate","prevProps","prevState","updateFromConfig","sendChange","componentWillUnmount","search","cancel","event","target","value","resetSelection","DESCENDING","e","debug","document","documentElement","classList","add","source","remove","destination","droppableId","newColumns","reorder","isSameList","destinationIndex","sourceItems","map","c","sourceRanges","draggedItems","adjustDestinationIndex","newSelectedRanges","itemIndex","debug2","stateUngroupedSelectedRanges","stateGroupedSelectedRanges","slice","onChange","getUngroupedColumns","model","originalColumns","getCachedUngroupedColumns","getCachedSortedColumns","indent","repeat","render","ungroupedColumns","groupListHeight","DEFAULT_ROW_HEIGHT","ungroupMaxListHeight","ungroupMinListHeight","Math","min","provided","snapshot","draggingFromThisWith","isDraggingOver","draggingOverWith","innerRef","droppableProps","height","active","maxHeight","minHeight","Object","freeze"],"sources":["../../src/sidebar/RollupRows.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { ChangeEvent, Component, ReactElement, RefObject } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n DragDropContext,\n DraggableLocation,\n DragStart,\n Droppable,\n DropResult,\n} from 'react-beautiful-dnd';\nimport {\n Checkbox,\n DraggableItemList,\n DragUtils,\n SearchInput,\n Tooltip,\n Range,\n RenderItemProps,\n Button,\n} from '@deephaven/components';\nimport { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';\nimport { TableUtils, SortDirection } from '@deephaven/jsapi-utils';\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport { assertNotNull } from '@deephaven/utils';\nimport './RollupRows.scss';\nimport { Column } from '@deephaven/jsapi-shim';\nimport IrisGridModel from '../IrisGridModel';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('RollupRows');\nconst DEBOUNCE_SEARCH = 150;\nconst GROUPED_LIST_ID = 'grouped-rollup-rows';\nconst UNGROUPED_LIST_ID = 'ungrouped-rollup-rows';\n\nexport interface UIRollupConfig {\n columns: ColumnName[];\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n includeDescriptions: true;\n}\n\ninterface RollupRowsProps {\n model: IrisGridModel;\n onChange: (rollupConfig: UIRollupConfig) => void;\n config: UIRollupConfig | null;\n}\n\ninterface RollupRowsState {\n ungroupedSelectedRanges: Range[];\n columns: ColumnName[];\n groupedSelectedRanges: Range[];\n searchFilter: string;\n showConstituents: boolean;\n showNonAggregatedColumns: boolean;\n dragSource: DraggableLocation | null;\n sort: SortDirection;\n}\n\nclass RollupRows extends Component<RollupRowsProps, RollupRowsState> {\n static SORT = Object.freeze({\n ASCENDING: 'ASC',\n DESCENDING: 'DESC',\n });\n\n static defaultProps = {\n config: null,\n onChange: (): void => undefined,\n };\n\n static renderColumn({\n item,\n isClone,\n selectedCount,\n }: RenderItemProps<Column> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const text = item?.name;\n const badgeText =\n isClone !== undefined && isClone ? `${selectedCount}` : undefined;\n const className =\n isClone !== undefined && isClone ? 'item-list-item-clone' : '';\n return DraggableItemList.renderTextItem({ text, badgeText, className });\n }\n\n static addGroupings(\n currentGroupings: string[],\n newGroupings: string[],\n index: number = currentGroupings.length\n ): string[] {\n if (newGroupings == null || newGroupings.length === 0) {\n return currentGroupings;\n }\n\n let insertIndex = index;\n const groupings = currentGroupings.filter((grouping, i) => {\n if (newGroupings.includes(grouping)) {\n if (i < insertIndex) {\n insertIndex -= 1;\n }\n return false;\n }\n return true;\n });\n groupings.splice(insertIndex, 0, ...newGroupings);\n return groupings;\n }\n\n static isGroupable(column: Column): boolean {\n return !TableUtils.isDecimalType(column.type);\n }\n\n constructor(props: RollupRowsProps) {\n super(props);\n\n this.handleDeleteClicked = this.handleDeleteClicked.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);\n this.handleUngroupedSelectionChange = this.handleUngroupedSelectionChange.bind(\n this\n );\n this.handleDragStart = this.handleDragStart.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n this.handleGroupedSelectionChange = this.handleGroupedSelectionChange.bind(\n this\n );\n this.handleShowConstituentsChange = this.handleShowConstituentsChange.bind(\n this\n );\n this.handleShowNonAggregatedColumnsChange = this.handleShowNonAggregatedColumnsChange.bind(\n this\n );\n this.handleSortAscending = this.handleSortAscending.bind(this);\n this.handleSortDescending = this.handleSortDescending.bind(this);\n this.renderGroupedItem = this.renderGroupedItem.bind(this);\n\n this.ungroupedList = React.createRef();\n this.groupedList = React.createRef();\n\n const { config } = props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n\n this.state = {\n ungroupedSelectedRanges: [],\n columns,\n groupedSelectedRanges: [],\n searchFilter: '',\n showConstituents,\n showNonAggregatedColumns,\n dragSource: null,\n sort: null,\n };\n }\n\n componentDidUpdate(\n prevProps: RollupRowsProps,\n prevState: RollupRowsState\n ): void {\n const { config } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n if (config !== prevProps.config) {\n this.updateFromConfig();\n } else if (\n columns !== prevState.columns ||\n showConstituents !== prevState.showConstituents ||\n showNonAggregatedColumns !== prevState.showNonAggregatedColumns\n ) {\n if (\n config == null ||\n columns !== config.columns ||\n showConstituents !== config.showConstituents ||\n showNonAggregatedColumns !== config.showNonAggregatedColumns\n ) {\n this.sendChange();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.search.cancel();\n }\n\n ungroupedList: RefObject<DraggableItemList<Column>>;\n\n groupedList: RefObject<DraggableItemList<string>>;\n\n handleSearchChange(event: ChangeEvent<HTMLInputElement>): void {\n const searchFilter = event.target.value;\n this.setState({ searchFilter });\n if (!searchFilter) {\n this.search.cancel();\n this.resetSelection();\n return;\n }\n this.search(searchFilter);\n }\n\n handleSortAscending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.ASCENDING\n ? null\n : (RollupRows.SORT.ASCENDING as SortDirection),\n }));\n }\n\n handleSortDescending(): void {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.DESCENDING\n ? null\n : (RollupRows.SORT.DESCENDING as SortDirection),\n }));\n }\n\n resetSelection(): void {\n this.setState({ ungroupedSelectedRanges: [], groupedSelectedRanges: [] });\n }\n\n search = debounce((searchFilter: string) => {\n const columns = this.getSortedUngroupedColumns();\n const selectedRanges = [] as Range[];\n let focusIndex = null;\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {\n if (focusIndex == null) {\n focusIndex = i;\n }\n selectedRanges.push([i, i]);\n }\n }\n assertNotNull(focusIndex);\n this.setState({ ungroupedSelectedRanges: selectedRanges });\n\n if (selectedRanges.length > 0 && this.ungroupedList.current) {\n this.ungroupedList.current.scrollToItem(focusIndex);\n }\n }, DEBOUNCE_SEARCH);\n\n handleDragStart(e: DragStart): void {\n log.debug('handleDragStart', e);\n\n document.documentElement.classList.add('drag-pointer-events-none');\n\n this.setState({ dragSource: e.source });\n }\n\n handleDragEnd(e: DropResult): void {\n log.debug('handleDragEnd', e);\n\n document.documentElement.classList.remove('drag-pointer-events-none');\n\n this.setState({ dragSource: null });\n\n const { destination, source } = e;\n if (destination == null || source == null) {\n return;\n }\n\n // We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,\n // it must have came from the grouped list. Remove those grouped columns.\n if (destination.droppableId === UNGROUPED_LIST_ID) {\n this.setState(({ groupedSelectedRanges, columns }) => {\n const newColumns = [...columns];\n DragUtils.reorder(newColumns, groupedSelectedRanges, [], 0);\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n };\n });\n return;\n }\n\n // Otherwise, it must be dropping into the grouped list, so we just need to check the source\n const isSameList = source.droppableId === GROUPED_LIST_ID;\n let destinationIndex = destination.index;\n if (isSameList && source.index < destination.index) {\n // react-beautiful-dnd adjusts the index when dragging within a list already, however that only supports single selection\n // We need to change it back to the index we actually want it to drop at before adjusting for the removed source index, as\n // we adjust the index based on all the selected ranges, not just the source.index.\n destinationIndex += 1;\n }\n this.setState(\n ({ columns, ungroupedSelectedRanges, groupedSelectedRanges }) => {\n const newColumns = [...columns];\n const sourceItems = isSameList\n ? newColumns\n : this.getSortedUngroupedColumns().map(c => c.name);\n const sourceRanges = isSameList\n ? groupedSelectedRanges\n : ungroupedSelectedRanges;\n const draggedItems = DragUtils.reorder(\n sourceItems,\n sourceRanges,\n newColumns,\n destinationIndex\n );\n\n // Select the newly dropped items\n const insertIndex = isSameList\n ? DragUtils.adjustDestinationIndex(\n destinationIndex,\n groupedSelectedRanges\n )\n : destinationIndex;\n const newSelectedRanges = [\n [insertIndex, insertIndex + draggedItems.length - 1] as Range,\n ];\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [] as Range[],\n groupedSelectedRanges: newSelectedRanges,\n };\n }\n );\n this.resetSelection();\n }\n\n handleUngroupedSelect(itemIndex: number): void {\n log.debug('handleUngroupedSelect');\n\n this.setState(({ columns }) => ({\n columns: RollupRows.addGroupings(columns, [\n this.getSortedUngroupedColumns()[itemIndex].name,\n ]),\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: [],\n }));\n }\n\n handleUngroupedSelectionChange(ungroupedSelectedRanges: Range[]): void {\n log.debug2('handleUngroupedSelectionChange', ungroupedSelectedRanges);\n this.setState(\n ({ ungroupedSelectedRanges: stateUngroupedSelectedRanges }) => {\n if (ungroupedSelectedRanges === stateUngroupedSelectedRanges) {\n return null;\n }\n\n return { ungroupedSelectedRanges, groupedSelectedRanges: [] };\n }\n );\n }\n\n handleGroupedSelectionChange(groupedSelectedRanges: Range[]): void {\n log.debug2('handleGroupedSelectedRanges', groupedSelectedRanges);\n this.setState(({ groupedSelectedRanges: stateGroupedSelectedRanges }) => {\n if (groupedSelectedRanges === stateGroupedSelectedRanges) {\n return null;\n }\n\n return { groupedSelectedRanges, ungroupedSelectedRanges: [] };\n });\n }\n\n handleDeleteClicked(index: number): void {\n this.setState(({ columns }) => {\n const newColumns = columns.slice();\n newColumns.splice(index, 1);\n return { columns: newColumns };\n });\n }\n\n handleShowConstituentsChange(): void {\n this.setState(({ showConstituents }) => ({\n showConstituents: !showConstituents,\n }));\n }\n\n handleShowNonAggregatedColumnsChange(): void {\n this.setState(({ showNonAggregatedColumns }) => ({\n showNonAggregatedColumns: !showNonAggregatedColumns,\n }));\n }\n\n updateFromConfig(): void {\n const { config } = this.props;\n const {\n columns = [],\n showConstituents = true,\n showNonAggregatedColumns = true,\n } = config ?? {};\n this.setState({ columns, showConstituents, showNonAggregatedColumns });\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n onChange({\n columns,\n showConstituents,\n showNonAggregatedColumns,\n } as UIRollupConfig);\n }\n\n getCachedUngroupedColumns = memoize(\n (columns: Column[], groupedColumns: ColumnName[]): Column[] =>\n columns.filter(\n column =>\n RollupRows.isGroupable(column) &&\n groupedColumns.find(name => name === column.name) == null\n )\n );\n\n getCachedSortedColumns = memoize(\n (columns: Column[], sort?: SortDirection): Column[] =>\n sort == null\n ? [...columns]\n : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING)\n );\n\n getUngroupedColumns(): Column[] {\n const { model } = this.props;\n const { columns } = this.state;\n const { originalColumns } = model;\n\n return this.getCachedUngroupedColumns(originalColumns, columns);\n }\n\n getSortedUngroupedColumns(): Column[] {\n const { sort } = this.state;\n const columns = this.getUngroupedColumns();\n return this.getCachedSortedColumns(columns, sort);\n }\n\n renderGroupedItem({\n item,\n itemIndex,\n isClone,\n selectedCount,\n }: RenderItemProps<string> & {\n isClone?: boolean;\n selectedCount?: number;\n }): ReactElement {\n const indent =\n isClone !== undefined && isClone ? '' : '\\u00A0\\u00A0'.repeat(itemIndex);\n const text = `${indent}${item}`;\n const badgeText =\n isClone !== undefined && isClone ? `${selectedCount}` : undefined;\n const className =\n isClone !== undefined && isClone ? 'item-list-item-clone' : '';\n return (\n <>\n {DraggableItemList.renderTextItem({ text, badgeText, className })}\n {(isClone === undefined || !isClone) && (\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon btn-delete-grouping float-right\"\n onClick={() => this.handleDeleteClicked(itemIndex)}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </Button>\n )}\n </>\n );\n }\n\n render(): ReactElement {\n const {\n columns,\n dragSource,\n searchFilter,\n groupedSelectedRanges,\n ungroupedSelectedRanges,\n showConstituents,\n showNonAggregatedColumns,\n sort,\n } = this.state;\n\n const ungroupedColumns = this.getSortedUngroupedColumns();\n let groupListHeight = columns.length * DraggableItemList.DEFAULT_ROW_HEIGHT;\n if (dragSource?.droppableId === UNGROUPED_LIST_ID) {\n groupListHeight += DraggableItemList.DEFAULT_ROW_HEIGHT;\n }\n const ungroupMaxListHeight =\n ungroupedColumns.length * DraggableItemList.DEFAULT_ROW_HEIGHT + 10;\n const ungroupMinListHeight = Math.min(\n 3 * DraggableItemList.DEFAULT_ROW_HEIGHT,\n ungroupMaxListHeight\n );\n\n return (\n <div\n role=\"menu\"\n className={classNames('rollup-rows', {\n 'is-dragging': dragSource != null,\n })}\n tabIndex={0}\n >\n <DragDropContext\n onDragEnd={this.handleDragEnd}\n onDragStart={this.handleDragStart}\n >\n <div className=\"rollup-rows-group-by\">\n <div className=\"section-title\">Group By</div>\n {columns.length === 0 && (\n <Droppable droppableId=\"placeholder\">\n {(provided, snapshot) => (\n <div\n className={classNames('placeholder', 'text-muted', {\n 'is-dragging-from-this': snapshot.draggingFromThisWith,\n 'is-dragging-over': snapshot.isDraggingOver,\n 'is-dropping': snapshot.draggingOverWith,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n >\n Create rollup by dragging columns here, from the available\n columns list below.\n </div>\n )}\n </Droppable>\n )}\n {columns.length > 0 && (\n <DraggableItemList\n draggingItemClassName=\"rollup-rows-dragging-grouped-item\"\n draggablePrefix={GROUPED_LIST_ID}\n droppableId={GROUPED_LIST_ID}\n itemCount={columns.length}\n items={columns}\n offset={0}\n onSelectionChange={this.handleGroupedSelectionChange}\n ref={this.groupedList}\n renderItem={this.renderGroupedItem}\n selectedRanges={groupedSelectedRanges}\n style={{ height: groupListHeight }}\n isMultiSelect\n />\n )}\n </div>\n <div className=\"rollup-rows-available-columns\">\n <div className=\"section-title\">Available Grouping Columns</div>\n <div className=\"top-menu\">\n <SearchInput\n className=\"w-100\"\n value={searchFilter}\n matchCount={\n searchFilter ? ungroupedSelectedRanges.length : undefined\n }\n placeholder=\"Find column...\"\n onChange={this.handleSearchChange}\n />\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.ASCENDING,\n })}\n onClick={this.handleSortAscending}\n >\n <FontAwesomeIcon icon={dhSortAlphaDown} />\n <Tooltip>Sort ascending</Tooltip>\n </Button>\n <Button\n kind=\"ghost\"\n className={classNames('btn-link btn-link-icon', {\n active: sort === RollupRows.SORT.DESCENDING,\n })}\n onClick={this.handleSortDescending}\n >\n <FontAwesomeIcon icon={dhSortAlphaUp} />\n <Tooltip>Sort descending</Tooltip>\n </Button>\n </div>\n <DraggableItemList\n className=\"rollup-available-grouping-columns\"\n draggablePrefix={UNGROUPED_LIST_ID}\n droppableId={UNGROUPED_LIST_ID}\n itemCount={ungroupedColumns.length}\n items={ungroupedColumns}\n renderItem={RollupRows.renderColumn}\n offset={0}\n onSelect={this.handleUngroupedSelect}\n onSelectionChange={this.handleUngroupedSelectionChange}\n ref={this.ungroupedList}\n selectedRanges={ungroupedSelectedRanges}\n style={{\n maxHeight: ungroupMaxListHeight,\n minHeight: ungroupMinListHeight,\n }}\n isDropDisabled={dragSource?.droppableId !== GROUPED_LIST_ID}\n isMultiSelect\n />\n <div className=\"bottom-menu\">\n <div className=\"label\">Show:</div>\n <Checkbox\n checked={showConstituents}\n onChange={this.handleShowConstituentsChange}\n >\n Constituents\n </Checkbox>\n <Checkbox\n checked={showNonAggregatedColumns}\n onChange={this.handleShowNonAggregatedColumnsChange}\n >\n Non-Aggregated Columns\n </Checkbox>\n </div>\n </div>\n </DragDropContext>\n </div>\n );\n }\n}\n\nexport default RollupRows;\n"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
-
|
|
3
2
|
import React, { Component } from 'react';
|
|
4
3
|
import deepEqual from 'deep-equal';
|
|
5
4
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
@@ -8,7 +7,6 @@ import { Button } from '@deephaven/components';
|
|
|
8
7
|
import Log from '@deephaven/log';
|
|
9
8
|
import "./SelectDistinctBuilder.css";
|
|
10
9
|
var log = Log.module('SelectDistinctBuilder');
|
|
11
|
-
|
|
12
10
|
class SelectDistinctBuilder extends Component {
|
|
13
11
|
constructor(props) {
|
|
14
12
|
super(props);
|
|
@@ -24,7 +22,6 @@ class SelectDistinctBuilder extends Component {
|
|
|
24
22
|
columns: model.originalColumns
|
|
25
23
|
};
|
|
26
24
|
}
|
|
27
|
-
|
|
28
25
|
componentDidUpdate(prevProps, prevState) {
|
|
29
26
|
var {
|
|
30
27
|
inputs
|
|
@@ -32,16 +29,13 @@ class SelectDistinctBuilder extends Component {
|
|
|
32
29
|
var {
|
|
33
30
|
onChange
|
|
34
31
|
} = this.props;
|
|
35
|
-
|
|
36
32
|
if (prevState.inputs !== inputs) {
|
|
37
33
|
var filteredInputs = inputs.filter(val => val !== '');
|
|
38
|
-
|
|
39
34
|
if (!deepEqual(prevState.inputs.filter(val => val !== ''), filteredInputs)) {
|
|
40
35
|
onChange(filteredInputs);
|
|
41
36
|
}
|
|
42
37
|
}
|
|
43
38
|
}
|
|
44
|
-
|
|
45
39
|
handleAddColumnClick() {
|
|
46
40
|
this.setState(_ref => {
|
|
47
41
|
var {
|
|
@@ -52,7 +46,6 @@ class SelectDistinctBuilder extends Component {
|
|
|
52
46
|
};
|
|
53
47
|
});
|
|
54
48
|
}
|
|
55
|
-
|
|
56
49
|
handleDeleteColumn(index) {
|
|
57
50
|
this.setState(_ref2 => {
|
|
58
51
|
var {
|
|
@@ -63,7 +56,6 @@ class SelectDistinctBuilder extends Component {
|
|
|
63
56
|
};
|
|
64
57
|
});
|
|
65
58
|
}
|
|
66
|
-
|
|
67
59
|
handleDropdownChanged(index, event) {
|
|
68
60
|
log.debug('handleDropdownChanged', index, event);
|
|
69
61
|
var {
|
|
@@ -80,7 +72,6 @@ class SelectDistinctBuilder extends Component {
|
|
|
80
72
|
};
|
|
81
73
|
});
|
|
82
74
|
}
|
|
83
|
-
|
|
84
75
|
renderInputs() {
|
|
85
76
|
var {
|
|
86
77
|
columns,
|
|
@@ -128,7 +119,6 @@ class SelectDistinctBuilder extends Component {
|
|
|
128
119
|
);
|
|
129
120
|
});
|
|
130
121
|
}
|
|
131
|
-
|
|
132
122
|
render() {
|
|
133
123
|
var {
|
|
134
124
|
columns,
|
|
@@ -156,13 +146,10 @@ class SelectDistinctBuilder extends Component {
|
|
|
156
146
|
className: "inline-code-snippet"
|
|
157
147
|
}, "selectDistinct(\"Column\")"), ". Filters will be reset and the resulting table will contain only the selected columns above.")));
|
|
158
148
|
}
|
|
159
|
-
|
|
160
149
|
}
|
|
161
|
-
|
|
162
150
|
_defineProperty(SelectDistinctBuilder, "defaultProps", {
|
|
163
151
|
selectDistinctColumns: [],
|
|
164
152
|
onChange: () => undefined
|
|
165
153
|
});
|
|
166
|
-
|
|
167
154
|
export default SelectDistinctBuilder;
|
|
168
155
|
//# sourceMappingURL=SelectDistinctBuilder.js.map
|