@deephaven/dashboard-core-plugins 0.15.5 → 0.15.6-beta.5
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.d.ts +2 -1
- package/dist/ChartPlugin.d.ts.map +1 -1
- package/dist/ChartPlugin.js.map +1 -1
- package/dist/GridPlugin.d.ts +2 -1
- package/dist/GridPlugin.d.ts.map +1 -1
- package/dist/GridPlugin.js.map +1 -1
- package/dist/PandasPlugin.d.ts +2 -1
- package/dist/PandasPlugin.d.ts.map +1 -1
- package/dist/PandasPlugin.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/linker/index.d.ts +2 -0
- package/dist/linker/index.d.ts.map +1 -0
- package/dist/linker/index.js +2 -0
- package/dist/linker/index.js.map +1 -0
- 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 +57 -19
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js +25 -14
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +1 -1
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +5 -5
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +2 -3
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.d.ts +1 -1
- package/dist/panels/PandasPanel.d.ts.map +1 -1
- package/dist/panels/PandasPanel.js +2 -2
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/index.d.ts +3 -0
- package/dist/panels/index.d.ts.map +1 -1
- package/dist/panels/index.js +3 -0
- package/dist/panels/index.js.map +1 -1
- package/dist/redux/selectors.d.ts +4 -4
- package/dist/redux/selectors.js +4 -4
- package/dist/redux/selectors.js.map +1 -1
- package/package.json +18 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/ChartPanel.tsx"],"names":["React","Component","classNames","memoize","connect","CSSTransition","debounce","Chart","ChartUtils","isFigureChartModel","getOpenedPanelMapForDashboard","LayoutUtils","IrisGridUtils","dh","ThemeExport","Log","getActiveTool","getSettings","setActiveTool","setActiveToolAction","assertNotNull","Pending","PromiseUtils","TextUtils","WidgetPanel","ToolType","InputFilterEvent","ChartEvent","getColumnSelectionValidatorForDashboard","getInputFiltersForDashboard","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","getTableMapForDashboard","setDashboardIsolatedLinkerPanelId","setDashboardIsolatedLinkerPanelIdAction","ChartFilterOverlay","ChartColumnSelectorOverlay","log","module","UPDATE_MODEL_DEBOUNCE","hasInputFilter","panel","inputFilters","hasPanelState","panelState","ChartPanel","constructor","props","isFilterRequired","columnMap","filterMap","Map","waitingInputMap","forEach","filter","name","delete","linkedColumnMap","inputFilterMap","waitingFilterMap","value","column","i","length","inputFilter","type","get","set","links","panelId","getIdFromPanel","link","columnName","start","has","end","columnSelectionValidator","Array","from","values","map","isValid","isActive","handleColumnSelected","bind","handleColumnMouseEnter","handleColumnMouseLeave","handleDisconnect","handleReconnect","handleFilterAdd","handleHide","handleError","handleLoadError","handleLoadSuccess","handleResize","handleSettingsChanged","handleOpenLinker","handleShow","handleSourceColumnChange","handleSourceFilterChange","handleSourceSortChange","handleTabBlur","handleTabFocus","handleUpdate","updateModelFromSource","handleClearAllFilters","panelContainer","createRef","chart","pending","metadata","filterValueMap","settings","state","error","undefined","isDisconnected","isLoading","isLoaded","isLinked","model","componentDidMount","isHidden","setState","initModel","componentDidUpdate","prevProps","prevState","source","pruneFilterMaps","updateChangedInputFilters","updateFilters","updatePanelState","updateSettings","startListeningToSource","stopListeningToSource","componentWillUnmount","cancel","makeModel","add","resolved","close","then","table","debug","addEventListener","Table","EVENT_CUSTOMCOLUMNSCHANGED","EVENT_FILTERCHANGED","EVENT_SORTCHANGED","removeEventListener","loadModelIfNecessary","glContainer","glEventHub","emit","COLUMN_SELECTED","Error","columns","openInputFilter","localDashboardId","LINKER","sendColumnChange","updateColumnFilters","prevModel","updateInputFilters","size","isCanceled","debug2","plot","Figure","create","makeFigureSettings","figure","setFigure","catch","sourcePanel","tableSettings","sourcePanelState","extractTableSettings","updateChart","update","prevSettings","setActive","OPEN_INPUT","title","isValueShown","createNewStack","focusElement","COLUMNS_CHANGED","getFilterColumnMap","getCoordinateForColumn","className","makeButtonClassName","current","element","querySelector","rect","getBoundingClientRect","width","height","x","left","y","bottom","setFilterMap","filterMapParam","updatedFilterMap","columnType","unsetFilterValue","getInputFilterColumnMap","filterValue","inputFilterValue","prevInputFilters","deletedInputFilters","prevInputFilter","find","deleteInputFilters","changedInputFilters","includes","forceUpdate","needsUpdate","linkValue","getWaitingInputMap","setFilter","defaultTitle","getDefaultTitle","filterTitle","join","entries","setTitle","newState","updateDimensions","render","isLinkerActive","figureName","tableName","getLinkedColumnMap","getWaitingFilterMap","errorMessage","isWaitingForFilter","isSelectingColumn","transitionMs","getSelectorColumns","mapStateToProps","ownProps","sourcePanelId","panelTableMap","openedPanelMap","activeTool","isolatedLinkerPanelId","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component, ReactElement, RefObject } from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport { CSSTransition } from 'react-transition-group';\nimport debounce from 'lodash.debounce';\nimport {\n Chart,\n ChartModel,\n ChartUtils,\n isFigureChartModel,\n} from '@deephaven/chart';\nimport {\n getOpenedPanelMapForDashboard,\n LayoutUtils,\n PanelComponent,\n PanelProps,\n} from '@deephaven/dashboard';\nimport { IrisGridUtils, InputFilter, ColumnName } from '@deephaven/iris-grid';\nimport dh, {\n Column,\n FigureDescriptor,\n SeriesPlotStyle,\n TableTemplate,\n} from '@deephaven/jsapi-shim';\nimport { ThemeExport } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport {\n getActiveTool,\n getSettings,\n RootState,\n setActiveTool as setActiveToolAction,\n WorkspaceSettings,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n Pending,\n PromiseUtils,\n TextUtils,\n} from '@deephaven/utils';\nimport GoldenLayout from '@deephaven/golden-layout';\nimport WidgetPanel from './WidgetPanel';\nimport ToolType from '../linker/ToolType';\nimport { InputFilterEvent, ChartEvent } from '../events';\nimport {\n getColumnSelectionValidatorForDashboard,\n getInputFiltersForDashboard,\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n getTableMapForDashboard,\n setDashboardIsolatedLinkerPanelId as setDashboardIsolatedLinkerPanelIdAction,\n} from '../redux';\nimport ChartFilterOverlay, { ColumnMap } from './ChartFilterOverlay';\nimport ChartColumnSelectorOverlay, {\n SelectorColumn,\n} from './ChartColumnSelectorOverlay';\nimport './ChartPanel.scss';\nimport { Link } from '../linker/LinkerUtils';\nimport { PanelState as IrisGridPanelState } from './IrisGridPanel';\nimport { ColumnSelectionValidator } from '../linker/ColumnSelectionValidator';\n\nconst log = Log.module('ChartPanel');\nconst UPDATE_MODEL_DEBOUNCE = 150;\n\nexport type InputFilterMap = Map<string, InputFilter>;\n\nexport type FilterMap = Map<string, string>;\n\nexport type LinkedColumnMap = Map<string, Column>;\n\nexport interface ChartPanelMetaData {\n figure: string;\n table: string;\n query: string;\n querySerial: string;\n sourcePanelId: string;\n settings: {\n isLinked: boolean;\n title: string;\n xAxis: string;\n series: string[];\n type: SeriesPlotStyle;\n };\n}\n\ntype Settings = Record<string, unknown>;\n\ninterface PanelState {\n filterValueMap: [string, string][];\n settings: Partial<WorkspaceSettings>;\n tableSettings: unknown;\n irisGridState?: {\n advancedFilters: unknown;\n quickFilters: unknown;\n sorts: unknown;\n };\n irisGridPanelState?: {\n partitionColumn: string;\n partition: unknown;\n };\n}\ninterface ChartPanelProps {\n glContainer: GoldenLayout.Container;\n glEventHub: GoldenLayout.EventEmitter;\n\n metadata: ChartPanelMetaData;\n /** Function to build the ChartModel used by this ChartPanel. Can return a promise. */\n makeModel: () => ChartModel;\n inputFilters: InputFilter[];\n links: Link[];\n localDashboardId: string;\n isLinkerActive: boolean;\n source?: TableTemplate;\n sourcePanel?: PanelComponent;\n columnSelectionValidator?: ColumnSelectionValidator;\n setActiveTool: (tool: string) => void;\n setDashboardIsolatedLinkerPanelId: (\n id: string,\n secondParam: undefined\n ) => void;\n\n panelState: PanelState;\n settings: Partial<WorkspaceSettings>;\n}\n\ninterface ChartPanelState {\n settings: Partial<WorkspaceSettings>;\n error?: unknown;\n isActive: boolean;\n isDisconnected: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n isLinked: boolean;\n\n // Map of all non-empty filters applied to the chart.\n // Initialize the filter map to the previously stored values; input filters will be applied after load.\n filterMap: Map<string, string>;\n // Map of filter values set from links, stored in panelState.\n // Combined with inputFilters to get applied filters (filterMap).\n filterValueMap: Map<string, string>;\n model?: ChartModel;\n columnMap: ColumnMap;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n}\n\nfunction hasInputFilter(\n panel: PanelProps\n): panel is PanelProps & { inputFilters: InputFilter[] } {\n return (\n (panel as PanelProps & { inputFilters: InputFilter[] }).inputFilters != null\n );\n}\n\nfunction hasPanelState(\n panel: unknown\n): panel is { panelState: IrisGridPanelState } {\n return (panel as { panelState: IrisGridPanelState }).panelState != null;\n}\n\nexport class ChartPanel extends Component<ChartPanelProps, ChartPanelState> {\n static defaultProps = {\n columnSelectionValidator: null,\n isLinkerActive: false,\n source: null,\n sourcePanel: null,\n panelState: null,\n settings: {},\n };\n\n static displayName = 'ChartPanel';\n\n static COMPONENT = 'ChartPanel';\n\n constructor(props: ChartPanelProps) {\n super(props);\n\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleColumnMouseEnter = this.handleColumnMouseEnter.bind(this);\n this.handleColumnMouseLeave = this.handleColumnMouseLeave.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleFilterAdd = this.handleFilterAdd.bind(this);\n this.handleHide = this.handleHide.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleSettingsChanged = this.handleSettingsChanged.bind(this);\n this.handleOpenLinker = this.handleOpenLinker.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleSourceColumnChange = this.handleSourceColumnChange.bind(this);\n this.handleSourceFilterChange = this.handleSourceFilterChange.bind(this);\n this.handleSourceSortChange = this.handleSourceSortChange.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.updateModelFromSource = debounce(\n this.updateModelFromSource.bind(this),\n UPDATE_MODEL_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.panelContainer = React.createRef();\n this.chart = React.createRef();\n this.pending = new Pending();\n\n const { metadata, panelState } = props;\n const { filterValueMap = [], settings = {} } = panelState ?? {};\n\n this.state = {\n settings,\n error: undefined,\n isActive: false,\n isDisconnected: false,\n isLoading: false,\n isLoaded: false,\n isLinked: metadata && metadata.settings && metadata.settings.isLinked,\n\n // Map of all non-empty filters applied to the chart.\n // Initialize the filter map to the previously stored values; input filters will be applied after load.\n filterMap: new Map(filterValueMap),\n // Map of filter values set from links, stored in panelState.\n // Combined with inputFilters to get applied filters (filterMap).\n filterValueMap: new Map(filterValueMap),\n model: undefined,\n columnMap: new Map(),\n\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n }\n\n componentDidMount(): void {\n if (!this.isHidden()) {\n this.setState({ isActive: true });\n this.initModel();\n }\n }\n\n componentDidUpdate(\n prevProps: ChartPanelProps,\n prevState: ChartPanelState\n ): void {\n const { inputFilters, source } = this.props;\n const {\n columnMap,\n model,\n filterMap,\n filterValueMap,\n isLinked,\n settings,\n } = this.state;\n if (!model) {\n return;\n }\n\n if (columnMap !== prevState.columnMap) {\n this.pruneFilterMaps();\n }\n\n if (inputFilters !== prevProps.inputFilters) {\n this.updateChangedInputFilters(inputFilters, prevProps.inputFilters);\n }\n\n if (filterMap !== prevState.filterMap) {\n this.updateFilters();\n } else if (filterValueMap !== prevState.filterValueMap) {\n this.updatePanelState();\n }\n\n if (settings !== prevState.settings && isFigureChartModel(model)) {\n model.updateSettings(settings);\n this.updatePanelState();\n }\n\n if (isLinked !== prevState.isLinked) {\n if (source) {\n if (isLinked) {\n this.startListeningToSource(source);\n this.updateModelFromSource();\n } else {\n this.stopListeningToSource(source);\n }\n }\n } else if (isLinked && source !== prevProps.source) {\n if (prevProps.source) {\n this.stopListeningToSource(prevProps.source);\n }\n if (source) {\n this.startListeningToSource(source);\n this.updateModelFromSource();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.pending.cancel();\n\n const { source } = this.props;\n if (source) {\n this.stopListeningToSource(source);\n }\n }\n\n panelContainer: RefObject<HTMLDivElement>;\n\n chart: RefObject<Chart>;\n\n pending: Pending;\n\n initModel(): void {\n this.setState({ isLoading: true, isLoaded: false, error: undefined });\n\n const { makeModel } = this.props;\n this.pending\n .add(makeModel(), resolved => {\n resolved.close();\n })\n .then(this.handleLoadSuccess, this.handleLoadError);\n }\n\n getWaitingInputMap = memoize(\n (\n isFilterRequired: boolean,\n columnMap: ColumnMap,\n filterMap: FilterMap\n ): Map<string, Column> => {\n if (!isFilterRequired) {\n return new Map();\n }\n const waitingInputMap = new Map(columnMap);\n filterMap.forEach((filter, name) => {\n waitingInputMap.delete(name);\n });\n return waitingInputMap;\n }\n );\n\n getWaitingFilterMap = memoize(\n (\n isFilterRequired: boolean,\n columnMap: ColumnMap,\n filterMap: FilterMap,\n linkedColumnMap: LinkedColumnMap,\n inputFilterMap: InputFilterMap\n ) => {\n if (!isFilterRequired) {\n return new Map();\n }\n\n const waitingFilterMap = new Map(columnMap);\n filterMap.forEach((filter, name) => {\n waitingFilterMap.delete(name);\n });\n inputFilterMap.forEach((value, name) => {\n waitingFilterMap.delete(name);\n });\n linkedColumnMap.forEach((column, name) => {\n waitingFilterMap.delete(name);\n });\n return waitingFilterMap;\n }\n );\n\n getInputFilterColumnMap = memoize(\n (columnMap: ColumnMap, inputFilters: InputFilter[]) => {\n const inputFilterMap = new Map<string, InputFilter>();\n for (let i = 0; i < inputFilters.length; i += 1) {\n const inputFilter = inputFilters[i];\n const { name, type } = inputFilter;\n const column = columnMap.get(name);\n if (column != null && column.type === type) {\n inputFilterMap.set(name, inputFilter);\n }\n }\n return inputFilterMap;\n }\n );\n\n getLinkedColumnMap = memoize((columnMap: ColumnMap, links: Link[]) => {\n const linkedColumnMap = new Map<string, Column>();\n const panelId = LayoutUtils.getIdFromPanel(this);\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n let columnName = null;\n if (\n link.start &&\n link.start.panelId === panelId &&\n columnMap.has(link.start.columnName)\n ) {\n columnName = link.start.columnName;\n } else if (\n link.end &&\n link.end.panelId === panelId &&\n columnMap.has(link.end.columnName)\n ) {\n columnName = link.end.columnName;\n }\n\n if (columnName != null && columnMap.has(columnName)) {\n const column = columnMap.get(columnName);\n assertNotNull(column);\n linkedColumnMap.set(columnName, column);\n }\n }\n return linkedColumnMap;\n });\n\n getSelectorColumns = memoize(\n (\n columnMap: ColumnMap,\n linkedColumnMap: LinkedColumnMap,\n columnSelectionValidator?: ColumnSelectionValidator\n ) =>\n Array.from(columnMap.values()).map(column => ({\n name: column.name,\n type: column.type,\n isValid: columnSelectionValidator\n ? columnSelectionValidator(this, column)\n : false,\n isActive: linkedColumnMap.has(column.name),\n }))\n );\n\n startListeningToSource(table: TableTemplate): void {\n log.debug('startListeningToSource', table);\n\n table.addEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleSourceColumnChange\n );\n table.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n table.addEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n }\n\n stopListeningToSource(table: TableTemplate): void {\n log.debug('stopListeningToSource', table);\n\n table.removeEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleSourceColumnChange\n );\n table.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n table.removeEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n }\n\n loadModelIfNecessary(): void {\n const { isActive, isLoaded, isLoading } = this.state;\n if (isActive && !isLoaded && !isLoading) {\n this.initModel();\n }\n }\n\n isHidden(): boolean {\n const { glContainer } = this.props;\n const { isHidden } = glContainer;\n return isHidden;\n }\n\n handleColumnSelected(columnName: string): void {\n const { glEventHub } = this.props;\n const { columnMap } = this.state;\n glEventHub.emit(\n ChartEvent.COLUMN_SELECTED,\n this,\n columnMap.get(columnName)\n );\n }\n\n handleColumnMouseEnter({ type, name }: SelectorColumn): void {\n const { columnSelectionValidator } = this.props;\n log.debug('handleColumnMouseEnter', columnSelectionValidator, type, name);\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, { type, name });\n }\n\n handleColumnMouseLeave(): void {\n const { columnSelectionValidator } = this.props;\n log.debug('handleColumnMouseLeave', columnSelectionValidator);\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, undefined);\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Figure disconnected'),\n isDisconnected: true,\n });\n }\n\n handleFilterAdd(columns: InputFilter[]): void {\n for (let i = 0; i < columns.length; i += 1) {\n this.openInputFilter(columns[i]);\n }\n }\n\n handleOpenLinker(): void {\n const {\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId,\n } = this.props;\n setDashboardIsolatedLinkerPanelId(localDashboardId, undefined);\n setActiveTool(ToolType.LINKER);\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: undefined });\n this.sendColumnChange();\n this.updateColumnFilters();\n }\n\n handleLoadSuccess(model: ChartModel): void {\n log.debug('handleLoadSuccess');\n\n const { model: prevModel } = this.state;\n this.setState(\n {\n model,\n isLoaded: true,\n },\n () => {\n const { inputFilters, source } = this.props;\n const { filterMap, isLinked } = this.state;\n if (model !== prevModel) {\n this.sendColumnChange();\n this.updateColumnFilters();\n this.updateInputFilters(\n inputFilters,\n filterMap.size > 0 || model.isFilterRequired()\n );\n if (source && isLinked) {\n this.startListeningToSource(source);\n this.updateModelFromSource();\n }\n }\n }\n );\n }\n\n handleLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error('handleLoadError', error);\n this.setState({ error, isLoading: false });\n }\n\n handleSourceColumnChange(): void {\n this.updateModelFromSource();\n }\n\n handleSourceFilterChange(): void {\n this.updateModelFromSource();\n }\n\n handleSourceSortChange(): void {\n this.updateModelFromSource();\n }\n\n updateModelFromSource(): void {\n const { metadata, source } = this.props;\n const { isLinked, model } = this.state;\n const { settings } = metadata;\n if (!isLinked || !model || !source) {\n log.debug2('updateModelFromSource ignoring', isLinked, model, source);\n return;\n }\n\n // By now the model has already been loaded, which is the only other cancelable thing in pending\n this.pending.cancel();\n this.pending\n .add(\n dh.plot.Figure.create(\n (ChartUtils.makeFigureSettings(\n settings,\n source\n ) as unknown) as FigureDescriptor\n )\n )\n .then(figure => {\n if (isFigureChartModel(model)) {\n model.setFigure(figure);\n }\n })\n .catch(this.handleLoadError);\n\n this.updatePanelState();\n }\n\n updatePanelState(): void {\n const { sourcePanel } = this.props;\n const { panelState, filterValueMap, settings } = this.state;\n let { tableSettings } = panelState ?? {};\n if (sourcePanel) {\n // Right now just update the panel state from the source\n // If the source isn't available, just keep the state that's already saved\n if (\n hasInputFilter(sourcePanel.props) &&\n hasPanelState(sourcePanel.state)\n ) {\n const { inputFilters } = sourcePanel.props;\n const { panelState: sourcePanelState } = sourcePanel.state;\n if (sourcePanelState) {\n tableSettings = IrisGridUtils.extractTableSettings(\n sourcePanelState,\n inputFilters\n );\n }\n }\n }\n\n // eslint-disable-next-line react/no-unused-state\n this.setState({\n panelState: {\n settings,\n tableSettings,\n filterValueMap: Array.from(filterValueMap),\n },\n });\n }\n\n handleError(): void {\n // Don't want to set an error state, because the user can fix a chart error within the chart itself.\n // We're not loading anymore either so stop showing the spinner so the user can actually click those buttons.\n this.setState({ isLoading: false });\n }\n\n handleResize(): void {\n this.updateChart();\n }\n\n handleSettingsChanged(update: Partial<Settings>): void {\n this.setState(({ settings: prevSettings }) => {\n const settings = {\n ...prevSettings,\n ...update,\n };\n log.debug('Updated settings', settings);\n return { settings };\n });\n }\n\n handleHide(): void {\n this.setActive(false);\n }\n\n handleShow(): void {\n this.setActive(true);\n }\n\n handleTabBlur(): void {\n this.setActive(false);\n }\n\n handleTabFocus(): void {\n const isHidden = this.isHidden();\n this.setActive(!isHidden);\n }\n\n handleUpdate(): void {\n this.setState({ isLoading: false });\n }\n\n handleClearAllFilters(): void {\n // nuke link filter and input filter map\n // input filters only clear themselves if they are not yet empty\n this.setState({\n filterValueMap: new Map(),\n filterMap: new Map(),\n });\n this.updatePanelState();\n }\n\n /**\n * Create an input filter panel for the provided column\n * @param column The column to create the input filter for\n */\n openInputFilter(column: InputFilter): void {\n const { glEventHub } = this.props;\n const { name, type } = column;\n glEventHub.emit(InputFilterEvent.OPEN_INPUT, {\n title: `${name} Filter`,\n panelState: {\n name,\n type,\n isValueShown: true,\n },\n createNewStack: true,\n focusElement: 'input',\n });\n }\n\n setActive(isActive: boolean): void {\n this.setState({ isActive }, () => {\n if (isActive) {\n this.loadModelIfNecessary();\n this.updateChart();\n }\n });\n }\n\n sendColumnChange(): void {\n const { model } = this.state;\n if (!model) {\n return;\n }\n const { glEventHub } = this.props;\n glEventHub.emit(\n InputFilterEvent.COLUMNS_CHANGED,\n this,\n Array.from(model.getFilterColumnMap().values())\n );\n }\n\n getCoordinateForColumn(columnName: ColumnName): [number, number] | null {\n const className = ChartColumnSelectorOverlay.makeButtonClassName(\n columnName\n );\n\n if (!this.panelContainer.current) {\n return null;\n }\n\n const element = this.panelContainer.current.querySelector(`.${className}`);\n const rect = element?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n const x = rect.left + rect.width / 2;\n const y = rect.bottom;\n return [x, y];\n }\n\n /**\n * Set chart filters based on the filter map\n * @param filterMapParam Filter map\n */\n setFilterMap(\n filterMapParam: Map<string, { columnType: string; value: string }>\n ): void {\n log.debug('setFilterMap', filterMapParam);\n this.setState(state => {\n const { columnMap, filterMap } = state;\n let updatedFilterMap: null | Map<string, string> = null;\n const filterValueMap = new Map(state.filterValueMap);\n\n filterMapParam.forEach(({ columnType, value }, columnName) => {\n const column = columnMap.get(columnName);\n if (column == null || column.type !== columnType) {\n return;\n }\n filterValueMap.set(columnName, value);\n if (filterMap.get(columnName) !== value) {\n if (updatedFilterMap === null) {\n updatedFilterMap = new Map(filterMap);\n }\n updatedFilterMap.set(columnName, value);\n }\n });\n\n // Don't update filterMap unless the filters actually changed.\n // Otherwise the chart gets stuck on a spinner\n // because it never gets an update event for unchanged filters.\n return { filterValueMap, filterMap: updatedFilterMap ?? filterMap };\n });\n }\n\n unsetFilterValue(columnName: ColumnName): void {\n this.setState(state => {\n // We want to unset a value unless there's an input filter for it\n // If there's an input filter, then we want to just set it to that value\n // This way if the user has an input filter and a link, when they delete the link the input filter value takes effect\n const { inputFilters } = this.props;\n const { columnMap } = state;\n let { filterMap, filterValueMap } = state;\n if (!filterValueMap.has(columnName)) {\n return null;\n }\n\n filterValueMap = new Map(state.filterValueMap);\n filterValueMap.delete(columnName);\n\n const inputFilterMap = this.getInputFilterColumnMap(\n columnMap,\n inputFilters\n );\n\n if (inputFilterMap.has(columnName)) {\n const filterValue = filterMap.get(columnName);\n const inputFilterValue = inputFilterMap.get(columnName)?.value;\n if (inputFilterValue != null && filterValue !== inputFilterValue) {\n filterMap = new Map(state.filterMap);\n if (inputFilterValue.length > 0) {\n filterMap.set(columnName, inputFilterValue);\n } else {\n filterMap.delete(columnName);\n }\n }\n } else {\n filterMap = new Map(state.filterMap);\n filterMap.delete(columnName);\n }\n return { filterMap, filterValueMap };\n });\n }\n\n updateChangedInputFilters(\n inputFilters: InputFilter[],\n prevInputFilters: InputFilter[]\n ): void {\n const deletedInputFilters = prevInputFilters.filter(\n prevInputFilter =>\n !inputFilters.find(\n inputFilter =>\n inputFilter.name === prevInputFilter.name &&\n inputFilter.type === prevInputFilter.type\n )\n );\n if (deletedInputFilters.length > 0) {\n this.deleteInputFilters(deletedInputFilters);\n }\n\n const changedInputFilters = inputFilters.filter(\n inputFilter => !prevInputFilters.includes(inputFilter)\n );\n if (changedInputFilters.length > 0) {\n this.updateInputFilters(changedInputFilters);\n }\n }\n\n updateInputFilters(inputFilters: InputFilter[], forceUpdate = false): void {\n this.setState(state => {\n const { columnMap } = state;\n const filterValueMap = new Map(state.filterValueMap);\n const filterMap = new Map(state.filterMap);\n const update = forceUpdate ? { filterMap, filterValueMap } : {};\n\n for (let i = 0; i < inputFilters.length; i += 1) {\n const { name, type, value } = inputFilters[i];\n const column = columnMap.get(name);\n if (column != null && column.type === type) {\n if (value != null && filterMap.get(name) !== value) {\n if (value === '') {\n filterMap.delete(name);\n } else {\n filterMap.set(name, value);\n }\n update.filterMap = filterMap;\n }\n\n if (filterValueMap.has(name)) {\n // Need to unset whatever the linked value was - if they want that value again, they need to double click the link again\n filterValueMap.delete(name);\n update.filterValueMap = filterValueMap;\n }\n }\n }\n\n log.debug('updateInputFilters', update);\n return update as unknown;\n });\n }\n\n deleteInputFilters(inputFilters: InputFilter[], forceUpdate = false): void {\n this.setState(state => {\n const { columnMap, filterValueMap } = state;\n const filterMap = new Map(state.filterMap);\n let needsUpdate = forceUpdate;\n\n for (let i = 0; i < inputFilters.length; i += 1) {\n const { name, type } = inputFilters[i];\n const column = columnMap.get(name);\n if (column != null && column.type === type) {\n if (filterMap.has(name)) {\n const filterValue = filterMap.get(name);\n if (filterValueMap.has(name)) {\n const linkValue = filterValueMap.get(name);\n if (linkValue !== filterValue && linkValue != null) {\n needsUpdate = true;\n filterMap.set(name, linkValue);\n }\n } else {\n needsUpdate = true;\n filterMap.delete(name);\n }\n }\n }\n }\n\n log.debug('deleteInputFilters', needsUpdate);\n return needsUpdate ? { filterMap } : null;\n });\n }\n\n updateColumnFilters(): void {\n this.setState(({ model }) => {\n if (!model) {\n return null;\n }\n\n return { columnMap: model.getFilterColumnMap() };\n });\n }\n\n updateFilters(): void {\n const { columnMap, filterMap, model } = this.state;\n assertNotNull(model);\n const waitingInputMap = this.getWaitingInputMap(\n model.isFilterRequired(),\n columnMap,\n filterMap\n );\n model.setFilter(filterMap);\n\n if (filterMap.size > 0 && waitingInputMap.size === 0) {\n const defaultTitle = model.getDefaultTitle();\n const filterTitle = TextUtils.join(\n Array.from(filterMap.entries()).map(\n ([name, value]) => `${name}: ${value}`\n )\n );\n if (defaultTitle) {\n model.setTitle(\n `${defaultTitle}<br><span style=\"font-size: smaller\">${filterTitle}</span>`\n );\n } else {\n model.setTitle(filterTitle);\n }\n\n log.debug2('updateFilters filters set', filterMap);\n this.setState({ isLoading: true });\n } else {\n log.debug2('updateFilters waiting on inputs', waitingInputMap);\n model.setTitle(model.getDefaultTitle());\n this.setState({ isLoading: false });\n }\n\n this.updatePanelState();\n }\n\n /**\n * Removes any set filter values that are no longer part of the model\n */\n pruneFilterMaps(): void {\n this.setState(state => {\n const { columnMap } = state;\n const filterMap = new Map(state.filterMap);\n const filterValueMap = new Map(state.filterValueMap);\n const newState: Pick<\n Partial<ChartPanelState>,\n 'filterMap' | 'filterValueMap'\n > = {};\n\n state.filterValueMap.forEach((value, name) => {\n if (!columnMap.has(name)) {\n filterValueMap.delete(name);\n newState.filterValueMap = filterValueMap;\n }\n });\n state.filterMap.forEach((value, name) => {\n if (!columnMap.has(name)) {\n filterMap.delete(name);\n newState.filterMap = filterMap;\n }\n });\n return newState as unknown;\n });\n }\n\n updateChart(): void {\n if (this.chart.current) {\n this.chart.current.updateDimensions();\n }\n }\n\n render(): ReactElement {\n const {\n columnSelectionValidator,\n glContainer,\n glEventHub,\n inputFilters,\n isLinkerActive,\n links,\n metadata,\n settings,\n } = this.props;\n const {\n columnMap,\n filterMap,\n error,\n model,\n isActive,\n isDisconnected,\n isLoaded,\n isLoading,\n } = this.state;\n const { figure: figureName, table: tableName } = metadata;\n const inputFilterMap = this.getInputFilterColumnMap(\n columnMap,\n inputFilters\n );\n const linkedColumnMap = this.getLinkedColumnMap(columnMap, links);\n const waitingInputMap =\n model != null\n ? this.getWaitingInputMap(\n model.isFilterRequired(),\n columnMap,\n filterMap\n )\n : new Map();\n const waitingFilterMap =\n model != null\n ? this.getWaitingFilterMap(\n model.isFilterRequired(),\n columnMap,\n filterMap,\n linkedColumnMap,\n inputFilterMap\n )\n : new Map();\n const errorMessage = error ? `Unable to open chart. ${error}` : undefined;\n const isWaitingForFilter = waitingInputMap.size > 0;\n const isSelectingColumn = columnMap.size > 0 && isLinkerActive;\n return (\n <WidgetPanel\n className={classNames('iris-chart-panel', {\n 'input-required': isWaitingForFilter,\n })}\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onHide={this.handleHide}\n onClearAllFilters={this.handleClearAllFilters}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabBlur={this.handleTabBlur}\n onTabFocus={this.handleTabFocus}\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n widgetName={figureName || tableName}\n widgetType=\"Chart\"\n >\n <div\n ref={this.panelContainer}\n className=\"chart-panel-container h-100 w-100\"\n >\n <div className=\"chart-container h-100 w-100\">\n {isLoaded && model && (\n <Chart\n isActive={isActive}\n model={model}\n settings={settings}\n ref={this.chart}\n onDisconnect={this.handleDisconnect}\n onReconnect={this.handleReconnect}\n onUpdate={this.handleUpdate}\n onError={this.handleError}\n onSettingsChanged={this.handleSettingsChanged}\n />\n )}\n </div>\n <CSSTransition\n in={isWaitingForFilter && !isSelectingColumn && !isLoading}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <ChartFilterOverlay\n inputFilterMap={inputFilterMap}\n linkedColumnMap={linkedColumnMap}\n onAdd={this.handleFilterAdd}\n onOpenLinker={this.handleOpenLinker}\n columnMap={columnMap}\n waitingFilterMap={waitingFilterMap}\n waitingInputMap={waitingInputMap}\n />\n </CSSTransition>\n <CSSTransition\n in={isSelectingColumn}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <ChartColumnSelectorOverlay\n columns={this.getSelectorColumns(\n columnMap,\n linkedColumnMap,\n columnSelectionValidator\n )}\n onColumnSelected={this.handleColumnSelected}\n onMouseEnter={this.handleColumnMouseEnter}\n onMouseLeave={this.handleColumnMouseLeave}\n />\n </CSSTransition>\n </div>\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string; metadata: { sourcePanelId: string } }\n) => {\n const { localDashboardId, metadata } = ownProps;\n\n let sourcePanelId;\n if (metadata) {\n sourcePanelId = metadata.sourcePanelId;\n }\n const panelTableMap = getTableMapForDashboard(state, localDashboardId);\n const openedPanelMap = getOpenedPanelMapForDashboard(state, localDashboardId);\n const activeTool = getActiveTool(state);\n const isolatedLinkerPanelId = getIsolatedLinkerPanelIdForDashboard(\n state,\n localDashboardId\n );\n const isLinkerActive =\n activeTool === ToolType.LINKER && isolatedLinkerPanelId === undefined;\n return {\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n isLinkerActive,\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n source:\n sourcePanelId != null ? panelTableMap.get(sourcePanelId) : undefined,\n sourcePanel:\n sourcePanelId != null ? openedPanelMap.get(sourcePanelId) : undefined,\n settings: getSettings(state),\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n setActiveTool: setActiveToolAction,\n setDashboardIsolatedLinkerPanelId: setDashboardIsolatedLinkerPanelIdAction,\n },\n null,\n { forwardRef: true }\n)(ChartPanel);\n"],"file":"ChartPanel.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/panels/ChartPanel.tsx"],"names":["React","Component","classNames","memoize","connect","CSSTransition","debounce","Chart","ChartUtils","isFigureChartModel","getOpenedPanelMapForDashboard","LayoutUtils","IrisGridUtils","dh","ThemeExport","Log","getActiveTool","getSettings","setActiveTool","setActiveToolAction","assertNotNull","Pending","PromiseUtils","TextUtils","WidgetPanel","ToolType","InputFilterEvent","ChartEvent","getColumnSelectionValidatorForDashboard","getInputFiltersForDashboard","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","getTableMapForDashboard","setDashboardIsolatedLinkerPanelId","setDashboardIsolatedLinkerPanelIdAction","ChartFilterOverlay","ChartColumnSelectorOverlay","log","module","UPDATE_MODEL_DEBOUNCE","isChartPanelTableMetadata","metadata","settings","undefined","hasInputFilter","panel","inputFilters","hasPanelState","panelState","ChartPanel","constructor","props","isFilterRequired","columnMap","filterMap","Map","waitingInputMap","forEach","filter","name","delete","linkedColumnMap","inputFilterMap","waitingFilterMap","value","column","i","length","inputFilter","type","get","set","links","panelId","getIdFromPanel","link","columnName","start","has","end","columnSelectionValidator","Array","from","values","map","isValid","isActive","handleColumnSelected","bind","handleColumnMouseEnter","handleColumnMouseLeave","handleDisconnect","handleReconnect","handleFilterAdd","handleHide","handleError","handleLoadError","handleLoadSuccess","handleResize","handleSettingsChanged","handleOpenLinker","handleShow","handleSourceColumnChange","handleSourceFilterChange","handleSourceSortChange","handleTabBlur","handleTabFocus","handleUpdate","updateModelFromSource","handleClearAllFilters","panelContainer","createRef","chart","pending","filterValueMap","state","error","isDisconnected","isLoading","isLoaded","isLinked","model","componentDidMount","isHidden","setState","initModel","componentDidUpdate","prevProps","prevState","source","pruneFilterMaps","updateChangedInputFilters","updateFilters","updatePanelState","updateSettings","startListeningToSource","stopListeningToSource","componentWillUnmount","cancel","makeModel","add","resolved","close","then","table","debug","addEventListener","Table","EVENT_CUSTOMCOLUMNSCHANGED","EVENT_FILTERCHANGED","EVENT_SORTCHANGED","removeEventListener","loadModelIfNecessary","glContainer","glEventHub","emit","COLUMN_SELECTED","Error","columns","openInputFilter","localDashboardId","LINKER","sendColumnChange","updateColumnFilters","prevModel","updateInputFilters","size","isCanceled","debug2","plot","Figure","create","makeFigureSettings","figure","setFigure","catch","sourcePanel","tableSettings","sourcePanelState","extractTableSettings","updateChart","update","prevSettings","setActive","OPEN_INPUT","title","isValueShown","createNewStack","focusElement","COLUMNS_CHANGED","getFilterColumnMap","getCoordinateForColumn","className","makeButtonClassName","current","element","querySelector","rect","getBoundingClientRect","width","height","x","left","y","bottom","setFilterMap","filterMapParam","updatedFilterMap","columnType","unsetFilterValue","getInputFilterColumnMap","filterValue","inputFilterValue","prevInputFilters","deletedInputFilters","prevInputFilter","find","deleteInputFilters","changedInputFilters","includes","forceUpdate","needsUpdate","linkValue","getWaitingInputMap","setFilter","defaultTitle","getDefaultTitle","filterTitle","join","entries","setTitle","newState","updateDimensions","render","isLinkerActive","getLinkedColumnMap","getWaitingFilterMap","errorMessage","isWaitingForFilter","isSelectingColumn","transitionMs","getSelectorColumns","mapStateToProps","ownProps","sourcePanelId","panelTableMap","openedPanelMap","activeTool","isolatedLinkerPanelId","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component, ReactElement, RefObject } from 'react';\nimport classNames from 'classnames';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport { CSSTransition } from 'react-transition-group';\nimport debounce from 'lodash.debounce';\nimport {\n Chart,\n ChartModel,\n ChartModelSettings,\n ChartUtils,\n isFigureChartModel,\n} from '@deephaven/chart';\nimport {\n getOpenedPanelMapForDashboard,\n LayoutUtils,\n PanelComponent,\n PanelProps,\n} from '@deephaven/dashboard';\nimport { IrisGridUtils, InputFilter, ColumnName } from '@deephaven/iris-grid';\nimport dh, {\n FigureDescriptor,\n SeriesPlotStyle,\n TableTemplate,\n} from '@deephaven/jsapi-shim';\nimport { ThemeExport } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport {\n getActiveTool,\n getSettings,\n RootState,\n setActiveTool as setActiveToolAction,\n WorkspaceSettings,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n Pending,\n PromiseUtils,\n TextUtils,\n} from '@deephaven/utils';\nimport GoldenLayout from '@deephaven/golden-layout';\nimport { ModelIndex } from '@deephaven/grid';\nimport { AdvancedFilterOptions, SortDirection } from '@deephaven/jsapi-utils';\nimport WidgetPanel from './WidgetPanel';\nimport ToolType from '../linker/ToolType';\nimport { InputFilterEvent, ChartEvent } from '../events';\nimport {\n getColumnSelectionValidatorForDashboard,\n getInputFiltersForDashboard,\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n getTableMapForDashboard,\n setDashboardIsolatedLinkerPanelId as setDashboardIsolatedLinkerPanelIdAction,\n} from '../redux';\nimport ChartFilterOverlay, { ColumnMap } from './ChartFilterOverlay';\nimport ChartColumnSelectorOverlay, {\n SelectorColumn,\n} from './ChartColumnSelectorOverlay';\nimport './ChartPanel.scss';\nimport { Link } from '../linker/LinkerUtils';\nimport { PanelState as IrisGridPanelState } from './IrisGridPanel';\nimport { ColumnSelectionValidator } from '../linker/ColumnSelectionValidator';\n\nconst log = Log.module('ChartPanel');\nconst UPDATE_MODEL_DEBOUNCE = 150;\n\nexport type InputFilterMap = Map<string, InputFilter>;\n\nexport type FilterMap = Map<string, string>;\n\nexport type LinkedColumnMap = Map<string, { name: string; type: string }>;\n\nexport function isChartPanelTableMetadata(\n metadata: ChartPanelMetadata\n): metadata is ChartPanelTableMetadata {\n return (metadata as ChartPanelTableMetadata).settings !== undefined;\n}\nexport type ChartPanelFigureMetadata = {\n figure: string;\n};\n\nexport type ChartPanelTableMetadata = {\n table: string;\n sourcePanelId: string;\n settings: {\n isLinked: boolean;\n title: string;\n xAxis: string;\n series: string[];\n type: keyof SeriesPlotStyle;\n };\n tableSettings: ChartPanelTableSettings;\n};\n\nexport type ChartPanelMetadata =\n | ChartPanelFigureMetadata\n | ChartPanelTableMetadata;\n\ntype Settings = Record<string, unknown>;\n\nexport interface ChartPanelTableSettings {\n quickFilters?: [\n ModelIndex,\n {\n text: string;\n }\n ][];\n advancedFilters?: [\n ModelIndex,\n {\n options: AdvancedFilterOptions;\n }\n ][];\n inputFilters?: InputFilter[];\n sorts?: {\n column: ModelIndex;\n isAbs: boolean;\n direction: SortDirection;\n }[];\n partition?: unknown;\n partitionColumn?: string;\n}\nexport interface GLChartPanelState {\n filterValueMap: [string, string][];\n settings: Partial<ChartModelSettings>;\n tableSettings: ChartPanelTableSettings;\n irisGridState?: {\n advancedFilters: unknown;\n quickFilters: unknown;\n sorts: unknown;\n };\n irisGridPanelState?: {\n partitionColumn: string;\n partition: unknown;\n };\n table?: string;\n figure?: string;\n}\nexport interface ChartPanelProps {\n glContainer: GoldenLayout.Container;\n glEventHub: GoldenLayout.EventEmitter;\n\n metadata: ChartPanelMetadata;\n /** Function to build the ChartModel used by this ChartPanel. Can return a promise. */\n makeModel: () => Promise<ChartModel>;\n inputFilters: InputFilter[];\n links: Link[];\n localDashboardId: string;\n isLinkerActive: boolean;\n source?: TableTemplate;\n sourcePanel?: PanelComponent;\n columnSelectionValidator?: ColumnSelectionValidator;\n setActiveTool: (tool: string) => void;\n setDashboardIsolatedLinkerPanelId: (\n id: string,\n secondParam: undefined\n ) => void;\n\n panelState: GLChartPanelState;\n settings: Partial<WorkspaceSettings>;\n}\n\ninterface ChartPanelState {\n settings: Partial<ChartModelSettings>;\n error?: unknown;\n isActive: boolean;\n isDisconnected: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n isLinked: boolean;\n\n // Map of all non-empty filters applied to the chart.\n // Initialize the filter map to the previously stored values; input filters will be applied after load.\n filterMap: Map<string, string>;\n // Map of filter values set from links, stored in panelState.\n // Combined with inputFilters to get applied filters (filterMap).\n filterValueMap: Map<string, string>;\n model?: ChartModel;\n columnMap: ColumnMap;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: GLChartPanelState;\n}\n\nfunction hasInputFilter(\n panel: PanelProps\n): panel is PanelProps & { inputFilters: InputFilter[] } {\n return (\n (panel as PanelProps & { inputFilters: InputFilter[] }).inputFilters != null\n );\n}\n\nfunction hasPanelState(\n panel: unknown\n): panel is { panelState: IrisGridPanelState } {\n return (panel as { panelState: IrisGridPanelState }).panelState != null;\n}\n\nexport class ChartPanel extends Component<ChartPanelProps, ChartPanelState> {\n static defaultProps = {\n columnSelectionValidator: null,\n isLinkerActive: false,\n source: null,\n sourcePanel: null,\n panelState: null,\n settings: {},\n };\n\n static displayName = 'ChartPanel';\n\n static COMPONENT = 'ChartPanel';\n\n constructor(props: ChartPanelProps) {\n super(props);\n\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleColumnMouseEnter = this.handleColumnMouseEnter.bind(this);\n this.handleColumnMouseLeave = this.handleColumnMouseLeave.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleFilterAdd = this.handleFilterAdd.bind(this);\n this.handleHide = this.handleHide.bind(this);\n this.handleError = this.handleError.bind(this);\n this.handleLoadError = this.handleLoadError.bind(this);\n this.handleLoadSuccess = this.handleLoadSuccess.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleSettingsChanged = this.handleSettingsChanged.bind(this);\n this.handleOpenLinker = this.handleOpenLinker.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleSourceColumnChange = this.handleSourceColumnChange.bind(this);\n this.handleSourceFilterChange = this.handleSourceFilterChange.bind(this);\n this.handleSourceSortChange = this.handleSourceSortChange.bind(this);\n this.handleTabBlur = this.handleTabBlur.bind(this);\n this.handleTabFocus = this.handleTabFocus.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.updateModelFromSource = debounce(\n this.updateModelFromSource.bind(this),\n UPDATE_MODEL_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.panelContainer = React.createRef();\n this.chart = React.createRef();\n this.pending = new Pending();\n\n const { metadata, panelState } = props;\n const { filterValueMap = [], settings = {} } = panelState ?? {};\n\n this.state = {\n settings,\n error: undefined,\n isActive: false,\n isDisconnected: false,\n isLoading: false,\n isLoaded: false,\n isLinked:\n metadata &&\n isChartPanelTableMetadata(metadata) &&\n metadata.settings &&\n metadata.settings.isLinked,\n\n // Map of all non-empty filters applied to the chart.\n // Initialize the filter map to the previously stored values; input filters will be applied after load.\n filterMap: new Map(filterValueMap),\n // Map of filter values set from links, stored in panelState.\n // Combined with inputFilters to get applied filters (filterMap).\n filterValueMap: new Map(filterValueMap),\n model: undefined,\n columnMap: new Map(),\n\n // eslint-disable-next-line react/no-unused-state\n panelState,\n };\n }\n\n componentDidMount(): void {\n if (!this.isHidden()) {\n this.setState({ isActive: true });\n this.initModel();\n }\n }\n\n componentDidUpdate(\n prevProps: ChartPanelProps,\n prevState: ChartPanelState\n ): void {\n const { inputFilters, source } = this.props;\n const {\n columnMap,\n model,\n filterMap,\n filterValueMap,\n isLinked,\n settings,\n } = this.state;\n\n if (!model) {\n return;\n }\n\n if (columnMap !== prevState.columnMap) {\n this.pruneFilterMaps();\n }\n\n if (inputFilters !== prevProps.inputFilters) {\n this.updateChangedInputFilters(inputFilters, prevProps.inputFilters);\n }\n\n if (filterMap !== prevState.filterMap) {\n this.updateFilters();\n } else if (filterValueMap !== prevState.filterValueMap) {\n this.updatePanelState();\n }\n\n if (settings !== prevState.settings && isFigureChartModel(model)) {\n model.updateSettings(settings);\n this.updatePanelState();\n }\n\n if (isLinked !== prevState.isLinked) {\n if (source) {\n if (isLinked) {\n this.startListeningToSource(source);\n this.updateModelFromSource();\n } else {\n this.stopListeningToSource(source);\n }\n }\n } else if (isLinked && source !== prevProps.source) {\n if (prevProps.source) {\n this.stopListeningToSource(prevProps.source);\n }\n if (source) {\n this.startListeningToSource(source);\n this.updateModelFromSource();\n }\n }\n }\n\n componentWillUnmount(): void {\n this.pending.cancel();\n\n const { source } = this.props;\n if (source) {\n this.stopListeningToSource(source);\n }\n }\n\n panelContainer: RefObject<HTMLDivElement>;\n\n chart: RefObject<Chart>;\n\n pending: Pending;\n\n initModel(): void {\n this.setState({ isLoading: true, isLoaded: false, error: undefined });\n\n const { makeModel } = this.props;\n this.pending\n .add(makeModel(), resolved => {\n resolved.close();\n })\n .then(this.handleLoadSuccess, this.handleLoadError);\n }\n\n getWaitingInputMap = memoize(\n (\n isFilterRequired: boolean,\n columnMap: ColumnMap,\n filterMap: FilterMap\n ): Map<string, { name: string; type: string }> => {\n if (!isFilterRequired) {\n return new Map();\n }\n const waitingInputMap = new Map(columnMap);\n filterMap.forEach((filter, name) => {\n waitingInputMap.delete(name);\n });\n return waitingInputMap;\n }\n );\n\n getWaitingFilterMap = memoize(\n (\n isFilterRequired: boolean,\n columnMap: ColumnMap,\n filterMap: FilterMap,\n linkedColumnMap: LinkedColumnMap,\n inputFilterMap: InputFilterMap\n ) => {\n if (!isFilterRequired) {\n return new Map();\n }\n\n const waitingFilterMap = new Map(columnMap);\n filterMap.forEach((filter, name) => {\n waitingFilterMap.delete(name);\n });\n inputFilterMap.forEach((value, name) => {\n waitingFilterMap.delete(name);\n });\n linkedColumnMap.forEach((column, name) => {\n waitingFilterMap.delete(name);\n });\n return waitingFilterMap;\n }\n );\n\n getInputFilterColumnMap = memoize(\n (columnMap: ColumnMap, inputFilters: InputFilter[]) => {\n const inputFilterMap = new Map<string, InputFilter>();\n for (let i = 0; i < inputFilters.length; i += 1) {\n const inputFilter = inputFilters[i];\n const { name, type } = inputFilter;\n const column = columnMap.get(name);\n if (column != null && column.type === type) {\n inputFilterMap.set(name, inputFilter);\n }\n }\n return inputFilterMap;\n }\n );\n\n getLinkedColumnMap = memoize((columnMap: ColumnMap, links: Link[]) => {\n const linkedColumnMap = new Map<string, { name: string; type: string }>();\n const panelId = LayoutUtils.getIdFromPanel(this);\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n let columnName = null;\n if (\n link.start &&\n link.start.panelId === panelId &&\n columnMap.has(link.start.columnName)\n ) {\n columnName = link.start.columnName;\n } else if (\n link.end &&\n link.end.panelId === panelId &&\n columnMap.has(link.end.columnName)\n ) {\n columnName = link.end.columnName;\n }\n\n if (columnName != null && columnMap.has(columnName)) {\n const column = columnMap.get(columnName);\n assertNotNull(column);\n linkedColumnMap.set(columnName, column);\n }\n }\n return linkedColumnMap;\n });\n\n getSelectorColumns = memoize(\n (\n columnMap: ColumnMap,\n linkedColumnMap: LinkedColumnMap,\n columnSelectionValidator?: ColumnSelectionValidator\n ) =>\n Array.from(columnMap.values()).map(column => ({\n name: column.name,\n type: column.type,\n isValid: columnSelectionValidator\n ? columnSelectionValidator(this, column)\n : false,\n isActive: linkedColumnMap.has(column.name),\n }))\n );\n\n startListeningToSource(table: TableTemplate): void {\n log.debug('startListeningToSource', table);\n\n table.addEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleSourceColumnChange\n );\n table.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n table.addEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n }\n\n stopListeningToSource(table: TableTemplate): void {\n log.debug('stopListeningToSource', table);\n\n table.removeEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleSourceColumnChange\n );\n table.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n table.removeEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n }\n\n loadModelIfNecessary(): void {\n const { isActive, isLoaded, isLoading } = this.state;\n if (isActive && !isLoaded && !isLoading) {\n this.initModel();\n }\n }\n\n isHidden(): boolean {\n const { glContainer } = this.props;\n const { isHidden } = glContainer;\n return isHidden;\n }\n\n handleColumnSelected(columnName: string): void {\n const { glEventHub } = this.props;\n const { columnMap } = this.state;\n glEventHub.emit(\n ChartEvent.COLUMN_SELECTED,\n this,\n columnMap.get(columnName)\n );\n }\n\n handleColumnMouseEnter({ type, name }: SelectorColumn): void {\n const { columnSelectionValidator } = this.props;\n log.debug('handleColumnMouseEnter', columnSelectionValidator, type, name);\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, { type, name });\n }\n\n handleColumnMouseLeave(): void {\n const { columnSelectionValidator } = this.props;\n log.debug('handleColumnMouseLeave', columnSelectionValidator);\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, undefined);\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Figure disconnected'),\n isDisconnected: true,\n });\n }\n\n handleFilterAdd(columns: InputFilter[]): void {\n for (let i = 0; i < columns.length; i += 1) {\n this.openInputFilter(columns[i]);\n }\n }\n\n handleOpenLinker(): void {\n const {\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId,\n } = this.props;\n setDashboardIsolatedLinkerPanelId(localDashboardId, undefined);\n setActiveTool(ToolType.LINKER);\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: undefined });\n this.sendColumnChange();\n this.updateColumnFilters();\n }\n\n handleLoadSuccess(model: ChartModel): void {\n log.debug('handleLoadSuccess');\n\n const { model: prevModel } = this.state;\n this.setState(\n {\n model,\n isLoaded: true,\n },\n () => {\n const { inputFilters, source } = this.props;\n const { filterMap, isLinked } = this.state;\n if (model !== prevModel) {\n this.sendColumnChange();\n this.updateColumnFilters();\n this.updateInputFilters(\n inputFilters,\n filterMap.size > 0 || model.isFilterRequired()\n );\n if (source && isLinked) {\n this.startListeningToSource(source);\n this.updateModelFromSource();\n }\n }\n }\n );\n }\n\n handleLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error('handleLoadError', error);\n this.setState({ error, isLoading: false });\n }\n\n handleSourceColumnChange(): void {\n this.updateModelFromSource();\n }\n\n handleSourceFilterChange(): void {\n this.updateModelFromSource();\n }\n\n handleSourceSortChange(): void {\n this.updateModelFromSource();\n }\n\n updateModelFromSource(): void {\n const { metadata, source } = this.props;\n const { isLinked, model } = this.state;\n if (!isLinked || !model || !source) {\n log.debug2('updateModelFromSource ignoring', isLinked, model, source);\n return;\n }\n\n // By now the model has already been loaded, which is the only other cancelable thing in pending\n this.pending.cancel();\n if (isChartPanelTableMetadata(metadata)) {\n const { settings } = metadata;\n this.pending\n .add(\n dh.plot.Figure.create(\n (ChartUtils.makeFigureSettings(\n settings,\n source\n ) as unknown) as FigureDescriptor\n )\n )\n .then(figure => {\n if (isFigureChartModel(model)) {\n model.setFigure(figure);\n }\n })\n .catch(this.handleLoadError);\n }\n\n this.updatePanelState();\n }\n\n updatePanelState(): void {\n const { sourcePanel } = this.props;\n const { panelState, filterValueMap, settings } = this.state;\n let { tableSettings } = panelState ?? {};\n if (sourcePanel) {\n // Right now just update the panel state from the source\n // If the source isn't available, just keep the state that's already saved\n if (\n hasInputFilter(sourcePanel.props) &&\n hasPanelState(sourcePanel.state)\n ) {\n const { inputFilters } = sourcePanel.props;\n const { panelState: sourcePanelState } = sourcePanel.state;\n if (sourcePanelState) {\n tableSettings = IrisGridUtils.extractTableSettings(\n sourcePanelState,\n inputFilters\n );\n }\n }\n }\n\n // eslint-disable-next-line react/no-unused-state\n this.setState({\n panelState: {\n settings,\n tableSettings,\n filterValueMap: Array.from(filterValueMap),\n },\n });\n }\n\n handleError(): void {\n // Don't want to set an error state, because the user can fix a chart error within the chart itself.\n // We're not loading anymore either so stop showing the spinner so the user can actually click those buttons.\n this.setState({ isLoading: false });\n }\n\n handleResize(): void {\n this.updateChart();\n }\n\n handleSettingsChanged(update: Partial<Settings>): void {\n this.setState(({ settings: prevSettings }) => {\n const settings = {\n ...prevSettings,\n ...update,\n };\n log.debug('Updated settings', settings);\n return { settings };\n });\n }\n\n handleHide(): void {\n this.setActive(false);\n }\n\n handleShow(): void {\n this.setActive(true);\n }\n\n handleTabBlur(): void {\n this.setActive(false);\n }\n\n handleTabFocus(): void {\n const isHidden = this.isHidden();\n this.setActive(!isHidden);\n }\n\n handleUpdate(): void {\n this.setState({ isLoading: false });\n }\n\n handleClearAllFilters(): void {\n // nuke link filter and input filter map\n // input filters only clear themselves if they are not yet empty\n this.setState({\n filterValueMap: new Map(),\n filterMap: new Map(),\n });\n this.updatePanelState();\n }\n\n /**\n * Create an input filter panel for the provided column\n * @param column The column to create the input filter for\n */\n openInputFilter(column: InputFilter): void {\n const { glEventHub } = this.props;\n const { name, type } = column;\n glEventHub.emit(InputFilterEvent.OPEN_INPUT, {\n title: `${name} Filter`,\n panelState: {\n name,\n type,\n isValueShown: true,\n },\n createNewStack: true,\n focusElement: 'input',\n });\n }\n\n setActive(isActive: boolean): void {\n this.setState({ isActive }, () => {\n if (isActive) {\n this.loadModelIfNecessary();\n this.updateChart();\n }\n });\n }\n\n sendColumnChange(): void {\n const { model } = this.state;\n if (!model) {\n return;\n }\n const { glEventHub } = this.props;\n glEventHub.emit(\n InputFilterEvent.COLUMNS_CHANGED,\n this,\n Array.from(model.getFilterColumnMap().values())\n );\n }\n\n getCoordinateForColumn(columnName: ColumnName): [number, number] | null {\n const className = ChartColumnSelectorOverlay.makeButtonClassName(\n columnName\n );\n\n if (!this.panelContainer.current) {\n return null;\n }\n\n const element = this.panelContainer.current.querySelector(`.${className}`);\n const rect = element?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n const x = rect.left + rect.width / 2;\n const y = rect.bottom;\n return [x, y];\n }\n\n /**\n * Set chart filters based on the filter map\n * @param filterMapParam Filter map\n */\n setFilterMap(\n filterMapParam: Map<string, { columnType: string; value: string }>\n ): void {\n log.debug('setFilterMap', filterMapParam);\n this.setState(state => {\n const { columnMap, filterMap } = state;\n let updatedFilterMap: null | Map<string, string> = null;\n const filterValueMap = new Map(state.filterValueMap);\n\n filterMapParam.forEach(({ columnType, value }, columnName) => {\n const column = columnMap.get(columnName);\n if (column == null || column.type !== columnType) {\n return;\n }\n filterValueMap.set(columnName, value);\n if (filterMap.get(columnName) !== value) {\n if (updatedFilterMap === null) {\n updatedFilterMap = new Map(filterMap);\n }\n updatedFilterMap.set(columnName, value);\n }\n });\n\n // Don't update filterMap unless the filters actually changed.\n // Otherwise the chart gets stuck on a spinner\n // because it never gets an update event for unchanged filters.\n return { filterValueMap, filterMap: updatedFilterMap ?? filterMap };\n });\n }\n\n unsetFilterValue(columnName: ColumnName): void {\n this.setState(state => {\n // We want to unset a value unless there's an input filter for it\n // If there's an input filter, then we want to just set it to that value\n // This way if the user has an input filter and a link, when they delete the link the input filter value takes effect\n const { inputFilters } = this.props;\n const { columnMap } = state;\n let { filterMap, filterValueMap } = state;\n if (!filterValueMap.has(columnName)) {\n return null;\n }\n\n filterValueMap = new Map(state.filterValueMap);\n filterValueMap.delete(columnName);\n\n const inputFilterMap = this.getInputFilterColumnMap(\n columnMap,\n inputFilters\n );\n\n if (inputFilterMap.has(columnName)) {\n const filterValue = filterMap.get(columnName);\n const inputFilterValue = inputFilterMap.get(columnName)?.value;\n if (inputFilterValue != null && filterValue !== inputFilterValue) {\n filterMap = new Map(state.filterMap);\n if (inputFilterValue.length > 0) {\n filterMap.set(columnName, inputFilterValue);\n } else {\n filterMap.delete(columnName);\n }\n }\n } else {\n filterMap = new Map(state.filterMap);\n filterMap.delete(columnName);\n }\n return { filterMap, filterValueMap };\n });\n }\n\n updateChangedInputFilters(\n inputFilters: InputFilter[],\n prevInputFilters: InputFilter[]\n ): void {\n const deletedInputFilters = prevInputFilters.filter(\n prevInputFilter =>\n !inputFilters.find(\n inputFilter =>\n inputFilter.name === prevInputFilter.name &&\n inputFilter.type === prevInputFilter.type\n )\n );\n if (deletedInputFilters.length > 0) {\n this.deleteInputFilters(deletedInputFilters);\n }\n\n const changedInputFilters = inputFilters.filter(\n inputFilter => !prevInputFilters.includes(inputFilter)\n );\n if (changedInputFilters.length > 0) {\n this.updateInputFilters(changedInputFilters);\n }\n }\n\n updateInputFilters(inputFilters: InputFilter[], forceUpdate = false): void {\n this.setState(state => {\n const { columnMap } = state;\n const filterValueMap = new Map(state.filterValueMap);\n const filterMap = new Map(state.filterMap);\n const update = forceUpdate ? { filterMap, filterValueMap } : {};\n\n for (let i = 0; i < inputFilters.length; i += 1) {\n const { name, type, value } = inputFilters[i];\n const column = columnMap.get(name);\n if (column != null && column.type === type) {\n if (value != null && filterMap.get(name) !== value) {\n if (value === '') {\n filterMap.delete(name);\n } else {\n filterMap.set(name, value);\n }\n update.filterMap = filterMap;\n }\n\n if (filterValueMap.has(name)) {\n // Need to unset whatever the linked value was - if they want that value again, they need to double click the link again\n filterValueMap.delete(name);\n update.filterValueMap = filterValueMap;\n }\n }\n }\n\n log.debug('updateInputFilters', update);\n return update as unknown;\n });\n }\n\n deleteInputFilters(inputFilters: InputFilter[], forceUpdate = false): void {\n this.setState(state => {\n const { columnMap, filterValueMap } = state;\n const filterMap = new Map(state.filterMap);\n let needsUpdate = forceUpdate;\n\n for (let i = 0; i < inputFilters.length; i += 1) {\n const { name, type } = inputFilters[i];\n const column = columnMap.get(name);\n if (column != null && column.type === type) {\n if (filterMap.has(name)) {\n const filterValue = filterMap.get(name);\n if (filterValueMap.has(name)) {\n const linkValue = filterValueMap.get(name);\n if (linkValue !== filterValue && linkValue != null) {\n needsUpdate = true;\n filterMap.set(name, linkValue);\n }\n } else {\n needsUpdate = true;\n filterMap.delete(name);\n }\n }\n }\n }\n\n log.debug('deleteInputFilters', needsUpdate);\n return needsUpdate ? { filterMap } : null;\n });\n }\n\n updateColumnFilters(): void {\n this.setState(({ model }) => {\n if (!model) {\n return null;\n }\n\n return { columnMap: model.getFilterColumnMap() };\n });\n }\n\n updateFilters(): void {\n const { columnMap, filterMap, model } = this.state;\n assertNotNull(model);\n const waitingInputMap = this.getWaitingInputMap(\n model.isFilterRequired(),\n columnMap,\n filterMap\n );\n model.setFilter(filterMap);\n\n if (filterMap.size > 0 && waitingInputMap.size === 0) {\n const defaultTitle = model.getDefaultTitle();\n const filterTitle = TextUtils.join(\n Array.from(filterMap.entries()).map(\n ([name, value]) => `${name}: ${value}`\n )\n );\n if (defaultTitle) {\n model.setTitle(\n `${defaultTitle}<br><span style=\"font-size: smaller\">${filterTitle}</span>`\n );\n } else {\n model.setTitle(filterTitle);\n }\n\n log.debug2('updateFilters filters set', filterMap);\n this.setState({ isLoading: true });\n } else {\n log.debug2('updateFilters waiting on inputs', waitingInputMap);\n model.setTitle(model.getDefaultTitle());\n this.setState({ isLoading: false });\n }\n\n this.updatePanelState();\n }\n\n /**\n * Removes any set filter values that are no longer part of the model\n */\n pruneFilterMaps(): void {\n this.setState(state => {\n const { columnMap } = state;\n const filterMap = new Map(state.filterMap);\n const filterValueMap = new Map(state.filterValueMap);\n const newState: Pick<\n Partial<ChartPanelState>,\n 'filterMap' | 'filterValueMap'\n > = {};\n\n state.filterValueMap.forEach((value, name) => {\n if (!columnMap.has(name)) {\n filterValueMap.delete(name);\n newState.filterValueMap = filterValueMap;\n }\n });\n state.filterMap.forEach((value, name) => {\n if (!columnMap.has(name)) {\n filterMap.delete(name);\n newState.filterMap = filterMap;\n }\n });\n return newState as unknown;\n });\n }\n\n updateChart(): void {\n if (this.chart.current) {\n this.chart.current.updateDimensions();\n }\n }\n\n render(): ReactElement {\n const {\n columnSelectionValidator,\n glContainer,\n glEventHub,\n inputFilters,\n isLinkerActive,\n links,\n metadata,\n settings,\n } = this.props;\n const {\n columnMap,\n filterMap,\n error,\n model,\n isActive,\n isDisconnected,\n isLoaded,\n isLoading,\n } = this.state;\n let name;\n if (isChartPanelTableMetadata(metadata)) {\n name = metadata.table;\n } else {\n name = metadata.figure;\n }\n const inputFilterMap = this.getInputFilterColumnMap(\n columnMap,\n inputFilters\n );\n const linkedColumnMap = this.getLinkedColumnMap(columnMap, links);\n const waitingInputMap =\n model != null\n ? this.getWaitingInputMap(\n model.isFilterRequired(),\n columnMap,\n filterMap\n )\n : new Map();\n const waitingFilterMap =\n model != null\n ? this.getWaitingFilterMap(\n model.isFilterRequired(),\n columnMap,\n filterMap,\n linkedColumnMap,\n inputFilterMap\n )\n : new Map();\n const errorMessage = error ? `Unable to open chart. ${error}` : undefined;\n const isWaitingForFilter = waitingInputMap.size > 0;\n const isSelectingColumn = columnMap.size > 0 && isLinkerActive;\n return (\n <WidgetPanel\n className={classNames('iris-chart-panel', {\n 'input-required': isWaitingForFilter,\n })}\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onHide={this.handleHide}\n onClearAllFilters={this.handleClearAllFilters}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabBlur={this.handleTabBlur}\n onTabFocus={this.handleTabFocus}\n errorMessage={errorMessage}\n isDisconnected={isDisconnected}\n isLoading={isLoading}\n isLoaded={isLoaded}\n widgetName={name}\n widgetType=\"Chart\"\n >\n <div\n ref={this.panelContainer}\n className=\"chart-panel-container h-100 w-100\"\n >\n <div className=\"chart-container h-100 w-100\">\n {isLoaded && model && (\n <Chart\n isActive={isActive}\n model={model}\n settings={settings}\n ref={this.chart}\n onDisconnect={this.handleDisconnect}\n onReconnect={this.handleReconnect}\n onUpdate={this.handleUpdate}\n onError={this.handleError}\n onSettingsChanged={this.handleSettingsChanged}\n />\n )}\n </div>\n <CSSTransition\n in={isWaitingForFilter && !isSelectingColumn && !isLoading}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <ChartFilterOverlay\n inputFilterMap={inputFilterMap}\n linkedColumnMap={linkedColumnMap}\n onAdd={this.handleFilterAdd}\n onOpenLinker={this.handleOpenLinker}\n columnMap={columnMap}\n waitingFilterMap={waitingFilterMap}\n waitingInputMap={waitingInputMap}\n />\n </CSSTransition>\n <CSSTransition\n in={isSelectingColumn}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <ChartColumnSelectorOverlay\n columns={this.getSelectorColumns(\n columnMap,\n linkedColumnMap,\n columnSelectionValidator\n )}\n onColumnSelected={this.handleColumnSelected}\n onMouseEnter={this.handleColumnMouseEnter}\n onMouseLeave={this.handleColumnMouseLeave}\n />\n </CSSTransition>\n </div>\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string; metadata: { sourcePanelId: string } }\n) => {\n const { localDashboardId, metadata } = ownProps;\n\n let sourcePanelId;\n if (metadata) {\n sourcePanelId = metadata.sourcePanelId;\n }\n const panelTableMap = getTableMapForDashboard(state, localDashboardId);\n const openedPanelMap = getOpenedPanelMapForDashboard(state, localDashboardId);\n const activeTool = getActiveTool(state);\n const isolatedLinkerPanelId = getIsolatedLinkerPanelIdForDashboard(\n state,\n localDashboardId\n );\n const isLinkerActive =\n activeTool === ToolType.LINKER && isolatedLinkerPanelId === undefined;\n return {\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n isLinkerActive,\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n source:\n sourcePanelId != null ? panelTableMap.get(sourcePanelId) : undefined,\n sourcePanel:\n sourcePanelId != null ? openedPanelMap.get(sourcePanelId) : undefined,\n settings: getSettings(state),\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n setActiveTool: setActiveToolAction,\n setDashboardIsolatedLinkerPanelId: setDashboardIsolatedLinkerPanelIdAction,\n },\n null,\n { forwardRef: true }\n)(ChartPanel);\n"],"file":"ChartPanel.js"}
|
|
@@ -206,7 +206,7 @@ declare const _default: import("react-redux").ConnectedComponent<typeof IrisGrid
|
|
|
206
206
|
onStateChange: () => void;
|
|
207
207
|
onPanelStateUpdate: () => void;
|
|
208
208
|
}, never>>, "user" | "columnSelectionValidator" | "settings" | "inputFilters" | "links" | "workspace"> & {
|
|
209
|
-
localDashboardId
|
|
209
|
+
localDashboardId?: string | undefined;
|
|
210
210
|
}>;
|
|
211
211
|
export default _default;
|
|
212
212
|
//# sourceMappingURL=IrisGridPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,SAAS,EACV,MAAM,OAAO,CAAC;AAIf,OAAO,
|
|
1
|
+
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import React, { PureComponent } from 'react';
|
|
|
10
10
|
import memoize from 'memoize-one';
|
|
11
11
|
import { connect } from 'react-redux';
|
|
12
12
|
import debounce from 'lodash.debounce';
|
|
13
|
-
import { LayoutUtils } from '@deephaven/dashboard';
|
|
13
|
+
import { DEFAULT_DASHBOARD_ID, LayoutUtils } from '@deephaven/dashboard';
|
|
14
14
|
import { AdvancedSettings, IrisGrid, IrisGridModel, IrisGridUtils, IrisGridTableModel, isIrisGridTableModelTemplate } from '@deephaven/iris-grid';
|
|
15
15
|
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
16
16
|
import Log from '@deephaven/log';
|
|
@@ -452,7 +452,7 @@ export class IrisGridPanel extends PureComponent {
|
|
|
452
452
|
handleContextMenu(obj) {
|
|
453
453
|
var _this$pluginRef$curre, _this$pluginRef$curre2, _this$pluginRef$curre3;
|
|
454
454
|
|
|
455
|
-
return (_this$pluginRef$curre = (_this$pluginRef$curre2 = (_this$pluginRef$curre3 =
|
|
455
|
+
return (_this$pluginRef$curre = (_this$pluginRef$curre2 = this.pluginRef.current) === null || _this$pluginRef$curre2 === void 0 ? void 0 : (_this$pluginRef$curre3 = _this$pluginRef$curre2.getMenu) === null || _this$pluginRef$curre3 === void 0 ? void 0 : _this$pluginRef$curre3.call(_this$pluginRef$curre2, {
|
|
456
456
|
data: obj
|
|
457
457
|
})) !== null && _this$pluginRef$curre !== void 0 ? _this$pluginRef$curre : [];
|
|
458
458
|
}
|
|
@@ -1093,10 +1093,10 @@ _defineProperty(IrisGridPanel, "displayName", 'IrisGridPanel');
|
|
|
1093
1093
|
|
|
1094
1094
|
_defineProperty(IrisGridPanel, "COMPONENT", 'IrisGridPanel');
|
|
1095
1095
|
|
|
1096
|
-
var mapStateToProps = (state,
|
|
1096
|
+
var mapStateToProps = (state, _ref6) => {
|
|
1097
1097
|
var {
|
|
1098
|
-
localDashboardId
|
|
1099
|
-
} =
|
|
1098
|
+
localDashboardId = DEFAULT_DASHBOARD_ID
|
|
1099
|
+
} = _ref6;
|
|
1100
1100
|
return {
|
|
1101
1101
|
inputFilters: getInputFiltersForDashboard(state, localDashboardId),
|
|
1102
1102
|
links: getLinksForDashboard(state, localDashboardId),
|