@deephaven/iris-grid 0.13.3-treemap.2 → 0.14.1-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AdvancedFilterCreator.d.ts +69 -63
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +79 -73
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts +45 -45
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +32 -36
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +47 -52
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +24 -39
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnStatistics.d.ts +34 -22
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js +8 -12
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.d.ts +58 -0
- package/dist/CommonTypes.d.ts.map +1 -0
- package/dist/CommonTypes.js +2 -0
- package/dist/CommonTypes.js.map +1 -0
- package/dist/CrossColumnSearch.d.ts +26 -24
- package/dist/CrossColumnSearch.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js +9 -13
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.d.ts +48 -51
- package/dist/FilterInputField.d.ts.map +1 -1
- package/dist/FilterInputField.js +30 -27
- package/dist/FilterInputField.js.map +1 -1
- package/dist/IrisGrid.d.ts +410 -453
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +590 -526
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.d.ts +1 -1
- package/dist/IrisGridCellOverflowModal.d.ts.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +1 -4
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts +52 -46
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +22 -38
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +5 -4
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js +5 -1
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +37 -35
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +19 -3
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.d.ts +7 -5
- package/dist/IrisGridModelFactory.d.ts.map +1 -1
- package/dist/IrisGridModelFactory.js +5 -5
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +13 -11
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.d.ts +38 -39
- package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
- package/dist/IrisGridPartitionSelector.js +18 -24
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +111 -32
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +212 -170
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +59 -31
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +92 -46
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +48 -149
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +58 -1385
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +218 -0
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -0
- package/dist/IrisGridTableModelTemplate.js +1624 -0
- package/dist/IrisGridTableModelTemplate.js.map +1 -0
- package/dist/IrisGridTestUtils.d.ts +18 -14
- package/dist/IrisGridTestUtils.d.ts.map +1 -1
- package/dist/IrisGridTestUtils.js +29 -1
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.d.ts +35 -3
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +26 -7
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridTreeTableModel.js +24 -14
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +257 -162
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +132 -95
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.d.ts +5 -3
- package/dist/MissingKeyError.d.ts.map +1 -1
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.d.ts +61 -40
- package/dist/PartitionSelectorSearch.d.ts.map +1 -1
- package/dist/PartitionSelectorSearch.js +25 -15
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +3 -6
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +39 -55
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js +42 -64
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/TreeTableViewportUpdater.d.ts +29 -37
- package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
- package/dist/TreeTableViewportUpdater.js +39 -50
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +2 -0
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts +2 -2
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +32 -14
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +41 -130
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +426 -317
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +2 -2
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.d.ts +8 -4
- package/dist/mousehandlers/PendingMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +4 -5
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +48 -33
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +28 -27
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +51 -41
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +22 -18
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.d.ts +26 -36
- package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +11 -20
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.d.ts +34 -35
- package/dist/sidebar/InputEditor.d.ts.map +1 -1
- package/dist/sidebar/InputEditor.js +43 -24
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +67 -52
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +51 -53
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts +27 -21
- package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +6 -10
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +42 -39
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +12 -20
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +59 -60
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +154 -68
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +56 -45
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +34 -29
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +2 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +6 -5
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +5 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/icons/index.d.ts +7 -7
- package/dist/sidebar/icons/index.d.ts.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.d.ts +12 -12
- package/dist/sidebar/index.d.ts.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +18 -17
|
@@ -1,63 +1,78 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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:
|
|
39
|
-
getCachedSortedColumns: ((columns:
|
|
40
|
-
getUngroupedColumns():
|
|
41
|
-
getSortedUngroupedColumns():
|
|
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
|
-
|
|
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.
|
|
1
|
+
{"version":3,"file":"RollupRows.d.ts","sourceRoot":"","sources":["../../src/sidebar/RollupRows.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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 {
|
|
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) :
|
|
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 =
|
|
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
|
|
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) :
|
|
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(
|
|
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:
|
|
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
|
-
|
|
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 :
|
|
512
|
+
matchCount: searchFilter ? ungroupedSelectedRanges.length : undefined,
|
|
509
513
|
placeholder: "Find column...",
|
|
510
514
|
onChange: this.handleSearchChange
|
|
511
|
-
}), /*#__PURE__*/React.createElement(
|
|
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(
|
|
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
|
|
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":";;;;AAAA;AACA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,eAAT,EAA0BC,SAA1B,QAA2C,qBAA3C;AACA,SACEC,SADF,EAEEC,QAFF,EAGEC,iBAHF,EAIEC,SAJF,EAKEC,WALF,EAMEC,OANF,QAOO,uBAPP;AAQA,SAASC,OAAT,EAAkBC,eAAlB,EAAmCC,aAAnC,QAAwD,kBAAxD;AACA,SAASC,UAAT,QAA2B,wBAA3B;AACA,OAAOC,OAAP,MAAoB,UAApB;AACA,OAAOC,QAAP,MAAqB,iBAArB;AACA,OAAOC,GAAP,MAAgB,gBAAhB;;OAEOC,a;AAEP,IAAMC,GAAG,GAAGF,GAAG,CAACG,MAAJ,CAAW,YAAX,CAAZ;AACA,IAAMC,eAAe,GAAG,GAAxB;AACA,IAAMC,eAAe,GAAG,qBAAxB;AACA,IAAMC,iBAAiB,GAAG,uBAA1B;;AAEA,MAAMC,UAAN,SAAyBzB,SAAzB,CAAmC;AAMd,SAAZ0B,YAAY,OAAmC;AAAA,QAAlC;AAAEC,MAAAA,IAAF;AAAQC,MAAAA,OAAR;AAAiBC,MAAAA;AAAjB,KAAkC;AACpD,QAAMC,IAAI,GAAGH,IAAI,IAAIA,IAAI,CAACI,IAA1B;AACA,QAAMC,SAAS,GAAGJ,OAAO,aAAMC,aAAN,IAAwB,IAAjD;AACA,QAAMI,SAAS,GAAGL,OAAO,GAAG,sBAAH,GAA4B,EAArD;AACA,WAAOpB,iBAAiB,CAAC0B,cAAlB,CAAiC;AAAEJ,MAAAA,IAAF;AAAQE,MAAAA,SAAR;AAAmBC,MAAAA;AAAnB,KAAjC,CAAP;AACD;;AAEkB,SAAZE,YAAY,CACjBC,gBADiB,EAEjBC,YAFiB,EAIjB;AAAA,QADAC,KACA,uEADQF,gBAAgB,CAACG,MACzB;;AACA,QAAIF,YAAY,IAAI,IAAhB,IAAwBA,YAAY,CAACE,MAAb,KAAwB,CAApD,EAAuD;AACrD,aAAOH,gBAAP;AACD;;AAED,QAAII,WAAW,GAAGF,KAAlB;AACA,QAAMG,SAAS,GAAGL,gBAAgB,CAACM,MAAjB,CAAwB,CAACC,QAAD,EAAWC,CAAX,KAAiB;AACzD,UAAIP,YAAY,CAACQ,QAAb,CAAsBF,QAAtB,CAAJ,EAAqC;AACnC,YAAIC,CAAC,GAAGJ,WAAR,EAAqB;AACnBA,UAAAA,WAAW,IAAI,CAAf;AACD;;AACD,eAAO,KAAP;AACD;;AACD,aAAO,IAAP;AACD,KARiB,CAAlB;AASAC,IAAAA,SAAS,CAACK,MAAV,CAAiBN,WAAjB,EAA8B,CAA9B,EAAiC,GAAGH,YAApC;AACA,WAAOI,SAAP;AACD;;AAEiB,SAAXM,WAAW,CAACC,MAAD,EAAS;AACzB,WAAO,CAACjC,UAAU,CAACkC,aAAX,CAAyBD,MAAM,CAACE,IAAhC,CAAR;AACD;;AAEDC,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;;AADiB,uDAsRSpC,OAAO,CAAC,CAACqC,OAAD,EAAUC,cAAV,KAClCD,OAAO,CAACX,MAAR,CACEM,MAAM,IACJvB,UAAU,CAACsB,WAAX,CAAuBC,MAAvB,KACA,CAACM,cAAc,CAACC,IAAf,CAAoBxB,IAAI,IAAIA,IAAI,KAAKiB,MAAM,CAACjB,IAA5C,CAHL,CADiC,CAtRhB;;AAAA,oDA8RMf,OAAO,CAAC,CAACqC,OAAD,EAAUG,IAAV,KAC/BA,IAAI,IAAI,IAAR,GACI,CAAC,GAAGH,OAAJ,CADJ,GAEItC,UAAU,CAAC0C,WAAX,CAAuBJ,OAAvB,EAAgCG,IAAI,KAAK/B,UAAU,CAACiC,IAAX,CAAgBC,SAAzD,CAH0B,CA9Rb;;AAGjB,SAAKC,MAAL,GAAc3C,QAAQ,CAAC,KAAK2C,MAAL,CAAYC,IAAZ,CAAiB,IAAjB,CAAD,EAAyBvC,eAAzB,CAAtB;AAEA,SAAKwC,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBD,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKE,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBF,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKG,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BH,IAA3B,CAAgC,IAAhC,CAA7B;AACA,SAAKI,8BAAL,GAAsC,KAAKA,8BAAL,CAAoCJ,IAApC,CACpC,IADoC,CAAtC;AAGA,SAAKK,eAAL,GAAuB,KAAKA,eAAL,CAAqBL,IAArB,CAA0B,IAA1B,CAAvB;AACA,SAAKM,aAAL,GAAqB,KAAKA,aAAL,CAAmBN,IAAnB,CAAwB,IAAxB,CAArB;AACA,SAAKO,4BAAL,GAAoC,KAAKA,4BAAL,CAAkCP,IAAlC,CAClC,IADkC,CAApC;AAGA,SAAKQ,4BAAL,GAAoC,KAAKA,4BAAL,CAAkCR,IAAlC,CAClC,IADkC,CAApC;AAGA,SAAKS,oCAAL,GAA4C,KAAKA,oCAAL,CAA0CT,IAA1C,CAC1C,IAD0C,CAA5C;AAGA,SAAKU,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBV,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKW,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BX,IAA1B,CAA+B,IAA/B,CAA5B;AACA,SAAKY,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBZ,IAAvB,CAA4B,IAA5B,CAAzB;AAEA,SAAKa,aAAL,gBAAqB3E,KAAK,CAAC4E,SAAN,EAArB;AACA,SAAKC,WAAL,gBAAmB7E,KAAK,CAAC4E,SAAN,EAAnB;AAEA,QAAM;AAAEE,MAAAA;AAAF,QAAazB,KAAnB;AACA,QAAM;AACJC,MAAAA,OAAO,EAAPA,QAAO,GAAG,EADN;AAEJyB,MAAAA,gBAAgB,GAAG,IAFf;AAGJC,MAAAA,wBAAwB,GAAG;AAHvB,QAIFF,MAJE,aAIFA,MAJE,cAIFA,MAJE,GAIQ,EAJd;AAMA,SAAKG,KAAL,GAAa;AACXC,MAAAA,uBAAuB,EAAE,EADd;AAEX5B,MAAAA,OAAO,EAAPA,QAFW;AAGX6B,MAAAA,qBAAqB,EAAE,EAHZ;AAIXC,MAAAA,YAAY,EAAE,EAJH;AAKXL,MAAAA,gBALW;AAMXC,MAAAA,wBANW;AAOXK,MAAAA,UAAU,EAAE,IAPD;AAQX5B,MAAAA,IAAI,EAAE;AARK,KAAb;AAUD;;AAED6B,EAAAA,kBAAkB,CAACC,SAAD,EAAYC,SAAZ,EAAuB;AACvC,QAAM;AAAEV,MAAAA;AAAF,QAAa,KAAKzB,KAAxB;AACA,QAAM;AAAEC,MAAAA,OAAF;AAAWyB,MAAAA,gBAAX;AAA6BC,MAAAA;AAA7B,QAA0D,KAAKC,KAArE;;AACA,QAAIH,MAAM,KAAKS,SAAS,CAACT,MAAzB,EAAiC;AAC/B,WAAKW,gBAAL;AACD,KAFD,MAEO,IACLnC,OAAO,KAAKkC,SAAS,CAAClC,OAAtB,IACAyB,gBAAgB,KAAKS,SAAS,CAACT,gBAD/B,IAEAC,wBAAwB,KAAKQ,SAAS,CAACR,wBAHlC,EAIL;AACA,UACEF,MAAM,IAAI,IAAV,IACAxB,OAAO,KAAKwB,MAAM,CAACxB,OADnB,IAEAyB,gBAAgB,KAAKD,MAAM,CAACC,gBAF5B,IAGAC,wBAAwB,KAAKF,MAAM,CAACE,wBAJtC,EAKE;AACA,aAAKU,UAAL;AACD;AACF;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB,SAAK9B,MAAL,CAAY+B,MAAZ;AACD;;AAED5B,EAAAA,kBAAkB,CAAC6B,KAAD,EAAQ;AACxB,QAAMT,YAAY,GAAGS,KAAK,CAACC,MAAN,CAAaC,KAAlC;AACA,SAAKC,QAAL,CAAc;AAAEZ,MAAAA;AAAF,KAAd;;AACA,QAAI,CAACA,YAAL,EAAmB;AACjB,WAAKvB,MAAL,CAAY+B,MAAZ;AACA,WAAKK,cAAL;AACA;AACD;;AACD,SAAKpC,MAAL,CAAYuB,YAAZ;AACD;;AAEDZ,EAAAA,mBAAmB,GAAG;AACpB,SAAKwB,QAAL,CAAc;AAAA,UAAC;AAAEvC,QAAAA;AAAF,OAAD;AAAA,aAAe;AAC3BA,QAAAA,IAAI,EACFA,IAAI,KAAK/B,UAAU,CAACiC,IAAX,CAAgBC,SAAzB,GAAqC,IAArC,GAA4ClC,UAAU,CAACiC,IAAX,CAAgBC;AAFnC,OAAf;AAAA,KAAd;AAID;;AAEDa,EAAAA,oBAAoB,GAAG;AACrB,SAAKuB,QAAL,CAAc;AAAA,UAAC;AAAEvC,QAAAA;AAAF,OAAD;AAAA,aAAe;AAC3BA,QAAAA,IAAI,EACFA,IAAI,KAAK/B,UAAU,CAACiC,IAAX,CAAgBuC,UAAzB,GAAsC,IAAtC,GAA6CxE,UAAU,CAACiC,IAAX,CAAgBuC;AAFpC,OAAf;AAAA,KAAd;AAID;;AAEDD,EAAAA,cAAc,GAAG;AACf,SAAKD,QAAL,CAAc;AAAEd,MAAAA,uBAAuB,EAAE,EAA3B;AAA+BC,MAAAA,qBAAqB,EAAE;AAAtD,KAAd;AACD;;AAEDtB,EAAAA,MAAM,CAACuB,YAAD,EAAe;AACnB,QAAM9B,OAAO,GAAG,KAAK6C,yBAAL,EAAhB;AACA,QAAMC,cAAc,GAAG,EAAvB;AACA,QAAIC,UAAU,GAAG,IAAjB;;AACA,SAAK,IAAIxD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGS,OAAO,CAACd,MAA5B,EAAoCK,CAAC,IAAI,CAAzC,EAA4C;AAC1C,UAAMI,MAAM,GAAGK,OAAO,CAACT,CAAD,CAAtB;;AACA,UAAII,MAAM,CAACjB,IAAP,CAAYsE,WAAZ,GAA0BxD,QAA1B,CAAmCsC,YAAY,CAACkB,WAAb,EAAnC,CAAJ,EAAoE;AAClE,YAAID,UAAU,IAAI,IAAlB,EAAwB;AACtBA,UAAAA,UAAU,GAAGxD,CAAb;AACD;;AACDuD,QAAAA,cAAc,CAACG,IAAf,CAAoB,CAAC1D,CAAD,EAAIA,CAAJ,CAApB;AACD;AACF;;AACD,SAAKmD,QAAL,CAAc;AAAEd,MAAAA,uBAAuB,EAAEkB;AAA3B,KAAd;;AAEA,QAAIA,cAAc,CAAC5D,MAAf,GAAwB,CAAxB,IAA6B,KAAKmC,aAAL,CAAmB6B,OAApD,EAA6D;AAC3D,WAAK7B,aAAL,CAAmB6B,OAAnB,CAA2BC,YAA3B,CAAwCJ,UAAxC;AACD;AACF;;AAEDlC,EAAAA,eAAe,CAACuC,CAAD,EAAI;AACjBrF,IAAAA,GAAG,CAACsF,KAAJ,CAAU,iBAAV,EAA6BD,CAA7B;AAEAE,IAAAA,QAAQ,CAACC,eAAT,CAAyBC,SAAzB,CAAmCC,GAAnC,CAAuC,0BAAvC;AAEA,SAAKf,QAAL,CAAc;AAAEX,MAAAA,UAAU,EAAEqB,CAAC,CAACM;AAAhB,KAAd;AACD;;AAED5C,EAAAA,aAAa,CAACsC,CAAD,EAAI;AACfrF,IAAAA,GAAG,CAACsF,KAAJ,CAAU,eAAV,EAA2BD,CAA3B;AAEAE,IAAAA,QAAQ,CAACC,eAAT,CAAyBC,SAAzB,CAAmCG,MAAnC,CAA0C,0BAA1C;AAEA,SAAKjB,QAAL,CAAc;AAAEX,MAAAA,UAAU,EAAE;AAAd,KAAd;AAEA,QAAM;AAAE6B,MAAAA,WAAF;AAAeF,MAAAA;AAAf,QAA0BN,CAAhC;;AACA,QAAIQ,WAAW,IAAI,IAAf,IAAuBF,MAAM,IAAI,IAArC,EAA2C;AACzC;AACD,KAVc,CAYf;AACA;;;AACA,QAAIE,WAAW,CAACC,WAAZ,KAA4B1F,iBAAhC,EAAmD;AACjD,WAAKuE,QAAL,CAAc,SAAwC;AAAA,YAAvC;AAAEb,UAAAA,qBAAF;AAAyB7B,UAAAA;AAAzB,SAAuC;AACpD,YAAM8D,UAAU,GAAG,CAAC,GAAG9D,OAAJ,CAAnB;AACA5C,QAAAA,SAAS,CAAC2G,OAAV,CAAkBD,UAAlB,EAA8BjC,qBAA9B,EAAqD,EAArD,EAAyD,CAAzD;AACA,eAAO;AACL7B,UAAAA,OAAO,EAAE8D,UADJ;AAELlC,UAAAA,uBAAuB,EAAE,EAFpB;AAGLC,UAAAA,qBAAqB,EAAE;AAHlB,SAAP;AAKD,OARD;AASA;AACD,KAzBc,CA2Bf;;;AACA,QAAMmC,UAAU,GAAGN,MAAM,CAACG,WAAP,KAAuB3F,eAA1C;AACA,QAAI+F,gBAAgB,GAAGL,WAAW,CAAC3E,KAAnC;;AACA,QAAI+E,UAAU,IAAIN,MAAM,CAACzE,KAAP,GAAe2E,WAAW,CAAC3E,KAA7C,EAAoD;AAClD;AACA;AACA;AACAgF,MAAAA,gBAAgB,IAAI,CAApB;AACD;;AACD,SAAKvB,QAAL,CACE,SAAiE;AAAA,UAAhE;AAAE1C,QAAAA,OAAF;AAAW4B,QAAAA,uBAAX;AAAoCC,QAAAA;AAApC,OAAgE;AAC/D,UAAMiC,UAAU,GAAG,CAAC,GAAG9D,OAAJ,CAAnB;AACA,UAAMkE,WAAW,GAAGF,UAAU,GAC1BF,UAD0B,GAE1B,KAAKjB,yBAAL,GAAiCsB,GAAjC,CAAqCC,CAAC,IAAIA,CAAC,CAAC1F,IAA5C,CAFJ;AAGA,UAAM2F,YAAY,GAAGL,UAAU,GAC3BnC,qBAD2B,GAE3BD,uBAFJ;AAGA,UAAM0C,YAAY,GAAGlH,SAAS,CAAC2G,OAAV,CACnBG,WADmB,EAEnBG,YAFmB,EAGnBP,UAHmB,EAInBG,gBAJmB,CAArB,CAR+D,CAe/D;;AACA,UAAM9E,WAAW,GAAG6E,UAAU,GAC1B5G,SAAS,CAACmH,sBAAV,CACEN,gBADF,EAEEpC,qBAFF,CAD0B,GAK1BoC,gBALJ;AAMA,UAAMO,iBAAiB,GAAG,CACxB,CAACrF,WAAD,EAAcA,WAAW,GAAGmF,YAAY,CAACpF,MAA3B,GAAoC,CAAlD,CADwB,CAA1B;AAGA,aAAO;AACLc,QAAAA,OAAO,EAAE8D,UADJ;AAELlC,QAAAA,uBAAuB,EAAE,EAFpB;AAGLC,QAAAA,qBAAqB,EAAE2C;AAHlB,OAAP;AAKD,KA/BH;AAiCA,SAAK7B,cAAL;AACD;;AAEDhC,EAAAA,qBAAqB,CAAC8D,SAAD,EAAY;AAC/B1G,IAAAA,GAAG,CAACsF,KAAJ,CAAU,uBAAV;AAEA,SAAKX,QAAL,CAAc;AAAA,UAAC;AAAE1C,QAAAA;AAAF,OAAD;AAAA,aAAkB;AAC9BA,QAAAA,OAAO,EAAE5B,UAAU,CAACU,YAAX,CAAwBkB,OAAxB,EAAiC,CACxC,KAAK6C,yBAAL,GAAiC4B,SAAjC,EAA4C/F,IADJ,CAAjC,CADqB;AAI9BkD,QAAAA,uBAAuB,EAAE,EAJK;AAK9BC,QAAAA,qBAAqB,EAAE;AALO,OAAlB;AAAA,KAAd;AAOD;;AAEDjB,EAAAA,8BAA8B,CAACgB,uBAAD,EAA0B;AACtD7D,IAAAA,GAAG,CAAC2G,MAAJ,CAAW,gCAAX,EAA6C9C,uBAA7C;AACA,SAAKc,QAAL,CACE,SAA+D;AAAA,UAA9D;AAAEd,QAAAA,uBAAuB,EAAE+C;AAA3B,OAA8D;;AAC7D,UAAI/C,uBAAuB,KAAK+C,4BAAhC,EAA8D;AAC5D,eAAO,IAAP;AACD;;AAED,aAAO;AAAE/C,QAAAA,uBAAF;AAA2BC,QAAAA,qBAAqB,EAAE;AAAlD,OAAP;AACD,KAPH;AASD;;AAEDd,EAAAA,4BAA4B,CAACc,qBAAD,EAAwB;AAClD9D,IAAAA,GAAG,CAAC2G,MAAJ,CAAW,6BAAX,EAA0C7C,qBAA1C;AACA,SAAKa,QAAL,CAAc,SAA2D;AAAA,UAA1D;AAAEb,QAAAA,qBAAqB,EAAE+C;AAAzB,OAA0D;;AACvE,UAAI/C,qBAAqB,KAAK+C,0BAA9B,EAA0D;AACxD,eAAO,IAAP;AACD;;AAED,aAAO;AAAE/C,QAAAA,qBAAF;AAAyBD,QAAAA,uBAAuB,EAAE;AAAlD,OAAP;AACD,KAND;AAOD;;AAEDnB,EAAAA,mBAAmB,CAACxB,KAAD,EAAQ;AACzB,SAAKyD,QAAL,CAAc,SAAiB;AAAA,UAAhB;AAAE1C,QAAAA;AAAF,OAAgB;AAC7B,UAAM8D,UAAU,GAAG9D,OAAO,CAAC6E,KAAR,EAAnB;AACAf,MAAAA,UAAU,CAACrE,MAAX,CAAkBR,KAAlB,EAAyB,CAAzB;AACA,aAAO;AAAEe,QAAAA,OAAO,EAAE8D;AAAX,OAAP;AACD,KAJD;AAKD;;AAED9C,EAAAA,4BAA4B,GAAG;AAC7B,SAAK0B,QAAL,CAAc;AAAA,UAAC;AAAEjB,QAAAA;AAAF,OAAD;AAAA,aAA2B;AACvCA,QAAAA,gBAAgB,EAAE,CAACA;AADoB,OAA3B;AAAA,KAAd;AAGD;;AAEDR,EAAAA,oCAAoC,GAAG;AACrC,SAAKyB,QAAL,CAAc;AAAA,UAAC;AAAEhB,QAAAA;AAAF,OAAD;AAAA,aAAmC;AAC/CA,QAAAA,wBAAwB,EAAE,CAACA;AADoB,OAAnC;AAAA,KAAd;AAGD;;AAEDS,EAAAA,gBAAgB,GAAG;AACjB,QAAM;AAAEX,MAAAA;AAAF,QAAa,KAAKzB,KAAxB;AACA,QAAM;AACJC,MAAAA,OAAO,GAAG,EADN;AAEJyB,MAAAA,gBAAgB,GAAG,IAFf;AAGJC,MAAAA,wBAAwB,GAAG;AAHvB,QAIFF,MAJE,aAIFA,MAJE,cAIFA,MAJE,GAIQ,EAJd;AAKA,SAAKkB,QAAL,CAAc;AAAE1C,MAAAA,OAAF;AAAWyB,MAAAA,gBAAX;AAA6BC,MAAAA;AAA7B,KAAd;AACD;;AAEDU,EAAAA,UAAU,GAAG;AACX,QAAM;AAAE0C,MAAAA;AAAF,QAAe,KAAK/E,KAA1B;AACA,QAAM;AAAEC,MAAAA,OAAF;AAAWyB,MAAAA,gBAAX;AAA6BC,MAAAA;AAA7B,QAA0D,KAAKC,KAArE;AACAmD,IAAAA,QAAQ,CAAC;AACP9E,MAAAA,OADO;AAEPyB,MAAAA,gBAFO;AAGPC,MAAAA;AAHO,KAAD,CAAR;AAKD;;AAgBDqD,EAAAA,mBAAmB,GAAG;AACpB,QAAM;AAAEC,MAAAA;AAAF,QAAY,KAAKjF,KAAvB;AACA,QAAM;AAAEC,MAAAA,OAAF;AAAW8B,MAAAA;AAAX,QAA4B,KAAKH,KAAvC;AACA,QAAM;AAAEsD,MAAAA;AAAF,QAAsBD,KAA5B;AAEA,WAAO,KAAKE,yBAAL,CACLD,eADK,EAELjF,OAFK,EAGL8B,YAHK,CAAP;AAKD;;AAEDe,EAAAA,yBAAyB,GAAG;AAC1B,QAAM;AAAE1C,MAAAA;AAAF,QAAW,KAAKwB,KAAtB;AACA,QAAM3B,OAAO,GAAG,KAAK+E,mBAAL,EAAhB;AACA,WAAO,KAAKI,sBAAL,CAA4BnF,OAA5B,EAAqCG,IAArC,CAAP;AACD;;AAEDiB,EAAAA,iBAAiB,SAA8C;AAAA,QAA7C;AAAE9C,MAAAA,IAAF;AAAQmG,MAAAA,SAAR;AAAmBlG,MAAAA,OAAnB;AAA4BC,MAAAA;AAA5B,KAA6C;AAC7D,QAAM4G,MAAM,GAAG7G,OAAO,GAAG,EAAH,GAAQ,eAAe8G,MAAf,CAAsBZ,SAAtB,CAA9B;AACA,QAAMhG,IAAI,aAAM2G,MAAN,SAAe9G,IAAf,CAAV;AACA,QAAMK,SAAS,GAAGJ,OAAO,aAAMC,aAAN,IAAwB,IAAjD;AACA,QAAMI,SAAS,GAAGL,OAAO,GAAG,sBAAH,GAA4B,EAArD;AACA,wBACE,0CACGpB,iBAAiB,CAAC0B,cAAlB,CAAiC;AAAEJ,MAAAA,IAAF;AAAQE,MAAAA,SAAR;AAAmBC,MAAAA;AAAnB,KAAjC,CADH,EAEG,CAACL,OAAD,iBACC,oBAAC,SAAD;AACE,MAAA,SAAS,EAAC,4DADZ;AAEE,MAAA,OAAO,EAAE,MAAM,KAAKkC,mBAAL,CAAyBgE,SAAzB;AAFjB,oBAIE,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAElH;AAAvB,MAJF,CAHJ,CADF;AAaD;;AAED+H,EAAAA,MAAM,GAAG;AACP,QAAM;AACJtF,MAAAA,OADI;AAEJ+B,MAAAA,UAFI;AAGJD,MAAAA,YAHI;AAIJD,MAAAA,qBAJI;AAKJD,MAAAA,uBALI;AAMJH,MAAAA,gBANI;AAOJC,MAAAA,wBAPI;AAQJvB,MAAAA;AARI,QASF,KAAKwB,KATT;AAWA,QAAM4D,gBAAgB,GAAG,KAAK1C,yBAAL,EAAzB;AACA,QAAI2C,eAAe,GAAGxF,OAAO,CAACd,MAAR,GAAiB/B,iBAAiB,CAACsI,kBAAzD;;AACA,QAAI,CAAA1D,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAE8B,WAAZ,MAA4B1F,iBAAhC,EAAmD;AACjDqH,MAAAA,eAAe,IAAIrI,iBAAiB,CAACsI,kBAArC;AACD;;AACD,QAAMC,oBAAoB,GACxBH,gBAAgB,CAACrG,MAAjB,GAA0B/B,iBAAiB,CAACsI,kBAA5C,GAAiE,EADnE;AAEA,QAAME,oBAAoB,GAAGC,IAAI,CAACC,GAAL,CAC3B,IAAI1I,iBAAiB,CAACsI,kBADK,EAE3BC,oBAF2B,CAA7B;AAKA,wBACE;AACE,MAAA,IAAI,EAAC,MADP;AAEE,MAAA,SAAS,EAAE9I,UAAU,CAAC,aAAD,EAAgB;AACnC,uBAAemF,UAAU,IAAI;AADM,OAAhB,CAFvB;AAKE,MAAA,QAAQ,EAAC;AALX,oBAOE,oBAAC,eAAD;AACE,MAAA,SAAS,EAAE,KAAKjB,aADlB;AAEE,MAAA,WAAW,EAAE,KAAKD;AAFpB,oBAIE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAK,MAAA,SAAS,EAAC;AAAf,kBADF,EAEGb,OAAO,CAACd,MAAR,KAAmB,CAAnB,iBACC,oBAAC,SAAD;AAAW,MAAA,cAAc,MAAzB;AAA0B,MAAA,WAAW,EAAC;AAAtC,OACG,CAAC4G,QAAD,EAAWC,QAAX,kBACC;AACE,MAAA,SAAS,EAAEnJ,UAAU,CAAC,aAAD,EAAgB,YAAhB,EAA8B;AACjD,iCAAyBmJ,QAAQ,CAACC,oBADe;AAEjD,4BAAoBD,QAAQ,CAACE,cAFoB;AAGjD,uBAAeF,QAAQ,CAACG;AAHyB,OAA9B,CADvB;AAME,MAAA,GAAG,EAAEJ,QAAQ,CAACK,QANhB,CAOE;;AAPF,OAQML,QAAQ,CAACM,cARf,oFAFJ,CAHJ,EAqBGpG,OAAO,CAACd,MAAR,GAAiB,CAAjB,iBACC,oBAAC,iBAAD;AACE,MAAA,qBAAqB,EAAC,mCADxB;AAEE,MAAA,eAAe,EAAEhB,eAFnB;AAGE,MAAA,WAAW,EAAEA,eAHf;AAIE,MAAA,SAAS,EAAE8B,OAAO,CAACd,MAJrB;AAKE,MAAA,KAAK,EAAEc,OALT;AAME,MAAA,MAAM,EAAE,CANV;AAOE,MAAA,iBAAiB,EAAE,KAAKe,4BAP1B;AAQE,MAAA,GAAG,EAAE,KAAKQ,WARZ;AASE,MAAA,UAAU,EAAE,KAAKH,iBATnB;AAUE,MAAA,cAAc,EAAES,qBAVlB;AAWE,MAAA,KAAK,EAAE;AAAEwE,QAAAA,MAAM,EAAEb;AAAV,OAXT;AAYE,MAAA,aAAa;AAZf,MAtBJ,CAJF,eA0CE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAK,MAAA,SAAS,EAAC;AAAf,oCADF,eAEE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,oBAAC,WAAD;AACE,MAAA,SAAS,EAAC,OADZ;AAEE,MAAA,KAAK,EAAE1D,YAFT;AAGE,MAAA,UAAU,EACRA,YAAY,GAAGF,uBAAuB,CAAC1C,MAA3B,GAAoC,IAJpD;AAME,MAAA,WAAW,EAAC,gBANd;AAOE,MAAA,QAAQ,EAAE,KAAKwB;AAPjB,MADF,eAUE,oBAAC,SAAD;AACE,MAAA,SAAS,EAAE9D,UAAU,CAAC,wBAAD,EAA2B;AAC9C0J,QAAAA,MAAM,EAAEnG,IAAI,KAAK/B,UAAU,CAACiC,IAAX,CAAgBC;AADa,OAA3B,CADvB;AAIE,MAAA,OAAO,EAAE,KAAKY;AAJhB,oBAME,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAE1D;AAAvB,MANF,eAOE,oBAAC,OAAD,yBAPF,CAVF,eAmBE,oBAAC,SAAD;AACE,MAAA,SAAS,EAAEZ,UAAU,CAAC,wBAAD,EAA2B;AAC9C0J,QAAAA,MAAM,EAAEnG,IAAI,KAAK/B,UAAU,CAACiC,IAAX,CAAgBuC;AADa,OAA3B,CADvB;AAIE,MAAA,OAAO,EAAE,KAAKzB;AAJhB,oBAME,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAE1D;AAAvB,MANF,eAOE,oBAAC,OAAD,0BAPF,CAnBF,CAFF,eA+BE,oBAAC,iBAAD;AACE,MAAA,SAAS,EAAC,mCADZ;AAEE,MAAA,eAAe,EAAEU,iBAFnB;AAGE,MAAA,WAAW,EAAEA,iBAHf;AAIE,MAAA,SAAS,EAAEoH,gBAAgB,CAACrG,MAJ9B;AAKE,MAAA,KAAK,EAAEqG,gBALT;AAME,MAAA,UAAU,EAAEnH,UAAU,CAACC,YANzB;AAOE,MAAA,MAAM,EAAE,CAPV;AAQE,MAAA,QAAQ,EAAE,KAAKsC,qBARjB;AASE,MAAA,iBAAiB,EAAE,KAAKC,8BAT1B;AAUE,MAAA,GAAG,EAAE,KAAKS,aAVZ;AAWE,MAAA,cAAc,EAAEO,uBAXlB;AAYE,MAAA,KAAK,EAAE;AACL2E,QAAAA,SAAS,EAAEb,oBADN;AAELc,QAAAA,SAAS,EAAEb;AAFN,OAZT;AAgBE,MAAA,cAAc,EAAE,CAAA5D,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAE8B,WAAZ,MAA4B3F,eAhB9C;AAiBE,MAAA,aAAa;AAjBf,MA/BF,eAkDE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAK,MAAA,SAAS,EAAC;AAAf,eADF,eAEE,oBAAC,QAAD;AACE,MAAA,OAAO,EAAEuD,gBADX;AAEE,MAAA,QAAQ,EAAE,KAAKT;AAFjB,sBAFF,eAQE,oBAAC,QAAD;AACE,MAAA,OAAO,EAAEU,wBADX;AAEE,MAAA,QAAQ,EAAE,KAAKT;AAFjB,gCARF,CAlDF,CA1CF,CAPF,CADF;AAuHD;;AAjgBgC;;gBAA7B7C,U,UACUqI,MAAM,CAACC,MAAP,CAAc;AAC1BpG,EAAAA,SAAS,EAAE,WADe;AAE1BsC,EAAAA,UAAU,EAAE;AAFc,CAAd,C;;AAmgBhBxE,UAAU,CAACuI,SAAX,GAAuB;AACrB3B,EAAAA,KAAK,EAAEnI,SAAS,CAAC+J,UAAV,CAAqB9I,aAArB,EAAoC+I,UADtB;AAErB/B,EAAAA,QAAQ,EAAEjI,SAAS,CAACiK,IAFC;AAGrBtF,EAAAA,MAAM,EAAE3E,SAAS,CAACkK,KAAV,CAAgB;AACtB/G,IAAAA,OAAO,EAAEnD,SAAS,CAACmK,OAAV,CAAkBnK,SAAS,CAACoK,MAA5B,CADa;AAEtBxF,IAAAA,gBAAgB,EAAE5E,SAAS,CAACqK,IAFN;AAGtBxF,IAAAA,wBAAwB,EAAE7E,SAAS,CAACqK;AAHd,GAAhB;AAHa,CAAvB;AAUA9I,UAAU,CAAC+I,YAAX,GAA0B;AACxB3F,EAAAA,MAAM,EAAE,IADgB;AAExBsD,EAAAA,QAAQ,EAAE,MAAM,CAAE;AAFM,CAA1B;AAKA,eAAe1G,UAAf","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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
23
|
-
|
|
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.
|
|
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
|
|
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
|