@deephaven/dashboard-core-plugins 1.7.1 → 1.7.2-beta.1
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/linker/Linker.js +1 -1
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.d.ts.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +2 -1
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.d.ts +1 -1
- package/dist/linker/LinkerUtils.d.ts.map +1 -1
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +5 -3
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +4 -0
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/package.json +24 -24
package/dist/linker/Linker.js
CHANGED
|
@@ -526,7 +526,7 @@ export class Linker extends Component {
|
|
|
526
526
|
end,
|
|
527
527
|
operator
|
|
528
528
|
} = links[i];
|
|
529
|
-
if (start.panelId === sourceId && end != null
|
|
529
|
+
if (start.panelId === sourceId && end != null) {
|
|
530
530
|
var _filterMap$get$filter, _filterMap$get;
|
|
531
531
|
var {
|
|
532
532
|
panelId: endPanelId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Linker.js","names":["React","Component","connect","nanoid","memoize","FadeTransition","LayoutUtils","PanelEvent","DateTimeColumnFormatter","DateUtils","TableUtils","Log","Type","FilterType","getActiveTool","getApi","getTimeZone","setActiveTool","setActiveToolAction","assertNotNull","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","setDashboardLinks","setDashboardLinksAction","addDashboardLinks","addDashboardLinksAction","deleteDashboardLinks","deleteDashboardLinksAction","setDashboardIsolatedLinkerPanelId","setDashboardIsolatedLinkerPanelIdAction","setDashboardColumnSelectionValidator","setDashboardColumnSelectionValidatorAction","ToolType","ChartEvent","IrisGridEvent","LinkerOverlayContent","LinkerUtils","isLinkablePanel","isLinkableColumn","listenForFilterColumnsChanged","listenForLinkPointSelected","listenForLinkSourceDataSelected","listenForRegisterLinkTarget","jsx","_jsx","log","module","mapState","state","ownProps","activeTool","dh","isolatedLinkerPanelId","localDashboardId","links","timeZone","connector","Linker","constructor","props","_defineProperty","Map","linkInProgress","isolateForPanelId","combinedLinks","start","push","undefined","filter","link","_link$start","_link$end","panelId","end","handleCancel","bind","handleDone","handlePanelCloned","handleColumnsChanged","handlePanelClosed","handleLayoutStateChanged","handleAllLinksDeleted","handleLinkDeleted","handleLinksUpdated","handleChartColumnSelect","handleGridColumnSelect","handleUpdateValues","handleStateChange","handleExited","handleLinkPointSelected","handleTargetRegistered","handleLinkSelected","handlePanelDragging","handlePanelDropped","isColumnSelectionValid","selectedIds","Set","isDraggingPanel","componentDidMount","layout","startListening","updateSelectionValidators","componentDidUpdate","prevProps","stopListening","DEFAULT","reset","componentDidCatch","error","info","componentWillUnmount","on","eventHub","COLUMN_SELECTED","DATA_SELECTED","STATE_CHANGED","CLONED","removerFns","CLOSE","CLOSED","DRAGGING","DROPPED","off","forEach","remove","setState","panel","column","getIdFromPanel","columnSelected","sourceId","columns","debug","deleteLinksForPanelId","linksToDelete","_ref","findColumn","deleteLinks","debug2","options","type","isIsolatedLinker","isAlwaysEnd","isOverlayShown","panelLinks","_link$start2","_link$end2","LINKER","length","isAlwaysEndPoint","arguments","overrideIsolatedLinkerPanelId","name","columnName","columnType","newLink","id","isReversed","endType","_linkInProgress$endTy","isValid","isLinkValid","finalType","existingLinkPanelId","_ref2","panelLinkEnd","existingLinkEnd","existingLinkStart","_ref3","panelLinkStart","operator","eq","addLinks","unsetFilterValueForLink","panelManager","_linkTargetPropMap$ge","linkTargetPropMap","unsetFilterValue","get","endPanel","getOpenedPanelById","setPanelFilterMap","filterMap","_linkTargetPropMap$ge2","setFilterValues","setFilterMap","clearAll","map","_ref4","isolatedLinks","_link$start3","_link$end3","linkId","find","l","handlers","delete","set","dataMap","panelFilterMap","i","_filterMap$get$filter","_filterMap$get","endPanelId","existingFilterMap","filterList","visibleIndex","startColumnIndex","isExpandable","isGrouped","value","text","concat","isDateType","dateFilterFormatter","showTimeZone","showTSeparator","defaultDateTimeFormatString","FULL_DATE_FORMAT","format","cloneConfig","cloneId","linksToAdd","cloneLinksForPanel","componentId","newLinks","forceUpdate","updateLinkInProgressType","_ref5","_objectSpread","panelOrId","tableColumn","_linkInProgress$endTy2","getComponentNameFromPanel","description","render","isLinkOverlayShown","disabled","linkerOverlayMessage","in","mountOnEnter","unmountOnExit","onExited","children","getCachedLinks","messageText","onLinkSelected","onLinkDeleted","onAllLinksDeleted","onLinksUpdated","onDone","onCancel","ConnectedLinker"],"sources":["../../src/linker/Linker.tsx"],"sourcesContent":["import React, { Component, type ErrorInfo } from 'react';\nimport { connect, type ConnectedProps } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport memoize from 'memoize-one';\nimport { FadeTransition } from '@deephaven/components';\nimport {\n LayoutUtils,\n type PanelComponent,\n PanelEvent,\n type PanelManager,\n} from '@deephaven/dashboard';\nimport type GoldenLayout from '@deephaven/golden-layout';\nimport {\n DateTimeColumnFormatter,\n DateUtils,\n type RowDataMap,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { Type as FilterType } from '@deephaven/filters';\nimport {\n getActiveTool,\n getApi,\n getTimeZone,\n setActiveTool as setActiveToolAction,\n type RootState,\n} from '@deephaven/redux';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n setDashboardLinks as setDashboardLinksAction,\n addDashboardLinks as addDashboardLinksAction,\n deleteDashboardLinks as deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId as setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator as setDashboardColumnSelectionValidatorAction,\n} from '../redux';\nimport ToolType from './ToolType';\nimport { ChartEvent, IrisGridEvent } from '../events';\nimport LinkerOverlayContent from './LinkerOverlayContent';\nimport LinkerUtils, {\n isLinkablePanel,\n type Link,\n type LinkColumn,\n type LinkFilterMap,\n type LinkType,\n isLinkableColumn,\n type LinkPointOptions,\n} from './LinkerUtils';\nimport {\n type FilterColumnSourceId,\n listenForFilterColumnsChanged,\n} from '../FilterEvents';\nimport {\n type LinkTargetProps,\n listenForLinkPointSelected,\n listenForLinkSourceDataSelected,\n listenForRegisterLinkTarget,\n} from './LinkerEvent';\n\nconst log = Log.module('Linker');\n\ninterface StateProps {\n activeTool: string;\n dh: typeof DhType;\n isolatedLinkerPanelId?: string;\n links: Link[];\n timeZone: string;\n}\n\ninterface OwnProps {\n layout: GoldenLayout;\n panelManager: PanelManager;\n localDashboardId: string;\n}\n\nconst mapState = (state: RootState, ownProps: OwnProps): StateProps => ({\n activeTool: getActiveTool(state),\n dh: getApi(state),\n isolatedLinkerPanelId: getIsolatedLinkerPanelIdForDashboard(\n state,\n ownProps.localDashboardId\n ),\n links: getLinksForDashboard(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n});\n\nconst connector = connect(mapState, {\n setActiveTool: setActiveToolAction,\n setDashboardLinks: setDashboardLinksAction,\n addDashboardLinks: addDashboardLinksAction,\n deleteDashboardLinks: deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId: setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator:\n setDashboardColumnSelectionValidatorAction,\n});\n\nexport type LinkerProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type LinkerState = {\n linkInProgress?: Link & { endType?: LinkType };\n selectedIds: Set<string>;\n isDraggingPanel: boolean;\n};\n\nexport class Linker extends Component<LinkerProps, LinkerState> {\n constructor(props: LinkerProps) {\n super(props);\n\n this.handleCancel = this.handleCancel.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handlePanelCloned = this.handlePanelCloned.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handlePanelClosed = this.handlePanelClosed.bind(this);\n this.handleLayoutStateChanged = this.handleLayoutStateChanged.bind(this);\n this.handleAllLinksDeleted = this.handleAllLinksDeleted.bind(this);\n this.handleLinkDeleted = this.handleLinkDeleted.bind(this);\n this.handleLinksUpdated = this.handleLinksUpdated.bind(this);\n this.handleChartColumnSelect = this.handleChartColumnSelect.bind(this);\n this.handleGridColumnSelect = this.handleGridColumnSelect.bind(this);\n this.handleUpdateValues = this.handleUpdateValues.bind(this);\n this.handleStateChange = this.handleStateChange.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.handleLinkPointSelected = this.handleLinkPointSelected.bind(this);\n this.handleTargetRegistered = this.handleTargetRegistered.bind(this);\n this.handleLinkSelected = this.handleLinkSelected.bind(this);\n this.handlePanelDragging = this.handlePanelDragging.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n\n this.state = {\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n isDraggingPanel: false,\n };\n }\n\n componentDidMount(): void {\n const { layout } = this.props;\n this.startListening(layout);\n this.updateSelectionValidators();\n }\n\n componentDidUpdate(prevProps: LinkerProps): void {\n const { activeTool, layout } = this.props;\n if (layout !== prevProps.layout) {\n this.stopListening(prevProps.layout);\n this.startListening(layout);\n }\n if (activeTool !== prevProps.activeTool) {\n this.updateSelectionValidators();\n if (activeTool === ToolType.DEFAULT) {\n this.reset();\n }\n }\n }\n\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n const { layout } = this.props;\n this.stopListening(layout);\n }\n\n private linkTargetPropMap: Map<string, LinkTargetProps> = new Map();\n\n private removerFns: (() => void)[] = [];\n\n startListening(layout: GoldenLayout): void {\n layout.on('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.on(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.on(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.on(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.on(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.on(PanelEvent.CLONED, this.handlePanelCloned);\n this.removerFns = [\n listenForFilterColumnsChanged(eventHub, this.handleColumnsChanged),\n listenForLinkPointSelected(eventHub, this.handleLinkPointSelected),\n listenForLinkSourceDataSelected(eventHub, this.handleUpdateValues),\n listenForRegisterLinkTarget(eventHub, this.handleTargetRegistered),\n ];\n eventHub.on(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.on(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.on(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n }\n\n stopListening(layout: GoldenLayout): void {\n layout.off('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.off(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.off(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.off(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.off(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.off(PanelEvent.CLONED, this.handlePanelCloned);\n eventHub.off(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.off(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.off(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n this.removerFns.forEach(remove => remove());\n this.removerFns = [];\n }\n\n reset(): void {\n this.setState({\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n });\n }\n\n handleCancel(): void {\n const { linkInProgress } = this.state;\n if (linkInProgress == null) {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n this.setState({ linkInProgress: undefined });\n }\n\n handleDone(): void {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n\n handleChartColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n assertNotNull(panelId);\n this.columnSelected(panelId, column, 'chartLink', true);\n }\n\n handleColumnsChanged(\n sourceId: FilterColumnSourceId,\n columns: readonly LinkColumn[] | null\n ): void {\n log.debug('handleColumnsChanged', sourceId, columns);\n const { links } = this.props;\n if (sourceId == null) {\n log.error('Invalid filter columns source id', sourceId);\n return;\n }\n\n // Columns is null when dh.ui widgets with linker capability are closed\n if (columns == null) {\n this.deleteLinksForPanelId(sourceId);\n return;\n }\n // NOTE: links need to be updated to use sourceId instead of panelId. This will be done when we implement linker for dh.ui widgets DH-18840\n // Delete links that start or end on non-existent column in the updated panel\n const linksToDelete = links.filter(\n ({ start, end }) =>\n (start.panelId === sourceId &&\n LinkerUtils.findColumn(columns, start) == null) ||\n (end != null &&\n end.panelId === sourceId &&\n LinkerUtils.findColumn(columns, end) == null)\n );\n this.deleteLinks(linksToDelete);\n }\n\n handleGridColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n if (!isLinkableColumn(column)) {\n log.debug2('Column is not filterable');\n return;\n }\n const panelId = LayoutUtils.getIdFromPanel(panel);\n assertNotNull(panelId);\n this.columnSelected(panelId, column, 'tableLink');\n }\n\n handleLinkPointSelected(\n sourceId: string,\n column: LinkColumn,\n options: LinkPointOptions\n ): void {\n const { type } = options;\n const isIsolatedLinker = type === 'filterSource';\n const isAlwaysEnd = type === 'chartLink' || type === 'filterSource';\n\n // filterSource type should open in isolated linker mode\n if (!this.isOverlayShown() && sourceId != null && isIsolatedLinker) {\n const {\n links,\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId,\n } = this.props;\n\n const panelLinks = links.filter(\n link =>\n link.start?.panelId === sourceId || link.end?.panelId === sourceId\n );\n\n // Initial click on the filter source button with linker inactive\n // Show linker in isolated mode for panel\n setActiveTool(ToolType.LINKER);\n setDashboardIsolatedLinkerPanelId(localDashboardId, sourceId);\n\n if (panelLinks.length === 0) {\n // Source not linked - start new link in isolated linker mode\n // Need to pass panelId for overrideIsolatedLinkerPanelId\n // as redux prop update at this point not yet propagated\n this.columnSelected(sourceId, column, type, isAlwaysEnd, sourceId);\n }\n return;\n }\n\n this.columnSelected(sourceId, column, type, isAlwaysEnd);\n }\n\n /**\n * Track a column selection and build the link from it.\n * @param sourceId The ID of the source for the column selection\n * @param column The column that was selected\n * @param type The type of the link point\n * @param isAlwaysEndPoint True if the selection is always the end point, even if it's the first column selected. Defaults to false.\n * @param overrideIsolatedLinkerPanelId isolatedLinkerPanelId to use when method is called before prop changes propagate\n */\n columnSelected(\n sourceId: string,\n column: LinkColumn,\n type: LinkType,\n isAlwaysEndPoint = false,\n overrideIsolatedLinkerPanelId?: string | string[]\n ): void {\n if (overrideIsolatedLinkerPanelId === undefined && !this.isOverlayShown()) {\n return;\n }\n const { isolatedLinkerPanelId } = this.props;\n const { linkInProgress } = this.state;\n const { name: columnName, type: columnType } = column;\n if (linkInProgress == null || linkInProgress.start == null) {\n const newLink: Link & { endType?: LinkType } = {\n id: nanoid(),\n start: {\n panelId: sourceId,\n columnName,\n columnType,\n },\n type: 'invalid',\n isReversed: isAlwaysEndPoint,\n };\n\n if (isAlwaysEndPoint) {\n newLink.endType = type;\n }\n\n log.debug('starting link', newLink);\n\n this.setState({ linkInProgress: newLink });\n } else {\n const { links } = this.props;\n const { start, id, isReversed = false } = linkInProgress;\n const end = {\n panelId: sourceId,\n columnName,\n columnType,\n };\n\n const isValid =\n !(isReversed && isAlwaysEndPoint) && // Cannot add a point which is only an end when we already have an end\n LinkerUtils.isLinkValid(\n isReversed ? end : start,\n isReversed ? start : end,\n overrideIsolatedLinkerPanelId ?? isolatedLinkerPanelId\n );\n\n if (!isValid) {\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n }\n\n // The end point is what determines the type\n // If the link is reversed, we already set the type on the linkInProgress\n const finalType = linkInProgress.endType ?? type;\n\n switch (finalType) {\n case 'invalid':\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n case 'filterSource': {\n // filterSource links have a limit of 1 link per target\n // New link validation passed, delete existing links before adding the new one\n const existingLinkPanelId =\n isReversed !== undefined && isReversed\n ? start.panelId\n : end.panelId;\n // In cases with multiple targets per panel (i.e. chart filters)\n // links would have to be filtered by panelId and columnName and columnType\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd }) =>\n panelLinkEnd?.panelId === existingLinkPanelId\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'chartLink': {\n const existingLinkEnd = isReversed === true ? start : end;\n const existingLinkStart = isReversed === true ? end : start;\n log.debug('creating chartlink', { existingLinkEnd, start, end });\n // Don't allow linking more than one column per source to each chart column\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd, start: panelLinkStart }) =>\n panelLinkStart?.panelId === existingLinkStart.panelId &&\n panelLinkEnd?.panelId === existingLinkEnd.panelId &&\n panelLinkEnd?.columnName === existingLinkEnd.columnName &&\n panelLinkEnd?.columnType === existingLinkEnd.columnType\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'tableLink':\n // No-op\n break;\n }\n\n // Create a completed link from link in progress\n const newLink: Link = {\n start: isReversed ? end : start,\n end: isReversed ? start : end,\n id,\n type: finalType,\n operator: FilterType.eq,\n };\n log.info('creating link', newLink);\n\n this.setState(\n { linkInProgress: undefined, selectedIds: new Set<string>([id]) },\n () => {\n // Adding link after updating state\n // otherwise both new link and linkInProgress could be rendered at the same time\n // resulting in \"multiple children with same key\" error\n this.addLinks([newLink]);\n }\n );\n }\n }\n\n unsetFilterValueForLink(link: Link): void {\n const { panelManager } = this.props;\n if (link.end) {\n const { end } = link;\n const { panelId, columnName, columnType } = end;\n const { linkTargetPropMap } = this;\n const unsetFilterValue = linkTargetPropMap.get(panelId)?.unsetFilterValue;\n if (unsetFilterValue) {\n unsetFilterValue(columnName, columnType);\n return;\n }\n\n const endPanel = panelManager.getOpenedPanelById(panelId);\n if (!endPanel) {\n log.debug(\n 'endPanel no longer exists or target is not a panel. Ignoring unsetFilterValue',\n panelId\n );\n } else if (isLinkablePanel(endPanel)) {\n endPanel.unsetFilterValue(columnName, columnType);\n } else {\n log.debug('endPanel.unsetFilterValue not implemented', endPanel);\n }\n }\n }\n\n /**\n * Set filters for a given panel ID\n * @param panelId ID of panel to set filters on\n * @param filterMap Map of column name to column type, text, and value\n */\n setPanelFilterMap(panelId: string, filterMap: LinkFilterMap): void {\n log.debug('Set filter data for panel:', panelId, filterMap);\n const { panelManager } = this.props;\n const { linkTargetPropMap } = this;\n const setFilterValues = linkTargetPropMap.get(panelId)?.setFilterValues;\n if (setFilterValues) {\n setFilterValues(filterMap);\n return;\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (!panel) {\n log.debug(\n 'panel no longer exists or target is not a panel. Ignoring setFilterMap',\n panelId\n );\n } else if (isLinkablePanel(panel)) {\n panel.setFilterMap(filterMap);\n } else {\n log.debug('panel.setFilterMap not implemented', panelId, panel);\n }\n }\n\n addLinks(links: Link[]): void {\n const { addDashboardLinks, localDashboardId } = this.props;\n addDashboardLinks(localDashboardId, links);\n }\n\n deleteLinks(links: Link[], clearAll = false): void {\n const { localDashboardId } = this.props;\n links.forEach(link => this.unsetFilterValueForLink(link));\n if (clearAll) {\n const { setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, []);\n } else if (links.length > 0) {\n const { deleteDashboardLinks } = this.props;\n deleteDashboardLinks(\n localDashboardId,\n links.map(({ id }) => id)\n );\n }\n }\n\n handleAllLinksDeleted(): void {\n const { links, isolatedLinkerPanelId } = this.props;\n if (isolatedLinkerPanelId === undefined) {\n this.deleteLinks(links, true);\n } else {\n const isolatedLinks = links.filter(\n link =>\n link?.start?.panelId === isolatedLinkerPanelId ||\n link?.end?.panelId === isolatedLinkerPanelId\n );\n this.deleteLinks(isolatedLinks);\n }\n this.reset();\n }\n\n handleLinkDeleted(linkId: string): void {\n const { links } = this.props;\n const link = links.find(l => l.id === linkId);\n if (link) {\n this.deleteLinks([link]);\n } else {\n log.error('Unable to find link to delete', linkId);\n }\n }\n\n handleTargetRegistered(\n sourceId: string,\n handlers: LinkTargetProps | null\n ): void {\n const { linkTargetPropMap } = this;\n if (handlers == null) {\n linkTargetPropMap.delete(sourceId);\n } else {\n linkTargetPropMap.set(sourceId, handlers);\n }\n }\n\n handleUpdateValues(sourceId: string, dataMap: RowDataMap): void {\n const { dh, links, timeZone } = this.props;\n // Map of panel ID to filterMap\n const panelFilterMap: Map<string, LinkFilterMap> = new Map();\n // Instead of setting filters one by one for each link,\n // combine them so they could be set in a single call per target panel\n for (let i = 0; i < links.length; i += 1) {\n const { start, end, operator } = links[i];\n if (start.panelId === sourceId && end != null && operator != null) {\n const { panelId: endPanelId, columnName, columnType } = end;\n // Map of column name to column type and filter value\n const existingFilterMap = panelFilterMap.get(endPanelId);\n const filterMap: LinkFilterMap = existingFilterMap ?? new Map();\n const filterList = filterMap.get(columnName)?.filterList ?? [];\n const {\n visibleIndex: startColumnIndex,\n isExpandable,\n isGrouped,\n } = dataMap[start.columnName];\n let { value } = dataMap[start.columnName];\n let text = `${value}`;\n if (value === null && isExpandable && isGrouped) {\n // Clear filter on empty rollup grouping columns\n value = undefined;\n }\n if (columnType != null && TableUtils.isDateType(columnType)) {\n const dateFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: DateUtils.FULL_DATE_FORMAT,\n });\n // The values are Dates for dateType values, not string like everything else\n text = dateFilterFormatter.format(value as Date);\n }\n filterList.push({ operator, text, value, startColumnIndex });\n filterMap.set(columnName, {\n columnType,\n filterList,\n });\n panelFilterMap.set(endPanelId, filterMap);\n }\n }\n\n // Apply combined filters to all target panels\n panelFilterMap.forEach((filterMap, endPanelId) => {\n this.setPanelFilterMap(endPanelId, filterMap);\n });\n }\n\n handlePanelCloned(panel: PanelComponent, cloneConfig: { id: string }): void {\n const { links } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const cloneId = cloneConfig.id;\n if (panelId != null) {\n const linksToAdd = LinkerUtils.cloneLinksForPanel(\n links,\n panelId,\n cloneId\n );\n this.addLinks(linksToAdd);\n }\n }\n\n handlePanelDragging(componentId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end } = link;\n if (start.panelId === componentId || end?.panelId === componentId) {\n this.setState({ isDraggingPanel: true });\n return;\n }\n }\n }\n\n handlePanelDropped(): void {\n this.setState({ isDraggingPanel: false });\n }\n\n handlePanelClosed(panelId: string): void {\n // Delete links on PanelEvent.CLOSE and PanelEvent.CLOSED instead of UNMOUNT\n // because the panels can get unmounted on errors and we want to keep the links if that happens\n log.debug(`Panel ${panelId} closed, deleting links.`);\n this.deleteLinksForPanelId(panelId);\n }\n\n handleLinkSelected(linkId: string): void {\n this.setState({ selectedIds: new Set<string>([linkId]) });\n }\n\n handleLinksUpdated(newLinks: Link[]): void {\n const { localDashboardId, setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, newLinks);\n }\n\n handleLayoutStateChanged(): void {\n this.forceUpdate();\n }\n\n handleStateChange(): void {\n this.forceUpdate();\n }\n\n handleExited(): void {\n // Has to be done after linker exit animation to avoid flashing non-isolated links\n const { localDashboardId, setDashboardIsolatedLinkerPanelId } = this.props;\n setDashboardIsolatedLinkerPanelId(localDashboardId, undefined);\n }\n\n /**\n * Delete all links for a provided panel ID. Needs to be done whenever a panel is closed or unmounted.\n * @param panelId The panel ID to delete links for\n */\n deleteLinksForPanelId(panelId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end, id } = link;\n if (start.panelId === panelId || end?.panelId === panelId) {\n this.handleLinkDeleted(id);\n }\n }\n }\n\n getCachedLinks = memoize(\n (\n links: Link[],\n linkInProgress: Link | undefined,\n isolateForPanelId: string | undefined\n ) => {\n const combinedLinks = [...links];\n\n if (linkInProgress != null && linkInProgress.start != null) {\n combinedLinks.push(linkInProgress);\n }\n\n if (isolateForPanelId !== undefined) {\n return combinedLinks.filter(\n link =>\n link?.start?.panelId === isolateForPanelId ||\n link?.end?.panelId === isolateForPanelId ||\n link?.end == null\n );\n }\n // Show all links in regular linker mode -- both isolated and not\n return combinedLinks;\n }\n );\n\n isOverlayShown(): boolean {\n const { activeTool } = this.props;\n return activeTool === ToolType.LINKER;\n }\n\n updateSelectionValidators(): void {\n const {\n activeTool,\n setDashboardColumnSelectionValidator,\n localDashboardId,\n } = this.props;\n switch (activeTool) {\n case ToolType.LINKER:\n setDashboardColumnSelectionValidator(\n localDashboardId,\n this.isColumnSelectionValid\n );\n break;\n default:\n setDashboardColumnSelectionValidator(localDashboardId, undefined);\n break;\n }\n }\n\n updateLinkInProgressType(type: LinkType = 'invalid'): void {\n this.setState(({ linkInProgress }) => {\n if (linkInProgress !== undefined) {\n return {\n linkInProgress: {\n ...linkInProgress,\n type,\n },\n };\n }\n return null;\n });\n }\n\n isColumnSelectionValid(\n panelOrId: PanelComponent | string,\n tableColumn: LinkColumn | undefined,\n options: LinkPointOptions\n ): boolean {\n const { linkInProgress } = this.state;\n const { isolatedLinkerPanelId } = this.props;\n // This is backwards compatibility for Grizzly Enterprise panels\n // IrisGridPanel is the only allowed start point for a link\n // The enterprise panels will not call this method with options\n // They are also JS and removed in sanluis, so figure this is best for now\n const isAlwaysEnd =\n typeof panelOrId === 'string'\n ? options.type === 'filterSource' || options.type === 'chartLink'\n : LayoutUtils.getComponentNameFromPanel(panelOrId) !== 'IrisGridPanel';\n\n if (tableColumn == null) {\n if (linkInProgress?.start != null) {\n // Link started, end point is not a valid target\n this.updateLinkInProgressType('invalid');\n }\n return false;\n }\n\n // TODO: Use preview/original type property when core/#3358 is completed\n if (!isLinkableColumn(tableColumn)) {\n log.debug2('Column is not filterable', tableColumn.description);\n if (linkInProgress?.start != null) {\n this.updateLinkInProgressType('invalid');\n }\n return false;\n }\n\n // Link not started yet - no need to update type\n if (linkInProgress?.start == null) {\n return true;\n }\n\n const { isReversed = false, start } = linkInProgress;\n const panelId =\n typeof panelOrId === 'string'\n ? panelOrId\n : LayoutUtils.getIdFromPanel(panelOrId);\n if (panelId == null) {\n return false;\n }\n\n // We've already selected an end point, so we can't select another one\n if (isReversed && isAlwaysEnd) {\n this.updateLinkInProgressType('invalid');\n return false;\n }\n\n const end = {\n panelId,\n columnName: tableColumn.name,\n columnType: tableColumn.type,\n };\n\n const isValid = isReversed\n ? LinkerUtils.isLinkValid(end, start, isolatedLinkerPanelId)\n : LinkerUtils.isLinkValid(start, end, isolatedLinkerPanelId);\n\n this.updateLinkInProgressType(\n isValid ? linkInProgress.endType ?? options.type : 'invalid'\n );\n\n return isValid;\n }\n\n render(): JSX.Element | null {\n const { links, isolatedLinkerPanelId, panelManager } = this.props;\n const { linkInProgress, selectedIds, isDraggingPanel } = this.state;\n\n const isLinkOverlayShown = this.isOverlayShown();\n const disabled = linkInProgress != null && linkInProgress.start != null;\n const linkerOverlayMessage =\n isolatedLinkerPanelId === undefined\n ? 'Click a column source, then click a column target to create a filter link. The filter comparison operator used by a selected link can be changed. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.'\n : 'Create a link between the source column button and a table column by clicking on one, then the other. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.';\n\n return !isDraggingPanel ? (\n <FadeTransition\n in={isLinkOverlayShown}\n mountOnEnter\n unmountOnExit\n onExited={this.handleExited}\n >\n <LinkerOverlayContent\n disabled={disabled}\n panelManager={panelManager}\n links={this.getCachedLinks(\n links,\n linkInProgress,\n isolatedLinkerPanelId\n )}\n selectedIds={selectedIds}\n messageText={linkerOverlayMessage}\n onLinkSelected={this.handleLinkSelected}\n onLinkDeleted={this.handleLinkDeleted}\n onAllLinksDeleted={this.handleAllLinksDeleted}\n onLinksUpdated={this.handleLinksUpdated}\n onDone={this.handleDone}\n onCancel={this.handleCancel}\n linkTargetPropMap={this.linkTargetPropMap}\n />\n </FadeTransition>\n ) : null;\n }\n}\n\nconst ConnectedLinker = connector(Linker);\n\nexport default ConnectedLinker;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAwB,OAAO;AACxD,SAASC,OAAO,QAA6B,aAAa;AAC1D,SAASC,MAAM,QAAQ,QAAQ;AAC/B,OAAOC,OAAO,MAAM,aAAa;AACjC,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SACEC,WAAW,EAEXC,UAAU,QAEL,sBAAsB;AAE7B,SACEC,uBAAuB,EACvBC,SAAS,EAETC,UAAU,QACL,wBAAwB;AAE/B,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,IAAI,IAAIC,UAAU,QAAQ,oBAAoB;AACvD,SACEC,aAAa,EACbC,MAAM,EACNC,WAAW,EACXC,aAAa,IAAIC,mBAAmB,QAE/B,kBAAkB;AACzB,SAASC,aAAa,QAAQ,kBAAkB;AAAC,SAE/CC,oCAAoC,EACpCC,oBAAoB,EACpBC,iBAAiB,IAAIC,uBAAuB,EAC5CC,iBAAiB,IAAIC,uBAAuB,EAC5CC,oBAAoB,IAAIC,0BAA0B,EAClDC,iCAAiC,IAAIC,uCAAuC,EAC5EC,oCAAoC,IAAIC,0CAA0C;AAAA,OAE7EC,QAAQ;AAAA,SACNC,UAAU,EAAEC,aAAa;AAAA,OAC3BC,oBAAoB;AAAA,OACpBC,WAAW,IAChBC,eAAe,EAKfC,gBAAgB;AAAA,SAKhBC,6BAA6B;AAAA,SAI7BC,0BAA0B,EAC1BC,+BAA+B,EAC/BC,2BAA2B;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAG7B,IAAMC,GAAG,GAAGlC,GAAG,CAACmC,MAAM,CAAC,QAAQ,CAAC;AAgBhC,IAAMC,QAAQ,GAAGA,CAACC,KAAgB,EAAEC,QAAkB,MAAkB;EACtEC,UAAU,EAAEpC,aAAa,CAACkC,KAAK,CAAC;EAChCG,EAAE,EAAEpC,MAAM,CAACiC,KAAK,CAAC;EACjBI,qBAAqB,EAAEhC,oCAAoC,CACzD4B,KAAK,EACLC,QAAQ,CAACI,gBACX,CAAC;EACDC,KAAK,EAAEjC,oBAAoB,CAAC2B,KAAK,EAAEC,QAAQ,CAACI,gBAAgB,CAAC;EAC7DE,QAAQ,EAAEvC,WAAW,CAACgC,KAAK;AAC7B,CAAC,CAAC;AAEF,IAAMQ,SAAS,GAAGtD,OAAO,CAAC6C,QAAQ,EAAE;EAClC9B,aAAa,EAAEC,mBAAmB;EAClCI,iBAAiB,EAAEC,uBAAuB;EAC1CC,iBAAiB,EAAEC,uBAAuB;EAC1CC,oBAAoB,EAAEC,0BAA0B;EAChDC,iCAAiC,EAAEC,uCAAuC;EAC1EC,oCAAoC,EAClCC;AACJ,CAAC,CAAC;AAYF,OAAO,MAAM0B,MAAM,SAASxD,SAAS,CAA2B;EAC9DyD,WAAWA,CAACC,KAAkB,EAAE;IAC9B,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA,4BA2D2C,IAAIC,GAAG,CAAC,CAAC;IAAAD,eAAA,qBAE9B,EAAE;IAAAA,eAAA,yBA8ftBxD,OAAO,CACtB,CACEkD,KAAa,EACbQ,cAAgC,EAChCC,iBAAqC,KAClC;MACH,IAAMC,aAAa,GAAG,CAAC,GAAGV,KAAK,CAAC;MAEhC,IAAIQ,cAAc,IAAI,IAAI,IAAIA,cAAc,CAACG,KAAK,IAAI,IAAI,EAAE;QAC1DD,aAAa,CAACE,IAAI,CAACJ,cAAc,CAAC;MACpC;MAEA,IAAIC,iBAAiB,KAAKI,SAAS,EAAE;QACnC,OAAOH,aAAa,CAACI,MAAM,CACzBC,IAAI;UAAA,IAAAC,WAAA,EAAAC,SAAA;UAAA,OACF,CAAAF,IAAI,aAAJA,IAAI,wBAAAC,WAAA,GAAJD,IAAI,CAAEJ,KAAK,cAAAK,WAAA,uBAAXA,WAAA,CAAaE,OAAO,MAAKT,iBAAiB,IAC1C,CAAAM,IAAI,aAAJA,IAAI,wBAAAE,SAAA,GAAJF,IAAI,CAAEI,GAAG,cAAAF,SAAA,uBAATA,SAAA,CAAWC,OAAO,MAAKT,iBAAiB,IACxC,CAAAM,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEI,GAAG,KAAI,IAAI;QAAA,CACrB,CAAC;MACH;MACA;MACA,OAAOT,aAAa;IACtB,CACF,CAAC;IAhlBC,IAAI,CAACU,YAAY,GAAG,IAAI,CAACA,YAAY,CAACC,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACC,UAAU,GAAG,IAAI,CAACA,UAAU,CAACD,IAAI,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACE,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACF,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACG,oBAAoB,GAAG,IAAI,CAACA,oBAAoB,CAACH,IAAI,CAAC,IAAI,CAAC;IAChE,IAAI,CAACI,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACJ,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACK,wBAAwB,GAAG,IAAI,CAACA,wBAAwB,CAACL,IAAI,CAAC,IAAI,CAAC;IACxE,IAAI,CAACM,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACN,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACO,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACP,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACQ,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACR,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACS,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACT,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACU,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACV,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAACW,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAACX,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACY,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACZ,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACa,YAAY,GAAG,IAAI,CAACA,YAAY,CAACb,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACc,uBAAuB,GAAG,IAAI,CAACA,uBAAuB,CAACd,IAAI,CAAC,IAAI,CAAC;IACtE,IAAI,CAACe,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACf,IAAI,CAAC,IAAI,CAAC;IACpE,IAAI,CAACgB,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAAChB,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACiB,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACjB,IAAI,CAAC,IAAI,CAAC;IAC9D,IAAI,CAACkB,kBAAkB,GAAG,IAAI,CAACA,kBAAkB,CAAClB,IAAI,CAAC,IAAI,CAAC;IAC5D,IAAI,CAACmB,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACnB,IAAI,CAAC,IAAI,CAAC;IAEpE,IAAI,CAAC3B,KAAK,GAAG;MACXc,cAAc,EAAEK,SAAS;MACzB4B,WAAW,EAAE,IAAIC,GAAG,CAAS,CAAC;MAC9BC,eAAe,EAAE;IACnB,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAS;IACxB,IAAM;MAAEC;IAAO,CAAC,GAAG,IAAI,CAACxC,KAAK;IAC7B,IAAI,CAACyC,cAAc,CAACD,MAAM,CAAC;IAC3B,IAAI,CAACE,yBAAyB,CAAC,CAAC;EAClC;EAEAC,kBAAkBA,CAACC,SAAsB,EAAQ;IAC/C,IAAM;MAAErD,UAAU;MAAEiD;IAAO,CAAC,GAAG,IAAI,CAACxC,KAAK;IACzC,IAAIwC,MAAM,KAAKI,SAAS,CAACJ,MAAM,EAAE;MAC/B,IAAI,CAACK,aAAa,CAACD,SAAS,CAACJ,MAAM,CAAC;MACpC,IAAI,CAACC,cAAc,CAACD,MAAM,CAAC;IAC7B;IACA,IAAIjD,UAAU,KAAKqD,SAAS,CAACrD,UAAU,EAAE;MACvC,IAAI,CAACmD,yBAAyB,CAAC,CAAC;MAChC,IAAInD,UAAU,KAAKlB,QAAQ,CAACyE,OAAO,EAAE;QACnC,IAAI,CAACC,KAAK,CAAC,CAAC;MACd;IACF;EACF;EAEAC,iBAAiBA,CAACC,KAAY,EAAEC,IAAe,EAAQ;IACrDhE,GAAG,CAAC+D,KAAK,CAAC,mBAAmB,EAAEA,KAAK,EAAEC,IAAI,CAAC;EAC7C;EAEAC,oBAAoBA,CAAA,EAAS;IAC3B,IAAM;MAAEX;IAAO,CAAC,GAAG,IAAI,CAACxC,KAAK;IAC7B,IAAI,CAAC6C,aAAa,CAACL,MAAM,CAAC;EAC5B;EAMAC,cAAcA,CAACD,MAAoB,EAAQ;IACzCA,MAAM,CAACY,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC/B,wBAAwB,CAAC;IAExD,IAAM;MAAEgC;IAAS,CAAC,GAAGb,MAAM;IAC3Ba,QAAQ,CAACD,EAAE,CAAC7E,aAAa,CAAC+E,eAAe,EAAE,IAAI,CAAC5B,sBAAsB,CAAC;IACvE2B,QAAQ,CAACD,EAAE,CAAC7E,aAAa,CAACgF,aAAa,EAAE,IAAI,CAAC5B,kBAAkB,CAAC;IACjE0B,QAAQ,CAACD,EAAE,CAAC7E,aAAa,CAACiF,aAAa,EAAE,IAAI,CAAC5B,iBAAiB,CAAC;IAChEyB,QAAQ,CAACD,EAAE,CAAC9E,UAAU,CAACgF,eAAe,EAAE,IAAI,CAAC7B,uBAAuB,CAAC;IACrE4B,QAAQ,CAACD,EAAE,CAACxG,UAAU,CAAC6G,MAAM,EAAE,IAAI,CAACvC,iBAAiB,CAAC;IACtD,IAAI,CAACwC,UAAU,GAAG,CAChB9E,6BAA6B,CAACyE,QAAQ,EAAE,IAAI,CAAClC,oBAAoB,CAAC,EAClEtC,0BAA0B,CAACwE,QAAQ,EAAE,IAAI,CAACvB,uBAAuB,CAAC,EAClEhD,+BAA+B,CAACuE,QAAQ,EAAE,IAAI,CAAC1B,kBAAkB,CAAC,EAClE5C,2BAA2B,CAACsE,QAAQ,EAAE,IAAI,CAACtB,sBAAsB,CAAC,CACnE;IACDsB,QAAQ,CAACD,EAAE,CAACxG,UAAU,CAAC+G,KAAK,EAAE,IAAI,CAACvC,iBAAiB,CAAC;IACrDiC,QAAQ,CAACD,EAAE,CAACxG,UAAU,CAACgH,MAAM,EAAE,IAAI,CAACxC,iBAAiB,CAAC;IACtDiC,QAAQ,CAACD,EAAE,CAACxG,UAAU,CAACiH,QAAQ,EAAE,IAAI,CAAC5B,mBAAmB,CAAC;IAC1DoB,QAAQ,CAACD,EAAE,CAACxG,UAAU,CAACkH,OAAO,EAAE,IAAI,CAAC5B,kBAAkB,CAAC;EAC1D;EAEAW,aAAaA,CAACL,MAAoB,EAAQ;IACxCA,MAAM,CAACuB,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC1C,wBAAwB,CAAC;IAEzD,IAAM;MAAEgC;IAAS,CAAC,GAAGb,MAAM;IAC3Ba,QAAQ,CAACU,GAAG,CAACxF,aAAa,CAAC+E,eAAe,EAAE,IAAI,CAAC5B,sBAAsB,CAAC;IACxE2B,QAAQ,CAACU,GAAG,CAACxF,aAAa,CAACgF,aAAa,EAAE,IAAI,CAAC5B,kBAAkB,CAAC;IAClE0B,QAAQ,CAACU,GAAG,CAACxF,aAAa,CAACiF,aAAa,EAAE,IAAI,CAAC5B,iBAAiB,CAAC;IACjEyB,QAAQ,CAACU,GAAG,CAACzF,UAAU,CAACgF,eAAe,EAAE,IAAI,CAAC7B,uBAAuB,CAAC;IACtE4B,QAAQ,CAACU,GAAG,CAACnH,UAAU,CAAC6G,MAAM,EAAE,IAAI,CAACvC,iBAAiB,CAAC;IACvDmC,QAAQ,CAACU,GAAG,CAACnH,UAAU,CAAC+G,KAAK,EAAE,IAAI,CAACvC,iBAAiB,CAAC;IACtDiC,QAAQ,CAACU,GAAG,CAACnH,UAAU,CAACgH,MAAM,EAAE,IAAI,CAACxC,iBAAiB,CAAC;IACvDiC,QAAQ,CAACU,GAAG,CAACnH,UAAU,CAACiH,QAAQ,EAAE,IAAI,CAAC5B,mBAAmB,CAAC;IAC3DoB,QAAQ,CAACU,GAAG,CAACnH,UAAU,CAACkH,OAAO,EAAE,IAAI,CAAC5B,kBAAkB,CAAC;IACzD,IAAI,CAACwB,UAAU,CAACM,OAAO,CAACC,MAAM,IAAIA,MAAM,CAAC,CAAC,CAAC;IAC3C,IAAI,CAACP,UAAU,GAAG,EAAE;EACtB;EAEAX,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACmB,QAAQ,CAAC;MACZ/D,cAAc,EAAEK,SAAS;MACzB4B,WAAW,EAAE,IAAIC,GAAG,CAAS;IAC/B,CAAC,CAAC;EACJ;EAEAtB,YAAYA,CAAA,EAAS;IACnB,IAAM;MAAEZ;IAAe,CAAC,GAAG,IAAI,CAACd,KAAK;IACrC,IAAIc,cAAc,IAAI,IAAI,EAAE;MAC1B,IAAM;QAAE7C;MAAc,CAAC,GAAG,IAAI,CAAC0C,KAAK;MACpC1C,aAAa,CAACe,QAAQ,CAACyE,OAAO,CAAC;IACjC;IACA,IAAI,CAACoB,QAAQ,CAAC;MAAE/D,cAAc,EAAEK;IAAU,CAAC,CAAC;EAC9C;EAEAS,UAAUA,CAAA,EAAS;IACjB,IAAM;MAAE3D;IAAc,CAAC,GAAG,IAAI,CAAC0C,KAAK;IACpC1C,aAAa,CAACe,QAAQ,CAACyE,OAAO,CAAC;EACjC;EAEArB,uBAAuBA,CAAC0C,KAAqB,EAAEC,MAAkB,EAAQ;IACvE,IAAMvD,OAAO,GAAGlE,WAAW,CAAC0H,cAAc,CAACF,KAAK,CAAC;IACjD3G,aAAa,CAACqD,OAAO,CAAC;IACtB,IAAI,CAACyD,cAAc,CAACzD,OAAO,EAAEuD,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC;EACzD;EAEAjD,oBAAoBA,CAClBoD,QAA8B,EAC9BC,OAAqC,EAC/B;IACNtF,GAAG,CAACuF,KAAK,CAAC,sBAAsB,EAAEF,QAAQ,EAAEC,OAAO,CAAC;IACpD,IAAM;MAAE7E;IAAM,CAAC,GAAG,IAAI,CAACK,KAAK;IAC5B,IAAIuE,QAAQ,IAAI,IAAI,EAAE;MACpBrF,GAAG,CAAC+D,KAAK,CAAC,kCAAkC,EAAEsB,QAAQ,CAAC;MACvD;IACF;;IAEA;IACA,IAAIC,OAAO,IAAI,IAAI,EAAE;MACnB,IAAI,CAACE,qBAAqB,CAACH,QAAQ,CAAC;MACpC;IACF;IACA;IACA;IACA,IAAMI,aAAa,GAAGhF,KAAK,CAACc,MAAM,CAChCmE,IAAA;MAAA,IAAC;QAAEtE,KAAK;QAAEQ;MAAI,CAAC,GAAA8D,IAAA;MAAA,OACZtE,KAAK,CAACO,OAAO,KAAK0D,QAAQ,IACzB9F,WAAW,CAACoG,UAAU,CAACL,OAAO,EAAElE,KAAK,CAAC,IAAI,IAAI,IAC/CQ,GAAG,IAAI,IAAI,IACVA,GAAG,CAACD,OAAO,KAAK0D,QAAQ,IACxB9F,WAAW,CAACoG,UAAU,CAACL,OAAO,EAAE1D,GAAG,CAAC,IAAI,IAAK;IAAA,CACnD,CAAC;IACD,IAAI,CAACgE,WAAW,CAACH,aAAa,CAAC;EACjC;EAEAjD,sBAAsBA,CAACyC,KAAqB,EAAEC,MAAkB,EAAQ;IACtE,IAAI,CAACzF,gBAAgB,CAACyF,MAAM,CAAC,EAAE;MAC7BlF,GAAG,CAAC6F,MAAM,CAAC,0BAA0B,CAAC;MACtC;IACF;IACA,IAAMlE,OAAO,GAAGlE,WAAW,CAAC0H,cAAc,CAACF,KAAK,CAAC;IACjD3G,aAAa,CAACqD,OAAO,CAAC;IACtB,IAAI,CAACyD,cAAc,CAACzD,OAAO,EAAEuD,MAAM,EAAE,WAAW,CAAC;EACnD;EAEAtC,uBAAuBA,CACrByC,QAAgB,EAChBH,MAAkB,EAClBY,OAAyB,EACnB;IACN,IAAM;MAAEC;IAAK,CAAC,GAAGD,OAAO;IACxB,IAAME,gBAAgB,GAAGD,IAAI,KAAK,cAAc;IAChD,IAAME,WAAW,GAAGF,IAAI,KAAK,WAAW,IAAIA,IAAI,KAAK,cAAc;;IAEnE;IACA,IAAI,CAAC,IAAI,CAACG,cAAc,CAAC,CAAC,IAAIb,QAAQ,IAAI,IAAI,IAAIW,gBAAgB,EAAE;MAClE,IAAM;QACJvF,KAAK;QACLD,gBAAgB;QAChBpC,aAAa;QACbW;MACF,CAAC,GAAG,IAAI,CAAC+B,KAAK;MAEd,IAAMqF,UAAU,GAAG1F,KAAK,CAACc,MAAM,CAC7BC,IAAI;QAAA,IAAA4E,YAAA,EAAAC,UAAA;QAAA,OACF,EAAAD,YAAA,GAAA5E,IAAI,CAACJ,KAAK,cAAAgF,YAAA,uBAAVA,YAAA,CAAYzE,OAAO,MAAK0D,QAAQ,IAAI,EAAAgB,UAAA,GAAA7E,IAAI,CAACI,GAAG,cAAAyE,UAAA,uBAARA,UAAA,CAAU1E,OAAO,MAAK0D,QAAQ;MAAA,CACtE,CAAC;;MAED;MACA;MACAjH,aAAa,CAACe,QAAQ,CAACmH,MAAM,CAAC;MAC9BvH,iCAAiC,CAACyB,gBAAgB,EAAE6E,QAAQ,CAAC;MAE7D,IAAIc,UAAU,CAACI,MAAM,KAAK,CAAC,EAAE;QAC3B;QACA;QACA;QACA,IAAI,CAACnB,cAAc,CAACC,QAAQ,EAAEH,MAAM,EAAEa,IAAI,EAAEE,WAAW,EAAEZ,QAAQ,CAAC;MACpE;MACA;IACF;IAEA,IAAI,CAACD,cAAc,CAACC,QAAQ,EAAEH,MAAM,EAAEa,IAAI,EAAEE,WAAW,CAAC;EAC1D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEb,cAAcA,CACZC,QAAgB,EAChBH,MAAkB,EAClBa,IAAc,EAGR;IAAA,IAFNS,gBAAgB,GAAAC,SAAA,CAAAF,MAAA,QAAAE,SAAA,QAAAnF,SAAA,GAAAmF,SAAA,MAAG,KAAK;IAAA,IACxBC,6BAAiD,GAAAD,SAAA,CAAAF,MAAA,OAAAE,SAAA,MAAAnF,SAAA;IAEjD,IAAIoF,6BAA6B,KAAKpF,SAAS,IAAI,CAAC,IAAI,CAAC4E,cAAc,CAAC,CAAC,EAAE;MACzE;IACF;IACA,IAAM;MAAE3F;IAAsB,CAAC,GAAG,IAAI,CAACO,KAAK;IAC5C,IAAM;MAAEG;IAAe,CAAC,GAAG,IAAI,CAACd,KAAK;IACrC,IAAM;MAAEwG,IAAI,EAAEC,UAAU;MAAEb,IAAI,EAAEc;IAAW,CAAC,GAAG3B,MAAM;IACrD,IAAIjE,cAAc,IAAI,IAAI,IAAIA,cAAc,CAACG,KAAK,IAAI,IAAI,EAAE;MAC1D,IAAM0F,OAAsC,GAAG;QAC7CC,EAAE,EAAEzJ,MAAM,CAAC,CAAC;QACZ8D,KAAK,EAAE;UACLO,OAAO,EAAE0D,QAAQ;UACjBuB,UAAU;UACVC;QACF,CAAC;QACDd,IAAI,EAAE,SAAS;QACfiB,UAAU,EAAER;MACd,CAAC;MAED,IAAIA,gBAAgB,EAAE;QACpBM,OAAO,CAACG,OAAO,GAAGlB,IAAI;MACxB;MAEA/F,GAAG,CAACuF,KAAK,CAAC,eAAe,EAAEuB,OAAO,CAAC;MAEnC,IAAI,CAAC9B,QAAQ,CAAC;QAAE/D,cAAc,EAAE6F;MAAQ,CAAC,CAAC;IAC5C,CAAC,MAAM;MAAA,IAAAI,qBAAA;MACL,IAAM;QAAEzG;MAAM,CAAC,GAAG,IAAI,CAACK,KAAK;MAC5B,IAAM;QAAEM,KAAK;QAAE2F,EAAE;QAAEC,UAAU,GAAG;MAAM,CAAC,GAAG/F,cAAc;MACxD,IAAMW,GAAG,GAAG;QACVD,OAAO,EAAE0D,QAAQ;QACjBuB,UAAU;QACVC;MACF,CAAC;MAED,IAAMM,OAAO,GACX,EAAEH,UAAU,IAAIR,gBAAgB,CAAC;MAAI;MACrCjH,WAAW,CAAC6H,WAAW,CACrBJ,UAAU,GAAGpF,GAAG,GAAGR,KAAK,EACxB4F,UAAU,GAAG5F,KAAK,GAAGQ,GAAG,EACxB8E,6BAA6B,aAA7BA,6BAA6B,cAA7BA,6BAA6B,GAAInG,qBACnC,CAAC;MAEH,IAAI,CAAC4G,OAAO,EAAE;QACZnH,GAAG,CAACuF,KAAK,CAAC,gCAAgC,EAAEtE,cAAc,EAAEW,GAAG,CAAC;QAChE;MACF;;MAEA;MACA;MACA,IAAMyF,SAAS,IAAAH,qBAAA,GAAGjG,cAAc,CAACgG,OAAO,cAAAC,qBAAA,cAAAA,qBAAA,GAAInB,IAAI;MAEhD,QAAQsB,SAAS;QACf,KAAK,SAAS;UACZrH,GAAG,CAACuF,KAAK,CAAC,gCAAgC,EAAEtE,cAAc,EAAEW,GAAG,CAAC;UAChE;QACF,KAAK,cAAc;UAAE;YACnB;YACA;YACA,IAAM0F,mBAAmB,GACvBN,UAAU,KAAK1F,SAAS,IAAI0F,UAAU,GAClC5F,KAAK,CAACO,OAAO,GACbC,GAAG,CAACD,OAAO;YACjB;YACA;YACA,IAAM8D,aAAa,GAAGhF,KAAK,CAACc,MAAM,CAChCgG,KAAA;cAAA,IAAC;gBAAE3F,GAAG,EAAE4F;cAAa,CAAC,GAAAD,KAAA;cAAA,OACpB,CAAAC,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAE7F,OAAO,MAAK2F,mBAAmB;YAAA,CACjD,CAAC;YACD,IAAI,CAAC1B,WAAW,CAACH,aAAa,CAAC;YAC/B;UACF;QACA,KAAK,WAAW;UAAE;YAChB,IAAMgC,eAAe,GAAGT,UAAU,KAAK,IAAI,GAAG5F,KAAK,GAAGQ,GAAG;YACzD,IAAM8F,iBAAiB,GAAGV,UAAU,KAAK,IAAI,GAAGpF,GAAG,GAAGR,KAAK;YAC3DpB,GAAG,CAACuF,KAAK,CAAC,oBAAoB,EAAE;cAAEkC,eAAe;cAAErG,KAAK;cAAEQ;YAAI,CAAC,CAAC;YAChE;YACA,IAAM6D,cAAa,GAAGhF,KAAK,CAACc,MAAM,CAChCoG,KAAA;cAAA,IAAC;gBAAE/F,GAAG,EAAE4F,YAAY;gBAAEpG,KAAK,EAAEwG;cAAe,CAAC,GAAAD,KAAA;cAAA,OAC3C,CAAAC,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEjG,OAAO,MAAK+F,iBAAiB,CAAC/F,OAAO,IACrD,CAAA6F,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAE7F,OAAO,MAAK8F,eAAe,CAAC9F,OAAO,IACjD,CAAA6F,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEZ,UAAU,MAAKa,eAAe,CAACb,UAAU,IACvD,CAAAY,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEX,UAAU,MAAKY,eAAe,CAACZ,UAAU;YAAA,CAC3D,CAAC;YACD,IAAI,CAACjB,WAAW,CAACH,cAAa,CAAC;YAC/B;UACF;QACA,KAAK,WAAW;UACd;UACA;MACJ;;MAEA;MACA,IAAMqB,QAAa,GAAG;QACpB1F,KAAK,EAAE4F,UAAU,GAAGpF,GAAG,GAAGR,KAAK;QAC/BQ,GAAG,EAAEoF,UAAU,GAAG5F,KAAK,GAAGQ,GAAG;QAC7BmF,EAAE;QACFhB,IAAI,EAAEsB,SAAS;QACfQ,QAAQ,EAAE7J,UAAU,CAAC8J;MACvB,CAAC;MACD9H,GAAG,CAACgE,IAAI,CAAC,eAAe,EAAE8C,QAAO,CAAC;MAElC,IAAI,CAAC9B,QAAQ,CACX;QAAE/D,cAAc,EAAEK,SAAS;QAAE4B,WAAW,EAAE,IAAIC,GAAG,CAAS,CAAC4D,EAAE,CAAC;MAAE,CAAC,EACjE,MAAM;QACJ;QACA;QACA;QACA,IAAI,CAACgB,QAAQ,CAAC,CAACjB,QAAO,CAAC,CAAC;MAC1B,CACF,CAAC;IACH;EACF;EAEAkB,uBAAuBA,CAACxG,IAAU,EAAQ;IACxC,IAAM;MAAEyG;IAAa,CAAC,GAAG,IAAI,CAACnH,KAAK;IACnC,IAAIU,IAAI,CAACI,GAAG,EAAE;MAAA,IAAAsG,qBAAA;MACZ,IAAM;QAAEtG;MAAI,CAAC,GAAGJ,IAAI;MACpB,IAAM;QAAEG,OAAO;QAAEiF,UAAU;QAAEC;MAAW,CAAC,GAAGjF,GAAG;MAC/C,IAAM;QAAEuG;MAAkB,CAAC,GAAG,IAAI;MAClC,IAAMC,gBAAgB,IAAAF,qBAAA,GAAGC,iBAAiB,CAACE,GAAG,CAAC1G,OAAO,CAAC,cAAAuG,qBAAA,uBAA9BA,qBAAA,CAAgCE,gBAAgB;MACzE,IAAIA,gBAAgB,EAAE;QACpBA,gBAAgB,CAACxB,UAAU,EAAEC,UAAU,CAAC;QACxC;MACF;MAEA,IAAMyB,QAAQ,GAAGL,YAAY,CAACM,kBAAkB,CAAC5G,OAAO,CAAC;MACzD,IAAI,CAAC2G,QAAQ,EAAE;QACbtI,GAAG,CAACuF,KAAK,CACP,+EAA+E,EAC/E5D,OACF,CAAC;MACH,CAAC,MAAM,IAAInC,eAAe,CAAC8I,QAAQ,CAAC,EAAE;QACpCA,QAAQ,CAACF,gBAAgB,CAACxB,UAAU,EAAEC,UAAU,CAAC;MACnD,CAAC,MAAM;QACL7G,GAAG,CAACuF,KAAK,CAAC,2CAA2C,EAAE+C,QAAQ,CAAC;MAClE;IACF;EACF;;EAEA;AACF;AACA;AACA;AACA;EACEE,iBAAiBA,CAAC7G,OAAe,EAAE8G,SAAwB,EAAQ;IAAA,IAAAC,sBAAA;IACjE1I,GAAG,CAACuF,KAAK,CAAC,4BAA4B,EAAE5D,OAAO,EAAE8G,SAAS,CAAC;IAC3D,IAAM;MAAER;IAAa,CAAC,GAAG,IAAI,CAACnH,KAAK;IACnC,IAAM;MAAEqH;IAAkB,CAAC,GAAG,IAAI;IAClC,IAAMQ,eAAe,IAAAD,sBAAA,GAAGP,iBAAiB,CAACE,GAAG,CAAC1G,OAAO,CAAC,cAAA+G,sBAAA,uBAA9BA,sBAAA,CAAgCC,eAAe;IACvE,IAAIA,eAAe,EAAE;MACnBA,eAAe,CAACF,SAAS,CAAC;MAC1B;IACF;IAEA,IAAMxD,KAAK,GAAGgD,YAAY,CAACM,kBAAkB,CAAC5G,OAAO,CAAC;IACtD,IAAI,CAACsD,KAAK,EAAE;MACVjF,GAAG,CAACuF,KAAK,CACP,wEAAwE,EACxE5D,OACF,CAAC;IACH,CAAC,MAAM,IAAInC,eAAe,CAACyF,KAAK,CAAC,EAAE;MACjCA,KAAK,CAAC2D,YAAY,CAACH,SAAS,CAAC;IAC/B,CAAC,MAAM;MACLzI,GAAG,CAACuF,KAAK,CAAC,oCAAoC,EAAE5D,OAAO,EAAEsD,KAAK,CAAC;IACjE;EACF;EAEA8C,QAAQA,CAACtH,KAAa,EAAQ;IAC5B,IAAM;MAAE9B,iBAAiB;MAAE6B;IAAiB,CAAC,GAAG,IAAI,CAACM,KAAK;IAC1DnC,iBAAiB,CAAC6B,gBAAgB,EAAEC,KAAK,CAAC;EAC5C;EAEAmF,WAAWA,CAACnF,KAAa,EAA0B;IAAA,IAAxBoI,QAAQ,GAAApC,SAAA,CAAAF,MAAA,QAAAE,SAAA,QAAAnF,SAAA,GAAAmF,SAAA,MAAG,KAAK;IACzC,IAAM;MAAEjG;IAAiB,CAAC,GAAG,IAAI,CAACM,KAAK;IACvCL,KAAK,CAACqE,OAAO,CAACtD,IAAI,IAAI,IAAI,CAACwG,uBAAuB,CAACxG,IAAI,CAAC,CAAC;IACzD,IAAIqH,QAAQ,EAAE;MACZ,IAAM;QAAEpK;MAAkB,CAAC,GAAG,IAAI,CAACqC,KAAK;MACxCrC,iBAAiB,CAAC+B,gBAAgB,EAAE,EAAE,CAAC;IACzC,CAAC,MAAM,IAAIC,KAAK,CAAC8F,MAAM,GAAG,CAAC,EAAE;MAC3B,IAAM;QAAE1H;MAAqB,CAAC,GAAG,IAAI,CAACiC,KAAK;MAC3CjC,oBAAoB,CAClB2B,gBAAgB,EAChBC,KAAK,CAACqI,GAAG,CAACC,KAAA;QAAA,IAAC;UAAEhC;QAAG,CAAC,GAAAgC,KAAA;QAAA,OAAKhC,EAAE;MAAA,EAC1B,CAAC;IACH;EACF;EAEA3E,qBAAqBA,CAAA,EAAS;IAC5B,IAAM;MAAE3B,KAAK;MAAEF;IAAsB,CAAC,GAAG,IAAI,CAACO,KAAK;IACnD,IAAIP,qBAAqB,KAAKe,SAAS,EAAE;MACvC,IAAI,CAACsE,WAAW,CAACnF,KAAK,EAAE,IAAI,CAAC;IAC/B,CAAC,MAAM;MACL,IAAMuI,aAAa,GAAGvI,KAAK,CAACc,MAAM,CAChCC,IAAI;QAAA,IAAAyH,YAAA,EAAAC,UAAA;QAAA,OACF,CAAA1H,IAAI,aAAJA,IAAI,wBAAAyH,YAAA,GAAJzH,IAAI,CAAEJ,KAAK,cAAA6H,YAAA,uBAAXA,YAAA,CAAatH,OAAO,MAAKpB,qBAAqB,IAC9C,CAAAiB,IAAI,aAAJA,IAAI,wBAAA0H,UAAA,GAAJ1H,IAAI,CAAEI,GAAG,cAAAsH,UAAA,uBAATA,UAAA,CAAWvH,OAAO,MAAKpB,qBAAqB;MAAA,CAChD,CAAC;MACD,IAAI,CAACqF,WAAW,CAACoD,aAAa,CAAC;IACjC;IACA,IAAI,CAACnF,KAAK,CAAC,CAAC;EACd;EAEAxB,iBAAiBA,CAAC8G,MAAc,EAAQ;IACtC,IAAM;MAAE1I;IAAM,CAAC,GAAG,IAAI,CAACK,KAAK;IAC5B,IAAMU,IAAI,GAAGf,KAAK,CAAC2I,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACtC,EAAE,KAAKoC,MAAM,CAAC;IAC7C,IAAI3H,IAAI,EAAE;MACR,IAAI,CAACoE,WAAW,CAAC,CAACpE,IAAI,CAAC,CAAC;IAC1B,CAAC,MAAM;MACLxB,GAAG,CAAC+D,KAAK,CAAC,+BAA+B,EAAEoF,MAAM,CAAC;IACpD;EACF;EAEAtG,sBAAsBA,CACpBwC,QAAgB,EAChBiE,QAAgC,EAC1B;IACN,IAAM;MAAEnB;IAAkB,CAAC,GAAG,IAAI;IAClC,IAAImB,QAAQ,IAAI,IAAI,EAAE;MACpBnB,iBAAiB,CAACoB,MAAM,CAAClE,QAAQ,CAAC;IACpC,CAAC,MAAM;MACL8C,iBAAiB,CAACqB,GAAG,CAACnE,QAAQ,EAAEiE,QAAQ,CAAC;IAC3C;EACF;EAEA7G,kBAAkBA,CAAC4C,QAAgB,EAAEoE,OAAmB,EAAQ;IAC9D,IAAM;MAAEnJ,EAAE;MAAEG,KAAK;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACI,KAAK;IAC1C;IACA,IAAM4I,cAA0C,GAAG,IAAI1I,GAAG,CAAC,CAAC;IAC5D;IACA;IACA,KAAK,IAAI2I,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlJ,KAAK,CAAC8F,MAAM,EAAEoD,CAAC,IAAI,CAAC,EAAE;MACxC,IAAM;QAAEvI,KAAK;QAAEQ,GAAG;QAAEiG;MAAS,CAAC,GAAGpH,KAAK,CAACkJ,CAAC,CAAC;MACzC,IAAIvI,KAAK,CAACO,OAAO,KAAK0D,QAAQ,IAAIzD,GAAG,IAAI,IAAI,IAAIiG,QAAQ,IAAI,IAAI,EAAE;QAAA,IAAA+B,qBAAA,EAAAC,cAAA;QACjE,IAAM;UAAElI,OAAO,EAAEmI,UAAU;UAAElD,UAAU;UAAEC;QAAW,CAAC,GAAGjF,GAAG;QAC3D;QACA,IAAMmI,iBAAiB,GAAGL,cAAc,CAACrB,GAAG,CAACyB,UAAU,CAAC;QACxD,IAAMrB,SAAwB,GAAGsB,iBAAiB,aAAjBA,iBAAiB,cAAjBA,iBAAiB,GAAI,IAAI/I,GAAG,CAAC,CAAC;QAC/D,IAAMgJ,UAAU,IAAAJ,qBAAA,IAAAC,cAAA,GAAGpB,SAAS,CAACJ,GAAG,CAACzB,UAAU,CAAC,cAAAiD,cAAA,uBAAzBA,cAAA,CAA2BG,UAAU,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,EAAE;QAC9D,IAAM;UACJK,YAAY,EAAEC,gBAAgB;UAC9BC,YAAY;UACZC;QACF,CAAC,GAAGX,OAAO,CAACrI,KAAK,CAACwF,UAAU,CAAC;QAC7B,IAAI;UAAEyD;QAAM,CAAC,GAAGZ,OAAO,CAACrI,KAAK,CAACwF,UAAU,CAAC;QACzC,IAAI0D,IAAI,MAAAC,MAAA,CAAMF,KAAK,CAAE;QACrB,IAAIA,KAAK,KAAK,IAAI,IAAIF,YAAY,IAAIC,SAAS,EAAE;UAC/C;UACAC,KAAK,GAAG/I,SAAS;QACnB;QACA,IAAIuF,UAAU,IAAI,IAAI,IAAIhJ,UAAU,CAAC2M,UAAU,CAAC3D,UAAU,CAAC,EAAE;UAC3D,IAAM4D,mBAAmB,GAAG,IAAI9M,uBAAuB,CAAC2C,EAAE,EAAE;YAC1DI,QAAQ;YACRgK,YAAY,EAAE,KAAK;YACnBC,cAAc,EAAE,IAAI;YACpBC,2BAA2B,EAAEhN,SAAS,CAACiN;UACzC,CAAC,CAAC;UACF;UACAP,IAAI,GAAGG,mBAAmB,CAACK,MAAM,CAACT,KAAa,CAAC;QAClD;QACAL,UAAU,CAAC3I,IAAI,CAAC;UAAEwG,QAAQ;UAAEyC,IAAI;UAAED,KAAK;UAAEH;QAAiB,CAAC,CAAC;QAC5DzB,SAAS,CAACe,GAAG,CAAC5C,UAAU,EAAE;UACxBC,UAAU;UACVmD;QACF,CAAC,CAAC;QACFN,cAAc,CAACF,GAAG,CAACM,UAAU,EAAErB,SAAS,CAAC;MAC3C;IACF;;IAEA;IACAiB,cAAc,CAAC5E,OAAO,CAAC,CAAC2D,SAAS,EAAEqB,UAAU,KAAK;MAChD,IAAI,CAACtB,iBAAiB,CAACsB,UAAU,EAAErB,SAAS,CAAC;IAC/C,CAAC,CAAC;EACJ;EAEAzG,iBAAiBA,CAACiD,KAAqB,EAAE8F,WAA2B,EAAQ;IAC1E,IAAM;MAAEtK;IAAM,CAAC,GAAG,IAAI,CAACK,KAAK;IAC5B,IAAMa,OAAO,GAAGlE,WAAW,CAAC0H,cAAc,CAACF,KAAK,CAAC;IACjD,IAAM+F,OAAO,GAAGD,WAAW,CAAChE,EAAE;IAC9B,IAAIpF,OAAO,IAAI,IAAI,EAAE;MACnB,IAAMsJ,UAAU,GAAG1L,WAAW,CAAC2L,kBAAkB,CAC/CzK,KAAK,EACLkB,OAAO,EACPqJ,OACF,CAAC;MACD,IAAI,CAACjD,QAAQ,CAACkD,UAAU,CAAC;IAC3B;EACF;EAEAlI,mBAAmBA,CAACoI,WAAmB,EAAQ;IAC7C,IAAM;MAAE1K;IAAM,CAAC,GAAG,IAAI,CAACK,KAAK;IAC5B,KAAK,IAAI6I,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlJ,KAAK,CAAC8F,MAAM,EAAEoD,CAAC,IAAI,CAAC,EAAE;MACxC,IAAMnI,IAAI,GAAGf,KAAK,CAACkJ,CAAC,CAAC;MACrB,IAAM;QAAEvI,KAAK;QAAEQ;MAAI,CAAC,GAAGJ,IAAI;MAC3B,IAAIJ,KAAK,CAACO,OAAO,KAAKwJ,WAAW,IAAI,CAAAvJ,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAED,OAAO,MAAKwJ,WAAW,EAAE;QACjE,IAAI,CAACnG,QAAQ,CAAC;UAAE5B,eAAe,EAAE;QAAK,CAAC,CAAC;QACxC;MACF;IACF;EACF;EAEAJ,kBAAkBA,CAAA,EAAS;IACzB,IAAI,CAACgC,QAAQ,CAAC;MAAE5B,eAAe,EAAE;IAAM,CAAC,CAAC;EAC3C;EAEAlB,iBAAiBA,CAACP,OAAe,EAAQ;IACvC;IACA;IACA3B,GAAG,CAACuF,KAAK,UAAAgF,MAAA,CAAU5I,OAAO,6BAA0B,CAAC;IACrD,IAAI,CAAC6D,qBAAqB,CAAC7D,OAAO,CAAC;EACrC;EAEAmB,kBAAkBA,CAACqG,MAAc,EAAQ;IACvC,IAAI,CAACnE,QAAQ,CAAC;MAAE9B,WAAW,EAAE,IAAIC,GAAG,CAAS,CAACgG,MAAM,CAAC;IAAE,CAAC,CAAC;EAC3D;EAEA7G,kBAAkBA,CAAC8I,QAAgB,EAAQ;IACzC,IAAM;MAAE5K,gBAAgB;MAAE/B;IAAkB,CAAC,GAAG,IAAI,CAACqC,KAAK;IAC1DrC,iBAAiB,CAAC+B,gBAAgB,EAAE4K,QAAQ,CAAC;EAC/C;EAEAjJ,wBAAwBA,CAAA,EAAS;IAC/B,IAAI,CAACkJ,WAAW,CAAC,CAAC;EACpB;EAEA3I,iBAAiBA,CAAA,EAAS;IACxB,IAAI,CAAC2I,WAAW,CAAC,CAAC;EACpB;EAEA1I,YAAYA,CAAA,EAAS;IACnB;IACA,IAAM;MAAEnC,gBAAgB;MAAEzB;IAAkC,CAAC,GAAG,IAAI,CAAC+B,KAAK;IAC1E/B,iCAAiC,CAACyB,gBAAgB,EAAEc,SAAS,CAAC;EAChE;;EAEA;AACF;AACA;AACA;EACEkE,qBAAqBA,CAAC7D,OAAe,EAAQ;IAC3C,IAAM;MAAElB;IAAM,CAAC,GAAG,IAAI,CAACK,KAAK;IAC5B,KAAK,IAAI6I,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlJ,KAAK,CAAC8F,MAAM,EAAEoD,CAAC,IAAI,CAAC,EAAE;MACxC,IAAMnI,IAAI,GAAGf,KAAK,CAACkJ,CAAC,CAAC;MACrB,IAAM;QAAEvI,KAAK;QAAEQ,GAAG;QAAEmF;MAAG,CAAC,GAAGvF,IAAI;MAC/B,IAAIJ,KAAK,CAACO,OAAO,KAAKA,OAAO,IAAI,CAAAC,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAED,OAAO,MAAKA,OAAO,EAAE;QACzD,IAAI,CAACU,iBAAiB,CAAC0E,EAAE,CAAC;MAC5B;IACF;EACF;EA2BAb,cAAcA,CAAA,EAAY;IACxB,IAAM;MAAE7F;IAAW,CAAC,GAAG,IAAI,CAACS,KAAK;IACjC,OAAOT,UAAU,KAAKlB,QAAQ,CAACmH,MAAM;EACvC;EAEA9C,yBAAyBA,CAAA,EAAS;IAChC,IAAM;MACJnD,UAAU;MACVpB,oCAAoC;MACpCuB;IACF,CAAC,GAAG,IAAI,CAACM,KAAK;IACd,QAAQT,UAAU;MAChB,KAAKlB,QAAQ,CAACmH,MAAM;QAClBrH,oCAAoC,CAClCuB,gBAAgB,EAChB,IAAI,CAACyC,sBACP,CAAC;QACD;MACF;QACEhE,oCAAoC,CAACuB,gBAAgB,EAAEc,SAAS,CAAC;QACjE;IACJ;EACF;EAEAgK,wBAAwBA,CAAA,EAAmC;IAAA,IAAlCvF,IAAc,GAAAU,SAAA,CAAAF,MAAA,QAAAE,SAAA,QAAAnF,SAAA,GAAAmF,SAAA,MAAG,SAAS;IACjD,IAAI,CAACzB,QAAQ,CAACuG,KAAA,IAAwB;MAAA,IAAvB;QAAEtK;MAAe,CAAC,GAAAsK,KAAA;MAC/B,IAAItK,cAAc,KAAKK,SAAS,EAAE;QAChC,OAAO;UACLL,cAAc,EAAAuK,aAAA,CAAAA,aAAA,KACTvK,cAAc;YACjB8E;UAAI;QAER,CAAC;MACH;MACA,OAAO,IAAI;IACb,CAAC,CAAC;EACJ;EAEA9C,sBAAsBA,CACpBwI,SAAkC,EAClCC,WAAmC,EACnC5F,OAAyB,EAChB;IAAA,IAAA6F,sBAAA;IACT,IAAM;MAAE1K;IAAe,CAAC,GAAG,IAAI,CAACd,KAAK;IACrC,IAAM;MAAEI;IAAsB,CAAC,GAAG,IAAI,CAACO,KAAK;IAC5C;IACA;IACA;IACA;IACA,IAAMmF,WAAW,GACf,OAAOwF,SAAS,KAAK,QAAQ,GACzB3F,OAAO,CAACC,IAAI,KAAK,cAAc,IAAID,OAAO,CAACC,IAAI,KAAK,WAAW,GAC/DtI,WAAW,CAACmO,yBAAyB,CAACH,SAAS,CAAC,KAAK,eAAe;IAE1E,IAAIC,WAAW,IAAI,IAAI,EAAE;MACvB,IAAI,CAAAzK,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEG,KAAK,KAAI,IAAI,EAAE;QACjC;QACA,IAAI,CAACkK,wBAAwB,CAAC,SAAS,CAAC;MAC1C;MACA,OAAO,KAAK;IACd;;IAEA;IACA,IAAI,CAAC7L,gBAAgB,CAACiM,WAAW,CAAC,EAAE;MAClC1L,GAAG,CAAC6F,MAAM,CAAC,0BAA0B,EAAE6F,WAAW,CAACG,WAAW,CAAC;MAC/D,IAAI,CAAA5K,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEG,KAAK,KAAI,IAAI,EAAE;QACjC,IAAI,CAACkK,wBAAwB,CAAC,SAAS,CAAC;MAC1C;MACA,OAAO,KAAK;IACd;;IAEA;IACA,IAAI,CAAArK,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEG,KAAK,KAAI,IAAI,EAAE;MACjC,OAAO,IAAI;IACb;IAEA,IAAM;MAAE4F,UAAU,GAAG,KAAK;MAAE5F;IAAM,CAAC,GAAGH,cAAc;IACpD,IAAMU,OAAO,GACX,OAAO8J,SAAS,KAAK,QAAQ,GACzBA,SAAS,GACThO,WAAW,CAAC0H,cAAc,CAACsG,SAAS,CAAC;IAC3C,IAAI9J,OAAO,IAAI,IAAI,EAAE;MACnB,OAAO,KAAK;IACd;;IAEA;IACA,IAAIqF,UAAU,IAAIf,WAAW,EAAE;MAC7B,IAAI,CAACqF,wBAAwB,CAAC,SAAS,CAAC;MACxC,OAAO,KAAK;IACd;IAEA,IAAM1J,GAAG,GAAG;MACVD,OAAO;MACPiF,UAAU,EAAE8E,WAAW,CAAC/E,IAAI;MAC5BE,UAAU,EAAE6E,WAAW,CAAC3F;IAC1B,CAAC;IAED,IAAMoB,OAAO,GAAGH,UAAU,GACtBzH,WAAW,CAAC6H,WAAW,CAACxF,GAAG,EAAER,KAAK,EAAEb,qBAAqB,CAAC,GAC1DhB,WAAW,CAAC6H,WAAW,CAAChG,KAAK,EAAEQ,GAAG,EAAErB,qBAAqB,CAAC;IAE9D,IAAI,CAAC+K,wBAAwB,CAC3BnE,OAAO,IAAAwE,sBAAA,GAAG1K,cAAc,CAACgG,OAAO,cAAA0E,sBAAA,cAAAA,sBAAA,GAAI7F,OAAO,CAACC,IAAI,GAAG,SACrD,CAAC;IAED,OAAOoB,OAAO;EAChB;EAEA2E,MAAMA,CAAA,EAAuB;IAC3B,IAAM;MAAErL,KAAK;MAAEF,qBAAqB;MAAE0H;IAAa,CAAC,GAAG,IAAI,CAACnH,KAAK;IACjE,IAAM;MAAEG,cAAc;MAAEiC,WAAW;MAAEE;IAAgB,CAAC,GAAG,IAAI,CAACjD,KAAK;IAEnE,IAAM4L,kBAAkB,GAAG,IAAI,CAAC7F,cAAc,CAAC,CAAC;IAChD,IAAM8F,QAAQ,GAAG/K,cAAc,IAAI,IAAI,IAAIA,cAAc,CAACG,KAAK,IAAI,IAAI;IACvE,IAAM6K,oBAAoB,GACxB1L,qBAAqB,KAAKe,SAAS,GAC/B,mPAAmP,GACnP,uMAAuM;IAE7M,OAAO,CAAC8B,eAAe,gBACrBrD,IAAA,CAACvC,cAAc;MACb0O,EAAE,EAAEH,kBAAmB;MACvBI,YAAY;MACZC,aAAa;MACbC,QAAQ,EAAE,IAAI,CAAC1J,YAAa;MAAA2J,QAAA,eAE5BvM,IAAA,CAACT,oBAAoB;QACnB0M,QAAQ,EAAEA,QAAS;QACnB/D,YAAY,EAAEA,YAAa;QAC3BxH,KAAK,EAAE,IAAI,CAAC8L,cAAc,CACxB9L,KAAK,EACLQ,cAAc,EACdV,qBACF,CAAE;QACF2C,WAAW,EAAEA,WAAY;QACzBsJ,WAAW,EAAEP,oBAAqB;QAClCQ,cAAc,EAAE,IAAI,CAAC3J,kBAAmB;QACxC4J,aAAa,EAAE,IAAI,CAACrK,iBAAkB;QACtCsK,iBAAiB,EAAE,IAAI,CAACvK,qBAAsB;QAC9CwK,cAAc,EAAE,IAAI,CAACtK,kBAAmB;QACxCuK,MAAM,EAAE,IAAI,CAAC9K,UAAW;QACxB+K,QAAQ,EAAE,IAAI,CAACjL,YAAa;QAC5BsG,iBAAiB,EAAE,IAAI,CAACA;MAAkB,CAC3C;IAAC,CACY,CAAC,GACf,IAAI;EACV;AACF;AAEA,IAAM4E,eAAe,GAAGpM,SAAS,CAACC,MAAM,CAAC;AAEzC,eAAemM,eAAe"}
|
|
1
|
+
{"version":3,"file":"Linker.js","names":["React","Component","connect","nanoid","memoize","FadeTransition","LayoutUtils","PanelEvent","DateTimeColumnFormatter","DateUtils","TableUtils","Log","Type","FilterType","getActiveTool","getApi","getTimeZone","setActiveTool","setActiveToolAction","assertNotNull","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","setDashboardLinks","setDashboardLinksAction","addDashboardLinks","addDashboardLinksAction","deleteDashboardLinks","deleteDashboardLinksAction","setDashboardIsolatedLinkerPanelId","setDashboardIsolatedLinkerPanelIdAction","setDashboardColumnSelectionValidator","setDashboardColumnSelectionValidatorAction","ToolType","ChartEvent","IrisGridEvent","LinkerOverlayContent","LinkerUtils","isLinkablePanel","isLinkableColumn","listenForFilterColumnsChanged","listenForLinkPointSelected","listenForLinkSourceDataSelected","listenForRegisterLinkTarget","jsx","_jsx","log","module","mapState","state","ownProps","activeTool","dh","isolatedLinkerPanelId","localDashboardId","links","timeZone","connector","Linker","constructor","props","_defineProperty","Map","linkInProgress","isolateForPanelId","combinedLinks","start","push","undefined","filter","link","_link$start","_link$end","panelId","end","handleCancel","bind","handleDone","handlePanelCloned","handleColumnsChanged","handlePanelClosed","handleLayoutStateChanged","handleAllLinksDeleted","handleLinkDeleted","handleLinksUpdated","handleChartColumnSelect","handleGridColumnSelect","handleUpdateValues","handleStateChange","handleExited","handleLinkPointSelected","handleTargetRegistered","handleLinkSelected","handlePanelDragging","handlePanelDropped","isColumnSelectionValid","selectedIds","Set","isDraggingPanel","componentDidMount","layout","startListening","updateSelectionValidators","componentDidUpdate","prevProps","stopListening","DEFAULT","reset","componentDidCatch","error","info","componentWillUnmount","on","eventHub","COLUMN_SELECTED","DATA_SELECTED","STATE_CHANGED","CLONED","removerFns","CLOSE","CLOSED","DRAGGING","DROPPED","off","forEach","remove","setState","panel","column","getIdFromPanel","columnSelected","sourceId","columns","debug","deleteLinksForPanelId","linksToDelete","_ref","findColumn","deleteLinks","debug2","options","type","isIsolatedLinker","isAlwaysEnd","isOverlayShown","panelLinks","_link$start2","_link$end2","LINKER","length","isAlwaysEndPoint","arguments","overrideIsolatedLinkerPanelId","name","columnName","columnType","newLink","id","isReversed","endType","_linkInProgress$endTy","isValid","isLinkValid","finalType","existingLinkPanelId","_ref2","panelLinkEnd","existingLinkEnd","existingLinkStart","_ref3","panelLinkStart","operator","eq","addLinks","unsetFilterValueForLink","panelManager","_linkTargetPropMap$ge","linkTargetPropMap","unsetFilterValue","get","endPanel","getOpenedPanelById","setPanelFilterMap","filterMap","_linkTargetPropMap$ge2","setFilterValues","setFilterMap","clearAll","map","_ref4","isolatedLinks","_link$start3","_link$end3","linkId","find","l","handlers","delete","set","dataMap","panelFilterMap","i","_filterMap$get$filter","_filterMap$get","endPanelId","existingFilterMap","filterList","visibleIndex","startColumnIndex","isExpandable","isGrouped","value","text","concat","isDateType","dateFilterFormatter","showTimeZone","showTSeparator","defaultDateTimeFormatString","FULL_DATE_FORMAT","format","cloneConfig","cloneId","linksToAdd","cloneLinksForPanel","componentId","newLinks","forceUpdate","updateLinkInProgressType","_ref5","_objectSpread","panelOrId","tableColumn","_linkInProgress$endTy2","getComponentNameFromPanel","description","render","isLinkOverlayShown","disabled","linkerOverlayMessage","in","mountOnEnter","unmountOnExit","onExited","children","getCachedLinks","messageText","onLinkSelected","onLinkDeleted","onAllLinksDeleted","onLinksUpdated","onDone","onCancel","ConnectedLinker"],"sources":["../../src/linker/Linker.tsx"],"sourcesContent":["import React, { Component, type ErrorInfo } from 'react';\nimport { connect, type ConnectedProps } from 'react-redux';\nimport { nanoid } from 'nanoid';\nimport memoize from 'memoize-one';\nimport { FadeTransition } from '@deephaven/components';\nimport {\n LayoutUtils,\n type PanelComponent,\n PanelEvent,\n type PanelManager,\n} from '@deephaven/dashboard';\nimport type GoldenLayout from '@deephaven/golden-layout';\nimport {\n DateTimeColumnFormatter,\n DateUtils,\n type RowDataMap,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { Type as FilterType } from '@deephaven/filters';\nimport {\n getActiveTool,\n getApi,\n getTimeZone,\n setActiveTool as setActiveToolAction,\n type RootState,\n} from '@deephaven/redux';\nimport { assertNotNull } from '@deephaven/utils';\nimport {\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n setDashboardLinks as setDashboardLinksAction,\n addDashboardLinks as addDashboardLinksAction,\n deleteDashboardLinks as deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId as setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator as setDashboardColumnSelectionValidatorAction,\n} from '../redux';\nimport ToolType from './ToolType';\nimport { ChartEvent, IrisGridEvent } from '../events';\nimport LinkerOverlayContent from './LinkerOverlayContent';\nimport LinkerUtils, {\n isLinkablePanel,\n type Link,\n type LinkColumn,\n type LinkFilterMap,\n type LinkType,\n isLinkableColumn,\n type LinkPointOptions,\n} from './LinkerUtils';\nimport {\n type FilterColumnSourceId,\n listenForFilterColumnsChanged,\n} from '../FilterEvents';\nimport {\n type LinkTargetProps,\n listenForLinkPointSelected,\n listenForLinkSourceDataSelected,\n listenForRegisterLinkTarget,\n} from './LinkerEvent';\n\nconst log = Log.module('Linker');\n\ninterface StateProps {\n activeTool: string;\n dh: typeof DhType;\n isolatedLinkerPanelId?: string;\n links: Link[];\n timeZone: string;\n}\n\ninterface OwnProps {\n layout: GoldenLayout;\n panelManager: PanelManager;\n localDashboardId: string;\n}\n\nconst mapState = (state: RootState, ownProps: OwnProps): StateProps => ({\n activeTool: getActiveTool(state),\n dh: getApi(state),\n isolatedLinkerPanelId: getIsolatedLinkerPanelIdForDashboard(\n state,\n ownProps.localDashboardId\n ),\n links: getLinksForDashboard(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n});\n\nconst connector = connect(mapState, {\n setActiveTool: setActiveToolAction,\n setDashboardLinks: setDashboardLinksAction,\n addDashboardLinks: addDashboardLinksAction,\n deleteDashboardLinks: deleteDashboardLinksAction,\n setDashboardIsolatedLinkerPanelId: setDashboardIsolatedLinkerPanelIdAction,\n setDashboardColumnSelectionValidator:\n setDashboardColumnSelectionValidatorAction,\n});\n\nexport type LinkerProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type LinkerState = {\n linkInProgress?: Link & { endType?: LinkType };\n selectedIds: Set<string>;\n isDraggingPanel: boolean;\n};\n\nexport class Linker extends Component<LinkerProps, LinkerState> {\n constructor(props: LinkerProps) {\n super(props);\n\n this.handleCancel = this.handleCancel.bind(this);\n this.handleDone = this.handleDone.bind(this);\n this.handlePanelCloned = this.handlePanelCloned.bind(this);\n this.handleColumnsChanged = this.handleColumnsChanged.bind(this);\n this.handlePanelClosed = this.handlePanelClosed.bind(this);\n this.handleLayoutStateChanged = this.handleLayoutStateChanged.bind(this);\n this.handleAllLinksDeleted = this.handleAllLinksDeleted.bind(this);\n this.handleLinkDeleted = this.handleLinkDeleted.bind(this);\n this.handleLinksUpdated = this.handleLinksUpdated.bind(this);\n this.handleChartColumnSelect = this.handleChartColumnSelect.bind(this);\n this.handleGridColumnSelect = this.handleGridColumnSelect.bind(this);\n this.handleUpdateValues = this.handleUpdateValues.bind(this);\n this.handleStateChange = this.handleStateChange.bind(this);\n this.handleExited = this.handleExited.bind(this);\n this.handleLinkPointSelected = this.handleLinkPointSelected.bind(this);\n this.handleTargetRegistered = this.handleTargetRegistered.bind(this);\n this.handleLinkSelected = this.handleLinkSelected.bind(this);\n this.handlePanelDragging = this.handlePanelDragging.bind(this);\n this.handlePanelDropped = this.handlePanelDropped.bind(this);\n this.isColumnSelectionValid = this.isColumnSelectionValid.bind(this);\n\n this.state = {\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n isDraggingPanel: false,\n };\n }\n\n componentDidMount(): void {\n const { layout } = this.props;\n this.startListening(layout);\n this.updateSelectionValidators();\n }\n\n componentDidUpdate(prevProps: LinkerProps): void {\n const { activeTool, layout } = this.props;\n if (layout !== prevProps.layout) {\n this.stopListening(prevProps.layout);\n this.startListening(layout);\n }\n if (activeTool !== prevProps.activeTool) {\n this.updateSelectionValidators();\n if (activeTool === ToolType.DEFAULT) {\n this.reset();\n }\n }\n }\n\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n const { layout } = this.props;\n this.stopListening(layout);\n }\n\n private linkTargetPropMap: Map<string, LinkTargetProps> = new Map();\n\n private removerFns: (() => void)[] = [];\n\n startListening(layout: GoldenLayout): void {\n layout.on('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.on(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.on(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.on(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.on(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.on(PanelEvent.CLONED, this.handlePanelCloned);\n this.removerFns = [\n listenForFilterColumnsChanged(eventHub, this.handleColumnsChanged),\n listenForLinkPointSelected(eventHub, this.handleLinkPointSelected),\n listenForLinkSourceDataSelected(eventHub, this.handleUpdateValues),\n listenForRegisterLinkTarget(eventHub, this.handleTargetRegistered),\n ];\n eventHub.on(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.on(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.on(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.on(PanelEvent.DROPPED, this.handlePanelDropped);\n }\n\n stopListening(layout: GoldenLayout): void {\n layout.off('stateChanged', this.handleLayoutStateChanged);\n\n const { eventHub } = layout;\n eventHub.off(IrisGridEvent.COLUMN_SELECTED, this.handleGridColumnSelect);\n eventHub.off(IrisGridEvent.DATA_SELECTED, this.handleUpdateValues);\n eventHub.off(IrisGridEvent.STATE_CHANGED, this.handleStateChange);\n eventHub.off(ChartEvent.COLUMN_SELECTED, this.handleChartColumnSelect);\n eventHub.off(PanelEvent.CLONED, this.handlePanelCloned);\n eventHub.off(PanelEvent.CLOSE, this.handlePanelClosed);\n eventHub.off(PanelEvent.CLOSED, this.handlePanelClosed);\n eventHub.off(PanelEvent.DRAGGING, this.handlePanelDragging);\n eventHub.off(PanelEvent.DROPPED, this.handlePanelDropped);\n this.removerFns.forEach(remove => remove());\n this.removerFns = [];\n }\n\n reset(): void {\n this.setState({\n linkInProgress: undefined,\n selectedIds: new Set<string>(),\n });\n }\n\n handleCancel(): void {\n const { linkInProgress } = this.state;\n if (linkInProgress == null) {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n this.setState({ linkInProgress: undefined });\n }\n\n handleDone(): void {\n const { setActiveTool } = this.props;\n setActiveTool(ToolType.DEFAULT);\n }\n\n handleChartColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n assertNotNull(panelId);\n this.columnSelected(panelId, column, 'chartLink', true);\n }\n\n handleColumnsChanged(\n sourceId: FilterColumnSourceId,\n columns: readonly LinkColumn[] | null\n ): void {\n log.debug('handleColumnsChanged', sourceId, columns);\n const { links } = this.props;\n if (sourceId == null) {\n log.error('Invalid filter columns source id', sourceId);\n return;\n }\n\n // Columns is null when dh.ui widgets with linker capability are closed\n if (columns == null) {\n this.deleteLinksForPanelId(sourceId);\n return;\n }\n // NOTE: links need to be updated to use sourceId instead of panelId. This will be done when we implement linker for dh.ui widgets DH-18840\n // Delete links that start or end on non-existent column in the updated panel\n const linksToDelete = links.filter(\n ({ start, end }) =>\n (start.panelId === sourceId &&\n LinkerUtils.findColumn(columns, start) == null) ||\n (end != null &&\n end.panelId === sourceId &&\n LinkerUtils.findColumn(columns, end) == null)\n );\n this.deleteLinks(linksToDelete);\n }\n\n handleGridColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n if (!isLinkableColumn(column)) {\n log.debug2('Column is not filterable');\n return;\n }\n const panelId = LayoutUtils.getIdFromPanel(panel);\n assertNotNull(panelId);\n this.columnSelected(panelId, column, 'tableLink');\n }\n\n handleLinkPointSelected(\n sourceId: string,\n column: LinkColumn,\n options: LinkPointOptions\n ): void {\n const { type } = options;\n const isIsolatedLinker = type === 'filterSource';\n const isAlwaysEnd = type === 'chartLink' || type === 'filterSource';\n\n // filterSource type should open in isolated linker mode\n if (!this.isOverlayShown() && sourceId != null && isIsolatedLinker) {\n const {\n links,\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId,\n } = this.props;\n\n const panelLinks = links.filter(\n link =>\n link.start?.panelId === sourceId || link.end?.panelId === sourceId\n );\n\n // Initial click on the filter source button with linker inactive\n // Show linker in isolated mode for panel\n setActiveTool(ToolType.LINKER);\n setDashboardIsolatedLinkerPanelId(localDashboardId, sourceId);\n\n if (panelLinks.length === 0) {\n // Source not linked - start new link in isolated linker mode\n // Need to pass panelId for overrideIsolatedLinkerPanelId\n // as redux prop update at this point not yet propagated\n this.columnSelected(sourceId, column, type, isAlwaysEnd, sourceId);\n }\n return;\n }\n\n this.columnSelected(sourceId, column, type, isAlwaysEnd);\n }\n\n /**\n * Track a column selection and build the link from it.\n * @param sourceId The ID of the source for the column selection\n * @param column The column that was selected\n * @param type The type of the link point\n * @param isAlwaysEndPoint True if the selection is always the end point, even if it's the first column selected. Defaults to false.\n * @param overrideIsolatedLinkerPanelId isolatedLinkerPanelId to use when method is called before prop changes propagate\n */\n columnSelected(\n sourceId: string,\n column: LinkColumn,\n type: LinkType,\n isAlwaysEndPoint = false,\n overrideIsolatedLinkerPanelId?: string | string[]\n ): void {\n if (overrideIsolatedLinkerPanelId === undefined && !this.isOverlayShown()) {\n return;\n }\n const { isolatedLinkerPanelId } = this.props;\n const { linkInProgress } = this.state;\n const { name: columnName, type: columnType } = column;\n if (linkInProgress == null || linkInProgress.start == null) {\n const newLink: Link & { endType?: LinkType } = {\n id: nanoid(),\n start: {\n panelId: sourceId,\n columnName,\n columnType,\n },\n type: 'invalid',\n isReversed: isAlwaysEndPoint,\n };\n\n if (isAlwaysEndPoint) {\n newLink.endType = type;\n }\n\n log.debug('starting link', newLink);\n\n this.setState({ linkInProgress: newLink });\n } else {\n const { links } = this.props;\n const { start, id, isReversed = false } = linkInProgress;\n const end = {\n panelId: sourceId,\n columnName,\n columnType,\n };\n\n const isValid =\n !(isReversed && isAlwaysEndPoint) && // Cannot add a point which is only an end when we already have an end\n LinkerUtils.isLinkValid(\n isReversed ? end : start,\n isReversed ? start : end,\n overrideIsolatedLinkerPanelId ?? isolatedLinkerPanelId\n );\n\n if (!isValid) {\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n }\n\n // The end point is what determines the type\n // If the link is reversed, we already set the type on the linkInProgress\n const finalType = linkInProgress.endType ?? type;\n\n switch (finalType) {\n case 'invalid':\n log.debug('Ignore invalid link connection', linkInProgress, end);\n return;\n case 'filterSource': {\n // filterSource links have a limit of 1 link per target\n // New link validation passed, delete existing links before adding the new one\n const existingLinkPanelId =\n isReversed !== undefined && isReversed\n ? start.panelId\n : end.panelId;\n // In cases with multiple targets per panel (i.e. chart filters)\n // links would have to be filtered by panelId and columnName and columnType\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd }) =>\n panelLinkEnd?.panelId === existingLinkPanelId\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'chartLink': {\n const existingLinkEnd = isReversed === true ? start : end;\n const existingLinkStart = isReversed === true ? end : start;\n log.debug('creating chartlink', { existingLinkEnd, start, end });\n // Don't allow linking more than one column per source to each chart column\n const linksToDelete = links.filter(\n ({ end: panelLinkEnd, start: panelLinkStart }) =>\n panelLinkStart?.panelId === existingLinkStart.panelId &&\n panelLinkEnd?.panelId === existingLinkEnd.panelId &&\n panelLinkEnd?.columnName === existingLinkEnd.columnName &&\n panelLinkEnd?.columnType === existingLinkEnd.columnType\n );\n this.deleteLinks(linksToDelete);\n break;\n }\n case 'tableLink':\n // No-op\n break;\n }\n\n // Create a completed link from link in progress\n const newLink: Link = {\n start: isReversed ? end : start,\n end: isReversed ? start : end,\n id,\n type: finalType,\n operator: FilterType.eq,\n };\n log.info('creating link', newLink);\n\n this.setState(\n { linkInProgress: undefined, selectedIds: new Set<string>([id]) },\n () => {\n // Adding link after updating state\n // otherwise both new link and linkInProgress could be rendered at the same time\n // resulting in \"multiple children with same key\" error\n this.addLinks([newLink]);\n }\n );\n }\n }\n\n unsetFilterValueForLink(link: Link): void {\n const { panelManager } = this.props;\n if (link.end) {\n const { end } = link;\n const { panelId, columnName, columnType } = end;\n const { linkTargetPropMap } = this;\n const unsetFilterValue = linkTargetPropMap.get(panelId)?.unsetFilterValue;\n if (unsetFilterValue) {\n unsetFilterValue(columnName, columnType);\n return;\n }\n\n const endPanel = panelManager.getOpenedPanelById(panelId);\n if (!endPanel) {\n log.debug(\n 'endPanel no longer exists or target is not a panel. Ignoring unsetFilterValue',\n panelId\n );\n } else if (isLinkablePanel(endPanel)) {\n endPanel.unsetFilterValue(columnName, columnType);\n } else {\n log.debug('endPanel.unsetFilterValue not implemented', endPanel);\n }\n }\n }\n\n /**\n * Set filters for a given panel ID\n * @param panelId ID of panel to set filters on\n * @param filterMap Map of column name to column type, text, and value\n */\n setPanelFilterMap(panelId: string, filterMap: LinkFilterMap): void {\n log.debug('Set filter data for panel:', panelId, filterMap);\n const { panelManager } = this.props;\n const { linkTargetPropMap } = this;\n const setFilterValues = linkTargetPropMap.get(panelId)?.setFilterValues;\n if (setFilterValues) {\n setFilterValues(filterMap);\n return;\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (!panel) {\n log.debug(\n 'panel no longer exists or target is not a panel. Ignoring setFilterMap',\n panelId\n );\n } else if (isLinkablePanel(panel)) {\n panel.setFilterMap(filterMap);\n } else {\n log.debug('panel.setFilterMap not implemented', panelId, panel);\n }\n }\n\n addLinks(links: Link[]): void {\n const { addDashboardLinks, localDashboardId } = this.props;\n addDashboardLinks(localDashboardId, links);\n }\n\n deleteLinks(links: Link[], clearAll = false): void {\n const { localDashboardId } = this.props;\n links.forEach(link => this.unsetFilterValueForLink(link));\n if (clearAll) {\n const { setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, []);\n } else if (links.length > 0) {\n const { deleteDashboardLinks } = this.props;\n deleteDashboardLinks(\n localDashboardId,\n links.map(({ id }) => id)\n );\n }\n }\n\n handleAllLinksDeleted(): void {\n const { links, isolatedLinkerPanelId } = this.props;\n if (isolatedLinkerPanelId === undefined) {\n this.deleteLinks(links, true);\n } else {\n const isolatedLinks = links.filter(\n link =>\n link?.start?.panelId === isolatedLinkerPanelId ||\n link?.end?.panelId === isolatedLinkerPanelId\n );\n this.deleteLinks(isolatedLinks);\n }\n this.reset();\n }\n\n handleLinkDeleted(linkId: string): void {\n const { links } = this.props;\n const link = links.find(l => l.id === linkId);\n if (link) {\n this.deleteLinks([link]);\n } else {\n log.error('Unable to find link to delete', linkId);\n }\n }\n\n handleTargetRegistered(\n sourceId: string,\n handlers: LinkTargetProps | null\n ): void {\n const { linkTargetPropMap } = this;\n if (handlers == null) {\n linkTargetPropMap.delete(sourceId);\n } else {\n linkTargetPropMap.set(sourceId, handlers);\n }\n }\n\n handleUpdateValues(sourceId: string, dataMap: RowDataMap): void {\n const { dh, links, timeZone } = this.props;\n // Map of panel ID to filterMap\n const panelFilterMap: Map<string, LinkFilterMap> = new Map();\n // Instead of setting filters one by one for each link,\n // combine them so they could be set in a single call per target panel\n for (let i = 0; i < links.length; i += 1) {\n const { start, end, operator } = links[i];\n if (start.panelId === sourceId && end != null) {\n const { panelId: endPanelId, columnName, columnType } = end;\n // Map of column name to column type and filter value\n const existingFilterMap = panelFilterMap.get(endPanelId);\n const filterMap: LinkFilterMap = existingFilterMap ?? new Map();\n const filterList = filterMap.get(columnName)?.filterList ?? [];\n const {\n visibleIndex: startColumnIndex,\n isExpandable,\n isGrouped,\n } = dataMap[start.columnName];\n let { value } = dataMap[start.columnName];\n let text = `${value}`;\n if (value === null && isExpandable && isGrouped) {\n // Clear filter on empty rollup grouping columns\n value = undefined;\n }\n if (columnType != null && TableUtils.isDateType(columnType)) {\n const dateFilterFormatter = new DateTimeColumnFormatter(dh, {\n timeZone,\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: DateUtils.FULL_DATE_FORMAT,\n });\n // The values are Dates for dateType values, not string like everything else\n text = dateFilterFormatter.format(value as Date);\n }\n filterList.push({ operator, text, value, startColumnIndex });\n filterMap.set(columnName, {\n columnType,\n filterList,\n });\n panelFilterMap.set(endPanelId, filterMap);\n }\n }\n\n // Apply combined filters to all target panels\n panelFilterMap.forEach((filterMap, endPanelId) => {\n this.setPanelFilterMap(endPanelId, filterMap);\n });\n }\n\n handlePanelCloned(panel: PanelComponent, cloneConfig: { id: string }): void {\n const { links } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const cloneId = cloneConfig.id;\n if (panelId != null) {\n const linksToAdd = LinkerUtils.cloneLinksForPanel(\n links,\n panelId,\n cloneId\n );\n this.addLinks(linksToAdd);\n }\n }\n\n handlePanelDragging(componentId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end } = link;\n if (start.panelId === componentId || end?.panelId === componentId) {\n this.setState({ isDraggingPanel: true });\n return;\n }\n }\n }\n\n handlePanelDropped(): void {\n this.setState({ isDraggingPanel: false });\n }\n\n handlePanelClosed(panelId: string): void {\n // Delete links on PanelEvent.CLOSE and PanelEvent.CLOSED instead of UNMOUNT\n // because the panels can get unmounted on errors and we want to keep the links if that happens\n log.debug(`Panel ${panelId} closed, deleting links.`);\n this.deleteLinksForPanelId(panelId);\n }\n\n handleLinkSelected(linkId: string): void {\n this.setState({ selectedIds: new Set<string>([linkId]) });\n }\n\n handleLinksUpdated(newLinks: Link[]): void {\n const { localDashboardId, setDashboardLinks } = this.props;\n setDashboardLinks(localDashboardId, newLinks);\n }\n\n handleLayoutStateChanged(): void {\n this.forceUpdate();\n }\n\n handleStateChange(): void {\n this.forceUpdate();\n }\n\n handleExited(): void {\n // Has to be done after linker exit animation to avoid flashing non-isolated links\n const { localDashboardId, setDashboardIsolatedLinkerPanelId } = this.props;\n setDashboardIsolatedLinkerPanelId(localDashboardId, undefined);\n }\n\n /**\n * Delete all links for a provided panel ID. Needs to be done whenever a panel is closed or unmounted.\n * @param panelId The panel ID to delete links for\n */\n deleteLinksForPanelId(panelId: string): void {\n const { links } = this.props;\n for (let i = 0; i < links.length; i += 1) {\n const link = links[i];\n const { start, end, id } = link;\n if (start.panelId === panelId || end?.panelId === panelId) {\n this.handleLinkDeleted(id);\n }\n }\n }\n\n getCachedLinks = memoize(\n (\n links: Link[],\n linkInProgress: Link | undefined,\n isolateForPanelId: string | undefined\n ) => {\n const combinedLinks = [...links];\n\n if (linkInProgress != null && linkInProgress.start != null) {\n combinedLinks.push(linkInProgress);\n }\n\n if (isolateForPanelId !== undefined) {\n return combinedLinks.filter(\n link =>\n link?.start?.panelId === isolateForPanelId ||\n link?.end?.panelId === isolateForPanelId ||\n link?.end == null\n );\n }\n // Show all links in regular linker mode -- both isolated and not\n return combinedLinks;\n }\n );\n\n isOverlayShown(): boolean {\n const { activeTool } = this.props;\n return activeTool === ToolType.LINKER;\n }\n\n updateSelectionValidators(): void {\n const {\n activeTool,\n setDashboardColumnSelectionValidator,\n localDashboardId,\n } = this.props;\n switch (activeTool) {\n case ToolType.LINKER:\n setDashboardColumnSelectionValidator(\n localDashboardId,\n this.isColumnSelectionValid\n );\n break;\n default:\n setDashboardColumnSelectionValidator(localDashboardId, undefined);\n break;\n }\n }\n\n updateLinkInProgressType(type: LinkType = 'invalid'): void {\n this.setState(({ linkInProgress }) => {\n if (linkInProgress !== undefined) {\n return {\n linkInProgress: {\n ...linkInProgress,\n type,\n },\n };\n }\n return null;\n });\n }\n\n isColumnSelectionValid(\n panelOrId: PanelComponent | string,\n tableColumn: LinkColumn | undefined,\n options: LinkPointOptions\n ): boolean {\n const { linkInProgress } = this.state;\n const { isolatedLinkerPanelId } = this.props;\n // This is backwards compatibility for Grizzly Enterprise panels\n // IrisGridPanel is the only allowed start point for a link\n // The enterprise panels will not call this method with options\n // They are also JS and removed in sanluis, so figure this is best for now\n const isAlwaysEnd =\n typeof panelOrId === 'string'\n ? options.type === 'filterSource' || options.type === 'chartLink'\n : LayoutUtils.getComponentNameFromPanel(panelOrId) !== 'IrisGridPanel';\n\n if (tableColumn == null) {\n if (linkInProgress?.start != null) {\n // Link started, end point is not a valid target\n this.updateLinkInProgressType('invalid');\n }\n return false;\n }\n\n // TODO: Use preview/original type property when core/#3358 is completed\n if (!isLinkableColumn(tableColumn)) {\n log.debug2('Column is not filterable', tableColumn.description);\n if (linkInProgress?.start != null) {\n this.updateLinkInProgressType('invalid');\n }\n return false;\n }\n\n // Link not started yet - no need to update type\n if (linkInProgress?.start == null) {\n return true;\n }\n\n const { isReversed = false, start } = linkInProgress;\n const panelId =\n typeof panelOrId === 'string'\n ? panelOrId\n : LayoutUtils.getIdFromPanel(panelOrId);\n if (panelId == null) {\n return false;\n }\n\n // We've already selected an end point, so we can't select another one\n if (isReversed && isAlwaysEnd) {\n this.updateLinkInProgressType('invalid');\n return false;\n }\n\n const end = {\n panelId,\n columnName: tableColumn.name,\n columnType: tableColumn.type,\n };\n\n const isValid = isReversed\n ? LinkerUtils.isLinkValid(end, start, isolatedLinkerPanelId)\n : LinkerUtils.isLinkValid(start, end, isolatedLinkerPanelId);\n\n this.updateLinkInProgressType(\n isValid ? linkInProgress.endType ?? options.type : 'invalid'\n );\n\n return isValid;\n }\n\n render(): JSX.Element | null {\n const { links, isolatedLinkerPanelId, panelManager } = this.props;\n const { linkInProgress, selectedIds, isDraggingPanel } = this.state;\n\n const isLinkOverlayShown = this.isOverlayShown();\n const disabled = linkInProgress != null && linkInProgress.start != null;\n const linkerOverlayMessage =\n isolatedLinkerPanelId === undefined\n ? 'Click a column source, then click a column target to create a filter link. The filter comparison operator used by a selected link can be changed. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.'\n : 'Create a link between the source column button and a table column by clicking on one, then the other. Delete a filter link by clicking the delete button or with alt+click. Click done when finished.';\n\n return !isDraggingPanel ? (\n <FadeTransition\n in={isLinkOverlayShown}\n mountOnEnter\n unmountOnExit\n onExited={this.handleExited}\n >\n <LinkerOverlayContent\n disabled={disabled}\n panelManager={panelManager}\n links={this.getCachedLinks(\n links,\n linkInProgress,\n isolatedLinkerPanelId\n )}\n selectedIds={selectedIds}\n messageText={linkerOverlayMessage}\n onLinkSelected={this.handleLinkSelected}\n onLinkDeleted={this.handleLinkDeleted}\n onAllLinksDeleted={this.handleAllLinksDeleted}\n onLinksUpdated={this.handleLinksUpdated}\n onDone={this.handleDone}\n onCancel={this.handleCancel}\n linkTargetPropMap={this.linkTargetPropMap}\n />\n </FadeTransition>\n ) : null;\n }\n}\n\nconst ConnectedLinker = connector(Linker);\n\nexport default ConnectedLinker;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerOverlayContent.d.ts","sourceRoot":"","sources":["../../src/linker/LinkerOverlayContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQzD,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAItE,OAAO,
|
|
1
|
+
{"version":3,"file":"LinkerOverlayContent.d.ts","sourceRoot":"","sources":["../../src/linker/LinkerOverlayContent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import { Button, ContextActions, GLOBAL_SHORTCUTS, Tooltip } from '@deephaven/co
|
|
|
9
9
|
import { LayoutUtils } from '@deephaven/dashboard';
|
|
10
10
|
import Log from '@deephaven/log';
|
|
11
11
|
import { vsGripper } from '@deephaven/icons';
|
|
12
|
+
import { Type as FilterType } from '@deephaven/filters';
|
|
12
13
|
import clamp from 'lodash.clamp';
|
|
13
14
|
import { isLinkableFromPanel } from "./LinkerUtils.js";
|
|
14
15
|
import LinkerLink from "./LinkerLink.js";
|
|
@@ -305,7 +306,7 @@ export class LinkerOverlayContent extends Component {
|
|
|
305
306
|
onClick: onLinkSelected,
|
|
306
307
|
onDelete: onLinkDeleted,
|
|
307
308
|
isSelected: selectedIds.has(id),
|
|
308
|
-
operator: operator,
|
|
309
|
+
operator: operator !== null && operator !== void 0 ? operator : FilterType.eq,
|
|
309
310
|
startColumnType: startColumnType,
|
|
310
311
|
type: type,
|
|
311
312
|
onOperatorChanged: this.handleOperatorChanged
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerOverlayContent.js","names":["React","Component","classNames","Button","ContextActions","GLOBAL_SHORTCUTS","Tooltip","LayoutUtils","Log","vsGripper","clamp","isLinkableFromPanel","LinkerLink","jsx","_jsx","jsxs","_jsxs","log","module","LinkerOverlayContent","constructor","props","_defineProperty","handleBlur","bind","handleResize","handleMouseMove","handleMouseDown","handleMouseUp","handleKeyDown","handleKeyUp","handleEscapePressed","handleOperatorChanged","dialogRef","createRef","state","mouse","undefined","dialog","offset","x","y","isDragging","mode","componentDidMount","window","addEventListener","componentDidCatch","error","info","componentWillUnmount","removeEventListener","getPointFromLinkPoint","linkPoint","panelManager","linkTargetPropMap","panelId","linkPointId","columnName","linkTargetHandlers","get","coordinates","getCoordinates","panel","getOpenedPanelById","Error","concat","coordinate","getCoordinateForColumn","e","glContainer","getContainerByPanelId","getTabPoint","linkId","type","links","onLinksUpdated","newLinks","map","link","id","_objectSpread","operator","setState","current","rect","getBoundingClientRect","dialogX","innerWidth","width","dialogY","innerHeight","height","event","clientX","clientY","preventDefault","right","bottom","key","selectedIds","onLinkDeleted","forEach","onCancel","render","disabled","messageText","onLinkSelected","onAllLinksDeleted","onDone","visibleLinks","_mouse$x","_mouse$y","isReversed","start","end","startColumnType","columnType","x1","y1","x2","y2","tmpX","tmpY","className","interactive","has","warn","filter","item","children","_ref","onClick","onDelete","isSelected","onOperatorChanged","dragging","ref","style","draggable","kind","icon","onMouseDown","actions","action","shortcut","LINKER_CLOSE","isGlobal"],"sources":["../../src/linker/LinkerOverlayContent.tsx"],"sourcesContent":["import React, { Component, type ErrorInfo } from 'react';\nimport classNames from 'classnames';\nimport {\n Button,\n ContextActions,\n GLOBAL_SHORTCUTS,\n Tooltip,\n} from '@deephaven/components';\nimport { LayoutUtils, type PanelManager } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type { Container } from '@deephaven/golden-layout';\nimport { vsGripper } from '@deephaven/icons';\nimport { type TypeValue as FilterTypeValue } from '@deephaven/filters';\nimport clamp from 'lodash.clamp';\nimport {\n isLinkableFromPanel,\n type Link,\n type LinkerCoordinate,\n type LinkPoint,\n type LinkType,\n} from './LinkerUtils';\nimport LinkerLink from './LinkerLink';\nimport './LinkerOverlayContent.scss';\nimport { type LinkTargetProps } from './LinkerEvent';\n\nconst log = Log.module('LinkerOverlayContent');\n\nexport type VisibleLink = {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n id: string;\n className: string;\n type: LinkType;\n operator: FilterTypeValue;\n startColumnType: string | null;\n};\n\nexport type LinkerOverlayContentProps = {\n disabled?: boolean;\n links: Link[];\n selectedIds: Set<string>;\n messageText: string;\n onLinkSelected: (linkId: string) => void;\n onLinkDeleted: (linkId: string) => void;\n onAllLinksDeleted: () => void;\n onLinksUpdated: (newLinks: Link[]) => void;\n onCancel: () => void;\n onDone: () => void;\n panelManager: PanelManager;\n linkTargetPropMap: Map<string, LinkTargetProps>;\n};\n\ntype Point = { x: number; y: number };\n\nexport type LinkerOverlayContentState = {\n mouse?: Point;\n dialog?: Point;\n offset: Point;\n isDragging: boolean;\n mode: 'select' | 'delete';\n};\n\nexport class LinkerOverlayContent extends Component<\n LinkerOverlayContentProps,\n LinkerOverlayContentState\n> {\n static defaultProps = {\n disabled: 'false',\n };\n\n constructor(props: LinkerOverlayContentProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.handleEscapePressed = this.handleEscapePressed.bind(this);\n this.handleOperatorChanged = this.handleOperatorChanged.bind(this);\n\n this.dialogRef = React.createRef();\n\n this.state = {\n mouse: undefined,\n dialog: undefined,\n offset: { x: 0, y: 0 },\n isDragging: false,\n mode: 'select',\n };\n }\n\n componentDidMount(): void {\n window.addEventListener('blur', this.handleBlur, true);\n window.addEventListener('mousemove', this.handleMouseMove, true);\n window.addEventListener('mouseup', this.handleMouseUp, true);\n window.addEventListener('keydown', this.handleKeyDown, true);\n window.addEventListener('keyup', this.handleKeyUp, true);\n window.addEventListener('resize', this.handleResize, true);\n }\n\n // eslint-disable-next-line react/sort-comp\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('blur', this.handleBlur, true);\n window.removeEventListener('mousemove', this.handleMouseMove, true);\n window.removeEventListener('mouseup', this.handleMouseUp, true);\n window.removeEventListener('keydown', this.handleKeyDown, true);\n window.removeEventListener('keyup', this.handleKeyUp, true);\n window.removeEventListener('resize', this.handleResize, true);\n }\n\n dialogRef: React.RefObject<HTMLInputElement>;\n\n /** Gets the on screen points for a link start or end spec */\n getPointFromLinkPoint(linkPoint: LinkPoint): LinkerCoordinate {\n const { panelManager, linkTargetPropMap } = this.props;\n const { panelId: linkPointId, columnName } = linkPoint;\n\n let panelId = linkPointId;\n const linkTargetHandlers = linkTargetPropMap.get(linkPointId);\n\n if (linkTargetHandlers != null) {\n panelId = linkTargetHandlers.panelId;\n const coordinates = linkTargetHandlers.getCoordinates(columnName);\n if (coordinates != null) {\n return coordinates;\n }\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (linkTargetHandlers == null && panel != null) {\n if (!isLinkableFromPanel(panel)) {\n throw new Error(\n `Panel does not have getCoordinateForColumn method: ${panelId}`\n );\n }\n try {\n // TODO: remove try/catch when IDS-7371 is fixed.\n // getCoordinateForColumn throws an exception when accessing\n // columns on a model while it reconnects\n const coordinate = panel.getCoordinateForColumn(columnName);\n if (coordinate != null) {\n return coordinate;\n }\n } catch (e) {\n log.error('Could not get coordinate for column', columnName, panel);\n }\n }\n // Fallback to panel container if the panel itself\n // crashed, unmounted, and removed from openedPanelMap.\n const glContainer = panelManager.getContainerByPanelId(panelId);\n if (glContainer == null) {\n throw new Error(`Unable to find panel container for id: ${panelId}`);\n }\n return LayoutUtils.getTabPoint(glContainer as unknown as Container);\n }\n\n handleOperatorChanged(linkId: string, type: FilterTypeValue): void {\n const { links, onLinksUpdated } = this.props;\n const newLinks: Link[] = links.map(link =>\n link.id === linkId ? { ...link, operator: type } : link\n );\n onLinksUpdated(newLinks);\n }\n\n handleBlur(): void {\n this.setState({ mode: 'select' });\n }\n\n handleResize(): void {\n const { dialog } = this.state;\n if (dialog && this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n const dialogX = clamp(dialog.x, 0, window.innerWidth - rect.width);\n const dialogY = clamp(dialog.y, 0, window.innerHeight - rect.height);\n this.setState({\n dialog: { x: dialogX, y: dialogY },\n });\n }\n }\n\n handleMouseMove(event: MouseEvent): void {\n const { offset, isDragging } = this.state;\n this.setState({\n mouse: { x: event.clientX, y: event.clientY },\n });\n\n if (isDragging && this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n const dialogX = clamp(\n window.innerWidth - (event.clientX + rect.width + offset.x),\n 0,\n window.innerWidth - rect.width\n );\n\n const dialogY = clamp(\n window.innerHeight - (event.clientY + rect.height + offset.y),\n 0,\n window.innerHeight - rect.height\n );\n\n this.setState({\n dialog: { x: dialogX, y: dialogY },\n });\n }\n }\n\n handleMouseDown(event: React.MouseEvent): void {\n event.preventDefault();\n const offset: Point = { x: 0, y: 0 };\n if (this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n offset.x = rect.right - (rect.width + event.clientX);\n offset.y = rect.bottom - (rect.height + event.clientY);\n }\n this.setState({\n isDragging: true,\n offset,\n });\n }\n\n handleMouseUp(): void {\n this.setState({\n isDragging: false,\n });\n }\n\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'delete',\n });\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n const { selectedIds, onLinkDeleted } = this.props;\n event.preventDefault();\n selectedIds.forEach(id => onLinkDeleted(id));\n }\n }\n\n handleKeyUp(event: KeyboardEvent): void {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'select',\n });\n }\n }\n\n handleEscapePressed(): void {\n const { onCancel } = this.props;\n onCancel();\n }\n\n render(): JSX.Element {\n const {\n disabled,\n links,\n selectedIds,\n messageText,\n onLinkSelected,\n onLinkDeleted,\n onAllLinksDeleted,\n onDone,\n } = this.props;\n\n const { mouse, dialog, isDragging, mode } = this.state;\n const visibleLinks = links\n .map(link => {\n try {\n const { id, type, isReversed, start, end, operator } = link;\n const startColumnType = start.columnType;\n let [x1, y1] = this.getPointFromLinkPoint(start);\n let x2 = mouse?.x ?? x1;\n let y2 = mouse?.y ?? y1;\n if (end != null) {\n [x2, y2] = this.getPointFromLinkPoint(end);\n }\n if (isReversed != null && isReversed) {\n const [tmpX, tmpY] = [x1, y1];\n [x1, y1] = [x2, y2];\n [x2, y2] = [tmpX, tmpY];\n }\n const className = classNames(\n 'linker-link',\n { disabled },\n { 'link-filter-source': type === 'filterSource' },\n { 'link-invalid': type === 'invalid' },\n { interactive: link.end == null },\n { 'link-is-selected': selectedIds.has(id) },\n { 'danger-delete': mode === 'delete' }\n );\n return {\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type,\n };\n } catch (error) {\n log.warn('Unable to get point for link', link, error);\n return null;\n }\n })\n .filter(item => item != null) as VisibleLink[];\n\n return (\n <div\n className={classNames('linker-overlay', {\n 'danger-delete': mode === 'delete',\n })}\n >\n {visibleLinks.map(\n ({\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type,\n }) => (\n <LinkerLink\n className={className}\n id={id}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n key={id}\n onClick={onLinkSelected}\n onDelete={onLinkDeleted}\n isSelected={selectedIds.has(id)}\n operator={operator}\n startColumnType={startColumnType}\n type={type}\n onOperatorChanged={this.handleOperatorChanged}\n />\n )\n )}\n <div\n className={classNames('linker-toast-dialog', {\n dragging: isDragging,\n })}\n ref={this.dialogRef}\n style={{ bottom: dialog?.y, right: dialog?.x }}\n data-testid=\"linker-toast-dialog\"\n >\n <Button\n draggable\n kind=\"inline\"\n className=\"btn-drag-handle\"\n icon={vsGripper}\n onClick={() => {\n // no-op\n }}\n onMouseDown={this.handleMouseDown}\n >\n {!isDragging && <Tooltip>Drag to reposition</Tooltip>}\n </Button>\n <div className=\"toast-body\">{messageText}</div>\n <div className=\"toast-footer\">\n <Button kind=\"secondary\" onClick={onAllLinksDeleted}>\n Clear All\n </Button>\n <Button kind=\"primary\" onClick={onDone}>\n Done\n </Button>\n </div>\n </div>\n <ContextActions\n actions={[\n {\n action: this.handleEscapePressed,\n shortcut: GLOBAL_SHORTCUTS.LINKER_CLOSE,\n isGlobal: true,\n },\n ]}\n />\n </div>\n );\n }\n}\n\nexport default LinkerOverlayContent;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LinkerOverlayContent.js","names":["React","Component","classNames","Button","ContextActions","GLOBAL_SHORTCUTS","Tooltip","LayoutUtils","Log","vsGripper","Type","FilterType","clamp","isLinkableFromPanel","LinkerLink","jsx","_jsx","jsxs","_jsxs","log","module","LinkerOverlayContent","constructor","props","_defineProperty","handleBlur","bind","handleResize","handleMouseMove","handleMouseDown","handleMouseUp","handleKeyDown","handleKeyUp","handleEscapePressed","handleOperatorChanged","dialogRef","createRef","state","mouse","undefined","dialog","offset","x","y","isDragging","mode","componentDidMount","window","addEventListener","componentDidCatch","error","info","componentWillUnmount","removeEventListener","getPointFromLinkPoint","linkPoint","panelManager","linkTargetPropMap","panelId","linkPointId","columnName","linkTargetHandlers","get","coordinates","getCoordinates","panel","getOpenedPanelById","Error","concat","coordinate","getCoordinateForColumn","e","glContainer","getContainerByPanelId","getTabPoint","linkId","type","links","onLinksUpdated","newLinks","map","link","id","_objectSpread","operator","setState","current","rect","getBoundingClientRect","dialogX","innerWidth","width","dialogY","innerHeight","height","event","clientX","clientY","preventDefault","right","bottom","key","selectedIds","onLinkDeleted","forEach","onCancel","render","disabled","messageText","onLinkSelected","onAllLinksDeleted","onDone","visibleLinks","_mouse$x","_mouse$y","isReversed","start","end","startColumnType","columnType","x1","y1","x2","y2","tmpX","tmpY","className","interactive","has","warn","filter","item","children","_ref","onClick","onDelete","isSelected","eq","onOperatorChanged","dragging","ref","style","draggable","kind","icon","onMouseDown","actions","action","shortcut","LINKER_CLOSE","isGlobal"],"sources":["../../src/linker/LinkerOverlayContent.tsx"],"sourcesContent":["import React, { Component, type ErrorInfo } from 'react';\nimport classNames from 'classnames';\nimport {\n Button,\n ContextActions,\n GLOBAL_SHORTCUTS,\n Tooltip,\n} from '@deephaven/components';\nimport { LayoutUtils, type PanelManager } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type { Container } from '@deephaven/golden-layout';\nimport { vsGripper } from '@deephaven/icons';\nimport {\n type TypeValue as FilterTypeValue,\n Type as FilterType,\n} from '@deephaven/filters';\nimport clamp from 'lodash.clamp';\nimport {\n isLinkableFromPanel,\n type Link,\n type LinkerCoordinate,\n type LinkPoint,\n type LinkType,\n} from './LinkerUtils';\nimport LinkerLink from './LinkerLink';\nimport './LinkerOverlayContent.scss';\nimport { type LinkTargetProps } from './LinkerEvent';\n\nconst log = Log.module('LinkerOverlayContent');\n\nexport type VisibleLink = {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n id: string;\n className: string;\n type: LinkType;\n operator: FilterTypeValue;\n startColumnType: string | null;\n};\n\nexport type LinkerOverlayContentProps = {\n disabled?: boolean;\n links: Link[];\n selectedIds: Set<string>;\n messageText: string;\n onLinkSelected: (linkId: string) => void;\n onLinkDeleted: (linkId: string) => void;\n onAllLinksDeleted: () => void;\n onLinksUpdated: (newLinks: Link[]) => void;\n onCancel: () => void;\n onDone: () => void;\n panelManager: PanelManager;\n linkTargetPropMap: Map<string, LinkTargetProps>;\n};\n\ntype Point = { x: number; y: number };\n\nexport type LinkerOverlayContentState = {\n mouse?: Point;\n dialog?: Point;\n offset: Point;\n isDragging: boolean;\n mode: 'select' | 'delete';\n};\n\nexport class LinkerOverlayContent extends Component<\n LinkerOverlayContentProps,\n LinkerOverlayContentState\n> {\n static defaultProps = {\n disabled: 'false',\n };\n\n constructor(props: LinkerOverlayContentProps) {\n super(props);\n\n this.handleBlur = this.handleBlur.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n this.handleMouseUp = this.handleMouseUp.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.handleEscapePressed = this.handleEscapePressed.bind(this);\n this.handleOperatorChanged = this.handleOperatorChanged.bind(this);\n\n this.dialogRef = React.createRef();\n\n this.state = {\n mouse: undefined,\n dialog: undefined,\n offset: { x: 0, y: 0 },\n isDragging: false,\n mode: 'select',\n };\n }\n\n componentDidMount(): void {\n window.addEventListener('blur', this.handleBlur, true);\n window.addEventListener('mousemove', this.handleMouseMove, true);\n window.addEventListener('mouseup', this.handleMouseUp, true);\n window.addEventListener('keydown', this.handleKeyDown, true);\n window.addEventListener('keyup', this.handleKeyUp, true);\n window.addEventListener('resize', this.handleResize, true);\n }\n\n // eslint-disable-next-line react/sort-comp\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('blur', this.handleBlur, true);\n window.removeEventListener('mousemove', this.handleMouseMove, true);\n window.removeEventListener('mouseup', this.handleMouseUp, true);\n window.removeEventListener('keydown', this.handleKeyDown, true);\n window.removeEventListener('keyup', this.handleKeyUp, true);\n window.removeEventListener('resize', this.handleResize, true);\n }\n\n dialogRef: React.RefObject<HTMLInputElement>;\n\n /** Gets the on screen points for a link start or end spec */\n getPointFromLinkPoint(linkPoint: LinkPoint): LinkerCoordinate {\n const { panelManager, linkTargetPropMap } = this.props;\n const { panelId: linkPointId, columnName } = linkPoint;\n\n let panelId = linkPointId;\n const linkTargetHandlers = linkTargetPropMap.get(linkPointId);\n\n if (linkTargetHandlers != null) {\n panelId = linkTargetHandlers.panelId;\n const coordinates = linkTargetHandlers.getCoordinates(columnName);\n if (coordinates != null) {\n return coordinates;\n }\n }\n\n const panel = panelManager.getOpenedPanelById(panelId);\n if (linkTargetHandlers == null && panel != null) {\n if (!isLinkableFromPanel(panel)) {\n throw new Error(\n `Panel does not have getCoordinateForColumn method: ${panelId}`\n );\n }\n try {\n // TODO: remove try/catch when IDS-7371 is fixed.\n // getCoordinateForColumn throws an exception when accessing\n // columns on a model while it reconnects\n const coordinate = panel.getCoordinateForColumn(columnName);\n if (coordinate != null) {\n return coordinate;\n }\n } catch (e) {\n log.error('Could not get coordinate for column', columnName, panel);\n }\n }\n // Fallback to panel container if the panel itself\n // crashed, unmounted, and removed from openedPanelMap.\n const glContainer = panelManager.getContainerByPanelId(panelId);\n if (glContainer == null) {\n throw new Error(`Unable to find panel container for id: ${panelId}`);\n }\n return LayoutUtils.getTabPoint(glContainer as unknown as Container);\n }\n\n handleOperatorChanged(linkId: string, type: FilterTypeValue): void {\n const { links, onLinksUpdated } = this.props;\n const newLinks: Link[] = links.map(link =>\n link.id === linkId ? { ...link, operator: type } : link\n );\n onLinksUpdated(newLinks);\n }\n\n handleBlur(): void {\n this.setState({ mode: 'select' });\n }\n\n handleResize(): void {\n const { dialog } = this.state;\n if (dialog && this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n const dialogX = clamp(dialog.x, 0, window.innerWidth - rect.width);\n const dialogY = clamp(dialog.y, 0, window.innerHeight - rect.height);\n this.setState({\n dialog: { x: dialogX, y: dialogY },\n });\n }\n }\n\n handleMouseMove(event: MouseEvent): void {\n const { offset, isDragging } = this.state;\n this.setState({\n mouse: { x: event.clientX, y: event.clientY },\n });\n\n if (isDragging && this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n const dialogX = clamp(\n window.innerWidth - (event.clientX + rect.width + offset.x),\n 0,\n window.innerWidth - rect.width\n );\n\n const dialogY = clamp(\n window.innerHeight - (event.clientY + rect.height + offset.y),\n 0,\n window.innerHeight - rect.height\n );\n\n this.setState({\n dialog: { x: dialogX, y: dialogY },\n });\n }\n }\n\n handleMouseDown(event: React.MouseEvent): void {\n event.preventDefault();\n const offset: Point = { x: 0, y: 0 };\n if (this.dialogRef.current) {\n const rect = this.dialogRef.current.getBoundingClientRect();\n offset.x = rect.right - (rect.width + event.clientX);\n offset.y = rect.bottom - (rect.height + event.clientY);\n }\n this.setState({\n isDragging: true,\n offset,\n });\n }\n\n handleMouseUp(): void {\n this.setState({\n isDragging: false,\n });\n }\n\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'delete',\n });\n } else if (event.key === 'Delete' || event.key === 'Backspace') {\n const { selectedIds, onLinkDeleted } = this.props;\n event.preventDefault();\n selectedIds.forEach(id => onLinkDeleted(id));\n }\n }\n\n handleKeyUp(event: KeyboardEvent): void {\n if (event.key === 'Alt') {\n event.preventDefault();\n this.setState({\n mode: 'select',\n });\n }\n }\n\n handleEscapePressed(): void {\n const { onCancel } = this.props;\n onCancel();\n }\n\n render(): JSX.Element {\n const {\n disabled,\n links,\n selectedIds,\n messageText,\n onLinkSelected,\n onLinkDeleted,\n onAllLinksDeleted,\n onDone,\n } = this.props;\n\n const { mouse, dialog, isDragging, mode } = this.state;\n const visibleLinks = links\n .map(link => {\n try {\n const { id, type, isReversed, start, end, operator } = link;\n const startColumnType = start.columnType;\n let [x1, y1] = this.getPointFromLinkPoint(start);\n let x2 = mouse?.x ?? x1;\n let y2 = mouse?.y ?? y1;\n if (end != null) {\n [x2, y2] = this.getPointFromLinkPoint(end);\n }\n if (isReversed != null && isReversed) {\n const [tmpX, tmpY] = [x1, y1];\n [x1, y1] = [x2, y2];\n [x2, y2] = [tmpX, tmpY];\n }\n const className = classNames(\n 'linker-link',\n { disabled },\n { 'link-filter-source': type === 'filterSource' },\n { 'link-invalid': type === 'invalid' },\n { interactive: link.end == null },\n { 'link-is-selected': selectedIds.has(id) },\n { 'danger-delete': mode === 'delete' }\n );\n return {\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type,\n } as const;\n } catch (error) {\n log.warn('Unable to get point for link', link, error);\n return null;\n }\n })\n .filter(item => item != null);\n\n return (\n <div\n className={classNames('linker-overlay', {\n 'danger-delete': mode === 'delete',\n })}\n >\n {visibleLinks.map(\n ({\n x1,\n y1,\n x2,\n y2,\n id,\n className,\n operator,\n startColumnType,\n type,\n }) => (\n <LinkerLink\n className={className}\n id={id}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n key={id}\n onClick={onLinkSelected}\n onDelete={onLinkDeleted}\n isSelected={selectedIds.has(id)}\n operator={operator ?? FilterType.eq}\n startColumnType={startColumnType}\n type={type}\n onOperatorChanged={this.handleOperatorChanged}\n />\n )\n )}\n <div\n className={classNames('linker-toast-dialog', {\n dragging: isDragging,\n })}\n ref={this.dialogRef}\n style={{ bottom: dialog?.y, right: dialog?.x }}\n data-testid=\"linker-toast-dialog\"\n >\n <Button\n draggable\n kind=\"inline\"\n className=\"btn-drag-handle\"\n icon={vsGripper}\n onClick={() => {\n // no-op\n }}\n onMouseDown={this.handleMouseDown}\n >\n {!isDragging && <Tooltip>Drag to reposition</Tooltip>}\n </Button>\n <div className=\"toast-body\">{messageText}</div>\n <div className=\"toast-footer\">\n <Button kind=\"secondary\" onClick={onAllLinksDeleted}>\n Clear All\n </Button>\n <Button kind=\"primary\" onClick={onDone}>\n Done\n </Button>\n </div>\n </div>\n <ContextActions\n actions={[\n {\n action: this.handleEscapePressed,\n shortcut: GLOBAL_SHORTCUTS.LINKER_CLOSE,\n isGlobal: true,\n },\n ]}\n />\n </div>\n );\n }\n}\n\nexport default LinkerOverlayContent;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerUtils.d.ts","sourceRoot":"","sources":["../../src/linker/LinkerUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,KAAK,SAAS,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGvE,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,cAAc,GAAG,WAAW,GAAG,WAAW,CAAC;AAE9E,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI;IACvC,QAAQ,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"LinkerUtils.d.ts","sourceRoot":"","sources":["../../src/linker/LinkerUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,KAAK,SAAS,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGvE,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,cAAc,GAAG,WAAW,GAAG,WAAW,CAAC;AAE9E,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI;IACvC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;IACT,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC5C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AAG5E,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhD,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG;IAC/C,sBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,gBAAgB,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG;IAC9C,YAAY,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IACjD,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC/D,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,cAAc,GACpB,KAAK,IAAI,iBAAiB,CAG5B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,IAAI,aAAa,CAO7E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAM5D;AAID;;GAEG;AACH,cAAM,WAAW;IACf;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAChB,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,SAAS,EACd,qBAAqB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GACxC,OAAO;IAiCV;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CACf,OAAO,EAAE,SAAS,UAAU,EAAE,EAC9B,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,SAAS,GACpC,UAAU,GAAG,SAAS;IAMzB;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CACvB,KAAK,EAAE,IAAI,EAAE,EACb,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,MAAM,GACd,IAAI,EAAE;CAmBV;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerUtils.js","names":["nanoid","TableUtils","Log","isLinkableFromPanel","panel","p","getCoordinateForColumn","isLinkablePanel","setFilterMap","unsetFilterValue","isLinkableColumn","column","description","startsWith","log","module","LinkerUtils","isLinkValid","start","end","isolatedLinkerPanelId","panelId","debug2","columnType","startColumnType","endColumnType","isCompatibleType","findColumn","columns","_ref","columnName","find","_ref2","name","type","cloneLinksForPanel","links","cloneId","clonedLinks","forEach","link","_link$end","push","_objectSpread","id"],"sources":["../../src/linker/LinkerUtils.ts"],"sourcesContent":["import { nanoid } from 'nanoid';\nimport { type PanelComponent } from '@deephaven/dashboard';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { type TypeValue as FilterTypeValue } from '@deephaven/filters';\nimport Log from '@deephaven/log';\n\nexport type LinkType = 'invalid' | 'filterSource' | 'tableLink' | 'chartLink';\n\nexport type LinkPoint = {\n panelId: string;\n columnName: string;\n columnType: string | null;\n};\n\nexport type LinkPointOptions = {\n /**\n * The type of link this point is associated with.\n * If this point is the end point of a link, this will set the type of the link.\n */\n type: LinkType;\n};\n\nexport type Link = {\n start: LinkPoint;\n end?: LinkPoint;\n id: string;\n isReversed?: boolean;\n type: LinkType;\n operator?: FilterTypeValue;\n};\n\nexport type LinkColumn = {\n name: string;\n type: string | null;\n description?: string | null;\n};\n\nexport type LinkDataValue<T = unknown> = {\n operator
|
|
1
|
+
{"version":3,"file":"LinkerUtils.js","names":["nanoid","TableUtils","Log","isLinkableFromPanel","panel","p","getCoordinateForColumn","isLinkablePanel","setFilterMap","unsetFilterValue","isLinkableColumn","column","description","startsWith","log","module","LinkerUtils","isLinkValid","start","end","isolatedLinkerPanelId","panelId","debug2","columnType","startColumnType","endColumnType","isCompatibleType","findColumn","columns","_ref","columnName","find","_ref2","name","type","cloneLinksForPanel","links","cloneId","clonedLinks","forEach","link","_link$end","push","_objectSpread","id"],"sources":["../../src/linker/LinkerUtils.ts"],"sourcesContent":["import { nanoid } from 'nanoid';\nimport { type PanelComponent } from '@deephaven/dashboard';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { type TypeValue as FilterTypeValue } from '@deephaven/filters';\nimport Log from '@deephaven/log';\n\nexport type LinkType = 'invalid' | 'filterSource' | 'tableLink' | 'chartLink';\n\nexport type LinkPoint = {\n panelId: string;\n columnName: string;\n columnType: string | null;\n};\n\nexport type LinkPointOptions = {\n /**\n * The type of link this point is associated with.\n * If this point is the end point of a link, this will set the type of the link.\n */\n type: LinkType;\n};\n\nexport type Link = {\n start: LinkPoint;\n end?: LinkPoint;\n id: string;\n isReversed?: boolean;\n type: LinkType;\n operator?: FilterTypeValue;\n};\n\nexport type LinkColumn = {\n name: string;\n type: string | null;\n description?: string | null;\n};\n\nexport type LinkDataValue<T = unknown> = {\n operator?: FilterTypeValue; // Default behavior treats no operator as equals\n text: string;\n value: T;\n startColumnIndex: number;\n};\n\nexport type LinkFilterMapValue<T = unknown> = {\n columnType: string | null;\n filterList: LinkDataValue<T>[];\n};\n\nexport type LinkFilterMap<T = unknown> = Map<string, LinkFilterMapValue<T>>;\n\n// [x,y] screen coordinates used by the Linker\nexport type LinkerCoordinate = [number, number];\n\nexport type LinkableFromPanel = PanelComponent & {\n getCoordinateForColumn: (name: string) => LinkerCoordinate;\n};\n\nexport type LinkablePanel = LinkableFromPanel & {\n setFilterMap: (filterMap: LinkFilterMap) => void;\n unsetFilterValue: (name: string, type: string | null) => void;\n};\n\nexport function isLinkableFromPanel(\n panel: PanelComponent\n): panel is LinkableFromPanel {\n const p = panel as LinkableFromPanel;\n return typeof p.getCoordinateForColumn === 'function';\n}\n\nexport function isLinkablePanel(panel: PanelComponent): panel is LinkablePanel {\n const p = panel as LinkablePanel;\n return (\n isLinkableFromPanel(panel) &&\n typeof p.setFilterMap === 'function' &&\n typeof p.unsetFilterValue === 'function'\n );\n}\n\nexport function isLinkableColumn(column: LinkColumn): boolean {\n // TODO: core/#3358 Use preview/original type property instead of checking description\n return (\n column.description == null ||\n !column.description.startsWith('Preview of type: ')\n );\n}\n\nconst log = Log.module('LinkerUtils');\n\n/**\n * Collection of utility functions for use with the Linker\n */\nclass LinkerUtils {\n /**\n * Retrieve the type of link given parameters.\n * @param start The link start\n * @param end The link end\n * @param isolatedLinkerPanelId Whether there's an isolated linker\n * @returns The type of link, or invalid if there's an error\n */\n static isLinkValid(\n start: LinkPoint,\n end: LinkPoint,\n isolatedLinkerPanelId?: string | string[]\n ): boolean {\n // Panel compatibility checks:\n // Link ends should point to different non-null panelIds\n // For isolated linker one of the panels should match isolated panel id\n if (\n start.panelId == null ||\n end.panelId == null ||\n start.panelId === end.panelId ||\n (isolatedLinkerPanelId != null &&\n isolatedLinkerPanelId !== start.panelId &&\n isolatedLinkerPanelId !== end.panelId)\n ) {\n log.debug2('Incompatible panel ids', start, end, isolatedLinkerPanelId);\n return false;\n }\n\n // Check column type compatibility\n const { columnType: startColumnType } = start;\n const { columnType: endColumnType } = end;\n\n // Null columnType in ending link point allows linking to any type\n const isCompatibleType =\n endColumnType === null ||\n TableUtils.isCompatibleType(startColumnType, endColumnType);\n\n if (!isCompatibleType) {\n log.debug2('Incompatible type', startColumnType, endColumnType);\n return false;\n }\n\n return true;\n }\n\n /**\n * Find column matching the link point\n * @param columns Columns to search in\n * @param linkPoint Link point to find column for\n * @param linkPoint.columnName Column name to find\n * @param linkPoint.columnType Column type to find\n * @returns Column matching the link point, undefined if not found\n */\n static findColumn(\n columns: readonly LinkColumn[],\n { columnName, columnType }: LinkPoint\n ): LinkColumn | undefined {\n return columns.find(\n ({ name, type }) => name === columnName && type === columnType\n );\n }\n\n /**\n * Clone links for a given panel id\n * @param links Original links array\n * @param panelId Original panel id\n * @param cloneId Cloned panel id\n * @returns Cloned links array or empty array if no new links added\n */\n static cloneLinksForPanel(\n links: Link[],\n panelId: string | string[],\n cloneId: string\n ): Link[] {\n const clonedLinks: Link[] = [];\n links.forEach(link => {\n if (link.start.panelId === panelId && link.type !== 'filterSource') {\n clonedLinks.push({\n ...link,\n id: nanoid(),\n start: { ...link.start, panelId: cloneId },\n });\n } else if (link.end?.panelId === panelId) {\n clonedLinks.push({\n ...link,\n id: nanoid(),\n end: { ...link.end, panelId: cloneId },\n });\n }\n });\n return clonedLinks;\n }\n}\n\nexport default LinkerUtils;\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { PureComponent, type ReactElement, type ReactNode, type RefObject } from 'react';
|
|
2
2
|
import { type DashboardPanelProps, type PanelComponent } from '@deephaven/dashboard';
|
|
3
|
-
import { type IrisGridType, IrisGridModel, type ColumnName, type PendingDataMap, type InputFilter, type IrisGridThemeType, type ReadonlyAdvancedFilterMap, type AggregationSettings, type AdvancedSettingsType, type UIRollupConfig, type UIRow, type ReadonlyQuickFilterMap, type FilterMap, type QuickFilter, type AdvancedFilter, type SidebarFormattingRule, type IrisGridState, type ChartBuilderSettings, type DehydratedIrisGridState, type DehydratedIrisGridPanelState, type ColumnHeaderGroup, type IrisGridContextMenuData, type PartitionConfig } from '@deephaven/iris-grid';
|
|
3
|
+
import { type IrisGridType, IrisGridModel, type ColumnName, type PendingDataMap, type InputFilter, type IrisGridThemeType, type ReadonlyAdvancedFilterMap, type AggregationSettings, type AdvancedSettingsType, type UIRollupConfig, type UIRow, type ReadonlyQuickFilterMap, type FilterMap, type QuickFilter, type AdvancedFilter, type SidebarFormattingRule, type IrisGridState, type ChartBuilderSettings, type DehydratedIrisGridState, type DehydratedIrisGridPanelState, type ColumnHeaderGroup, type IrisGridContextMenuData, type PartitionConfig, type IrisGridRenderer, type MouseHandlersProp } from '@deephaven/iris-grid';
|
|
4
4
|
import { type RowDataMap, type FormattingRule } from '@deephaven/jsapi-utils';
|
|
5
5
|
import { type User, type WorkspaceSettings } from '@deephaven/redux';
|
|
6
6
|
import { type CancelablePromise, type EventT } from '@deephaven/utils';
|
|
@@ -43,7 +43,9 @@ export interface OwnProps extends DashboardPanelProps {
|
|
|
43
43
|
getDownloadWorker?: () => Promise<ServiceWorker>;
|
|
44
44
|
/** Load a plugin defined by the table */
|
|
45
45
|
loadPlugin: (pluginName: string) => TablePluginComponent;
|
|
46
|
-
theme?: IrisGridThemeType
|
|
46
|
+
theme?: Partial<IrisGridThemeType> & Record<string, unknown>;
|
|
47
|
+
mouseHandlers?: MouseHandlersProp;
|
|
48
|
+
renderer?: IrisGridRenderer;
|
|
47
49
|
}
|
|
48
50
|
interface StateProps {
|
|
49
51
|
inputFilters: InputFilter[];
|
|
@@ -180,7 +182,7 @@ export declare class IrisGridPanel extends PureComponent<IrisGridPanelProps, Iri
|
|
|
180
182
|
updateGrid(): void;
|
|
181
183
|
render(): ReactElement;
|
|
182
184
|
}
|
|
183
|
-
declare const ConnectedIrisGridPanel: import("react-redux").ConnectedComponent<typeof IrisGridPanel, import("react-redux").Omit<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "glEventHub" | "children" | "glContainer" | "metadata" | "panelState" | "makeModel" | "localDashboardId" | "theme" | "getDownloadWorker" | "loadPlugin" | keyof StateProps | keyof React.ClassAttributes<IrisGridPanel>> & Partial<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "onStateChange" | "onPanelStateUpdate">> & Partial<Pick<{
|
|
185
|
+
declare const ConnectedIrisGridPanel: import("react-redux").ConnectedComponent<typeof IrisGridPanel, import("react-redux").Omit<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "glEventHub" | "children" | "glContainer" | "metadata" | "panelState" | "makeModel" | "localDashboardId" | "theme" | "getDownloadWorker" | "loadPlugin" | "mouseHandlers" | "renderer" | keyof StateProps | keyof React.ClassAttributes<IrisGridPanel>> & Partial<Pick<React.ClassAttributes<IrisGridPanel> & OwnProps & StateProps, "onStateChange" | "onPanelStateUpdate">> & Partial<Pick<{
|
|
184
186
|
onStateChange: () => void;
|
|
185
187
|
onPanelStateUpdate: () => void;
|
|
186
188
|
}, never>>, "user" | "settings" | "inputFilters" | "links" | "columnSelectionValidator"> & OwnProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -824,8 +824,10 @@ export class IrisGridPanel extends PureComponent {
|
|
|
824
824
|
inputFilters,
|
|
825
825
|
links,
|
|
826
826
|
metadata,
|
|
827
|
+
mouseHandlers,
|
|
827
828
|
panelState,
|
|
828
829
|
user,
|
|
830
|
+
renderer,
|
|
829
831
|
settings,
|
|
830
832
|
theme
|
|
831
833
|
} = this.props;
|
|
@@ -919,11 +921,13 @@ export class IrisGridPanel extends PureComponent {
|
|
|
919
921
|
isSelectingPartition: isSelectingPartition,
|
|
920
922
|
isStuckToBottom: isStuckToBottom,
|
|
921
923
|
isStuckToRight: isStuckToRight,
|
|
924
|
+
mouseHandlers: mouseHandlers,
|
|
922
925
|
movedColumns: movedColumns,
|
|
923
926
|
movedRows: movedRows,
|
|
924
927
|
partitions: partitions,
|
|
925
928
|
partitionConfig: partitionConfig,
|
|
926
929
|
quickFilters: quickFilters,
|
|
930
|
+
renderer: renderer,
|
|
927
931
|
reverse: reverse,
|
|
928
932
|
rollupConfig: rollupConfig,
|
|
929
933
|
settings: settings,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridPanel.js","names":["React","PureComponent","memoize","connect","debounce","DEFAULT_DASHBOARD_ID","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridCacheUtils","IrisGridUtils","isIrisGridTableModelTemplate","Log","getSettings","getUser","assertNotNull","PromiseUtils","clamp","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","WidgetPanel","IrisGridPanelTooltip","isIrisGridPanelMetadata","isLegacyIrisGridPanelMetadata","emitFilterColumnsChanged","emitFilterTableChanged","emitLinkPointSelected","emitLinkSourceDataSelected","jsx","_jsx","log","module","DEBOUNCE_PANEL_STATE_UPDATE","getTableNameFromMetadata","metadata","Error","name","table","concat","JSON","stringify","IrisGridPanel","constructor","props","_defineProperty","makeMemoizedGridStateDehydrator","makeMemoizedIrisGridStateDehydrator","columns","inputFilters","getInputFiltersForColumns","filter","_ref","value","excludePanelIds","id","getIdFromPanel","includes","dashboardLinks","pluginFetchColumns","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","model","pluginState","_this$irisGrid$curren","deprecatedProps","panel","className","children","_objectSpread","ref","pluginRef","handlePluginFilter","fetchColumns","handlePluginFetchColumns","tableName","getTableName","selectedRanges","irisGrid","current","state","onStateChange","handlePluginStateChange","isSelectingPartition","partitions","advancedSettings","dehydrateIrisGridPanelState","irisGridPanelState","irisGridState","gridState","description","type","displayType","onPanelStateUpdate","panelState","oldPanelState","irisGridUtils","getCachedPanelState","getDehydratedIrisGridPanelState","irisGridStateDehydrator","gridStateDehydrator","debug","setState","handleAdvancedSettingsChange","bind","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handleCreateChart","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","advancedFilters","Map","aggregationSettings","aggregations","showOnTop","DEFAULTS","customColumns","customColumnFormatMap","columnAlignmentMap","isFilterBarShown","quickFilters","sorts","userColumnWidths","userRowHeights","reverse","movedColumns","movedRows","rollupConfig","showSearchBar","searchValue","selectedSearchColumns","invertSearchColumns","pluginFilters","modelQueue","pendingDataMap","frozenColumns","irisGridStateOverrides","gridStateOverrides","isStuckToBottom","isStuckToRight","conditionalFormats","selectDistinctColumns","componentDidMount","initModel","componentDidUpdate","prevProps","prevState","makeModel","stopModelListening","close","startModelListening","componentWillUnmount","savePanelState","cancel","modelPromise","makeCancelable","resolved","then","catch","modelParam","dh","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","key","_ref2","get","set","filters","_this$irisGridUtils$g","_this$irisGridUtils","formatter","getFiltersFromInputFilters","timeZone","data","_this$pluginRef$curre","_this$pluginRef$curre2","_this$pluginRef$curre3","getMenu","call","tableColumn","columnSelectionValidator","glEventHub","emit","STATE_CHANGED","event","sendColumnsChange","detail","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","column","row","dataMap","updateGrid","focus","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","addEventListener","EVENT","DISCONNECT","RECONNECT","COLUMNS_CHANGED","TABLE_CHANGED","removeEventListener","getCoordinateForColumn","_gridWrapper$getBound","_allColumnXs$get","_allColumnWidths$get","gridWrapper","rect","getBoundingClientRect","width","height","metrics","columnHeaderHeight","allColumnXs","allColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","columnWidth","x","left","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","_ref3","indexedQuickFilters","changeFilterColumnNamesToIndexes","_ref4","isFilterable","indexedAdvancedFilters","_ref5","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","columnHeaderGroups","partitionConfig","hydrateIrisGridState","hydrateGridState","_this$irisGrid$curren2","_this$irisGrid$curren3","grid","handleResize","render","_model$description","_panelState$pluginSta","glContainer","getDownloadWorker","links","user","theme","errorMessage","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","widgetPanelDescriptor","getWidgetPanelDescriptor","onClearAllFilters","onShow","onTabFocus","onTabClicked","componentPanel","descriptor","renderTabTooltip","alwaysFetchColumns","getAlwaysFetchColumns","columnAllowedCursor","columnNotAllowedCursor","copyCursor","getGridInputFilters","applyInputFiltersOnInit","isSelectingColumn","onColumnSelected","onCreateChart","onDataSelected","onError","onContextMenu","onAdvancedSettingsChange","customFilters","mapStateToProps","_ref6","localDashboardId","ConnectedIrisGridPanel","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 type ReactElement,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport {\n type DashboardPanelProps,\n DEFAULT_DASHBOARD_ID,\n LayoutUtils,\n type PanelComponent,\n type PanelMetadata,\n} from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n type IrisGridType,\n IrisGridModel,\n IrisGridCacheUtils,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n type ColumnName,\n type PendingDataMap,\n type InputFilter,\n type IrisGridThemeType,\n type ReadonlyAdvancedFilterMap,\n type AggregationSettings,\n type AdvancedSettingsType,\n type UIRollupConfig,\n type UIRow,\n type ReadonlyQuickFilterMap,\n type FilterMap,\n type QuickFilter,\n type AdvancedFilter,\n type SidebarFormattingRule,\n type IrisGridState,\n type ChartBuilderSettings,\n type DehydratedIrisGridState,\n type DehydratedIrisGridPanelState,\n type ColumnHeaderGroup,\n type IrisGridContextMenuData,\n type PartitionConfig,\n} from '@deephaven/iris-grid';\nimport {\n type RowDataMap,\n type AdvancedFilterOptions,\n type FormattingRule,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getSettings,\n getUser,\n type RootState,\n type User,\n type WorkspaceSettings,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n type CancelablePromise,\n type EventT,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ResolvableContextAction } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type GridState,\n type ModelIndex,\n type ModelSizeMap,\n type MoveOperation,\n} from '@deephaven/grid';\nimport type {\n TablePluginComponent,\n TablePluginElement,\n} from '@deephaven/plugin';\nimport clamp from 'lodash.clamp';\nimport { IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport WidgetPanel from './WidgetPanel';\nimport './IrisGridPanel.scss';\nimport {\n type Link,\n type LinkColumn,\n type LinkPointOptions,\n} from '../linker/LinkerUtils';\nimport IrisGridPanelTooltip from './IrisGridPanelTooltip';\nimport {\n isIrisGridPanelMetadata,\n isLegacyIrisGridPanelMetadata,\n} from './IrisGridPanelTypes';\nimport { type WidgetPanelDescriptor } from './WidgetPanelTypes';\nimport {\n emitFilterColumnsChanged,\n emitFilterTableChanged,\n} from '../FilterEvents';\nimport {\n emitLinkPointSelected,\n emitLinkSourceDataSelected,\n} from '../linker/LinkerEvent';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\ntype ModelQueueFunction = (model: IrisGridModel) => void;\n\ntype ModelQueue = ModelQueueFunction[];\n\nexport interface PanelState {\n gridState: {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: readonly {\n from: string | ModelIndex | [string, string] | [ModelIndex, ModelIndex];\n to: string | ModelIndex;\n }[];\n movedRows: readonly MoveOperation[];\n };\n irisGridState: DehydratedIrisGridState;\n irisGridPanelState: DehydratedIrisGridPanelState;\n pluginState: unknown;\n}\n\n// Some of the properties in the loaded panel state may be omitted\n// even though they can't be undefined in the dehydrated state.\n// This can happen when loading the state saved before the properties were added.\ntype LoadedPanelState = PanelState & {\n irisGridPanelState: PanelState['irisGridPanelState'] & {\n partitions?: (string | null)[];\n partition?: string | null;\n };\n};\n\nexport interface OwnProps extends DashboardPanelProps {\n children?: ReactNode;\n panelState?: LoadedPanelState | null;\n makeModel: () => IrisGridModel | Promise<IrisGridModel>;\n\n onStateChange?: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPanelStateUpdate?: (panelState: PanelState) => void;\n\n /** Override the default worker used by IrisGrid to download CSVs. */\n getDownloadWorker?: () => Promise<ServiceWorker>;\n\n /** Load a plugin defined by the table */\n loadPlugin: (pluginName: string) => TablePluginComponent;\n\n theme?: IrisGridThemeType;\n}\n\ninterface StateProps {\n inputFilters: InputFilter[];\n links: Link[];\n columnSelectionValidator?: (\n panel: PanelComponent,\n tableColumn: LinkColumn,\n options: LinkPointOptions\n ) => boolean;\n user: User;\n settings: WorkspaceSettings;\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: readonly SidebarFormattingRule[];\n selectDistinctColumns: readonly ColumnName[];\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n customColumns: readonly ColumnName[];\n customColumnFormatMap: Map<string, FormattingRule>;\n columnAlignmentMap: Map<string, CanvasTextAlign>;\n isFilterBarShown: boolean;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly dh.Sort[];\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n reverse: boolean;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n partitionConfig?: PartitionConfig;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: readonly string[];\n invertSearchColumns: boolean;\n Plugin?: TablePluginComponent;\n pluginFilters: readonly dh.FilterCondition[];\n pluginFetchColumns: readonly string[];\n modelQueue: ModelQueue;\n pendingDataMap?: PendingDataMap<UIRow>;\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\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\nfunction getTableNameFromMetadata(\n metadata: PanelMetadata | null | undefined\n): string {\n if (metadata == null) {\n throw new Error('No metadata provided');\n }\n if (isIrisGridPanelMetadata(metadata)) {\n return metadata.name;\n }\n if (isLegacyIrisGridPanelMetadata(metadata)) {\n return metadata.table;\n }\n\n throw new Error(\n `Unable to determine table name from metadata: ${JSON.stringify(metadata)}`\n );\n}\n\nexport type IrisGridPanelProps = OwnProps & StateProps;\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 =\n this.handleAdvancedSettingsChange.bind(this);\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.handleCreateChart = this.handleCreateChart.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 this.irisGridUtils = 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 columnAlignmentMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n reverse: false,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partitions: [],\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(\n prevProps: IrisGridPanelProps,\n prevState: IrisGridPanelState\n ): void {\n const { model } = this.state;\n const { makeModel } = this.props;\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 if (makeModel !== prevProps.makeModel) {\n this.initModel();\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<IrisGridType>;\n\n pluginRef: RefObject<TablePluginElement>;\n\n modelPromise?: CancelablePromise<IrisGridModel>;\n\n irisGridState?: IrisGridState;\n\n gridState?: GridState;\n\n pluginState: unknown;\n\n private irisGridUtils: IrisGridUtils | null;\n\n private gridStateDehydrator =\n IrisGridCacheUtils.makeMemoizedGridStateDehydrator();\n\n private irisGridStateDehydrator =\n IrisGridCacheUtils.makeMemoizedIrisGridStateDehydrator();\n\n getTableName(): string {\n const { metadata } = this.props;\n return getTableNameFromMetadata(metadata);\n }\n\n getGridInputFilters = memoize(\n (columns: readonly dh.Column[], inputFilters: readonly 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 ||\n (id != null && !excludePanelIds.includes(id)))\n );\n })\n )\n );\n\n getAlwaysFetchColumns = memoize(\n (\n dashboardLinks: readonly Link[],\n pluginFetchColumns: readonly string[]\n ): 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(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start != null && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n }\n );\n\n getPluginContent = memoize(\n (\n Plugin: TablePluginComponent | undefined,\n model: IrisGridModel | undefined,\n pluginState: unknown\n ) => {\n if (\n !model ||\n !isIrisGridTableModelTemplate(model) ||\n Plugin == null ||\n model.table == null\n ) {\n return null;\n }\n\n // TODO #2093: Find a better way to handle deprecated panel prop\n const deprecatedProps = {\n panel: this,\n };\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n model={model}\n table={model.table}\n tableName={this.getTableName()}\n selectedRanges={this.irisGrid.current?.state.selectedRanges}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...deprecatedProps}\n />\n </div>\n );\n }\n );\n\n getDehydratedIrisGridPanelState = memoize(\n (\n model: IrisGridModel,\n isSelectingPartition: boolean,\n partitions: (string | null)[],\n advancedSettings: Map<AdvancedSettingsType, boolean>\n ) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partitions,\n advancedSettings,\n })\n );\n\n getCachedPanelState = memoize(\n (\n irisGridPanelState: PanelState['irisGridPanelState'],\n irisGridState: PanelState['irisGridState'],\n gridState: PanelState['gridState'],\n pluginState: PanelState['pluginState']\n ): PanelState => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n getWidgetPanelDescriptor = memoize(\n (\n metadata: IrisGridPanelProps['metadata'],\n description?: string\n ): WidgetPanelDescriptor => {\n const name = getTableNameFromMetadata(metadata);\n return {\n type: 'Table',\n displayType: 'Table',\n ...metadata,\n name,\n description,\n };\n }\n );\n\n initModel(): void {\n this.setState({\n isModelReady: false,\n isLoading: true,\n error: null,\n isDisconnected: false,\n });\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 this.irisGridUtils = new IrisGridUtils(model.dh);\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 =\n this.irisGridUtils?.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n ) ?? [];\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns: string[]): void {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data: IrisGridContextMenuData): ResolvableContextAction[] {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn: dh.Column | null): boolean {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator && tableColumn) {\n return columnSelectionValidator(this, tableColumn, {\n type: 'tableLink',\n });\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: EventT): 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: EventT): void {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event as CustomEvent;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterTableChanged(glEventHub, panelId, table);\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 = this.getTableName();\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 ...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: dh.Column): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitLinkPointSelected(glEventHub, panelId, column, { type: 'tableLink' });\n }\n\n handleDataSelected(row: ModelIndex, dataMap: RowDataMap): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitLinkSourceDataSelected(glEventHub, panelId, dataMap);\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 != null && pluginName != null) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n }\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterTableChanged(glEventHub, panelId, 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: readonly dh.Column[]): void {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterColumnsChanged(glEventHub, panelId, 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 allColumnXs,\n allColumnWidths,\n right,\n columnHeaderMaxDepth,\n } = metrics;\n const columnIndex = model.getColumnIndexByName(columnName);\n assertNotNull(columnIndex);\n const visibleIndex = irisGrid.getVisibleColumn(columnIndex);\n const columnX = allColumnXs.get(visibleIndex) ?? 0;\n const columnWidth = allColumnWidths.get(visibleIndex) ?? 0;\n\n const x = clamp(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.left,\n rect.right\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: ReadonlyAdvancedFilterMap): 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 =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n assertNotNull(this.irisGridUtils);\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: this.irisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: this.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 // We need to define this so LinkerUtils#isLinkablePanel passes the check\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 =\n 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 =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedAdvancedFilters as unknown as {\n name: string;\n filter: { options: AdvancedFilterOptions };\n }[]\n );\n }\n const { isSelectingPartition, partitions, advancedSettings } =\n IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n assertNotNull(this.irisGridUtils);\n const {\n advancedFilters,\n customColumns,\n customColumnFormatMap,\n columnAlignmentMap,\n isFilterBarShown,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n // TODO:\n // DH-20403: IrisGrid should persist user column widths when the model initializes with a partial column list\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig,\n } = this.irisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n IrisGridUtils.hydrateGridState(\n model,\n { ...gridState, ...gridStateOverrides },\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n columnAlignmentMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partitions,\n quickFilters,\n reverse,\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 columnHeaderGroups,\n partitionConfig,\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 partitions,\n advancedSettings,\n } = this.state;\n assertNotNull(this.irisGridUtils);\n assertNotNull(model);\n assertNotNull(gridState);\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partitions,\n advancedSettings\n ),\n this.irisGridStateDehydrator(model, irisGridState),\n this.gridStateDehydrator(model, gridState),\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 settings,\n theme,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n columnAlignmentMap,\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 partitions,\n partitionConfig,\n quickFilters,\n reverse,\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 columnHeaderGroups,\n } = this.state;\n const errorMessage =\n error != null ? `Unable to open table. ${error}` : undefined;\n const description = model?.description ?? undefined;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ?? this.getPluginContent(Plugin, model, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n const widgetPanelDescriptor = this.getWidgetPanelDescriptor(\n metadata,\n description\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 onShow={this.handleShow}\n onTabFocus={this.handleShow}\n onTabClicked={this.handleTabClicked}\n componentPanel={this}\n descriptor={widgetPanelDescriptor}\n renderTabTooltip={() => (\n <IrisGridPanelTooltip\n descriptor={widgetPanelDescriptor}\n model={model}\n />\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=\"linker-not-allowed\"\n copyCursor=\"copy\"\n customColumns={customColumns}\n customColumnFormatMap={customColumnFormatMap}\n columnAlignmentMap={columnAlignmentMap}\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 partitions={partitions}\n partitionConfig={partitionConfig}\n quickFilters={quickFilters}\n reverse={reverse}\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 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 columnHeaderGroups={columnHeaderGroups}\n >\n {childrenContent}\n </IrisGrid>\n )}\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n { localDashboardId = DEFAULT_DASHBOARD_ID, glContainer }: OwnProps\n): StateProps => ({\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n settings: getSettings(state),\n});\n\nconst ConnectedIrisGridPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(IrisGridPanel);\n\nexport default ConnectedIrisGridPanel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGridPanel.js","names":["React","PureComponent","memoize","connect","debounce","DEFAULT_DASHBOARD_ID","LayoutUtils","AdvancedSettings","IrisGrid","IrisGridModel","IrisGridCacheUtils","IrisGridUtils","isIrisGridTableModelTemplate","Log","getSettings","getUser","assertNotNull","PromiseUtils","clamp","IrisGridEvent","getInputFiltersForDashboard","getLinksForDashboard","getColumnSelectionValidatorForDashboard","WidgetPanel","IrisGridPanelTooltip","isIrisGridPanelMetadata","isLegacyIrisGridPanelMetadata","emitFilterColumnsChanged","emitFilterTableChanged","emitLinkPointSelected","emitLinkSourceDataSelected","jsx","_jsx","log","module","DEBOUNCE_PANEL_STATE_UPDATE","getTableNameFromMetadata","metadata","Error","name","table","concat","JSON","stringify","IrisGridPanel","constructor","props","_defineProperty","makeMemoizedGridStateDehydrator","makeMemoizedIrisGridStateDehydrator","columns","inputFilters","getInputFiltersForColumns","filter","_ref","value","excludePanelIds","id","getIdFromPanel","includes","dashboardLinks","pluginFetchColumns","columnSet","Set","i","length","start","panelId","add","columnName","Plugin","model","pluginState","_this$irisGrid$curren","deprecatedProps","panel","className","children","_objectSpread","ref","pluginRef","handlePluginFilter","fetchColumns","handlePluginFetchColumns","tableName","getTableName","selectedRanges","irisGrid","current","state","onStateChange","handlePluginStateChange","isSelectingPartition","partitions","advancedSettings","dehydrateIrisGridPanelState","irisGridPanelState","irisGridState","gridState","description","type","displayType","onPanelStateUpdate","panelState","oldPanelState","irisGridUtils","getCachedPanelState","getDehydratedIrisGridPanelState","irisGridStateDehydrator","gridStateDehydrator","debug","setState","handleAdvancedSettingsChange","bind","handleColumnsChanged","handleTableChanged","handleColumnSelected","handleDataSelected","handleError","handleGridStateChange","handleCreateChart","handleShow","handleTabClicked","handleDisconnect","handleReconnect","handleLoadSuccess","handleLoadError","isColumnSelectionValid","handleContextMenu","handleClearAllFilters","createRef","error","isDisconnected","isLoaded","isLoading","isModelReady","undefined","advancedFilters","Map","aggregationSettings","aggregations","showOnTop","DEFAULTS","customColumns","customColumnFormatMap","columnAlignmentMap","isFilterBarShown","quickFilters","sorts","userColumnWidths","userRowHeights","reverse","movedColumns","movedRows","rollupConfig","showSearchBar","searchValue","selectedSearchColumns","invertSearchColumns","pluginFilters","modelQueue","pendingDataMap","frozenColumns","irisGridStateOverrides","gridStateOverrides","isStuckToBottom","isStuckToRight","conditionalFormats","selectDistinctColumns","componentDidMount","initModel","componentDidUpdate","prevProps","prevState","makeModel","stopModelListening","close","startModelListening","componentWillUnmount","savePanelState","cancel","modelPromise","makeCancelable","resolved","then","catch","modelParam","dh","push","m","getModelRollupConfig","originalColumns","initModelQueue","modelInitialized","modelChange","shift","key","_ref2","get","set","filters","_this$irisGridUtils$g","_this$irisGridUtils","formatter","getFiltersFromInputFilters","timeZone","data","_this$pluginRef$curre","_this$pluginRef$curre2","_this$pluginRef$curre3","getMenu","call","tableColumn","columnSelectionValidator","glEventHub","emit","STATE_CHANGED","event","sendColumnsChange","detail","settings","flush","sourcePanelId","tableSettings","extractTableSettings","CREATE_CHART","column","row","dataMap","updateGrid","focus","isCanceled","loadPlugin","loadPanelState","pluginName","clearAllFilters","debug2","addEventListener","EVENT","DISCONNECT","RECONNECT","COLUMNS_CHANGED","TABLE_CHANGED","removeEventListener","getCoordinateForColumn","_gridWrapper$getBound","_allColumnXs$get","_allColumnWidths$get","gridWrapper","rect","getBoundingClientRect","width","height","metrics","columnHeaderHeight","allColumnXs","allColumnWidths","right","columnHeaderMaxDepth","columnIndex","getColumnIndexByName","visibleIndex","getVisibleColumn","columnX","columnWidth","x","left","y","top","setFilterMap","filterMap","setAdvancedFilterMap","setFilters","_ref3","indexedQuickFilters","changeFilterColumnNamesToIndexes","_ref4","isFilterable","indexedAdvancedFilters","_ref5","hydrateQuickFilters","hydrateAdvancedFilters","setStateOverrides","overrides","unsetFilterValue","originalIrisGridStateOverrides","savedQuickFilters","savedAdvancedFilters","hydrateIrisGridPanelState","columnHeaderGroups","partitionConfig","hydrateIrisGridState","hydrateGridState","_this$irisGrid$curren2","_this$irisGrid$curren3","grid","handleResize","render","_model$description","_panelState$pluginSta","glContainer","getDownloadWorker","links","mouseHandlers","user","renderer","theme","errorMessage","childrenContent","getPluginContent","permissions","canCopy","canDownloadCsv","widgetPanelDescriptor","getWidgetPanelDescriptor","onClearAllFilters","onShow","onTabFocus","onTabClicked","componentPanel","descriptor","renderTabTooltip","alwaysFetchColumns","getAlwaysFetchColumns","columnAllowedCursor","columnNotAllowedCursor","copyCursor","getGridInputFilters","applyInputFiltersOnInit","isSelectingColumn","onColumnSelected","onCreateChart","onDataSelected","onError","onContextMenu","onAdvancedSettingsChange","customFilters","mapStateToProps","_ref6","localDashboardId","ConnectedIrisGridPanel","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 type ReactElement,\n type ReactNode,\n type RefObject,\n} from 'react';\nimport memoize from 'memoize-one';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport {\n type DashboardPanelProps,\n DEFAULT_DASHBOARD_ID,\n LayoutUtils,\n type PanelComponent,\n type PanelMetadata,\n} from '@deephaven/dashboard';\nimport {\n AdvancedSettings,\n IrisGrid,\n type IrisGridType,\n IrisGridModel,\n IrisGridCacheUtils,\n IrisGridUtils,\n isIrisGridTableModelTemplate,\n type ColumnName,\n type PendingDataMap,\n type InputFilter,\n type IrisGridThemeType,\n type ReadonlyAdvancedFilterMap,\n type AggregationSettings,\n type AdvancedSettingsType,\n type UIRollupConfig,\n type UIRow,\n type ReadonlyQuickFilterMap,\n type FilterMap,\n type QuickFilter,\n type AdvancedFilter,\n type SidebarFormattingRule,\n type IrisGridState,\n type ChartBuilderSettings,\n type DehydratedIrisGridState,\n type DehydratedIrisGridPanelState,\n type ColumnHeaderGroup,\n type IrisGridContextMenuData,\n type PartitionConfig,\n type IrisGridRenderer,\n type MouseHandlersProp,\n} from '@deephaven/iris-grid';\nimport {\n type RowDataMap,\n type AdvancedFilterOptions,\n type FormattingRule,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getSettings,\n getUser,\n type RootState,\n type User,\n type WorkspaceSettings,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n type CancelablePromise,\n type EventT,\n PromiseUtils,\n} from '@deephaven/utils';\nimport { type ResolvableContextAction } from '@deephaven/components';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n type GridState,\n type ModelIndex,\n type ModelSizeMap,\n type MoveOperation,\n} from '@deephaven/grid';\nimport type {\n TablePluginComponent,\n TablePluginElement,\n} from '@deephaven/plugin';\nimport clamp from 'lodash.clamp';\nimport { IrisGridEvent } from '../events';\nimport {\n getInputFiltersForDashboard,\n getLinksForDashboard,\n getColumnSelectionValidatorForDashboard,\n} from '../redux';\nimport WidgetPanel from './WidgetPanel';\nimport './IrisGridPanel.scss';\nimport {\n type Link,\n type LinkColumn,\n type LinkPointOptions,\n} from '../linker/LinkerUtils';\nimport IrisGridPanelTooltip from './IrisGridPanelTooltip';\nimport {\n isIrisGridPanelMetadata,\n isLegacyIrisGridPanelMetadata,\n} from './IrisGridPanelTypes';\nimport { type WidgetPanelDescriptor } from './WidgetPanelTypes';\nimport {\n emitFilterColumnsChanged,\n emitFilterTableChanged,\n} from '../FilterEvents';\nimport {\n emitLinkPointSelected,\n emitLinkSourceDataSelected,\n} from '../linker/LinkerEvent';\n\nconst log = Log.module('IrisGridPanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\ntype ModelQueueFunction = (model: IrisGridModel) => void;\n\ntype ModelQueue = ModelQueueFunction[];\n\nexport interface PanelState {\n gridState: {\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n movedColumns: readonly {\n from: string | ModelIndex | [string, string] | [ModelIndex, ModelIndex];\n to: string | ModelIndex;\n }[];\n movedRows: readonly MoveOperation[];\n };\n irisGridState: DehydratedIrisGridState;\n irisGridPanelState: DehydratedIrisGridPanelState;\n pluginState: unknown;\n}\n\n// Some of the properties in the loaded panel state may be omitted\n// even though they can't be undefined in the dehydrated state.\n// This can happen when loading the state saved before the properties were added.\ntype LoadedPanelState = PanelState & {\n irisGridPanelState: PanelState['irisGridPanelState'] & {\n partitions?: (string | null)[];\n partition?: string | null;\n };\n};\n\nexport interface OwnProps extends DashboardPanelProps {\n children?: ReactNode;\n panelState?: LoadedPanelState | null;\n makeModel: () => IrisGridModel | Promise<IrisGridModel>;\n\n onStateChange?: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPanelStateUpdate?: (panelState: PanelState) => void;\n\n /** Override the default worker used by IrisGrid to download CSVs. */\n getDownloadWorker?: () => Promise<ServiceWorker>;\n\n /** Load a plugin defined by the table */\n loadPlugin: (pluginName: string) => TablePluginComponent;\n\n theme?: Partial<IrisGridThemeType> & Record<string, unknown>;\n\n mouseHandlers?: MouseHandlersProp;\n renderer?: IrisGridRenderer;\n}\n\ninterface StateProps {\n inputFilters: InputFilter[];\n links: Link[];\n columnSelectionValidator?: (\n panel: PanelComponent,\n tableColumn: LinkColumn,\n options: LinkPointOptions\n ) => boolean;\n user: User;\n settings: WorkspaceSettings;\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: readonly SidebarFormattingRule[];\n selectDistinctColumns: readonly ColumnName[];\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n customColumns: readonly ColumnName[];\n customColumnFormatMap: Map<string, FormattingRule>;\n columnAlignmentMap: Map<string, CanvasTextAlign>;\n isFilterBarShown: boolean;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly dh.Sort[];\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n reverse: boolean;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n isSelectingPartition: boolean;\n partitions: (string | null)[];\n partitionConfig?: PartitionConfig;\n rollupConfig?: UIRollupConfig;\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns?: readonly string[];\n invertSearchColumns: boolean;\n Plugin?: TablePluginComponent;\n pluginFilters: readonly dh.FilterCondition[];\n pluginFetchColumns: readonly string[];\n modelQueue: ModelQueue;\n pendingDataMap?: PendingDataMap<UIRow>;\n frozenColumns?: readonly ColumnName[];\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\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\nfunction getTableNameFromMetadata(\n metadata: PanelMetadata | null | undefined\n): string {\n if (metadata == null) {\n throw new Error('No metadata provided');\n }\n if (isIrisGridPanelMetadata(metadata)) {\n return metadata.name;\n }\n if (isLegacyIrisGridPanelMetadata(metadata)) {\n return metadata.table;\n }\n\n throw new Error(\n `Unable to determine table name from metadata: ${JSON.stringify(metadata)}`\n );\n}\n\nexport type IrisGridPanelProps = OwnProps & StateProps;\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 =\n this.handleAdvancedSettingsChange.bind(this);\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.handleCreateChart = this.handleCreateChart.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 this.irisGridUtils = 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 columnAlignmentMap: new Map(),\n isFilterBarShown: false,\n quickFilters: new Map(),\n sorts: [],\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n reverse: false,\n movedColumns: [],\n movedRows: [],\n isSelectingPartition: false,\n partitions: [],\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(\n prevProps: IrisGridPanelProps,\n prevState: IrisGridPanelState\n ): void {\n const { model } = this.state;\n const { makeModel } = this.props;\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 if (makeModel !== prevProps.makeModel) {\n this.initModel();\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<IrisGridType>;\n\n pluginRef: RefObject<TablePluginElement>;\n\n modelPromise?: CancelablePromise<IrisGridModel>;\n\n irisGridState?: IrisGridState;\n\n gridState?: GridState;\n\n pluginState: unknown;\n\n private irisGridUtils: IrisGridUtils | null;\n\n private gridStateDehydrator =\n IrisGridCacheUtils.makeMemoizedGridStateDehydrator();\n\n private irisGridStateDehydrator =\n IrisGridCacheUtils.makeMemoizedIrisGridStateDehydrator();\n\n getTableName(): string {\n const { metadata } = this.props;\n return getTableNameFromMetadata(metadata);\n }\n\n getGridInputFilters = memoize(\n (columns: readonly dh.Column[], inputFilters: readonly 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 ||\n (id != null && !excludePanelIds.includes(id)))\n );\n })\n )\n );\n\n getAlwaysFetchColumns = memoize(\n (\n dashboardLinks: readonly Link[],\n pluginFetchColumns: readonly string[]\n ): 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(pluginFetchColumns);\n for (let i = 0; i < dashboardLinks.length; i += 1) {\n const { start } = dashboardLinks[i];\n if (start != null && start.panelId === id) {\n columnSet.add(start.columnName);\n }\n }\n return [...columnSet];\n }\n );\n\n getPluginContent = memoize(\n (\n Plugin: TablePluginComponent | undefined,\n model: IrisGridModel | undefined,\n pluginState: unknown\n ) => {\n if (\n !model ||\n !isIrisGridTableModelTemplate(model) ||\n Plugin == null ||\n model.table == null\n ) {\n return null;\n }\n\n // TODO #2093: Find a better way to handle deprecated panel prop\n const deprecatedProps = {\n panel: this,\n };\n\n return (\n <div className=\"iris-grid-plugin\">\n <Plugin\n ref={this.pluginRef}\n filter={this.handlePluginFilter}\n fetchColumns={this.handlePluginFetchColumns}\n model={model}\n table={model.table}\n tableName={this.getTableName()}\n selectedRanges={this.irisGrid.current?.state.selectedRanges}\n onStateChange={this.handlePluginStateChange}\n pluginState={pluginState}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...deprecatedProps}\n />\n </div>\n );\n }\n );\n\n getDehydratedIrisGridPanelState = memoize(\n (\n model: IrisGridModel,\n isSelectingPartition: boolean,\n partitions: (string | null)[],\n advancedSettings: Map<AdvancedSettingsType, boolean>\n ) =>\n IrisGridUtils.dehydrateIrisGridPanelState(model, {\n isSelectingPartition,\n partitions,\n advancedSettings,\n })\n );\n\n getCachedPanelState = memoize(\n (\n irisGridPanelState: PanelState['irisGridPanelState'],\n irisGridState: PanelState['irisGridState'],\n gridState: PanelState['gridState'],\n pluginState: PanelState['pluginState']\n ): PanelState => ({\n irisGridPanelState,\n irisGridState,\n gridState,\n pluginState,\n })\n );\n\n getWidgetPanelDescriptor = memoize(\n (\n metadata: IrisGridPanelProps['metadata'],\n description?: string\n ): WidgetPanelDescriptor => {\n const name = getTableNameFromMetadata(metadata);\n return {\n type: 'Table',\n displayType: 'Table',\n ...metadata,\n name,\n description,\n };\n }\n );\n\n initModel(): void {\n this.setState({\n isModelReady: false,\n isLoading: true,\n error: null,\n isDisconnected: false,\n });\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 this.irisGridUtils = new IrisGridUtils(model.dh);\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 =\n this.irisGridUtils?.getFiltersFromInputFilters(\n columns,\n filters,\n formatter.timeZone\n ) ?? [];\n this.setState({ pluginFilters });\n }\n\n handlePluginFetchColumns(pluginFetchColumns: string[]): void {\n this.setState({ pluginFetchColumns });\n }\n\n handleContextMenu(data: IrisGridContextMenuData): ResolvableContextAction[] {\n return this.pluginRef.current?.getMenu?.(data) ?? [];\n }\n\n isColumnSelectionValid(tableColumn: dh.Column | null): boolean {\n const { columnSelectionValidator } = this.props;\n if (columnSelectionValidator && tableColumn) {\n return columnSelectionValidator(this, tableColumn, {\n type: 'tableLink',\n });\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: EventT): 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: EventT): void {\n log.debug('handleTableChanged', event);\n const { glEventHub } = this.props;\n const { detail: table } = event as CustomEvent;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterTableChanged(glEventHub, panelId, table);\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 = this.getTableName();\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 ...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: dh.Column): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitLinkPointSelected(glEventHub, panelId, column, { type: 'tableLink' });\n }\n\n handleDataSelected(row: ModelIndex, dataMap: RowDataMap): void {\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitLinkSourceDataSelected(glEventHub, panelId, dataMap);\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 != null && pluginName != null) {\n const Plugin = loadPlugin(pluginName);\n this.setState({ Plugin });\n }\n }\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterTableChanged(glEventHub, panelId, 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: readonly dh.Column[]): void {\n log.debug2('sendColumnsChange', columns);\n const { glEventHub } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n emitFilterColumnsChanged(glEventHub, panelId, 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 allColumnXs,\n allColumnWidths,\n right,\n columnHeaderMaxDepth,\n } = metrics;\n const columnIndex = model.getColumnIndexByName(columnName);\n assertNotNull(columnIndex);\n const visibleIndex = irisGrid.getVisibleColumn(columnIndex);\n const columnX = allColumnXs.get(visibleIndex) ?? 0;\n const columnWidth = allColumnWidths.get(visibleIndex) ?? 0;\n\n const x = clamp(\n visibleIndex > right\n ? rect.right\n : rect.left + columnX + columnWidth * 0.5,\n rect.left,\n rect.right\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: ReadonlyAdvancedFilterMap): 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 =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n advancedFilters\n ).filter(([columnIndex]) => model.isFilterable(columnIndex));\n assertNotNull(this.irisGridUtils);\n irisGrid.clearAllFilters();\n irisGrid.setFilters({\n quickFilters: this.irisGridUtils.hydrateQuickFilters(\n columns,\n indexedQuickFilters,\n formatter.timeZone\n ),\n advancedFilters: this.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 // We need to define this so LinkerUtils#isLinkablePanel passes the check\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 =\n 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 =\n IrisGridUtils.changeFilterColumnNamesToIndexes(\n model.columns,\n savedAdvancedFilters as unknown as {\n name: string;\n filter: { options: AdvancedFilterOptions };\n }[]\n );\n }\n const { isSelectingPartition, partitions, advancedSettings } =\n IrisGridUtils.hydrateIrisGridPanelState(model, irisGridPanelState);\n assertNotNull(this.irisGridUtils);\n const {\n advancedFilters,\n customColumns,\n customColumnFormatMap,\n columnAlignmentMap,\n isFilterBarShown,\n quickFilters,\n reverse,\n rollupConfig,\n aggregationSettings,\n sorts,\n // TODO:\n // DH-20403: IrisGrid should persist user column widths when the model initializes with a partial column list\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectDistinctColumns,\n selectedSearchColumns,\n invertSearchColumns,\n pendingDataMap,\n frozenColumns,\n conditionalFormats,\n columnHeaderGroups,\n partitionConfig,\n } = this.irisGridUtils.hydrateIrisGridState(model, {\n ...irisGridState,\n ...irisGridStateOverrides,\n });\n const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =\n IrisGridUtils.hydrateGridState(\n model,\n { ...gridState, ...gridStateOverrides },\n irisGridState.customColumns\n );\n this.setState({\n advancedFilters,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n columnAlignmentMap,\n isFilterBarShown,\n isSelectingPartition,\n movedColumns,\n movedRows,\n partitions,\n quickFilters,\n reverse,\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 columnHeaderGroups,\n partitionConfig,\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 partitions,\n advancedSettings,\n } = this.state;\n assertNotNull(this.irisGridUtils);\n assertNotNull(model);\n assertNotNull(gridState);\n\n const panelState = this.getCachedPanelState(\n this.getDehydratedIrisGridPanelState(\n model,\n isSelectingPartition,\n partitions,\n advancedSettings\n ),\n this.irisGridStateDehydrator(model, irisGridState),\n this.gridStateDehydrator(model, gridState),\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 mouseHandlers,\n panelState,\n user,\n renderer,\n settings,\n theme,\n } = this.props;\n const {\n advancedFilters,\n aggregationSettings,\n advancedSettings,\n conditionalFormats,\n customColumns,\n customColumnFormatMap,\n columnAlignmentMap,\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 partitions,\n partitionConfig,\n quickFilters,\n reverse,\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 columnHeaderGroups,\n } = this.state;\n const errorMessage =\n error != null ? `Unable to open table. ${error}` : undefined;\n const description = model?.description ?? undefined;\n const pluginState = panelState?.pluginState ?? null;\n const childrenContent =\n children ?? this.getPluginContent(Plugin, model, pluginState);\n const { permissions } = user;\n const { canCopy, canDownloadCsv } = permissions;\n const widgetPanelDescriptor = this.getWidgetPanelDescriptor(\n metadata,\n description\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 onShow={this.handleShow}\n onTabFocus={this.handleShow}\n onTabClicked={this.handleTabClicked}\n componentPanel={this}\n descriptor={widgetPanelDescriptor}\n renderTabTooltip={() => (\n <IrisGridPanelTooltip\n descriptor={widgetPanelDescriptor}\n model={model}\n />\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=\"linker-not-allowed\"\n copyCursor=\"copy\"\n customColumns={customColumns}\n customColumnFormatMap={customColumnFormatMap}\n columnAlignmentMap={columnAlignmentMap}\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 mouseHandlers={mouseHandlers}\n movedColumns={movedColumns}\n movedRows={movedRows}\n partitions={partitions}\n partitionConfig={partitionConfig}\n quickFilters={quickFilters}\n renderer={renderer}\n reverse={reverse}\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 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 columnHeaderGroups={columnHeaderGroups}\n >\n {childrenContent}\n </IrisGrid>\n )}\n </WidgetPanel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n { localDashboardId = DEFAULT_DASHBOARD_ID, glContainer }: OwnProps\n): StateProps => ({\n inputFilters: getInputFiltersForDashboard(state, localDashboardId),\n links: getLinksForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n user: getUser(state),\n settings: getSettings(state),\n});\n\nconst ConnectedIrisGridPanel = connect(mapStateToProps, null, null, {\n forwardRef: true,\n})(IrisGridPanel);\n\nexport default ConnectedIrisGridPanel;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/dashboard-core-plugins",
|
|
3
|
-
"version": "1.7.1",
|
|
3
|
+
"version": "1.7.2-beta.1+a19bc114",
|
|
4
4
|
"description": "Deephaven Dashboard Core Plugins",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,26 +22,26 @@
|
|
|
22
22
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@deephaven/chart": "^1.7.1",
|
|
26
|
-
"@deephaven/components": "^1.7.1",
|
|
27
|
-
"@deephaven/console": "^1.7.1",
|
|
28
|
-
"@deephaven/dashboard": "^1.7.1",
|
|
29
|
-
"@deephaven/file-explorer": "^1.7.1",
|
|
30
|
-
"@deephaven/filters": "^1.1
|
|
31
|
-
"@deephaven/golden-layout": "^1.7.1",
|
|
32
|
-
"@deephaven/grid": "^1.7.1",
|
|
33
|
-
"@deephaven/icons": "^1.2.
|
|
34
|
-
"@deephaven/iris-grid": "^1.7.1",
|
|
35
|
-
"@deephaven/jsapi-bootstrap": "^1.7.1",
|
|
36
|
-
"@deephaven/jsapi-components": "^1.7.1",
|
|
25
|
+
"@deephaven/chart": "^1.7.2-beta.1+a19bc114",
|
|
26
|
+
"@deephaven/components": "^1.7.2-beta.1+a19bc114",
|
|
27
|
+
"@deephaven/console": "^1.7.2-beta.1+a19bc114",
|
|
28
|
+
"@deephaven/dashboard": "^1.7.2-beta.1+a19bc114",
|
|
29
|
+
"@deephaven/file-explorer": "^1.7.2-beta.1+a19bc114",
|
|
30
|
+
"@deephaven/filters": "^1.7.2-beta.1+a19bc114",
|
|
31
|
+
"@deephaven/golden-layout": "^1.7.2-beta.1+a19bc114",
|
|
32
|
+
"@deephaven/grid": "^1.7.2-beta.1+a19bc114",
|
|
33
|
+
"@deephaven/icons": "^1.7.2-beta.1+a19bc114",
|
|
34
|
+
"@deephaven/iris-grid": "^1.7.2-beta.1+a19bc114",
|
|
35
|
+
"@deephaven/jsapi-bootstrap": "^1.7.2-beta.1+a19bc114",
|
|
36
|
+
"@deephaven/jsapi-components": "^1.7.2-beta.1+a19bc114",
|
|
37
37
|
"@deephaven/jsapi-types": "^1.0.0-dev0.39.4",
|
|
38
|
-
"@deephaven/jsapi-utils": "^1.7.1",
|
|
39
|
-
"@deephaven/log": "^1.
|
|
40
|
-
"@deephaven/plugin": "^1.7.1",
|
|
41
|
-
"@deephaven/react-hooks": "^1.7.1",
|
|
42
|
-
"@deephaven/redux": "^1.7.1",
|
|
43
|
-
"@deephaven/storage": "^1.
|
|
44
|
-
"@deephaven/utils": "^1.7.1",
|
|
38
|
+
"@deephaven/jsapi-utils": "^1.7.2-beta.1+a19bc114",
|
|
39
|
+
"@deephaven/log": "^1.7.2-beta.1+a19bc114",
|
|
40
|
+
"@deephaven/plugin": "^1.7.2-beta.1+a19bc114",
|
|
41
|
+
"@deephaven/react-hooks": "^1.7.2-beta.1+a19bc114",
|
|
42
|
+
"@deephaven/redux": "^1.7.2-beta.1+a19bc114",
|
|
43
|
+
"@deephaven/storage": "^1.7.2-beta.1+a19bc114",
|
|
44
|
+
"@deephaven/utils": "^1.7.2-beta.1+a19bc114",
|
|
45
45
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
46
46
|
"classnames": "^2.3.1",
|
|
47
47
|
"fast-deep-equal": "^3.1.3",
|
|
@@ -65,9 +65,9 @@
|
|
|
65
65
|
"react-redux": "^7.2.4"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@deephaven/jsapi-shim": "^1.1
|
|
69
|
-
"@deephaven/mocks": "^1.1
|
|
70
|
-
"@deephaven/test-utils": "^1.1
|
|
68
|
+
"@deephaven/jsapi-shim": "^1.7.2-beta.1+a19bc114",
|
|
69
|
+
"@deephaven/mocks": "^1.7.2-beta.1+a19bc114",
|
|
70
|
+
"@deephaven/test-utils": "^1.7.2-beta.1+a19bc114"
|
|
71
71
|
},
|
|
72
72
|
"files": [
|
|
73
73
|
"dist",
|
|
@@ -79,5 +79,5 @@
|
|
|
79
79
|
"publishConfig": {
|
|
80
80
|
"access": "public"
|
|
81
81
|
},
|
|
82
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "a19bc11446da4328bc5c216064ec810b24ee0312"
|
|
83
83
|
}
|