@deephaven/dashboard-core-plugins 0.11.6-beta.0 → 0.11.6-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/controls/dropdown-filter/DropdownFilter.css.map +1 -1
- package/dist/controls/input-filter/InputFilter.css.map +1 -1
- package/dist/linker/LinkerOverlayContent.css.map +1 -1
- package/dist/panels/FilterSetManager.css.map +1 -1
- package/dist/panels/FilterSetManager.d.ts +4 -1
- package/dist/panels/FilterSetManager.d.ts.map +1 -1
- package/dist/panels/FilterSetManager.js +45 -16
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.css.map +1 -1
- package/dist/panels/FilterSetManagerPanel.d.ts +7 -8
- package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js +42 -39
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +2 -0
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +80 -20
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/Panel.d.ts +4 -0
- package/dist/panels/Panel.d.ts.map +1 -1
- package/dist/panels/Panel.js +12 -0
- package/dist/panels/Panel.js.map +1 -1
- package/dist/panels/WidgetPanel.d.ts +3 -0
- package/dist/panels/WidgetPanel.d.ts.map +1 -1
- package/dist/panels/WidgetPanel.js +7 -3
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/package.json +15 -15
|
@@ -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(
|
|
36
|
-
var [index, filter] =
|
|
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 =
|
|
155
|
+
irisGridState = {},
|
|
156
|
+
gridState = {}
|
|
168
157
|
} = panelState;
|
|
169
158
|
var {
|
|
170
|
-
advancedFilters: indexedAdvancedFilters
|
|
171
|
-
quickFilters: indexedQuickFilters
|
|
172
|
-
} = 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
|
-
|
|
179
|
-
|
|
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(
|
|
179
|
+
handleChange(_ref2) {
|
|
188
180
|
var {
|
|
189
181
|
isValueShown,
|
|
190
182
|
selectedId
|
|
191
|
-
} =
|
|
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(
|
|
201
|
+
panels.forEach(_ref3 => {
|
|
209
202
|
var {
|
|
210
203
|
panelId,
|
|
211
204
|
type,
|
|
212
205
|
state
|
|
213
|
-
} =
|
|
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(
|
|
243
|
+
this.setState(_ref4 => {
|
|
251
244
|
var {
|
|
252
245
|
selectedId,
|
|
253
246
|
isValueShown
|
|
254
|
-
} =
|
|
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
|
-
|
|
268
|
-
|
|
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
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
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,
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
677
|
-
|
|
678
|
-
|
|
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
|
-
|
|
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,
|