@deephaven/iris-grid 0.22.3-embed-pandas.11 → 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.
Files changed (243) hide show
  1. package/dist/AdvancedFilterCreator.d.ts +1 -1
  2. package/dist/AdvancedFilterCreator.d.ts.map +1 -1
  3. package/dist/AdvancedFilterCreator.js +7 -65
  4. package/dist/AdvancedFilterCreator.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorFilterItem.d.ts +1 -1
  6. package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
  7. package/dist/AdvancedFilterCreatorFilterItem.js +0 -23
  8. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  9. package/dist/AdvancedFilterCreatorSelectValue.js +0 -52
  10. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  11. package/dist/AdvancedFilterCreatorSelectValueList.d.ts +1 -5
  12. package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
  13. package/dist/AdvancedFilterCreatorSelectValueList.js +2 -42
  14. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  15. package/dist/ColumnHeaderGroup.js +0 -11
  16. package/dist/ColumnHeaderGroup.js.map +1 -1
  17. package/dist/ColumnStatistics.d.ts +0 -2
  18. package/dist/ColumnStatistics.d.ts.map +1 -1
  19. package/dist/ColumnStatistics.js +8 -40
  20. package/dist/ColumnStatistics.js.map +1 -1
  21. package/dist/CommonTypes.d.ts +14 -14
  22. package/dist/CommonTypes.d.ts.map +1 -1
  23. package/dist/CrossColumnSearch.js +2 -23
  24. package/dist/CrossColumnSearch.js.map +1 -1
  25. package/dist/FilterInputField.js +2 -36
  26. package/dist/FilterInputField.js.map +1 -1
  27. package/dist/GotoRow.d.ts +1 -1
  28. package/dist/GotoRow.d.ts.map +1 -1
  29. package/dist/GotoRow.js +2 -7
  30. package/dist/GotoRow.js.map +1 -1
  31. package/dist/IrisGrid.d.ts +46 -40
  32. package/dist/IrisGrid.d.ts.map +1 -1
  33. package/dist/IrisGrid.js +84 -526
  34. package/dist/IrisGrid.js.map +1 -1
  35. package/dist/IrisGridBottomBar.d.ts +2 -2
  36. package/dist/IrisGridBottomBar.d.ts.map +1 -1
  37. package/dist/IrisGridBottomBar.js +2 -2
  38. package/dist/IrisGridBottomBar.js.map +1 -1
  39. package/dist/IrisGridCellOverflowModal.d.ts.map +1 -1
  40. package/dist/IrisGridCellOverflowModal.js +13 -46
  41. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  42. package/dist/IrisGridCopyHandler.d.ts +3 -3
  43. package/dist/IrisGridCopyHandler.d.ts.map +1 -1
  44. package/dist/IrisGridCopyHandler.js +6 -53
  45. package/dist/IrisGridCopyHandler.js.map +1 -1
  46. package/dist/IrisGridMetricCalculator.js +2 -12
  47. package/dist/IrisGridMetricCalculator.js.map +1 -1
  48. package/dist/IrisGridModel.d.ts +3 -3
  49. package/dist/IrisGridModel.d.ts.map +1 -1
  50. package/dist/IrisGridModel.js +32 -58
  51. package/dist/IrisGridModel.js.map +1 -1
  52. package/dist/IrisGridModelFactory.js +0 -7
  53. package/dist/IrisGridModelFactory.js.map +1 -1
  54. package/dist/IrisGridModelUpdater.js +0 -4
  55. package/dist/IrisGridModelUpdater.js.map +1 -1
  56. package/dist/IrisGridPartitionSelector.js +0 -23
  57. package/dist/IrisGridPartitionSelector.js.map +1 -1
  58. package/dist/IrisGridProxyModel.js +9 -153
  59. package/dist/IrisGridProxyModel.js.map +1 -1
  60. package/dist/IrisGridRenderer.d.ts +1 -1
  61. package/dist/IrisGridRenderer.d.ts.map +1 -1
  62. package/dist/IrisGridRenderer.js +41 -183
  63. package/dist/IrisGridRenderer.js.map +1 -1
  64. package/dist/IrisGridShortcuts.js.map +1 -1
  65. package/dist/IrisGridTableModel.d.ts +3 -3
  66. package/dist/IrisGridTableModel.d.ts.map +1 -1
  67. package/dist/IrisGridTableModel.js +10 -90
  68. package/dist/IrisGridTableModel.js.map +1 -1
  69. package/dist/IrisGridTableModelTemplate.d.ts +3 -3
  70. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  71. package/dist/IrisGridTableModelTemplate.js +70 -461
  72. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  73. package/dist/IrisGridTestUtils.js +0 -23
  74. package/dist/IrisGridTestUtils.js.map +1 -1
  75. package/dist/IrisGridTheme.d.ts +1 -1
  76. package/dist/IrisGridTheme.d.ts.map +1 -1
  77. package/dist/IrisGridTheme.js.map +1 -1
  78. package/dist/IrisGridTreeTableModel.js +3 -42
  79. package/dist/IrisGridTreeTableModel.js.map +1 -1
  80. package/dist/IrisGridUtils.d.ts +13 -7
  81. package/dist/IrisGridUtils.d.ts.map +1 -1
  82. package/dist/IrisGridUtils.js +98 -196
  83. package/dist/IrisGridUtils.js.map +1 -1
  84. package/dist/MissingKeyError.js +0 -7
  85. package/dist/MissingKeyError.js.map +1 -1
  86. package/dist/PartitionSelectorSearch.d.ts +2 -2
  87. package/dist/PartitionSelectorSearch.js +2 -48
  88. package/dist/PartitionSelectorSearch.js.map +1 -1
  89. package/dist/PendingDataBottomBar.d.ts +2 -2
  90. package/dist/PendingDataBottomBar.d.ts.map +1 -1
  91. package/dist/PendingDataBottomBar.js +2 -7
  92. package/dist/PendingDataBottomBar.js.map +1 -1
  93. package/dist/TableViewportUpdater.d.ts +2 -2
  94. package/dist/TableViewportUpdater.d.ts.map +1 -1
  95. package/dist/TableViewportUpdater.js +3 -29
  96. package/dist/TableViewportUpdater.js.map +1 -1
  97. package/dist/ToastBottomBar.d.ts +2 -2
  98. package/dist/ToastBottomBar.d.ts.map +1 -1
  99. package/dist/ToastBottomBar.js +2 -4
  100. package/dist/ToastBottomBar.js.map +1 -1
  101. package/dist/TreeTableViewportUpdater.js +0 -21
  102. package/dist/TreeTableViewportUpdater.js.map +1 -1
  103. package/dist/format-context-menus/CustomFormatAction.d.ts +1 -1
  104. package/dist/format-context-menus/CustomFormatAction.d.ts.map +1 -1
  105. package/dist/format-context-menus/CustomFormatAction.js +4 -25
  106. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  107. package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -7
  108. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  109. package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -9
  110. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  111. package/dist/format-context-menus/FormatContextMenuUtils.js +3 -9
  112. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  113. package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -8
  114. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  115. package/dist/format-context-menus/index.js.map +1 -1
  116. package/dist/index.d.ts +3 -3
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +3 -3
  119. package/dist/index.js.map +1 -1
  120. package/dist/key-handlers/ClearFilterKeyHandler.js +0 -8
  121. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  122. package/dist/key-handlers/CopyKeyHandler.js +1 -10
  123. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  124. package/dist/key-handlers/ReverseKeyHandler.js +0 -11
  125. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  126. package/dist/key-handlers/index.js.map +1 -1
  127. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -32
  128. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  129. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +4 -34
  130. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  131. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -20
  132. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  133. package/dist/mousehandlers/IrisGridContextMenuHandler.js +17 -107
  134. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  135. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -9
  136. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  137. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -17
  138. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  139. package/dist/mousehandlers/IrisGridSortMouseHandler.js +2 -15
  140. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  141. package/dist/mousehandlers/PendingMouseHandler.js +0 -6
  142. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  143. package/dist/mousehandlers/index.js.map +1 -1
  144. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  145. package/dist/sidebar/AdvancedSettingsMenu.d.ts +6 -6
  146. package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
  147. package/dist/sidebar/AdvancedSettingsMenu.js +2 -6
  148. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  149. package/dist/sidebar/AdvancedSettingsType.js +0 -2
  150. package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
  151. package/dist/sidebar/ChartBuilder.d.ts +2 -2
  152. package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
  153. package/dist/sidebar/ChartBuilder.js +2 -46
  154. package/dist/sidebar/ChartBuilder.js.map +1 -1
  155. package/dist/sidebar/CustomColumnBuilder.d.ts +2 -2
  156. package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
  157. package/dist/sidebar/CustomColumnBuilder.js +6 -58
  158. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  159. package/dist/sidebar/CustomColumnInput.js +4 -15
  160. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  161. package/dist/sidebar/InputEditor.js +5 -36
  162. package/dist/sidebar/InputEditor.js.map +1 -1
  163. package/dist/sidebar/OptionType.js +0 -2
  164. package/dist/sidebar/OptionType.js.map +1 -1
  165. package/dist/sidebar/RollupRows.d.ts +3 -3
  166. package/dist/sidebar/RollupRows.d.ts.map +1 -1
  167. package/dist/sidebar/RollupRows.js +9 -65
  168. package/dist/sidebar/RollupRows.js.map +1 -1
  169. package/dist/sidebar/SelectDistinctBuilder.js +0 -13
  170. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  171. package/dist/sidebar/TableCsvExporter.css +3 -0
  172. package/dist/sidebar/TableCsvExporter.css.map +1 -1
  173. package/dist/sidebar/TableCsvExporter.d.ts +12 -6
  174. package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
  175. package/dist/sidebar/TableCsvExporter.js +88 -82
  176. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  177. package/dist/sidebar/TableSaver.d.ts +5 -3
  178. package/dist/sidebar/TableSaver.d.ts.map +1 -1
  179. package/dist/sidebar/TableSaver.js +52 -132
  180. package/dist/sidebar/TableSaver.js.map +1 -1
  181. package/dist/sidebar/VisibilityOrderingBuilder.d.ts +5 -4
  182. package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
  183. package/dist/sidebar/VisibilityOrderingBuilder.js +37 -116
  184. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  185. package/dist/sidebar/aggregations/AggregationEdit.d.ts +2 -2
  186. package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
  187. package/dist/sidebar/aggregations/AggregationEdit.js +2 -14
  188. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  189. package/dist/sidebar/aggregations/AggregationOperation.js +0 -2
  190. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
  191. package/dist/sidebar/aggregations/AggregationUtils.js +2 -5
  192. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  193. package/dist/sidebar/aggregations/Aggregations.d.ts +4 -4
  194. package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
  195. package/dist/sidebar/aggregations/Aggregations.js +2 -12
  196. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  197. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
  198. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
  199. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -16
  200. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  201. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
  202. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
  203. package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -35
  204. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  205. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +4 -4
  206. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
  207. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -12
  208. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  209. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -3
  210. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  211. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +5 -5
  212. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
  213. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +16 -26
  214. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  215. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +3 -3
  216. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
  217. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +9 -172
  218. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  219. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
  220. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
  221. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -16
  222. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  223. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
  224. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
  225. package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -12
  226. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  227. package/dist/sidebar/icons/BarIcon.js +0 -3
  228. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  229. package/dist/sidebar/icons/FormatColumnWhereIcon.js +2 -5
  230. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  231. package/dist/sidebar/icons/FormatRowWhereIcon.js +2 -5
  232. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  233. package/dist/sidebar/icons/HistogramIcon.js +0 -3
  234. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  235. package/dist/sidebar/icons/LineIcon.js +0 -3
  236. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  237. package/dist/sidebar/icons/PieIcon.js +0 -3
  238. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  239. package/dist/sidebar/icons/ScatterIcon.js +0 -3
  240. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  241. package/dist/sidebar/icons/index.js.map +1 -1
  242. package/dist/sidebar/index.js.map +1 -1
  243. 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
- } // We don't allow dragging within the ungrouped list, so if we're dragging into the ungrouped list,
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
- } // Otherwise, it must be dropping into the grouped list, so we just need to check the source
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); // Select the newly dropped items
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 // eslint-disable-next-line react/jsx-props-no-spreading
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