@deephaven/dashboard-core-plugins 1.22.1 → 1.22.2-alpha-pivot-builder.0730ba6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChartBuilderPlugin.js +8 -15
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartPanelPlugin.js +13 -6
- package/dist/ChartPanelPlugin.js.map +1 -1
- package/dist/ChartWidgetPlugin.js +11 -4
- package/dist/ChartWidgetPlugin.js.map +1 -1
- package/dist/ConsolePlugin.js +38 -46
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.js +63 -44
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPanelPlugin.js +3 -5
- package/dist/GridPanelPlugin.js.map +1 -1
- package/dist/GridWidgetPlugin.d.ts +18 -1
- package/dist/GridWidgetPlugin.d.ts.map +1 -1
- package/dist/GridWidgetPlugin.js +54 -30
- package/dist/GridWidgetPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js +3 -5
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.js +18 -17
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPanelPlugin.js +3 -5
- package/dist/PandasPanelPlugin.js.map +1 -1
- package/dist/PandasWidgetPlugin.js +3 -7
- package/dist/PandasWidgetPlugin.js.map +1 -1
- package/dist/TablePluginWrapper.js +8 -10
- package/dist/TablePluginWrapper.js.map +1 -1
- package/dist/WidgetLoaderPlugin.js +24 -29
- package/dist/WidgetLoaderPlugin.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +63 -79
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +32 -58
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +4 -5
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js +7 -10
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +8 -12
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/linker/Linker.js +100 -192
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerLink.js +23 -31
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +65 -66
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.js +6 -14
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +4 -6
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.js +7 -9
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.js +136 -220
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/ChartPanelUtils.js +3 -4
- package/dist/panels/ChartPanelUtils.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +33 -52
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.js +68 -130
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/CorePanel.js +6 -18
- package/dist/panels/CorePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +109 -165
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.js +30 -55
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.js +81 -141
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js +68 -87
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.js +45 -68
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +28 -6
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +224 -280
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/IrisGridPanelTooltip.js +1 -3
- package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
- package/dist/panels/LogPanel.js +6 -13
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.js +28 -50
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.js +19 -38
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.js +157 -292
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +5 -15
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/PandasReloadButton.js +1 -3
- package/dist/panels/PandasReloadButton.js.map +1 -1
- package/dist/panels/WidgetPanel.js +42 -51
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js +6 -10
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/useConfigureRuff.js +8 -9
- package/dist/useConfigureRuff.js.map +1 -1
- package/dist/useDashboardColumnFilters.js +4 -7
- package/dist/useDashboardColumnFilters.js.map +1 -1
- package/dist/useGridLinker.js +9 -16
- package/dist/useGridLinker.js.map +1 -1
- package/dist/useIrisGridModel.d.ts +2 -2
- package/dist/useIrisGridModel.d.ts.map +1 -1
- package/dist/useIrisGridModel.js +34 -6
- package/dist/useIrisGridModel.js.map +1 -1
- package/dist/useTablePlugin.js +27 -14
- package/dist/useTablePlugin.js.map +1 -1
- package/package.json +24 -24
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
2
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
4
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
5
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
6
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
7
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
8
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
3
9
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
10
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
11
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
@@ -22,13 +28,13 @@ function hasSetPanelState(panel) {
|
|
|
22
28
|
export class FilterSetManagerPanel extends Component {
|
|
23
29
|
static changeFilterIndexesToColumnNames(table, configs) {
|
|
24
30
|
return configs.map(_ref => {
|
|
25
|
-
var
|
|
31
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
32
|
+
index = _ref2[0],
|
|
33
|
+
filter = _ref2[1];
|
|
26
34
|
if (index >= table.columns.length) {
|
|
27
35
|
return null;
|
|
28
36
|
}
|
|
29
|
-
var
|
|
30
|
-
name
|
|
31
|
-
} = table.columns[index];
|
|
37
|
+
var name = table.columns[index].name;
|
|
32
38
|
return {
|
|
33
39
|
name,
|
|
34
40
|
filter
|
|
@@ -41,14 +47,13 @@ export class FilterSetManagerPanel extends Component {
|
|
|
41
47
|
this.handleFilterApply = this.handleFilterApply.bind(this);
|
|
42
48
|
this.handleSetsUpdate = this.handleSetsUpdate.bind(this);
|
|
43
49
|
this.handleGetFilterState = this.handleGetFilterState.bind(this);
|
|
44
|
-
var
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
isValueShown = false
|
|
51
|
-
} = panelState !== null && panelState !== void 0 ? panelState : {};
|
|
50
|
+
var panelState = props.panelState,
|
|
51
|
+
filterSets = props.filterSets;
|
|
52
|
+
var _ref3 = panelState !== null && panelState !== void 0 ? panelState : {},
|
|
53
|
+
_ref3$selectedId = _ref3.selectedId,
|
|
54
|
+
selectedId = _ref3$selectedId === void 0 ? filterSets.length > 0 ? filterSets[0].id : undefined : _ref3$selectedId,
|
|
55
|
+
_ref3$isValueShown = _ref3.isValueShown,
|
|
56
|
+
isValueShown = _ref3$isValueShown === void 0 ? false : _ref3$isValueShown;
|
|
52
57
|
this.state = {
|
|
53
58
|
selectedId,
|
|
54
59
|
isValueShown,
|
|
@@ -59,9 +64,7 @@ export class FilterSetManagerPanel extends Component {
|
|
|
59
64
|
|
|
60
65
|
// Collect all filter values for each dashboard panel
|
|
61
66
|
getFilterState() {
|
|
62
|
-
var
|
|
63
|
-
dashboardOpenedPanelMap
|
|
64
|
-
} = this.props;
|
|
67
|
+
var dashboardOpenedPanelMap = this.props.dashboardOpenedPanelMap;
|
|
65
68
|
var panels = [];
|
|
66
69
|
[...dashboardOpenedPanelMap.keys()].forEach(key => {
|
|
67
70
|
var panel = dashboardOpenedPanelMap.get(key);
|
|
@@ -72,9 +75,8 @@ export class FilterSetManagerPanel extends Component {
|
|
|
72
75
|
var componentName = LayoutUtils.getComponentNameFromPanel(panel);
|
|
73
76
|
var panelId = LayoutUtils.getIdFromPanel(panel);
|
|
74
77
|
log.debug('Panel:', panel, componentName);
|
|
75
|
-
var
|
|
76
|
-
glContainer = null
|
|
77
|
-
} = panel.props;
|
|
78
|
+
var _panel$props$glContai = panel.props.glContainer,
|
|
79
|
+
glContainer = _panel$props$glContai === void 0 ? null : _panel$props$glContai;
|
|
78
80
|
if (glContainer == null) {
|
|
79
81
|
log.error('Could not get panel container', panel);
|
|
80
82
|
return;
|
|
@@ -108,12 +110,10 @@ export class FilterSetManagerPanel extends Component {
|
|
|
108
110
|
case LayoutUtils.getComponentName(InputFilterPanel):
|
|
109
111
|
case LayoutUtils.getComponentName(DropdownFilterPanel):
|
|
110
112
|
{
|
|
111
|
-
var
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
value
|
|
116
|
-
} = panelState;
|
|
113
|
+
var isValueShown = panelState.isValueShown,
|
|
114
|
+
name = panelState.name,
|
|
115
|
+
type = panelState.type,
|
|
116
|
+
value = panelState.value;
|
|
117
117
|
panels.push({
|
|
118
118
|
panelId,
|
|
119
119
|
type: componentName,
|
|
@@ -132,9 +132,7 @@ export class FilterSetManagerPanel extends Component {
|
|
|
132
132
|
return panels;
|
|
133
133
|
}
|
|
134
134
|
getIrisGridPanelFilters(panelId, panelState) {
|
|
135
|
-
var
|
|
136
|
-
panelTableMap
|
|
137
|
-
} = this.props;
|
|
135
|
+
var panelTableMap = this.props.panelTableMap;
|
|
138
136
|
var table = panelTableMap.get(panelId);
|
|
139
137
|
if (table == null) {
|
|
140
138
|
log.error("Unable to get table for panel ".concat(panelId, "."));
|
|
@@ -142,17 +140,15 @@ export class FilterSetManagerPanel extends Component {
|
|
|
142
140
|
}
|
|
143
141
|
// IrisGridUtils.hydrate uses numeric indexes for columns
|
|
144
142
|
// Change indexes to column names to make it work for proxy models
|
|
145
|
-
var
|
|
146
|
-
irisGridState = {
|
|
143
|
+
var _panelState$irisGridS = panelState.irisGridState,
|
|
144
|
+
irisGridState = _panelState$irisGridS === void 0 ? {
|
|
147
145
|
advancedFilters: undefined,
|
|
148
146
|
quickFilters: undefined
|
|
149
|
-
},
|
|
150
|
-
gridState =
|
|
151
|
-
|
|
152
|
-
var
|
|
153
|
-
|
|
154
|
-
quickFilters: indexedQuickFilters
|
|
155
|
-
} = irisGridState;
|
|
147
|
+
} : _panelState$irisGridS,
|
|
148
|
+
_panelState$gridState = panelState.gridState,
|
|
149
|
+
gridState = _panelState$gridState === void 0 ? {} : _panelState$gridState;
|
|
150
|
+
var indexedAdvancedFilters = irisGridState.advancedFilters,
|
|
151
|
+
indexedQuickFilters = irisGridState.quickFilters;
|
|
156
152
|
var advancedFilters;
|
|
157
153
|
if (indexedAdvancedFilters) {
|
|
158
154
|
advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, indexedAdvancedFilters);
|
|
@@ -172,11 +168,9 @@ export class FilterSetManagerPanel extends Component {
|
|
|
172
168
|
handleGetFilterState() {
|
|
173
169
|
return this.getFilterState();
|
|
174
170
|
}
|
|
175
|
-
handleChange(
|
|
176
|
-
var
|
|
177
|
-
|
|
178
|
-
selectedId
|
|
179
|
-
} = _ref2;
|
|
171
|
+
handleChange(_ref4) {
|
|
172
|
+
var isValueShown = _ref4.isValueShown,
|
|
173
|
+
selectedId = _ref4.selectedId;
|
|
180
174
|
log.debug('handleChange', isValueShown, selectedId);
|
|
181
175
|
this.setState({
|
|
182
176
|
isValueShown,
|
|
@@ -185,20 +179,15 @@ export class FilterSetManagerPanel extends Component {
|
|
|
185
179
|
this.updatePanelState();
|
|
186
180
|
}
|
|
187
181
|
handleFilterApply(filterSet) {
|
|
188
|
-
var
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
panels,
|
|
193
|
-
restoreFullState = false
|
|
194
|
-
} = filterSet;
|
|
182
|
+
var dashboardOpenedPanelMap = this.props.dashboardOpenedPanelMap;
|
|
183
|
+
var panels = filterSet.panels,
|
|
184
|
+
_filterSet$restoreFul = filterSet.restoreFullState,
|
|
185
|
+
restoreFullState = _filterSet$restoreFul === void 0 ? false : _filterSet$restoreFul;
|
|
195
186
|
log.debug("Apply filters from filter set", filterSet);
|
|
196
|
-
panels.forEach(
|
|
197
|
-
var
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
state
|
|
201
|
-
} = _ref3;
|
|
187
|
+
panels.forEach(_ref5 => {
|
|
188
|
+
var panelId = _ref5.panelId,
|
|
189
|
+
type = _ref5.type,
|
|
190
|
+
state = _ref5.state;
|
|
202
191
|
if (panelId == null) {
|
|
203
192
|
log.debug('panel is null', panelId);
|
|
204
193
|
return;
|
|
@@ -222,21 +211,18 @@ export class FilterSetManagerPanel extends Component {
|
|
|
222
211
|
});
|
|
223
212
|
}
|
|
224
213
|
handleSetsUpdate(modifiedFilterSets) {
|
|
225
|
-
var
|
|
226
|
-
setDashboardFilterSets,
|
|
227
|
-
localDashboardId
|
|
228
|
-
} = this.props;
|
|
214
|
+
var _this$props = this.props,
|
|
215
|
+
setDashboardFilterSets = _this$props.setDashboardFilterSets,
|
|
216
|
+
localDashboardId = _this$props.localDashboardId;
|
|
229
217
|
log.debug('Saving updated sets', modifiedFilterSets);
|
|
230
218
|
// Filter sets are stored in dashboard data instead of the panelState
|
|
231
219
|
// because they need to be shared between the filter view manager panels
|
|
232
220
|
setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);
|
|
233
221
|
}
|
|
234
222
|
updatePanelState() {
|
|
235
|
-
this.setState(
|
|
236
|
-
var
|
|
237
|
-
|
|
238
|
-
isValueShown
|
|
239
|
-
} = _ref4;
|
|
223
|
+
this.setState(_ref6 => {
|
|
224
|
+
var selectedId = _ref6.selectedId,
|
|
225
|
+
isValueShown = _ref6.isValueShown;
|
|
240
226
|
return {
|
|
241
227
|
// eslint-disable-next-line react/no-unused-state
|
|
242
228
|
panelState: {
|
|
@@ -249,18 +235,17 @@ export class FilterSetManagerPanel extends Component {
|
|
|
249
235
|
restoreIrisGridFilters(panel, state, restoreFullState) {
|
|
250
236
|
// Fall back to state.advancedFilters and state.quickFilters
|
|
251
237
|
// for backward compatibility with filter sets that only contain filters
|
|
252
|
-
var
|
|
253
|
-
irisGridState = {},
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
} = this.props;
|
|
238
|
+
var _state$irisGridState = state.irisGridState,
|
|
239
|
+
irisGridState = _state$irisGridState === void 0 ? {} : _state$irisGridState,
|
|
240
|
+
_state$advancedFilter = state.advancedFilters,
|
|
241
|
+
prevAdvancedFilters = _state$advancedFilter === void 0 ? [] : _state$advancedFilter,
|
|
242
|
+
_state$quickFilters = state.quickFilters,
|
|
243
|
+
prevQuickFilters = _state$quickFilters === void 0 ? [] : _state$quickFilters;
|
|
244
|
+
var _irisGridState$advanc = irisGridState.advancedFilters,
|
|
245
|
+
advancedFilters = _irisGridState$advanc === void 0 ? prevAdvancedFilters : _irisGridState$advanc,
|
|
246
|
+
_irisGridState$quickF = irisGridState.quickFilters,
|
|
247
|
+
quickFilters = _irisGridState$quickF === void 0 ? prevQuickFilters : _irisGridState$quickF;
|
|
248
|
+
var panelTableMap = this.props.panelTableMap;
|
|
264
249
|
var panelId = LayoutUtils.getIdFromPanel(panel);
|
|
265
250
|
if (panelId == null) {
|
|
266
251
|
log.error("Panel Id is null.");
|
|
@@ -293,15 +278,13 @@ export class FilterSetManagerPanel extends Component {
|
|
|
293
278
|
}
|
|
294
279
|
}
|
|
295
280
|
render() {
|
|
296
|
-
var
|
|
297
|
-
glContainer,
|
|
298
|
-
glEventHub,
|
|
299
|
-
filterSets
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
selectedId
|
|
304
|
-
} = this.state;
|
|
281
|
+
var _this$props2 = this.props,
|
|
282
|
+
glContainer = _this$props2.glContainer,
|
|
283
|
+
glEventHub = _this$props2.glEventHub,
|
|
284
|
+
filterSets = _this$props2.filterSets;
|
|
285
|
+
var _this$state = this.state,
|
|
286
|
+
isValueShown = _this$state.isValueShown,
|
|
287
|
+
selectedId = _this$state.selectedId;
|
|
305
288
|
return /*#__PURE__*/_jsx(Panel, {
|
|
306
289
|
className: "filter-set-manager-panel",
|
|
307
290
|
componentPanel: this,
|
|
@@ -329,9 +312,7 @@ _defineProperty(FilterSetManagerPanel, "defaultProps", {
|
|
|
329
312
|
});
|
|
330
313
|
_defineProperty(FilterSetManagerPanel, "COMPONENT", 'FilterSetManagerPanel');
|
|
331
314
|
var mapStateToProps = (state, ownProps) => {
|
|
332
|
-
var
|
|
333
|
-
localDashboardId
|
|
334
|
-
} = ownProps;
|
|
315
|
+
var localDashboardId = ownProps.localDashboardId;
|
|
335
316
|
return {
|
|
336
317
|
filterSets: getFilterSetsForDashboard(state, localDashboardId),
|
|
337
318
|
dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(state, localDashboardId),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterSetManagerPanel.js","names":["React","Component","connect","getOpenedPanelMapForDashboard","LayoutUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","DropdownFilterPanel","InputFilterPanel","jsx","_jsx","log","module","hasSetPanelState","panel","setPanelState","FilterSetManagerPanel","changeFilterIndexesToColumnNames","table","configs","map","_ref","index","filter","columns","length","name","config","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","selectedId","id","undefined","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","get","error","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","getComponentConfigFromContainer","getPanelComponentState","concat","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","quickFilters","gridState","indexedAdvancedFilters","indexedQuickFilters","_objectSpread","_ref2","setState","updatePanelState","filterSet","restoreFullState","_ref3","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","localDashboardId","_ref4","prevAdvancedFilters","prevQuickFilters","setStateOverrides","setFilters","inputFilterState","render","glEventHub","className","componentPanel","isClonable","isRenamable","children","onChange","onApply","onUpdateSets","_defineProperty","mapStateToProps","ownProps","dashboardInputFilters","ConnectedFilterSetManagerPanel","forwardRef"],"sources":["../../src/panels/FilterSetManagerPanel.tsx"],"sourcesContent":["import React, { Component, type ReactElement } from 'react';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n LayoutUtils,\n type PanelComponent,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type RootState } from '@deephaven/redux';\nimport {\n type AdvancedFilter,\n type ColumnName,\n type DehydratedIrisGridState,\n type QuickFilter,\n} from '@deephaven/iris-grid';\nimport { type GridState } from '@deephaven/grid';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './CorePanel';\nimport FilterSetManager, {\n type ChangeHandlerArgs,\n type FilterSet,\n type FilterSetPanel,\n} from './FilterSetManager';\nimport { IrisGridPanel } from './IrisGridPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\nimport InputFilterPanel, {\n type PanelState as InputFilterPanelState,\n} from './InputFilterPanel';\nimport './FilterSetManagerPanel.scss';\nimport { type FilterChangeEvent } from '../FilterEvents';\n\nconst log = Log.module('FilterSetManagerPanel');\ninterface IrisGridState {\n advancedFilters: [number, AdvancedFilter][];\n quickFilters: [number, QuickFilter][];\n}\n\ninterface PanelState {\n irisGridState?: IrisGridState;\n gridState?: Partial<GridState>;\n selectedId?: string | string[];\n isValueShown?: boolean;\n name?: string;\n type?: string;\n value?: string;\n}\n\ninterface FilterSetManagerPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n filterSets: FilterSet[];\n localDashboardId: string;\n dashboardOpenedPanelMap: Map<string | string[], PanelComponent>;\n setDashboardFilterSets: (\n dashboardId: string,\n filterSets: FilterSet[]\n ) => void;\n panelTableMap: Map<string | string[], dh.Table>;\n}\n\ninterface FilterSetManagerPanelState {\n selectedId?: string | string[];\n isValueShown: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel\n}\n\nfunction hasSetPanelState(panel: PanelComponent): panel is PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n} {\n return (\n (\n panel as PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n }\n ).setPanelState != null\n );\n}\nexport class FilterSetManagerPanel extends Component<\n FilterSetManagerPanelProps,\n FilterSetManagerPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterIndexesToColumnNames<T>(\n table: dh.Table,\n configs: [number, T][]\n ): { name: string; filter: T }[] {\n return configs\n .map(([index, filter]) => {\n if (index >= table.columns.length) {\n return null;\n }\n const { name } = table.columns[index];\n return { name, filter };\n })\n .filter(config => config != null) as { name: string; filter: T }[];\n }\n\n constructor(props: FilterSetManagerPanelProps) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleSetsUpdate = this.handleSetsUpdate.bind(this);\n this.handleGetFilterState = this.handleGetFilterState.bind(this);\n\n const { panelState, filterSets } = props;\n const {\n selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,\n isValueShown = false,\n } = panelState ?? {};\n\n this.state = {\n selectedId,\n isValueShown,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n // Collect all filter values for each dashboard panel\n getFilterState(): FilterSetPanel[] {\n const { dashboardOpenedPanelMap } = this.props;\n const panels: FilterSetPanel[] = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n\n if (panel === undefined) {\n log.error('Could not get panel', panel);\n return;\n }\n\n const componentName = LayoutUtils.getComponentNameFromPanel(panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('Panel:', panel, componentName);\n\n const { glContainer = null } = panel.props;\n if (glContainer == null) {\n log.error('Could not get panel container', panel);\n return;\n }\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n const panelState = LayoutUtils.getPanelComponentState(\n config\n ) as PanelState;\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n let state;\n if (panelId != null) {\n state = this.getIrisGridPanelFilters(panelId, panelState);\n }\n if (state != null) {\n panels.push({\n panelId,\n type: componentName,\n state,\n });\n }\n break;\n }\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel): {\n const { isValueShown, name, type, value } = panelState;\n panels.push({\n panelId,\n type: componentName,\n state: { isValueShown, name, type, value },\n });\n break;\n }\n default:\n }\n });\n return panels;\n }\n\n getIrisGridPanelFilters(\n panelId: string | string[],\n panelState: PanelState\n ): {\n irisGridState: Omit<IrisGridState, 'advancedFilters' | 'quickFilters'> & {\n advancedFilters?: {\n name: string;\n filter: AdvancedFilter;\n }[];\n quickFilters?: {\n name: string;\n filter: QuickFilter;\n }[];\n };\n gridState: Partial<GridState>;\n } | null {\n const { panelTableMap } = this.props;\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return null;\n }\n // IrisGridUtils.hydrate uses numeric indexes for columns\n // Change indexes to column names to make it work for proxy models\n const {\n irisGridState = { advancedFilters: undefined, quickFilters: undefined },\n gridState = {},\n } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters,\n quickFilters: indexedQuickFilters,\n } = irisGridState;\n let advancedFilters;\n if (indexedAdvancedFilters) {\n advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedAdvancedFilters\n );\n }\n\n let quickFilters;\n if (indexedQuickFilters) {\n quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedQuickFilters\n );\n }\n return {\n irisGridState: {\n ...irisGridState,\n advancedFilters,\n quickFilters,\n },\n gridState: { ...gridState },\n };\n }\n\n handleGetFilterState(): FilterSetPanel[] {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }: ChangeHandlerArgs): void {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet: FilterSet): void {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels, restoreFullState = false } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (panelId == null) {\n log.debug('panel is null', panelId);\n return;\n }\n if (!dashboardOpenedPanelMap.has(panelId)) {\n log.debug('Ignore closed panel', panelId);\n return;\n }\n log.debug('Apply panel filters', panelId, type, state);\n const panel = dashboardOpenedPanelMap.get(panelId);\n switch (type) {\n case LayoutUtils.getComponentName(IrisGridPanel):\n this.restoreIrisGridFilters(\n panel as IrisGridPanel,\n state as {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: string; filter: AdvancedFilter }[];\n quickFilters: { name: string; filter: QuickFilter }[];\n },\n restoreFullState\n );\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state as InputFilterPanelState);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets: FilterSet[]): void {\n const { setDashboardFilterSets, localDashboardId } = this.props;\n log.debug('Saving updated sets', modifiedFilterSets);\n // Filter sets are stored in dashboard data instead of the panelState\n // because they need to be shared between the filter view manager panels\n setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);\n }\n\n updatePanelState(): void {\n this.setState(({ selectedId, isValueShown }) => ({\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n selectedId,\n isValueShown,\n },\n }));\n }\n\n restoreIrisGridFilters(\n panel: IrisGridPanel,\n state: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n },\n restoreFullState: boolean\n ): void {\n // Fall back to state.advancedFilters and state.quickFilters\n // for backward compatibility with filter sets that only contain filters\n const {\n irisGridState = {},\n advancedFilters: prevAdvancedFilters = [],\n quickFilters: prevQuickFilters = [],\n } = state;\n const {\n advancedFilters = prevAdvancedFilters,\n quickFilters = prevQuickFilters,\n } = irisGridState;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error(`Panel Id is null.`);\n return;\n }\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return;\n }\n log.debug('restoreIrisGridFilters', panelId, state, restoreFullState);\n if (restoreFullState) {\n panel.setStateOverrides(state);\n } else {\n panel.setFilters({\n quickFilters: quickFilters as {\n name: string;\n filter: QuickFilter;\n }[],\n advancedFilters: advancedFilters as {\n name: string;\n filter: AdvancedFilter;\n }[],\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(\n panel: PanelComponent | undefined,\n state: InputFilterPanelState\n ): void {\n const inputFilterState = { ...state };\n // Restore state but don't flip the card\n delete inputFilterState.isValueShown;\n log.debug('restoreInputFilterState', panel, inputFilterState);\n if (panel && hasSetPanelState(panel)) {\n panel.setPanelState(inputFilterState);\n }\n }\n\n render(): ReactElement {\n const { glContainer, glEventHub, filterSets } = this.props;\n const { isValueShown, selectedId } = this.state;\n return (\n <Panel\n className=\"filter-set-manager-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n isClonable\n isRenamable\n >\n <div className=\"input-filter-container h-100 w-100 container\">\n <FilterSetManager\n onChange={this.handleChange}\n onApply={this.handleFilterApply}\n onUpdateSets={this.handleSetsUpdate}\n isValueShown={isValueShown}\n filterSets={filterSets}\n selectedId={selectedId as string}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<\n FilterSetManagerPanelProps,\n 'dashboardOpenedPanelMap' | 'filterSets' | 'panelTableMap'\n> & {\n dashboardInputFilters: FilterChangeEvent[];\n} => {\n const { localDashboardId } = ownProps;\n return {\n filterSets: getFilterSetsForDashboard(state, localDashboardId),\n dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(\n state,\n localDashboardId\n ),\n dashboardInputFilters: getInputFiltersForDashboard(state, localDashboardId),\n panelTableMap: getTableMapForDashboard(state, localDashboardId),\n };\n};\n\nconst ConnectedFilterSetManagerPanel = connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n\nexport default ConnectedFilterSetManagerPanel;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FilterSetManagerPanel.js","names":["React","Component","connect","getOpenedPanelMapForDashboard","LayoutUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","DropdownFilterPanel","InputFilterPanel","jsx","_jsx","log","module","hasSetPanelState","panel","setPanelState","FilterSetManagerPanel","changeFilterIndexesToColumnNames","table","configs","map","_ref","_ref2","_slicedToArray","index","filter","columns","length","name","config","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","_ref3","_ref3$selectedId","selectedId","id","undefined","_ref3$isValueShown","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","get","error","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","_panel$props$glContai","glContainer","getComponentConfigFromContainer","getPanelComponentState","concat","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","_panelState$irisGridS","irisGridState","advancedFilters","quickFilters","_panelState$gridState","gridState","indexedAdvancedFilters","indexedQuickFilters","_objectSpread","_ref4","setState","updatePanelState","filterSet","_filterSet$restoreFul","restoreFullState","_ref5","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","_this$props","localDashboardId","_ref6","_state$irisGridState","_state$advancedFilter","prevAdvancedFilters","_state$quickFilters","prevQuickFilters","_irisGridState$advanc","_irisGridState$quickF","setStateOverrides","setFilters","inputFilterState","render","_this$props2","glEventHub","_this$state","className","componentPanel","isClonable","isRenamable","children","onChange","onApply","onUpdateSets","_defineProperty","mapStateToProps","ownProps","dashboardInputFilters","ConnectedFilterSetManagerPanel","forwardRef"],"sources":["../../src/panels/FilterSetManagerPanel.tsx"],"sourcesContent":["import React, { Component, type ReactElement } from 'react';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n LayoutUtils,\n type PanelComponent,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { type RootState } from '@deephaven/redux';\nimport {\n type AdvancedFilter,\n type ColumnName,\n type DehydratedIrisGridState,\n type QuickFilter,\n} from '@deephaven/iris-grid';\nimport { type GridState } from '@deephaven/grid';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './CorePanel';\nimport FilterSetManager, {\n type ChangeHandlerArgs,\n type FilterSet,\n type FilterSetPanel,\n} from './FilterSetManager';\nimport { IrisGridPanel } from './IrisGridPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\nimport InputFilterPanel, {\n type PanelState as InputFilterPanelState,\n} from './InputFilterPanel';\nimport './FilterSetManagerPanel.scss';\nimport { type FilterChangeEvent } from '../FilterEvents';\n\nconst log = Log.module('FilterSetManagerPanel');\ninterface IrisGridState {\n advancedFilters: [number, AdvancedFilter][];\n quickFilters: [number, QuickFilter][];\n}\n\ninterface PanelState {\n irisGridState?: IrisGridState;\n gridState?: Partial<GridState>;\n selectedId?: string | string[];\n isValueShown?: boolean;\n name?: string;\n type?: string;\n value?: string;\n}\n\ninterface FilterSetManagerPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n filterSets: FilterSet[];\n localDashboardId: string;\n dashboardOpenedPanelMap: Map<string | string[], PanelComponent>;\n setDashboardFilterSets: (\n dashboardId: string,\n filterSets: FilterSet[]\n ) => void;\n panelTableMap: Map<string | string[], dh.Table>;\n}\n\ninterface FilterSetManagerPanelState {\n selectedId?: string | string[];\n isValueShown: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel\n}\n\nfunction hasSetPanelState(panel: PanelComponent): panel is PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n} {\n return (\n (\n panel as PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n }\n ).setPanelState != null\n );\n}\nexport class FilterSetManagerPanel extends Component<\n FilterSetManagerPanelProps,\n FilterSetManagerPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterIndexesToColumnNames<T>(\n table: dh.Table,\n configs: [number, T][]\n ): { name: string; filter: T }[] {\n return configs\n .map(([index, filter]) => {\n if (index >= table.columns.length) {\n return null;\n }\n const { name } = table.columns[index];\n return { name, filter };\n })\n .filter(config => config != null) as { name: string; filter: T }[];\n }\n\n constructor(props: FilterSetManagerPanelProps) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleSetsUpdate = this.handleSetsUpdate.bind(this);\n this.handleGetFilterState = this.handleGetFilterState.bind(this);\n\n const { panelState, filterSets } = props;\n const {\n selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,\n isValueShown = false,\n } = panelState ?? {};\n\n this.state = {\n selectedId,\n isValueShown,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n // Collect all filter values for each dashboard panel\n getFilterState(): FilterSetPanel[] {\n const { dashboardOpenedPanelMap } = this.props;\n const panels: FilterSetPanel[] = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n\n if (panel === undefined) {\n log.error('Could not get panel', panel);\n return;\n }\n\n const componentName = LayoutUtils.getComponentNameFromPanel(panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('Panel:', panel, componentName);\n\n const { glContainer = null } = panel.props;\n if (glContainer == null) {\n log.error('Could not get panel container', panel);\n return;\n }\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n const panelState = LayoutUtils.getPanelComponentState(\n config\n ) as PanelState;\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n let state;\n if (panelId != null) {\n state = this.getIrisGridPanelFilters(panelId, panelState);\n }\n if (state != null) {\n panels.push({\n panelId,\n type: componentName,\n state,\n });\n }\n break;\n }\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel): {\n const { isValueShown, name, type, value } = panelState;\n panels.push({\n panelId,\n type: componentName,\n state: { isValueShown, name, type, value },\n });\n break;\n }\n default:\n }\n });\n return panels;\n }\n\n getIrisGridPanelFilters(\n panelId: string | string[],\n panelState: PanelState\n ): {\n irisGridState: Omit<IrisGridState, 'advancedFilters' | 'quickFilters'> & {\n advancedFilters?: {\n name: string;\n filter: AdvancedFilter;\n }[];\n quickFilters?: {\n name: string;\n filter: QuickFilter;\n }[];\n };\n gridState: Partial<GridState>;\n } | null {\n const { panelTableMap } = this.props;\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return null;\n }\n // IrisGridUtils.hydrate uses numeric indexes for columns\n // Change indexes to column names to make it work for proxy models\n const {\n irisGridState = { advancedFilters: undefined, quickFilters: undefined },\n gridState = {},\n } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters,\n quickFilters: indexedQuickFilters,\n } = irisGridState;\n let advancedFilters;\n if (indexedAdvancedFilters) {\n advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedAdvancedFilters\n );\n }\n\n let quickFilters;\n if (indexedQuickFilters) {\n quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedQuickFilters\n );\n }\n return {\n irisGridState: {\n ...irisGridState,\n advancedFilters,\n quickFilters,\n },\n gridState: { ...gridState },\n };\n }\n\n handleGetFilterState(): FilterSetPanel[] {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }: ChangeHandlerArgs): void {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet: FilterSet): void {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels, restoreFullState = false } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (panelId == null) {\n log.debug('panel is null', panelId);\n return;\n }\n if (!dashboardOpenedPanelMap.has(panelId)) {\n log.debug('Ignore closed panel', panelId);\n return;\n }\n log.debug('Apply panel filters', panelId, type, state);\n const panel = dashboardOpenedPanelMap.get(panelId);\n switch (type) {\n case LayoutUtils.getComponentName(IrisGridPanel):\n this.restoreIrisGridFilters(\n panel as IrisGridPanel,\n state as {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: string; filter: AdvancedFilter }[];\n quickFilters: { name: string; filter: QuickFilter }[];\n },\n restoreFullState\n );\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state as InputFilterPanelState);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets: FilterSet[]): void {\n const { setDashboardFilterSets, localDashboardId } = this.props;\n log.debug('Saving updated sets', modifiedFilterSets);\n // Filter sets are stored in dashboard data instead of the panelState\n // because they need to be shared between the filter view manager panels\n setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);\n }\n\n updatePanelState(): void {\n this.setState(({ selectedId, isValueShown }) => ({\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n selectedId,\n isValueShown,\n },\n }));\n }\n\n restoreIrisGridFilters(\n panel: IrisGridPanel,\n state: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n },\n restoreFullState: boolean\n ): void {\n // Fall back to state.advancedFilters and state.quickFilters\n // for backward compatibility with filter sets that only contain filters\n const {\n irisGridState = {},\n advancedFilters: prevAdvancedFilters = [],\n quickFilters: prevQuickFilters = [],\n } = state;\n const {\n advancedFilters = prevAdvancedFilters,\n quickFilters = prevQuickFilters,\n } = irisGridState;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error(`Panel Id is null.`);\n return;\n }\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return;\n }\n log.debug('restoreIrisGridFilters', panelId, state, restoreFullState);\n if (restoreFullState) {\n panel.setStateOverrides(state);\n } else {\n panel.setFilters({\n quickFilters: quickFilters as {\n name: string;\n filter: QuickFilter;\n }[],\n advancedFilters: advancedFilters as {\n name: string;\n filter: AdvancedFilter;\n }[],\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(\n panel: PanelComponent | undefined,\n state: InputFilterPanelState\n ): void {\n const inputFilterState = { ...state };\n // Restore state but don't flip the card\n delete inputFilterState.isValueShown;\n log.debug('restoreInputFilterState', panel, inputFilterState);\n if (panel && hasSetPanelState(panel)) {\n panel.setPanelState(inputFilterState);\n }\n }\n\n render(): ReactElement {\n const { glContainer, glEventHub, filterSets } = this.props;\n const { isValueShown, selectedId } = this.state;\n return (\n <Panel\n className=\"filter-set-manager-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n isClonable\n isRenamable\n >\n <div className=\"input-filter-container h-100 w-100 container\">\n <FilterSetManager\n onChange={this.handleChange}\n onApply={this.handleFilterApply}\n onUpdateSets={this.handleSetsUpdate}\n isValueShown={isValueShown}\n filterSets={filterSets}\n selectedId={selectedId as string}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<\n FilterSetManagerPanelProps,\n 'dashboardOpenedPanelMap' | 'filterSets' | 'panelTableMap'\n> & {\n dashboardInputFilters: FilterChangeEvent[];\n} => {\n const { localDashboardId } = ownProps;\n return {\n filterSets: getFilterSetsForDashboard(state, localDashboardId),\n dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(\n state,\n localDashboardId\n ),\n dashboardInputFilters: getInputFiltersForDashboard(state, localDashboardId),\n panelTableMap: getTableMapForDashboard(state, localDashboardId),\n };\n};\n\nconst ConnectedFilterSetManagerPanel = connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n\nexport default ConnectedFilterSetManagerPanel;\n"],"mappings":";;;;;;;;;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAA2B,OAAO;AAC3D,SAASC,OAAO,QAAQ,aAAa;AACrC,SACEC,6BAA6B,EAC7BC,WAAW,QAEN,sBAAsB;AAC7B,OAAOC,GAAG,MAAM,gBAAgB;AAAC,SAY/BC,yBAAyB,EACzBC,2BAA2B,EAC3BC,uBAAuB,EACvBC,sBAAsB,IAAIC,4BAA4B;AAAA,OAEjDC,KAAK;AAAA,OACLC,gBAAgB;AAAA,SAKdC,aAAa;AAAA,OACfC,mBAAmB;AAAA,OACnBC,gBAAgB;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAMvB,IAAMC,GAAG,GAAGb,GAAG,CAACc,MAAM,CAAC,uBAAuB,CAAC;AAqC/C,SAASC,gBAAgBA,CAACC,KAAqB,EAE7C;EACA,OAEIA,KAAK,CAGLC,aAAa,IAAI,IAAI;AAE3B;AACA,OAAO,MAAMC,qBAAqB,SAAStB,SAAS,CAGlD;EAOA,OAAOuB,gCAAgCA,CACrCC,KAAe,EACfC,OAAsB,EACS;IAC/B,OAAOA,OAAO,CACXC,GAAG,CAACC,IAAA,IAAqB;MAAA,IAAAC,KAAA,GAAAC,cAAA,CAAAF,IAAA;QAAnBG,KAAK,GAAAF,KAAA;QAAEG,MAAM,GAAAH,KAAA;MAClB,IAAIE,KAAK,IAAIN,KAAK,CAACQ,OAAO,CAACC,MAAM,EAAE;QACjC,OAAO,IAAI;MACb;MACA,IAAQC,IAAI,GAAKV,KAAK,CAACQ,OAAO,CAACF,KAAK,CAAC,CAA7BI,IAAI;MACZ,OAAO;QAAEA,IAAI;QAAEH;MAAO,CAAC;IACzB,CAAC,CAAC,CACDA,MAAM,CAACI,MAAM,IAAIA,MAAM,IAAI,IAAI,CAAC;EACrC;EAEAC,WAAWA,CAACC,KAAiC,EAAE;IAC7C,KAAK,CAACA,KAAK,CAAC;IAEZ,IAAI,CAACC,YAAY,GAAG,IAAI,CAACA,YAAY,CAACC,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACC,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACD,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACE,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACF,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACG,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACH,IAAI,CAAC,IAAI,CAAC;IAEhE,IAAQI,UAAU,GAAiBN,KAAK,CAAhCM,UAAU;MAAEC,UAAU,GAAKP,KAAK,CAApBO,UAAU;IAC9B,IAAAC,KAAA,GAGIF,UAAU,aAAVA,UAAU,cAAVA,UAAU,GAAI,CAAC,CAAC;MAAAG,gBAAA,GAAAD,KAAA,CAFlBE,UAAU;MAAVA,UAAU,GAAAD,gBAAA,cAAGF,UAAU,CAACX,MAAM,GAAG,CAAC,GAAGW,UAAU,CAAC,CAAC,CAAC,CAACI,EAAE,GAAGC,SAAS,GAAAH,gBAAA;MAAAI,kBAAA,GAAAL,KAAA,CACjEM,YAAY;MAAZA,YAAY,GAAAD,kBAAA,cAAG,KAAK,GAAAA,kBAAA;IAGtB,IAAI,CAACE,KAAK,GAAG;MACXL,UAAU;MACVI,YAAY;MACZ;MACAR,UAAU,CAAE;IACd,CAAC;EACH;;EAEA;EACAU,cAAcA,CAAA,EAAqB;IACjC,IAAQC,uBAAuB,GAAK,IAAI,CAACjB,KAAK,CAAtCiB,uBAAuB;IAC/B,IAAMC,MAAwB,GAAG,EAAE;IACnC,CAAC,GAAGD,uBAAuB,CAACE,IAAI,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,GAAG,IAAI;MACjD,IAAMtC,KAAK,GAAGkC,uBAAuB,CAACK,GAAG,CAACD,GAAG,CAAC;MAE9C,IAAItC,KAAK,KAAK6B,SAAS,EAAE;QACvBhC,GAAG,CAAC2C,KAAK,CAAC,qBAAqB,EAAExC,KAAK,CAAC;QACvC;MACF;MAEA,IAAMyC,aAAa,GAAG1D,WAAW,CAAC2D,yBAAyB,CAAC1C,KAAK,CAAC;MAClE,IAAM2C,OAAO,GAAG5D,WAAW,CAAC6D,cAAc,CAAC5C,KAAK,CAAC;MACjDH,GAAG,CAACgD,KAAK,CAAC,QAAQ,EAAE7C,KAAK,EAAEyC,aAAa,CAAC;MAEzC,IAAAK,qBAAA,GAA+B9C,KAAK,CAACiB,KAAK,CAAlC8B,WAAW;QAAXA,WAAW,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;MAC1B,IAAIC,WAAW,IAAI,IAAI,EAAE;QACvBlD,GAAG,CAAC2C,KAAK,CAAC,+BAA+B,EAAExC,KAAK,CAAC;QACjD;MACF;MACA,IAAMe,MAAM,GAAGhC,WAAW,CAACiE,+BAA+B,CAACD,WAAW,CAAC;MACvE,IAAIhC,MAAM,IAAI,IAAI,EAAE;QAClBlB,GAAG,CAAC2C,KAAK,CAAC,+CAA+C,EAAEO,WAAW,CAAC;QACvE;MACF;MACA,IAAMxB,UAAU,GAAGxC,WAAW,CAACkE,sBAAsB,CACnDlC,MACF,CAAe;MACf,IAAIQ,UAAU,IAAI,IAAI,EAAE;QACtB1B,GAAG,CAACgD,KAAK,wBAAAK,MAAA,CAAwBP,OAAO,CAAE,CAAC;QAC3C;MACF;MACA,QAAQF,aAAa;QACnB,KAAK1D,WAAW,CAACoE,gBAAgB,CAAC3D,aAAa,CAAC;UAAE;YAChD,IAAIwC,KAAK;YACT,IAAIW,OAAO,IAAI,IAAI,EAAE;cACnBX,KAAK,GAAG,IAAI,CAACoB,uBAAuB,CAACT,OAAO,EAAEpB,UAAU,CAAC;YAC3D;YACA,IAAIS,KAAK,IAAI,IAAI,EAAE;cACjBG,MAAM,CAACkB,IAAI,CAAC;gBACVV,OAAO;gBACPW,IAAI,EAAEb,aAAa;gBACnBT;cACF,CAAC,CAAC;YACJ;YACA;UACF;QACA,KAAKjD,WAAW,CAACoE,gBAAgB,CAACzD,gBAAgB,CAAC;QACnD,KAAKX,WAAW,CAACoE,gBAAgB,CAAC1D,mBAAmB,CAAC;UAAE;YACtD,IAAQsC,YAAY,GAAwBR,UAAU,CAA9CQ,YAAY;cAAEjB,IAAI,GAAkBS,UAAU,CAAhCT,IAAI;cAAEwC,IAAI,GAAY/B,UAAU,CAA1B+B,IAAI;cAAEC,KAAK,GAAKhC,UAAU,CAApBgC,KAAK;YACvCpB,MAAM,CAACkB,IAAI,CAAC;cACVV,OAAO;cACPW,IAAI,EAAEb,aAAa;cACnBT,KAAK,EAAE;gBAAED,YAAY;gBAAEjB,IAAI;gBAAEwC,IAAI;gBAAEC;cAAM;YAC3C,CAAC,CAAC;YACF;UACF;QACA;MACF;IACF,CAAC,CAAC;IACF,OAAOpB,MAAM;EACf;EAEAiB,uBAAuBA,CACrBT,OAA0B,EAC1BpB,UAAsB,EAaf;IACP,IAAQiC,aAAa,GAAK,IAAI,CAACvC,KAAK,CAA5BuC,aAAa;IACrB,IAAMpD,KAAK,GAAGoD,aAAa,CAACjB,GAAG,CAACI,OAAO,CAAC;IACxC,IAAIvC,KAAK,IAAI,IAAI,EAAE;MACjBP,GAAG,CAAC2C,KAAK,kCAAAU,MAAA,CAAkCP,OAAO,MAAG,CAAC;MACtD,OAAO,IAAI;IACb;IACA;IACA;IACA,IAAAc,qBAAA,GAGIlC,UAAU,CAFZmC,aAAa;MAAbA,aAAa,GAAAD,qBAAA,cAAG;QAAEE,eAAe,EAAE9B,SAAS;QAAE+B,YAAY,EAAE/B;MAAU,CAAC,GAAA4B,qBAAA;MAAAI,qBAAA,GAErEtC,UAAU,CADZuC,SAAS;MAATA,SAAS,GAAAD,qBAAA,cAAG,CAAC,CAAC,GAAAA,qBAAA;IAEhB,IACmBE,sBAAsB,GAErCL,aAAa,CAFfC,eAAe;MACDK,mBAAmB,GAC/BN,aAAa,CADfE,YAAY;IAEd,IAAID,eAAe;IACnB,IAAII,sBAAsB,EAAE;MAC1BJ,eAAe,GAAGzD,qBAAqB,CAACC,gCAAgC,CACtEC,KAAK,EACL2D,sBACF,CAAC;IACH;IAEA,IAAIH,YAAY;IAChB,IAAII,mBAAmB,EAAE;MACvBJ,YAAY,GAAG1D,qBAAqB,CAACC,gCAAgC,CACnEC,KAAK,EACL4D,mBACF,CAAC;IACH;IACA,OAAO;MACLN,aAAa,EAAAO,aAAA,CAAAA,aAAA,KACRP,aAAa;QAChBC,eAAe;QACfC;MAAY,EACb;MACDE,SAAS,EAAAG,aAAA,KAAOH,SAAS;IAC3B,CAAC;EACH;EAEAxC,oBAAoBA,CAAA,EAAqB;IACvC,OAAO,IAAI,CAACW,cAAc,CAAC,CAAC;EAC9B;EAEAf,YAAYA,CAAAgD,KAAA,EAAwD;IAAA,IAArDnC,YAAY,GAAAmC,KAAA,CAAZnC,YAAY;MAAEJ,UAAU,GAAAuC,KAAA,CAAVvC,UAAU;IACrC9B,GAAG,CAACgD,KAAK,CAAC,cAAc,EAAEd,YAAY,EAAEJ,UAAU,CAAC;IACnD,IAAI,CAACwC,QAAQ,CAAC;MAAEpC,YAAY;MAAEJ;IAAW,CAAC,CAAC;IAC3C,IAAI,CAACyC,gBAAgB,CAAC,CAAC;EACzB;EAEAhD,iBAAiBA,CAACiD,SAAoB,EAAQ;IAC5C,IAAQnC,uBAAuB,GAAK,IAAI,CAACjB,KAAK,CAAtCiB,uBAAuB;IAC/B,IAAQC,MAAM,GAA+BkC,SAAS,CAA9ClC,MAAM;MAAAmC,qBAAA,GAA+BD,SAAS,CAAtCE,gBAAgB;MAAhBA,gBAAgB,GAAAD,qBAAA,cAAG,KAAK,GAAAA,qBAAA;IACxCzE,GAAG,CAACgD,KAAK,kCAAkCwB,SAAS,CAAC;IACrDlC,MAAM,CAACE,OAAO,CAACmC,KAAA,IAA8B;MAAA,IAA3B7B,OAAO,GAAA6B,KAAA,CAAP7B,OAAO;QAAEW,IAAI,GAAAkB,KAAA,CAAJlB,IAAI;QAAEtB,KAAK,GAAAwC,KAAA,CAALxC,KAAK;MACpC,IAAIW,OAAO,IAAI,IAAI,EAAE;QACnB9C,GAAG,CAACgD,KAAK,CAAC,eAAe,EAAEF,OAAO,CAAC;QACnC;MACF;MACA,IAAI,CAACT,uBAAuB,CAACuC,GAAG,CAAC9B,OAAO,CAAC,EAAE;QACzC9C,GAAG,CAACgD,KAAK,CAAC,qBAAqB,EAAEF,OAAO,CAAC;QACzC;MACF;MACA9C,GAAG,CAACgD,KAAK,CAAC,qBAAqB,EAAEF,OAAO,EAAEW,IAAI,EAAEtB,KAAK,CAAC;MACtD,IAAMhC,KAAK,GAAGkC,uBAAuB,CAACK,GAAG,CAACI,OAAO,CAAC;MAClD,QAAQW,IAAI;QACV,KAAKvE,WAAW,CAACoE,gBAAgB,CAAC3D,aAAa,CAAC;UAC9C,IAAI,CAACkF,sBAAsB,CACzB1E,KAAK,EACLgC,KAAK,EAMLuC,gBACF,CAAC;UACD;QACF,KAAKxF,WAAW,CAACoE,gBAAgB,CAACzD,gBAAgB,CAAC;QACnD,KAAKX,WAAW,CAACoE,gBAAgB,CAAC1D,mBAAmB,CAAC;UACpD,IAAI,CAACkF,uBAAuB,CAAC3E,KAAK,EAAEgC,KAA8B,CAAC;UACnE;QACF;MACF;IACF,CAAC,CAAC;EACJ;EAEAX,gBAAgBA,CAACuD,kBAA+B,EAAQ;IACtD,IAAAC,WAAA,GAAqD,IAAI,CAAC5D,KAAK;MAAvD7B,sBAAsB,GAAAyF,WAAA,CAAtBzF,sBAAsB;MAAE0F,gBAAgB,GAAAD,WAAA,CAAhBC,gBAAgB;IAChDjF,GAAG,CAACgD,KAAK,CAAC,qBAAqB,EAAE+B,kBAAkB,CAAC;IACpD;IACA;IACAxF,sBAAsB,CAAC0F,gBAAgB,EAAE,CAAC,GAAGF,kBAAkB,CAAC,CAAC;EACnE;EAEAR,gBAAgBA,CAAA,EAAS;IACvB,IAAI,CAACD,QAAQ,CAACY,KAAA;MAAA,IAAGpD,UAAU,GAAAoD,KAAA,CAAVpD,UAAU;QAAEI,YAAY,GAAAgD,KAAA,CAAZhD,YAAY;MAAA,OAAQ;QAC/C;QACAR,UAAU,EAAE;UACVI,UAAU;UACVI;QACF;MACF,CAAC;IAAA,CAAC,CAAC;EACL;EAEA2C,sBAAsBA,CACpB1E,KAAoB,EACpBgC,KAKC,EACDuC,gBAAyB,EACnB;IACN;IACA;IACA,IAAAS,oBAAA,GAIIhD,KAAK,CAHP0B,aAAa;MAAbA,aAAa,GAAAsB,oBAAA,cAAG,CAAC,CAAC,GAAAA,oBAAA;MAAAC,qBAAA,GAGhBjD,KAAK,CAFP2B,eAAe;MAAEuB,mBAAmB,GAAAD,qBAAA,cAAG,EAAE,GAAAA,qBAAA;MAAAE,mBAAA,GAEvCnD,KAAK,CADP4B,YAAY;MAAEwB,gBAAgB,GAAAD,mBAAA,cAAG,EAAE,GAAAA,mBAAA;IAErC,IAAAE,qBAAA,GAGI3B,aAAa,CAFfC,eAAe;MAAfA,eAAe,GAAA0B,qBAAA,cAAGH,mBAAmB,GAAAG,qBAAA;MAAAC,qBAAA,GAEnC5B,aAAa,CADfE,YAAY;MAAZA,YAAY,GAAA0B,qBAAA,cAAGF,gBAAgB,GAAAE,qBAAA;IAEjC,IAAQ9B,aAAa,GAAK,IAAI,CAACvC,KAAK,CAA5BuC,aAAa;IACrB,IAAMb,OAAO,GAAG5D,WAAW,CAAC6D,cAAc,CAAC5C,KAAK,CAAC;IACjD,IAAI2C,OAAO,IAAI,IAAI,EAAE;MACnB9C,GAAG,CAAC2C,KAAK,oBAAoB,CAAC;MAC9B;IACF;IACA,IAAMpC,KAAK,GAAGoD,aAAa,CAACjB,GAAG,CAACI,OAAO,CAAC;IACxC,IAAIvC,KAAK,IAAI,IAAI,EAAE;MACjBP,GAAG,CAAC2C,KAAK,kCAAAU,MAAA,CAAkCP,OAAO,MAAG,CAAC;MACtD;IACF;IACA9C,GAAG,CAACgD,KAAK,CAAC,wBAAwB,EAAEF,OAAO,EAAEX,KAAK,EAAEuC,gBAAgB,CAAC;IACrE,IAAIA,gBAAgB,EAAE;MACpBvE,KAAK,CAACuF,iBAAiB,CAACvD,KAAK,CAAC;IAChC,CAAC,MAAM;MACLhC,KAAK,CAACwF,UAAU,CAAC;QACf5B,YAAY,EAAEA,YAGX;QACHD,eAAe,EAAEA;MAInB,CAAC,CAAC;IACJ;EACF;;EAEA;EACAgB,uBAAuBA,CACrB3E,KAAiC,EACjCgC,KAA4B,EACtB;IACN,IAAMyD,gBAAgB,GAAAxB,aAAA,KAAQjC,KAAK,CAAE;IACrC;IACA,OAAOyD,gBAAgB,CAAC1D,YAAY;IACpClC,GAAG,CAACgD,KAAK,CAAC,yBAAyB,EAAE7C,KAAK,EAAEyF,gBAAgB,CAAC;IAC7D,IAAIzF,KAAK,IAAID,gBAAgB,CAACC,KAAK,CAAC,EAAE;MACpCA,KAAK,CAACC,aAAa,CAACwF,gBAAgB,CAAC;IACvC;EACF;EAEAC,MAAMA,CAAA,EAAiB;IACrB,IAAAC,YAAA,GAAgD,IAAI,CAAC1E,KAAK;MAAlD8B,WAAW,GAAA4C,YAAA,CAAX5C,WAAW;MAAE6C,UAAU,GAAAD,YAAA,CAAVC,UAAU;MAAEpE,UAAU,GAAAmE,YAAA,CAAVnE,UAAU;IAC3C,IAAAqE,WAAA,GAAqC,IAAI,CAAC7D,KAAK;MAAvCD,YAAY,GAAA8D,WAAA,CAAZ9D,YAAY;MAAEJ,UAAU,GAAAkE,WAAA,CAAVlE,UAAU;IAChC,oBACE/B,IAAA,CAACN,KAAK;MACJwG,SAAS,EAAC,0BAA0B;MACpCC,cAAc,EAAE,IAAK;MACrBhD,WAAW,EAAEA,WAAY;MACzB6C,UAAU,EAAEA,UAAW;MACvBI,UAAU;MACVC,WAAW;MAAAC,QAAA,eAEXtG,IAAA;QAAKkG,SAAS,EAAC,8CAA8C;QAAAI,QAAA,eAC3DtG,IAAA,CAACL,gBAAgB;UACf4G,QAAQ,EAAE,IAAI,CAACjF,YAAa;UAC5BkF,OAAO,EAAE,IAAI,CAAChF,iBAAkB;UAChCiF,YAAY,EAAE,IAAI,CAAChF,gBAAiB;UACpCU,YAAY,EAAEA,YAAa;UAC3BP,UAAU,EAAEA,UAAW;UACvBG,UAAU,EAAEA,UAAqB;UACjCM,cAAc,EAAE,IAAI,CAACX;QAAqB,CAC3C;MAAC,CACC;IAAC,CACD,CAAC;EAEZ;AACF;AAACgF,eAAA,CAlUYpG,qBAAqB,kBAIV;EACpBqB,UAAU,EAAE;AACd,CAAC;AAAA+E,eAAA,CANUpG,qBAAqB,eAQb,uBAAuB;AA4T5C,IAAMqG,eAAe,GAAGA,CACtBvE,KAAgB,EAChBwE,QAAsC,KAMnC;EACH,IAAQ1B,gBAAgB,GAAK0B,QAAQ,CAA7B1B,gBAAgB;EACxB,OAAO;IACLtD,UAAU,EAAEvC,yBAAyB,CAAC+C,KAAK,EAAE8C,gBAAgB,CAAC;IAC9D5C,uBAAuB,EAAEpD,6BAA6B,CACpDkD,KAAK,EACL8C,gBACF,CAAC;IACD2B,qBAAqB,EAAEvH,2BAA2B,CAAC8C,KAAK,EAAE8C,gBAAgB,CAAC;IAC3EtB,aAAa,EAAErE,uBAAuB,CAAC6C,KAAK,EAAE8C,gBAAgB;EAChE,CAAC;AACH,CAAC;AAED,IAAM4B,8BAA8B,GAAG7H,OAAO,CAC5C0H,eAAe,EACf;EACEnH,sBAAsB,EAAEC;AAC1B,CAAC,EACD,IAAI,EACJ;EAAEsH,UAAU,EAAE;AAAK,CACrB,CAAC,CAACzG,qBAAqB,CAAC;AAExB,eAAewG,8BAA8B","ignoreList":[]}
|
|
@@ -19,17 +19,16 @@ class InputFilterPanel extends Component {
|
|
|
19
19
|
this.handleChange = debounce(this.handleChange.bind(this), INPUT_FILTER_DEBOUNCE);
|
|
20
20
|
this.handleClearAllFilters = this.handleClearAllFilters.bind(this);
|
|
21
21
|
this.inputFilterRef = /*#__PURE__*/React.createRef();
|
|
22
|
-
var
|
|
23
|
-
panelState
|
|
24
|
-
} = props;
|
|
22
|
+
var panelState = props.panelState;
|
|
25
23
|
// if panelstate is null, use destructured defaults
|
|
26
|
-
var {
|
|
27
|
-
value,
|
|
28
|
-
isValueShown =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
24
|
+
var _ref = panelState !== null && panelState !== void 0 ? panelState : {},
|
|
25
|
+
value = _ref.value,
|
|
26
|
+
_ref$isValueShown = _ref.isValueShown,
|
|
27
|
+
isValueShown = _ref$isValueShown === void 0 ? false : _ref$isValueShown,
|
|
28
|
+
name = _ref.name,
|
|
29
|
+
type = _ref.type,
|
|
30
|
+
_ref$timestamp = _ref.timestamp,
|
|
31
|
+
timestamp = _ref$timestamp === void 0 ? Date.now() : _ref$timestamp;
|
|
33
32
|
this.state = {
|
|
34
33
|
columns: [],
|
|
35
34
|
column: name != null && type != null ? {
|
|
@@ -47,54 +46,44 @@ class InputFilterPanel extends Component {
|
|
|
47
46
|
}
|
|
48
47
|
componentDidMount() {
|
|
49
48
|
this.updateColumns();
|
|
50
|
-
var
|
|
51
|
-
column,
|
|
52
|
-
value,
|
|
53
|
-
timestamp
|
|
54
|
-
} = this.state;
|
|
49
|
+
var _this$state = this.state,
|
|
50
|
+
column = _this$state.column,
|
|
51
|
+
value = _this$state.value,
|
|
52
|
+
timestamp = _this$state.timestamp;
|
|
55
53
|
if (column != null) {
|
|
56
|
-
var
|
|
57
|
-
|
|
58
|
-
type
|
|
59
|
-
} = column;
|
|
54
|
+
var name = column.name,
|
|
55
|
+
type = column.type;
|
|
60
56
|
this.sendUpdate(name, type, value, timestamp);
|
|
61
57
|
}
|
|
62
58
|
}
|
|
63
59
|
componentDidUpdate(prevProps) {
|
|
64
|
-
var
|
|
65
|
-
columns
|
|
66
|
-
} = this.props;
|
|
60
|
+
var columns = this.props.columns;
|
|
67
61
|
if (columns !== prevProps.columns) {
|
|
68
62
|
this.updateColumns();
|
|
69
63
|
}
|
|
70
64
|
}
|
|
71
|
-
handleChange(
|
|
72
|
-
var
|
|
73
|
-
|
|
74
|
-
isValueShown = false,
|
|
75
|
-
value
|
|
76
|
-
} = _ref;
|
|
65
|
+
handleChange(_ref2) {
|
|
66
|
+
var column = _ref2.column,
|
|
67
|
+
_ref2$isValueShown = _ref2.isValueShown,
|
|
68
|
+
isValueShown = _ref2$isValueShown === void 0 ? false : _ref2$isValueShown,
|
|
69
|
+
value = _ref2.value;
|
|
77
70
|
var name;
|
|
78
71
|
var type;
|
|
79
72
|
if (column != null) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
type
|
|
83
|
-
} = column);
|
|
73
|
+
name = column.name;
|
|
74
|
+
type = column.type;
|
|
84
75
|
}
|
|
85
76
|
var sendUpdate = true;
|
|
86
77
|
var timestamp = Date.now();
|
|
87
|
-
this.setState(
|
|
88
|
-
var
|
|
89
|
-
var
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
skipUpdate
|
|
94
|
-
} = _ref2;
|
|
78
|
+
this.setState(_ref3 => {
|
|
79
|
+
var _ref4;
|
|
80
|
+
var panelState = _ref3.panelState,
|
|
81
|
+
prevTimestamp = _ref3.timestamp,
|
|
82
|
+
wasFlipped = _ref3.wasFlipped,
|
|
83
|
+
skipUpdate = _ref3.skipUpdate;
|
|
95
84
|
// If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it
|
|
96
85
|
var isFlip = panelState != null && isValueShown !== panelState.isValueShown && name === panelState.name && type === panelState.type && value === panelState.value;
|
|
97
|
-
sendUpdate = (
|
|
86
|
+
sendUpdate = (_ref4 = !skipUpdate && isValueShown && (!isFlip || !wasFlipped)) !== null && _ref4 !== void 0 ? _ref4 : false;
|
|
98
87
|
if (!sendUpdate) {
|
|
99
88
|
timestamp = prevTimestamp;
|
|
100
89
|
}
|
|
@@ -121,9 +110,7 @@ class InputFilterPanel extends Component {
|
|
|
121
110
|
(_this$inputFilterRef$ = this.inputFilterRef.current) === null || _this$inputFilterRef$ === void 0 || _this$inputFilterRef$.clearFilter();
|
|
122
111
|
}
|
|
123
112
|
sendUpdate(name, type, value, timestamp) {
|
|
124
|
-
var
|
|
125
|
-
glEventHub
|
|
126
|
-
} = this.props;
|
|
113
|
+
var glEventHub = this.props.glEventHub;
|
|
127
114
|
var panelId = LayoutUtils.getIdFromPanel(this);
|
|
128
115
|
assertNotNull(panelId);
|
|
129
116
|
emitFilterChanged(glEventHub, panelId, name != null && type != null && value != null && timestamp != null ? {
|
|
@@ -152,27 +139,21 @@ class InputFilterPanel extends Component {
|
|
|
152
139
|
(_this$inputFilterRef$2 = this.inputFilterRef.current) === null || _this$inputFilterRef$2 === void 0 || _this$inputFilterRef$2.setFilterState(state);
|
|
153
140
|
}
|
|
154
141
|
updateColumns() {
|
|
155
|
-
var
|
|
156
|
-
columns
|
|
157
|
-
} = this.props;
|
|
142
|
+
var columns = this.props.columns;
|
|
158
143
|
if (columns == null) {
|
|
159
144
|
return;
|
|
160
145
|
}
|
|
161
146
|
this.setState(state => {
|
|
162
|
-
var
|
|
163
|
-
column
|
|
164
|
-
} = state;
|
|
147
|
+
var column = state.column;
|
|
165
148
|
if (column == null && columns.length > 0) {
|
|
166
149
|
return {
|
|
167
150
|
columns: [...columns],
|
|
168
151
|
column: columns[0]
|
|
169
152
|
};
|
|
170
153
|
}
|
|
171
|
-
if (column != null && !columns.find(
|
|
172
|
-
var
|
|
173
|
-
|
|
174
|
-
type
|
|
175
|
-
} = _ref4;
|
|
154
|
+
if (column != null && !columns.find(_ref5 => {
|
|
155
|
+
var name = _ref5.name,
|
|
156
|
+
type = _ref5.type;
|
|
176
157
|
return column.name === name && column.type === type;
|
|
177
158
|
})) {
|
|
178
159
|
return {
|
|
@@ -185,16 +166,14 @@ class InputFilterPanel extends Component {
|
|
|
185
166
|
});
|
|
186
167
|
}
|
|
187
168
|
render() {
|
|
188
|
-
var
|
|
189
|
-
glContainer,
|
|
190
|
-
glEventHub
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
value
|
|
197
|
-
} = this.state;
|
|
169
|
+
var _this$props = this.props,
|
|
170
|
+
glContainer = _this$props.glContainer,
|
|
171
|
+
glEventHub = _this$props.glEventHub;
|
|
172
|
+
var _this$state2 = this.state,
|
|
173
|
+
column = _this$state2.column,
|
|
174
|
+
columns = _this$state2.columns,
|
|
175
|
+
isValueShown = _this$state2.isValueShown,
|
|
176
|
+
value = _this$state2.value;
|
|
198
177
|
return /*#__PURE__*/_jsx(Panel, {
|
|
199
178
|
className: "iris-input-filter-panel",
|
|
200
179
|
componentPanel: this,
|
|
@@ -222,9 +201,7 @@ _defineProperty(InputFilterPanel, "COMPONENT", 'InputFilterPanel');
|
|
|
222
201
|
// otherwise it gets minified and breaks LayoutUtils.getComponentName
|
|
223
202
|
_defineProperty(InputFilterPanel, "displayName", 'InputFilterPanel');
|
|
224
203
|
var mapStateToProps = (state, ownProps) => {
|
|
225
|
-
var
|
|
226
|
-
localDashboardId
|
|
227
|
-
} = ownProps;
|
|
204
|
+
var localDashboardId = ownProps.localDashboardId;
|
|
228
205
|
return {
|
|
229
206
|
columns: getColumnsForDashboard(state, localDashboardId)
|
|
230
207
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputFilterPanel.js","names":["React","Component","connect","debounce","LayoutUtils","assertNotNull","Panel","InputFilter","getColumnsForDashboard","emitFilterChanged","jsx","_jsx","INPUT_FILTER_DEBOUNCE","InputFilterPanel","constructor","props","_defineProperty","handleChange","bind","handleClearAllFilters","inputFilterRef","createRef","panelState","value","isValueShown","name","type","timestamp","Date","now","state","columns","column","undefined","wasFlipped","skipUpdate","componentDidMount","updateColumns","sendUpdate","componentDidUpdate","prevProps","_ref","setState","_ref2","_ref3","prevTimestamp","isFlip","_this$inputFilterRef$","current","clearFilter","glEventHub","panelId","getIdFromPanel","setPanelState","_this$inputFilterRef$2","arguments","length","setFilterState","find","_ref4","render","glContainer","className","componentPanel","onClearAllFilters","isClonable","isRenamable","children","ref","onChange","mapStateToProps","ownProps","localDashboardId","ConnectedInputFilterPanel","forwardRef"],"sources":["../../src/panels/InputFilterPanel.tsx"],"sourcesContent":["import React, { Component, type RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { type RootState } from '@deephaven/redux';\nimport { LayoutUtils } from '@deephaven/dashboard';\nimport { assertNotNull } from '@deephaven/utils';\nimport Panel from './CorePanel';\nimport InputFilter, {\n type InputFilterColumn,\n} from '../controls/input-filter/InputFilter';\nimport { getColumnsForDashboard } from '../redux';\nimport { emitFilterChanged } from '../FilterEvents';\n\nconst INPUT_FILTER_DEBOUNCE = 250;\n\nexport interface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ninterface InputFilterPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n columns: InputFilterColumn[];\n}\n\ninterface InputFilterPanelState {\n columns: InputFilterColumn[];\n column?: InputFilterColumn;\n value?: string;\n timestamp: number;\n isValueShown: boolean;\n wasFlipped: boolean;\n skipUpdate: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel}\n}\nclass InputFilterPanel extends Component<\n InputFilterPanelProps,\n InputFilterPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'InputFilterPanel';\n\n // Have to explicitly specify displayName\n // otherwise it gets minified and breaks LayoutUtils.getComponentName\n static displayName = 'InputFilterPanel';\n\n constructor(props: InputFilterPanelProps) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n INPUT_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.inputFilterRef = React.createRef();\n\n const { panelState } = props;\n // if panelstate is null, use destructured defaults\n const {\n value,\n isValueShown = false,\n name,\n type,\n timestamp = Date.now(),\n } = panelState ?? {};\n\n this.state = {\n columns: [],\n column: name != null && type != null ? { name, type } : undefined,\n value,\n timestamp,\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount(): void {\n this.updateColumns();\n\n const { column, value, timestamp } = this.state;\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(prevProps: InputFilterPanelProps): void {\n const { columns } = this.props;\n if (columns !== prevProps.columns) {\n this.updateColumns();\n }\n }\n\n inputFilterRef: RefObject<InputFilter>;\n\n handleChange({\n column,\n isValueShown = false,\n value,\n }: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }): void {\n let name: string | undefined;\n let type: string | undefined;\n if (column != null) {\n ({ name, type } = column);\n }\n let sendUpdate = true;\n let timestamp = Date.now();\n this.setState(\n ({ panelState, timestamp: prevTimestamp, wasFlipped, skipUpdate }) => {\n // If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it\n const isFlip =\n panelState != null &&\n isValueShown !== panelState.isValueShown &&\n name === panelState.name &&\n type === panelState.type &&\n value === panelState.value;\n sendUpdate =\n (!skipUpdate && isValueShown && (!isFlip || !wasFlipped)) ?? false;\n\n if (!sendUpdate) {\n timestamp = prevTimestamp;\n }\n\n return {\n panelState: {\n isValueShown,\n name,\n type,\n value,\n timestamp,\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false,\n };\n },\n () => {\n if (sendUpdate) {\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n );\n }\n\n handleClearAllFilters(): void {\n this.inputFilterRef.current?.clearFilter();\n }\n\n sendUpdate(\n name?: string,\n type?: string,\n value?: string,\n timestamp?: number\n ): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterChanged(\n glEventHub,\n panelId,\n name != null && type != null && value != null && timestamp != null\n ? {\n name,\n type,\n value,\n timestamp,\n }\n : null\n );\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param state Filter state to set\n * @param sendUpdate Emit filters changed event if true\n */\n setPanelState(state: PanelState, sendUpdate = false): void {\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({ skipUpdate: !sendUpdate });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n this.inputFilterRef.current?.setFilterState(state);\n }\n\n updateColumns(): void {\n const { columns } = this.props;\n if (columns == null) {\n return;\n }\n\n this.setState(state => {\n const { column } = state;\n\n if (column == null && columns.length > 0) {\n return {\n columns: [...columns],\n column: columns[0],\n };\n }\n\n if (\n column != null &&\n !columns.find(\n ({ name, type }) => column.name === name && column.type === type\n )\n ) {\n return { columns: [...columns, column] };\n }\n\n return { columns: [...columns] };\n });\n }\n\n render(): JSX.Element {\n const { glContainer, glEventHub } = this.props;\n const { column, columns, isValueShown, value } = this.state;\n return (\n <Panel\n className=\"iris-input-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n isClonable\n isRenamable\n >\n <InputFilter\n ref={this.inputFilterRef}\n column={column}\n columns={columns}\n onChange={this.handleChange}\n isValueShown={isValueShown}\n value={value}\n />\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<InputFilterPanelProps, 'columns'> => {\n const { localDashboardId } = ownProps;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n };\n};\n\nconst ConnectedInputFilterPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(InputFilterPanel);\n\nexport default ConnectedInputFilterPanel;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"InputFilterPanel.js","names":["React","Component","connect","debounce","LayoutUtils","assertNotNull","Panel","InputFilter","getColumnsForDashboard","emitFilterChanged","jsx","_jsx","INPUT_FILTER_DEBOUNCE","InputFilterPanel","constructor","props","_defineProperty","handleChange","bind","handleClearAllFilters","inputFilterRef","createRef","panelState","_ref","value","_ref$isValueShown","isValueShown","name","type","_ref$timestamp","timestamp","Date","now","state","columns","column","undefined","wasFlipped","skipUpdate","componentDidMount","updateColumns","_this$state","sendUpdate","componentDidUpdate","prevProps","_ref2","_ref2$isValueShown","setState","_ref3","_ref4","prevTimestamp","isFlip","_this$inputFilterRef$","current","clearFilter","glEventHub","panelId","getIdFromPanel","setPanelState","_this$inputFilterRef$2","arguments","length","setFilterState","find","_ref5","render","_this$props","glContainer","_this$state2","className","componentPanel","onClearAllFilters","isClonable","isRenamable","children","ref","onChange","mapStateToProps","ownProps","localDashboardId","ConnectedInputFilterPanel","forwardRef"],"sources":["../../src/panels/InputFilterPanel.tsx"],"sourcesContent":["import React, { Component, type RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { type RootState } from '@deephaven/redux';\nimport { LayoutUtils } from '@deephaven/dashboard';\nimport { assertNotNull } from '@deephaven/utils';\nimport Panel from './CorePanel';\nimport InputFilter, {\n type InputFilterColumn,\n} from '../controls/input-filter/InputFilter';\nimport { getColumnsForDashboard } from '../redux';\nimport { emitFilterChanged } from '../FilterEvents';\n\nconst INPUT_FILTER_DEBOUNCE = 250;\n\nexport interface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ninterface InputFilterPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n columns: InputFilterColumn[];\n}\n\ninterface InputFilterPanelState {\n columns: InputFilterColumn[];\n column?: InputFilterColumn;\n value?: string;\n timestamp: number;\n isValueShown: boolean;\n wasFlipped: boolean;\n skipUpdate: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel}\n}\nclass InputFilterPanel extends Component<\n InputFilterPanelProps,\n InputFilterPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'InputFilterPanel';\n\n // Have to explicitly specify displayName\n // otherwise it gets minified and breaks LayoutUtils.getComponentName\n static displayName = 'InputFilterPanel';\n\n constructor(props: InputFilterPanelProps) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n INPUT_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.inputFilterRef = React.createRef();\n\n const { panelState } = props;\n // if panelstate is null, use destructured defaults\n const {\n value,\n isValueShown = false,\n name,\n type,\n timestamp = Date.now(),\n } = panelState ?? {};\n\n this.state = {\n columns: [],\n column: name != null && type != null ? { name, type } : undefined,\n value,\n timestamp,\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount(): void {\n this.updateColumns();\n\n const { column, value, timestamp } = this.state;\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(prevProps: InputFilterPanelProps): void {\n const { columns } = this.props;\n if (columns !== prevProps.columns) {\n this.updateColumns();\n }\n }\n\n inputFilterRef: RefObject<InputFilter>;\n\n handleChange({\n column,\n isValueShown = false,\n value,\n }: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }): void {\n let name: string | undefined;\n let type: string | undefined;\n if (column != null) {\n ({ name, type } = column);\n }\n let sendUpdate = true;\n let timestamp = Date.now();\n this.setState(\n ({ panelState, timestamp: prevTimestamp, wasFlipped, skipUpdate }) => {\n // If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it\n const isFlip =\n panelState != null &&\n isValueShown !== panelState.isValueShown &&\n name === panelState.name &&\n type === panelState.type &&\n value === panelState.value;\n sendUpdate =\n (!skipUpdate && isValueShown && (!isFlip || !wasFlipped)) ?? false;\n\n if (!sendUpdate) {\n timestamp = prevTimestamp;\n }\n\n return {\n panelState: {\n isValueShown,\n name,\n type,\n value,\n timestamp,\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false,\n };\n },\n () => {\n if (sendUpdate) {\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n );\n }\n\n handleClearAllFilters(): void {\n this.inputFilterRef.current?.clearFilter();\n }\n\n sendUpdate(\n name?: string,\n type?: string,\n value?: string,\n timestamp?: number\n ): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterChanged(\n glEventHub,\n panelId,\n name != null && type != null && value != null && timestamp != null\n ? {\n name,\n type,\n value,\n timestamp,\n }\n : null\n );\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param state Filter state to set\n * @param sendUpdate Emit filters changed event if true\n */\n setPanelState(state: PanelState, sendUpdate = false): void {\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({ skipUpdate: !sendUpdate });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n this.inputFilterRef.current?.setFilterState(state);\n }\n\n updateColumns(): void {\n const { columns } = this.props;\n if (columns == null) {\n return;\n }\n\n this.setState(state => {\n const { column } = state;\n\n if (column == null && columns.length > 0) {\n return {\n columns: [...columns],\n column: columns[0],\n };\n }\n\n if (\n column != null &&\n !columns.find(\n ({ name, type }) => column.name === name && column.type === type\n )\n ) {\n return { columns: [...columns, column] };\n }\n\n return { columns: [...columns] };\n });\n }\n\n render(): JSX.Element {\n const { glContainer, glEventHub } = this.props;\n const { column, columns, isValueShown, value } = this.state;\n return (\n <Panel\n className=\"iris-input-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n isClonable\n isRenamable\n >\n <InputFilter\n ref={this.inputFilterRef}\n column={column}\n columns={columns}\n onChange={this.handleChange}\n isValueShown={isValueShown}\n value={value}\n />\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n): Pick<InputFilterPanelProps, 'columns'> => {\n const { localDashboardId } = ownProps;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n };\n};\n\nconst ConnectedInputFilterPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(InputFilterPanel);\n\nexport default ConnectedInputFilterPanel;\n"],"mappings":"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","ignoreList":[]}
|