@deephaven/dashboard-core-plugins 0.15.5-beta.0 → 0.15.5-beta.4

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 (186) hide show
  1. package/dist/ChartBuilderPlugin.d.ts.map +1 -1
  2. package/dist/ChartBuilderPlugin.js +2 -1
  3. package/dist/ChartBuilderPlugin.js.map +1 -1
  4. package/dist/ConsolePlugin.d.ts +1 -0
  5. package/dist/ConsolePlugin.d.ts.map +1 -1
  6. package/dist/ConsolePlugin.js +5 -3
  7. package/dist/ConsolePlugin.js.map +1 -1
  8. package/dist/FilterPlugin.js +1 -1
  9. package/dist/FilterPlugin.js.map +1 -1
  10. package/dist/controls/ControlType.d.ts +1 -1
  11. package/dist/controls/ControlType.d.ts.map +1 -1
  12. package/dist/controls/ControlType.js.map +1 -1
  13. package/dist/controls/dropdown-filter/DropdownFilter.d.ts +73 -81
  14. package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
  15. package/dist/controls/dropdown-filter/DropdownFilter.js +41 -58
  16. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  17. package/dist/controls/input-filter/InputFilter.d.ts +46 -46
  18. package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
  19. package/dist/controls/input-filter/InputFilter.js +32 -39
  20. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  21. package/dist/controls/markdown/MarkdownContainer.d.ts +11 -16
  22. package/dist/controls/markdown/MarkdownContainer.d.ts.map +1 -1
  23. package/dist/controls/markdown/MarkdownContainer.js +5 -8
  24. package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
  25. package/dist/controls/markdown/MarkdownEditor.d.ts +17 -19
  26. package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -1
  27. package/dist/controls/markdown/MarkdownEditor.js +5 -8
  28. package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
  29. package/dist/controls/markdown/MarkdownStartPage.d.ts +24 -28
  30. package/dist/controls/markdown/MarkdownStartPage.d.ts.map +1 -1
  31. package/dist/controls/markdown/MarkdownStartPage.js +19 -23
  32. package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
  33. package/dist/controls/markdown/MarkdownUtils.d.ts +4 -4
  34. package/dist/controls/markdown/MarkdownUtils.d.ts.map +1 -1
  35. package/dist/controls/markdown/MarkdownUtils.js +2 -2
  36. package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
  37. package/dist/events/ChartEvent.d.ts +1 -1
  38. package/dist/events/ChartEvent.d.ts.map +1 -1
  39. package/dist/events/ChartEvent.js.map +1 -1
  40. package/dist/events/ConsoleEvent.d.ts +1 -1
  41. package/dist/events/ConsoleEvent.d.ts.map +1 -1
  42. package/dist/events/ConsoleEvent.js.map +1 -1
  43. package/dist/events/InputFilterEvent.d.ts +1 -1
  44. package/dist/events/InputFilterEvent.d.ts.map +1 -1
  45. package/dist/events/InputFilterEvent.js.map +1 -1
  46. package/dist/events/IrisGridEvent.d.ts +1 -1
  47. package/dist/events/IrisGridEvent.d.ts.map +1 -1
  48. package/dist/events/IrisGridEvent.js.map +1 -1
  49. package/dist/events/NotebookEvent.d.ts +1 -1
  50. package/dist/events/NotebookEvent.d.ts.map +1 -1
  51. package/dist/events/NotebookEvent.js.map +1 -1
  52. package/dist/events/PQEvent.d.ts +1 -1
  53. package/dist/events/PQEvent.d.ts.map +1 -1
  54. package/dist/events/PQEvent.js.map +1 -1
  55. package/dist/events/PandasEvent.d.ts +1 -1
  56. package/dist/events/PandasEvent.d.ts.map +1 -1
  57. package/dist/events/PandasEvent.js.map +1 -1
  58. package/dist/events/TabEvent.d.ts +1 -1
  59. package/dist/events/TabEvent.d.ts.map +1 -1
  60. package/dist/events/TabEvent.js.map +1 -1
  61. package/dist/events/index.d.ts +8 -8
  62. package/dist/events/index.d.ts.map +1 -1
  63. package/dist/events/index.js.map +1 -1
  64. package/dist/linker/ColumnSelectionValidator.d.ts +4 -0
  65. package/dist/linker/ColumnSelectionValidator.d.ts.map +1 -0
  66. package/dist/linker/ColumnSelectionValidator.js +2 -0
  67. package/dist/linker/ColumnSelectionValidator.js.map +1 -0
  68. package/dist/linker/Linker.d.ts +11 -11
  69. package/dist/linker/Linker.js +1 -1
  70. package/dist/linker/Linker.js.map +1 -1
  71. package/dist/linker/LinkerUtils.d.ts +3 -3
  72. package/dist/linker/LinkerUtils.d.ts.map +1 -1
  73. package/dist/linker/LinkerUtils.js.map +1 -1
  74. package/dist/linker/ToolType.d.ts +1 -1
  75. package/dist/linker/ToolType.d.ts.map +1 -1
  76. package/dist/linker/ToolType.js.map +1 -1
  77. package/dist/panels/ChartColumnSelectorOverlay.d.ts +22 -26
  78. package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
  79. package/dist/panels/ChartColumnSelectorOverlay.js +5 -14
  80. package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
  81. package/dist/panels/ChartFilterOverlay.d.ts +27 -21
  82. package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
  83. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  84. package/dist/panels/ChartPanel.d.ts +149 -152
  85. package/dist/panels/ChartPanel.d.ts.map +1 -1
  86. package/dist/panels/ChartPanel.js +65 -73
  87. package/dist/panels/ChartPanel.js.map +1 -1
  88. package/dist/panels/CommandHistoryPanel.d.ts +41 -56
  89. package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
  90. package/dist/panels/CommandHistoryPanel.js +13 -35
  91. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  92. package/dist/panels/ConsolePanel.d.ts +63 -73
  93. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  94. package/dist/panels/ConsolePanel.js +67 -83
  95. package/dist/panels/ConsolePanel.js.map +1 -1
  96. package/dist/panels/DropdownFilterPanel.d.ts +110 -106
  97. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  98. package/dist/panels/DropdownFilterPanel.js +60 -62
  99. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  100. package/dist/panels/FileExplorerPanel.d.ts +5 -7
  101. package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
  102. package/dist/panels/FileExplorerPanel.js.map +1 -1
  103. package/dist/panels/FilterSetManager.d.ts +3 -1
  104. package/dist/panels/FilterSetManager.d.ts.map +1 -1
  105. package/dist/panels/FilterSetManager.js.map +1 -1
  106. package/dist/panels/FilterSetManagerPanel.d.ts +83 -62
  107. package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
  108. package/dist/panels/FilterSetManagerPanel.js +58 -36
  109. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  110. package/dist/panels/InputFilterPanel.d.ts +50 -51
  111. package/dist/panels/InputFilterPanel.d.ts.map +1 -1
  112. package/dist/panels/InputFilterPanel.js +35 -34
  113. package/dist/panels/InputFilterPanel.js.map +1 -1
  114. package/dist/panels/IrisGridPanel.d.ts +191 -178
  115. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  116. package/dist/panels/IrisGridPanel.js +150 -179
  117. package/dist/panels/IrisGridPanel.js.map +1 -1
  118. package/dist/panels/LogPanel.d.ts +29 -45
  119. package/dist/panels/LogPanel.d.ts.map +1 -1
  120. package/dist/panels/LogPanel.js +9 -11
  121. package/dist/panels/LogPanel.js.map +1 -1
  122. package/dist/panels/MarkdownNotebook.d.ts +34 -34
  123. package/dist/panels/MarkdownNotebook.d.ts.map +1 -1
  124. package/dist/panels/MarkdownNotebook.js +21 -18
  125. package/dist/panels/MarkdownNotebook.js.map +1 -1
  126. package/dist/panels/MarkdownPanel.d.ts +41 -47
  127. package/dist/panels/MarkdownPanel.d.ts.map +1 -1
  128. package/dist/panels/MarkdownPanel.js +17 -19
  129. package/dist/panels/MarkdownPanel.js.map +1 -1
  130. package/dist/panels/NotebookPanel.d.ts +137 -117
  131. package/dist/panels/NotebookPanel.d.ts.map +1 -1
  132. package/dist/panels/NotebookPanel.js +94 -68
  133. package/dist/panels/NotebookPanel.js.map +1 -1
  134. package/dist/panels/PandasPanel.d.ts +20 -17
  135. package/dist/panels/PandasPanel.d.ts.map +1 -1
  136. package/dist/panels/PandasPanel.js +17 -13
  137. package/dist/panels/PandasPanel.js.map +1 -1
  138. package/dist/panels/Panel.d.ts +87 -123
  139. package/dist/panels/Panel.d.ts.map +1 -1
  140. package/dist/panels/Panel.js +29 -54
  141. package/dist/panels/Panel.js.map +1 -1
  142. package/dist/panels/PanelContextMenu.d.ts +16 -31
  143. package/dist/panels/PanelContextMenu.d.ts.map +1 -1
  144. package/dist/panels/PanelContextMenu.js +12 -15
  145. package/dist/panels/PanelContextMenu.js.map +1 -1
  146. package/dist/panels/RenameDialog.d.ts +26 -28
  147. package/dist/panels/RenameDialog.d.ts.map +1 -1
  148. package/dist/panels/RenameDialog.js +15 -19
  149. package/dist/panels/RenameDialog.js.map +1 -1
  150. package/dist/panels/WidgetPanel.d.ts +72 -106
  151. package/dist/panels/WidgetPanel.d.ts.map +1 -1
  152. package/dist/panels/WidgetPanel.js +17 -47
  153. package/dist/panels/WidgetPanel.js.map +1 -1
  154. package/dist/panels/WidgetPanelTooltip.d.ts +29 -22
  155. package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -1
  156. package/dist/panels/WidgetPanelTooltip.js +1 -1
  157. package/dist/panels/WidgetPanelTooltip.js.map +1 -1
  158. package/dist/prop-types/CommonPropTypes.d.ts +4 -4
  159. package/dist/prop-types/CommonPropTypes.d.ts.map +1 -1
  160. package/dist/prop-types/CommonPropTypes.js +1 -1
  161. package/dist/prop-types/CommonPropTypes.js.map +1 -1
  162. package/dist/prop-types/UIPropTypes.d.ts +2 -7
  163. package/dist/prop-types/UIPropTypes.d.ts.map +1 -1
  164. package/dist/prop-types/UIPropTypes.js +0 -7
  165. package/dist/prop-types/UIPropTypes.js.map +1 -1
  166. package/dist/prop-types/index.d.ts +2 -2
  167. package/dist/prop-types/index.d.ts.map +1 -1
  168. package/dist/prop-types/index.js.map +1 -1
  169. package/dist/redux/actionTypes.d.ts +1 -1
  170. package/dist/redux/actionTypes.d.ts.map +1 -1
  171. package/dist/redux/actionTypes.js.map +1 -1
  172. package/dist/redux/actions.d.ts +63 -8
  173. package/dist/redux/actions.d.ts.map +1 -1
  174. package/dist/redux/actions.js +17 -17
  175. package/dist/redux/actions.js.map +1 -1
  176. package/dist/redux/reducers/index.d.ts +3 -4
  177. package/dist/redux/reducers/index.d.ts.map +1 -1
  178. package/dist/redux/reducers/index.js.map +1 -1
  179. package/dist/redux/reducers/sessionWrapper.d.ts +1 -1
  180. package/dist/redux/reducers/sessionWrapper.d.ts.map +1 -1
  181. package/dist/redux/reducers/sessionWrapper.js.map +1 -1
  182. package/dist/redux/selectors.d.ts +63 -9
  183. package/dist/redux/selectors.d.ts.map +1 -1
  184. package/dist/redux/selectors.js +24 -24
  185. package/dist/redux/selectors.js.map +1 -1
  186. package/package.json +20 -17
