@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.
Files changed (105) hide show
  1. package/dist/ChartBuilderPlugin.js +8 -15
  2. package/dist/ChartBuilderPlugin.js.map +1 -1
  3. package/dist/ChartPanelPlugin.js +13 -6
  4. package/dist/ChartPanelPlugin.js.map +1 -1
  5. package/dist/ChartWidgetPlugin.js +11 -4
  6. package/dist/ChartWidgetPlugin.js.map +1 -1
  7. package/dist/ConsolePlugin.js +38 -46
  8. package/dist/ConsolePlugin.js.map +1 -1
  9. package/dist/FilterPlugin.js +63 -44
  10. package/dist/FilterPlugin.js.map +1 -1
  11. package/dist/GridPanelPlugin.js +3 -5
  12. package/dist/GridPanelPlugin.js.map +1 -1
  13. package/dist/GridWidgetPlugin.d.ts +18 -1
  14. package/dist/GridWidgetPlugin.d.ts.map +1 -1
  15. package/dist/GridWidgetPlugin.js +54 -30
  16. package/dist/GridWidgetPlugin.js.map +1 -1
  17. package/dist/LinkerPlugin.js +3 -5
  18. package/dist/LinkerPlugin.js.map +1 -1
  19. package/dist/MarkdownPlugin.js +18 -17
  20. package/dist/MarkdownPlugin.js.map +1 -1
  21. package/dist/PandasPanelPlugin.js +3 -5
  22. package/dist/PandasPanelPlugin.js.map +1 -1
  23. package/dist/PandasWidgetPlugin.js +3 -7
  24. package/dist/PandasWidgetPlugin.js.map +1 -1
  25. package/dist/TablePluginWrapper.js +8 -10
  26. package/dist/TablePluginWrapper.js.map +1 -1
  27. package/dist/WidgetLoaderPlugin.js +24 -29
  28. package/dist/WidgetLoaderPlugin.js.map +1 -1
  29. package/dist/controls/dropdown-filter/DropdownFilter.js +63 -79
  30. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  31. package/dist/controls/input-filter/InputFilter.js +32 -58
  32. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  33. package/dist/controls/markdown/MarkdownContainer.js +4 -5
  34. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  35. package/dist/controls/markdown/MarkdownEditor.js +7 -10
  36. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  37. package/dist/controls/markdown/MarkdownStartPage.js +8 -12
  38. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  39. package/dist/linker/Linker.js +100 -192
  40. package/dist/linker/Linker.js.map +1 -1
  41. package/dist/linker/LinkerLink.js +23 -31
  42. package/dist/linker/LinkerLink.js.map +1 -1
  43. package/dist/linker/LinkerOverlayContent.js +65 -66
  44. package/dist/linker/LinkerOverlayContent.js.map +1 -1
  45. package/dist/linker/LinkerUtils.js +6 -14
  46. package/dist/linker/LinkerUtils.js.map +1 -1
  47. package/dist/panels/ChartColumnSelectorOverlay.js +4 -6
  48. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  49. package/dist/panels/ChartFilterOverlay.js +7 -9
  50. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  51. package/dist/panels/ChartPanel.js +136 -220
  52. package/dist/panels/ChartPanel.js.map +1 -1
  53. package/dist/panels/ChartPanelUtils.js +3 -4
  54. package/dist/panels/ChartPanelUtils.js.map +1 -1
  55. package/dist/panels/CommandHistoryPanel.js +33 -52
  56. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  57. package/dist/panels/ConsolePanel.js +68 -130
  58. package/dist/panels/ConsolePanel.js.map +1 -1
  59. package/dist/panels/CorePanel.js +6 -18
  60. package/dist/panels/CorePanel.js.map +1 -1
  61. package/dist/panels/DropdownFilterPanel.js +109 -165
  62. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  63. package/dist/panels/FileExplorerPanel.js +30 -55
  64. package/dist/panels/FileExplorerPanel.js.map +1 -1
  65. package/dist/panels/FilterSetManager.js +81 -141
  66. package/dist/panels/FilterSetManager.js.map +1 -1
  67. package/dist/panels/FilterSetManagerPanel.js +68 -87
  68. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  69. package/dist/panels/InputFilterPanel.js +45 -68
  70. package/dist/panels/InputFilterPanel.js.map +1 -1
  71. package/dist/panels/IrisGridPanel.d.ts +28 -6
  72. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  73. package/dist/panels/IrisGridPanel.js +224 -280
  74. package/dist/panels/IrisGridPanel.js.map +1 -1
  75. package/dist/panels/IrisGridPanelTooltip.js +1 -3
  76. package/dist/panels/IrisGridPanelTooltip.js.map +1 -1
  77. package/dist/panels/LogPanel.js +6 -13
  78. package/dist/panels/LogPanel.js.map +1 -1
  79. package/dist/panels/MarkdownNotebook.js +28 -50
  80. package/dist/panels/MarkdownNotebook.js.map +1 -1
  81. package/dist/panels/MarkdownPanel.js +19 -38
  82. package/dist/panels/MarkdownPanel.js.map +1 -1
  83. package/dist/panels/NotebookPanel.js +157 -292
  84. package/dist/panels/NotebookPanel.js.map +1 -1
  85. package/dist/panels/PandasPanel.js +5 -15
  86. package/dist/panels/PandasPanel.js.map +1 -1
  87. package/dist/panels/PandasReloadButton.js +1 -3
  88. package/dist/panels/PandasReloadButton.js.map +1 -1
  89. package/dist/panels/WidgetPanel.js +42 -51
  90. package/dist/panels/WidgetPanel.js.map +1 -1
  91. package/dist/panels/WidgetPanelTooltip.js +6 -10
  92. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  93. package/dist/useConfigureRuff.js +8 -9
  94. package/dist/useConfigureRuff.js.map +1 -1
  95. package/dist/useDashboardColumnFilters.js +4 -7
  96. package/dist/useDashboardColumnFilters.js.map +1 -1
  97. package/dist/useGridLinker.js +9 -16
  98. package/dist/useGridLinker.js.map +1 -1
  99. package/dist/useIrisGridModel.d.ts +2 -2
  100. package/dist/useIrisGridModel.d.ts.map +1 -1
  101. package/dist/useIrisGridModel.js +34 -6
  102. package/dist/useIrisGridModel.js.map +1 -1
  103. package/dist/useTablePlugin.js +27 -14
  104. package/dist/useTablePlugin.js.map +1 -1
  105. 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 [index, filter] = _ref;
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
- panelState,
46
- filterSets
47
- } = props;
48
- var {
49
- selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,
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
- isValueShown,
113
- name,
114
- type,
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
- } = panelState;
152
- var {
153
- advancedFilters: indexedAdvancedFilters,
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(_ref2) {
176
- var {
177
- isValueShown,
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
- dashboardOpenedPanelMap
190
- } = this.props;
191
- var {
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(_ref3 => {
197
- var {
198
- panelId,
199
- type,
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(_ref4 => {
236
- var {
237
- selectedId,
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
- advancedFilters: prevAdvancedFilters = [],
255
- quickFilters: prevQuickFilters = []
256
- } = state;
257
- var {
258
- advancedFilters = prevAdvancedFilters,
259
- quickFilters = prevQuickFilters
260
- } = irisGridState;
261
- var {
262
- panelTableMap
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
- } = this.props;
301
- var {
302
- isValueShown,
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":"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","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 = false,
29
- name,
30
- type,
31
- timestamp = Date.now()
32
- } = panelState !== null && panelState !== void 0 ? panelState : {};
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
- name,
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(_ref) {
72
- var {
73
- column,
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
- name,
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(_ref2 => {
88
- var _ref3;
89
- var {
90
- panelState,
91
- timestamp: prevTimestamp,
92
- wasFlipped,
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 = (_ref3 = !skipUpdate && isValueShown && (!isFlip || !wasFlipped)) !== null && _ref3 !== void 0 ? _ref3 : false;
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(_ref4 => {
172
- var {
173
- name,
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
- } = this.props;
192
- var {
193
- column,
194
- columns,
195
- isValueShown,
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":[]}