@deephaven/dashboard-core-plugins 0.15.6-beta.0 → 0.15.6-vite.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartPlugin.js.map +1 -1
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPlugin.js.map +1 -1
- package/dist/controls/ControlType.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
- package/dist/events/ChartEvent.js.map +1 -1
- package/dist/events/ConsoleEvent.js.map +1 -1
- package/dist/events/InputFilterEvent.js.map +1 -1
- package/dist/events/IrisGridEvent.js.map +1 -1
- package/dist/events/MarkdownEvent.js.map +1 -1
- package/dist/events/NotebookEvent.js.map +1 -1
- package/dist/events/PQEvent.js.map +1 -1
- package/dist/events/PandasEvent.js.map +1 -1
- package/dist/events/TabEvent.js.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/linker/ColumnSelectionValidator.js.map +1 -1
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/linker/ToolType.js.map +1 -1
- package/dist/linker/index.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.d.ts +4 -2
- package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts +17 -8
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts +1 -3
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +3 -5
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +1 -1
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/Panel.js.map +1 -1
- package/dist/panels/PanelContextMenu.js.map +1 -1
- package/dist/panels/RenameDialog.js.map +1 -1
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/panels/index.js.map +1 -1
- package/dist/prop-types/CommonPropTypes.js.map +1 -1
- package/dist/prop-types/UIPropTypes.js.map +1 -1
- package/dist/prop-types/index.js.map +1 -1
- package/dist/redux/actionTypes.js.map +1 -1
- package/dist/redux/actions.js.map +1 -1
- package/dist/redux/index.js.map +1 -1
- package/dist/redux/reducers/index.js.map +1 -1
- package/dist/redux/reducers/sessionWrapper.js.map +1 -1
- package/dist/redux/selectors.js.map +1 -1
- package/package.json +18 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/FilterSetManagerPanel.tsx"],"names":["React","Component","connect","getOpenedPanelMapForDashboard","LayoutUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","DropdownFilterPanel","InputFilterPanel","log","module","hasSetPanelState","panel","setPanelState","FilterSetManagerPanel","changeFilterIndexesToColumnNames","table","configs","map","index","filter","columns","length","name","config","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","selectedId","id","undefined","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","get","error","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","getComponentConfigFromContainer","getPanelComponentState","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","quickFilters","gridState","indexedAdvancedFilters","indexedQuickFilters","setState","updatePanelState","filterSet","restoreFullState","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","localDashboardId","prevAdvancedFilters","prevQuickFilters","setStateOverrides","setFilters","inputFilterState","render","glEventHub","mapStateToProps","ownProps","dashboardInputFilters","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n LayoutUtils,\n PanelComponent,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { TableTemplate } from '@deephaven/jsapi-shim';\nimport { RootState } from '@deephaven/redux';\nimport {\n AdvancedFilter,\n ColumnName,\n DehydratedIrisGridState,\n QuickFilter,\n} from '@deephaven/iris-grid';\nimport { GridState } from '@deephaven/grid';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './Panel';\nimport FilterSetManager, {\n ChangeHandlerArgs,\n FilterSet,\n FilterSetPanel,\n} from './FilterSetManager';\nimport { IrisGridPanel } from './IrisGridPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\nimport InputFilterPanel, {\n PanelState as InputFilterPanelState,\n} from './InputFilterPanel';\nimport './FilterSetManagerPanel.scss';\n\nconst log = Log.module('FilterSetManagerPanel');\ninterface IrisGridState {\n advancedFilters: [number, AdvancedFilter][];\n quickFilters: [number, QuickFilter][];\n}\n\ninterface PanelState {\n irisGridState?: IrisGridState;\n gridState?: Partial<GridState>;\n selectedId?: string | string[];\n isValueShown?: boolean;\n name?: string;\n type?: string;\n value?: string;\n}\n\ninterface FilterSetManagerPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n filterSets: FilterSet[];\n localDashboardId: string;\n dashboardOpenedPanelMap: Map<string | string[], PanelComponent>;\n setDashboardFilterSets: (\n dashboardId: string,\n filterSets: FilterSet[]\n ) => void;\n panelTableMap: Map<string | string[], TableTemplate>;\n}\n\ninterface FilterSetManagerPanelState {\n selectedId?: string | string[];\n isValueShown: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel\n}\n\nfunction hasSetPanelState(\n panel: PanelComponent\n): panel is PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n} {\n return (\n (panel as PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n }).setPanelState != null\n );\n}\nexport class FilterSetManagerPanel extends Component<\n FilterSetManagerPanelProps,\n FilterSetManagerPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterIndexesToColumnNames<T>(\n table: TableTemplate,\n configs: [number, T][]\n ): { name: string; filter: T }[] {\n return configs\n .map(([index, filter]) => {\n if (index >= table.columns.length) {\n return null;\n }\n const { name } = table.columns[index];\n return { name, filter };\n })\n .filter(config => config != null) as { name: string; filter: T }[];\n }\n\n constructor(props: FilterSetManagerPanelProps) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleSetsUpdate = this.handleSetsUpdate.bind(this);\n this.handleGetFilterState = this.handleGetFilterState.bind(this);\n\n const { panelState, filterSets } = props;\n const {\n selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,\n isValueShown = false,\n } = panelState ?? {};\n\n this.state = {\n selectedId,\n isValueShown,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n // Collect all filter values for each dashboard panel\n getFilterState(): FilterSetPanel[] {\n const { dashboardOpenedPanelMap } = this.props;\n const panels: FilterSetPanel[] = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n\n if (panel === undefined) {\n log.error('Could not get panel', panel);\n return;\n }\n\n const componentName = LayoutUtils.getComponentNameFromPanel(panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('Panel:', panel, componentName);\n\n const { glContainer = null } = panel.props;\n if (glContainer == null) {\n log.error('Could not get panel container', panel);\n return;\n }\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n const panelState = LayoutUtils.getPanelComponentState(\n config\n ) as PanelState;\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n let state;\n if (panelId != null) {\n state = this.getIrisGridPanelFilters(panelId, panelState);\n }\n if (state != null) {\n panels.push({\n panelId,\n type: componentName,\n state,\n });\n }\n break;\n }\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel): {\n const { isValueShown, name, type, value } = panelState;\n panels.push({\n panelId,\n type: componentName,\n state: { isValueShown, name, type, value },\n });\n break;\n }\n default:\n }\n });\n return panels;\n }\n\n getIrisGridPanelFilters(\n panelId: string | string[],\n panelState: PanelState\n ): {\n irisGridState: Omit<IrisGridState, 'advancedFilters' | 'quickFilters'> & {\n advancedFilters?: {\n name: string;\n filter: AdvancedFilter;\n }[];\n quickFilters?: {\n name: string;\n filter: QuickFilter;\n }[];\n };\n gridState: Partial<GridState>;\n } | null {\n const { panelTableMap } = this.props;\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return null;\n }\n // IrisGridUtils.hydrate uses numeric indexes for columns\n // Change indexes to column names to make it work for proxy models\n const {\n irisGridState = { advancedFilters: undefined, quickFilters: undefined },\n gridState = {},\n } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters,\n quickFilters: indexedQuickFilters,\n } = irisGridState;\n let advancedFilters;\n if (indexedAdvancedFilters) {\n advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedAdvancedFilters\n );\n }\n\n let quickFilters;\n if (indexedQuickFilters) {\n quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedQuickFilters\n );\n }\n return {\n irisGridState: {\n ...irisGridState,\n advancedFilters,\n quickFilters,\n },\n gridState: { ...gridState },\n };\n }\n\n handleGetFilterState(): FilterSetPanel[] {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }: ChangeHandlerArgs): void {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet: FilterSet): void {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels, restoreFullState = false } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (panelId == null) {\n log.debug('panel is null', panelId);\n return;\n }\n if (!dashboardOpenedPanelMap.has(panelId)) {\n log.debug('Ignore closed panel', panelId);\n return;\n }\n log.debug('Apply panel filters', panelId, type, state);\n const panel = dashboardOpenedPanelMap.get(panelId);\n switch (type) {\n case LayoutUtils.getComponentName(IrisGridPanel):\n this.restoreIrisGridFilters(\n panel as IrisGridPanel,\n state as {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: string; filter: AdvancedFilter }[];\n quickFilters: { name: string; filter: QuickFilter }[];\n },\n restoreFullState\n );\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state as InputFilterPanelState);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets: FilterSet[]): void {\n const { setDashboardFilterSets, localDashboardId } = this.props;\n log.debug('Saving updated sets', modifiedFilterSets);\n // Filter sets are stored in dashboard data instead of the panelState\n // because they need to be shared between the filter view manager panels\n setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);\n }\n\n updatePanelState(): void {\n this.setState(({ selectedId, isValueShown }) => ({\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n selectedId,\n isValueShown,\n },\n }));\n }\n\n restoreIrisGridFilters(\n panel: IrisGridPanel,\n state: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n },\n restoreFullState: boolean\n ): void {\n // Fall back to state.advancedFilters and state.quickFilters\n // for backward compatibility with filter sets that only contain filters\n const {\n irisGridState = {},\n advancedFilters: prevAdvancedFilters = [],\n quickFilters: prevQuickFilters = [],\n } = state;\n const {\n advancedFilters = prevAdvancedFilters,\n quickFilters = prevQuickFilters,\n } = irisGridState;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error(`Panel Id is null.`);\n return;\n }\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return;\n }\n log.debug('restoreIrisGridFilters', panelId, state, restoreFullState);\n if (restoreFullState) {\n panel.setStateOverrides(state);\n } else {\n panel.setFilters({\n quickFilters: quickFilters as {\n name: string;\n filter: QuickFilter;\n }[],\n advancedFilters: advancedFilters as {\n name: string;\n filter: AdvancedFilter;\n }[],\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(\n panel: PanelComponent | undefined,\n state: InputFilterPanelState\n ): void {\n const inputFilterState = { ...state };\n // Restore state but don't flip the card\n delete inputFilterState.isValueShown;\n log.debug('restoreInputFilterState', panel, inputFilterState);\n if (panel && hasSetPanelState(panel)) {\n panel.setPanelState(inputFilterState);\n }\n }\n\n render(): ReactElement {\n const { glContainer, glEventHub, filterSets } = this.props;\n const { isValueShown, selectedId } = this.state;\n return (\n <Panel\n className=\"filter-set-manager-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n isClonable\n isRenamable\n >\n <div className=\"input-filter-container h-100 w-100 container\">\n <FilterSetManager\n onChange={this.handleChange}\n onApply={this.handleFilterApply}\n onUpdateSets={this.handleSetsUpdate}\n isValueShown={isValueShown}\n filterSets={filterSets}\n selectedId={selectedId as string}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\n const { localDashboardId } = ownProps;\n return {\n filterSets: getFilterSetsForDashboard(state, localDashboardId),\n dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(\n state,\n localDashboardId\n ),\n dashboardInputFilters: getInputFiltersForDashboard(state, localDashboardId),\n panelTableMap: getTableMapForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n"],"file":"FilterSetManagerPanel.js"}
|
|
1
|
+
{"version":3,"file":"FilterSetManagerPanel.js","names":["React","Component","connect","getOpenedPanelMapForDashboard","LayoutUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","DropdownFilterPanel","InputFilterPanel","log","module","hasSetPanelState","panel","setPanelState","FilterSetManagerPanel","changeFilterIndexesToColumnNames","table","configs","map","index","filter","columns","length","name","config","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","selectedId","id","undefined","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","get","error","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","getComponentConfigFromContainer","getPanelComponentState","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","quickFilters","gridState","indexedAdvancedFilters","indexedQuickFilters","setState","updatePanelState","filterSet","restoreFullState","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","localDashboardId","prevAdvancedFilters","prevQuickFilters","setStateOverrides","setFilters","inputFilterState","render","glEventHub","mapStateToProps","ownProps","dashboardInputFilters","forwardRef"],"sources":["../../src/panels/FilterSetManagerPanel.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n LayoutUtils,\n PanelComponent,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { TableTemplate } from '@deephaven/jsapi-shim';\nimport { RootState } from '@deephaven/redux';\nimport {\n AdvancedFilter,\n ColumnName,\n DehydratedIrisGridState,\n QuickFilter,\n} from '@deephaven/iris-grid';\nimport { GridState } from '@deephaven/grid';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './Panel';\nimport FilterSetManager, {\n ChangeHandlerArgs,\n FilterSet,\n FilterSetPanel,\n} from './FilterSetManager';\nimport { IrisGridPanel } from './IrisGridPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\nimport InputFilterPanel, {\n PanelState as InputFilterPanelState,\n} from './InputFilterPanel';\nimport './FilterSetManagerPanel.scss';\n\nconst log = Log.module('FilterSetManagerPanel');\ninterface IrisGridState {\n advancedFilters: [number, AdvancedFilter][];\n quickFilters: [number, QuickFilter][];\n}\n\ninterface PanelState {\n irisGridState?: IrisGridState;\n gridState?: Partial<GridState>;\n selectedId?: string | string[];\n isValueShown?: boolean;\n name?: string;\n type?: string;\n value?: string;\n}\n\ninterface FilterSetManagerPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n filterSets: FilterSet[];\n localDashboardId: string;\n dashboardOpenedPanelMap: Map<string | string[], PanelComponent>;\n setDashboardFilterSets: (\n dashboardId: string,\n filterSets: FilterSet[]\n ) => void;\n panelTableMap: Map<string | string[], TableTemplate>;\n}\n\ninterface FilterSetManagerPanelState {\n selectedId?: string | string[];\n isValueShown: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel\n}\n\nfunction hasSetPanelState(\n panel: PanelComponent\n): panel is PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n} {\n return (\n (panel as PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n }).setPanelState != null\n );\n}\nexport class FilterSetManagerPanel extends Component<\n FilterSetManagerPanelProps,\n FilterSetManagerPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterIndexesToColumnNames<T>(\n table: TableTemplate,\n configs: [number, T][]\n ): { name: string; filter: T }[] {\n return configs\n .map(([index, filter]) => {\n if (index >= table.columns.length) {\n return null;\n }\n const { name } = table.columns[index];\n return { name, filter };\n })\n .filter(config => config != null) as { name: string; filter: T }[];\n }\n\n constructor(props: FilterSetManagerPanelProps) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleSetsUpdate = this.handleSetsUpdate.bind(this);\n this.handleGetFilterState = this.handleGetFilterState.bind(this);\n\n const { panelState, filterSets } = props;\n const {\n selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,\n isValueShown = false,\n } = panelState ?? {};\n\n this.state = {\n selectedId,\n isValueShown,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n // Collect all filter values for each dashboard panel\n getFilterState(): FilterSetPanel[] {\n const { dashboardOpenedPanelMap } = this.props;\n const panels: FilterSetPanel[] = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n\n if (panel === undefined) {\n log.error('Could not get panel', panel);\n return;\n }\n\n const componentName = LayoutUtils.getComponentNameFromPanel(panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('Panel:', panel, componentName);\n\n const { glContainer = null } = panel.props;\n if (glContainer == null) {\n log.error('Could not get panel container', panel);\n return;\n }\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n const panelState = LayoutUtils.getPanelComponentState(\n config\n ) as PanelState;\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n let state;\n if (panelId != null) {\n state = this.getIrisGridPanelFilters(panelId, panelState);\n }\n if (state != null) {\n panels.push({\n panelId,\n type: componentName,\n state,\n });\n }\n break;\n }\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel): {\n const { isValueShown, name, type, value } = panelState;\n panels.push({\n panelId,\n type: componentName,\n state: { isValueShown, name, type, value },\n });\n break;\n }\n default:\n }\n });\n return panels;\n }\n\n getIrisGridPanelFilters(\n panelId: string | string[],\n panelState: PanelState\n ): {\n irisGridState: Omit<IrisGridState, 'advancedFilters' | 'quickFilters'> & {\n advancedFilters?: {\n name: string;\n filter: AdvancedFilter;\n }[];\n quickFilters?: {\n name: string;\n filter: QuickFilter;\n }[];\n };\n gridState: Partial<GridState>;\n } | null {\n const { panelTableMap } = this.props;\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return null;\n }\n // IrisGridUtils.hydrate uses numeric indexes for columns\n // Change indexes to column names to make it work for proxy models\n const {\n irisGridState = { advancedFilters: undefined, quickFilters: undefined },\n gridState = {},\n } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters,\n quickFilters: indexedQuickFilters,\n } = irisGridState;\n let advancedFilters;\n if (indexedAdvancedFilters) {\n advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedAdvancedFilters\n );\n }\n\n let quickFilters;\n if (indexedQuickFilters) {\n quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedQuickFilters\n );\n }\n return {\n irisGridState: {\n ...irisGridState,\n advancedFilters,\n quickFilters,\n },\n gridState: { ...gridState },\n };\n }\n\n handleGetFilterState(): FilterSetPanel[] {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }: ChangeHandlerArgs): void {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet: FilterSet): void {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels, restoreFullState = false } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (panelId == null) {\n log.debug('panel is null', panelId);\n return;\n }\n if (!dashboardOpenedPanelMap.has(panelId)) {\n log.debug('Ignore closed panel', panelId);\n return;\n }\n log.debug('Apply panel filters', panelId, type, state);\n const panel = dashboardOpenedPanelMap.get(panelId);\n switch (type) {\n case LayoutUtils.getComponentName(IrisGridPanel):\n this.restoreIrisGridFilters(\n panel as IrisGridPanel,\n state as {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: string; filter: AdvancedFilter }[];\n quickFilters: { name: string; filter: QuickFilter }[];\n },\n restoreFullState\n );\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state as InputFilterPanelState);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets: FilterSet[]): void {\n const { setDashboardFilterSets, localDashboardId } = this.props;\n log.debug('Saving updated sets', modifiedFilterSets);\n // Filter sets are stored in dashboard data instead of the panelState\n // because they need to be shared between the filter view manager panels\n setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);\n }\n\n updatePanelState(): void {\n this.setState(({ selectedId, isValueShown }) => ({\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n selectedId,\n isValueShown,\n },\n }));\n }\n\n restoreIrisGridFilters(\n panel: IrisGridPanel,\n state: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n },\n restoreFullState: boolean\n ): void {\n // Fall back to state.advancedFilters and state.quickFilters\n // for backward compatibility with filter sets that only contain filters\n const {\n irisGridState = {},\n advancedFilters: prevAdvancedFilters = [],\n quickFilters: prevQuickFilters = [],\n } = state;\n const {\n advancedFilters = prevAdvancedFilters,\n quickFilters = prevQuickFilters,\n } = irisGridState;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error(`Panel Id is null.`);\n return;\n }\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return;\n }\n log.debug('restoreIrisGridFilters', panelId, state, restoreFullState);\n if (restoreFullState) {\n panel.setStateOverrides(state);\n } else {\n panel.setFilters({\n quickFilters: quickFilters as {\n name: string;\n filter: QuickFilter;\n }[],\n advancedFilters: advancedFilters as {\n name: string;\n filter: AdvancedFilter;\n }[],\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(\n panel: PanelComponent | undefined,\n state: InputFilterPanelState\n ): void {\n const inputFilterState = { ...state };\n // Restore state but don't flip the card\n delete inputFilterState.isValueShown;\n log.debug('restoreInputFilterState', panel, inputFilterState);\n if (panel && hasSetPanelState(panel)) {\n panel.setPanelState(inputFilterState);\n }\n }\n\n render(): ReactElement {\n const { glContainer, glEventHub, filterSets } = this.props;\n const { isValueShown, selectedId } = this.state;\n return (\n <Panel\n className=\"filter-set-manager-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n isClonable\n isRenamable\n >\n <div className=\"input-filter-container h-100 w-100 container\">\n <FilterSetManager\n onChange={this.handleChange}\n onApply={this.handleFilterApply}\n onUpdateSets={this.handleSetsUpdate}\n isValueShown={isValueShown}\n filterSets={filterSets}\n selectedId={selectedId as string}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\n const { localDashboardId } = ownProps;\n return {\n filterSets: getFilterSetsForDashboard(state, localDashboardId),\n dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(\n state,\n localDashboardId\n ),\n dashboardInputFilters: getInputFiltersForDashboard(state, localDashboardId),\n panelTableMap: getTableMapForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/InputFilterPanel.tsx"],"names":["React","Component","connect","debounce","Panel","InputFilter","InputFilterEvent","getColumnsForDashboard","INPUT_FILTER_DEBOUNCE","InputFilterPanel","constructor","props","handleChange","bind","handleClearAllFilters","inputFilterRef","createRef","panelState","value","isValueShown","name","type","timestamp","state","columns","column","undefined","wasFlipped","skipUpdate","componentDidMount","updateColumns","sendUpdate","componentDidUpdate","prevProps","Date","now","setState","prevTimestamp","isFlip","current","clearFilter","glEventHub","emit","FILTERS_CHANGED","setPanelState","setFilterState","length","find","render","glContainer","mapStateToProps","ownProps","localDashboardId","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component, RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { RootState } from '@deephaven/redux';\nimport Panel from './Panel';\nimport InputFilter, {\n InputFilterColumn,\n} from '../controls/input-filter/InputFilter';\nimport { InputFilterEvent } from '../events';\nimport { getColumnsForDashboard } from '../redux';\n\nconst INPUT_FILTER_DEBOUNCE = 250;\n\nexport interface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ninterface InputFilterPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n columns: InputFilterColumn[];\n}\n\ninterface InputFilterPanelState {\n columns: InputFilterColumn[];\n column?: InputFilterColumn;\n value?: string;\n timestamp?: number;\n isValueShown: boolean;\n wasFlipped: boolean;\n skipUpdate: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel}\n}\nclass InputFilterPanel extends Component<\n InputFilterPanelProps,\n InputFilterPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'InputFilterPanel';\n\n // Have to explicitly specify displayName\n // otherwise it gets minified and breaks LayoutUtils.getComponentName\n static displayName = 'InputFilterPanel';\n\n constructor(props: InputFilterPanelProps) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n INPUT_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.inputFilterRef = React.createRef();\n\n const { panelState } = props;\n // if panelstate is null, use destructured defaults\n const { value, isValueShown = false, name, type, timestamp } =\n panelState ?? {};\n\n this.state = {\n columns: [],\n column: name && type ? { name, type } : undefined,\n value,\n timestamp,\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount() {\n this.updateColumns();\n\n const { column, value, timestamp } = this.state;\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(prevProps: InputFilterPanelProps) {\n const { columns } = this.props;\n if (columns !== prevProps.columns) {\n this.updateColumns();\n }\n }\n\n inputFilterRef: RefObject<InputFilter>;\n\n handleChange({\n column,\n isValueShown,\n value,\n }: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }) {\n let name: string | undefined;\n let type: string | undefined;\n if (column != null) {\n ({ name, type } = column);\n }\n let sendUpdate = true;\n let timestamp: number | undefined = Date.now();\n this.setState(\n ({ panelState, timestamp: prevTimestamp, wasFlipped, skipUpdate }) => {\n // If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it\n const isFlip =\n panelState != null &&\n isValueShown !== panelState.isValueShown &&\n name === panelState.name &&\n type === panelState.type &&\n value === panelState.value;\n sendUpdate =\n (!skipUpdate && isValueShown && (!isFlip || !wasFlipped)) ?? false;\n\n if (!sendUpdate) {\n timestamp = prevTimestamp;\n }\n\n return {\n panelState: {\n isValueShown,\n name,\n type,\n value,\n timestamp,\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false,\n };\n },\n () => {\n if (sendUpdate) {\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n );\n }\n\n handleClearAllFilters(): void {\n this.inputFilterRef.current?.clearFilter();\n }\n\n sendUpdate(name?: string, type?: string, value?: string, timestamp?: number) {\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.FILTERS_CHANGED, this, {\n name,\n type,\n value,\n timestamp,\n });\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param state Filter state to set\n * @param sendUpdate Emit filters changed event if true\n */\n setPanelState(state: PanelState, sendUpdate = false) {\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({ skipUpdate: !sendUpdate });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n this.inputFilterRef.current?.setFilterState(state);\n }\n\n updateColumns() {\n const { columns } = this.props;\n if (columns == null) {\n return;\n }\n\n this.setState(state => {\n const { column } = state;\n\n if (column == null && columns.length > 0) {\n return {\n columns: [...columns],\n column: columns[0],\n };\n }\n\n if (\n column != null &&\n !columns.find(\n ({ name, type }) => column.name === name && column.type === type\n )\n ) {\n return { columns: [...columns, column] };\n }\n\n return { columns: [...columns] };\n });\n }\n\n render() {\n const { glContainer, glEventHub } = this.props;\n const { column, columns, isValueShown, value } = this.state;\n return (\n <Panel\n className=\"iris-input-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n isClonable\n isRenamable\n >\n <InputFilter\n ref={this.inputFilterRef}\n column={column}\n columns={columns}\n onChange={this.handleChange}\n isValueShown={isValueShown}\n value={value}\n />\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\n const { localDashboardId } = ownProps;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n InputFilterPanel\n);\n"],"file":"InputFilterPanel.js"}
|
|
1
|
+
{"version":3,"file":"InputFilterPanel.js","names":["React","Component","connect","debounce","Panel","InputFilter","InputFilterEvent","getColumnsForDashboard","INPUT_FILTER_DEBOUNCE","InputFilterPanel","constructor","props","handleChange","bind","handleClearAllFilters","inputFilterRef","createRef","panelState","value","isValueShown","name","type","timestamp","state","columns","column","undefined","wasFlipped","skipUpdate","componentDidMount","updateColumns","sendUpdate","componentDidUpdate","prevProps","Date","now","setState","prevTimestamp","isFlip","current","clearFilter","glEventHub","emit","FILTERS_CHANGED","setPanelState","setFilterState","length","find","render","glContainer","mapStateToProps","ownProps","localDashboardId","forwardRef"],"sources":["../../src/panels/InputFilterPanel.tsx"],"sourcesContent":["import React, { Component, RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { RootState } from '@deephaven/redux';\nimport Panel from './Panel';\nimport InputFilter, {\n InputFilterColumn,\n} from '../controls/input-filter/InputFilter';\nimport { InputFilterEvent } from '../events';\nimport { getColumnsForDashboard } from '../redux';\n\nconst INPUT_FILTER_DEBOUNCE = 250;\n\nexport interface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ninterface InputFilterPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n columns: InputFilterColumn[];\n}\n\ninterface InputFilterPanelState {\n columns: InputFilterColumn[];\n column?: InputFilterColumn;\n value?: string;\n timestamp?: number;\n isValueShown: boolean;\n wasFlipped: boolean;\n skipUpdate: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel}\n}\nclass InputFilterPanel extends Component<\n InputFilterPanelProps,\n InputFilterPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'InputFilterPanel';\n\n // Have to explicitly specify displayName\n // otherwise it gets minified and breaks LayoutUtils.getComponentName\n static displayName = 'InputFilterPanel';\n\n constructor(props: InputFilterPanelProps) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n INPUT_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.inputFilterRef = React.createRef();\n\n const { panelState } = props;\n // if panelstate is null, use destructured defaults\n const { value, isValueShown = false, name, type, timestamp } =\n panelState ?? {};\n\n this.state = {\n columns: [],\n column: name && type ? { name, type } : undefined,\n value,\n timestamp,\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount() {\n this.updateColumns();\n\n const { column, value, timestamp } = this.state;\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(prevProps: InputFilterPanelProps) {\n const { columns } = this.props;\n if (columns !== prevProps.columns) {\n this.updateColumns();\n }\n }\n\n inputFilterRef: RefObject<InputFilter>;\n\n handleChange({\n column,\n isValueShown,\n value,\n }: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }) {\n let name: string | undefined;\n let type: string | undefined;\n if (column != null) {\n ({ name, type } = column);\n }\n let sendUpdate = true;\n let timestamp: number | undefined = Date.now();\n this.setState(\n ({ panelState, timestamp: prevTimestamp, wasFlipped, skipUpdate }) => {\n // If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it\n const isFlip =\n panelState != null &&\n isValueShown !== panelState.isValueShown &&\n name === panelState.name &&\n type === panelState.type &&\n value === panelState.value;\n sendUpdate =\n (!skipUpdate && isValueShown && (!isFlip || !wasFlipped)) ?? false;\n\n if (!sendUpdate) {\n timestamp = prevTimestamp;\n }\n\n return {\n panelState: {\n isValueShown,\n name,\n type,\n value,\n timestamp,\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false,\n };\n },\n () => {\n if (sendUpdate) {\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n );\n }\n\n handleClearAllFilters(): void {\n this.inputFilterRef.current?.clearFilter();\n }\n\n sendUpdate(name?: string, type?: string, value?: string, timestamp?: number) {\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.FILTERS_CHANGED, this, {\n name,\n type,\n value,\n timestamp,\n });\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param state Filter state to set\n * @param sendUpdate Emit filters changed event if true\n */\n setPanelState(state: PanelState, sendUpdate = false) {\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({ skipUpdate: !sendUpdate });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n this.inputFilterRef.current?.setFilterState(state);\n }\n\n updateColumns() {\n const { columns } = this.props;\n if (columns == null) {\n return;\n }\n\n this.setState(state => {\n const { column } = state;\n\n if (column == null && columns.length > 0) {\n return {\n columns: [...columns],\n column: columns[0],\n };\n }\n\n if (\n column != null &&\n !columns.find(\n ({ name, type }) => column.name === name && column.type === type\n )\n ) {\n return { columns: [...columns, column] };\n }\n\n return { columns: [...columns] };\n });\n }\n\n render() {\n const { glContainer, glEventHub } = this.props;\n const { column, columns, isValueShown, value } = this.state;\n return (\n <Panel\n className=\"iris-input-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n isClonable\n isRenamable\n >\n <InputFilter\n ref={this.inputFilterRef}\n column={column}\n columns={columns}\n onChange={this.handleChange}\n isValueShown={isValueShown}\n value={value}\n />\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\n const { localDashboardId } = ownProps;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n InputFilterPanel\n);\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAA4C,OAA5C;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,OAAOC,QAAP,MAAqB,iBAArB;OAGOC,K;OACAC,W;SAGEC,gB;SACAC,sB;AAET,IAAMC,qBAAqB,GAAG,GAA9B;;AA4BA,MAAMC,gBAAN,SAA+BR,SAA/B,CAGE;EAOA;EACA;EAGAS,WAAW,CAACC,KAAD,EAA+B;IACxC,MAAMA,KAAN;;IADwC;;IAGxC,KAAKC,YAAL,GAAoBT,QAAQ,CAC1B,KAAKS,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAD0B,EAE1BL,qBAF0B,CAA5B;IAIA,KAAKM,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BD,IAA3B,CAAgC,IAAhC,CAA7B;IAEA,KAAKE,cAAL,gBAAsBf,KAAK,CAACgB,SAAN,EAAtB;IAEA,IAAM;MAAEC;IAAF,IAAiBN,KAAvB,CAXwC,CAYxC;;IACA,IAAM;MAAEO,KAAF;MAASC,YAAY,GAAG,KAAxB;MAA+BC,IAA/B;MAAqCC,IAArC;MAA2CC;IAA3C,IACJL,UADI,aACJA,UADI,cACJA,UADI,GACU,EADhB;IAGA,KAAKM,KAAL,GAAa;MACXC,OAAO,EAAE,EADE;MAEXC,MAAM,EAAEL,IAAI,IAAIC,IAAR,GAAe;QAAED,IAAF;QAAQC;MAAR,CAAf,GAAgCK,SAF7B;MAGXR,KAHW;MAIXI,SAJW;MAKXH,YALW;MAMXQ,UAAU,EAAE,KAND;MAOXC,UAAU,EAAE,KAPD;MAQX;MACAX,UATW,CASC;;IATD,CAAb;EAWD;;EAEDY,iBAAiB,GAAG;IAClB,KAAKC,aAAL;IAEA,IAAM;MAAEL,MAAF;MAAUP,KAAV;MAAiBI;IAAjB,IAA+B,KAAKC,KAA1C;;IACA,IAAIE,MAAM,IAAI,IAAd,EAAoB;MAClB,IAAM;QAAEL,IAAF;QAAQC;MAAR,IAAiBI,MAAvB;MACA,KAAKM,UAAL,CAAgBX,IAAhB,EAAsBC,IAAtB,EAA4BH,KAA5B,EAAmCI,SAAnC;IACD;EACF;;EAEDU,kBAAkB,CAACC,SAAD,EAAmC;IACnD,IAAM;MAAET;IAAF,IAAc,KAAKb,KAAzB;;IACA,IAAIa,OAAO,KAAKS,SAAS,CAACT,OAA1B,EAAmC;MACjC,KAAKM,aAAL;IACD;EACF;;EAIDlB,YAAY,OAQT;IAAA,IARU;MACXa,MADW;MAEXN,YAFW;MAGXD;IAHW,CAQV;IACD,IAAIE,IAAJ;IACA,IAAIC,IAAJ;;IACA,IAAII,MAAM,IAAI,IAAd,EAAoB;MAClB,CAAC;QAAEL,IAAF;QAAQC;MAAR,IAAiBI,MAAlB;IACD;;IACD,IAAIM,UAAU,GAAG,IAAjB;IACA,IAAIT,SAA6B,GAAGY,IAAI,CAACC,GAAL,EAApC;IACA,KAAKC,QAAL,CACE,SAAsE;MAAA;;MAAA,IAArE;QAAEnB,UAAF;QAAcK,SAAS,EAAEe,aAAzB;QAAwCV,UAAxC;QAAoDC;MAApD,CAAqE;MACpE;MACA,IAAMU,MAAM,GACVrB,UAAU,IAAI,IAAd,IACAE,YAAY,KAAKF,UAAU,CAACE,YAD5B,IAEAC,IAAI,KAAKH,UAAU,CAACG,IAFpB,IAGAC,IAAI,KAAKJ,UAAU,CAACI,IAHpB,IAIAH,KAAK,KAAKD,UAAU,CAACC,KALvB;MAMAa,UAAU,YACP,CAACH,UAAD,IAAeT,YAAf,KAAgC,CAACmB,MAAD,IAAW,CAACX,UAA5C,CADO,yCACqD,KAD/D;;MAGA,IAAI,CAACI,UAAL,EAAiB;QACfT,SAAS,GAAGe,aAAZ;MACD;;MAED,OAAO;QACLpB,UAAU,EAAE;UACVE,YADU;UAEVC,IAFU;UAGVC,IAHU;UAIVH,KAJU;UAKVI;QALU,CADP;QAQLA,SARK;QASLK,UAAU,EAAEW,MATP;QAULV,UAAU,EAAE;MAVP,CAAP;IAYD,CA5BH,EA6BE,MAAM;MACJ,IAAIG,UAAJ,EAAgB;QACd,KAAKA,UAAL,CAAgBX,IAAhB,EAAsBC,IAAtB,EAA4BH,KAA5B,EAAmCI,SAAnC;MACD;IACF,CAjCH;EAmCD;;EAEDR,qBAAqB,GAAS;IAAA;;IAC5B,8BAAKC,cAAL,CAAoBwB,OAApB,gFAA6BC,WAA7B;EACD;;EAEDT,UAAU,CAACX,IAAD,EAAgBC,IAAhB,EAA+BH,KAA/B,EAA+CI,SAA/C,EAAmE;IAC3E,IAAM;MAAEmB;IAAF,IAAiB,KAAK9B,KAA5B;IACA8B,UAAU,CAACC,IAAX,CAAgBpC,gBAAgB,CAACqC,eAAjC,EAAkD,IAAlD,EAAwD;MACtDvB,IADsD;MAEtDC,IAFsD;MAGtDH,KAHsD;MAItDI;IAJsD,CAAxD;EAMD;EAED;AACF;AACA;AACA;AACA;;;EACEsB,aAAa,CAACrB,KAAD,EAAwC;IAAA;;IAAA,IAApBQ,UAAoB,uEAAP,KAAO;IACnD;IACA,KAAKK,QAAL,CAAc;MAAER,UAAU,EAAE,CAACG;IAAf,CAAd,EAFmD,CAInD;IACA;;IACA,+BAAKhB,cAAL,CAAoBwB,OAApB,kFAA6BM,cAA7B,CAA4CtB,KAA5C;EACD;;EAEDO,aAAa,GAAG;IACd,IAAM;MAAEN;IAAF,IAAc,KAAKb,KAAzB;;IACA,IAAIa,OAAO,IAAI,IAAf,EAAqB;MACnB;IACD;;IAED,KAAKY,QAAL,CAAcb,KAAK,IAAI;MACrB,IAAM;QAAEE;MAAF,IAAaF,KAAnB;;MAEA,IAAIE,MAAM,IAAI,IAAV,IAAkBD,OAAO,CAACsB,MAAR,GAAiB,CAAvC,EAA0C;QACxC,OAAO;UACLtB,OAAO,EAAE,CAAC,GAAGA,OAAJ,CADJ;UAELC,MAAM,EAAED,OAAO,CAAC,CAAD;QAFV,CAAP;MAID;;MAED,IACEC,MAAM,IAAI,IAAV,IACA,CAACD,OAAO,CAACuB,IAAR,CACC;QAAA,IAAC;UAAE3B,IAAF;UAAQC;QAAR,CAAD;QAAA,OAAoBI,MAAM,CAACL,IAAP,KAAgBA,IAAhB,IAAwBK,MAAM,CAACJ,IAAP,KAAgBA,IAA5D;MAAA,CADD,CAFH,EAKE;QACA,OAAO;UAAEG,OAAO,EAAE,CAAC,GAAGA,OAAJ,EAAaC,MAAb;QAAX,CAAP;MACD;;MAED,OAAO;QAAED,OAAO,EAAE,CAAC,GAAGA,OAAJ;MAAX,CAAP;IACD,CApBD;EAqBD;;EAEDwB,MAAM,GAAG;IACP,IAAM;MAAEC,WAAF;MAAeR;IAAf,IAA8B,KAAK9B,KAAzC;IACA,IAAM;MAAEc,MAAF;MAAUD,OAAV;MAAmBL,YAAnB;MAAiCD;IAAjC,IAA2C,KAAKK,KAAtD;IACA,oBACE,oBAAC,KAAD;MACE,SAAS,EAAC,yBADZ;MAEE,cAAc,EAAE,IAFlB;MAGE,WAAW,EAAE0B,WAHf;MAIE,UAAU,EAAER,UAJd;MAKE,iBAAiB,EAAE,KAAK3B,qBAL1B;MAME,UAAU,MANZ;MAOE,WAAW;IAPb,gBASE,oBAAC,WAAD;MACE,GAAG,EAAE,KAAKC,cADZ;MAEE,MAAM,EAAEU,MAFV;MAGE,OAAO,EAAED,OAHX;MAIE,QAAQ,EAAE,KAAKZ,YAJjB;MAKE,YAAY,EAAEO,YALhB;MAME,KAAK,EAAED;IANT,EATF,CADF;EAoBD;;AAhMD;;gBAHIT,gB,kBAIkB;EACpBQ,UAAU,EAAE;AADQ,C;;gBAJlBR,gB,eAQe,kB;;gBARfA,gB,iBAYiB,kB;;AA0LvB,IAAMyC,eAAe,GAAG,CACtB3B,KADsB,EAEtB4B,QAFsB,KAGnB;EACH,IAAM;IAAEC;EAAF,IAAuBD,QAA7B;EAEA,OAAO;IACL3B,OAAO,EAAEjB,sBAAsB,CAACgB,KAAD,EAAQ6B,gBAAR;EAD1B,CAAP;AAGD,CATD;;AAWA,eAAelD,OAAO,CAACgD,eAAD,EAAkB,IAAlB,EAAwB,IAAxB,EAA8B;EAAEG,UAAU,EAAE;AAAd,CAA9B,CAAP,CACb5C,gBADa,CAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/IrisGridPanel.tsx"],"names":["React","PureComponent","memoize","connect","debounce","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridUtils","IrisGridTableModel","isIrisGridTableModelTemplate","TableUtils","Log","getSettings","getUser","getWorkspace","assertNotNull","PromiseUtils","ContextMenuRoot","ConsoleEvent","InputFilterEvent","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","WidgetPanel","WidgetPanelTooltip","log","module","DEBOUNCE_PANEL_STATE_UPDATE","PLUGIN_COMPONENTS","IrisGridPanel","constructor","props","columns","inputFilters","getInputFiltersForColumns","filter","value","excludePanelIds","id","getIdFromPanel","includes","dashboardLinks","pluginFetchColumns","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","model","user","workspace","pluginState","table","pluginRef","handlePluginFilter","handlePluginFetchColumns","handlePluginStateChange","isSelectingPartition","partition","partitionColumn","dehydrateIrisGridPanelState","sorts","advancedFilters","customColumnFormatMap","isFilterBarShown","quickFilters","customColumns","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","invertSearchColumns","userColumnWidths","userRowHeights","aggregationSettings","pendingDataMap","frozenColumns","conditionalFormats","dehydrateIrisGridState","metrics","movedColumns","movedRows","isStuckToBottom","isStuckToRight","dehydrateGridState","irisGridPanelState","irisGridState","gridState","onPanelStateUpdate","panelState","oldPanelState","state","getCachedPanelState","getDehydratedIrisGridPanelState","getDehydratedIrisGridState","getDehydratedGridState","debug","setState","handleAdvancedSettingsChange","bind","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handlePartitionAppend","handleCreateChart","handleResize","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","Map","aggregations","showOnTop","advancedSettings","DEFAULTS","REVERSE_TYPE","NONE","pluginFilters","modelQueue","irisGridStateOverrides","gridStateOverrides","componentDidMount","initModel","componentDidUpdate","_","prevState","stopModelListening","close","startModelListening","componentWillUnmount","savePanelState","cancel","modelPromise","getTableName","metadata","makeModel","makeCancelable","resolved","then","catch","modelParam","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","key","get","set","filters","formatter","getFiltersFromInputFilters","timeZone","obj","current","getMenu","data","tableColumn","columnSelectionValidator","glEventHub","onStateChange","emit","STATE_CHANGED","event","sendColumnsChange","detail","TABLE_CHANGED","column","name","tableName","command","SEND_COMMAND","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","COLUMN_SELECTED","row","dataMap","DATA_SELECTED","updateGrid","focus","Error","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","COLUMNS_CHANGED","addEventListener","EVENT","DISCONNECT","RECONNECT","removeEventListener","getCoordinateForColumn","gridWrapper","rect","getBoundingClientRect","width","height","columnHeaderHeight","visibleColumnXs","visibleColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","columnWidth","x","Math","max","left","min","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","indexedQuickFilters","changeFilterColumnNamesToIndexes","isFilterable","indexedAdvancedFilters","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","hydrateIrisGridState","hydrateGridState","grid","render","children","glContainer","getDownloadWorker","links","theme","errorMessage","description","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","formattedRowCount","displayString","rowCount","getAlwaysFetchColumns","getGridInputFilters","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, {\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { LayoutUtils, PanelComponent } from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n IrisGridModel,\n IrisGridUtils,\n IrisGridTableModel,\n isIrisGridTableModelTemplate,\n ColumnName,\n PendingDataMap,\n InputFilter,\n IrisGridThemeType,\n AdvancedFilterMap,\n AggregationSettings,\n AdvancedSettingsType,\n UIRollupConfig,\n UIRow,\n QuickFilterMap,\n FilterMap,\n QuickFilter,\n AdvancedFilter,\n SidebarFormattingRule,\n IrisGridState,\n ChartBuilderSettings,\n DehydratedIrisGridState,\n} from '@deephaven/iris-grid';\nimport {\n AdvancedFilterOptions,\n FormattingRule,\n ReverseType,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getSettings,\n getUser,\n getWorkspace,\n RootState,\n User,\n Workspace,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { ContextAction, ContextMenuRoot } from '@deephaven/components';\nimport { Column, FilterCondition, Sort } from '@deephaven/jsapi-shim';\nimport {\n GridRangeIndex,\n GridState,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { ConsoleEvent, InputFilterEvent, IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport WidgetPanel from './WidgetPanel';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport './IrisGridPanel.scss';\nimport { Link, LinkColumn } from '../linker/LinkerUtils';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst PLUGIN_COMPONENTS = { IrisGrid, IrisGridTableModel, ContextMenuRoot };\n\ntype ModelQueueFunction = (model: IrisGridModel) => void;\n\ntype ModelQueue = ModelQueueFunction[];\n\ninterface Metadata {\n table: string;\n query?: string;\n querySerial?: string;\n}\n\nexport interface PanelState {\n gridState: {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: { from: string | ModelIndex; to: string | ModelIndex }[];\n movedRows: MoveOperation[];\n };\n irisGridState: DehydratedIrisGridState;\n irisGridPanelState: {\n partitionColumn: ColumnName;\n partition: string;\n isSelectingPartition: boolean;\n };\n pluginState: unknown;\n}\n\nexport interface IrisGridPanelProps {\n children?: ReactNode;\n glContainer: Container;\n glEventHub: EventEmitter;\n metadata: Metadata;\n panelState: PanelState | null;\n makeModel: () => IrisGridModel | Promise<IrisGridModel>;\n inputFilters: InputFilter[];\n links: Link[];\n columnSelectionValidator?: (\n panel: PanelComponent,\n tableColumn?: LinkColumn\n ) => boolean;\n onStateChange?: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPanelStateUpdate?: (panelState: PanelState) => void;\n user: User;\n workspace: Workspace;\n settings: { timeZone: string };\n\n // Retrieve a download worker for optimizing exporting tables\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n // Load a plugin defined by the table\n loadPlugin: (pluginName: string) => Plugin;\n\n theme: IrisGridThemeType;\n}\n\ninterface IrisGridPanelState {\n error: unknown;\n isDisconnected: boolean;\n isLoaded: boolean;\n isLoading: boolean;\n isModelReady: boolean;\n model?: IrisGridModel;\n\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // State is hydrated from panel state when table is loaded\n conditionalFormats: SidebarFormattingRule[];\n selectDistinctColumns: ColumnName[];\n advancedFilters: AdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n customColumns: ColumnName[];\n customColumnFormatMap: Map<string, FormattingRule>;\n isFilterBarShown: boolean;\n quickFilters: QuickFilterMap;\n sorts: Sort[];\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n reverseType: ReverseType;\n movedColumns: MoveOperation[];\n movedRows: MoveOperation[];\n isSelectingPartition: boolean;\n partition?: string;\n partitionColumn?: Column;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: string[];\n invertSearchColumns: boolean;\n Plugin?: Plugin;\n pluginFilters: FilterCondition[];\n pluginFetchColumns: unknown[];\n modelQueue: ModelQueue;\n pendingDataMap?: PendingDataMap<UIRow>;\n frozenColumns?: ColumnName[];\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState | null; // Dehydrated panel state that can load this panel\n irisGridStateOverrides: Partial<DehydratedIrisGridState>;\n gridStateOverrides: Partial<GridState>;\n}\n\nexport class IrisGridPanel extends PureComponent<\n IrisGridPanelProps,\n IrisGridPanelState\n> {\n static defaultProps = {\n onStateChange: (): void => undefined,\n onPanelStateUpdate: (): void => undefined,\n };\n\n static displayName = 'IrisGridPanel';\n\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props: IrisGridPanelProps) {\n super(props);\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.handleTabClicked = this.handleTabClicked.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\n const { panelState } = props;\n\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: undefined,\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: undefined,\n partitionColumn: undefined,\n rollupConfig: undefined,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: undefined,\n invertSearchColumns: true,\n Plugin: undefined,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: undefined,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n irisGridStateOverrides: {},\n gridStateOverrides: {},\n isStuckToBottom: false,\n isStuckToRight: false,\n conditionalFormats: [],\n selectDistinctColumns: [],\n };\n }\n\n componentDidMount(): void {\n this.initModel();\n }\n\n componentDidUpdate(_: never, prevState: IrisGridPanelState): void {\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(): void {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = undefined;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n irisGrid: RefObject<IrisGrid>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pluginRef: RefObject<any>;\n\n modelPromise?: CancelablePromise<IrisGridModel>;\n\n irisGridState?: IrisGridState;\n\n gridState?: GridState;\n\n pluginState: unknown;\n\n getTableName(): string {\n const { metadata } = this.props;\n return metadata.table;\n }\n\n getGridInputFilters = memoize(\n (columns: Column[], inputFilters: InputFilter[]) =>\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(({ value, excludePanelIds }) => {\n const id = LayoutUtils.getIdFromPanel(this);\n return (\n value != null &&\n (excludePanelIds == null || (id && !excludePanelIds.includes(id)))\n );\n })\n )\n );\n\n getAlwaysFetchColumns = memoize(\n (dashboardLinks, pluginFetchColumns): string[] => {\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<string>(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\n getPluginContent = memoize(\n (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Plugin: any,\n model: IrisGridModel | undefined,\n user,\n workspace,\n pluginState\n ) => {\n if (\n !model ||\n !isIrisGridTableModelTemplate(model) ||\n Plugin == null ||\n model.table == null\n ) {\n return null;\n }\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n // onFilter is deprecated\n onFilter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n // onFetchColumns is deprecated\n onFetchColumns={this.handlePluginFetchColumns}\n table={model.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\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 pendingDataMap,\n frozenColumns,\n conditionalFormats\n ) =>\n IrisGridUtils.dehydrateIrisGridState(model, {\n advancedFilters,\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 frozenColumns,\n conditionalFormats,\n })\n );\n\n getDehydratedGridState = memoize(\n (model, movedColumns, movedRows, isStuckToBottom, isStuckToRight) =>\n IrisGridUtils.dehydrateGridState(model, {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n })\n );\n\n getCachedPanelState = memoize(\n (\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState\n ): PanelState => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel(): void {\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(makeModel(), resolved =>\n resolved.close()\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam: IrisGridModel): void {\n const model = modelParam;\n const { panelState, irisGridStateOverrides } = this.state;\n const modelQueue: ((m: IrisGridModel) => void)[] = [];\n\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = { ...irisGridState, ...irisGridStateOverrides };\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: IrisGridModel, modelQueue: ModelQueue): void {\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 if (modelChange) {\n modelChange(model);\n }\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(\n key: AdvancedSettingsType,\n value: boolean\n ): void {\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: InputFilter[]): void {\n const { model } = this.state;\n assertNotNull(model);\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: unknown[]): void {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(obj: {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow: GridRangeIndex;\n modelColumn: GridRangeIndex;\n }): ContextAction {\n return this.pluginRef.current.getMenu?.({ data: obj }) ?? [];\n }\n\n isColumnSelectionValid(tableColumn: Column | null): boolean {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator && tableColumn) {\n return columnSelectionValidator(this, tableColumn);\n }\n return false;\n }\n\n handleGridStateChange(\n irisGridState: IrisGridState,\n gridState: GridState\n ): void {\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: unknown): void {\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: Event): void {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange((event as CustomEvent).detail);\n } else {\n assertNotNull(model);\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event: Event): void {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event as CustomEvent;\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n handlePartitionAppend(column: Column, value: unknown): void {\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 /**\n * Create a chart with the specified settings\n * @param settings The settings from the chart builder\n * @param settings.type The settings from the chart builder\n * @param settings.series The names of the series\n * @param model The IrisGridModel object\n */\n handleCreateChart(\n settings: ChartBuilderSettings,\n model: IrisGridModel\n ): void {\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 { glEventHub, inputFilters, metadata } = this.props;\n const { table } = metadata;\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n let tableSettings;\n\n if (panelState) {\n tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n }\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: isIrisGridTableModelTemplate(model) ? model.table : undefined,\n });\n }\n );\n }\n\n handleColumnSelected(column: Column): void {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.COLUMN_SELECTED, this, column);\n }\n\n handleDataSelected(row: ModelIndex, dataMap: Record<string, unknown>): void {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.DATA_SELECTED, this, dataMap);\n }\n\n handleResize(): void {\n this.updateGrid();\n }\n\n handleShow(): void {\n this.updateGrid();\n }\n\n handleTabClicked(): void {\n if (this.irisGrid.current) {\n this.irisGrid.current.focus();\n }\n }\n\n handleError(error: unknown): void {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model: IrisGridModel): void {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = undefined;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n if (isIrisGridTableModelTemplate(model)) {\n const { table } = model;\n const { pluginName } = table;\n\n if (pluginName) {\n if (loadPlugin && pluginName) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n }\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters(): void {\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: Column[]): void {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, columns);\n }\n\n startModelListening(model: IrisGridModel): void {\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: IrisGridModel): void {\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: ColumnName): [number, number] | null {\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 assertNotNull(irisGrid);\n const { metrics } = irisGrid.state;\n assertNotNull(metrics);\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n right,\n columnHeaderMaxDepth,\n } = metrics;\n const columnIndex = model.getColumnIndexByName(columnName);\n assertNotNull(columnIndex);\n const visibleIndex = irisGrid.getVisibleColumn(columnIndex);\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 * columnHeaderMaxDepth;\n\n return [x, y];\n }\n\n setFilterMap(filterMap: FilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap: AdvancedFilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: {\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n }): void {\n log.debug('setFilters', quickFilters, advancedFilters);\n const { model, isDisconnected } = this.state;\n const irisGrid = this.irisGrid.current;\n if (irisGrid == null || isDisconnected) {\n log.debug('Ignore setFilters, model disconnected');\n return;\n }\n assertNotNull(model);\n const { columns, formatter } = model;\n const indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n quickFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n const indexedAdvancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: IrisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: IrisGridUtils.hydrateAdvancedFilters(\n columns,\n indexedAdvancedFilters,\n formatter.timeZone\n ),\n });\n }\n\n setStateOverrides(overrides: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n }): void {\n log.debug('setStateOverrides', overrides);\n const {\n irisGridState: irisGridStateOverrides,\n gridState: gridStateOverrides,\n } = overrides;\n this.setState({ irisGridStateOverrides, gridStateOverrides }, () => {\n this.initModel();\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue(): void {\n // IrisGridPanel retains the set value after the link is broken\n }\n\n loadPanelState(model: IrisGridModel): void {\n const {\n panelState,\n irisGridStateOverrides: originalIrisGridStateOverrides,\n gridStateOverrides,\n } = this.state;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const irisGridStateOverrides = { ...originalIrisGridStateOverrides };\n const {\n quickFilters: savedQuickFilters,\n advancedFilters: savedAdvancedFilters,\n } = irisGridStateOverrides;\n if (savedQuickFilters) {\n irisGridStateOverrides.quickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n (savedQuickFilters as unknown) as {\n name: string;\n filter: {\n text: string;\n };\n }[]\n );\n }\n if (savedAdvancedFilters) {\n irisGridStateOverrides.advancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n (savedAdvancedFilters as unknown) as {\n name: string;\n filter: { options: AdvancedFilterOptions };\n }[]\n );\n }\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n const {\n advancedFilters,\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 frozenColumns,\n conditionalFormats,\n } = IrisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = IrisGridUtils.hydrateGridState(\n model,\n { ...gridState, ...gridStateOverrides },\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n conditionalFormats,\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 frozenColumns,\n isStuckToBottom,\n isStuckToRight,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState = debounce(() => {\n const { irisGridState, gridState, pluginState } = this;\n assertNotNull(irisGridState);\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partition,\n partitionColumn,\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 frozenColumns,\n conditionalFormats,\n } = irisGridState;\n assertNotNull(metrics);\n const { userColumnWidths, userRowHeights } = metrics;\n assertNotNull(gridState);\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = 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 pendingDataMap,\n frozenColumns,\n conditionalFormats\n ),\n this.getDehydratedGridState(\n model,\n movedColumns,\n movedRows,\n isStuckToBottom,\n isStuckToRight\n ),\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 }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateGrid(): void {\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(): ReactElement {\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 theme,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isStuckToBottom,\n isStuckToRight,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\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 frozenColumns,\n } = this.state;\n const errorMessage = error ? `Unable to open table. ${error}` : undefined;\n const { table: name } = metadata;\n const description = model?.description ?? undefined;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ??\n this.getPluginContent(Plugin, model, user, workspace, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n const formattedRowCount = model?.displayString(\n model?.rowCount ?? 0,\n 'long'\n );\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 onTabClicked={this.handleTabClicked}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n renderTabTooltip={() => (\n <WidgetPanelTooltip\n widgetType=\"Table\"\n widgetName={name}\n glContainer={glContainer}\n description={description}\n >\n <div className=\"column-statistics-grid\">\n <span className=\"column-statistic-operation\">Number of Rows</span>\n <span className=\"column-statistic-value\">\n {formattedRowCount}\n </span>\n </div>\n </WidgetPanelTooltip>\n )}\n >\n {isModelReady && model && (\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 conditionalFormats={conditionalFormats}\n inputFilters={this.getGridInputFilters(model.columns, inputFilters)}\n applyInputFiltersOnInit={panelState == null}\n isFilterBarShown={isFilterBarShown}\n isSelectingColumn={columnSelectionValidator != null}\n isSelectingPartition={isSelectingPartition}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\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 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 canCopy={canCopy}\n canDownloadCsv={canDownloadCsv}\n ref={this.irisGrid}\n getDownloadWorker={getDownloadWorker}\n frozenColumns={frozenColumns}\n theme={theme}\n >\n {childrenContent}\n </IrisGrid>\n )}\n\n {!isModelReady && <></>}\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\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,"file":"IrisGridPanel.js","names":["React","PureComponent","memoize","connect","debounce","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridUtils","IrisGridTableModel","isIrisGridTableModelTemplate","TableUtils","Log","getSettings","getUser","getWorkspace","assertNotNull","PromiseUtils","ContextMenuRoot","ConsoleEvent","InputFilterEvent","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","WidgetPanel","WidgetPanelTooltip","log","module","DEBOUNCE_PANEL_STATE_UPDATE","PLUGIN_COMPONENTS","IrisGridPanel","constructor","props","columns","inputFilters","getInputFiltersForColumns","filter","value","excludePanelIds","id","getIdFromPanel","includes","dashboardLinks","pluginFetchColumns","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","model","user","workspace","pluginState","table","pluginRef","handlePluginFilter","handlePluginFetchColumns","handlePluginStateChange","isSelectingPartition","partition","partitionColumn","dehydrateIrisGridPanelState","sorts","advancedFilters","customColumnFormatMap","isFilterBarShown","quickFilters","customColumns","reverseType","rollupConfig","showSearchBar","searchValue","selectDistinctColumns","selectedSearchColumns","invertSearchColumns","userColumnWidths","userRowHeights","aggregationSettings","pendingDataMap","frozenColumns","conditionalFormats","dehydrateIrisGridState","metrics","movedColumns","movedRows","isStuckToBottom","isStuckToRight","dehydrateGridState","irisGridPanelState","irisGridState","gridState","onPanelStateUpdate","panelState","oldPanelState","state","getCachedPanelState","getDehydratedIrisGridPanelState","getDehydratedIrisGridState","getDehydratedGridState","debug","setState","handleAdvancedSettingsChange","bind","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handlePartitionAppend","handleCreateChart","handleResize","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","irisGrid","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","Map","aggregations","showOnTop","advancedSettings","DEFAULTS","REVERSE_TYPE","NONE","pluginFilters","modelQueue","irisGridStateOverrides","gridStateOverrides","componentDidMount","initModel","componentDidUpdate","_","prevState","stopModelListening","close","startModelListening","componentWillUnmount","savePanelState","cancel","modelPromise","getTableName","metadata","makeModel","makeCancelable","resolved","then","catch","modelParam","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","key","get","set","filters","formatter","getFiltersFromInputFilters","timeZone","obj","current","getMenu","data","tableColumn","columnSelectionValidator","glEventHub","onStateChange","emit","STATE_CHANGED","event","sendColumnsChange","detail","TABLE_CHANGED","column","name","tableName","command","SEND_COMMAND","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","COLUMN_SELECTED","row","dataMap","DATA_SELECTED","updateGrid","focus","Error","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","COLUMNS_CHANGED","addEventListener","EVENT","DISCONNECT","RECONNECT","removeEventListener","getCoordinateForColumn","gridWrapper","rect","getBoundingClientRect","width","height","columnHeaderHeight","visibleColumnXs","visibleColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","columnWidth","x","Math","max","left","min","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","indexedQuickFilters","changeFilterColumnNamesToIndexes","isFilterable","indexedAdvancedFilters","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","hydrateIrisGridState","hydrateGridState","grid","render","children","glContainer","getDownloadWorker","links","theme","errorMessage","description","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","formattedRowCount","displayString","rowCount","getAlwaysFetchColumns","getGridInputFilters","mapStateToProps","ownProps","localDashboardId","forwardRef"],"sources":["../../src/panels/IrisGridPanel.tsx"],"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, {\n PureComponent,\n ReactElement,\n ReactNode,\n RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { LayoutUtils, PanelComponent } from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n IrisGridModel,\n IrisGridUtils,\n IrisGridTableModel,\n isIrisGridTableModelTemplate,\n ColumnName,\n PendingDataMap,\n InputFilter,\n IrisGridThemeType,\n AdvancedFilterMap,\n AggregationSettings,\n AdvancedSettingsType,\n UIRollupConfig,\n UIRow,\n QuickFilterMap,\n FilterMap,\n QuickFilter,\n AdvancedFilter,\n SidebarFormattingRule,\n IrisGridState,\n ChartBuilderSettings,\n DehydratedIrisGridState,\n} from '@deephaven/iris-grid';\nimport {\n AdvancedFilterOptions,\n FormattingRule,\n ReverseType,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getSettings,\n getUser,\n getWorkspace,\n RootState,\n User,\n Workspace,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n CancelablePromise,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { ContextAction, ContextMenuRoot } from '@deephaven/components';\nimport { Column, FilterCondition, Sort } from '@deephaven/jsapi-shim';\nimport {\n GridRangeIndex,\n GridState,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { ConsoleEvent, InputFilterEvent, IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport WidgetPanel from './WidgetPanel';\nimport WidgetPanelTooltip from './WidgetPanelTooltip';\nimport './IrisGridPanel.scss';\nimport { Link, LinkColumn } from '../linker/LinkerUtils';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst PLUGIN_COMPONENTS = { IrisGrid, IrisGridTableModel, ContextMenuRoot };\n\ntype ModelQueueFunction = (model: IrisGridModel) => void;\n\ntype ModelQueue = ModelQueueFunction[];\n\ninterface Metadata {\n table: string;\n query?: string;\n querySerial?: string;\n}\n\nexport interface PanelState {\n gridState: {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: { from: string | ModelIndex; to: string | ModelIndex }[];\n movedRows: MoveOperation[];\n };\n irisGridState: DehydratedIrisGridState;\n irisGridPanelState: {\n partitionColumn: ColumnName;\n partition: string;\n isSelectingPartition: boolean;\n };\n pluginState: unknown;\n}\n\nexport interface IrisGridPanelProps {\n children?: ReactNode;\n glContainer: Container;\n glEventHub: EventEmitter;\n metadata: Metadata;\n panelState: PanelState | null;\n makeModel: () => IrisGridModel | Promise<IrisGridModel>;\n inputFilters: InputFilter[];\n links: Link[];\n columnSelectionValidator?: (\n panel: PanelComponent,\n tableColumn?: LinkColumn\n ) => boolean;\n onStateChange?: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPanelStateUpdate?: (panelState: PanelState) => void;\n user: User;\n workspace: Workspace;\n settings: { timeZone: string };\n\n // Retrieve a download worker for optimizing exporting tables\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n // Load a plugin defined by the table\n loadPlugin: (pluginName: string) => Plugin;\n\n theme: IrisGridThemeType;\n}\n\ninterface IrisGridPanelState {\n error: unknown;\n isDisconnected: boolean;\n isLoaded: boolean;\n isLoading: boolean;\n isModelReady: boolean;\n model?: IrisGridModel;\n\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // State is hydrated from panel state when table is loaded\n conditionalFormats: SidebarFormattingRule[];\n selectDistinctColumns: ColumnName[];\n advancedFilters: AdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n customColumns: ColumnName[];\n customColumnFormatMap: Map<string, FormattingRule>;\n isFilterBarShown: boolean;\n quickFilters: QuickFilterMap;\n sorts: Sort[];\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n reverseType: ReverseType;\n movedColumns: MoveOperation[];\n movedRows: MoveOperation[];\n isSelectingPartition: boolean;\n partition?: string;\n partitionColumn?: Column;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: string[];\n invertSearchColumns: boolean;\n Plugin?: Plugin;\n pluginFilters: FilterCondition[];\n pluginFetchColumns: unknown[];\n modelQueue: ModelQueue;\n pendingDataMap?: PendingDataMap<UIRow>;\n frozenColumns?: ColumnName[];\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState | null; // Dehydrated panel state that can load this panel\n irisGridStateOverrides: Partial<DehydratedIrisGridState>;\n gridStateOverrides: Partial<GridState>;\n}\n\nexport class IrisGridPanel extends PureComponent<\n IrisGridPanelProps,\n IrisGridPanelState\n> {\n static defaultProps = {\n onStateChange: (): void => undefined,\n onPanelStateUpdate: (): void => undefined,\n };\n\n static displayName = 'IrisGridPanel';\n\n static COMPONENT = 'IrisGridPanel';\n\n constructor(props: IrisGridPanelProps) {\n super(props);\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.handleTabClicked = this.handleTabClicked.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\n const { panelState } = props;\n\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: undefined,\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: undefined,\n partitionColumn: undefined,\n rollupConfig: undefined,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: undefined,\n invertSearchColumns: true,\n Plugin: undefined,\n pluginFilters: [],\n pluginFetchColumns: [],\n modelQueue: [],\n pendingDataMap: new Map(),\n frozenColumns: undefined,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n irisGridStateOverrides: {},\n gridStateOverrides: {},\n isStuckToBottom: false,\n isStuckToRight: false,\n conditionalFormats: [],\n selectDistinctColumns: [],\n };\n }\n\n componentDidMount(): void {\n this.initModel();\n }\n\n componentDidUpdate(_: never, prevState: IrisGridPanelState): void {\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(): void {\n this.savePanelState.cancel();\n\n if (this.modelPromise != null) {\n this.modelPromise.cancel();\n this.modelPromise = undefined;\n }\n\n const { model } = this.state;\n if (model) {\n this.stopModelListening(model);\n model.close();\n }\n }\n\n irisGrid: RefObject<IrisGrid>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pluginRef: RefObject<any>;\n\n modelPromise?: CancelablePromise<IrisGridModel>;\n\n irisGridState?: IrisGridState;\n\n gridState?: GridState;\n\n pluginState: unknown;\n\n getTableName(): string {\n const { metadata } = this.props;\n return metadata.table;\n }\n\n getGridInputFilters = memoize(\n (columns: Column[], inputFilters: InputFilter[]) =>\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(({ value, excludePanelIds }) => {\n const id = LayoutUtils.getIdFromPanel(this);\n return (\n value != null &&\n (excludePanelIds == null || (id && !excludePanelIds.includes(id)))\n );\n })\n )\n );\n\n getAlwaysFetchColumns = memoize(\n (dashboardLinks, pluginFetchColumns): string[] => {\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<string>(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\n getPluginContent = memoize(\n (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Plugin: any,\n model: IrisGridModel | undefined,\n user,\n workspace,\n pluginState\n ) => {\n if (\n !model ||\n !isIrisGridTableModelTemplate(model) ||\n Plugin == null ||\n model.table == null\n ) {\n return null;\n }\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n // onFilter is deprecated\n onFilter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n // onFetchColumns is deprecated\n onFetchColumns={this.handlePluginFetchColumns}\n table={model.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\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 pendingDataMap,\n frozenColumns,\n conditionalFormats\n ) =>\n IrisGridUtils.dehydrateIrisGridState(model, {\n advancedFilters,\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 frozenColumns,\n conditionalFormats,\n })\n );\n\n getDehydratedGridState = memoize(\n (model, movedColumns, movedRows, isStuckToBottom, isStuckToRight) =>\n IrisGridUtils.dehydrateGridState(model, {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n })\n );\n\n getCachedPanelState = memoize(\n (\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState\n ): PanelState => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n initModel(): void {\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(makeModel(), resolved =>\n resolved.close()\n );\n this.modelPromise.then(this.handleLoadSuccess).catch(this.handleLoadError);\n }\n\n handleLoadSuccess(modelParam: IrisGridModel): void {\n const model = modelParam;\n const { panelState, irisGridStateOverrides } = this.state;\n const modelQueue: ((m: IrisGridModel) => void)[] = [];\n\n if (panelState != null) {\n const { irisGridState } = panelState;\n const {\n aggregationSettings,\n customColumns,\n selectDistinctColumns = [],\n rollupConfig,\n } = { ...irisGridState, ...irisGridStateOverrides };\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: IrisGridModel, modelQueue: ModelQueue): void {\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 if (modelChange) {\n modelChange(model);\n }\n this.setState({ modelQueue });\n }\n\n handleAdvancedSettingsChange(\n key: AdvancedSettingsType,\n value: boolean\n ): void {\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: InputFilter[]): void {\n const { model } = this.state;\n assertNotNull(model);\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: unknown[]): void {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(obj: {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow: GridRangeIndex;\n modelColumn: GridRangeIndex;\n }): ContextAction {\n return this.pluginRef.current.getMenu?.({ data: obj }) ?? [];\n }\n\n isColumnSelectionValid(tableColumn: Column | null): boolean {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator && tableColumn) {\n return columnSelectionValidator(this, tableColumn);\n }\n return false;\n }\n\n handleGridStateChange(\n irisGridState: IrisGridState,\n gridState: GridState\n ): void {\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: unknown): void {\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: Event): void {\n const { isModelReady, model, modelQueue } = this.state;\n if (isModelReady) {\n this.sendColumnsChange((event as CustomEvent).detail);\n } else {\n assertNotNull(model);\n this.initModelQueue(model, modelQueue);\n }\n }\n\n handleTableChanged(event: Event): void {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event as CustomEvent;\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n handlePartitionAppend(column: Column, value: unknown): void {\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 /**\n * Create a chart with the specified settings\n * @param settings The settings from the chart builder\n * @param settings.type The settings from the chart builder\n * @param settings.series The names of the series\n * @param model The IrisGridModel object\n */\n handleCreateChart(\n settings: ChartBuilderSettings,\n model: IrisGridModel\n ): void {\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 { glEventHub, inputFilters, metadata } = this.props;\n const { table } = metadata;\n const { panelState } = this.state;\n const sourcePanelId = LayoutUtils.getIdFromPanel(this);\n let tableSettings;\n\n if (panelState) {\n tableSettings = IrisGridUtils.extractTableSettings(\n panelState,\n inputFilters\n );\n }\n glEventHub.emit(IrisGridEvent.CREATE_CHART, {\n metadata: {\n settings,\n sourcePanelId,\n table,\n tableSettings,\n },\n table: isIrisGridTableModelTemplate(model) ? model.table : undefined,\n });\n }\n );\n }\n\n handleColumnSelected(column: Column): void {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.COLUMN_SELECTED, this, column);\n }\n\n handleDataSelected(row: ModelIndex, dataMap: Record<string, unknown>): void {\n const { glEventHub } = this.props;\n glEventHub.emit(IrisGridEvent.DATA_SELECTED, this, dataMap);\n }\n\n handleResize(): void {\n this.updateGrid();\n }\n\n handleShow(): void {\n this.updateGrid();\n }\n\n handleTabClicked(): void {\n if (this.irisGrid.current) {\n this.irisGrid.current.focus();\n }\n }\n\n handleError(error: unknown): void {\n log.error(error);\n this.setState({ error, isLoading: false });\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n this.handleError(error);\n }\n\n modelInitialized(model: IrisGridModel): void {\n const { glEventHub, loadPlugin } = this.props;\n\n this.modelPromise = undefined;\n\n // Custom columns at this point already initialized, can load state\n this.loadPanelState(model);\n\n this.setState({ isModelReady: true });\n\n if (isIrisGridTableModelTemplate(model)) {\n const { table } = model;\n const { pluginName } = table;\n\n if (pluginName) {\n if (loadPlugin && pluginName) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n }\n glEventHub.emit(InputFilterEvent.TABLE_CHANGED, this, table);\n }\n\n this.sendColumnsChange(model.columns);\n }\n\n handleClearAllFilters(): void {\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: Column[]): void {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.COLUMNS_CHANGED, this, columns);\n }\n\n startModelListening(model: IrisGridModel): void {\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: IrisGridModel): void {\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: ColumnName): [number, number] | null {\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 assertNotNull(irisGrid);\n const { metrics } = irisGrid.state;\n assertNotNull(metrics);\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n right,\n columnHeaderMaxDepth,\n } = metrics;\n const columnIndex = model.getColumnIndexByName(columnName);\n assertNotNull(columnIndex);\n const visibleIndex = irisGrid.getVisibleColumn(columnIndex);\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 * columnHeaderMaxDepth;\n\n return [x, y];\n }\n\n setFilterMap(filterMap: FilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setFilterMap(filterMap);\n }\n }\n\n setAdvancedFilterMap(filterMap: AdvancedFilterMap): void {\n const irisGrid = this.irisGrid.current;\n if (irisGrid != null) {\n irisGrid.setAdvancedFilterMap(filterMap);\n }\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: {\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n }): void {\n log.debug('setFilters', quickFilters, advancedFilters);\n const { model, isDisconnected } = this.state;\n const irisGrid = this.irisGrid.current;\n if (irisGrid == null || isDisconnected) {\n log.debug('Ignore setFilters, model disconnected');\n return;\n }\n assertNotNull(model);\n const { columns, formatter } = model;\n const indexedQuickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n quickFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n const indexedAdvancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: IrisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: IrisGridUtils.hydrateAdvancedFilters(\n columns,\n indexedAdvancedFilters,\n formatter.timeZone\n ),\n });\n }\n\n setStateOverrides(overrides: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n }): void {\n log.debug('setStateOverrides', overrides);\n const {\n irisGridState: irisGridStateOverrides,\n gridState: gridStateOverrides,\n } = overrides;\n this.setState({ irisGridStateOverrides, gridStateOverrides }, () => {\n this.initModel();\n });\n }\n\n // eslint-disable-next-line class-methods-use-this\n unsetFilterValue(): void {\n // IrisGridPanel retains the set value after the link is broken\n }\n\n loadPanelState(model: IrisGridModel): void {\n const {\n panelState,\n irisGridStateOverrides: originalIrisGridStateOverrides,\n gridStateOverrides,\n } = this.state;\n if (panelState == null) {\n return;\n }\n\n try {\n const { gridState, irisGridState, irisGridPanelState } = panelState;\n const irisGridStateOverrides = { ...originalIrisGridStateOverrides };\n const {\n quickFilters: savedQuickFilters,\n advancedFilters: savedAdvancedFilters,\n } = irisGridStateOverrides;\n if (savedQuickFilters) {\n irisGridStateOverrides.quickFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n (savedQuickFilters as unknown) as {\n name: string;\n filter: {\n text: string;\n };\n }[]\n );\n }\n if (savedAdvancedFilters) {\n irisGridStateOverrides.advancedFilters = IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n (savedAdvancedFilters as unknown) as {\n name: string;\n filter: { options: AdvancedFilterOptions };\n }[]\n );\n }\n const {\n isSelectingPartition,\n partition,\n partitionColumn,\n } = IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n const {\n advancedFilters,\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 frozenColumns,\n conditionalFormats,\n } = IrisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = IrisGridUtils.hydrateGridState(\n model,\n { ...gridState, ...gridStateOverrides },\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n conditionalFormats,\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 frozenColumns,\n isStuckToBottom,\n isStuckToRight,\n });\n } catch (error) {\n log.error('loadPanelState failed to load panelState', panelState, error);\n }\n }\n\n savePanelState = debounce(() => {\n const { irisGridState, gridState, pluginState } = this;\n assertNotNull(irisGridState);\n const { onPanelStateUpdate } = this.props;\n const {\n model,\n panelState: oldPanelState,\n isSelectingPartition,\n partition,\n partitionColumn,\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 frozenColumns,\n conditionalFormats,\n } = irisGridState;\n assertNotNull(metrics);\n const { userColumnWidths, userRowHeights } = metrics;\n assertNotNull(gridState);\n const {\n isStuckToBottom,\n isStuckToRight,\n movedColumns,\n movedRows,\n } = 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 pendingDataMap,\n frozenColumns,\n conditionalFormats\n ),\n this.getDehydratedGridState(\n model,\n movedColumns,\n movedRows,\n isStuckToBottom,\n isStuckToRight\n ),\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 }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateGrid(): void {\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(): ReactElement {\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 theme,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n error,\n isDisconnected,\n isFilterBarShown,\n isSelectingPartition,\n isStuckToBottom,\n isStuckToRight,\n isLoaded,\n isLoading,\n isModelReady,\n model,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\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 frozenColumns,\n } = this.state;\n const errorMessage = error ? `Unable to open table. ${error}` : undefined;\n const { table: name } = metadata;\n const description = model?.description ?? undefined;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ??\n this.getPluginContent(Plugin, model, user, workspace, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n const formattedRowCount = model?.displayString(\n model?.rowCount ?? 0,\n 'long'\n );\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 onTabClicked={this.handleTabClicked}\n widgetName={name}\n widgetType=\"Table\"\n description={description}\n componentPanel={this}\n renderTabTooltip={() => (\n <WidgetPanelTooltip\n widgetType=\"Table\"\n widgetName={name}\n glContainer={glContainer}\n description={description}\n >\n <div className=\"column-statistics-grid\">\n <span className=\"column-statistic-operation\">Number of Rows</span>\n <span className=\"column-statistic-value\">\n {formattedRowCount}\n </span>\n </div>\n </WidgetPanelTooltip>\n )}\n >\n {isModelReady && model && (\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 conditionalFormats={conditionalFormats}\n inputFilters={this.getGridInputFilters(model.columns, inputFilters)}\n applyInputFiltersOnInit={panelState == null}\n isFilterBarShown={isFilterBarShown}\n isSelectingColumn={columnSelectionValidator != null}\n isSelectingPartition={isSelectingPartition}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\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 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 canCopy={canCopy}\n canDownloadCsv={canDownloadCsv}\n ref={this.irisGrid}\n getDownloadWorker={getDownloadWorker}\n frozenColumns={frozenColumns}\n theme={theme}\n >\n {childrenContent}\n </IrisGrid>\n )}\n\n {!isModelReady && <></>}\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\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"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"LogPanel.js","names":["React","PureComponent","connect","LogView","Log","Panel","getDashboardSessionWrapper","log","module","LogPanel","constructor","props","handleResize","bind","handleShow","handleHide","handleSessionOpened","handleSessionClosed","isBottomVisible","logView","session","state","updateDimensions","triggerFindWidget","scrollToBottom","debug","setState","render","glContainer","glEventHub","mapStateToProps","ownProps","localDashboardId","forwardRef"],"sources":["../../src/panels/LogPanel.tsx"],"sourcesContent":["// Wrapper for the Console 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 { connect } from 'react-redux';\nimport { LogView } from '@deephaven/console';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { RootState } from '@deephaven/redux';\nimport './LogPanel.scss';\nimport Panel from './Panel';\nimport { getDashboardSessionWrapper } from '../redux';\n\nconst log = Log.module('LogPanel');\n\ninterface LogPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n session: IdeSession;\n}\n\ninterface LogPanelState {\n session: IdeSession;\n}\n\nclass LogPanel extends PureComponent<LogPanelProps, LogPanelState> {\n static defaultProps = {\n session: null,\n };\n\n static COMPONENT = 'LogPanel';\n\n static TITLE = 'Log';\n\n constructor(props: LogPanelProps) {\n super(props);\n\n this.handleResize = this.handleResize.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleHide = this.handleHide.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n\n this.isBottomVisible = true;\n this.logView = null;\n\n const { session } = this.props;\n\n this.state = { session };\n }\n\n isBottomVisible: boolean;\n\n logView: LogView | null;\n\n handleResize() {\n this.updateDimensions();\n }\n\n handleShow() {\n this.updateDimensions();\n if (this.logView) {\n this.logView.triggerFindWidget();\n\n if (this.isBottomVisible) {\n this.logView.scrollToBottom();\n }\n }\n }\n\n handleHide() {\n if (this.logView) {\n this.isBottomVisible = this.logView.isBottomVisible();\n }\n }\n\n handleSessionOpened(session: IdeSession) {\n log.debug('Session opened', [session]);\n this.setState({ session });\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleSessionClosed(session: IdeSession) {\n log.debug('Session closed', session);\n // Keep the session reference in state unchanged until the session is re-connected\n }\n\n updateDimensions() {\n if (this.logView) {\n this.logView.updateDimensions();\n }\n }\n\n render() {\n const { glContainer, glEventHub } = this.props;\n const { session } = this.state;\n return (\n <Panel\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onResize={this.handleResize}\n onHide={this.handleHide}\n onShow={this.handleShow}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n >\n {!session && (\n <div className=\"log-panel-disconnected-message\">\n Waiting for session connection\n </div>\n )}\n {session && (\n <LogView\n session={session}\n ref={logView => {\n this.logView = logView;\n }}\n />\n )}\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => ({\n session: getDashboardSessionWrapper(state, ownProps.localDashboardId)\n ?.session,\n});\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n LogPanel\n);\n"],"mappings":"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"}
|