@@ -5,18 +5,22 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
7
7
  import React, { Component } from 'react';
8
- import PropTypes from 'prop-types';
9
8
  import { connect } from 'react-redux';
10
- import { getOpenedPanelMapForDashboard, GLPropTypes, LayoutUtils } from '@deephaven/dashboard';
9
+ import { getOpenedPanelMapForDashboard, LayoutUtils } from '@deephaven/dashboard';
11
10
  import Log from '@deephaven/log';
12
11
  import { getFilterSetsForDashboard, getInputFiltersForDashboard, getTableMapForDashboard, setDashboardFilterSets as setDashboardFilterSetsAction } from "../redux/index.js";
13
12
  import Panel from "./Panel.js";
14
13
  import FilterSetManager from "./FilterSetManager.js";
15
- import IrisGridPanel from "./IrisGridPanel.js";
16
- import InputFilterPanel from "./InputFilterPanel.js";
14
+ import { IrisGridPanel } from "./IrisGridPanel.js";
17
15
  import DropdownFilterPanel from "./DropdownFilterPanel.js";
16
+ import InputFilterPanel from "./InputFilterPanel.js";
18
17
  import "./FilterSetManagerPanel.css";
19
18
  var log = Log.module('FilterSetManagerPanel');
19
+
20
+ function hasSetPanelState(panel) {
21
+ return panel.setPanelState != null;
22
+ }
23
+
20
24
  export class FilterSetManagerPanel extends Component {
21
25
  static changeFilterIndexesToColumnNames(table, configs) {
22
26
  return configs.map(_ref => {
@@ -67,6 +71,12 @@ export class FilterSetManagerPanel extends Component {
67
71
  var panels = [];
68
72
  [...dashboardOpenedPanelMap.keys()].forEach(key => {
69
73
  var panel = dashboardOpenedPanelMap.get(key);
74
+
75
+ if (panel === undefined) {
76
+ log.error('Could not get panel', panel);
77
+ return;
78
+ }
79
+
70
80
  var componentName = LayoutUtils.getComponentNameFromPanel(panel);
71
81
  var panelId = LayoutUtils.getIdFromPanel(panel);
72
82
  log.debug('Panel:', panel, componentName);
@@ -96,13 +106,17 @@ export class FilterSetManagerPanel extends Component {
96
106
  switch (componentName) {
97
107
  case LayoutUtils.getComponentName(IrisGridPanel):
98
108
  {
99
- var state = this.getIrisGridPanelFilters(panelId, panelState);
109
+ var _state;
100
110
 
101
- if (state != null) {
111
+ if (panelId != null) {
112
+ _state = this.getIrisGridPanelFilters(panelId, panelState);
113
+ }
114
+
115
+ if (_state != null) {
102
116
  panels.push({
103
117
  panelId,
104
118
  type: componentName,
105
- state
119
+ state: _state
106
120
  });
107
121
  }
108
122
 
@@ -151,15 +165,28 @@ export class FilterSetManagerPanel extends Component {
151
165
 
152
166
 
153
167
  var {
154
- irisGridState = {},
168
+ irisGridState = {
169
+ advancedFilters: undefined,
170
+ quickFilters: undefined
171
+ },
155
172
  gridState = {}
156
173
  } = panelState;
157
174
  var {
158
175
  advancedFilters: indexedAdvancedFilters,
159
176
  quickFilters: indexedQuickFilters
160
177
  } = irisGridState;
161
- var advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, indexedAdvancedFilters);
162
- var quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, indexedQuickFilters);
178
+ var advancedFilters;
179
+
180
+ if (indexedAdvancedFilters) {
181
+ advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, indexedAdvancedFilters);
182
+ }
183
+
184
+ var quickFilters;
185
+
186
+ if (indexedQuickFilters) {
187
+ quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, indexedQuickFilters);
188
+ }
189
+
163
190
  return {
164
191
  irisGridState: _objectSpread(_objectSpread({}, irisGridState), {}, {
165
192
  advancedFilters,
@@ -202,6 +229,11 @@ export class FilterSetManagerPanel extends Component {
202
229
  state
203
230
  } = _ref3;
204
231
 
232
+ if (panelId == null) {
233
+ log.debug('panel is null', panelId);
234
+ return;
235
+ }
236
+
205
237
  if (!dashboardOpenedPanelMap.has(panelId)) {
206
238
  log.debug('Ignore closed panel', panelId);
207
239
  return;
@@ -268,6 +300,12 @@ export class FilterSetManagerPanel extends Component {
268
300
  panelTableMap
269
301
  } = this.props;
270
302
  var panelId = LayoutUtils.getIdFromPanel(panel);
303
+
304
+ if (panelId == null) {
305
+ log.error("Panel Id is null.");
306
+ return;
307
+ }
308
+
271
309
  var table = panelTableMap.get(panelId);
272
310
 
273
311
  if (table == null) {
@@ -281,8 +319,8 @@ export class FilterSetManagerPanel extends Component {
281
319
  panel.setStateOverrides(state);
282
320
  } else {
283
321
  panel.setFilters({
284
- quickFilters,
285
- advancedFilters
322
+ quickFilters: quickFilters,
323
+ advancedFilters: advancedFilters
286
324
  });
287
325
  }
288
326
  } // eslint-disable-next-line class-methods-use-this
@@ -294,7 +332,10 @@ export class FilterSetManagerPanel extends Component {
294
332
 
295
333
  delete inputFilterState.isValueShown;
296
334
  log.debug('restoreInputFilterState', panel, inputFilterState);
297
- panel.setPanelState(inputFilterState);
335
+
336
+ if (panel && hasSetPanelState(panel)) {
337
+ panel.setPanelState(inputFilterState);
338
+ }
298
339
  }
299
340
 
300
341
  render() {
@@ -329,30 +370,11 @@ export class FilterSetManagerPanel extends Component {
329
370
 
330
371
  }
331
372
 
332
- _defineProperty(FilterSetManagerPanel, "COMPONENT", 'FilterSetManagerPanel');
333
-
334
- FilterSetManagerPanel.propTypes = {
335
- glContainer: GLPropTypes.Container.isRequired,
336
- glEventHub: GLPropTypes.EventHub.isRequired,
337
- panelState: PropTypes.shape({
338
- name: PropTypes.string,
339
- type: PropTypes.string,
340
- selectedId: PropTypes.string,
341
- isValueShown: PropTypes.bool
342
- }),
343
- filterSets: PropTypes.arrayOf(PropTypes.shape({
344
- id: PropTypes.string.isRequired,
345
- title: PropTypes.string.isRequired,
346
- panels: PropTypes.arrayOf(PropTypes.shape({})).isRequired
347
- })).isRequired,
348
- localDashboardId: PropTypes.string.isRequired,
349
- dashboardOpenedPanelMap: PropTypes.instanceOf(Map).isRequired,
350
- setDashboardFilterSets: PropTypes.func.isRequired,
351
- panelTableMap: PropTypes.instanceOf(Map).isRequired
352
- };
353
- FilterSetManagerPanel.defaultProps = {
373
+ _defineProperty(FilterSetManagerPanel, "defaultProps", {
354
374
  panelState: null
355
- };
375
+ });
376
+
377
+ _defineProperty(FilterSetManagerPanel, "COMPONENT", 'FilterSetManagerPanel');
356
378
 
357
379
  var mapStateToProps = (state, ownProps) => {
358
380
  var {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":["React","Component","PropTypes","connect","getOpenedPanelMapForDashboard","GLPropTypes","LayoutUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","InputFilterPanel","DropdownFilterPanel","log","module","FilterSetManagerPanel","changeFilterIndexesToColumnNames","table","configs","map","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","panel","get","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","error","getComponentConfigFromContainer","getPanelComponentState","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","gridState","advancedFilters","indexedAdvancedFilters","quickFilters","indexedQuickFilters","setState","updatePanelState","filterSet","restoreFullState","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","localDashboardId","prevAdvancedFilters","prevQuickFilters","setStateOverrides","setFilters","inputFilterState","setPanelState","render","glEventHub","propTypes","Container","isRequired","EventHub","shape","string","bool","arrayOf","title","instanceOf","Map","func","defaultProps","mapStateToProps","ownProps","dashboardInputFilters","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n GLPropTypes,\n LayoutUtils,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './Panel';\nimport FilterSetManager from './FilterSetManager';\nimport IrisGridPanel from './IrisGridPanel';\nimport InputFilterPanel from './InputFilterPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\n\nimport './FilterSetManagerPanel.scss';\n\nconst log = Log.module('FilterSetManagerPanel');\n\nexport class FilterSetManagerPanel extends Component {\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterIndexesToColumnNames(table, configs) {\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);\n }\n\n constructor(props) {\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() {\n const { dashboardOpenedPanelMap } = this.props;\n const panels = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\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(config);\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n const state = this.getIrisGridPanelFilters(panelId, panelState);\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(panelId, panelState) {\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 { irisGridState = {}, gridState = {} } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters,\n quickFilters: indexedQuickFilters,\n } = irisGridState;\n const advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedAdvancedFilters\n );\n const quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedQuickFilters\n );\n return {\n irisGridState: {\n ...irisGridState,\n advancedFilters,\n quickFilters,\n },\n gridState: { ...gridState },\n };\n }\n\n handleGetFilterState() {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }) {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet) {\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 (!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(panel, state, restoreFullState);\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets) {\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() {\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(panel, state, restoreFullState) {\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 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({ quickFilters, advancedFilters });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(panel, state) {\n const inputFilterState = { ...state };\n // Restore state but don't flip the card\n delete inputFilterState.isValueShown;\n log.debug('restoreInputFilterState', panel, inputFilterState);\n panel.setPanelState(inputFilterState);\n }\n\n render() {\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}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nFilterSetManagerPanel.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n panelState: PropTypes.shape({\n name: PropTypes.string,\n type: PropTypes.string,\n selectedId: PropTypes.string,\n isValueShown: PropTypes.bool,\n }),\n filterSets: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n panels: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n })\n ).isRequired,\n localDashboardId: PropTypes.string.isRequired,\n dashboardOpenedPanelMap: PropTypes.instanceOf(Map).isRequired,\n setDashboardFilterSets: PropTypes.func.isRequired,\n panelTableMap: PropTypes.instanceOf(Map).isRequired,\n};\n\nFilterSetManagerPanel.defaultProps = {\n panelState: null,\n};\n\nconst mapStateToProps = (state, ownProps) => {\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\nexport default connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n"],"file":"FilterSetManagerPanel.js"}
1
+ {"version":3,"sources":["../../src/panels/FilterSetManagerPanel.tsx"],"names":["React","Component","connect","getOpenedPanelMapForDashboard","LayoutUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","DropdownFilterPanel","InputFilterPanel","log","module","hasSetPanelState","panel","setPanelState","FilterSetManagerPanel","changeFilterIndexesToColumnNames","table","configs","map","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","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","quickFilters","gridState","indexedAdvancedFilters","indexedQuickFilters","setState","updatePanelState","filterSet","restoreFullState","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","localDashboardId","prevAdvancedFilters","prevQuickFilters","setStateOverrides","setFilters","inputFilterState","render","glEventHub","mapStateToProps","ownProps","dashboardInputFilters","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n LayoutUtils,\n PanelComponent,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { TableTemplate } from '@deephaven/jsapi-shim';\nimport { RootState } from '@deephaven/redux';\nimport {\n AdvancedFilter,\n ColumnName,\n DehydratedIrisGridState,\n QuickFilter,\n} from '@deephaven/iris-grid';\nimport { GridState } from '@deephaven/grid';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './Panel';\nimport FilterSetManager, {\n ChangeHandlerArgs,\n FilterSet,\n FilterSetPanel,\n} from './FilterSetManager';\nimport { IrisGridPanel } from './IrisGridPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\nimport InputFilterPanel, {\n PanelState as InputFilterPanelState,\n} from './InputFilterPanel';\nimport './FilterSetManagerPanel.scss';\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[], TableTemplate>;\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(\n panel: PanelComponent\n): panel is PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n} {\n return (\n (panel as PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\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: TableTemplate,\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) => {\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\nexport default connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n"],"file":"FilterSetManagerPanel.js"}
@@ -1,60 +1,59 @@
1
- declare var _default: import("react-redux").ConnectedComponent<typeof InputFilterPanel, any>;
2
- export default _default;
3
- declare class InputFilterPanel extends React.Component<any, any, any> {
1
+ import { Component, RefObject } from 'react';
2
+ import { Container, EventEmitter } from '@deephaven/golden-layout';
3
+ import InputFilter, { InputFilterColumn } from '../controls/input-filter/InputFilter';
4
+ export interface PanelState {
5
+ name?: string;
6
+ type?: string;
7
+ value?: string;
8
+ isValueShown?: boolean;
9
+ timestamp?: number;
10
+ }
11
+ interface InputFilterPanelProps {
12
+ glContainer: Container;
13
+ glEventHub: EventEmitter;
14
+ panelState: PanelState;
15
+ columns: InputFilterColumn[];
16
+ }
17
+ interface InputFilterPanelState {
18
+ columns: InputFilterColumn[];
19
+ column?: InputFilterColumn;
20
+ value?: string;
21
+ timestamp?: number;
22
+ isValueShown: boolean;
23
+ wasFlipped: boolean;
24
+ skipUpdate: boolean;
25
+ panelState: PanelState;
26
+ }
27
+ declare class InputFilterPanel extends Component<InputFilterPanelProps, InputFilterPanelState> {
28
+ static defaultProps: {
29
+ panelState: null;
30
+ };
4
31
  static COMPONENT: string;
5
- constructor(props: any);
6
- handleChange({ column, isValueShown, value }: {
7
- column: any;
8
- isValueShown: any;
9
- value: any;
32
+ static displayName: string;
33
+ constructor(props: InputFilterPanelProps);
34
+ componentDidMount(): void;
35
+ componentDidUpdate(prevProps: InputFilterPanelProps): void;
36
+ inputFilterRef: RefObject<InputFilter>;
37
+ handleChange({ column, isValueShown, value, }: {
38
+ column?: InputFilterColumn;
39
+ isValueShown?: boolean;
40
+ value?: string;
10
41
  }): void;
11
42
  handleClearAllFilters(): void;
12
- inputFilterRef: React.RefObject<any>;
13
- sendUpdate(name: any, type: any, value: any, timestamp: any): void;
43
+ sendUpdate(name?: string, type?: string, value?: string, timestamp?: number): void;
14
44
  /**
15
45
  * Set the filter value, card side, selected column
16
- * @param {Object} state Filter state to set
17
- * @param {boolean} sendUpdate Emit filters changed event if true
46
+ * @param state Filter state to set
47
+ * @param sendUpdate Emit filters changed event if true
18
48
  */
19
- setPanelState(state: Object, sendUpdate?: boolean): void;
49
+ setPanelState(state: PanelState, sendUpdate?: boolean): void;
20
50
  updateColumns(): void;
51
+ render(): JSX.Element;
21
52
  }
22
- declare namespace InputFilterPanel {
23
- namespace propTypes {
24
- const glContainer: PropTypes.Validator<PropTypes.InferProps<{
25
- on: PropTypes.Requireable<(...args: any[]) => any>;
26
- off: PropTypes.Requireable<(...args: any[]) => any>;
27
- isHidden: PropTypes.Requireable<boolean>;
28
- tab: PropTypes.Requireable<PropTypes.InferProps<{
29
- header: PropTypes.Requireable<PropTypes.InferProps<{
30
- tabs: PropTypes.Requireable<(PropTypes.InferProps<{
31
- contentItem: PropTypes.Requireable<PropTypes.InferProps<{}>>;
32
- }> | null | undefined)[]>;
33
- }>>;
34
- }>>;
35
- title: PropTypes.Requireable<string>;
36
- setTitle: PropTypes.Requireable<(...args: any[]) => any>;
37
- close: PropTypes.Requireable<(...args: any[]) => any>;
38
- }>>;
39
- const glEventHub: PropTypes.Validator<PropTypes.InferProps<{
40
- on: PropTypes.Requireable<(...args: any[]) => any>;
41
- off: PropTypes.Requireable<(...args: any[]) => any>;
42
- emit: PropTypes.Requireable<(...args: any[]) => any>;
43
- }>>;
44
- const panelState: PropTypes.Requireable<PropTypes.InferProps<{
45
- name: PropTypes.Requireable<string>;
46
- type: PropTypes.Requireable<string>;
47
- value: PropTypes.Requireable<string>;
48
- isValueShown: PropTypes.Requireable<boolean>;
49
- }>>;
50
- const columns: PropTypes.Validator<(PropTypes.InferProps<{}> | null | undefined)[]>;
51
- }
52
- namespace defaultProps {
53
- const panelState_1: null;
54
- export { panelState_1 as panelState };
55
- }
56
- const displayName: string;
57
- }
58
- import React from "react";
59
- import PropTypes from "prop-types";
53
+ declare const _default: import("react-redux").ConnectedComponent<typeof InputFilterPanel, import("react-redux").Omit<Pick<InputFilterPanelProps, "glContainer" | "glEventHub" | "columns"> & Partial<Pick<InputFilterPanelProps, "panelState">> & Partial<Pick<{
54
+ panelState: null;
55
+ }, never>>, "columns"> & {
56
+ localDashboardId: string;
57
+ }>;
58
+ export default _default;
60
59
  //# sourceMappingURL=InputFilterPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputFilterPanel.d.ts","sourceRoot":"","sources":["../../src/panels/InputFilterPanel.jsx"],"names":[],"mappings":";;AAYA;IACE,yBAAsC;IAEtC,wBA2BC;IAmBD;;;;aAsCC;IAED,8BAEC;IA/EC,qCAAuC;IAiFzC,mEAQC;IAED;;;;OAIG;IACH,qBAHW,MAAM,eACN,OAAO,QASjB;IAED,sBA2BC;CA0BF"}
1
+ {"version":3,"file":"InputFilterPanel.d.ts","sourceRoot":"","sources":["../../src/panels/InputFilterPanel.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGnE,OAAO,WAAW,EAAE,EAClB,iBAAiB,EAClB,MAAM,sCAAsC,CAAC;AAM9C,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,qBAAqB;IAC7B,WAAW,EAAE,SAAS,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IAEpB,UAAU,EAAE,UAAU,CAAC;CACxB;AACD,cAAM,gBAAiB,SAAQ,SAAS,CACtC,qBAAqB,EACrB,qBAAqB,CACtB;IACC,MAAM,CAAC,YAAY;;MAEjB;IAEF,MAAM,CAAC,SAAS,SAAsB;IAItC,MAAM,CAAC,WAAW,SAAsB;gBAE5B,KAAK,EAAE,qBAAqB;IA6BxC,iBAAiB;IAUjB,kBAAkB,CAAC,SAAS,EAAE,qBAAqB;IAOnD,cAAc,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAEvC,YAAY,CAAC,EACX,MAAM,EACN,YAAY,EACZ,KAAK,GACN,EAAE;QACD,MAAM,CAAC,EAAE,iBAAiB,CAAC;QAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IA6CD,qBAAqB,IAAI,IAAI;IAI7B,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAU3E;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,UAAQ;IASnD,aAAa;IA6Bb,MAAM;CAwBP;;;;;;AAaD,wBAEE"}
@@ -1,10 +1,8 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
2
 
3
3
  import React, { Component } from 'react';
4
- import PropTypes from 'prop-types';
5
4
  import { connect } from 'react-redux';
6
5
  import debounce from 'lodash.debounce';
7
- import { GLPropTypes } from '@deephaven/dashboard';
8
6
  import Panel from "./Panel.js";
9
7
  import InputFilter from "../controls/input-filter/InputFilter.js";
10
8
  import { InputFilterEvent } from "../events/index.js";
@@ -12,8 +10,13 @@ import { getColumnsForDashboard } from "../redux/index.js";
12
10
  var INPUT_FILTER_DEBOUNCE = 250;
13
11
 
14
12
  class InputFilterPanel extends Component {
13
+ // Have to explicitly specify displayName
14
+ // otherwise it gets minified and breaks LayoutUtils.getComponentName
15
15
  constructor(props) {
16
16
  super(props);
17
+
18
+ _defineProperty(this, "inputFilterRef", void 0);
19
+
17
20
  this.handleChange = debounce(this.handleChange.bind(this), INPUT_FILTER_DEBOUNCE);
18
21
  this.handleClearAllFilters = this.handleClearAllFilters.bind(this);
19
22
  this.inputFilterRef = /*#__PURE__*/React.createRef();
@@ -22,18 +25,18 @@ class InputFilterPanel extends Component {
22
25
  } = props; // if panelstate is null, use destructured defaults
23
26
 
24
27
  var {
25
- value = null,
28
+ value,
26
29
  isValueShown = false,
27
30
  name,
28
31
  type,
29
- timestamp = null
32
+ timestamp
30
33
  } = panelState !== null && panelState !== void 0 ? panelState : {};
31
34
  this.state = {
32
35
  columns: [],
33
36
  column: name && type ? {
34
37
  name,
35
38
  type
36
- } : null,
39
+ } : undefined,
37
40
  value,
38
41
  timestamp,
39
42
  isValueShown,
@@ -78,13 +81,21 @@ class InputFilterPanel extends Component {
78
81
  isValueShown,
79
82
  value
80
83
  } = _ref;
81
- var {
82
- name,
83
- type
84
- } = column;
84
+ var name;
85
+ var type;
86
+
87
+ if (column != null) {
88
+ ({
89
+ name,
90
+ type
91
+ } = column);
92
+ }
93
+
85
94
  var sendUpdate = true;
86
95
  var timestamp = Date.now();
87
96
  this.setState(_ref2 => {
97
+ var _ref3;
98
+
88
99
  var {
89
100
  panelState,
90
101
  timestamp: prevTimestamp,
@@ -93,7 +104,7 @@ class InputFilterPanel extends Component {
93
104
  } = _ref2;
94
105
  // If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it
95
106
  var isFlip = panelState != null && isValueShown !== panelState.isValueShown && name === panelState.name && type === panelState.type && value === panelState.value;
96
- sendUpdate = !skipUpdate && isValueShown && (!isFlip || !wasFlipped);
107
+ sendUpdate = (_ref3 = !skipUpdate && isValueShown && (!isFlip || !wasFlipped)) !== null && _ref3 !== void 0 ? _ref3 : false;
97
108
 
98
109
  if (!sendUpdate) {
99
110
  timestamp = prevTimestamp;
@@ -119,7 +130,9 @@ class InputFilterPanel extends Component {
119
130
  }
120
131
 
121
132
  handleClearAllFilters() {
122
- this.inputFilterRef.current.clearFilter();
133
+ var _this$inputFilterRef$;
134
+
135
+ (_this$inputFilterRef$ = this.inputFilterRef.current) === null || _this$inputFilterRef$ === void 0 ? void 0 : _this$inputFilterRef$.clearFilter();
123
136
  }
124
137
 
125
138
  sendUpdate(name, type, value, timestamp) {
@@ -135,13 +148,13 @@ class InputFilterPanel extends Component {
135
148
  }
136
149
  /**
137
150
  * Set the filter value, card side, selected column
138
- * @param {Object} state Filter state to set
139
- * @param {boolean} sendUpdate Emit filters changed event if true
151
+ * @param state Filter state to set
152
+ * @param sendUpdate Emit filters changed event if true
140
153
  */
141
154
 
142
155
 
143
156
  setPanelState(state) {
144
- var _this$inputFilterRef$;
157
+ var _this$inputFilterRef$2;
145
158
 
146
159
  var sendUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
147
160
  // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event
@@ -150,7 +163,7 @@ class InputFilterPanel extends Component {
150
163
  }); // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes
151
164
  // Setting the ref state directly triggers the onChange handler and updates the panelState
152
165
 
153
- (_this$inputFilterRef$ = this.inputFilterRef.current) === null || _this$inputFilterRef$ === void 0 ? void 0 : _this$inputFilterRef$.setFilterState(state);
166
+ (_this$inputFilterRef$2 = this.inputFilterRef.current) === null || _this$inputFilterRef$2 === void 0 ? void 0 : _this$inputFilterRef$2.setFilterState(state);
154
167
  }
155
168
 
156
169
  updateColumns() {
@@ -174,11 +187,11 @@ class InputFilterPanel extends Component {
174
187
  };
175
188
  }
176
189
 
177
- if (column != null && !columns.find(_ref3 => {
190
+ if (column != null && !columns.find(_ref4 => {
178
191
  var {
179
192
  name,
180
193
  type
181
- } = _ref3;
194
+ } = _ref4;
182
195
  return column.name === name && column.type === type;
183
196
  })) {
184
197
  return {
@@ -223,25 +236,13 @@ class InputFilterPanel extends Component {
223
236
 
224
237
  }
225
238
 
226
- _defineProperty(InputFilterPanel, "COMPONENT", 'InputFilterPanel');
227
-
228
- InputFilterPanel.propTypes = {
229
- glContainer: GLPropTypes.Container.isRequired,
230
- glEventHub: GLPropTypes.EventHub.isRequired,
231
- panelState: PropTypes.shape({
232
- name: PropTypes.string,
233
- type: PropTypes.string,
234
- value: PropTypes.string,
235
- isValueShown: PropTypes.bool
236
- }),
237
- columns: PropTypes.arrayOf(PropTypes.shape({})).isRequired
238
- };
239
- InputFilterPanel.defaultProps = {
239
+ _defineProperty(InputFilterPanel, "defaultProps", {
240
240
  panelState: null
241
- }; // Have to explicitly specify displayName
242
- // otherwise it gets minified and breaks LayoutUtils.getComponentName
241
+ });
242
+
243
+ _defineProperty(InputFilterPanel, "COMPONENT", 'InputFilterPanel');
243
244
 
244
- InputFilterPanel.displayName = 'InputFilterPanel';
245
+ _defineProperty(InputFilterPanel, "displayName", 'InputFilterPanel');
245
246
 
246
247
  var mapStateToProps = (state, ownProps) => {
247
248
  var {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/InputFilterPanel.jsx"],"names":["React","Component","PropTypes","connect","debounce","GLPropTypes","Panel","InputFilter","InputFilterEvent","getColumnsForDashboard","INPUT_FILTER_DEBOUNCE","InputFilterPanel","constructor","props","handleChange","bind","handleClearAllFilters","inputFilterRef","createRef","panelState","value","isValueShown","name","type","timestamp","state","columns","column","wasFlipped","skipUpdate","componentDidMount","updateColumns","sendUpdate","componentDidUpdate","prevProps","Date","now","setState","prevTimestamp","isFlip","current","clearFilter","glEventHub","emit","FILTERS_CHANGED","setPanelState","setFilterState","length","find","render","glContainer","propTypes","Container","isRequired","EventHub","shape","string","bool","arrayOf","defaultProps","displayName","mapStateToProps","ownProps","localDashboardId","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { GLPropTypes } from '@deephaven/dashboard';\nimport Panel from './Panel';\nimport InputFilter from '../controls/input-filter/InputFilter';\nimport { InputFilterEvent } from '../events';\nimport { getColumnsForDashboard } from '../redux';\n\nconst INPUT_FILTER_DEBOUNCE = 250;\n\nclass InputFilterPanel extends Component {\n static COMPONENT = 'InputFilterPanel';\n\n constructor(props) {\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 { value = null, isValueShown = false, name, type, timestamp = null } =\n panelState ?? {};\n\n this.state = {\n columns: [],\n column: name && type ? { name, type } : null,\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() {\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) {\n const { columns } = this.props;\n if (columns !== prevProps.columns) {\n this.updateColumns();\n }\n }\n\n handleChange({ column, isValueShown, value }) {\n const { name, type } = column;\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 = !skipUpdate && isValueShown && (!isFlip || !wasFlipped);\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() {\n this.inputFilterRef.current.clearFilter();\n }\n\n sendUpdate(name, type, value, timestamp) {\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.FILTERS_CHANGED, this, {\n name,\n type,\n value,\n timestamp,\n });\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param {Object} state Filter state to set\n * @param {boolean} sendUpdate Emit filters changed event if true\n */\n setPanelState(state, sendUpdate = false) {\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() {\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() {\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\nInputFilterPanel.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n panelState: PropTypes.shape({\n name: PropTypes.string,\n type: PropTypes.string,\n value: PropTypes.string,\n isValueShown: PropTypes.bool,\n }),\n columns: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n};\n\nInputFilterPanel.defaultProps = {\n panelState: null,\n};\n\n// Have to explicitly specify displayName\n// otherwise it gets minified and breaks LayoutUtils.getComponentName\nInputFilterPanel.displayName = 'InputFilterPanel';\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n InputFilterPanel\n);\n"],"file":"InputFilterPanel.js"}
1
+ {"version":3,"sources":["../../src/panels/InputFilterPanel.tsx"],"names":["React","Component","connect","debounce","Panel","InputFilter","InputFilterEvent","getColumnsForDashboard","INPUT_FILTER_DEBOUNCE","InputFilterPanel","constructor","props","handleChange","bind","handleClearAllFilters","inputFilterRef","createRef","panelState","value","isValueShown","name","type","timestamp","state","columns","column","undefined","wasFlipped","skipUpdate","componentDidMount","updateColumns","sendUpdate","componentDidUpdate","prevProps","Date","now","setState","prevTimestamp","isFlip","current","clearFilter","glEventHub","emit","FILTERS_CHANGED","setPanelState","setFilterState","length","find","render","glContainer","mapStateToProps","ownProps","localDashboardId","forwardRef"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAA4C,OAA5C;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,OAAOC,QAAP,MAAqB,iBAArB;OAGOC,K;OACAC,W;SAGEC,gB;SACAC,sB;AAET,IAAMC,qBAAqB,GAAG,GAA9B;;AA4BA,MAAMC,gBAAN,SAA+BR,SAA/B,CAGE;AAOA;AACA;AAGAS,EAAAA,WAAW,CAACC,KAAD,EAA+B;AACxC,UAAMA,KAAN;;AADwC;;AAGxC,SAAKC,YAAL,GAAoBT,QAAQ,CAC1B,KAAKS,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAD0B,EAE1BL,qBAF0B,CAA5B;AAIA,SAAKM,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BD,IAA3B,CAAgC,IAAhC,CAA7B;AAEA,SAAKE,cAAL,gBAAsBf,KAAK,CAACgB,SAAN,EAAtB;AAEA,QAAM;AAAEC,MAAAA;AAAF,QAAiBN,KAAvB,CAXwC,CAYxC;;AACA,QAAM;AAAEO,MAAAA,KAAF;AAASC,MAAAA,YAAY,GAAG,KAAxB;AAA+BC,MAAAA,IAA/B;AAAqCC,MAAAA,IAArC;AAA2CC,MAAAA;AAA3C,QACJL,UADI,aACJA,UADI,cACJA,UADI,GACU,EADhB;AAGA,SAAKM,KAAL,GAAa;AACXC,MAAAA,OAAO,EAAE,EADE;AAEXC,MAAAA,MAAM,EAAEL,IAAI,IAAIC,IAAR,GAAe;AAAED,QAAAA,IAAF;AAAQC,QAAAA;AAAR,OAAf,GAAgCK,SAF7B;AAGXR,MAAAA,KAHW;AAIXI,MAAAA,SAJW;AAKXH,MAAAA,YALW;AAMXQ,MAAAA,UAAU,EAAE,KAND;AAOXC,MAAAA,UAAU,EAAE,KAPD;AAQX;AACAX,MAAAA,UATW,CASC;;AATD,KAAb;AAWD;;AAEDY,EAAAA,iBAAiB,GAAG;AAClB,SAAKC,aAAL;AAEA,QAAM;AAAEL,MAAAA,MAAF;AAAUP,MAAAA,KAAV;AAAiBI,MAAAA;AAAjB,QAA+B,KAAKC,KAA1C;;AACA,QAAIE,MAAM,IAAI,IAAd,EAAoB;AAClB,UAAM;AAAEL,QAAAA,IAAF;AAAQC,QAAAA;AAAR,UAAiBI,MAAvB;AACA,WAAKM,UAAL,CAAgBX,IAAhB,EAAsBC,IAAtB,EAA4BH,KAA5B,EAAmCI,SAAnC;AACD;AACF;;AAEDU,EAAAA,kBAAkB,CAACC,SAAD,EAAmC;AACnD,QAAM;AAAET,MAAAA;AAAF,QAAc,KAAKb,KAAzB;;AACA,QAAIa,OAAO,KAAKS,SAAS,CAACT,OAA1B,EAAmC;AACjC,WAAKM,aAAL;AACD;AACF;;AAIDlB,EAAAA,YAAY,OAQT;AAAA,QARU;AACXa,MAAAA,MADW;AAEXN,MAAAA,YAFW;AAGXD,MAAAA;AAHW,KAQV;AACD,QAAIE,IAAJ;AACA,QAAIC,IAAJ;;AACA,QAAII,MAAM,IAAI,IAAd,EAAoB;AAClB,OAAC;AAAEL,QAAAA,IAAF;AAAQC,QAAAA;AAAR,UAAiBI,MAAlB;AACD;;AACD,QAAIM,UAAU,GAAG,IAAjB;AACA,QAAIT,SAA6B,GAAGY,IAAI,CAACC,GAAL,EAApC;AACA,SAAKC,QAAL,CACE,SAAsE;AAAA;;AAAA,UAArE;AAAEnB,QAAAA,UAAF;AAAcK,QAAAA,SAAS,EAAEe,aAAzB;AAAwCV,QAAAA,UAAxC;AAAoDC,QAAAA;AAApD,OAAqE;AACpE;AACA,UAAMU,MAAM,GACVrB,UAAU,IAAI,IAAd,IACAE,YAAY,KAAKF,UAAU,CAACE,YAD5B,IAEAC,IAAI,KAAKH,UAAU,CAACG,IAFpB,IAGAC,IAAI,KAAKJ,UAAU,CAACI,IAHpB,IAIAH,KAAK,KAAKD,UAAU,CAACC,KALvB;AAMAa,MAAAA,UAAU,YACP,CAACH,UAAD,IAAeT,YAAf,KAAgC,CAACmB,MAAD,IAAW,CAACX,UAA5C,CADO,yCACqD,KAD/D;;AAGA,UAAI,CAACI,UAAL,EAAiB;AACfT,QAAAA,SAAS,GAAGe,aAAZ;AACD;;AAED,aAAO;AACLpB,QAAAA,UAAU,EAAE;AACVE,UAAAA,YADU;AAEVC,UAAAA,IAFU;AAGVC,UAAAA,IAHU;AAIVH,UAAAA,KAJU;AAKVI,UAAAA;AALU,SADP;AAQLA,QAAAA,SARK;AASLK,QAAAA,UAAU,EAAEW,MATP;AAULV,QAAAA,UAAU,EAAE;AAVP,OAAP;AAYD,KA5BH,EA6BE,MAAM;AACJ,UAAIG,UAAJ,EAAgB;AACd,aAAKA,UAAL,CAAgBX,IAAhB,EAAsBC,IAAtB,EAA4BH,KAA5B,EAAmCI,SAAnC;AACD;AACF,KAjCH;AAmCD;;AAEDR,EAAAA,qBAAqB,GAAS;AAAA;;AAC5B,kCAAKC,cAAL,CAAoBwB,OAApB,gFAA6BC,WAA7B;AACD;;AAEDT,EAAAA,UAAU,CAACX,IAAD,EAAgBC,IAAhB,EAA+BH,KAA/B,EAA+CI,SAA/C,EAAmE;AAC3E,QAAM;AAAEmB,MAAAA;AAAF,QAAiB,KAAK9B,KAA5B;AACA8B,IAAAA,UAAU,CAACC,IAAX,CAAgBpC,gBAAgB,CAACqC,eAAjC,EAAkD,IAAlD,EAAwD;AACtDvB,MAAAA,IADsD;AAEtDC,MAAAA,IAFsD;AAGtDH,MAAAA,KAHsD;AAItDI,MAAAA;AAJsD,KAAxD;AAMD;AAED;AACF;AACA;AACA;AACA;;;AACEsB,EAAAA,aAAa,CAACrB,KAAD,EAAwC;AAAA;;AAAA,QAApBQ,UAAoB,uEAAP,KAAO;AACnD;AACA,SAAKK,QAAL,CAAc;AAAER,MAAAA,UAAU,EAAE,CAACG;AAAf,KAAd,EAFmD,CAInD;AACA;;AACA,mCAAKhB,cAAL,CAAoBwB,OAApB,kFAA6BM,cAA7B,CAA4CtB,KAA5C;AACD;;AAEDO,EAAAA,aAAa,GAAG;AACd,QAAM;AAAEN,MAAAA;AAAF,QAAc,KAAKb,KAAzB;;AACA,QAAIa,OAAO,IAAI,IAAf,EAAqB;AACnB;AACD;;AAED,SAAKY,QAAL,CAAcb,KAAK,IAAI;AACrB,UAAM;AAAEE,QAAAA;AAAF,UAAaF,KAAnB;;AAEA,UAAIE,MAAM,IAAI,IAAV,IAAkBD,OAAO,CAACsB,MAAR,GAAiB,CAAvC,EAA0C;AACxC,eAAO;AACLtB,UAAAA,OAAO,EAAE,CAAC,GAAGA,OAAJ,CADJ;AAELC,UAAAA,MAAM,EAAED,OAAO,CAAC,CAAD;AAFV,SAAP;AAID;;AAED,UACEC,MAAM,IAAI,IAAV,IACA,CAACD,OAAO,CAACuB,IAAR,CACC;AAAA,YAAC;AAAE3B,UAAAA,IAAF;AAAQC,UAAAA;AAAR,SAAD;AAAA,eAAoBI,MAAM,CAACL,IAAP,KAAgBA,IAAhB,IAAwBK,MAAM,CAACJ,IAAP,KAAgBA,IAA5D;AAAA,OADD,CAFH,EAKE;AACA,eAAO;AAAEG,UAAAA,OAAO,EAAE,CAAC,GAAGA,OAAJ,EAAaC,MAAb;AAAX,SAAP;AACD;;AAED,aAAO;AAAED,QAAAA,OAAO,EAAE,CAAC,GAAGA,OAAJ;AAAX,OAAP;AACD,KApBD;AAqBD;;AAEDwB,EAAAA,MAAM,GAAG;AACP,QAAM;AAAEC,MAAAA,WAAF;AAAeR,MAAAA;AAAf,QAA8B,KAAK9B,KAAzC;AACA,QAAM;AAAEc,MAAAA,MAAF;AAAUD,MAAAA,OAAV;AAAmBL,MAAAA,YAAnB;AAAiCD,MAAAA;AAAjC,QAA2C,KAAKK,KAAtD;AACA,wBACE,oBAAC,KAAD;AACE,MAAA,SAAS,EAAC,yBADZ;AAEE,MAAA,cAAc,EAAE,IAFlB;AAGE,MAAA,WAAW,EAAE0B,WAHf;AAIE,MAAA,UAAU,EAAER,UAJd;AAKE,MAAA,iBAAiB,EAAE,KAAK3B,qBAL1B;AAME,MAAA,UAAU,MANZ;AAOE,MAAA,WAAW;AAPb,oBASE,oBAAC,WAAD;AACE,MAAA,GAAG,EAAE,KAAKC,cADZ;AAEE,MAAA,MAAM,EAAEU,MAFV;AAGE,MAAA,OAAO,EAAED,OAHX;AAIE,MAAA,QAAQ,EAAE,KAAKZ,YAJjB;AAKE,MAAA,YAAY,EAAEO,YALhB;AAME,MAAA,KAAK,EAAED;AANT,MATF,CADF;AAoBD;;AAhMD;;gBAHIT,gB,kBAIkB;AACpBQ,EAAAA,UAAU,EAAE;AADQ,C;;gBAJlBR,gB,eAQe,kB;;gBARfA,gB,iBAYiB,kB;;AA0LvB,IAAMyC,eAAe,GAAG,CACtB3B,KADsB,EAEtB4B,QAFsB,KAGnB;AACH,MAAM;AAAEC,IAAAA;AAAF,MAAuBD,QAA7B;AAEA,SAAO;AACL3B,IAAAA,OAAO,EAAEjB,sBAAsB,CAACgB,KAAD,EAAQ6B,gBAAR;AAD1B,GAAP;AAGD,CATD;;AAWA,eAAelD,OAAO,CAACgD,eAAD,EAAkB,IAAlB,EAAwB,IAAxB,EAA8B;AAAEG,EAAAA,UAAU,EAAE;AAAd,CAA9B,CAAP,CACb5C,gBADa,CAAf","sourcesContent":["import React, { Component, RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { RootState } from '@deephaven/redux';\nimport Panel from './Panel';\nimport InputFilter, {\n InputFilterColumn,\n} from '../controls/input-filter/InputFilter';\nimport { InputFilterEvent } from '../events';\nimport { getColumnsForDashboard } from '../redux';\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 { value, isValueShown = false, name, type, timestamp } =\n panelState ?? {};\n\n this.state = {\n columns: [],\n column: name && type ? { 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() {\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) {\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,\n value,\n }: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }) {\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: number | undefined = 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(name?: string, type?: string, value?: string, timestamp?: number) {\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.FILTERS_CHANGED, this, {\n name,\n type,\n value,\n timestamp,\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) {\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() {\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() {\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) => {\n const { localDashboardId } = ownProps;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n InputFilterPanel\n);\n"],"file":"InputFilterPanel.js"}