@deephaven/iris-grid 0.13.3-beta.0 → 0.14.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 (184) hide show
  1. package/dist/AdvancedFilterCreator.d.ts +69 -63
  2. package/dist/AdvancedFilterCreator.d.ts.map +1 -1
  3. package/dist/AdvancedFilterCreator.js +79 -73
  4. package/dist/AdvancedFilterCreator.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.d.ts +45 -45
  6. package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValue.js +32 -36
  8. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  9. package/dist/AdvancedFilterCreatorSelectValueList.d.ts +47 -52
  10. package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
  11. package/dist/AdvancedFilterCreatorSelectValueList.js +24 -39
  12. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  13. package/dist/ColumnStatistics.d.ts +34 -22
  14. package/dist/ColumnStatistics.d.ts.map +1 -1
  15. package/dist/ColumnStatistics.js +8 -12
  16. package/dist/ColumnStatistics.js.map +1 -1
  17. package/dist/CommonTypes.d.ts +58 -0
  18. package/dist/CommonTypes.d.ts.map +1 -0
  19. package/dist/CommonTypes.js +2 -0
  20. package/dist/CommonTypes.js.map +1 -0
  21. package/dist/CrossColumnSearch.d.ts +26 -24
  22. package/dist/CrossColumnSearch.d.ts.map +1 -1
  23. package/dist/CrossColumnSearch.js +9 -13
  24. package/dist/CrossColumnSearch.js.map +1 -1
  25. package/dist/FilterInputField.d.ts +48 -51
  26. package/dist/FilterInputField.d.ts.map +1 -1
  27. package/dist/FilterInputField.js +30 -27
  28. package/dist/FilterInputField.js.map +1 -1
  29. package/dist/IrisGrid.d.ts +409 -453
  30. package/dist/IrisGrid.d.ts.map +1 -1
  31. package/dist/IrisGrid.js +514 -449
  32. package/dist/IrisGrid.js.map +1 -1
  33. package/dist/IrisGridCellOverflowModal.d.ts +1 -1
  34. package/dist/IrisGridCellOverflowModal.d.ts.map +1 -1
  35. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  36. package/dist/IrisGridCopyHandler.d.ts +52 -46
  37. package/dist/IrisGridCopyHandler.d.ts.map +1 -1
  38. package/dist/IrisGridCopyHandler.js +22 -38
  39. package/dist/IrisGridCopyHandler.js.map +1 -1
  40. package/dist/IrisGridMetricCalculator.d.ts +5 -4
  41. package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
  42. package/dist/IrisGridMetricCalculator.js +5 -1
  43. package/dist/IrisGridMetricCalculator.js.map +1 -1
  44. package/dist/IrisGridModel.d.ts +37 -35
  45. package/dist/IrisGridModel.d.ts.map +1 -1
  46. package/dist/IrisGridModel.js +19 -3
  47. package/dist/IrisGridModel.js.map +1 -1
  48. package/dist/IrisGridModelFactory.d.ts +7 -5
  49. package/dist/IrisGridModelFactory.d.ts.map +1 -1
  50. package/dist/IrisGridModelFactory.js +5 -5
  51. package/dist/IrisGridModelFactory.js.map +1 -1
  52. package/dist/IrisGridModelUpdater.d.ts +13 -11
  53. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  54. package/dist/IrisGridModelUpdater.js.map +1 -1
  55. package/dist/IrisGridPartitionSelector.d.ts +38 -39
  56. package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
  57. package/dist/IrisGridPartitionSelector.js +18 -24
  58. package/dist/IrisGridPartitionSelector.js.map +1 -1
  59. package/dist/IrisGridProxyModel.d.ts +111 -32
  60. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  61. package/dist/IrisGridProxyModel.js +212 -170
  62. package/dist/IrisGridProxyModel.js.map +1 -1
  63. package/dist/IrisGridRenderer.d.ts +59 -31
  64. package/dist/IrisGridRenderer.d.ts.map +1 -1
  65. package/dist/IrisGridRenderer.js +92 -46
  66. package/dist/IrisGridRenderer.js.map +1 -1
  67. package/dist/IrisGridTableModel.d.ts +48 -147
  68. package/dist/IrisGridTableModel.d.ts.map +1 -1
  69. package/dist/IrisGridTableModel.js +58 -1381
  70. package/dist/IrisGridTableModel.js.map +1 -1
  71. package/dist/IrisGridTableModelTemplate.d.ts +219 -0
  72. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -0
  73. package/dist/IrisGridTableModelTemplate.js +1623 -0
  74. package/dist/IrisGridTableModelTemplate.js.map +1 -0
  75. package/dist/IrisGridTestUtils.d.ts +18 -14
  76. package/dist/IrisGridTestUtils.d.ts.map +1 -1
  77. package/dist/IrisGridTestUtils.js +29 -1
  78. package/dist/IrisGridTestUtils.js.map +1 -1
  79. package/dist/IrisGridTheme.d.ts +35 -3
  80. package/dist/IrisGridTheme.d.ts.map +1 -1
  81. package/dist/IrisGridTheme.js.map +1 -1
  82. package/dist/IrisGridTreeTableModel.d.ts +26 -7
  83. package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
  84. package/dist/IrisGridTreeTableModel.js +24 -14
  85. package/dist/IrisGridTreeTableModel.js.map +1 -1
  86. package/dist/IrisGridUtils.d.ts +257 -162
  87. package/dist/IrisGridUtils.d.ts.map +1 -1
  88. package/dist/IrisGridUtils.js +132 -95
  89. package/dist/IrisGridUtils.js.map +1 -1
  90. package/dist/MissingKeyError.d.ts +5 -3
  91. package/dist/MissingKeyError.d.ts.map +1 -1
  92. package/dist/MissingKeyError.js.map +1 -1
  93. package/dist/PartitionSelectorSearch.d.ts +61 -40
  94. package/dist/PartitionSelectorSearch.d.ts.map +1 -1
  95. package/dist/PartitionSelectorSearch.js +25 -15
  96. package/dist/PartitionSelectorSearch.js.map +1 -1
  97. package/dist/PendingDataBottomBar.d.ts +3 -6
  98. package/dist/PendingDataBottomBar.d.ts.map +1 -1
  99. package/dist/PendingDataBottomBar.js.map +1 -1
  100. package/dist/TableViewportUpdater.d.ts +39 -55
  101. package/dist/TableViewportUpdater.d.ts.map +1 -1
  102. package/dist/TableViewportUpdater.js +42 -64
  103. package/dist/TableViewportUpdater.js.map +1 -1
  104. package/dist/TreeTableViewportUpdater.d.ts +29 -37
  105. package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
  106. package/dist/TreeTableViewportUpdater.js +39 -50
  107. package/dist/TreeTableViewportUpdater.js.map +1 -1
  108. package/dist/index.d.ts +9 -0
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +9 -0
  111. package/dist/index.js.map +1 -1
  112. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.d.ts.map +1 -1
  113. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  114. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts +1 -1
  115. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts.map +1 -1
  116. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +2 -0
  117. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  118. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +1 -1
  119. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  120. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +41 -130
  121. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  122. package/dist/mousehandlers/IrisGridContextMenuHandler.js +426 -317
  123. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  124. package/dist/mousehandlers/IrisGridFilterMouseHandler.d.ts.map +1 -1
  125. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +2 -2
  126. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  127. package/dist/mousehandlers/IrisGridSortMouseHandler.js +1 -1
  128. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  129. package/dist/mousehandlers/PendingMouseHandler.d.ts +8 -4
  130. package/dist/mousehandlers/PendingMouseHandler.d.ts.map +1 -1
  131. package/dist/mousehandlers/PendingMouseHandler.js +4 -5
  132. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  133. package/dist/sidebar/ChartBuilder.d.ts +48 -33
  134. package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
  135. package/dist/sidebar/ChartBuilder.js +28 -27
  136. package/dist/sidebar/ChartBuilder.js.map +1 -1
  137. package/dist/sidebar/CustomColumnBuilder.d.ts +51 -41
  138. package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
  139. package/dist/sidebar/CustomColumnBuilder.js +22 -18
  140. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  141. package/dist/sidebar/CustomColumnInput.d.ts +26 -36
  142. package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
  143. package/dist/sidebar/CustomColumnInput.js +11 -20
  144. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  145. package/dist/sidebar/InputEditor.d.ts +34 -35
  146. package/dist/sidebar/InputEditor.d.ts.map +1 -1
  147. package/dist/sidebar/InputEditor.js +43 -24
  148. package/dist/sidebar/InputEditor.js.map +1 -1
  149. package/dist/sidebar/RollupRows.d.ts +67 -52
  150. package/dist/sidebar/RollupRows.d.ts.map +1 -1
  151. package/dist/sidebar/RollupRows.js +51 -53
  152. package/dist/sidebar/RollupRows.js.map +1 -1
  153. package/dist/sidebar/SelectDistinctBuilder.d.ts +27 -21
  154. package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
  155. package/dist/sidebar/SelectDistinctBuilder.js +6 -10
  156. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  157. package/dist/sidebar/TableCsvExporter.d.ts +42 -39
  158. package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
  159. package/dist/sidebar/TableCsvExporter.js +12 -20
  160. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  161. package/dist/sidebar/TableSaver.d.ts +59 -60
  162. package/dist/sidebar/TableSaver.d.ts.map +1 -1
  163. package/dist/sidebar/TableSaver.js +154 -68
  164. package/dist/sidebar/TableSaver.js.map +1 -1
  165. package/dist/sidebar/VisibilityOrderingBuilder.d.ts +56 -45
  166. package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
  167. package/dist/sidebar/VisibilityOrderingBuilder.js +34 -29
  168. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  169. package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
  170. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  171. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +2 -1
  172. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
  173. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  174. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +6 -5
  175. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
  176. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +5 -0
  177. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  178. package/dist/sidebar/icons/index.d.ts +7 -7
  179. package/dist/sidebar/icons/index.d.ts.map +1 -1
  180. package/dist/sidebar/icons/index.js.map +1 -1
  181. package/dist/sidebar/index.d.ts +12 -12
  182. package/dist/sidebar/index.d.ts.map +1 -1
  183. package/dist/sidebar/index.js.map +1 -1
  184. package/package.json +17 -16
