@deephaven/dashboard-core-plugins 0.6.3-beta.11 → 0.6.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/ChartPlugin.js +1 -1
- package/dist/ChartPlugin.js.map +1 -1
- package/dist/ConsolePlugin.js +3 -3
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.js +4 -4
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPlugin.js +1 -1
- package/dist/GridPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js +1 -1
- package/dist/MarkdownPlugin.js +1 -1
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPlugin.js +1 -1
- package/dist/PandasPlugin.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +3 -3
- package/dist/controls/input-filter/InputFilter.js +1 -1
- package/dist/linker/Linker.js +4 -4
- package/dist/linker/LinkerOverlayContent.js +1 -1
- package/dist/linker/LinkerUtils.js +2 -2
- package/dist/panels/ChartColumnSelectorOverlay.js +1 -1
- package/dist/panels/ChartFilterOverlay.js +1 -1
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.js +4 -4
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.d.ts.map +1 -1
- package/dist/panels/ConsolePanel.js +4 -4
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts +1 -1
- package/dist/panels/DropdownFilterPanel.js +2 -2
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.js +14 -14
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js +7 -7
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.js +2 -2
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +4 -8
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.js +4 -4
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +1 -2
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/redux/index.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +17 -17
|
@@ -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","selectedEditId","localDashboardId","prevSelection","find","savedAdvancedFilters","savedQuickFilters","setFilters","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, selectedEditId) {\n const { setDashboardFilterSets, localDashboardId } = this.props;\n const { selectedId } = this.state;\n // Only change the selected filter if the previous selection was deleted\n const prevSelection = modifiedFilterSets.find(\n ({ id }) => id === selectedId\n );\n if (prevSelection !== undefined) {\n this.setState({ selectedId: selectedEditId });\n }\n\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 log.debug('restoreInputFilterState', panel, state);\n panel.setPanelState(state);\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","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","selectedEditId","localDashboardId","prevSelection","find","savedAdvancedFilters","savedQuickFilters","setFilters","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,\n indexedAdvancedFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedAdvancedFilters\n );\n const dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(\n table,\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, selectedEditId) {\n const { setDashboardFilterSets, localDashboardId } = this.props;\n const { selectedId } = this.state;\n // Only change the selected filter if the previous selection was deleted\n const prevSelection = modifiedFilterSets.find(\n ({ id }) => id === selectedId\n );\n if (prevSelection !== undefined) {\n this.setState({ selectedId: selectedEditId });\n }\n\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 log.debug('restoreInputFilterState', panel, state);\n panel.setPanelState(state);\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"}
|
|
@@ -84,7 +84,7 @@ class InputFilterPanel extends Component {
|
|
|
84
84
|
} = column;
|
|
85
85
|
var sendUpdate = true;
|
|
86
86
|
var timestamp = Date.now();
|
|
87
|
-
this.setState(_ref2 => {
|
|
87
|
+
this.setState((_ref2) => {
|
|
88
88
|
var {
|
|
89
89
|
panelState,
|
|
90
90
|
timestamp: prevTimestamp,
|
|
@@ -174,7 +174,7 @@ class InputFilterPanel extends Component {
|
|
|
174
174
|
};
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
if (column != null && !columns.find(_ref3 => {
|
|
177
|
+
if (column != null && !columns.find((_ref3) => {
|
|
178
178
|
var {
|
|
179
179
|
name,
|
|
180
180
|
type
|
|
@@ -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.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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.jsx"],"names":[],"mappings":"AA2CA;IACE,yBAAmC;IAEnC,wBAmFC;
|
|
1
|
+
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.jsx"],"names":[],"mappings":"AA2CA;IACE,yBAAmC;IAEnC,wBAmFC;IAulBD,uBAsEC;IAxbD,yDAOC;IAqDD,uCAOC;IAED,qCAKC;IAyCD,wCAGC;IAED,iDAGC;IAUD,8BAGC;IApGD,gEAYC;IAED,gDAQC;IAkBD,qDAMC;IAED,mDA6BC;IAYD,qBAEC;IAED,mBAEC;IAOD,yBAMC;IAED,wBAEC;IAhND,yCA6CC;IAqKD,kCAMC;IAhID,8CAMC;IAVD,kCAEC;IAjBD,uCASC;IAED,wDAEC;IA6JD,8BAMC;IAjdC,+BAAiC;IACjC,gCAAkC;IAClC,uEAAwB;IAKxB,mBAAyB;IACzB,eAAqB;IACrB,iBAAuB;IA4EzB,oBAGC;IAED,2EAWE;IAEF,0FAWG;IAEH,0HAqBG;IAEH,oIAOE;IAEF;;;;;;;;;;;;;;;;;;;MA4CE;IAEF,6FAEE;IAEF;;;;;MAOE;IAEF,kBAWC;IAiDD,uDAWC;IAgKD,mCAmBC;IAUD,sCAIC;IAED,sCAcC;IAED,qCAiBC;IAED,sDAsCC;IAED,mCAKC;IAED,2CAKC;IAED;;;aAaC;IAGD,yBAEC;IAED,iCAkEC;IA0ED,mBAMC;CA0IF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+CgB,wCAAQ;;QACH,6CAAQ"}
|
|
@@ -33,7 +33,7 @@ export class IrisGridPanel extends PureComponent {
|
|
|
33
33
|
super(props);
|
|
34
34
|
|
|
35
35
|
_defineProperty(this, "getGridInputFilters", memoize((columns, inputFilters) => IrisGridUtils.getInputFiltersForColumns(columns, // They may have picked a column, but not actually entered a value yet. In that case, don't need to update.
|
|
36
|
-
inputFilters.filter(_ref => {
|
|
36
|
+
inputFilters.filter((_ref) => {
|
|
37
37
|
var {
|
|
38
38
|
value,
|
|
39
39
|
excludePanelIds
|
|
@@ -331,7 +331,7 @@ export class IrisGridPanel extends PureComponent {
|
|
|
331
331
|
|
|
332
332
|
handleAdvancedSettingsChange(key, value) {
|
|
333
333
|
log.debug('handleAdvancedSettingsChange', key, value);
|
|
334
|
-
this.setState(_ref2 => {
|
|
334
|
+
this.setState((_ref2) => {
|
|
335
335
|
var {
|
|
336
336
|
advancedSettings
|
|
337
337
|
} = _ref2;
|
|
@@ -658,14 +658,10 @@ export class IrisGridPanel extends PureComponent {
|
|
|
658
658
|
} = this.state;
|
|
659
659
|
|
|
660
660
|
if (irisGrid != null && !isDisconnected) {
|
|
661
|
-
var {
|
|
662
|
-
columns,
|
|
663
|
-
formatter
|
|
664
|
-
} = model;
|
|
665
661
|
irisGrid.clearAllFilters();
|
|
666
662
|
irisGrid.setFilters({
|
|
667
|
-
quickFilters: IrisGridUtils.hydrateQuickFilters(
|
|
668
|
-
advancedFilters: IrisGridUtils.hydrateAdvancedFilters(
|
|
663
|
+
quickFilters: IrisGridUtils.hydrateQuickFilters(model, quickFilters),
|
|
664
|
+
advancedFilters: IrisGridUtils.hydrateAdvancedFilters(model, advancedFilters)
|
|
669
665
|
});
|
|
670
666
|
}
|
|
671
667
|
} // eslint-disable-next-line class-methods-use-this
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/IrisGridPanel.jsx"],"names":["React","PureComponent","memoize","PropTypes","connect","debounce","ChartModelFactory","ChartUtils","GLPropTypes","LayoutUtils","IrisGrid","IrisGridModel","IrisGridUtils","IrisGridTableModel","TableUtils","AdvancedSettings","APIPropTypes","Log","getSettings","getUser","getWorkspace","PromiseUtils","ContextMenuRoot","ChartEvent","ConsoleEvent","InputFilterEvent","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","UIPropTypes","WidgetPanel","log","module","DEBOUNCE_PANEL_STATE_UPDATE","PLUGIN_COMPONENTS","IrisGridPanel","constructor","props","columns","inputFilters","getInputFiltersForColumns","filter","value","excludePanelIds","includes","getIdFromPanel","dashboardLinks","pluginFetchColumns","id","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","table","user","workspace","pluginState","pluginRef","handlePluginFilter","handlePluginFetchColumns","handlePluginStateChange","model","isSelectingPartition","partition","partitionColumn","dehydrateIrisGridPanelState","sorts","advancedFilters","customColumnFormatMap","isFilterBarShown","quickFilters","customColumns","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","invertSearchColumns","userColumnWidths","userRowHeights","aggregationSettings","advancedSettings","pendingDataMap","dehydrateIrisGridState","metrics","movedColumns","movedRows","dehydrateGridState","irisGridPanelState","irisGridState","gridState","savePanelState","bind","handleAdvancedSettingsChange","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handlePartitionAppend","handleCreateChart","handleResize","handleShow","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","modelPromise","panelState","metadata","queryName","query","state","error","isDisconnected","isLoaded","isLoading","isModelReady","Map","aggregations","showOnTop","DEFAULTS","REVERSE_TYPE","NONE","pluginFilters","modelQueue","componentDidMount","initModel","componentDidUpdate","_","prevState","stopModelListening","close","startModelListening","componentWillUnmount","cancel","getTableName","setState","makeModel","makeCancelable","resolved","then","catch","modelParam","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","debug","key","get","set","filters","formatter","getFiltersFromInputFilters","timeZone","data","current","getMenu","tableColumn","columnSelectionValidator","glEventHub","onStateChange","emit","STATE_CHANGED","event","sendColumnsChange","detail","TABLE_CHANGED","column","name","tableName","command","SEND_COMMAND","settings","flush","makeModelFromSettings","querySerial","tableSettings","extractTableSettings","title","titleFromSettings","OPEN","dehydrateSettings","sourcePanelId","COLUMN_SELECTED","row","dataMap","DATA_SELECTED","updateGrid","Error","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","COLUMNS_CHANGED","addEventListener","EVENT","DISCONNECT","RECONNECT","removeEventListener","getCoordinateForColumn","gridWrapper","rect","getBoundingClientRect","width","height","columnHeaderHeight","visibleColumnXs","visibleColumnWidths","right","visibleIndex","getVisibleColumn","getColumnIndexByName","columnX","columnWidth","x","Math","max","left","min","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","hydrateQuickFilters","hydrateAdvancedFilters","unsetFilterValue","hydrateIrisGridPanelState","hydrateIrisGridState","hydrateGridState","onPanelStateUpdate","oldPanelState","getCachedPanelState","getDehydratedIrisGridPanelState","getDehydratedIrisGridState","getDehydratedGridState","grid","render","children","glContainer","getDownloadWorker","links","errorMessage","description","childrenContent","getPluginContent","getAlwaysFetchColumns","getGridInputFilters","propTypes","node","Container","isRequired","EventHub","shape","string","arrayOf","array","func","InputFilter","Links","User","defaultProps","undefined","displayName","mapStateToProps","ownProps","localDashboardId","forwardRef"],"mappings":"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","sourcesContent":["// Wrapper for the IrisGrid for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent } from 'react';\nimport memoize from 'memoize-one';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { ChartModelFactory, ChartUtils } from '@deephaven/chart';\nimport { GLPropTypes, LayoutUtils } from '@deephaven/dashboard';\nimport {\n IrisGrid,\n IrisGridModel,\n IrisGridUtils,\n IrisGridTableModel,\n TableUtils,\n} from '@deephaven/iris-grid';\nimport AdvancedSettings from '@deephaven/iris-grid/dist/sidebar/AdvancedSettings';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { getSettings, getUser, getWorkspace } from '@deephaven/redux';\nimport { PromiseUtils } from '@deephaven/utils';\nimport { ContextMenuRoot } from '@deephaven/components';\nimport {\n ChartEvent,\n ConsoleEvent,\n InputFilterEvent,\n IrisGridEvent,\n} from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport { UIPropTypes } from '../prop-types';\nimport WidgetPanel from './WidgetPanel';\nimport './IrisGridPanel.scss';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst PLUGIN_COMPONENTS = { IrisGrid, IrisGridTableModel, ContextMenuRoot };\n\nexport class IrisGridPanel extends PureComponent {\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props) {\n super(props);\n\n this.savePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.handleAdvancedSettingsChange = this.handleAdvancedSettingsChange.bind(\n this\n );\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleDataSelected = this.handleDataSelected.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePluginStateChange = this.handlePluginStateChange.bind(this);\n this.handlePartitionAppend = this.handlePartitionAppend.bind(this);\n this.handleCreateChart = this.handleCreateChart.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handlePluginFilter = this.handlePluginFilter.bind(this);\n this.handlePluginFetchColumns = this.handlePluginFetchColumns.bind(this);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.irisGrid = React.createRef();\n this.pluginRef = React.createRef();\n this.modelPromise = null;\n\n const { panelState, metadata } = props;\n const queryName = metadata.query;\n\n this.irisGridState = null;\n this.gridState = null;\n this.pluginState = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: null,\n\n // State is hydrated from panel state when table is loaded\n advancedFilters: new Map(),\n aggregationSettings: { aggregations: [], showOnTop: false },\n advancedSettings: new Map(AdvancedSettings.DEFAULTS),\n customColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partition: null,\n partitionColumn: null,\n queryName,\n rollupConfig: null,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n Plugin: null,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n\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.initModel();\n }\n\n componentDidUpdate(_, prevState) {\n const { model } = this.state;\n if (model !== prevState.model) {\n if (prevState.model != null) {\n this.stopModelListening(prevState.model);\n prevState.model.close();\n }\n if (model != null) {\n this.startModelListening(model);\n }\n }\n }\n\n componentWillUnmount() {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = null;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n getTableName() {\n const { metadata } = this.props;\n return metadata.table;\n }\n\n getGridInputFilters = memoize((columns, inputFilters) =>\n IrisGridUtils.getInputFiltersForColumns(\n columns,\n // They may have picked a column, but not actually entered a value yet. In that case, don't need to update.\n inputFilters.filter(\n ({ value, excludePanelIds }) =>\n value != null &&\n (excludePanelIds == null ||\n !excludePanelIds.includes(LayoutUtils.getIdFromPanel(this)))\n )\n )\n );\n\n getAlwaysFetchColumns = memoize((dashboardLinks, pluginFetchColumns) => {\n const id = LayoutUtils.getIdFromPanel(this);\n // Always fetch columns which are the start/source of a link or columns specified by a plugin\n const columnSet = new Set(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n });\n\n getPluginContent = memoize((Plugin, table, user, workspace, pluginState) => {\n if (Plugin == null || table == null) {\n return null;\n }\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n onFilter={this.handlePluginFilter}\n onFetchColumns={this.handlePluginFetchColumns}\n table={table}\n user={user}\n panel={this}\n workspace={workspace}\n components={PLUGIN_COMPONENTS}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n />\n </div>\n );\n });\n\n getDehydratedIrisGridPanelState = memoize(\n (model, isSelectingPartition, partition, partitionColumn) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partition,\n partitionColumn,\n })\n );\n\n getDehydratedIrisGridState = memoize(\n (\n model,\n sorts,\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n userColumnWidths,\n userRowHeights,\n aggregationSettings,\n advancedSettings,\n pendingDataMap\n ) =>\n IrisGridUtils.dehydrateIrisGridState(model, {\n advancedFilters,\n advancedSettings,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n metrics: {\n userColumnWidths,\n userRowHeights,\n },\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap,\n })\n );\n\n getDehydratedGridState = memoize((model, movedColumns, movedRows) =>\n IrisGridUtils.dehydrateGridState(model, { movedColumns, movedRows })\n );\n\n getCachedPanelState = memoize(\n (irisGridPanelState, irisGridState, gridState, pluginState) => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel() {\n this.setState({ isModelReady: false, isLoading: true, error: null });\n const { makeModel } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n this.modelPromise = PromiseUtils.makeCancelable(\n makeModel(),\n resolved => resolved.close\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam) {\n const model = modelParam;\n const { panelState } = this.props;\n const modelQueue = [];\n\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = irisGridState;\n\n if (customColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.customColumns = customColumns;\n });\n }\n\n if (rollupConfig != null && rollupConfig.columns.length > 0) {\n // originalColumns might change by the time this model queue item is applied.\n // Instead of pushing a static object, push the function\n // that calculates the config based on the updated model state.\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.rollupConfig = IrisGridUtils.getModelRollupConfig(\n m.originalColumns,\n rollupConfig,\n aggregationSettings\n );\n });\n }\n\n if (selectDistinctColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.selectDistinctColumns = selectDistinctColumns;\n });\n }\n }\n\n this.setState({ model, modelQueue });\n this.initModelQueue(model, modelQueue);\n }\n\n initModelQueue(modelParam, modelQueue) {\n const model = modelParam;\n if (modelQueue.length === 0) {\n this.modelInitialized(model);\n return;\n }\n const modelChange = modelQueue.shift();\n log.debug('initModelQueue', modelChange);\n // Apply next model change. Triggers columnschanged event.\n modelChange(model);\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(key, value) {\n log.debug('handleAdvancedSettingsChange', key, value);\n this.setState(({ advancedSettings }) =>\n advancedSettings.get(key) === value\n ? null\n : { advancedSettings: new Map(advancedSettings).set(key, value) }\n );\n }\n\n handlePluginFilter(filters) {\n const { model } = this.state;\n const { columns, formatter } = model;\n const pluginFilters = IrisGridUtils.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n );\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns) {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data) {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn) {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator) {\n return columnSelectionValidator(this, tableColumn);\n }\n return false;\n }\n\n handleGridStateChange(irisGridState, gridState) {\n this.irisGridState = irisGridState;\n this.gridState = gridState;\n\n // Grid sends it's first state change after it's finished loading\n this.setState({ isLoaded: true, isLoading: false });\n\n this.savePanelState();\n\n const { glEventHub, onStateChange } = this.props;\n glEventHub.emit(IrisGridEvent.STATE_CHANGED, this);\n onStateChange(irisGridState, gridState);\n }\n\n handlePluginStateChange(pluginState) {\n const { irisGridState, gridState } = this;\n this.pluginState = pluginState;\n // Do not save if there is null state\n // The save will happen when the grid loads\n if (irisGridState !== null && gridState !== null) {\n this.savePanelState();\n }\n }\n\n handleColumnsChanged(event) {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange(event.detail);\n } else {\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event) {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event;\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n handlePartitionAppend(column, value) {\n const { glEventHub } = this.props;\n const { name } = column;\n const tableName = this.getTableName();\n const command = `${tableName} = ${tableName}.where(\"${name}=\\`${value}\\`\")`;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n handleCreateChart(settings, table) {\n // Panel state is stored with the created chart, so flush it first\n this.savePanelState.flush();\n\n this.setState(\n () => null,\n () => {\n const makeModel = () =>\n ChartModelFactory.makeModelFromSettings(settings, table);\n\n const { glEventHub, inputFilters, metadata } = this.props;\n const { querySerial, table: tableName } = metadata;\n const { panelState } = this.state;\n const id = LayoutUtils.getIdFromPanel(this);\n\n const tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n const title = ChartUtils.titleFromSettings(settings);\n glEventHub.emit(ChartEvent.OPEN, title, makeModel, {\n querySerial,\n settings: ChartUtils.dehydrateSettings(settings),\n sourcePanelId: id,\n table: tableName,\n tableSettings,\n });\n }\n );\n }\n\n handleColumnSelected(column) {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.COLUMN_SELECTED, this, column);\n }\n\n handleDataSelected(row, dataMap) {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.DATA_SELECTED, this, dataMap);\n }\n\n handleResize() {\n this.updateGrid();\n }\n\n handleShow() {\n this.updateGrid();\n }\n\n handleError(error) {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect() {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model) {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = null;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n const { table } = model;\n const { pluginName } = table;\n if (loadPlugin && pluginName) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters() {\n const irisGrid = this.irisGrid.current;\n const { isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n }\n }\n\n sendColumnsChange(columns) {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, columns);\n }\n\n startModelListening(model) {\n model.addEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.addEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopModelListening(model) {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.RECONNECT,\n this.handleReconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n getCoordinateForColumn(columnName) {\n const { model } = this.state;\n if (!model) {\n return null;\n }\n\n const irisGrid = this.irisGrid.current;\n const { gridWrapper } = irisGrid || {};\n const rect = gridWrapper?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n\n const { metrics } = irisGrid.state;\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n right,\n } = metrics;\n const visibleIndex = irisGrid.getVisibleColumn(\n model.getColumnIndexByName(columnName)\n );\n const columnX = visibleColumnXs.get(visibleIndex) || 0;\n const columnWidth = visibleColumnWidths.get(visibleIndex) || 0;\n\n const x = Math.max(\n rect.left,\n Math.min(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.right\n )\n );\n const y = rect.top + columnHeaderHeight;\n\n return [x, y];\n }\n\n setFilterMap(filterMap) {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap) {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({ quickFilters, advancedFilters }) {\n const irisGrid = this.irisGrid.current;\n const { model, isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n const { columns, formatter } = model;\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: IrisGridUtils.hydrateQuickFilters(\n columns,\n quickFilters,\n formatter.timeZone\n ),\n advancedFilters: IrisGridUtils.hydrateAdvancedFilters(\n columns,\n advancedFilters,\n formatter.timeZone\n ),\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue() {\n // IrisGridPanel retains the set value after the link is broken\n }\n\n loadPanelState(model) {\n const { panelState } = this.props;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n const {\n advancedFilters,\n advancedSettings,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n } = IrisGridUtils.hydrateIrisGridState(model, irisGridState);\n const { movedColumns, movedRows } = IrisGridUtils.hydrateGridState(\n model,\n gridState,\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState() {\n const { irisGridState, gridState, pluginState } = this;\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partition,\n partitionColumn,\n advancedSettings,\n } = this.state;\n const {\n advancedFilters,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n metrics,\n pendingDataMap,\n } = irisGridState;\n const { userColumnWidths, userRowHeights } = metrics;\n const { movedColumns, movedRows } = gridState;\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partition,\n partitionColumn\n ),\n this.getDehydratedIrisGridState(\n model,\n sorts,\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n userColumnWidths,\n userRowHeights,\n aggregationSettings,\n advancedSettings,\n pendingDataMap\n ),\n this.getDehydratedGridState(model, movedColumns, movedRows),\n pluginState\n );\n\n if (panelState !== oldPanelState) {\n log.debug('Saving panel state', this, panelState);\n\n this.setState({ panelState });\n onPanelStateUpdate(panelState);\n }\n }\n\n updateGrid() {\n const grid = this.irisGrid.current?.grid ?? null;\n if (!grid) return;\n\n // handle resize will verify state and draw and update\n grid.handleResize();\n }\n\n render() {\n const {\n children,\n glContainer,\n glEventHub,\n columnSelectionValidator,\n getDownloadWorker,\n inputFilters,\n links,\n metadata,\n panelState,\n user,\n workspace,\n settings,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n customColumns,\n customColumnFormatMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n queryName,\n quickFilters,\n reverseType,\n rollupConfig,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n Plugin,\n pluginFilters,\n pluginFetchColumns,\n pendingDataMap,\n } = this.state;\n const errorMessage = error ? `Unable to open table. ${error}` : null;\n const { table: name, querySerial } = metadata;\n const description = model?.description ?? null;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ??\n this.getPluginContent(Plugin, model?.table, user, workspace, pluginState);\n\n return (\n <WidgetPanel\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n className=\"iris-grid-panel\"\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n queryName={queryName}\n querySerial={querySerial}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n >\n {isModelReady && (\n <IrisGrid\n advancedFilters={advancedFilters}\n aggregationSettings={aggregationSettings}\n advancedSettings={advancedSettings}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n links,\n pluginFetchColumns\n )}\n columnAllowedCursor=\"linker\"\n columnNotAllowedCursor=\"not-allowed\"\n customColumns={customColumns}\n customColumnFormatMap={customColumnFormatMap}\n columnSelectionValidator={this.isColumnSelectionValid}\n inputFilters={this.getGridInputFilters(model.columns, inputFilters)}\n applyInputFiltersOnInit={panelState == null}\n isFilterBarShown={isFilterBarShown}\n isSelectingColumn={columnSelectionValidator != null}\n isSelectingPartition={isSelectingPartition}\n movedColumns={movedColumns}\n movedRows={movedRows}\n partition={partition}\n partitionColumn={partitionColumn}\n quickFilters={quickFilters}\n reverseType={reverseType}\n rollupConfig={rollupConfig}\n settings={settings}\n sorts={sorts}\n userColumnWidths={userColumnWidths}\n userRowHeights={userRowHeights}\n model={model}\n tableName={name}\n showSearchBar={showSearchBar}\n searchValue={searchValue}\n selectedSearchColumns={selectedSearchColumns}\n selectDistinctColumns={selectDistinctColumns}\n invertSearchColumns={invertSearchColumns}\n onColumnSelected={this.handleColumnSelected}\n onCreateChart={this.handleCreateChart}\n onDataSelected={this.handleDataSelected}\n onError={this.handleError}\n onPartitionAppend={this.handlePartitionAppend}\n onStateChange={this.handleGridStateChange}\n onContextMenu={this.handleContextMenu}\n onAdvancedSettingsChange={this.handleAdvancedSettingsChange}\n customFilters={pluginFilters}\n pendingDataMap={pendingDataMap}\n ref={this.irisGrid}\n getDownloadWorker={getDownloadWorker}\n >\n {childrenContent}\n </IrisGrid>\n )}\n\n {!isModelReady && <></>}\n </WidgetPanel>\n );\n }\n}\n\nIrisGridPanel.propTypes = {\n children: PropTypes.node,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n metadata: PropTypes.shape({\n table: PropTypes.string.isRequired,\n query: PropTypes.string,\n querySerial: PropTypes.string,\n }).isRequired,\n panelState: PropTypes.shape({\n gridState: PropTypes.shape({}),\n irisGridState: PropTypes.shape({\n aggregationSettings: PropTypes.shape({}),\n customColumns: PropTypes.arrayOf(PropTypes.string),\n selectDistinctColumns: PropTypes.arrayOf(PropTypes.string),\n rollupConfig: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.string).isRequired,\n }),\n pendingDataMap: PropTypes.arrayOf(PropTypes.array),\n }),\n irisGridPanelState: PropTypes.shape({}),\n pluginState: PropTypes.shape({}),\n }),\n makeModel: PropTypes.func.isRequired,\n inputFilters: PropTypes.arrayOf(UIPropTypes.InputFilter).isRequired,\n links: UIPropTypes.Links.isRequired,\n columnSelectionValidator: PropTypes.func,\n onStateChange: PropTypes.func,\n onPanelStateUpdate: PropTypes.func,\n user: APIPropTypes.User.isRequired,\n workspace: PropTypes.shape({}).isRequired,\n settings: PropTypes.shape({ timeZone: PropTypes.string.isRequired })\n .isRequired,\n\n // Retrieve a download worker for optimizing exporting tables\n getDownloadWorker: PropTypes.func,\n\n // Load a plugin defined by the table\n loadPlugin: PropTypes.func,\n};\n\nIrisGridPanel.defaultProps = {\n children: null,\n panelState: null,\n columnSelectionValidator: null,\n onStateChange: () => {},\n onPanelStateUpdate: () => {},\n getDownloadWorker: undefined,\n loadPlugin: undefined,\n};\n\nIrisGridPanel.displayName = 'IrisGridPanel';\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n return {\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n workspace: getWorkspace(state),\n settings: getSettings(state),\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n IrisGridPanel\n);\n"],"file":"IrisGridPanel.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/panels/IrisGridPanel.jsx"],"names":["React","PureComponent","memoize","PropTypes","connect","debounce","ChartModelFactory","ChartUtils","GLPropTypes","LayoutUtils","IrisGrid","IrisGridModel","IrisGridUtils","IrisGridTableModel","TableUtils","AdvancedSettings","APIPropTypes","Log","getSettings","getUser","getWorkspace","PromiseUtils","ContextMenuRoot","ChartEvent","ConsoleEvent","InputFilterEvent","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","UIPropTypes","WidgetPanel","log","module","DEBOUNCE_PANEL_STATE_UPDATE","PLUGIN_COMPONENTS","IrisGridPanel","constructor","props","columns","inputFilters","getInputFiltersForColumns","filter","value","excludePanelIds","includes","getIdFromPanel","dashboardLinks","pluginFetchColumns","id","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","table","user","workspace","pluginState","pluginRef","handlePluginFilter","handlePluginFetchColumns","handlePluginStateChange","model","isSelectingPartition","partition","partitionColumn","dehydrateIrisGridPanelState","sorts","advancedFilters","customColumnFormatMap","isFilterBarShown","quickFilters","customColumns","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","invertSearchColumns","userColumnWidths","userRowHeights","aggregationSettings","advancedSettings","pendingDataMap","dehydrateIrisGridState","metrics","movedColumns","movedRows","dehydrateGridState","irisGridPanelState","irisGridState","gridState","savePanelState","bind","handleAdvancedSettingsChange","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handlePartitionAppend","handleCreateChart","handleResize","handleShow","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","modelPromise","panelState","metadata","queryName","query","state","error","isDisconnected","isLoaded","isLoading","isModelReady","Map","aggregations","showOnTop","DEFAULTS","REVERSE_TYPE","NONE","pluginFilters","modelQueue","componentDidMount","initModel","componentDidUpdate","_","prevState","stopModelListening","close","startModelListening","componentWillUnmount","cancel","getTableName","setState","makeModel","makeCancelable","resolved","then","catch","modelParam","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","debug","key","get","set","filters","formatter","getFiltersFromInputFilters","timeZone","data","current","getMenu","tableColumn","columnSelectionValidator","glEventHub","onStateChange","emit","STATE_CHANGED","event","sendColumnsChange","detail","TABLE_CHANGED","column","name","tableName","command","SEND_COMMAND","settings","flush","makeModelFromSettings","querySerial","tableSettings","extractTableSettings","title","titleFromSettings","OPEN","dehydrateSettings","sourcePanelId","COLUMN_SELECTED","row","dataMap","DATA_SELECTED","updateGrid","Error","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","COLUMNS_CHANGED","addEventListener","EVENT","DISCONNECT","RECONNECT","removeEventListener","getCoordinateForColumn","gridWrapper","rect","getBoundingClientRect","width","height","columnHeaderHeight","visibleColumnXs","visibleColumnWidths","right","visibleIndex","getVisibleColumn","getColumnIndexByName","columnX","columnWidth","x","Math","max","left","min","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","hydrateQuickFilters","hydrateAdvancedFilters","unsetFilterValue","hydrateIrisGridPanelState","hydrateIrisGridState","hydrateGridState","onPanelStateUpdate","oldPanelState","getCachedPanelState","getDehydratedIrisGridPanelState","getDehydratedIrisGridState","getDehydratedGridState","grid","render","children","glContainer","getDownloadWorker","links","errorMessage","description","childrenContent","getPluginContent","getAlwaysFetchColumns","getGridInputFilters","propTypes","node","Container","isRequired","EventHub","shape","string","arrayOf","array","func","InputFilter","Links","User","defaultProps","undefined","displayName","mapStateToProps","ownProps","localDashboardId","forwardRef"],"mappings":"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","sourcesContent":["// Wrapper for the IrisGrid for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent } from 'react';\nimport memoize from 'memoize-one';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { ChartModelFactory, ChartUtils } from '@deephaven/chart';\nimport { GLPropTypes, LayoutUtils } from '@deephaven/dashboard';\nimport {\n IrisGrid,\n IrisGridModel,\n IrisGridUtils,\n IrisGridTableModel,\n TableUtils,\n} from '@deephaven/iris-grid';\nimport AdvancedSettings from '@deephaven/iris-grid/dist/sidebar/AdvancedSettings';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { getSettings, getUser, getWorkspace } from '@deephaven/redux';\nimport { PromiseUtils } from '@deephaven/utils';\nimport { ContextMenuRoot } from '@deephaven/components';\nimport {\n ChartEvent,\n ConsoleEvent,\n InputFilterEvent,\n IrisGridEvent,\n} from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport { UIPropTypes } from '../prop-types';\nimport WidgetPanel from './WidgetPanel';\nimport './IrisGridPanel.scss';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst PLUGIN_COMPONENTS = { IrisGrid, IrisGridTableModel, ContextMenuRoot };\n\nexport class IrisGridPanel extends PureComponent {\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props) {\n super(props);\n\n this.savePanelState = debounce(\n this.savePanelState.bind(this),\n DEBOUNCE_PANEL_STATE_UPDATE\n );\n\n this.handleAdvancedSettingsChange = this.handleAdvancedSettingsChange.bind(\n this\n );\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handleTableChanged = this.handleTableChanged.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleDataSelected = this.handleDataSelected.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePluginStateChange = this.handlePluginStateChange.bind(this);\n this.handlePartitionAppend = this.handlePartitionAppend.bind(this);\n this.handleCreateChart = this.handleCreateChart.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n this.handleContextMenu = this.handleContextMenu.bind(this);\n this.handlePluginFilter = this.handlePluginFilter.bind(this);\n this.handlePluginFetchColumns = this.handlePluginFetchColumns.bind(this);\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.irisGrid = React.createRef();\n this.pluginRef = React.createRef();\n this.modelPromise = null;\n\n const { panelState, metadata } = props;\n const queryName = metadata.query;\n\n this.irisGridState = null;\n this.gridState = null;\n this.pluginState = null;\n\n this.state = {\n error: null,\n isDisconnected: false,\n isLoaded: false,\n isLoading: true,\n isModelReady: false,\n model: null,\n\n // State is hydrated from panel state when table is loaded\n advancedFilters: new Map(),\n aggregationSettings: { aggregations: [], showOnTop: false },\n advancedSettings: new Map(AdvancedSettings.DEFAULTS),\n customColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partition: null,\n partitionColumn: null,\n queryName,\n rollupConfig: null,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n Plugin: null,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n\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.initModel();\n }\n\n componentDidUpdate(_, prevState) {\n const { model } = this.state;\n if (model !== prevState.model) {\n if (prevState.model != null) {\n this.stopModelListening(prevState.model);\n prevState.model.close();\n }\n if (model != null) {\n this.startModelListening(model);\n }\n }\n }\n\n componentWillUnmount() {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = null;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n getTableName() {\n const { metadata } = this.props;\n return metadata.table;\n }\n\n getGridInputFilters = memoize((columns, inputFilters) =>\n IrisGridUtils.getInputFiltersForColumns(\n columns,\n // They may have picked a column, but not actually entered a value yet. In that case, don't need to update.\n inputFilters.filter(\n ({ value, excludePanelIds }) =>\n value != null &&\n (excludePanelIds == null ||\n !excludePanelIds.includes(LayoutUtils.getIdFromPanel(this)))\n )\n )\n );\n\n getAlwaysFetchColumns = memoize((dashboardLinks, pluginFetchColumns) => {\n const id = LayoutUtils.getIdFromPanel(this);\n // Always fetch columns which are the start/source of a link or columns specified by a plugin\n const columnSet = new Set(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n });\n\n getPluginContent = memoize((Plugin, table, user, workspace, pluginState) => {\n if (Plugin == null || table == null) {\n return null;\n }\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n onFilter={this.handlePluginFilter}\n onFetchColumns={this.handlePluginFetchColumns}\n table={table}\n user={user}\n panel={this}\n workspace={workspace}\n components={PLUGIN_COMPONENTS}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n />\n </div>\n );\n });\n\n getDehydratedIrisGridPanelState = memoize(\n (model, isSelectingPartition, partition, partitionColumn) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partition,\n partitionColumn,\n })\n );\n\n getDehydratedIrisGridState = memoize(\n (\n model,\n sorts,\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n userColumnWidths,\n userRowHeights,\n aggregationSettings,\n advancedSettings,\n pendingDataMap\n ) =>\n IrisGridUtils.dehydrateIrisGridState(model, {\n advancedFilters,\n advancedSettings,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n metrics: {\n userColumnWidths,\n userRowHeights,\n },\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n pendingDataMap,\n })\n );\n\n getDehydratedGridState = memoize((model, movedColumns, movedRows) =>\n IrisGridUtils.dehydrateGridState(model, { movedColumns, movedRows })\n );\n\n getCachedPanelState = memoize(\n (irisGridPanelState, irisGridState, gridState, pluginState) => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel() {\n this.setState({ isModelReady: false, isLoading: true, error: null });\n const { makeModel } = this.props;\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n }\n this.modelPromise = PromiseUtils.makeCancelable(\n makeModel(),\n resolved => resolved.close\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam) {\n const model = modelParam;\n const { panelState } = this.props;\n const modelQueue = [];\n\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = irisGridState;\n\n if (customColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.customColumns = customColumns;\n });\n }\n\n if (rollupConfig != null && rollupConfig.columns.length > 0) {\n // originalColumns might change by the time this model queue item is applied.\n // Instead of pushing a static object, push the function\n // that calculates the config based on the updated model state.\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.rollupConfig = IrisGridUtils.getModelRollupConfig(\n m.originalColumns,\n rollupConfig,\n aggregationSettings\n );\n });\n }\n\n if (selectDistinctColumns.length > 0) {\n modelQueue.push(m => {\n // eslint-disable-next-line no-param-reassign\n m.selectDistinctColumns = selectDistinctColumns;\n });\n }\n }\n\n this.setState({ model, modelQueue });\n this.initModelQueue(model, modelQueue);\n }\n\n initModelQueue(modelParam, modelQueue) {\n const model = modelParam;\n if (modelQueue.length === 0) {\n this.modelInitialized(model);\n return;\n }\n const modelChange = modelQueue.shift();\n log.debug('initModelQueue', modelChange);\n // Apply next model change. Triggers columnschanged event.\n modelChange(model);\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(key, value) {\n log.debug('handleAdvancedSettingsChange', key, value);\n this.setState(({ advancedSettings }) =>\n advancedSettings.get(key) === value\n ? null\n : { advancedSettings: new Map(advancedSettings).set(key, value) }\n );\n }\n\n handlePluginFilter(filters) {\n const { model } = this.state;\n const { columns, formatter } = model;\n const pluginFilters = IrisGridUtils.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n );\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns) {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data) {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn) {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator) {\n return columnSelectionValidator(this, tableColumn);\n }\n return false;\n }\n\n handleGridStateChange(irisGridState, gridState) {\n this.irisGridState = irisGridState;\n this.gridState = gridState;\n\n // Grid sends it's first state change after it's finished loading\n this.setState({ isLoaded: true, isLoading: false });\n\n this.savePanelState();\n\n const { glEventHub, onStateChange } = this.props;\n glEventHub.emit(IrisGridEvent.STATE_CHANGED, this);\n onStateChange(irisGridState, gridState);\n }\n\n handlePluginStateChange(pluginState) {\n const { irisGridState, gridState } = this;\n this.pluginState = pluginState;\n // Do not save if there is null state\n // The save will happen when the grid loads\n if (irisGridState !== null && gridState !== null) {\n this.savePanelState();\n }\n }\n\n handleColumnsChanged(event) {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange(event.detail);\n } else {\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event) {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event;\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n handlePartitionAppend(column, value) {\n const { glEventHub } = this.props;\n const { name } = column;\n const tableName = this.getTableName();\n const command = `${tableName} = ${tableName}.where(\"${name}=\\`${value}\\`\")`;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, false, true);\n }\n\n handleCreateChart(settings, table) {\n // Panel state is stored with the created chart, so flush it first\n this.savePanelState.flush();\n\n this.setState(\n () => null,\n () => {\n const makeModel = () =>\n ChartModelFactory.makeModelFromSettings(settings, table);\n\n const { glEventHub, inputFilters, metadata } = this.props;\n const { querySerial, table: tableName } = metadata;\n const { panelState } = this.state;\n const id = LayoutUtils.getIdFromPanel(this);\n\n const tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n const title = ChartUtils.titleFromSettings(settings);\n glEventHub.emit(ChartEvent.OPEN, title, makeModel, {\n querySerial,\n settings: ChartUtils.dehydrateSettings(settings),\n sourcePanelId: id,\n table: tableName,\n tableSettings,\n });\n }\n );\n }\n\n handleColumnSelected(column) {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.COLUMN_SELECTED, this, column);\n }\n\n handleDataSelected(row, dataMap) {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.DATA_SELECTED, this, dataMap);\n }\n\n handleResize() {\n this.updateGrid();\n }\n\n handleShow() {\n this.updateGrid();\n }\n\n handleError(error) {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect() {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model) {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = null;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n const { table } = model;\n const { pluginName } = table;\n if (loadPlugin && pluginName) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters() {\n const irisGrid = this.irisGrid.current;\n const { isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n }\n }\n\n sendColumnsChange(columns) {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, columns);\n }\n\n startModelListening(model) {\n model.addEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.addEventListener(IrisGridModel.EVENT.RECONNECT, this.handleReconnect);\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n stopModelListening(model) {\n model.removeEventListener(\n IrisGridModel.EVENT.DISCONNECT,\n this.handleDisconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.RECONNECT,\n this.handleReconnect\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.TABLE_CHANGED,\n this.handleTableChanged\n );\n }\n\n getCoordinateForColumn(columnName) {\n const { model } = this.state;\n if (!model) {\n return null;\n }\n\n const irisGrid = this.irisGrid.current;\n const { gridWrapper } = irisGrid || {};\n const rect = gridWrapper?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n\n const { metrics } = irisGrid.state;\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n right,\n } = metrics;\n const visibleIndex = irisGrid.getVisibleColumn(\n model.getColumnIndexByName(columnName)\n );\n const columnX = visibleColumnXs.get(visibleIndex) || 0;\n const columnWidth = visibleColumnWidths.get(visibleIndex) || 0;\n\n const x = Math.max(\n rect.left,\n Math.min(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.right\n )\n );\n const y = rect.top + columnHeaderHeight;\n\n return [x, y];\n }\n\n setFilterMap(filterMap) {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap) {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({ quickFilters, advancedFilters }) {\n const irisGrid = this.irisGrid.current;\n const { model, isDisconnected } = this.state;\n if (irisGrid != null && !isDisconnected) {\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: IrisGridUtils.hydrateQuickFilters(model, quickFilters),\n advancedFilters: IrisGridUtils.hydrateAdvancedFilters(\n model,\n advancedFilters\n ),\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue() {\n // IrisGridPanel retains the set value after the link is broken\n }\n\n loadPanelState(model) {\n const { panelState } = this.props;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n const {\n advancedFilters,\n advancedSettings,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n } = IrisGridUtils.hydrateIrisGridState(model, irisGridState);\n const { movedColumns, movedRows } = IrisGridUtils.hydrateGridState(\n model,\n gridState,\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n customColumns,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n quickFilters,\n reverseType,\n rollupConfig,\n aggregationSettings,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState() {\n const { irisGridState, gridState, pluginState } = this;\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partition,\n partitionColumn,\n advancedSettings,\n } = this.state;\n const {\n advancedFilters,\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n sorts,\n invertSearchColumns,\n metrics,\n pendingDataMap,\n } = irisGridState;\n const { userColumnWidths, userRowHeights } = metrics;\n const { movedColumns, movedRows } = gridState;\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partition,\n partitionColumn\n ),\n this.getDehydratedIrisGridState(\n model,\n sorts,\n advancedFilters,\n customColumnFormatMap,\n isFilterBarShown,\n quickFilters,\n customColumns,\n reverseType,\n rollupConfig,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n userColumnWidths,\n userRowHeights,\n aggregationSettings,\n advancedSettings,\n pendingDataMap\n ),\n this.getDehydratedGridState(model, movedColumns, movedRows),\n pluginState\n );\n\n if (panelState !== oldPanelState) {\n log.debug('Saving panel state', this, panelState);\n\n this.setState({ panelState });\n onPanelStateUpdate(panelState);\n }\n }\n\n updateGrid() {\n const grid = this.irisGrid.current?.grid ?? null;\n if (!grid) return;\n\n // handle resize will verify state and draw and update\n grid.handleResize();\n }\n\n render() {\n const {\n children,\n glContainer,\n glEventHub,\n columnSelectionValidator,\n getDownloadWorker,\n inputFilters,\n links,\n metadata,\n panelState,\n user,\n workspace,\n settings,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n customColumns,\n customColumnFormatMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n queryName,\n quickFilters,\n reverseType,\n rollupConfig,\n sorts,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n Plugin,\n pluginFilters,\n pluginFetchColumns,\n pendingDataMap,\n } = this.state;\n const errorMessage = error ? `Unable to open table. ${error}` : null;\n const { table: name, querySerial } = metadata;\n const description = model?.description ?? null;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ??\n this.getPluginContent(Plugin, model?.table, user, workspace, pluginState);\n\n return (\n <WidgetPanel\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n className=\"iris-grid-panel\"\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleShow}\n queryName={queryName}\n querySerial={querySerial}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n >\n {isModelReady && (\n <IrisGrid\n advancedFilters={advancedFilters}\n aggregationSettings={aggregationSettings}\n advancedSettings={advancedSettings}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n links,\n pluginFetchColumns\n )}\n columnAllowedCursor=\"linker\"\n columnNotAllowedCursor=\"not-allowed\"\n customColumns={customColumns}\n customColumnFormatMap={customColumnFormatMap}\n columnSelectionValidator={this.isColumnSelectionValid}\n inputFilters={this.getGridInputFilters(model.columns, inputFilters)}\n applyInputFiltersOnInit={panelState == null}\n isFilterBarShown={isFilterBarShown}\n isSelectingColumn={columnSelectionValidator != null}\n isSelectingPartition={isSelectingPartition}\n movedColumns={movedColumns}\n movedRows={movedRows}\n partition={partition}\n partitionColumn={partitionColumn}\n quickFilters={quickFilters}\n reverseType={reverseType}\n rollupConfig={rollupConfig}\n settings={settings}\n sorts={sorts}\n userColumnWidths={userColumnWidths}\n userRowHeights={userRowHeights}\n model={model}\n tableName={name}\n showSearchBar={showSearchBar}\n searchValue={searchValue}\n selectedSearchColumns={selectedSearchColumns}\n selectDistinctColumns={selectDistinctColumns}\n invertSearchColumns={invertSearchColumns}\n onColumnSelected={this.handleColumnSelected}\n onCreateChart={this.handleCreateChart}\n onDataSelected={this.handleDataSelected}\n onError={this.handleError}\n onPartitionAppend={this.handlePartitionAppend}\n onStateChange={this.handleGridStateChange}\n onContextMenu={this.handleContextMenu}\n onAdvancedSettingsChange={this.handleAdvancedSettingsChange}\n customFilters={pluginFilters}\n pendingDataMap={pendingDataMap}\n ref={this.irisGrid}\n getDownloadWorker={getDownloadWorker}\n >\n {childrenContent}\n </IrisGrid>\n )}\n\n {!isModelReady && <></>}\n </WidgetPanel>\n );\n }\n}\n\nIrisGridPanel.propTypes = {\n children: PropTypes.node,\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n metadata: PropTypes.shape({\n table: PropTypes.string.isRequired,\n query: PropTypes.string,\n querySerial: PropTypes.string,\n }).isRequired,\n panelState: PropTypes.shape({\n gridState: PropTypes.shape({}),\n irisGridState: PropTypes.shape({\n aggregationSettings: PropTypes.shape({}),\n customColumns: PropTypes.arrayOf(PropTypes.string),\n selectDistinctColumns: PropTypes.arrayOf(PropTypes.string),\n rollupConfig: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.string).isRequired,\n }),\n pendingDataMap: PropTypes.arrayOf(PropTypes.array),\n }),\n irisGridPanelState: PropTypes.shape({}),\n pluginState: PropTypes.shape({}),\n }),\n makeModel: PropTypes.func.isRequired,\n inputFilters: PropTypes.arrayOf(UIPropTypes.InputFilter).isRequired,\n links: UIPropTypes.Links.isRequired,\n columnSelectionValidator: PropTypes.func,\n onStateChange: PropTypes.func,\n onPanelStateUpdate: PropTypes.func,\n user: APIPropTypes.User.isRequired,\n workspace: PropTypes.shape({}).isRequired,\n settings: PropTypes.shape({ timeZone: PropTypes.string.isRequired })\n .isRequired,\n\n // Retrieve a download worker for optimizing exporting tables\n getDownloadWorker: PropTypes.func,\n\n // Load a plugin defined by the table\n loadPlugin: PropTypes.func,\n};\n\nIrisGridPanel.defaultProps = {\n children: null,\n panelState: null,\n columnSelectionValidator: null,\n onStateChange: () => {},\n onPanelStateUpdate: () => {},\n getDownloadWorker: undefined,\n loadPlugin: undefined,\n};\n\nIrisGridPanel.displayName = 'IrisGridPanel';\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n return {\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n workspace: getWorkspace(state),\n settings: getSettings(state),\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n IrisGridPanel\n);\n"],"file":"IrisGridPanel.js"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly)
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
4
|
|
|
@@ -404,7 +404,7 @@ class NotebookPanel extends Component {
|
|
|
404
404
|
}
|
|
405
405
|
|
|
406
406
|
updateSavedChangeCount() {
|
|
407
|
-
this.setState(_ref => {
|
|
407
|
+
this.setState((_ref) => {
|
|
408
408
|
var {
|
|
409
409
|
changeCount
|
|
410
410
|
} = _ref;
|
|
@@ -518,7 +518,7 @@ class NotebookPanel extends Component {
|
|
|
518
518
|
|
|
519
519
|
handleEditorChange(e) {
|
|
520
520
|
log.debug2('handleEditorChanged', e);
|
|
521
|
-
this.setState(_ref2 => {
|
|
521
|
+
this.setState((_ref2) => {
|
|
522
522
|
var {
|
|
523
523
|
isPreview
|
|
524
524
|
} = _ref2;
|
|
@@ -535,7 +535,7 @@ class NotebookPanel extends Component {
|
|
|
535
535
|
|
|
536
536
|
return null;
|
|
537
537
|
});
|
|
538
|
-
this.setState(_ref3 => {
|
|
538
|
+
this.setState((_ref3) => {
|
|
539
539
|
var {
|
|
540
540
|
changeCount,
|
|
541
541
|
savedChangeCount
|