@deephaven/iris-grid 0.22.3-beta.15 → 0.22.3-beta.21
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.js +7 -65
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +0 -23
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +0 -52
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +2 -42
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js +0 -11
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.js +1 -20
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CrossColumnSearch.js +2 -23
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js +2 -36
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.d.ts +1 -1
- package/dist/GotoRow.d.ts.map +1 -1
- package/dist/GotoRow.js +2 -7
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.d.ts +41 -35
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +77 -519
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.d.ts +1 -1
- package/dist/IrisGridBottomBar.d.ts.map +1 -1
- package/dist/IrisGridBottomBar.js +2 -2
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +6 -21
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.js +3 -50
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +2 -12
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.js +32 -58
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.js +0 -7
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +0 -4
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js +0 -23
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.js +9 -153
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js +41 -183
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +2 -2
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +10 -90
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +2 -2
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +70 -461
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js +0 -23
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +3 -42
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +11 -5
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +98 -196
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.js +0 -7
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.js +2 -48
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +1 -1
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js +2 -7
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +2 -2
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js +3 -29
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/ToastBottomBar.d.ts +1 -1
- package/dist/ToastBottomBar.d.ts.map +1 -1
- package/dist/ToastBottomBar.js +2 -4
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/TreeTableViewportUpdater.js +0 -21
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +4 -25
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -7
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -9
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +3 -9
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -8
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.js +0 -8
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +1 -10
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +0 -11
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -32
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +4 -34
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -20
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +15 -105
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -9
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -17
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +2 -15
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +0 -6
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/mousehandlers/index.js.map +1 -1
- package/dist/sidebar/AdvancedSettings.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.d.ts +4 -4
- package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +2 -6
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsType.js +0 -2
- package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js +2 -46
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +6 -58
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +4 -15
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +5 -36
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/OptionType.js +0 -2
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/RollupRows.js +9 -65
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +0 -13
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +0 -52
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +1 -1
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +10 -123
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +3 -2
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +37 -116
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +2 -14
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationOperation.js +0 -2
- package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +2 -5
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +2 -12
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -35
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +16 -26
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +9 -172
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/icons/BarIcon.js +0 -3
- package/dist/sidebar/icons/BarIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/HistogramIcon.js +0 -3
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
- package/dist/sidebar/icons/LineIcon.js +0 -3
- package/dist/sidebar/icons/LineIcon.js.map +1 -1
- package/dist/sidebar/icons/PieIcon.js +0 -3
- package/dist/sidebar/icons/PieIcon.js.map +1 -1
- package/dist/sidebar/icons/ScatterIcon.js +0 -3
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +15 -15
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
-
|
|
3
2
|
/* eslint-disable jsx-a11y/no-noninteractive-tabindex */
|
|
4
3
|
// disabled for tab-index on focus traps, which are intentionally non-interactive
|
|
4
|
+
|
|
5
5
|
import React, { PureComponent } from 'react';
|
|
6
6
|
import classNames from 'classnames';
|
|
7
7
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
@@ -17,27 +17,19 @@ import AdvancedFilterCreatorFilterItem from "./AdvancedFilterCreatorFilterItem.j
|
|
|
17
17
|
import AdvancedFilterCreatorSelectValue from "./AdvancedFilterCreatorSelectValue.js";
|
|
18
18
|
import "./AdvancedFilterCreator.css";
|
|
19
19
|
var log = Log.module('AdvancedFilterCreator');
|
|
20
|
-
|
|
21
20
|
class AdvancedFilterCreator extends PureComponent {
|
|
22
21
|
static makeFilterItem() {
|
|
23
22
|
return {
|
|
24
23
|
key: shortid()
|
|
25
24
|
};
|
|
26
25
|
}
|
|
27
|
-
|
|
28
26
|
constructor(props) {
|
|
29
27
|
var _options$filterItems$, _options$filterItems;
|
|
30
|
-
|
|
31
28
|
super(props);
|
|
32
|
-
|
|
33
29
|
_defineProperty(this, "focusTrapContainer", void 0);
|
|
34
|
-
|
|
35
30
|
_defineProperty(this, "debounceTimeout", void 0);
|
|
36
|
-
|
|
37
31
|
_defineProperty(this, "valuesTablePromise", void 0);
|
|
38
|
-
|
|
39
32
|
_defineProperty(this, "getFilterTypes", memoize(columnType => TableUtils.getFilterTypes(columnType)));
|
|
40
|
-
|
|
41
33
|
this.handleAddAnd = this.handleAddAnd.bind(this);
|
|
42
34
|
this.handleAddOr = this.handleAddOr.bind(this);
|
|
43
35
|
this.handleChangeFilterOperator = this.handleChangeFilterOperator.bind(this);
|
|
@@ -60,8 +52,9 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
60
52
|
filterOperators,
|
|
61
53
|
invertSelection,
|
|
62
54
|
selectedValues
|
|
63
|
-
} = options;
|
|
55
|
+
} = options;
|
|
64
56
|
|
|
57
|
+
// can be null or an empty array
|
|
65
58
|
var filterItems = (_options$filterItems$ = (_options$filterItems = options.filterItems) === null || _options$filterItems === void 0 ? void 0 : _options$filterItems.map(_ref => {
|
|
66
59
|
var {
|
|
67
60
|
selectedType,
|
|
@@ -73,23 +66,18 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
73
66
|
key: shortid()
|
|
74
67
|
};
|
|
75
68
|
})) !== null && _options$filterItems$ !== void 0 ? _options$filterItems$ : [];
|
|
76
|
-
|
|
77
69
|
if (filterItems.length === 0) {
|
|
78
70
|
filterItems.push(AdvancedFilterCreator.makeFilterItem());
|
|
79
71
|
}
|
|
80
|
-
|
|
81
72
|
if (filterOperators == null) {
|
|
82
73
|
filterOperators = [];
|
|
83
74
|
}
|
|
84
|
-
|
|
85
75
|
if (invertSelection == null) {
|
|
86
76
|
invertSelection = true;
|
|
87
77
|
}
|
|
88
|
-
|
|
89
78
|
if (selectedValues == null) {
|
|
90
79
|
selectedValues = [];
|
|
91
80
|
}
|
|
92
|
-
|
|
93
81
|
this.state = {
|
|
94
82
|
// Filter items
|
|
95
83
|
filterItems,
|
|
@@ -101,41 +89,33 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
101
89
|
valuesTable: undefined
|
|
102
90
|
};
|
|
103
91
|
}
|
|
104
|
-
|
|
105
92
|
componentDidMount() {
|
|
106
93
|
this.initValuesTable();
|
|
107
94
|
}
|
|
108
|
-
|
|
109
95
|
componentWillUnmount() {
|
|
110
96
|
if (this.debounceTimeout != null) {
|
|
111
97
|
clearTimeout(this.debounceTimeout);
|
|
112
98
|
this.sendUpdate();
|
|
113
99
|
}
|
|
114
|
-
|
|
115
100
|
if (this.valuesTablePromise != null) {
|
|
116
101
|
this.valuesTablePromise.cancel();
|
|
117
102
|
}
|
|
118
103
|
}
|
|
119
|
-
|
|
120
104
|
getFilterChangeHandler(index) {
|
|
121
105
|
return this.handleFilterChange.bind(this, index);
|
|
122
106
|
}
|
|
123
|
-
|
|
124
107
|
getFilterDeleteHandler(index) {
|
|
125
108
|
return this.handleFilterDelete.bind(this, index);
|
|
126
109
|
}
|
|
127
|
-
|
|
128
110
|
initValuesTable() {
|
|
129
111
|
var {
|
|
130
112
|
model,
|
|
131
113
|
column
|
|
132
114
|
} = this.props;
|
|
133
|
-
|
|
134
115
|
if (!model.isValuesTableAvailable) {
|
|
135
116
|
log.debug('No values table for this model, just ignore');
|
|
136
117
|
return;
|
|
137
118
|
}
|
|
138
|
-
|
|
139
119
|
this.valuesTablePromise = TableUtils.makeCancelableTablePromise(model.valuesTable(column));
|
|
140
120
|
this.valuesTablePromise.then(valuesTable => {
|
|
141
121
|
var sort = valuesTable.columns[0].sort().asc();
|
|
@@ -147,31 +127,24 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
147
127
|
if (PromiseUtils.isCanceled(error)) {
|
|
148
128
|
return;
|
|
149
129
|
}
|
|
150
|
-
|
|
151
130
|
log.error('Unable to open values table', error);
|
|
152
131
|
this.setState({
|
|
153
132
|
valuesTableError: error
|
|
154
133
|
});
|
|
155
134
|
});
|
|
156
135
|
}
|
|
157
|
-
|
|
158
136
|
handleFocusTrapEnd() {
|
|
159
137
|
var _this$focusTrapContai, _this$focusTrapContai2;
|
|
160
|
-
|
|
161
138
|
((_this$focusTrapContai = this.focusTrapContainer) === null || _this$focusTrapContai === void 0 ? void 0 : (_this$focusTrapContai2 = _this$focusTrapContai.current) === null || _this$focusTrapContai2 === void 0 ? void 0 : _this$focusTrapContai2.querySelector('button,select,input,textarea')).focus();
|
|
162
139
|
}
|
|
163
|
-
|
|
164
140
|
handleFocusTrapStart() {
|
|
165
141
|
var _this$focusTrapContai3, _this$focusTrapContai4;
|
|
166
|
-
|
|
167
142
|
var inputs = (_this$focusTrapContai3 = this.focusTrapContainer) === null || _this$focusTrapContai3 === void 0 ? void 0 : (_this$focusTrapContai4 = _this$focusTrapContai3.current) === null || _this$focusTrapContai4 === void 0 ? void 0 : _this$focusTrapContai4.querySelectorAll('button,select,input,textarea');
|
|
168
|
-
|
|
169
143
|
if (inputs && inputs.length > 0) {
|
|
170
144
|
var element = inputs[inputs.length - 1];
|
|
171
145
|
element.focus();
|
|
172
146
|
}
|
|
173
147
|
}
|
|
174
|
-
|
|
175
148
|
handleAddAnd() {
|
|
176
149
|
var {
|
|
177
150
|
filterItems,
|
|
@@ -184,7 +157,6 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
184
157
|
filterOperators
|
|
185
158
|
});
|
|
186
159
|
}
|
|
187
|
-
|
|
188
160
|
handleAddOr() {
|
|
189
161
|
var {
|
|
190
162
|
filterItems,
|
|
@@ -197,7 +169,6 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
197
169
|
filterOperators
|
|
198
170
|
});
|
|
199
171
|
}
|
|
200
|
-
|
|
201
172
|
handleChangeFilterOperator(index, operator) {
|
|
202
173
|
var {
|
|
203
174
|
filterOperators
|
|
@@ -210,7 +181,6 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
210
181
|
});
|
|
211
182
|
this.startUpdateTimer();
|
|
212
183
|
}
|
|
213
|
-
|
|
214
184
|
handleFilterChange(filterIndex, selectedType, value) {
|
|
215
185
|
var {
|
|
216
186
|
filterItems
|
|
@@ -229,7 +199,6 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
229
199
|
});
|
|
230
200
|
this.startUpdateTimer();
|
|
231
201
|
}
|
|
232
|
-
|
|
233
202
|
handleFilterDelete(filterIndex) {
|
|
234
203
|
var {
|
|
235
204
|
filterItems,
|
|
@@ -237,29 +206,24 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
237
206
|
} = this.state;
|
|
238
207
|
filterItems = [...filterItems];
|
|
239
208
|
filterOperators = [...filterOperators];
|
|
240
|
-
|
|
241
209
|
if (filterIndex < filterItems.length) {
|
|
242
210
|
filterItems.splice(filterIndex, 1);
|
|
243
211
|
}
|
|
244
|
-
|
|
245
212
|
if (filterIndex < filterOperators.length) {
|
|
246
213
|
filterOperators.splice(filterIndex, 1);
|
|
247
214
|
} else if (filterIndex === filterOperators.length) {
|
|
248
215
|
// When deleting the last filter item, we also need to remove the last filter operator
|
|
249
216
|
filterOperators.splice(filterOperators.length - 1, 1);
|
|
250
217
|
}
|
|
251
|
-
|
|
252
218
|
if (filterItems.length === 0) {
|
|
253
219
|
filterItems.push(AdvancedFilterCreator.makeFilterItem());
|
|
254
220
|
}
|
|
255
|
-
|
|
256
221
|
this.setState({
|
|
257
222
|
filterItems,
|
|
258
223
|
filterOperators
|
|
259
224
|
});
|
|
260
225
|
this.startUpdateTimer();
|
|
261
226
|
}
|
|
262
|
-
|
|
263
227
|
handleSelectValueChange(selectedValues, invertSelection) {
|
|
264
228
|
this.setState({
|
|
265
229
|
selectedValues,
|
|
@@ -267,7 +231,6 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
267
231
|
});
|
|
268
232
|
this.startUpdateTimer();
|
|
269
233
|
}
|
|
270
|
-
|
|
271
234
|
handleReset() {
|
|
272
235
|
log.debug('Resetting Advanced Filter');
|
|
273
236
|
this.setState({
|
|
@@ -278,24 +241,20 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
278
241
|
});
|
|
279
242
|
this.startUpdateTimer();
|
|
280
243
|
}
|
|
281
|
-
|
|
282
244
|
handleSortDown(event) {
|
|
283
245
|
var addToExisting = ContextActionUtils.isModifierKeyDown(event);
|
|
284
246
|
this.sortTable(TableUtils.sortDirection.descending, addToExisting);
|
|
285
247
|
}
|
|
286
|
-
|
|
287
248
|
handleSortUp(event) {
|
|
288
249
|
var addToExisting = ContextActionUtils.isModifierKeyDown(event);
|
|
289
250
|
this.sortTable(TableUtils.sortDirection.ascending, addToExisting);
|
|
290
251
|
}
|
|
291
|
-
|
|
292
252
|
handleSubmit(event) {
|
|
293
253
|
log.debug('Submitting Advanced Filter');
|
|
294
254
|
this.stopUpdateTimer();
|
|
295
255
|
this.sendUpdate();
|
|
296
256
|
event.preventDefault();
|
|
297
257
|
}
|
|
298
|
-
|
|
299
258
|
handleDone(event) {
|
|
300
259
|
log.debug('Submitting and Closing Advanced Filter');
|
|
301
260
|
this.stopUpdateTimer();
|
|
@@ -306,27 +265,23 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
306
265
|
onDone();
|
|
307
266
|
event.preventDefault();
|
|
308
267
|
}
|
|
309
|
-
|
|
310
268
|
handleUpdateTimeout() {
|
|
311
269
|
this.debounceTimeout = undefined;
|
|
312
270
|
this.sendUpdate();
|
|
313
271
|
}
|
|
272
|
+
|
|
314
273
|
/**
|
|
315
274
|
* Convenience function to check if the previous filter has been inputted, and
|
|
316
275
|
* we should show the add filter buttons (+ AND OR)
|
|
317
276
|
* @returns true If the add filter buttons should be shown, false otherwise
|
|
318
277
|
*/
|
|
319
|
-
|
|
320
|
-
|
|
321
278
|
shouldShowAddFilter() {
|
|
322
279
|
var {
|
|
323
280
|
filterItems
|
|
324
281
|
} = this.state;
|
|
325
|
-
|
|
326
282
|
if (filterItems.length === 0) {
|
|
327
283
|
return false;
|
|
328
284
|
}
|
|
329
|
-
|
|
330
285
|
var filterItem = filterItems[filterItems.length - 1];
|
|
331
286
|
var {
|
|
332
287
|
selectedType,
|
|
@@ -334,13 +289,12 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
334
289
|
} = filterItem;
|
|
335
290
|
return selectedType != null && selectedType.length > 0 && value != null && value.length > 0;
|
|
336
291
|
}
|
|
292
|
+
|
|
337
293
|
/**
|
|
338
294
|
* Sorts the table in the specified direction. If already sorted in that direction, remove it.
|
|
339
295
|
* @param direction The sort direction, ASC or DESC
|
|
340
296
|
* @param addToExisting Add to the existing sort, or replace the existing table sort
|
|
341
297
|
*/
|
|
342
|
-
|
|
343
|
-
|
|
344
298
|
sortTable(direction) {
|
|
345
299
|
var addToExisting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
346
300
|
var {
|
|
@@ -349,19 +303,16 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
349
303
|
} = this.props;
|
|
350
304
|
onSortChange(column, direction, addToExisting);
|
|
351
305
|
}
|
|
352
|
-
|
|
353
306
|
startUpdateTimer() {
|
|
354
307
|
this.stopUpdateTimer();
|
|
355
308
|
this.debounceTimeout = setTimeout(this.handleUpdateTimeout, AdvancedFilterCreator.debounceFilterUpdate);
|
|
356
309
|
}
|
|
357
|
-
|
|
358
310
|
stopUpdateTimer() {
|
|
359
311
|
if (this.debounceTimeout !== undefined) {
|
|
360
312
|
clearTimeout(this.debounceTimeout);
|
|
361
313
|
this.debounceTimeout = undefined;
|
|
362
314
|
}
|
|
363
315
|
}
|
|
364
|
-
|
|
365
316
|
sendUpdate() {
|
|
366
317
|
var {
|
|
367
318
|
filterItems,
|
|
@@ -384,7 +335,8 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
384
335
|
} = _ref2;
|
|
385
336
|
return selectedType != null && value != null && value !== '';
|
|
386
337
|
});
|
|
387
|
-
var operators = filterOperators.filter((operator, i) => operator != null && filterItems[i].selectedType != null && filterItems[i].value != null && filterItems[i].value !== '').slice(0, items.length - 1);
|
|
338
|
+
var operators = filterOperators.filter((operator, i) => operator != null && filterItems[i].selectedType != null && filterItems[i].value != null && filterItems[i].value !== '').slice(0, items.length - 1);
|
|
339
|
+
// slice last operator, user may have set an operator but not a value
|
|
388
340
|
|
|
389
341
|
var options = {
|
|
390
342
|
filterItems: items,
|
|
@@ -395,10 +347,8 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
395
347
|
var filter = TableUtils.makeAdvancedFilter(column, options, formatter.timeZone);
|
|
396
348
|
onFilterChange(column, filter, options);
|
|
397
349
|
}
|
|
398
|
-
|
|
399
350
|
render() {
|
|
400
351
|
var _this = this;
|
|
401
|
-
|
|
402
352
|
var {
|
|
403
353
|
column,
|
|
404
354
|
model,
|
|
@@ -421,7 +371,6 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
421
371
|
var filterTypes = this.getFilterTypes(column.type);
|
|
422
372
|
var columnType = column.type.substring(column.type.lastIndexOf('.') + 1);
|
|
423
373
|
var filterItemElements = [];
|
|
424
|
-
|
|
425
374
|
if (!isBoolean && filterTypes.length) {
|
|
426
375
|
var _loop = function _loop(i) {
|
|
427
376
|
var filterItem = filterItems[i];
|
|
@@ -441,7 +390,6 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
441
390
|
formatter: formatter
|
|
442
391
|
});
|
|
443
392
|
filterItemElements.push(element);
|
|
444
|
-
|
|
445
393
|
if (i < filterOperators.length) {
|
|
446
394
|
var filterOperator = filterOperators[i];
|
|
447
395
|
var isAndFilter = filterOperator === FilterOperator.and;
|
|
@@ -464,12 +412,10 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
464
412
|
filterItemElements.push(operatorElement);
|
|
465
413
|
}
|
|
466
414
|
};
|
|
467
|
-
|
|
468
415
|
for (var i = 0; i < filterItems.length; i += 1) {
|
|
469
416
|
_loop(i);
|
|
470
417
|
}
|
|
471
418
|
}
|
|
472
|
-
|
|
473
419
|
var showAddFilterItem = this.shouldShowAddFilter();
|
|
474
420
|
var addFilterItem = /*#__PURE__*/React.createElement("div", {
|
|
475
421
|
key: "addFilterItem",
|
|
@@ -556,11 +502,8 @@ class AdvancedFilterCreator extends PureComponent {
|
|
|
556
502
|
onFocus: this.handleFocusTrapEnd
|
|
557
503
|
}));
|
|
558
504
|
}
|
|
559
|
-
|
|
560
505
|
}
|
|
561
|
-
|
|
562
506
|
_defineProperty(AdvancedFilterCreator, "debounceFilterUpdate", 250);
|
|
563
|
-
|
|
564
507
|
_defineProperty(AdvancedFilterCreator, "defaultProps", {
|
|
565
508
|
options: {
|
|
566
509
|
filterItems: null,
|
|
@@ -570,6 +513,5 @@ _defineProperty(AdvancedFilterCreator, "defaultProps", {
|
|
|
570
513
|
},
|
|
571
514
|
sortDirection: null
|
|
572
515
|
});
|
|
573
|
-
|
|
574
516
|
export default AdvancedFilterCreator;
|
|
575
517
|
//# sourceMappingURL=AdvancedFilterCreator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreator.js","names":["React","PureComponent","classNames","FontAwesomeIcon","memoize","Operator","FilterOperator","assertOperatorValue","assertFilterOperatorValue","dhSortAmountDown","dhNewCircleLargeFilled","TableUtils","Button","ContextActionUtils","Log","PromiseUtils","shortid","AdvancedFilterCreatorFilterItem","AdvancedFilterCreatorSelectValue","log","module","AdvancedFilterCreator","makeFilterItem","key","constructor","props","columnType","getFilterTypes","handleAddAnd","bind","handleAddOr","handleChangeFilterOperator","handleDone","handleFilterChange","handleFilterDelete","handleSelectValueChange","handleReset","handleSortDown","handleSortUp","handleSubmit","handleFocusTrapStart","handleFocusTrapEnd","handleUpdateTimeout","focusTrapContainer","createRef","options","filterOperators","invertSelection","selectedValues","filterItems","map","selectedType","value","length","push","state","valuesTableError","valuesTable","undefined","componentDidMount","initValuesTable","componentWillUnmount","debounceTimeout","clearTimeout","sendUpdate","valuesTablePromise","cancel","getFilterChangeHandler","index","getFilterDeleteHandler","model","column","isValuesTableAvailable","debug","makeCancelableTablePromise","then","sort","columns","asc","applySort","setState","catch","error","isCanceled","current","querySelector","focus","inputs","querySelectorAll","element","concat","and","or","operator","startUpdateTimer","filterIndex","splice","event","addToExisting","isModifierKeyDown","sortTable","sortDirection","descending","ascending","stopUpdateTimer","preventDefault","onDone","shouldShowAddFilter","filterItem","direction","onSortChange","setTimeout","debounceFilterUpdate","onFilterChange","formatter","items","filter","operators","i","slice","makeAdvancedFilter","timeZone","render","isBoolean","isBooleanType","type","isDateType","filterTypes","substring","lastIndexOf","filterItemElements","filterOperator","isAndFilter","operatorElement","active","showAddFilterItem","addFilterItem","hidden","name"],"sources":["../src/AdvancedFilterCreator.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n// disabled for tab-index on focus traps, which are intentionally non-interactive\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport memoize from 'memoize-one';\nimport {\n Operator as FilterOperator,\n OperatorValue as FilterOperatorValue,\n TypeValue as FilterTypeValue,\n assertOperatorValue as assertFilterOperatorValue,\n} from '@deephaven/filters';\nimport { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';\nimport {\n Formatter,\n TableUtils,\n SortDirection,\n FilterItem,\n} from '@deephaven/jsapi-utils';\nimport { Button, ContextActionUtils } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { CancelablePromise, PromiseUtils } from '@deephaven/utils';\nimport { Column, FilterCondition, Table } from '@deephaven/jsapi-shim';\nimport shortid from 'shortid';\nimport AdvancedFilterCreatorFilterItem from './AdvancedFilterCreatorFilterItem';\nimport AdvancedFilterCreatorSelectValue from './AdvancedFilterCreatorSelectValue';\nimport './AdvancedFilterCreator.scss';\nimport IrisGridModel from './IrisGridModel';\nimport { AdvancedFilterOptions } from './CommonTypes';\n\nconst log = Log.module('AdvancedFilterCreator');\n\ntype FilterChangeHandler = (\n selectedType: FilterTypeValue,\n value: string\n) => void;\n\ninterface AdvancedFilterCreatorProps {\n model: IrisGridModel;\n column: Column;\n onFilterChange: (\n column: Column,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ) => void;\n onSortChange: (\n column: Column,\n direction: SortDirection,\n addToExisting?: boolean\n ) => void;\n onDone: () => void;\n options: AdvancedFilterOptions;\n sortDirection: SortDirection;\n formatter: Formatter;\n}\n\ninterface AdvancedFilterItem {\n selectedType?: FilterTypeValue;\n value?: string;\n key: string;\n}\n\ninterface AdvancedFilterCreatorState {\n // Filter items\n filterItems: AdvancedFilterItem[];\n\n // And/Or between the filter items\n filterOperators: FilterOperatorValue[];\n\n invertSelection: boolean;\n\n selectedValues: unknown[];\n\n valuesTableError: null;\n valuesTable?: Table;\n}\n\nclass AdvancedFilterCreator extends PureComponent<\n AdvancedFilterCreatorProps,\n AdvancedFilterCreatorState\n> {\n static debounceFilterUpdate = 250;\n\n static defaultProps = {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: [],\n },\n sortDirection: null,\n };\n\n static makeFilterItem(): AdvancedFilterItem {\n return { key: shortid() };\n }\n\n constructor(props: AdvancedFilterCreatorProps) {\n super(props);\n\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator = this.handleChangeFilterOperator.bind(\n this\n );\n this.handleDone = this.handleDone.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterDelete = this.handleFilterDelete.bind(this);\n this.handleSelectValueChange = this.handleSelectValueChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSortDown = this.handleSortDown.bind(this);\n this.handleSortUp = this.handleSortUp.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleFocusTrapStart = this.handleFocusTrapStart.bind(this);\n this.handleFocusTrapEnd = this.handleFocusTrapEnd.bind(this);\n this.handleUpdateTimeout = this.handleUpdateTimeout.bind(this);\n\n this.focusTrapContainer = React.createRef();\n\n const { options } = props;\n let { filterOperators, invertSelection, selectedValues } = options;\n\n // can be null or an empty array\n const filterItems: AdvancedFilterItem[] =\n options.filterItems?.map(({ selectedType, value }) => ({\n selectedType,\n value,\n key: shortid(),\n })) ?? [];\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n if (filterOperators == null) {\n filterOperators = [];\n }\n if (invertSelection == null) {\n invertSelection = true;\n }\n if (selectedValues == null) {\n selectedValues = [];\n }\n\n this.state = {\n // Filter items\n filterItems,\n\n // And/Or between the filter items\n filterOperators,\n\n invertSelection,\n\n selectedValues,\n\n valuesTableError: null,\n valuesTable: undefined,\n };\n }\n\n componentDidMount(): void {\n this.initValuesTable();\n }\n\n componentWillUnmount(): void {\n if (this.debounceTimeout != null) {\n clearTimeout(this.debounceTimeout);\n this.sendUpdate();\n }\n if (this.valuesTablePromise != null) {\n this.valuesTablePromise.cancel();\n }\n }\n\n focusTrapContainer: React.RefObject<HTMLFormElement>;\n\n debounceTimeout?: ReturnType<typeof setTimeout>;\n\n valuesTablePromise?: CancelablePromise<Table>;\n\n getFilterChangeHandler(index: number): FilterChangeHandler {\n return this.handleFilterChange.bind(this, index);\n }\n\n getFilterDeleteHandler(index: number): () => void {\n return this.handleFilterDelete.bind(this, index);\n }\n\n getFilterTypes = memoize((columnType: string): FilterTypeValue[] =>\n TableUtils.getFilterTypes(columnType)\n );\n\n initValuesTable(): void {\n const { model, column } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(\n model.valuesTable(column)\n );\n this.valuesTablePromise\n .then(valuesTable => {\n const sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n\n this.setState({ valuesTable });\n })\n .catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error('Unable to open values table', error);\n this.setState({ valuesTableError: error });\n });\n }\n\n handleFocusTrapEnd(): void {\n (this.focusTrapContainer?.current?.querySelector(\n 'button,select,input,textarea'\n ) as HTMLElement).focus();\n }\n\n handleFocusTrapStart(): void {\n const inputs = this.focusTrapContainer?.current?.querySelectorAll(\n 'button,select,input,textarea'\n );\n if (inputs && inputs.length > 0) {\n const element = inputs[inputs.length - 1] as HTMLElement;\n element.focus();\n }\n }\n\n handleAddAnd(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({ filterItems, filterOperators });\n }\n\n handleAddOr(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({ filterItems, filterOperators });\n }\n\n handleChangeFilterOperator(index: number, operator: string): void {\n let { filterOperators } = this.state;\n filterOperators = [...filterOperators];\n\n assertFilterOperatorValue(operator);\n\n filterOperators[index] = operator;\n\n this.setState({ filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleFilterChange(\n filterIndex: number,\n selectedType: FilterTypeValue,\n value: string\n ): void {\n let { filterItems } = this.state;\n filterItems = [...filterItems];\n const { key } = filterItems[filterIndex];\n filterItems[filterIndex] = { key, selectedType, value };\n\n this.setState({ filterItems });\n\n this.startUpdateTimer();\n }\n\n handleFilterDelete(filterIndex: number): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = [...filterItems];\n filterOperators = [...filterOperators];\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\n }\n\n if (filterIndex < filterOperators.length) {\n filterOperators.splice(filterIndex, 1);\n } else if (filterIndex === filterOperators.length) {\n // When deleting the last filter item, we also need to remove the last filter operator\n filterOperators.splice(filterOperators.length - 1, 1);\n }\n\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n\n this.setState({ filterItems, filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleSelectValueChange(\n selectedValues: unknown[],\n invertSelection: boolean\n ): void {\n this.setState({ selectedValues, invertSelection });\n\n this.startUpdateTimer();\n }\n\n handleReset(): void {\n log.debug('Resetting Advanced Filter');\n\n this.setState({\n filterItems: [AdvancedFilterCreator.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true,\n });\n\n this.startUpdateTimer();\n }\n\n handleSortDown(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n\n handleSortUp(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n event.preventDefault();\n }\n\n handleDone(event: React.MouseEvent<HTMLButtonElement>): void {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n const { onDone } = this.props;\n onDone();\n\n event.preventDefault();\n }\n\n handleUpdateTimeout(): void {\n this.debounceTimeout = undefined;\n this.sendUpdate();\n }\n\n /**\n * Convenience function to check if the previous filter has been inputted, and\n * we should show the add filter buttons (+ AND OR)\n * @returns true If the add filter buttons should be shown, false otherwise\n */\n shouldShowAddFilter(): boolean {\n const { filterItems } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n\n const filterItem = filterItems[filterItems.length - 1];\n const { selectedType, value } = filterItem;\n\n return (\n selectedType != null &&\n selectedType.length > 0 &&\n value != null &&\n value.length > 0\n );\n }\n\n /**\n * Sorts the table in the specified direction. If already sorted in that direction, remove it.\n * @param direction The sort direction, ASC or DESC\n * @param addToExisting Add to the existing sort, or replace the existing table sort\n */\n sortTable(direction: SortDirection, addToExisting = false): void {\n const { column, onSortChange } = this.props;\n onSortChange(column, direction, addToExisting);\n }\n\n startUpdateTimer(): void {\n this.stopUpdateTimer();\n\n this.debounceTimeout = setTimeout(\n this.handleUpdateTimeout,\n AdvancedFilterCreator.debounceFilterUpdate\n );\n }\n\n stopUpdateTimer(): void {\n if (this.debounceTimeout !== undefined) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = undefined;\n }\n }\n\n sendUpdate(): void {\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n } = this.state;\n const { column, onFilterChange, model } = this.props;\n const { formatter } = model;\n\n const items = filterItems.filter(\n ({ selectedType, value }) =>\n selectedType != null && value != null && value !== ''\n ) as FilterItem[];\n\n const operators = filterOperators\n .filter(\n (operator, i) =>\n operator != null &&\n filterItems[i].selectedType != null &&\n filterItems[i].value != null &&\n filterItems[i].value !== ''\n )\n .slice(0, items.length - 1);\n // slice last operator, user may have set an operator but not a value\n\n const options = {\n filterItems: items,\n filterOperators: operators,\n invertSelection,\n selectedValues,\n };\n\n const filter = TableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n\n onFilterChange(column, filter, options);\n }\n\n render(): JSX.Element {\n const { column, model, sortDirection, formatter } = this.props;\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n } = this.state;\n const { isValuesTableAvailable } = model;\n const isBoolean = TableUtils.isBooleanType(column.type);\n const isDateType = TableUtils.isDateType(column.type);\n const filterTypes = this.getFilterTypes(column.type);\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n for (let i = 0; i < filterItems.length; i += 1) {\n const filterItem = filterItems[i];\n const { key, selectedType, value } = filterItem;\n\n const element = (\n <AdvancedFilterCreatorFilterItem\n key={key}\n column={column}\n filterTypes={filterTypes}\n onChange={this.getFilterChangeHandler(i)}\n onDelete={this.getFilterDeleteHandler(i)}\n selectedType={selectedType}\n value={value}\n formatter={formatter}\n />\n );\n filterItemElements.push(element);\n\n if (i < filterOperators.length) {\n const filterOperator = filterOperators[i];\n const isAndFilter = filterOperator === FilterOperator.and;\n const operatorElement = (\n <div\n key={`filterOperator${key}`}\n className=\"form-row justify-content-end advanced-filter-creator-filter-operator\"\n >\n <Button\n kind=\"ghost\"\n className={classNames('filter-operator', {\n active: isAndFilter,\n })}\n onClick={() =>\n this.handleChangeFilterOperator(i, FilterOperator.and)\n }\n >\n AND\n </Button>\n <Button\n kind=\"ghost\"\n className={classNames('filter-operator', {\n active: !isAndFilter,\n })}\n onClick={() =>\n this.handleChangeFilterOperator(i, FilterOperator.or)\n }\n >\n OR\n </Button>\n </div>\n );\n filterItemElements.push(operatorElement);\n }\n }\n }\n const showAddFilterItem = this.shouldShowAddFilter();\n const addFilterItem = (\n <div\n key=\"addFilterItem\"\n className={classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem,\n })}\n >\n <span className=\"text-muted\">\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n </span>\n <Button\n kind=\"ghost\"\n className=\"btn-filter-item\"\n onClick={this.handleAddAnd}\n disabled={!showAddFilterItem}\n tooltip=\"Add filter with AND\"\n >\n AND\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-filter-item\"\n onClick={this.handleAddOr}\n disabled={!showAddFilterItem}\n tooltip=\"Add filter with OR\"\n >\n OR\n </Button>\n </div>\n );\n filterItemElements.push(addFilterItem);\n\n return (\n <div className=\"advanced-filter-creator\" role=\"presentation\">\n <div tabIndex={0} onFocus={this.handleFocusTrapStart} />\n <form onSubmit={this.handleSubmit} ref={this.focusTrapContainer}>\n <div className=\"title-bar\">\n <h6 className=\"advanced-filter-title\">Advanced Filters</h6>\n <div className=\"advanced-filter-menu-buttons\">\n <Button\n kind=\"ghost\"\n className={classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.descending,\n })}\n onClick={this.handleSortDown}\n icon={dhSortAmountDown}\n tooltip={`Sort ${column.name} Descending`}\n />\n <Button\n kind=\"ghost\"\n className={classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.ascending,\n })}\n onClick={this.handleSortUp}\n icon={\n <FontAwesomeIcon icon={dhSortAmountDown} rotation={180} />\n }\n tooltip={`Sort ${column.name} Ascending`}\n />\n </div>\n </div>\n <hr />\n <div className=\"advanced-filter-column-name\">\n {column.name} \n <span className=\"column-type\">({columnType})</span>\n </div>\n {filterItemElements}\n {isValuesTableAvailable && valuesTableError == null && (\n <>\n {!isBoolean && <hr />}\n <div className=\"form-group\">\n <AdvancedFilterCreatorSelectValue<unknown>\n table={valuesTable}\n onChange={this.handleSelectValueChange}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n showSearch={!isDateType}\n timeZone={formatter.timeZone}\n />\n </div>\n </>\n )}\n <div className=\"form-row justify-content-end\">\n <Button\n kind=\"secondary\"\n className=\"mr-2\"\n onClick={this.handleReset}\n >\n Reset\n </Button>\n <Button kind=\"primary\" onClick={this.handleDone}>\n Done\n </Button>\n </div>\n </form>\n <div tabIndex={0} onFocus={this.handleFocusTrapEnd} />\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreator;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreator.js","names":["React","PureComponent","classNames","FontAwesomeIcon","memoize","Operator","FilterOperator","assertOperatorValue","assertFilterOperatorValue","dhSortAmountDown","dhNewCircleLargeFilled","TableUtils","Button","ContextActionUtils","Log","PromiseUtils","shortid","AdvancedFilterCreatorFilterItem","AdvancedFilterCreatorSelectValue","log","module","AdvancedFilterCreator","makeFilterItem","key","constructor","props","columnType","getFilterTypes","handleAddAnd","bind","handleAddOr","handleChangeFilterOperator","handleDone","handleFilterChange","handleFilterDelete","handleSelectValueChange","handleReset","handleSortDown","handleSortUp","handleSubmit","handleFocusTrapStart","handleFocusTrapEnd","handleUpdateTimeout","focusTrapContainer","createRef","options","filterOperators","invertSelection","selectedValues","filterItems","map","selectedType","value","length","push","state","valuesTableError","valuesTable","undefined","componentDidMount","initValuesTable","componentWillUnmount","debounceTimeout","clearTimeout","sendUpdate","valuesTablePromise","cancel","getFilterChangeHandler","index","getFilterDeleteHandler","model","column","isValuesTableAvailable","debug","makeCancelableTablePromise","then","sort","columns","asc","applySort","setState","catch","error","isCanceled","current","querySelector","focus","inputs","querySelectorAll","element","concat","and","or","operator","startUpdateTimer","filterIndex","splice","event","addToExisting","isModifierKeyDown","sortTable","sortDirection","descending","ascending","stopUpdateTimer","preventDefault","onDone","shouldShowAddFilter","filterItem","direction","onSortChange","setTimeout","debounceFilterUpdate","onFilterChange","formatter","items","filter","operators","i","slice","makeAdvancedFilter","timeZone","render","isBoolean","isBooleanType","type","isDateType","filterTypes","substring","lastIndexOf","filterItemElements","filterOperator","isAndFilter","operatorElement","active","showAddFilterItem","addFilterItem","hidden","name"],"sources":["../src/AdvancedFilterCreator.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n// disabled for tab-index on focus traps, which are intentionally non-interactive\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport memoize from 'memoize-one';\nimport {\n Operator as FilterOperator,\n OperatorValue as FilterOperatorValue,\n TypeValue as FilterTypeValue,\n assertOperatorValue as assertFilterOperatorValue,\n} from '@deephaven/filters';\nimport { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';\nimport {\n Formatter,\n TableUtils,\n SortDirection,\n FilterItem,\n} from '@deephaven/jsapi-utils';\nimport { Button, ContextActionUtils } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { CancelablePromise, PromiseUtils } from '@deephaven/utils';\nimport { Column, FilterCondition, Table } from '@deephaven/jsapi-shim';\nimport shortid from 'shortid';\nimport AdvancedFilterCreatorFilterItem from './AdvancedFilterCreatorFilterItem';\nimport AdvancedFilterCreatorSelectValue from './AdvancedFilterCreatorSelectValue';\nimport './AdvancedFilterCreator.scss';\nimport IrisGridModel from './IrisGridModel';\nimport { AdvancedFilterOptions } from './CommonTypes';\n\nconst log = Log.module('AdvancedFilterCreator');\n\ntype FilterChangeHandler = (\n selectedType: FilterTypeValue,\n value: string\n) => void;\n\ninterface AdvancedFilterCreatorProps {\n model: IrisGridModel;\n column: Column;\n onFilterChange: (\n column: Column,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ) => void;\n onSortChange: (\n column: Column,\n direction: SortDirection,\n addToExisting?: boolean\n ) => void;\n onDone: () => void;\n options: AdvancedFilterOptions;\n sortDirection: SortDirection;\n formatter: Formatter;\n}\n\ninterface AdvancedFilterItem {\n selectedType?: FilterTypeValue;\n value?: string;\n key: string;\n}\n\ninterface AdvancedFilterCreatorState {\n // Filter items\n filterItems: AdvancedFilterItem[];\n\n // And/Or between the filter items\n filterOperators: FilterOperatorValue[];\n\n invertSelection: boolean;\n\n selectedValues: unknown[];\n\n valuesTableError: null;\n valuesTable?: Table;\n}\n\nclass AdvancedFilterCreator extends PureComponent<\n AdvancedFilterCreatorProps,\n AdvancedFilterCreatorState\n> {\n static debounceFilterUpdate = 250;\n\n static defaultProps = {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: [],\n },\n sortDirection: null,\n };\n\n static makeFilterItem(): AdvancedFilterItem {\n return { key: shortid() };\n }\n\n constructor(props: AdvancedFilterCreatorProps) {\n super(props);\n\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator = this.handleChangeFilterOperator.bind(\n this\n );\n this.handleDone = this.handleDone.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterDelete = this.handleFilterDelete.bind(this);\n this.handleSelectValueChange = this.handleSelectValueChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSortDown = this.handleSortDown.bind(this);\n this.handleSortUp = this.handleSortUp.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleFocusTrapStart = this.handleFocusTrapStart.bind(this);\n this.handleFocusTrapEnd = this.handleFocusTrapEnd.bind(this);\n this.handleUpdateTimeout = this.handleUpdateTimeout.bind(this);\n\n this.focusTrapContainer = React.createRef();\n\n const { options } = props;\n let { filterOperators, invertSelection, selectedValues } = options;\n\n // can be null or an empty array\n const filterItems: AdvancedFilterItem[] =\n options.filterItems?.map(({ selectedType, value }) => ({\n selectedType,\n value,\n key: shortid(),\n })) ?? [];\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n if (filterOperators == null) {\n filterOperators = [];\n }\n if (invertSelection == null) {\n invertSelection = true;\n }\n if (selectedValues == null) {\n selectedValues = [];\n }\n\n this.state = {\n // Filter items\n filterItems,\n\n // And/Or between the filter items\n filterOperators,\n\n invertSelection,\n\n selectedValues,\n\n valuesTableError: null,\n valuesTable: undefined,\n };\n }\n\n componentDidMount(): void {\n this.initValuesTable();\n }\n\n componentWillUnmount(): void {\n if (this.debounceTimeout != null) {\n clearTimeout(this.debounceTimeout);\n this.sendUpdate();\n }\n if (this.valuesTablePromise != null) {\n this.valuesTablePromise.cancel();\n }\n }\n\n focusTrapContainer: React.RefObject<HTMLFormElement>;\n\n debounceTimeout?: ReturnType<typeof setTimeout>;\n\n valuesTablePromise?: CancelablePromise<Table>;\n\n getFilterChangeHandler(index: number): FilterChangeHandler {\n return this.handleFilterChange.bind(this, index);\n }\n\n getFilterDeleteHandler(index: number): () => void {\n return this.handleFilterDelete.bind(this, index);\n }\n\n getFilterTypes = memoize((columnType: string): FilterTypeValue[] =>\n TableUtils.getFilterTypes(columnType)\n );\n\n initValuesTable(): void {\n const { model, column } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(\n model.valuesTable(column)\n );\n this.valuesTablePromise\n .then(valuesTable => {\n const sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n\n this.setState({ valuesTable });\n })\n .catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error('Unable to open values table', error);\n this.setState({ valuesTableError: error });\n });\n }\n\n handleFocusTrapEnd(): void {\n (this.focusTrapContainer?.current?.querySelector(\n 'button,select,input,textarea'\n ) as HTMLElement).focus();\n }\n\n handleFocusTrapStart(): void {\n const inputs = this.focusTrapContainer?.current?.querySelectorAll(\n 'button,select,input,textarea'\n );\n if (inputs && inputs.length > 0) {\n const element = inputs[inputs.length - 1] as HTMLElement;\n element.focus();\n }\n }\n\n handleAddAnd(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({ filterItems, filterOperators });\n }\n\n handleAddOr(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({ filterItems, filterOperators });\n }\n\n handleChangeFilterOperator(index: number, operator: string): void {\n let { filterOperators } = this.state;\n filterOperators = [...filterOperators];\n\n assertFilterOperatorValue(operator);\n\n filterOperators[index] = operator;\n\n this.setState({ filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleFilterChange(\n filterIndex: number,\n selectedType: FilterTypeValue,\n value: string\n ): void {\n let { filterItems } = this.state;\n filterItems = [...filterItems];\n const { key } = filterItems[filterIndex];\n filterItems[filterIndex] = { key, selectedType, value };\n\n this.setState({ filterItems });\n\n this.startUpdateTimer();\n }\n\n handleFilterDelete(filterIndex: number): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = [...filterItems];\n filterOperators = [...filterOperators];\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\n }\n\n if (filterIndex < filterOperators.length) {\n filterOperators.splice(filterIndex, 1);\n } else if (filterIndex === filterOperators.length) {\n // When deleting the last filter item, we also need to remove the last filter operator\n filterOperators.splice(filterOperators.length - 1, 1);\n }\n\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n\n this.setState({ filterItems, filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleSelectValueChange(\n selectedValues: unknown[],\n invertSelection: boolean\n ): void {\n this.setState({ selectedValues, invertSelection });\n\n this.startUpdateTimer();\n }\n\n handleReset(): void {\n log.debug('Resetting Advanced Filter');\n\n this.setState({\n filterItems: [AdvancedFilterCreator.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true,\n });\n\n this.startUpdateTimer();\n }\n\n handleSortDown(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n\n handleSortUp(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n event.preventDefault();\n }\n\n handleDone(event: React.MouseEvent<HTMLButtonElement>): void {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n const { onDone } = this.props;\n onDone();\n\n event.preventDefault();\n }\n\n handleUpdateTimeout(): void {\n this.debounceTimeout = undefined;\n this.sendUpdate();\n }\n\n /**\n * Convenience function to check if the previous filter has been inputted, and\n * we should show the add filter buttons (+ AND OR)\n * @returns true If the add filter buttons should be shown, false otherwise\n */\n shouldShowAddFilter(): boolean {\n const { filterItems } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n\n const filterItem = filterItems[filterItems.length - 1];\n const { selectedType, value } = filterItem;\n\n return (\n selectedType != null &&\n selectedType.length > 0 &&\n value != null &&\n value.length > 0\n );\n }\n\n /**\n * Sorts the table in the specified direction. If already sorted in that direction, remove it.\n * @param direction The sort direction, ASC or DESC\n * @param addToExisting Add to the existing sort, or replace the existing table sort\n */\n sortTable(direction: SortDirection, addToExisting = false): void {\n const { column, onSortChange } = this.props;\n onSortChange(column, direction, addToExisting);\n }\n\n startUpdateTimer(): void {\n this.stopUpdateTimer();\n\n this.debounceTimeout = setTimeout(\n this.handleUpdateTimeout,\n AdvancedFilterCreator.debounceFilterUpdate\n );\n }\n\n stopUpdateTimer(): void {\n if (this.debounceTimeout !== undefined) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = undefined;\n }\n }\n\n sendUpdate(): void {\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n } = this.state;\n const { column, onFilterChange, model } = this.props;\n const { formatter } = model;\n\n const items = filterItems.filter(\n ({ selectedType, value }) =>\n selectedType != null && value != null && value !== ''\n ) as FilterItem[];\n\n const operators = filterOperators\n .filter(\n (operator, i) =>\n operator != null &&\n filterItems[i].selectedType != null &&\n filterItems[i].value != null &&\n filterItems[i].value !== ''\n )\n .slice(0, items.length - 1);\n // slice last operator, user may have set an operator but not a value\n\n const options = {\n filterItems: items,\n filterOperators: operators,\n invertSelection,\n selectedValues,\n };\n\n const filter = TableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n\n onFilterChange(column, filter, options);\n }\n\n render(): JSX.Element {\n const { column, model, sortDirection, formatter } = this.props;\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n } = this.state;\n const { isValuesTableAvailable } = model;\n const isBoolean = TableUtils.isBooleanType(column.type);\n const isDateType = TableUtils.isDateType(column.type);\n const filterTypes = this.getFilterTypes(column.type);\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n for (let i = 0; i < filterItems.length; i += 1) {\n const filterItem = filterItems[i];\n const { key, selectedType, value } = filterItem;\n\n const element = (\n <AdvancedFilterCreatorFilterItem\n key={key}\n column={column}\n filterTypes={filterTypes}\n onChange={this.getFilterChangeHandler(i)}\n onDelete={this.getFilterDeleteHandler(i)}\n selectedType={selectedType}\n value={value}\n formatter={formatter}\n />\n );\n filterItemElements.push(element);\n\n if (i < filterOperators.length) {\n const filterOperator = filterOperators[i];\n const isAndFilter = filterOperator === FilterOperator.and;\n const operatorElement = (\n <div\n key={`filterOperator${key}`}\n className=\"form-row justify-content-end advanced-filter-creator-filter-operator\"\n >\n <Button\n kind=\"ghost\"\n className={classNames('filter-operator', {\n active: isAndFilter,\n })}\n onClick={() =>\n this.handleChangeFilterOperator(i, FilterOperator.and)\n }\n >\n AND\n </Button>\n <Button\n kind=\"ghost\"\n className={classNames('filter-operator', {\n active: !isAndFilter,\n })}\n onClick={() =>\n this.handleChangeFilterOperator(i, FilterOperator.or)\n }\n >\n OR\n </Button>\n </div>\n );\n filterItemElements.push(operatorElement);\n }\n }\n }\n const showAddFilterItem = this.shouldShowAddFilter();\n const addFilterItem = (\n <div\n key=\"addFilterItem\"\n className={classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem,\n })}\n >\n <span className=\"text-muted\">\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n </span>\n <Button\n kind=\"ghost\"\n className=\"btn-filter-item\"\n onClick={this.handleAddAnd}\n disabled={!showAddFilterItem}\n tooltip=\"Add filter with AND\"\n >\n AND\n </Button>\n <Button\n kind=\"ghost\"\n className=\"btn-filter-item\"\n onClick={this.handleAddOr}\n disabled={!showAddFilterItem}\n tooltip=\"Add filter with OR\"\n >\n OR\n </Button>\n </div>\n );\n filterItemElements.push(addFilterItem);\n\n return (\n <div className=\"advanced-filter-creator\" role=\"presentation\">\n <div tabIndex={0} onFocus={this.handleFocusTrapStart} />\n <form onSubmit={this.handleSubmit} ref={this.focusTrapContainer}>\n <div className=\"title-bar\">\n <h6 className=\"advanced-filter-title\">Advanced Filters</h6>\n <div className=\"advanced-filter-menu-buttons\">\n <Button\n kind=\"ghost\"\n className={classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.descending,\n })}\n onClick={this.handleSortDown}\n icon={dhSortAmountDown}\n tooltip={`Sort ${column.name} Descending`}\n />\n <Button\n kind=\"ghost\"\n className={classNames('sort-operator', {\n active: sortDirection === TableUtils.sortDirection.ascending,\n })}\n onClick={this.handleSortUp}\n icon={\n <FontAwesomeIcon icon={dhSortAmountDown} rotation={180} />\n }\n tooltip={`Sort ${column.name} Ascending`}\n />\n </div>\n </div>\n <hr />\n <div className=\"advanced-filter-column-name\">\n {column.name} \n <span className=\"column-type\">({columnType})</span>\n </div>\n {filterItemElements}\n {isValuesTableAvailable && valuesTableError == null && (\n <>\n {!isBoolean && <hr />}\n <div className=\"form-group\">\n <AdvancedFilterCreatorSelectValue<unknown>\n table={valuesTable}\n onChange={this.handleSelectValueChange}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n showSearch={!isDateType}\n timeZone={formatter.timeZone}\n />\n </div>\n </>\n )}\n <div className=\"form-row justify-content-end\">\n <Button\n kind=\"secondary\"\n className=\"mr-2\"\n onClick={this.handleReset}\n >\n Reset\n </Button>\n <Button kind=\"primary\" onClick={this.handleDone}>\n Done\n </Button>\n </div>\n </form>\n <div tabIndex={0} onFocus={this.handleFocusTrapEnd} />\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreator;\n"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
-
|
|
3
2
|
/* eslint react/no-did-update-set-state: "off" */
|
|
4
3
|
import React, { PureComponent } from 'react';
|
|
5
4
|
import { Button } from '@deephaven/components';
|
|
@@ -17,31 +16,24 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
17
16
|
if (TableUtils.isNumberType(columnType) || TableUtils.isCharType(columnType)) {
|
|
18
17
|
return getLabelForNumberFilter(filterType);
|
|
19
18
|
}
|
|
20
|
-
|
|
21
19
|
if (TableUtils.isTextType(columnType)) {
|
|
22
20
|
return getLabelForTextFilter(filterType);
|
|
23
21
|
}
|
|
24
|
-
|
|
25
22
|
if (TableUtils.isDateType(columnType)) {
|
|
26
23
|
return getLabelForDateFilter(filterType);
|
|
27
24
|
}
|
|
28
|
-
|
|
29
25
|
if (TableUtils.isBooleanType(columnType)) {
|
|
30
26
|
return getLabelForBooleanFilter(filterType);
|
|
31
27
|
}
|
|
32
|
-
|
|
33
28
|
throw new Error("Unrecognized column type: ".concat(columnType));
|
|
34
29
|
} catch (e) {
|
|
35
30
|
log.warn(e);
|
|
36
31
|
return '';
|
|
37
32
|
}
|
|
38
33
|
}
|
|
39
|
-
|
|
40
34
|
constructor(props) {
|
|
41
35
|
super(props);
|
|
42
|
-
|
|
43
36
|
_defineProperty(this, "typeDropdown", void 0);
|
|
44
|
-
|
|
45
37
|
_defineProperty(this, "getCachedIsValid", memoizeOne((column, operation, value, timeZone) => {
|
|
46
38
|
try {
|
|
47
39
|
// We don't want to show an error for an empty value
|
|
@@ -50,7 +42,6 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
50
42
|
return false;
|
|
51
43
|
}
|
|
52
44
|
}));
|
|
53
|
-
|
|
54
45
|
this.handleDelete = this.handleDelete.bind(this);
|
|
55
46
|
this.handleTypeChange = this.handleTypeChange.bind(this);
|
|
56
47
|
this.handleValueChange = this.handleValueChange.bind(this);
|
|
@@ -65,32 +56,26 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
65
56
|
value: _value
|
|
66
57
|
};
|
|
67
58
|
}
|
|
68
|
-
|
|
69
59
|
componentDidMount() {
|
|
70
60
|
var _this$typeDropdown;
|
|
71
|
-
|
|
72
61
|
(_this$typeDropdown = this.typeDropdown) === null || _this$typeDropdown === void 0 ? void 0 : _this$typeDropdown.focus();
|
|
73
62
|
}
|
|
74
|
-
|
|
75
63
|
componentDidUpdate(prevProps) {
|
|
76
64
|
var {
|
|
77
65
|
value,
|
|
78
66
|
selectedType
|
|
79
67
|
} = this.props;
|
|
80
|
-
|
|
81
68
|
if (selectedType !== undefined && prevProps.selectedType !== selectedType) {
|
|
82
69
|
this.setState({
|
|
83
70
|
selectedType
|
|
84
71
|
});
|
|
85
72
|
}
|
|
86
|
-
|
|
87
73
|
if (value !== undefined && prevProps.value !== value) {
|
|
88
74
|
this.setState({
|
|
89
75
|
value
|
|
90
76
|
});
|
|
91
77
|
}
|
|
92
78
|
}
|
|
93
|
-
|
|
94
79
|
handleTypeChange(event) {
|
|
95
80
|
var selectedType = event.target.value;
|
|
96
81
|
log.debug2('typeChange', selectedType);
|
|
@@ -103,13 +88,11 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
103
88
|
var {
|
|
104
89
|
value
|
|
105
90
|
} = this.state;
|
|
106
|
-
|
|
107
91
|
if (value != null && value.length > 0) {
|
|
108
92
|
// Don't send an update unless there's already a value entered
|
|
109
93
|
onChange(selectedType, value);
|
|
110
94
|
}
|
|
111
95
|
}
|
|
112
|
-
|
|
113
96
|
handleValueChange(event) {
|
|
114
97
|
log.debug2('valueChange');
|
|
115
98
|
var {
|
|
@@ -124,13 +107,11 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
124
107
|
var {
|
|
125
108
|
selectedType
|
|
126
109
|
} = this.state;
|
|
127
|
-
|
|
128
110
|
if (selectedType != null) {
|
|
129
111
|
// Don't send an update unless they've already selected a type
|
|
130
112
|
onChange(selectedType, value);
|
|
131
113
|
}
|
|
132
114
|
}
|
|
133
|
-
|
|
134
115
|
handleDelete() {
|
|
135
116
|
log.debug('delete');
|
|
136
117
|
var {
|
|
@@ -138,7 +119,6 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
138
119
|
} = this.props;
|
|
139
120
|
onDelete();
|
|
140
121
|
}
|
|
141
|
-
|
|
142
122
|
render() {
|
|
143
123
|
var {
|
|
144
124
|
column,
|
|
@@ -152,7 +132,6 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
152
132
|
var showValueInput = !TableUtils.isBooleanType(column.type);
|
|
153
133
|
var typeOptionElements = [];
|
|
154
134
|
var isValid = this.getCachedIsValid(column, selectedType, value, formatter.timeZone);
|
|
155
|
-
|
|
156
135
|
for (var i = 0; i < filterTypes.length; i += 1) {
|
|
157
136
|
var _type = filterTypes[i];
|
|
158
137
|
var label = AdvancedFilterCreatorFilterItem.getLabelForFilter(column.type, _type);
|
|
@@ -162,7 +141,6 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
162
141
|
}, label);
|
|
163
142
|
typeOptionElements.push(element);
|
|
164
143
|
}
|
|
165
|
-
|
|
166
144
|
return /*#__PURE__*/React.createElement("div", {
|
|
167
145
|
className: "advanced-filter-creator-filter-item"
|
|
168
146
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -198,7 +176,6 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
198
176
|
tooltip: "Remove Filter"
|
|
199
177
|
}))));
|
|
200
178
|
}
|
|
201
|
-
|
|
202
179
|
}
|
|
203
180
|
export default AdvancedFilterCreatorFilterItem;
|
|
204
181
|
//# sourceMappingURL=AdvancedFilterCreatorFilterItem.js.map
|