@deephaven/dashboard-core-plugins 0.15.5-beta.3 → 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.
- package/dist/ChartBuilderPlugin.d.ts.map +1 -1
- package/dist/ChartBuilderPlugin.js +2 -1
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/FilterPlugin.js +1 -1
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/controls/ControlType.d.ts +1 -1
- package/dist/controls/ControlType.d.ts.map +1 -1
- package/dist/controls/ControlType.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts +73 -81
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +41 -58
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.d.ts +46 -46
- package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +32 -39
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.d.ts +11 -16
- package/dist/controls/markdown/MarkdownContainer.d.ts.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +5 -8
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.d.ts +17 -19
- package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js +5 -8
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.d.ts +24 -28
- package/dist/controls/markdown/MarkdownStartPage.d.ts.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +19 -23
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/controls/markdown/MarkdownUtils.d.ts +4 -4
- package/dist/controls/markdown/MarkdownUtils.d.ts.map +1 -1
- package/dist/controls/markdown/MarkdownUtils.js +2 -2
- package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
- package/dist/events/ChartEvent.d.ts +1 -1
- package/dist/events/ChartEvent.d.ts.map +1 -1
- package/dist/events/ChartEvent.js.map +1 -1
- package/dist/events/ConsoleEvent.d.ts +1 -1
- package/dist/events/ConsoleEvent.d.ts.map +1 -1
- package/dist/events/ConsoleEvent.js.map +1 -1
- package/dist/events/InputFilterEvent.d.ts +1 -1
- package/dist/events/InputFilterEvent.d.ts.map +1 -1
- package/dist/events/InputFilterEvent.js.map +1 -1
- package/dist/events/IrisGridEvent.d.ts +1 -1
- package/dist/events/IrisGridEvent.d.ts.map +1 -1
- package/dist/events/IrisGridEvent.js.map +1 -1
- package/dist/events/NotebookEvent.d.ts +1 -1
- package/dist/events/NotebookEvent.d.ts.map +1 -1
- package/dist/events/NotebookEvent.js.map +1 -1
- package/dist/events/PQEvent.d.ts +1 -1
- package/dist/events/PQEvent.d.ts.map +1 -1
- package/dist/events/PQEvent.js.map +1 -1
- package/dist/events/PandasEvent.d.ts +1 -1
- package/dist/events/PandasEvent.d.ts.map +1 -1
- package/dist/events/PandasEvent.js.map +1 -1
- package/dist/events/TabEvent.d.ts +1 -1
- package/dist/events/TabEvent.d.ts.map +1 -1
- package/dist/events/TabEvent.js.map +1 -1
- package/dist/events/index.d.ts +8 -8
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/linker/ColumnSelectionValidator.d.ts +4 -0
- package/dist/linker/ColumnSelectionValidator.d.ts.map +1 -0
- package/dist/linker/ColumnSelectionValidator.js +2 -0
- package/dist/linker/ColumnSelectionValidator.js.map +1 -0
- package/dist/linker/Linker.d.ts +11 -11
- package/dist/linker/Linker.js +1 -1
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerUtils.d.ts +3 -3
- package/dist/linker/LinkerUtils.d.ts.map +1 -1
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/linker/ToolType.d.ts +1 -1
- package/dist/linker/ToolType.d.ts.map +1 -1
- package/dist/linker/ToolType.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.d.ts +22 -26
- package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +5 -14
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.d.ts +27 -21
- package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts +149 -152
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js +65 -73
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.d.ts +41 -56
- package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +13 -35
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.d.ts +63 -73
- package/dist/panels/ConsolePanel.d.ts.map +1 -1
- package/dist/panels/ConsolePanel.js +67 -83
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts +110 -106
- package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +60 -62
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.d.ts +5 -7
- package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.d.ts +3 -1
- package/dist/panels/FilterSetManager.d.ts.map +1 -1
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.d.ts +83 -62
- package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js +58 -36
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.d.ts +50 -51
- package/dist/panels/InputFilterPanel.d.ts.map +1 -1
- package/dist/panels/InputFilterPanel.js +35 -34
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +191 -178
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +150 -179
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/LogPanel.d.ts +29 -45
- package/dist/panels/LogPanel.d.ts.map +1 -1
- package/dist/panels/LogPanel.js +9 -11
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.d.ts +34 -34
- package/dist/panels/MarkdownNotebook.d.ts.map +1 -1
- package/dist/panels/MarkdownNotebook.js +21 -18
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.d.ts +41 -47
- package/dist/panels/MarkdownPanel.d.ts.map +1 -1
- package/dist/panels/MarkdownPanel.js +17 -19
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts +137 -115
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +95 -68
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.d.ts +20 -17
- package/dist/panels/PandasPanel.d.ts.map +1 -1
- package/dist/panels/PandasPanel.js +17 -13
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/Panel.d.ts +87 -123
- package/dist/panels/Panel.d.ts.map +1 -1
- package/dist/panels/Panel.js +29 -54
- package/dist/panels/Panel.js.map +1 -1
- package/dist/panels/PanelContextMenu.d.ts +16 -31
- package/dist/panels/PanelContextMenu.d.ts.map +1 -1
- package/dist/panels/PanelContextMenu.js +12 -15
- package/dist/panels/PanelContextMenu.js.map +1 -1
- package/dist/panels/RenameDialog.d.ts +26 -28
- package/dist/panels/RenameDialog.d.ts.map +1 -1
- package/dist/panels/RenameDialog.js +15 -19
- package/dist/panels/RenameDialog.js.map +1 -1
- package/dist/panels/WidgetPanel.d.ts +72 -106
- package/dist/panels/WidgetPanel.d.ts.map +1 -1
- package/dist/panels/WidgetPanel.js +17 -47
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.d.ts +29 -22
- package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js +1 -1
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/prop-types/CommonPropTypes.d.ts +4 -4
- package/dist/prop-types/CommonPropTypes.d.ts.map +1 -1
- package/dist/prop-types/CommonPropTypes.js +1 -1
- package/dist/prop-types/CommonPropTypes.js.map +1 -1
- package/dist/prop-types/UIPropTypes.d.ts +2 -7
- package/dist/prop-types/UIPropTypes.d.ts.map +1 -1
- package/dist/prop-types/UIPropTypes.js +0 -7
- package/dist/prop-types/UIPropTypes.js.map +1 -1
- package/dist/prop-types/index.d.ts +2 -2
- package/dist/prop-types/index.d.ts.map +1 -1
- package/dist/prop-types/index.js.map +1 -1
- package/dist/redux/actionTypes.d.ts +1 -1
- package/dist/redux/actionTypes.d.ts.map +1 -1
- package/dist/redux/actionTypes.js.map +1 -1
- package/dist/redux/actions.d.ts +63 -8
- package/dist/redux/actions.d.ts.map +1 -1
- package/dist/redux/actions.js +17 -17
- package/dist/redux/actions.js.map +1 -1
- package/dist/redux/reducers/index.d.ts +3 -4
- package/dist/redux/reducers/index.d.ts.map +1 -1
- package/dist/redux/reducers/index.js.map +1 -1
- package/dist/redux/reducers/sessionWrapper.d.ts +1 -1
- package/dist/redux/reducers/sessionWrapper.d.ts.map +1 -1
- package/dist/redux/reducers/sessionWrapper.js.map +1 -1
- package/dist/redux/selectors.d.ts +63 -9
- package/dist/redux/selectors.d.ts.map +1 -1
- package/dist/redux/selectors.js +24 -24
- package/dist/redux/selectors.js.map +1 -1
- package/package.json +20 -17
|
@@ -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":";;;;;;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAA+C,OAA/C;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,SACEC,6BADF,EAEEC,WAFF,QAIO,sBAJP;AAKA,OAAOC,GAAP,MAAgB,gBAAhB;SAYEC,yB,EACAC,2B,EACAC,uB,EACAC,sBAAsB,IAAIC,4B;OAErBC,K;OACAC,gB;SAKEC,a;OACFC,mB;OACAC,gB;;AAKP,IAAMC,GAAG,GAAGX,GAAG,CAACY,MAAJ,CAAW,uBAAX,CAAZ;;AAqCA,SAASC,gBAAT,CACEC,KADF,EAIE;AACA,SACGA,KAAD,CAEGC,aAFH,IAEoB,IAHtB;AAKD;;AACD,OAAO,MAAMC,qBAAN,SAAoCpB,SAApC,CAGL;AAOuC,SAAhCqB,gCAAgC,CACrCC,KADqC,EAErCC,OAFqC,EAGN;AAC/B,WAAOA,OAAO,CACXC,GADI,CACA,QAAqB;AAAA,UAApB,CAACC,KAAD,EAAQC,MAAR,CAAoB;;AACxB,UAAID,KAAK,IAAIH,KAAK,CAACK,OAAN,CAAcC,MAA3B,EAAmC;AACjC,eAAO,IAAP;AACD;;AACD,UAAM;AAAEC,QAAAA;AAAF,UAAWP,KAAK,CAACK,OAAN,CAAcF,KAAd,CAAjB;AACA,aAAO;AAAEI,QAAAA,IAAF;AAAQH,QAAAA;AAAR,OAAP;AACD,KAPI,EAQJA,MARI,CAQGI,MAAM,IAAIA,MAAM,IAAI,IARvB,CAAP;AASD;;AAEDC,EAAAA,WAAW,CAACC,KAAD,EAAoC;AAC7C,UAAMA,KAAN;AAEA,SAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBD,IAAvB,CAA4B,IAA5B,CAAzB;AACA,SAAKE,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBF,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKG,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BH,IAA1B,CAA+B,IAA/B,CAA5B;AAEA,QAAM;AAAEI,MAAAA,UAAF;AAAcC,MAAAA;AAAd,QAA6BP,KAAnC;AACA,QAAM;AACJQ,MAAAA,UAAU,GAAGD,UAAU,CAACX,MAAX,GAAoB,CAApB,GAAwBW,UAAU,CAAC,CAAD,CAAV,CAAcE,EAAtC,GAA2CC,SADpD;AAEJC,MAAAA,YAAY,GAAG;AAFX,QAGFL,UAHE,aAGFA,UAHE,cAGFA,UAHE,GAGY,EAHlB;AAKA,SAAKM,KAAL,GAAa;AACXJ,MAAAA,UADW;AAEXG,MAAAA,YAFW;AAGX;AACAL,MAAAA,UAJW,CAIC;;AAJD,KAAb;AAMD,GA1CD,CA4CA;;;AACAO,EAAAA,cAAc,GAAqB;AACjC,QAAM;AAAEC,MAAAA;AAAF,QAA8B,KAAKd,KAAzC;AACA,QAAMe,MAAwB,GAAG,EAAjC;AACA,KAAC,GAAGD,uBAAuB,CAACE,IAAxB,EAAJ,EAAoCC,OAApC,CAA4CC,GAAG,IAAI;AACjD,UAAMhC,KAAK,GAAG4B,uBAAuB,CAACK,GAAxB,CAA4BD,GAA5B,CAAd;;AAEA,UAAIhC,KAAK,KAAKwB,SAAd,EAAyB;AACvB3B,QAAAA,GAAG,CAACqC,KAAJ,CAAU,qBAAV,EAAiClC,KAAjC;AACA;AACD;;AAED,UAAMmC,aAAa,GAAGlD,WAAW,CAACmD,yBAAZ,CAAsCpC,KAAtC,CAAtB;AACA,UAAMqC,OAAO,GAAGpD,WAAW,CAACqD,cAAZ,CAA2BtC,KAA3B,CAAhB;AACAH,MAAAA,GAAG,CAAC0C,KAAJ,CAAU,QAAV,EAAoBvC,KAApB,EAA2BmC,aAA3B;AAEA,UAAM;AAAEK,QAAAA,WAAW,GAAG;AAAhB,UAAyBxC,KAAK,CAACc,KAArC;;AACA,UAAI0B,WAAW,IAAI,IAAnB,EAAyB;AACvB3C,QAAAA,GAAG,CAACqC,KAAJ,CAAU,+BAAV,EAA2ClC,KAA3C;AACA;AACD;;AACD,UAAMY,MAAM,GAAG3B,WAAW,CAACwD,+BAAZ,CAA4CD,WAA5C,CAAf;;AACA,UAAI5B,MAAM,IAAI,IAAd,EAAoB;AAClBf,QAAAA,GAAG,CAACqC,KAAJ,CAAU,+CAAV,EAA2DM,WAA3D;AACA;AACD;;AACD,UAAMpB,UAAU,GAAGnC,WAAW,CAACyD,sBAAZ,CACjB9B,MADiB,CAAnB;;AAGA,UAAIQ,UAAU,IAAI,IAAlB,EAAwB;AACtBvB,QAAAA,GAAG,CAAC0C,KAAJ,+BAAiCF,OAAjC;AACA;AACD;;AACD,cAAQF,aAAR;AACE,aAAKlD,WAAW,CAAC0D,gBAAZ,CAA6BjD,aAA7B,CAAL;AAAkD;AAChD,gBAAIgC,MAAJ;;AACA,gBAAIW,OAAO,IAAI,IAAf,EAAqB;AACnBX,cAAAA,MAAK,GAAG,KAAKkB,uBAAL,CAA6BP,OAA7B,EAAsCjB,UAAtC,CAAR;AACD;;AACD,gBAAIM,MAAK,IAAI,IAAb,EAAmB;AACjBG,cAAAA,MAAM,CAACgB,IAAP,CAAY;AACVR,gBAAAA,OADU;AAEVS,gBAAAA,IAAI,EAAEX,aAFI;AAGVT,gBAAAA,KAAK,EAALA;AAHU,eAAZ;AAKD;;AACD;AACD;;AACD,aAAKzC,WAAW,CAAC0D,gBAAZ,CAA6B/C,gBAA7B,CAAL;AACA,aAAKX,WAAW,CAAC0D,gBAAZ,CAA6BhD,mBAA7B,CAAL;AAAwD;AACtD,gBAAM;AAAE8B,cAAAA,YAAF;AAAgBd,cAAAA,IAAhB;AAAsBmC,cAAAA,IAAtB;AAA4BC,cAAAA;AAA5B,gBAAsC3B,UAA5C;AACAS,YAAAA,MAAM,CAACgB,IAAP,CAAY;AACVR,cAAAA,OADU;AAEVS,cAAAA,IAAI,EAAEX,aAFI;AAGVT,cAAAA,KAAK,EAAE;AAAED,gBAAAA,YAAF;AAAgBd,gBAAAA,IAAhB;AAAsBmC,gBAAAA,IAAtB;AAA4BC,gBAAAA;AAA5B;AAHG,aAAZ;AAKA;AACD;;AACD;AAzBF;AA2BD,KAxDD;AAyDA,WAAOlB,MAAP;AACD;;AAEDe,EAAAA,uBAAuB,CACrBP,OADqB,EAErBjB,UAFqB,EAed;AACP,QAAM;AAAE4B,MAAAA;AAAF,QAAoB,KAAKlC,KAA/B;AACA,QAAMV,KAAK,GAAG4C,aAAa,CAACf,GAAd,CAAkBI,OAAlB,CAAd;;AACA,QAAIjC,KAAK,IAAI,IAAb,EAAmB;AACjBP,MAAAA,GAAG,CAACqC,KAAJ,yCAA2CG,OAA3C;AACA,aAAO,IAAP;AACD,KANM,CAOP;AACA;;;AACA,QAAM;AACJY,MAAAA,aAAa,GAAG;AAAEC,QAAAA,eAAe,EAAE1B,SAAnB;AAA8B2B,QAAAA,YAAY,EAAE3B;AAA5C,OADZ;AAEJ4B,MAAAA,SAAS,GAAG;AAFR,QAGFhC,UAHJ;AAIA,QAAM;AACJ8B,MAAAA,eAAe,EAAEG,sBADb;AAEJF,MAAAA,YAAY,EAAEG;AAFV,QAGFL,aAHJ;AAIA,QAAIC,eAAJ;;AACA,QAAIG,sBAAJ,EAA4B;AAC1BH,MAAAA,eAAe,GAAGhD,qBAAqB,CAACC,gCAAtB,CAChBC,KADgB,EAEhBiD,sBAFgB,CAAlB;AAID;;AAED,QAAIF,YAAJ;;AACA,QAAIG,mBAAJ,EAAyB;AACvBH,MAAAA,YAAY,GAAGjD,qBAAqB,CAACC,gCAAtB,CACbC,KADa,EAEbkD,mBAFa,CAAf;AAID;;AACD,WAAO;AACLL,MAAAA,aAAa,kCACRA,aADQ;AAEXC,QAAAA,eAFW;AAGXC,QAAAA;AAHW,QADR;AAMLC,MAAAA,SAAS,oBAAOA,SAAP;AANJ,KAAP;AAQD;;AAEDjC,EAAAA,oBAAoB,GAAqB;AACvC,WAAO,KAAKQ,cAAL,EAAP;AACD;;AAEDZ,EAAAA,YAAY,QAAwD;AAAA,QAAvD;AAAEU,MAAAA,YAAF;AAAgBH,MAAAA;AAAhB,KAAuD;AAClEzB,IAAAA,GAAG,CAAC0C,KAAJ,CAAU,cAAV,EAA0Bd,YAA1B,EAAwCH,UAAxC;AACA,SAAKiC,QAAL,CAAc;AAAE9B,MAAAA,YAAF;AAAgBH,MAAAA;AAAhB,KAAd;AACA,SAAKkC,gBAAL;AACD;;AAEDvC,EAAAA,iBAAiB,CAACwC,SAAD,EAA6B;AAC5C,QAAM;AAAE7B,MAAAA;AAAF,QAA8B,KAAKd,KAAzC;AACA,QAAM;AAAEe,MAAAA,MAAF;AAAU6B,MAAAA,gBAAgB,GAAG;AAA7B,QAAuCD,SAA7C;AACA5D,IAAAA,GAAG,CAAC0C,KAAJ,kCAA2CkB,SAA3C;AACA5B,IAAAA,MAAM,CAACE,OAAP,CAAe,SAA8B;AAAA,UAA7B;AAAEM,QAAAA,OAAF;AAAWS,QAAAA,IAAX;AAAiBpB,QAAAA;AAAjB,OAA6B;;AAC3C,UAAIW,OAAO,IAAI,IAAf,EAAqB;AACnBxC,QAAAA,GAAG,CAAC0C,KAAJ,CAAU,eAAV,EAA2BF,OAA3B;AACA;AACD;;AACD,UAAI,CAACT,uBAAuB,CAAC+B,GAAxB,CAA4BtB,OAA5B,CAAL,EAA2C;AACzCxC,QAAAA,GAAG,CAAC0C,KAAJ,CAAU,qBAAV,EAAiCF,OAAjC;AACA;AACD;;AACDxC,MAAAA,GAAG,CAAC0C,KAAJ,CAAU,qBAAV,EAAiCF,OAAjC,EAA0CS,IAA1C,EAAgDpB,KAAhD;AACA,UAAM1B,KAAK,GAAG4B,uBAAuB,CAACK,GAAxB,CAA4BI,OAA5B,CAAd;;AACA,cAAQS,IAAR;AACE,aAAK7D,WAAW,CAAC0D,gBAAZ,CAA6BjD,aAA7B,CAAL;AACE,eAAKkE,sBAAL,CACE5D,KADF,EAEE0B,KAFF,EAQEgC,gBARF;AAUA;;AACF,aAAKzE,WAAW,CAAC0D,gBAAZ,CAA6B/C,gBAA7B,CAAL;AACA,aAAKX,WAAW,CAAC0D,gBAAZ,CAA6BhD,mBAA7B,CAAL;AACE,eAAKkE,uBAAL,CAA6B7D,KAA7B,EAAoC0B,KAApC;AACA;;AACF;AAjBF;AAmBD,KA9BD;AA+BD;;AAEDR,EAAAA,gBAAgB,CAAC4C,kBAAD,EAAwC;AACtD,QAAM;AAAExE,MAAAA,sBAAF;AAA0ByE,MAAAA;AAA1B,QAA+C,KAAKjD,KAA1D;AACAjB,IAAAA,GAAG,CAAC0C,KAAJ,CAAU,qBAAV,EAAiCuB,kBAAjC,EAFsD,CAGtD;AACA;;AACAxE,IAAAA,sBAAsB,CAACyE,gBAAD,EAAmB,CAAC,GAAGD,kBAAJ,CAAnB,CAAtB;AACD;;AAEDN,EAAAA,gBAAgB,GAAS;AACvB,SAAKD,QAAL,CAAc;AAAA,UAAC;AAAEjC,QAAAA,UAAF;AAAcG,QAAAA;AAAd,OAAD;AAAA,aAAmC;AAC/C;AACAL,QAAAA,UAAU,EAAE;AACVE,UAAAA,UADU;AAEVG,UAAAA;AAFU;AAFmC,OAAnC;AAAA,KAAd;AAOD;;AAEDmC,EAAAA,sBAAsB,CACpB5D,KADoB,EAEpB0B,KAFoB,EAQpBgC,gBARoB,EASd;AACN;AACA;AACA,QAAM;AACJT,MAAAA,aAAa,GAAG,EADZ;AAEJC,MAAAA,eAAe,EAAEc,mBAAmB,GAAG,EAFnC;AAGJb,MAAAA,YAAY,EAAEc,gBAAgB,GAAG;AAH7B,QAIFvC,KAJJ;AAKA,QAAM;AACJwB,MAAAA,eAAe,GAAGc,mBADd;AAEJb,MAAAA,YAAY,GAAGc;AAFX,QAGFhB,aAHJ;AAIA,QAAM;AAAED,MAAAA;AAAF,QAAoB,KAAKlC,KAA/B;AACA,QAAMuB,OAAO,GAAGpD,WAAW,CAACqD,cAAZ,CAA2BtC,KAA3B,CAAhB;;AACA,QAAIqC,OAAO,IAAI,IAAf,EAAqB;AACnBxC,MAAAA,GAAG,CAACqC,KAAJ;AACA;AACD;;AACD,QAAM9B,KAAK,GAAG4C,aAAa,CAACf,GAAd,CAAkBI,OAAlB,CAAd;;AACA,QAAIjC,KAAK,IAAI,IAAb,EAAmB;AACjBP,MAAAA,GAAG,CAACqC,KAAJ,yCAA2CG,OAA3C;AACA;AACD;;AACDxC,IAAAA,GAAG,CAAC0C,KAAJ,CAAU,wBAAV,EAAoCF,OAApC,EAA6CX,KAA7C,EAAoDgC,gBAApD;;AACA,QAAIA,gBAAJ,EAAsB;AACpB1D,MAAAA,KAAK,CAACkE,iBAAN,CAAwBxC,KAAxB;AACD,KAFD,MAEO;AACL1B,MAAAA,KAAK,CAACmE,UAAN,CAAiB;AACfhB,QAAAA,YAAY,EAAEA,YADC;AAKfD,QAAAA,eAAe,EAAEA;AALF,OAAjB;AAUD;AACF,GArRD,CAuRA;;;AACAW,EAAAA,uBAAuB,CACrB7D,KADqB,EAErB0B,KAFqB,EAGf;AACN,QAAM0C,gBAAgB,qBAAQ1C,KAAR,CAAtB,CADM,CAEN;;;AACA,WAAO0C,gBAAgB,CAAC3C,YAAxB;AACA5B,IAAAA,GAAG,CAAC0C,KAAJ,CAAU,yBAAV,EAAqCvC,KAArC,EAA4CoE,gBAA5C;;AACA,QAAIpE,KAAK,IAAID,gBAAgB,CAACC,KAAD,CAA7B,EAAsC;AACpCA,MAAAA,KAAK,CAACC,aAAN,CAAoBmE,gBAApB;AACD;AACF;;AAEDC,EAAAA,MAAM,GAAiB;AACrB,QAAM;AAAE7B,MAAAA,WAAF;AAAe8B,MAAAA,UAAf;AAA2BjD,MAAAA;AAA3B,QAA0C,KAAKP,KAArD;AACA,QAAM;AAAEW,MAAAA,YAAF;AAAgBH,MAAAA;AAAhB,QAA+B,KAAKI,KAA1C;AACA,wBACE,oBAAC,KAAD;AACE,MAAA,SAAS,EAAC,0BADZ;AAEE,MAAA,cAAc,EAAE,IAFlB;AAGE,MAAA,WAAW,EAAEc,WAHf;AAIE,MAAA,UAAU,EAAE8B,UAJd;AAKE,MAAA,UAAU,MALZ;AAME,MAAA,WAAW;AANb,oBAQE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,oBAAC,gBAAD;AACE,MAAA,QAAQ,EAAE,KAAKvD,YADjB;AAEE,MAAA,OAAO,EAAE,KAAKE,iBAFhB;AAGE,MAAA,YAAY,EAAE,KAAKC,gBAHrB;AAIE,MAAA,YAAY,EAAEO,YAJhB;AAKE,MAAA,UAAU,EAAEJ,UALd;AAME,MAAA,UAAU,EAAEC,UANd;AAOE,MAAA,cAAc,EAAE,KAAKH;AAPvB,MADF,CARF,CADF;AAsBD;;AA9TD;;gBAHWjB,qB,kBAIW;AACpBkB,EAAAA,UAAU,EAAE;AADQ,C;;gBAJXlB,qB,eAQQ,uB;;AA4TrB,IAAMqE,eAAe,GAAG,CACtB7C,KADsB,EAEtB8C,QAFsB,KAGnB;AACH,MAAM;AAAET,IAAAA;AAAF,MAAuBS,QAA7B;AACA,SAAO;AACLnD,IAAAA,UAAU,EAAElC,yBAAyB,CAACuC,KAAD,EAAQqC,gBAAR,CADhC;AAELnC,IAAAA,uBAAuB,EAAE5C,6BAA6B,CACpD0C,KADoD,EAEpDqC,gBAFoD,CAFjD;AAMLU,IAAAA,qBAAqB,EAAErF,2BAA2B,CAACsC,KAAD,EAAQqC,gBAAR,CAN7C;AAOLf,IAAAA,aAAa,EAAE3D,uBAAuB,CAACqC,KAAD,EAAQqC,gBAAR;AAPjC,GAAP;AASD,CAdD;;AAgBA,eAAehF,OAAO,CACpBwF,eADoB,EAEpB;AACEjF,EAAAA,sBAAsB,EAAEC;AAD1B,CAFoB,EAKpB,IALoB,EAMpB;AAAEmF,EAAAA,UAAU,EAAE;AAAd,CANoB,CAAP,CAObxE,qBAPa,CAAf","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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
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
|
|
17
|
-
* @param
|
|
46
|
+
* @param state Filter state to set
|
|
47
|
+
* @param sendUpdate Emit filters changed event if true
|
|
18
48
|
*/
|
|
19
|
-
setPanelState(state:
|
|
49
|
+
setPanelState(state: PanelState, sendUpdate?: boolean): void;
|
|
20
50
|
updateColumns(): void;
|
|
51
|
+
render(): JSX.Element;
|
|
21
52
|
}
|
|
22
|
-
declare
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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.
|
|
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
|
|
28
|
+
value,
|
|
26
29
|
isValueShown = false,
|
|
27
30
|
name,
|
|
28
31
|
type,
|
|
29
|
-
timestamp
|
|
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
|
-
} :
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
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
|
|
139
|
-
* @param
|
|
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
|
|
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(
|
|
190
|
+
if (column != null && !columns.find(_ref4 => {
|
|
178
191
|
var {
|
|
179
192
|
name,
|
|
180
193
|
type
|
|
181
|
-
} =
|
|
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, "
|
|
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
|
-
};
|
|
242
|
-
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
_defineProperty(InputFilterPanel, "COMPONENT", 'InputFilterPanel');
|
|
243
244
|
|
|
244
|
-
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":"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","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"}
|