@@ -1,63 +1,78 @@
1
- export default RollupRows;
2
- declare class RollupRows extends React.Component<any, any, any> {
1
+ /// <reference types="lodash" />
2
+ import { ChangeEvent, Component, ReactElement, RefObject } from 'react';
3
+ import { DraggableLocation, DragStart, DropResult } from 'react-beautiful-dnd';
4
+ import { DraggableItemList, Range, RenderItemProps } from '@deephaven/components';
5
+ import { SortDirection } from '@deephaven/jsapi-utils';
6
+ import memoize from 'memoizee';
7
+ import './RollupRows.scss';
8
+ import { Column } from '@deephaven/jsapi-shim';
9
+ import IrisGridModel from '../IrisGridModel';
10
+ import { ColumnName } from '../CommonTypes';
11
+ export interface UIRollupConfig {
12
+ columns: ColumnName[];
13
+ showConstituents: boolean;
14
+ showNonAggregatedColumns: boolean;
15
+ includeDescriptions: true;
16
+ }
17
+ interface RollupRowsProps {
18
+ model: IrisGridModel;
19
+ onChange: (rollupConfig: UIRollupConfig) => void;
20
+ config: UIRollupConfig | null;
21
+ }
22
+ interface RollupRowsState {
23
+ ungroupedSelectedRanges: Range[];
24
+ columns: ColumnName[];
25
+ groupedSelectedRanges: Range[];
26
+ searchFilter: string;
27
+ showConstituents: boolean;
28
+ showNonAggregatedColumns: boolean;
29
+ dragSource: DraggableLocation | null;
30
+ sort: SortDirection;
31
+ }
32
+ declare class RollupRows extends Component<RollupRowsProps, RollupRowsState> {
3
33
  static SORT: Readonly<{
4
34
  ASCENDING: string;
5
35
  DESCENDING: string;
6
36
  }>;
7
- static renderColumn({ item, isClone, selectedCount }: {
8
- item: any;
9
- isClone: any;
10
- selectedCount: any;
11
- }): JSX.Element;
12
- static addGroupings(currentGroupings: any, newGroupings: any, index?: any): any;
13
- static isGroupable(column: any): boolean;
14
- constructor(props: any);
15
- search(searchFilter: any): void;
16
- handleDeleteClicked(index: any): void;
17
- handleSearchChange(event: any): void;
18
- handleUngroupedSelect(itemIndex: any): void;
19
- handleUngroupedSelectionChange(ungroupedSelectedRanges: any): void;
20
- handleDragStart(e: any): void;
21
- handleDragEnd(e: any): void;
22
- handleGroupedSelectionChange(groupedSelectedRanges: any): void;
23
- handleShowConstituentsChange(): void;
24
- handleShowNonAggregatedColumnsChange(): void;
37
+ static defaultProps: {
38
+ config: null;
39
+ onChange: () => void;
40
+ };
41
+ static renderColumn({ item, isClone, selectedCount, }: RenderItemProps<Column> & {
42
+ isClone?: boolean;
43
+ selectedCount?: number;
44
+ }): ReactElement;
45
+ static addGroupings(currentGroupings: string[], newGroupings: string[], index?: number): string[];
46
+ static isGroupable(column: Column): boolean;
47
+ constructor(props: RollupRowsProps);
48
+ componentDidUpdate(prevProps: RollupRowsProps, prevState: RollupRowsState): void;
49
+ componentWillUnmount(): void;
50
+ ungroupedList: RefObject<DraggableItemList<Column>>;
51
+ groupedList: RefObject<DraggableItemList<string>>;
52
+ handleSearchChange(event: ChangeEvent<HTMLInputElement>): void;
25
53
  handleSortAscending(): void;
26
54
  handleSortDescending(): void;
27
- renderGroupedItem({ item, itemIndex, isClone, selectedCount }: {
28
- item: any;
29
- itemIndex: any;
30
- isClone: any;
31
- selectedCount: any;
32
- }): JSX.Element;
33
- ungroupedList: React.RefObject<any>;
34
- groupedList: React.RefObject<any>;
35
55
  resetSelection(): void;
56
+ search: import("lodash").DebouncedFunc<(searchFilter: string) => void>;
57
+ handleDragStart(e: DragStart): void;
58
+ handleDragEnd(e: DropResult): void;
59
+ handleUngroupedSelect(itemIndex: number): void;
60
+ handleUngroupedSelectionChange(ungroupedSelectedRanges: Range[]): void;
61
+ handleGroupedSelectionChange(groupedSelectedRanges: Range[]): void;
62
+ handleDeleteClicked(index: number): void;
63
+ handleShowConstituentsChange(): void;
64
+ handleShowNonAggregatedColumnsChange(): void;
36
65
  updateFromConfig(): void;
37
66
  sendChange(): void;
38
- getCachedUngroupedColumns: ((columns: any, groupedColumns: any) => any) & memoize.Memoized<(columns: any, groupedColumns: any) => any>;
39
- getCachedSortedColumns: ((columns: any, sort: any) => any[]) & memoize.Memoized<(columns: any, sort: any) => any[]>;
40
- getUngroupedColumns(): any;
41
- getSortedUngroupedColumns(): any[];
67
+ getCachedUngroupedColumns: ((columns: Column[], groupedColumns: ColumnName[]) => Column[]) & memoize.Memoized<(columns: Column[], groupedColumns: ColumnName[]) => Column[]>;
68
+ getCachedSortedColumns: ((columns: Column[], sort?: SortDirection | undefined) => Column[]) & memoize.Memoized<(columns: Column[], sort?: SortDirection | undefined) => Column[]>;
69
+ getUngroupedColumns(): Column[];
70
+ getSortedUngroupedColumns(): Column[];
71
+ renderGroupedItem({ item, itemIndex, isClone, selectedCount, }: RenderItemProps<string> & {
72
+ isClone?: boolean;
73
+ selectedCount?: number;
74
+ }): ReactElement;
75
+ render(): ReactElement;
42
76
  }
43
- declare namespace RollupRows {
44
- namespace propTypes {
45
- const model: PropTypes.Validator<any>;
46
- const onChange: PropTypes.Requireable<(...args: any[]) => any>;
47
- const config: PropTypes.Requireable<PropTypes.InferProps<{
48
- columns: PropTypes.Requireable<(string | null | undefined)[]>;
49
- showConstituents: PropTypes.Requireable<boolean>;
50
- showNonAggregatedColumns: PropTypes.Requireable<boolean>;
51
- }>>;
52
- }
53
- namespace defaultProps {
54
- const config_1: null;
55
- export { config_1 as config };
56
- export function onChange_1(): void;
57
- export { onChange_1 as onChange };
58
- }
59
- }
60
- import React from "react";
61
- import memoize from "memoizee";
62
- import PropTypes from "prop-types";
77
+ export default RollupRows;
63
78
  //# sourceMappingURL=RollupRows.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RollupRows.d.ts","sourceRoot":"","sources":["../../src/sidebar/RollupRows.jsx"],"names":[],"mappings":";AA2BA;IACE;;;OAGG;IAEH;;;;oBAKC;IAED,gFAqBC;IAED,yCAEC;IAED,wBA8CC;IAwDD,gCAkBC;IAsHD,sCAMC;IA3KD,qCASC;IAwHD,4CAUC;IAED,mEAWC;IAvGD,8BAMC;IAED,4BAsEC;IA2BD,+DASC;IAUD,qCAIC;IAED,6CAIC;IA5KD,4BAKC;IAED,6BAKC;IAsND;;;;;oBAkBC;IA9SC,oCAAsC;IACtC,kCAAoC;IAuEtC,uBAEC;IA8JD,yBAQC;IAED,mBAQC;IAED,uIAME;IAEF,oHAIE;IAEF,2BAUC;IAED,mCAIC;CAsKF;;;;;;;;;;;;;;QAcW,mCAAQ"}
1
+ {"version":3,"file":"RollupRows.d.ts","sourceRoot":"","sources":["../../src/sidebar/RollupRows.tsx"],"names":[],"mappings":";AACA,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG/E,OAAO,EAEL,iBAAiB,EACjB,SAAS,EAET,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,iBAAiB,EAIjB,KAAK,EACL,eAAe,EAEhB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAc,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,OAAO,MAAM,UAAU,CAAC;AAI/B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAO5C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,wBAAwB,EAAE,OAAO,CAAC;IAClC,mBAAmB,EAAE,IAAI,CAAC;CAC3B;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,YAAY,EAAE,cAAc,KAAK,IAAI,CAAC;IACjD,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;CAC/B;AAED,UAAU,eAAe;IACvB,uBAAuB,EAAE,KAAK,EAAE,CAAC;IACjC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,qBAAqB,EAAE,KAAK,EAAE,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,wBAAwB,EAAE,OAAO,CAAC;IAClC,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACrC,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,cAAM,UAAW,SAAQ,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAClE,MAAM,CAAC,IAAI;;;OAGR;IAEH,MAAM,CAAC,YAAY;;wBAEH,IAAI;MAClB;IAEF,MAAM,CAAC,YAAY,CAAC,EAClB,IAAI,EACJ,OAAO,EACP,aAAa,GACd,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG;QAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,YAAY;IAOhB,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,YAAY,EAAE,MAAM,EAAE,EACtB,KAAK,GAAE,MAAgC,GACtC,MAAM,EAAE;IAmBX,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;gBAI/B,KAAK,EAAE,eAAe;IAgDlC,kBAAkB,CAChB,SAAS,EAAE,eAAe,EAC1B,SAAS,EAAE,eAAe,GACzB,IAAI;IAqBP,oBAAoB,IAAI,IAAI;IAI5B,aAAa,EAAE,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpD,WAAW,EAAE,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IAElD,kBAAkB,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAW9D,mBAAmB,IAAI,IAAI;IAS3B,oBAAoB,IAAI,IAAI;IAS5B,cAAc,IAAI,IAAI;IAItB,MAAM,gDAA2B,MAAM,WAmBnB;IAEpB,eAAe,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI;IAQnC,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAwElC,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAY9C,8BAA8B,CAAC,uBAAuB,EAAE,KAAK,EAAE,GAAG,IAAI;IAatE,4BAA4B,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,IAAI;IAWlE,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQxC,4BAA4B,IAAI,IAAI;IAMpC,oCAAoC,IAAI,IAAI;IAM5C,gBAAgB,IAAI,IAAI;IAUxB,UAAU,IAAI,IAAI;IAUlB,yBAAyB,aACb,MAAM,EAAE,kBAAkB,UAAU,EAAE,KAAG,MAAM,EAAE,+BAAjD,MAAM,EAAE,kBAAkB,UAAU,EAAE,KAAG,MAAM,EAAE,EAM3D;IAEF,sBAAsB,aACV,MAAM,EAAE,uCAAyB,MAAM,EAAE,+BAAzC,MAAM,EAAE,uCAAyB,MAAM,EAAE,EAInD;IAEF,mBAAmB,IAAI,MAAM,EAAE;IAQ/B,yBAAyB,IAAI,MAAM,EAAE;IAMrC,iBAAiB,CAAC,EAChB,IAAI,EACJ,SAAS,EACT,OAAO,EACP,aAAa,GACd,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG;QAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,YAAY;IAqBhB,MAAM,IAAI,YAAY;CAkJvB;AAED,eAAe,UAAU,CAAC"}
@@ -5,17 +5,16 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
5
5
  /* eslint-disable jsx-a11y/click-events-have-key-events */
6
6
  import React, { Component } from 'react';
7
7
  import classNames from 'classnames';
8
- import PropTypes from 'prop-types';
9
8
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
10
9
  import { DragDropContext, Droppable } from 'react-beautiful-dnd';
11
- import { ButtonOld, Checkbox, DraggableItemList, DragUtils, SearchInput, Tooltip } from '@deephaven/components';
10
+ import { Checkbox, DraggableItemList, DragUtils, SearchInput, Tooltip, Button } from '@deephaven/components';
12
11
  import { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';
13
12
  import { TableUtils } from '@deephaven/jsapi-utils';
14
13
  import memoize from 'memoizee';
15
14
  import debounce from 'lodash.debounce';
16
15
  import Log from '@deephaven/log';
16
+ import { assertNotNull } from '@deephaven/utils';
17
17
  import "./RollupRows.css";
18
- import IrisGridModel from "../IrisGridModel.js";
19
18
  var log = Log.module('RollupRows');
20
19
  var DEBOUNCE_SEARCH = 150;
21
20
  var GROUPED_LIST_ID = 'grouped-rollup-rows';
@@ -29,7 +28,7 @@ class RollupRows extends Component {
29
28
  selectedCount
30
29
  } = _ref;
31
30
  var text = item && item.name;
32
- var badgeText = isClone ? "".concat(selectedCount) : null;
31
+ var badgeText = isClone ? "".concat(selectedCount) : undefined;
33
32
  var className = isClone ? 'item-list-item-clone' : '';
34
33
  return DraggableItemList.renderTextItem({
35
34
  text,
@@ -68,11 +67,42 @@ class RollupRows extends Component {
68
67
  constructor(props) {
69
68
  super(props);
70
69
 
70
+ _defineProperty(this, "ungroupedList", void 0);
71
+
72
+ _defineProperty(this, "groupedList", void 0);
73
+
74
+ _defineProperty(this, "search", debounce(searchFilter => {
75
+ var columns = this.getSortedUngroupedColumns();
76
+ var selectedRanges = [];
77
+ var focusIndex = null;
78
+
79
+ for (var i = 0; i < columns.length; i += 1) {
80
+ var column = columns[i];
81
+
82
+ if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {
83
+ if (focusIndex == null) {
84
+ focusIndex = i;
85
+ }
86
+
87
+ selectedRanges.push([i, i]);
88
+ }
89
+ }
90
+
91
+ assertNotNull(focusIndex);
92
+ this.setState({
93
+ ungroupedSelectedRanges: selectedRanges
94
+ });
95
+
96
+ if (selectedRanges.length > 0 && this.ungroupedList.current) {
97
+ this.ungroupedList.current.scrollToItem(focusIndex);
98
+ }
99
+ }, DEBOUNCE_SEARCH));
100
+
71
101
  _defineProperty(this, "getCachedUngroupedColumns", memoize((columns, groupedColumns) => columns.filter(column => RollupRows.isGroupable(column) && !groupedColumns.find(name => name === column.name))));
72
102
 
73
103
  _defineProperty(this, "getCachedSortedColumns", memoize((columns, sort) => sort == null ? [...columns] : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING)));
74
104
 
75
- this.search = debounce(this.search.bind(this), DEBOUNCE_SEARCH);
105
+ this.search = this.search.bind(this);
76
106
  this.handleDeleteClicked = this.handleDeleteClicked.bind(this);
77
107
  this.handleSearchChange = this.handleSearchChange.bind(this);
78
108
  this.handleUngroupedSelect = this.handleUngroupedSelect.bind(this);
@@ -174,32 +204,6 @@ class RollupRows extends Component {
174
204
  });
175
205
  }
176
206
 
177
- search(searchFilter) {
178
- var columns = this.getSortedUngroupedColumns();
179
- var selectedRanges = [];
180
- var focusIndex = null;
181
-
182
- for (var i = 0; i < columns.length; i += 1) {
183
- var column = columns[i];
184
-
185
- if (column.name.toLowerCase().includes(searchFilter.toLowerCase())) {
186
- if (focusIndex == null) {
187
- focusIndex = i;
188
- }
189
-
190
- selectedRanges.push([i, i]);
191
- }
192
- }
193
-
194
- this.setState({
195
- ungroupedSelectedRanges: selectedRanges
196
- });
197
-
198
- if (selectedRanges.length > 0 && this.ungroupedList.current) {
199
- this.ungroupedList.current.scrollToItem(focusIndex);
200
- }
201
- }
202
-
203
207
  handleDragStart(e) {
204
208
  log.debug('handleDragStart', e);
205
209
  document.documentElement.classList.add('drag-pointer-events-none');
@@ -397,13 +401,12 @@ class RollupRows extends Component {
397
401
  model
398
402
  } = this.props;
399
403
  var {
400
- columns,
401
- searchFilter
404
+ columns
402
405
  } = this.state;
403
406
  var {
404
407
  originalColumns
405
408
  } = model;
406
- return this.getCachedUngroupedColumns(originalColumns, columns, searchFilter);
409
+ return this.getCachedUngroupedColumns(originalColumns, columns);
407
410
  }
408
411
 
409
412
  getSortedUngroupedColumns() {
@@ -423,13 +426,14 @@ class RollupRows extends Component {
423
426
  } = _ref12;
424
427
  var indent = isClone ? '' : '\u00A0\u00A0'.repeat(itemIndex);
425
428
  var text = "".concat(indent).concat(item);
426
- var badgeText = isClone ? "".concat(selectedCount) : null;
429
+ var badgeText = isClone ? "".concat(selectedCount) : undefined;
427
430
  var className = isClone ? 'item-list-item-clone' : '';
428
431
  return /*#__PURE__*/React.createElement(React.Fragment, null, DraggableItemList.renderTextItem({
429
432
  text,
430
433
  badgeText,
431
434
  className
432
- }), !isClone && /*#__PURE__*/React.createElement(ButtonOld, {
435
+ }), !isClone && /*#__PURE__*/React.createElement(Button, {
436
+ kind: "ghost",
433
437
  className: "btn btn-link btn-link-icon btn-delete-grouping float-right",
434
438
  onClick: () => this.handleDeleteClicked(itemIndex)
435
439
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
@@ -462,7 +466,7 @@ class RollupRows extends Component {
462
466
  className: classNames('rollup-rows', {
463
467
  'is-dragging': dragSource != null
464
468
  }),
465
- tabIndex: "0"
469
+ tabIndex: 0
466
470
  }, /*#__PURE__*/React.createElement(DragDropContext, {
467
471
  onDragEnd: this.handleDragEnd,
468
472
  onDragStart: this.handleDragStart
@@ -471,7 +475,7 @@ class RollupRows extends Component {
471
475
  }, /*#__PURE__*/React.createElement("div", {
472
476
  className: "section-title"
473
477
  }, "Group By"), columns.length === 0 && /*#__PURE__*/React.createElement(Droppable, {
474
- isDragDisabled: true,
478
+ isDropDisabled: true,
475
479
  droppableId: "placeholder"
476
480
  }, (provided, snapshot) => /*#__PURE__*/React.createElement("div", _extends({
477
481
  className: classNames('placeholder', 'text-muted', {
@@ -505,17 +509,19 @@ class RollupRows extends Component {
505
509
  }, /*#__PURE__*/React.createElement(SearchInput, {
506
510
  className: "w-100",
507
511
  value: searchFilter,
508
- matchCount: searchFilter ? ungroupedSelectedRanges.length : null,
512
+ matchCount: searchFilter ? ungroupedSelectedRanges.length : undefined,
509
513
  placeholder: "Find column...",
510
514
  onChange: this.handleSearchChange
511
- }), /*#__PURE__*/React.createElement(ButtonOld, {
515
+ }), /*#__PURE__*/React.createElement(Button, {
516
+ kind: "ghost",
512
517
  className: classNames('btn-link btn-link-icon', {
513
518
  active: sort === RollupRows.SORT.ASCENDING
514
519
  }),
515
520
  onClick: this.handleSortAscending
516
521
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
517
522
  icon: dhSortAlphaDown
518
- }), /*#__PURE__*/React.createElement(Tooltip, null, "Sort ascending")), /*#__PURE__*/React.createElement(ButtonOld, {
523
+ }), /*#__PURE__*/React.createElement(Tooltip, null, "Sort ascending")), /*#__PURE__*/React.createElement(Button, {
524
+ kind: "ghost",
519
525
  className: classNames('btn-link btn-link-icon', {
520
526
  active: sort === RollupRows.SORT.DESCENDING
521
527
  }),
@@ -560,18 +566,10 @@ _defineProperty(RollupRows, "SORT", Object.freeze({
560
566
  DESCENDING: 'DESCENDING'
561
567
  }));
562
568
 
563
- RollupRows.propTypes = {
564
- model: PropTypes.instanceOf(IrisGridModel).isRequired,
565
- onChange: PropTypes.func,
566
- config: PropTypes.shape({
567
- columns: PropTypes.arrayOf(PropTypes.string),
568
- showConstituents: PropTypes.bool,
569
- showNonAggregatedColumns: PropTypes.bool
570
- })
571
- };
572
- RollupRows.defaultProps = {
569
+ _defineProperty(RollupRows, "defaultProps", {
573
570
  config: null,
574
- onChange: () => {}
575
- };
571
+ onChange: () => undefined
572
+ });
573
+
576
574
  export default RollupRows;
577
575
  //# sourceMappingURL=RollupRows.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sidebar/RollupRows.jsx"],"names":["React","Component","classNames","PropTypes","FontAwesomeIcon","DragDropContext","Droppable","ButtonOld","Checkbox","DraggableItemList","DragUtils","SearchInput","Tooltip","vsTrash","dhSortAlphaDown","dhSortAlphaUp","TableUtils","memoize","debounce","Log","IrisGridModel","log","module","DEBOUNCE_SEARCH","GROUPED_LIST_ID","UNGROUPED_LIST_ID","RollupRows","renderColumn","item","isClone","selectedCount","text","name","badgeText","className","renderTextItem","addGroupings","currentGroupings","newGroupings","index","length","insertIndex","groupings","filter","grouping","i","includes","splice","isGroupable","column","isDecimalType","type","constructor","props","columns","groupedColumns","find","sort","sortColumns","SORT","ASCENDING","search","bind","handleDeleteClicked","handleSearchChange","handleUngroupedSelect","handleUngroupedSelectionChange","handleDragStart","handleDragEnd","handleGroupedSelectionChange","handleShowConstituentsChange","handleShowNonAggregatedColumnsChange","handleSortAscending","handleSortDescending","renderGroupedItem","ungroupedList","createRef","groupedList","config","showConstituents","showNonAggregatedColumns","state","ungroupedSelectedRanges","groupedSelectedRanges","searchFilter","dragSource","componentDidUpdate","prevProps","prevState","updateFromConfig","sendChange","componentWillUnmount","cancel","event","target","value","setState","resetSelection","DESCENDING","getSortedUngroupedColumns","selectedRanges","focusIndex","toLowerCase","push","current","scrollToItem","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","propTypes","instanceOf","isRequired","func","shape","arrayOf","string","bool","defaultProps"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DragDropContext, Droppable } from 'react-beautiful-dnd';\nimport {\n ButtonOld,\n Checkbox,\n DraggableItemList,\n DragUtils,\n SearchInput,\n Tooltip,\n} from '@deephaven/components';\nimport { vsTrash, dhSortAlphaDown, dhSortAlphaUp } from '@deephaven/icons';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport memoize from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './RollupRows.scss';\nimport IrisGridModel from '../IrisGridModel';\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\nclass RollupRows extends Component {\n static SORT = Object.freeze({\n ASCENDING: 'ASCENDING',\n DESCENDING: 'DESCENDING',\n });\n\n static renderColumn({ item, isClone, selectedCount }) {\n const text = item && item.name;\n const badgeText = isClone ? `${selectedCount}` : null;\n const className = isClone ? 'item-list-item-clone' : '';\n return DraggableItemList.renderTextItem({ text, badgeText, className });\n }\n\n static addGroupings(\n currentGroupings,\n newGroupings,\n index = currentGroupings.length\n ) {\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) {\n return !TableUtils.isDecimalType(column.type);\n }\n\n constructor(props) {\n super(props);\n\n this.search = debounce(this.search.bind(this), DEBOUNCE_SEARCH);\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(prevProps, prevState) {\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() {\n this.search.cancel();\n }\n\n handleSearchChange(event) {\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() {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.ASCENDING ? null : RollupRows.SORT.ASCENDING,\n }));\n }\n\n handleSortDescending() {\n this.setState(({ sort }) => ({\n sort:\n sort === RollupRows.SORT.DESCENDING ? null : RollupRows.SORT.DESCENDING,\n }));\n }\n\n resetSelection() {\n this.setState({ ungroupedSelectedRanges: [], groupedSelectedRanges: [] });\n }\n\n search(searchFilter) {\n const columns = this.getSortedUngroupedColumns();\n const selectedRanges = [];\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 this.setState({ ungroupedSelectedRanges: selectedRanges });\n\n if (selectedRanges.length > 0 && this.ungroupedList.current) {\n this.ungroupedList.current.scrollToItem(focusIndex);\n }\n }\n\n handleDragStart(e) {\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) {\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],\n ];\n return {\n columns: newColumns,\n ungroupedSelectedRanges: [],\n groupedSelectedRanges: newSelectedRanges,\n };\n }\n );\n this.resetSelection();\n }\n\n handleUngroupedSelect(itemIndex) {\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) {\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) {\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) {\n this.setState(({ columns }) => {\n const newColumns = columns.slice();\n newColumns.splice(index, 1);\n return { columns: newColumns };\n });\n }\n\n handleShowConstituentsChange() {\n this.setState(({ showConstituents }) => ({\n showConstituents: !showConstituents,\n }));\n }\n\n handleShowNonAggregatedColumnsChange() {\n this.setState(({ showNonAggregatedColumns }) => ({\n showNonAggregatedColumns: !showNonAggregatedColumns,\n }));\n }\n\n updateFromConfig() {\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() {\n const { onChange } = this.props;\n const { columns, showConstituents, showNonAggregatedColumns } = this.state;\n onChange({\n columns,\n showConstituents,\n showNonAggregatedColumns,\n });\n }\n\n getCachedUngroupedColumns = memoize((columns, groupedColumns) =>\n columns.filter(\n column =>\n RollupRows.isGroupable(column) &&\n !groupedColumns.find(name => name === column.name)\n )\n );\n\n getCachedSortedColumns = memoize((columns, sort) =>\n sort == null\n ? [...columns]\n : TableUtils.sortColumns(columns, sort === RollupRows.SORT.ASCENDING)\n );\n\n getUngroupedColumns() {\n const { model } = this.props;\n const { columns, searchFilter } = this.state;\n const { originalColumns } = model;\n\n return this.getCachedUngroupedColumns(\n originalColumns,\n columns,\n searchFilter\n );\n }\n\n getSortedUngroupedColumns() {\n const { sort } = this.state;\n const columns = this.getUngroupedColumns();\n return this.getCachedSortedColumns(columns, sort);\n }\n\n renderGroupedItem({ item, itemIndex, isClone, selectedCount }) {\n const indent = isClone ? '' : '\\u00A0\\u00A0'.repeat(itemIndex);\n const text = `${indent}${item}`;\n const badgeText = isClone ? `${selectedCount}` : null;\n const className = isClone ? 'item-list-item-clone' : '';\n return (\n <>\n {DraggableItemList.renderTextItem({ text, badgeText, className })}\n {!isClone && (\n <ButtonOld\n className=\"btn btn-link btn-link-icon btn-delete-grouping float-right\"\n onClick={() => this.handleDeleteClicked(itemIndex)}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </ButtonOld>\n )}\n </>\n );\n }\n\n render() {\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 isDragDisabled 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 : null\n }\n placeholder=\"Find column...\"\n onChange={this.handleSearchChange}\n />\n <ButtonOld\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 </ButtonOld>\n <ButtonOld\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 </ButtonOld>\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\nRollupRows.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n onChange: PropTypes.func,\n config: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.string),\n showConstituents: PropTypes.bool,\n showNonAggregatedColumns: PropTypes.bool,\n }),\n};\n\nRollupRows.defaultProps = {\n config: null,\n onChange: () => {},\n};\n\nexport default RollupRows;\n"],"file":"RollupRows.js"}
1
+ {"version":3,"sources":["../../src/sidebar/RollupRows.tsx"],"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","search","bind","handleDeleteClicked","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","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"],"mappings":"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","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: 'ASCENDING',\n DESCENDING: 'DESCENDING',\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 && item.name;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = 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.search = this.search.bind(this);\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)\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 = isClone ? '' : '\\u00A0\\u00A0'.repeat(itemIndex);\n const text = `${indent}${item}`;\n const badgeText = isClone ? `${selectedCount}` : undefined;\n const className = isClone ? 'item-list-item-clone' : '';\n return (\n <>\n {DraggableItemList.renderTextItem({ text, badgeText, className })}\n {!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 isDropDisabled 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"],"file":"RollupRows.js"}
@@ -1,24 +1,30 @@
1
- export default SelectDistinctBuilder;
2
- declare class SelectDistinctBuilder extends React.Component<any, any, any> {
3
- constructor(props: any);
4
- handleAddColumnClick(): void;
5
- handleDeleteColumn(index: any): void;
6
- handleDropdownChanged(index: any, event: any): void;
7
- renderInputs(): JSX.Element[];
1
+ import React, { Component, ReactElement } from 'react';
2
+ import { Column } from '@deephaven/jsapi-shim';
3
+ import { ModelIndex } from '@deephaven/grid';
4
+ import IrisGridModel from '../IrisGridModel';
5
+ import './SelectDistinctBuilder.scss';
6
+ import { ColumnName } from '../CommonTypes';
7
+ interface SelectDistinctBuilderProps {
8
+ model: IrisGridModel;
9
+ selectDistinctColumns: ColumnName[];
10
+ onChange: (newStr: string[]) => void;
8
11
  }
9
- declare namespace SelectDistinctBuilder {
10
- namespace propTypes {
11
- const model: PropTypes.Validator<any>;
12
- const selectDistinctColumns: PropTypes.Requireable<(string | null | undefined)[]>;
13
- const onChange: PropTypes.Requireable<(...args: any[]) => any>;
14
- }
15
- namespace defaultProps {
16
- const selectDistinctColumns_1: never[];
17
- export { selectDistinctColumns_1 as selectDistinctColumns };
18
- export function onChange_1(): void;
19
- export { onChange_1 as onChange };
20
- }
12
+ interface SelectDistinctBuilderState {
13
+ inputs: string[];
14
+ columns: Column[];
21
15
  }
22
- import React from "react";
23
- import PropTypes from "prop-types";
16
+ declare class SelectDistinctBuilder extends Component<SelectDistinctBuilderProps, SelectDistinctBuilderState> {
17
+ static defaultProps: {
18
+ selectDistinctColumns: never[];
19
+ onChange: () => void;
20
+ };
21
+ constructor(props: SelectDistinctBuilderProps);
22
+ componentDidUpdate(prevProps: SelectDistinctBuilderProps, prevState: SelectDistinctBuilderState): void;
23
+ handleAddColumnClick(): void;
24
+ handleDeleteColumn(index: ModelIndex): void;
25
+ handleDropdownChanged(index: number, event: React.ChangeEvent<HTMLSelectElement>): void;
26
+ renderInputs(): ReactElement[];
27
+ render(): React.ReactElement;
28
+ }
29
+ export default SelectDistinctBuilder;
24
30
  //# sourceMappingURL=SelectDistinctBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectDistinctBuilder.d.ts","sourceRoot":"","sources":["../../src/sidebar/SelectDistinctBuilder.jsx"],"names":[],"mappings":";AAaA;IACE,wBAcC;IAkBD,6BAIC;IAED,qCAOC;IAED,oDAQC;IAED,8BAsCC;CAyCF;;;;;;;;;;QAUW,mCAAQ"}
1
+ {"version":3,"file":"SelectDistinctBuilder.d.ts","sourceRoot":"","sources":["../../src/sidebar/SelectDistinctBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMvD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAE7C,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,UAAU,0BAA0B;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,qBAAqB,EAAE,UAAU,EAAE,CAAC;IACpC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACtC;AACD,UAAU,0BAA0B;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AACD,cAAM,qBAAsB,SAAQ,SAAS,CAC3C,0BAA0B,EAC1B,0BAA0B,CAC3B;IACC,MAAM,CAAC,YAAY;;wBAEH,IAAI;MAClB;gBAEU,KAAK,EAAE,0BAA0B;IAgB7C,kBAAkB,CAChB,SAAS,EAAE,0BAA0B,EACrC,SAAS,EAAE,0BAA0B,GACpC,IAAI;IAgBP,oBAAoB,IAAI,IAAI;IAM5B,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAS3C,qBAAqB,CACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAC1C,IAAI;IAUP,YAAY,IAAI,YAAY,EAAE;IAwC9B,MAAM,IAAI,KAAK,CAAC,YAAY;CAuC7B;AAED,eAAe,qBAAqB,CAAC"}
@@ -1,11 +1,11 @@
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
+
1
3
  import React, { Component } from 'react';
2
- import PropTypes from 'prop-types';
3
4
  import deepEqual from 'deep-equal';
4
5
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
5
6
  import { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';
6
7
  import { Tooltip } from '@deephaven/components';
7
8
  import Log from '@deephaven/log';
8
- import IrisGridModel from "../IrisGridModel.js";
9
9
  import "./SelectDistinctBuilder.css";
10
10
  var log = Log.module('SelectDistinctBuilder');
11
11
 
@@ -158,14 +158,10 @@ class SelectDistinctBuilder extends Component {
158
158
 
159
159
  }
160
160
 
161
- SelectDistinctBuilder.propTypes = {
162
- model: PropTypes.instanceOf(IrisGridModel).isRequired,
163
- selectDistinctColumns: PropTypes.arrayOf(PropTypes.string),
164
- onChange: PropTypes.func
165
- };
166
- SelectDistinctBuilder.defaultProps = {
161
+ _defineProperty(SelectDistinctBuilder, "defaultProps", {
167
162
  selectDistinctColumns: [],
168
- onChange: () => {}
169
- };
163
+ onChange: () => undefined
164
+ });
165
+
170
166
  export default SelectDistinctBuilder;
171
167
  //# sourceMappingURL=SelectDistinctBuilder.js.map