@deephaven/dashboard-core-plugins 0.11.5-beta.1 → 0.11.6-beta.11

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.
@@ -18,22 +18,10 @@ import InputFilterPanel from "./InputFilterPanel.js";
18
18
  import DropdownFilterPanel from "./DropdownFilterPanel.js";
19
19
  import "./FilterSetManagerPanel.css";
20
20
  var log = Log.module('FilterSetManagerPanel');
21
-
22
- class FilterSetManagerPanel extends Component {
23
- static changeFilterColumnNamesToIndexes(table, configs) {
24
- return configs.map(_ref => {
25
- var {
26
- name,
27
- filter
28
- } = _ref;
29
- var index = table.columns.findIndex(column => column.name === name);
30
- return index < 0 ? null : [index, filter];
31
- }).filter(config => config != null);
32
- }
33
-
21
+ export class FilterSetManagerPanel extends Component {
34
22
  static changeFilterIndexesToColumnNames(table, configs) {
35
- return configs.map(_ref2 => {
36
- var [index, filter] = _ref2;
23
+ return configs.map(_ref => {
24
+ var [index, filter] = _ref;
37
25
 
38
26
  if (index >= table.columns.length) {
39
27
  return null;
@@ -164,19 +152,23 @@ class FilterSetManagerPanel extends Component {
164
152
 
165
153
 
166
154
  var {
167
- irisGridState = null
155
+ irisGridState = {},
156
+ gridState = {}
168
157
  } = panelState;
169
158
  var {
170
- advancedFilters: indexedAdvancedFilters = [],
171
- quickFilters: indexedQuickFilters = []
172
- } = irisGridState !== null && irisGridState !== void 0 ? irisGridState : {};
159
+ advancedFilters: indexedAdvancedFilters,
160
+ quickFilters: indexedQuickFilters
161
+ } = irisGridState;
173
162
  var dehydratedAdvancedFilters = IrisGridUtils.dehydrateAdvancedFilters(table.columns, indexedAdvancedFilters);
174
163
  var advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, dehydratedAdvancedFilters);
175
164
  var dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(indexedQuickFilters);
176
165
  var quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, dehydratedQuickFilters);
177
166
  return {
178
- advancedFilters,
179
- quickFilters
167
+ irisGridState: _objectSpread(_objectSpread({}, irisGridState), {}, {
168
+ advancedFilters,
169
+ quickFilters
170
+ }),
171
+ gridState: _objectSpread({}, gridState)
180
172
  };
181
173
  }
182
174
 
@@ -184,11 +176,11 @@ class FilterSetManagerPanel extends Component {
184
176
  return this.getFilterState();
185
177
  }
186
178
 
187
- handleChange(_ref3) {
179
+ handleChange(_ref2) {
188
180
  var {
189
181
  isValueShown,
190
182
  selectedId
191
- } = _ref3;
183
+ } = _ref2;
192
184
  log.debug('handleChange', isValueShown, selectedId);
193
185
  this.setState({
194
186
  isValueShown,
@@ -202,15 +194,16 @@ class FilterSetManagerPanel extends Component {
202
194
  dashboardOpenedPanelMap
203
195
  } = this.props;
204
196
  var {
205
- panels
197
+ panels,
198
+ restoreFullState = false
206
199
  } = filterSet;
207
200
  log.debug("Apply filters from filter set", filterSet);
208
- panels.forEach(_ref4 => {
201
+ panels.forEach(_ref3 => {
209
202
  var {
210
203
  panelId,
211
204
  type,
212
205
  state
213
- } = _ref4;
206
+ } = _ref3;
214
207
 
215
208
  if (!dashboardOpenedPanelMap.has(panelId)) {
216
209
  log.debug('Ignore closed panel', panelId);
@@ -222,7 +215,7 @@ class FilterSetManagerPanel extends Component {
222
215
 
223
216
  switch (type) {
224
217
  case LayoutUtils.getComponentName(IrisGridPanel):
225
- this.restoreIrisGridFilters(panel, state);
218
+ this.restoreIrisGridFilters(panel, state, restoreFullState);
226
219
  break;
227
220
 
228
221
  case LayoutUtils.getComponentName(InputFilterPanel):
@@ -247,11 +240,11 @@ class FilterSetManagerPanel extends Component {
247
240
  }
248
241
 
249
242
  updatePanelState() {
250
- this.setState(_ref5 => {
243
+ this.setState(_ref4 => {
251
244
  var {
252
245
  selectedId,
253
246
  isValueShown
254
- } = _ref5;
247
+ } = _ref4;
255
248
  return {
256
249
  // eslint-disable-next-line react/no-unused-state
257
250
  panelState: {
@@ -262,11 +255,18 @@ class FilterSetManagerPanel extends Component {
262
255
  });
263
256
  }
264
257
 
265
- restoreIrisGridFilters(panel, state) {
258
+ restoreIrisGridFilters(panel, state, restoreFullState) {
259
+ // Fall back to state.advancedFilters and state.quickFilters
260
+ // for backward compatibility with filter sets that only contain filters
266
261
  var {
267
- advancedFilters: savedAdvancedFilters,
268
- quickFilters: savedQuickFilters
262
+ irisGridState = {},
263
+ advancedFilters: prevAdvancedFilters = [],
264
+ quickFilters: prevQuickFilters = []
269
265
  } = state;
266
+ var {
267
+ advancedFilters = prevAdvancedFilters,
268
+ quickFilters = prevQuickFilters
269
+ } = irisGridState;
270
270
  var {
271
271
  panelTableMap
272
272
  } = this.props;
@@ -278,13 +278,16 @@ class FilterSetManagerPanel extends Component {
278
278
  return;
279
279
  }
280
280
 
281
- log.debug('restoreIrisGridFilters', panelId, state);
282
- var quickFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(table, savedQuickFilters);
283
- var advancedFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(table, savedAdvancedFilters);
284
- panel.setFilters({
285
- quickFilters,
286
- advancedFilters
287
- });
281
+ log.debug('restoreIrisGridFilters', panelId, state, restoreFullState);
282
+
283
+ if (restoreFullState) {
284
+ panel.setStateOverrides(state);
285
+ } else {
286
+ panel.setFilters({
287
+ quickFilters,
288
+ advancedFilters
289
+ });
290
+ }
288
291
  } // eslint-disable-next-line class-methods-use-this
289
292
 
290
293
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":["React","Component","PropTypes","connect","getOpenedPanelMapForDashboard","GLPropTypes","LayoutUtils","IrisGridUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","InputFilterPanel","DropdownFilterPanel","log","module","FilterSetManagerPanel","changeFilterColumnNamesToIndexes","table","configs","map","name","filter","index","columns","findIndex","column","config","changeFilterIndexesToColumnNames","length","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","advancedFilters","indexedAdvancedFilters","quickFilters","indexedQuickFilters","dehydratedAdvancedFilters","dehydrateAdvancedFilters","dehydratedQuickFilters","dehydrateQuickFilters","setState","updatePanelState","filterSet","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","localDashboardId","savedAdvancedFilters","savedQuickFilters","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 { IrisGridUtils } from '@deephaven/iris-grid';\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\nclass FilterSetManagerPanel extends Component {\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterColumnNamesToIndexes(table, configs) {\n return configs\n .map(({ name, filter }) => {\n const index = table.columns.findIndex(column => column.name === name);\n return index < 0 ? null : [index, filter];\n })\n .filter(config => config != null);\n }\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 = null } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters = [],\n quickFilters: indexedQuickFilters = [],\n } = irisGridState ?? {};\n const dehydratedAdvancedFilters = IrisGridUtils.dehydrateAdvancedFilters(\n table.columns,\n indexedAdvancedFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedAdvancedFilters\n );\n const dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(\n indexedQuickFilters\n );\n const quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedQuickFilters\n );\n return { advancedFilters, quickFilters };\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 } = 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);\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) {\n const {\n advancedFilters: savedAdvancedFilters,\n quickFilters: savedQuickFilters,\n } = state;\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);\n const quickFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedQuickFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedAdvancedFilters\n );\n panel.setFilters({ quickFilters, advancedFilters });\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.jsx"],"names":["React","Component","PropTypes","connect","getOpenedPanelMapForDashboard","GLPropTypes","LayoutUtils","IrisGridUtils","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","dehydratedAdvancedFilters","dehydrateAdvancedFilters","dehydratedQuickFilters","dehydrateQuickFilters","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 { IrisGridUtils } from '@deephaven/iris-grid';\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 dehydratedAdvancedFilters = IrisGridUtils.dehydrateAdvancedFilters(\n table.columns,\n indexedAdvancedFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedAdvancedFilters\n );\n const dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(\n indexedQuickFilters\n );\n const quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedQuickFilters\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"}
@@ -23,6 +23,7 @@ export class IrisGridPanel extends React.PureComponent<any, any, any> {
23
23
  handleCreateChart(settings: ChartBuilderSettings, model: IrisGridModel): void;
24
24
  handleResize(): void;
25
25
  handleShow(): void;
26
+ handleTabClicked(): void;
26
27
  handleDisconnect(): void;
27
28
  handleReconnect(): void;
28
29
  handleLoadSuccess(modelParam: any): void;
@@ -85,6 +86,7 @@ export class IrisGridPanel extends React.PureComponent<any, any, any> {
85
86
  quickFilters: any;
86
87
  advancedFilters: any;
87
88
  }): void;
89
+ setStateOverrides(overrides: any): void;
88
90
  unsetFilterValue(): void;
89
91
  loadPanelState(model: any): void;
90
92
  updateGrid(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.jsx"],"names":[],"mappings":"AAqCA;IACE,yBAAmC;IAEnC,wBAoFC;IA4nBD,uBAqFC;IA9dD,yDAOC;IAqDD,uCAOC;IAED,qCAKC;IA+CD,wCAGC;IAED,iDAGC;IAUD,8BAGC;IA1GD,gEAYC;IAED,gDAQC;IAkBD,qDAMC;IAED;;;;;;;;OAQG;IACH,yDAFW,aAAa,QA4BvB;IAYD,qBAEC;IAED,mBAEC;IAOD,yBAMC;IAED,wBAEC;IAtND,yCA6CC;IA2KD,kCAMC;IAtID,8CAMC;IAVD,kCAEC;IAjBD,uCASC;IAED,wDAEC;IAmKD,8BAMC;IAteC,+BAAiC;IACjC,gCAAkC;IAClC,uEAAwB;IAKxB,mBAAyB;IACzB,eAAqB;IACrB,iBAAuB;IA6EzB,oBAGC;IAED,2EAWE;IAEF,0FAWG;IAEH,0HAyBG;IAEH,oIAOE;IAEF;;;;;;;;;;;;;;;;;;;;;MAgDE;IAEF,wIAQE;IAEF;;;;;MAOE;IAEF,kBAWC;IAiDD,uDAWC;IAsKD,mCAmBC;IAUD,sCAIC;IAED,sCAcC;IAED,qCAiBC;IAED,sDAsCC;IAED,mCAKC;IAED,2CAKC;IAED;;;aAmBC;IAGD,yBAEC;IAED,iCA6EC;IAyFD,mBAMC;CA2KF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmDgB,wCAAQ;;QACH,6CAAQ"}
1
+ {"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.jsx"],"names":[],"mappings":"AAqCA;IACE,yBAAmC;IAEnC,wBAuFC;IAirBD,uBAqFC;IAnhBD,yDAOC;IAqDD,uCAOC;IAED,qCAKC;IA+CD,wCAGC;IAED,iDAGC;IAgBD,8BAGC;IAhHD,gEAYC;IAED,gDAQC;IAkBD,qDAMC;IAED;;;;;;;;OAQG;IACH,yDAFW,aAAa,QA4BvB;IAYD,qBAEC;IAED,mBAEC;IAED,yBAIC;IAOD,yBAMC;IAED,wBAEC;IA5ND,yCA6CC;IAiLD,kCAMC;IA5ID,8CAMC;IAVD,kCAEC;IAjBD,uCASC;IAED,wDAEC;IAyKD,8BAMC;IA9eC,+BAAiC;IACjC,gCAAkC;IAClC,uEAAwB;IAKxB,mBAAyB;IACzB,eAAqB;IACrB,iBAAuB;IA+EzB,oBAGC;IAED,2EAWE;IAEF,0FAWG;IAEH,0HAyBG;IAEH,oIAOE;IAEF;;;;;;;;;;;;;;;;;;;;;MAgDE;IAEF,wIAQE;IAEF;;;;;MAOE;IAEF,kBAWC;IAiDD,uDAWC;IA4KD,mCAmBC;IAUD,sCAIC;IAED,sCAcC;IAED,qCAiBC;IAED,sDAsCC;IAED,mCAKC;IAED,2CAKC;IAED;;;aA+BC;IAED,wCASC;IAGD,yBAEC;IAED,iCAqGC;IAyFD,mBAMC;CA4KF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmDgB,wCAAQ;;QACH,6CAAQ"}
@@ -1,3 +1,7 @@
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+
1
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; }
2
6
 
3
7
  // Wrapper for the IrisGrid for use in a golden layout container
@@ -141,6 +145,7 @@ export class IrisGridPanel extends PureComponent {
141
145
  this.handleCreateChart = this.handleCreateChart.bind(this);
142
146
  this.handleResize = this.handleResize.bind(this);
143
147
  this.handleShow = this.handleShow.bind(this);
148
+ this.handleTabClicked = this.handleTabClicked.bind(this);
144
149
  this.handleDisconnect = this.handleDisconnect.bind(this);
145
150
  this.handleReconnect = this.handleReconnect.bind(this);
146
151
  this.handleLoadSuccess = this.handleLoadSuccess.bind(this);
@@ -201,8 +206,10 @@ export class IrisGridPanel extends PureComponent {
201
206
  pendingDataMap: new Map(),
202
207
  frozenColumns: null,
203
208
  // eslint-disable-next-line react/no-unused-state
204
- panelState // Dehydrated panel state that can load this panel
205
-
209
+ panelState,
210
+ // Dehydrated panel state that can load this panel
211
+ irisGridStateOverrides: {},
212
+ gridStateOverrides: {}
206
213
  };
207
214
  }
208
215
 
@@ -273,20 +280,22 @@ export class IrisGridPanel extends PureComponent {
273
280
  handleLoadSuccess(modelParam) {
274
281
  var model = modelParam;
275
282
  var {
276
- panelState
277
- } = this.props;
283
+ panelState,
284
+ irisGridStateOverrides
285
+ } = this.state;
278
286
  var modelQueue = [];
279
287
 
280
288
  if (panelState != null) {
281
289
  var {
282
290
  irisGridState
283
291
  } = panelState;
292
+
284
293
  var {
285
294
  aggregationSettings,
286
295
  customColumns,
287
296
  selectDistinctColumns = [],
288
297
  rollupConfig
289
- } = irisGridState;
298
+ } = _objectSpread(_objectSpread({}, irisGridState), irisGridStateOverrides);
290
299
 
291
300
  if (customColumns.length > 0) {
292
301
  modelQueue.push(m => {
@@ -515,6 +524,12 @@ export class IrisGridPanel extends PureComponent {
515
524
  this.updateGrid();
516
525
  }
517
526
 
527
+ handleTabClicked() {
528
+ if (this.irisGrid.current) {
529
+ this.irisGrid.current.focus();
530
+ }
531
+ }
532
+
518
533
  handleError(error) {
519
534
  log.error(error);
520
535
  this.setState({
@@ -667,23 +682,49 @@ export class IrisGridPanel extends PureComponent {
667
682
  quickFilters,
668
683
  advancedFilters
669
684
  } = _ref3;
670
- var irisGrid = this.irisGrid.current;
685
+ log.debug('setFilters', quickFilters, advancedFilters);
671
686
  var {
672
687
  model,
673
688
  isDisconnected
674
689
  } = this.state;
690
+ var irisGrid = this.irisGrid.current;
675
691
 
676
- if (irisGrid != null && !isDisconnected) {
677
- var {
678
- columns,
679
- formatter
680
- } = model;
681
- irisGrid.clearAllFilters();
682
- irisGrid.setFilters({
683
- quickFilters: IrisGridUtils.hydrateQuickFilters(columns, quickFilters, formatter.timeZone),
684
- advancedFilters: IrisGridUtils.hydrateAdvancedFilters(columns, advancedFilters, formatter.timeZone)
685
- });
692
+ if (irisGrid == null || isDisconnected) {
693
+ log.debug('Ignore setFilters, model disconnected');
694
+ return;
686
695
  }
696
+
697
+ var {
698
+ columns,
699
+ formatter
700
+ } = model;
701
+ var indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(model.columns, quickFilters).filter(_ref4 => {
702
+ var [columnIndex] = _ref4;
703
+ return model.isFilterable(columnIndex);
704
+ });
705
+ var indexedAdvancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(model.columns, advancedFilters).filter(_ref5 => {
706
+ var [columnIndex] = _ref5;
707
+ return model.isFilterable(columnIndex);
708
+ });
709
+ irisGrid.clearAllFilters();
710
+ irisGrid.setFilters({
711
+ quickFilters: IrisGridUtils.hydrateQuickFilters(columns, indexedQuickFilters, formatter.timeZone),
712
+ advancedFilters: IrisGridUtils.hydrateAdvancedFilters(columns, indexedAdvancedFilters, formatter.timeZone)
713
+ });
714
+ }
715
+
716
+ setStateOverrides(overrides) {
717
+ log.debug('setStateOverrides', overrides);
718
+ var {
719
+ irisGridState: irisGridStateOverrides,
720
+ gridState: gridStateOverrides
721
+ } = overrides;
722
+ this.setState({
723
+ irisGridStateOverrides,
724
+ gridStateOverrides
725
+ }, () => {
726
+ this.initModel();
727
+ });
687
728
  } // eslint-disable-next-line class-methods-use-this
688
729
 
689
730
 
@@ -692,8 +733,10 @@ export class IrisGridPanel extends PureComponent {
692
733
 
693
734
  loadPanelState(model) {
694
735
  var {
695
- panelState
696
- } = this.props;
736
+ panelState,
737
+ irisGridStateOverrides: originalIrisGridStateOverrides,
738
+ gridStateOverrides
739
+ } = this.state;
697
740
 
698
741
  if (panelState == null) {
699
742
  return;
@@ -705,6 +748,22 @@ export class IrisGridPanel extends PureComponent {
705
748
  irisGridState,
706
749
  irisGridPanelState
707
750
  } = panelState;
751
+
752
+ var irisGridStateOverrides = _objectSpread({}, originalIrisGridStateOverrides);
753
+
754
+ var {
755
+ quickFilters: savedQuickFilters,
756
+ advancedFilters: savedAdvancedFilters
757
+ } = irisGridStateOverrides;
758
+
759
+ if (savedQuickFilters) {
760
+ irisGridStateOverrides.quickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(model.columns, savedQuickFilters);
761
+ }
762
+
763
+ if (savedAdvancedFilters) {
764
+ irisGridStateOverrides.advancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(model.columns, savedAdvancedFilters);
765
+ }
766
+
708
767
  var {
709
768
  isSelectingPartition,
710
769
  partition,
@@ -731,13 +790,13 @@ export class IrisGridPanel extends PureComponent {
731
790
  pendingDataMap,
732
791
  frozenColumns,
733
792
  conditionalFormats
734
- } = IrisGridUtils.hydrateIrisGridState(model, irisGridState);
793
+ } = IrisGridUtils.hydrateIrisGridState(model, _objectSpread(_objectSpread({}, irisGridState), irisGridStateOverrides));
735
794
  var {
736
795
  isStuckToBottom,
737
796
  isStuckToRight,
738
797
  movedColumns,
739
798
  movedRows
740
- } = IrisGridUtils.hydrateGridState(model, gridState, irisGridState.customColumns);
799
+ } = IrisGridUtils.hydrateGridState(model, _objectSpread(_objectSpread({}, gridState), gridStateOverrides), irisGridState.customColumns);
741
800
  this.setState({
742
801
  advancedFilters,
743
802
  advancedSettings,
@@ -924,6 +983,7 @@ export class IrisGridPanel extends PureComponent {
924
983
  onResize: this.handleResize,
925
984
  onShow: this.handleShow,
926
985
  onTabFocus: this.handleShow,
986
+ onTabClicked: this.handleTabClicked,
927
987
  queryName: queryName,
928
988
  querySerial: querySerial,
929
989
  widgetName: name,