@deephaven/dashboard-core-plugins 0.38.1 → 0.39.0

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.
Files changed (63) hide show
  1. package/dist/ChartBuilderPlugin.d.ts.map +1 -1
  2. package/dist/ChartBuilderPlugin.js +4 -2
  3. package/dist/ChartBuilderPlugin.js.map +1 -1
  4. package/dist/ChartPlugin.d.ts.map +1 -1
  5. package/dist/ChartPlugin.js +4 -2
  6. package/dist/ChartPlugin.js.map +1 -1
  7. package/dist/GridPlugin.d.ts.map +1 -1
  8. package/dist/GridPlugin.js +7 -5
  9. package/dist/GridPlugin.js.map +1 -1
  10. package/dist/PandasPlugin.d.ts.map +1 -1
  11. package/dist/PandasPlugin.js +4 -2
  12. package/dist/PandasPlugin.js.map +1 -1
  13. package/dist/controls/dropdown-filter/DropdownFilter.d.ts +1 -1
  14. package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
  15. package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
  16. package/dist/controls/input-filter/InputFilter.d.ts +1 -1
  17. package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
  18. package/dist/controls/input-filter/InputFilter.js.map +1 -1
  19. package/dist/linker/Linker.d.ts +3 -1
  20. package/dist/linker/Linker.d.ts.map +1 -1
  21. package/dist/linker/Linker.js +4 -2
  22. package/dist/linker/Linker.js.map +1 -1
  23. package/dist/panels/ChartPanel.d.ts +1 -1
  24. package/dist/panels/ChartPanel.d.ts.map +1 -1
  25. package/dist/panels/ChartPanel.js +22 -4
  26. package/dist/panels/ChartPanel.js.map +1 -1
  27. package/dist/panels/CommandHistoryPanel.d.ts +1 -1
  28. package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
  29. package/dist/panels/CommandHistoryPanel.js.map +1 -1
  30. package/dist/panels/ConsolePanel.d.ts +1 -1
  31. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  32. package/dist/panels/ConsolePanel.js +3 -1
  33. package/dist/panels/ConsolePanel.js.map +1 -1
  34. package/dist/panels/DropdownFilterPanel.d.ts +4 -3
  35. package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
  36. package/dist/panels/DropdownFilterPanel.js +25 -12
  37. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  38. package/dist/panels/FileExplorerPanel.d.ts +1 -1
  39. package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
  40. package/dist/panels/FileExplorerPanel.js.map +1 -1
  41. package/dist/panels/FilterSetManagerPanel.d.ts +1 -1
  42. package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
  43. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  44. package/dist/panels/IrisGridPanel.d.ts +2 -1
  45. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  46. package/dist/panels/IrisGridPanel.js +37 -28
  47. package/dist/panels/IrisGridPanel.js.map +1 -1
  48. package/dist/panels/LogPanel.d.ts +1 -1
  49. package/dist/panels/LogPanel.d.ts.map +1 -1
  50. package/dist/panels/LogPanel.js.map +1 -1
  51. package/dist/panels/NotebookPanel.d.ts +1 -1
  52. package/dist/panels/NotebookPanel.d.ts.map +1 -1
  53. package/dist/panels/NotebookPanel.js.map +1 -1
  54. package/dist/panels/Panel.d.ts +1 -1
  55. package/dist/panels/Panel.d.ts.map +1 -1
  56. package/dist/panels/Panel.js.map +1 -1
  57. package/dist/redux/actions.d.ts +1 -1
  58. package/dist/redux/actions.d.ts.map +1 -1
  59. package/dist/redux/actions.js.map +1 -1
  60. package/dist/redux/selectors.d.ts +1 -1
  61. package/dist/redux/selectors.d.ts.map +1 -1
  62. package/dist/redux/selectors.js.map +1 -1
  63. package/package.json +23 -21
@@ -1 +1 @@
1
- {"version":3,"file":"Linker.d.ts","sourceRoot":"","sources":["../../src/linker/Linker.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Linker.d.ts","sourceRoot":"","sources":["../../src/linker/Linker.tsx"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ import { LayoutUtils, PanelEvent } from '@deephaven/dashboard';
13
13
  import { DateTimeColumnFormatter, DateUtils, TableUtils } from '@deephaven/jsapi-utils';
14
14
  import Log from '@deephaven/log';
15
15
  import { Type as FilterType } from '@deephaven/filters';
16
- import { getActiveTool, getTimeZone, setActiveTool as setActiveToolAction } from '@deephaven/redux';
16
+ import { getActiveTool, getApi, getTimeZone, setActiveTool as setActiveToolAction } from '@deephaven/redux';
17
17
  import { getIsolatedLinkerPanelIdForDashboard, getLinksForDashboard, setDashboardLinks as setDashboardLinksAction, addDashboardLinks as addDashboardLinksAction, deleteDashboardLinks as deleteDashboardLinksAction, setDashboardIsolatedLinkerPanelId as setDashboardIsolatedLinkerPanelIdAction, setDashboardColumnSelectionValidator as setDashboardColumnSelectionValidatorAction } from "../redux/index.js";
18
18
  import ToolType from "./ToolType.js";
19
19
  import { ChartEvent, IrisGridEvent, InputFilterEvent } from "../events/index.js";
@@ -22,6 +22,7 @@ import LinkerUtils, { isLinkablePanel, isLinkableColumn } from "./LinkerUtils.js
22
22
  var log = Log.module('Linker');
23
23
  var mapState = (state, ownProps) => ({
24
24
  activeTool: getActiveTool(state),
25
+ dh: getApi(state),
25
26
  isolatedLinkerPanelId: getIsolatedLinkerPanelIdForDashboard(state, ownProps.localDashboardId),
26
27
  links: getLinksForDashboard(state, ownProps.localDashboardId),
27
28
  timeZone: getTimeZone(state)
@@ -458,6 +459,7 @@ export class Linker extends Component {
458
459
  handleUpdateValues(panel, dataMap) {
459
460
  var panelId = LayoutUtils.getIdFromPanel(panel);
460
461
  var {
462
+ dh,
461
463
  links,
462
464
  timeZone
463
465
  } = this.props;
@@ -494,7 +496,7 @@ export class Linker extends Component {
494
496
  value = undefined;
495
497
  }
496
498
  if (columnType != null && TableUtils.isDateType(columnType)) {
497
- var dateFilterFormatter = new DateTimeColumnFormatter({
499
+ var dateFilterFormatter = new DateTimeColumnFormatter(dh, {
498
500
  timeZone,
499
501
  showTimeZone: false,
500
502
  showTSeparator: true,
@@ -1 +1 @@
1
- {"version":3,"file":"Linker.js","names":["React","Component","connect","shortid","memoize","CSSTransition","ThemeExport","LayoutUtils","PanelEvent","DateTimeColumnFormatter","DateUtils","TableUtils","Log","Type","FilterType","getActiveTool","getTimeZone","setActiveTool","setActiveToolAction","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","setDashboardLinks","setDashboardLinksAction","addDashboardLinks","addDashboardLinksAction","deleteDashboardLinks","deleteDashboardLinksAction","setDashboardIsolatedLinkerPanelId","setDashboardIsolatedLinkerPanelIdAction","setDashboardColumnSelectionValidator","setDashboardColumnSelectionValidatorAction","ToolType","ChartEvent","IrisGridEvent","InputFilterEvent","LinkerOverlayContent","LinkerUtils","isLinkablePanel","isLinkableColumn","log","module","mapState","state","ownProps","activeTool","isolatedLinkerPanelId","localDashboardId","links","timeZone","connector","Linker","constructor","props","linkInProgress","isolateForPanelId","combinedLinks","start","push","undefined","filter","link","panelId","end","handleCancel","bind","handleDone","handlePanelCloned","handleFilterColumnSelect","handleColumnsChanged","handlePanelClosed","handleLayoutStateChanged","handleAllLinksDeleted","handleLinkDeleted","handleLinksUpdated","handleChartColumnSelect","handleGridColumnSelect","handleUpdateValues","handleStateChange","handleExited","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","COLUMNS_CHANGED","CLOSE","CLOSED","DRAGGING","DROPPED","off","setState","panel","column","columnSelected","debug","isOverlayShown","getIdFromPanel","panelLinks","LINKER","length","columns","linksToDelete","findColumn","deleteLinks","debug2","isAlwaysEndPoint","overrideIsolatedLinkerPanelId","panelComponent","getComponentNameFromPanel","name","columnName","type","columnType","newLink","id","generate","isReversed","getLinkType","existingLinkPanelId","panelLinkEnd","existingLinkEnd","existingLinkStart","panelLinkStart","operator","eq","addLinks","unsetFilterValueForLink","panelManager","endPanel","getOpenedPanelById","unsetFilterValue","setPanelFilterMap","filterMap","setFilterMap","clearAll","forEach","map","isolatedLinks","linkId","find","l","dataMap","panelFilterMap","Map","i","endPanelId","has","get","filterList","visibleIndex","startColumnIndex","isExpandable","isGrouped","value","text","isDateType","dateFilterFormatter","showTimeZone","showTSeparator","defaultDateTimeFormatString","FULL_DATE_FORMAT","format","set","cloneConfig","cloneId","linksToAdd","cloneLinksForPanel","componentId","deleteLinksForPanelId","newLinks","forceUpdate","updateLinkInProgressType","tableColumn","description","render","isLinkOverlayShown","disabled","linkerOverlayMessage","transitionMs","getCachedLinks","ConnectedLinker"],"sources":["../../src/linker/Linker.tsx"],"sourcesContent":["import React, { Component, ErrorInfo } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport shortid from 'shortid';\nimport memoize from 'memoize-one';\nimport { CSSTransition } from 'react-transition-group';\nimport { ThemeExport } from '@deephaven/components';\nimport {\n LayoutUtils,\n PanelComponent,\n PanelEvent,\n PanelManager,\n} from '@deephaven/dashboard';\nimport type GoldenLayout from '@deephaven/golden-layout';\nimport {\n DateTimeColumnFormatter,\n DateUtils,\n RowDataMap,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { Type as FilterType } from '@deephaven/filters';\nimport {\n getActiveTool,\n getTimeZone,\n setActiveTool as setActiveToolAction,\n RootState,\n} from '@deephaven/redux';\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, InputFilterEvent } from '../events';\nimport LinkerOverlayContent from './LinkerOverlayContent';\nimport LinkerUtils, {\n isLinkablePanel,\n Link,\n LinkColumn,\n LinkFilterMap,\n LinkType,\n isLinkableColumn,\n} from './LinkerUtils';\n\nconst log = Log.module('Linker');\n\ninterface StateProps {\n activeTool: string;\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 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: setDashboardColumnSelectionValidatorAction,\n});\n\nexport type LinkerProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type LinkerState = {\n linkInProgress?: Link;\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.handleFilterColumnSelect = this.handleFilterColumnSelect.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.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 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 eventHub.on(\n InputFilterEvent.COLUMN_SELECTED,\n this.handleFilterColumnSelect\n );\n eventHub.on(InputFilterEvent.COLUMNS_CHANGED, this.handleColumnsChanged);\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(\n InputFilterEvent.COLUMN_SELECTED,\n this.handleFilterColumnSelect\n );\n eventHub.off(InputFilterEvent.COLUMNS_CHANGED, this.handleColumnsChanged);\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 }\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 this.columnSelected(panel, column, true);\n }\n\n handleFilterColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n log.debug('handleFilterColumnSelect', this.isOverlayShown());\n const {\n links,\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId,\n } = this.props;\n\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const panelLinks = links.filter(\n link => link.start?.panelId === panelId || link.end?.panelId === panelId\n );\n\n if (!this.isOverlayShown() && panelId != null) {\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, panelId);\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(panel, column, true, panelId);\n }\n return;\n }\n\n // Filter source clicked with linker active\n this.columnSelected(panel, column, true);\n }\n\n handleColumnsChanged(panel: PanelComponent, columns: LinkColumn[]): void {\n log.debug('handleColumnsChanged', panel, columns);\n const { links } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error('Invalid panelId', panel);\n return;\n }\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 === panelId &&\n LinkerUtils.findColumn(columns, start) == null) ||\n (end != null &&\n end.panelId === panelId &&\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 this.columnSelected(panel, column);\n }\n\n /**\n * Track a column selection and build the link from it.\n * @param panel The panel component that is the source for the column selection\n * @param column The column that was selected\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 panel: PanelComponent,\n column: LinkColumn,\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 panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n return;\n }\n const panelComponent = LayoutUtils.getComponentNameFromPanel(panel);\n const { name: columnName, type: columnType } = column;\n if (linkInProgress == null || linkInProgress.start == null) {\n const newLink: Link = {\n id: shortid.generate(),\n start: {\n panelId,\n panelComponent,\n columnName,\n columnType,\n },\n // Link starts with type Invalid as linking a source to itself is not allowed\n type: 'invalid',\n isReversed: isAlwaysEndPoint,\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 } = linkInProgress;\n const end = {\n panelId,\n panelComponent,\n columnName,\n columnType,\n };\n\n const type = LinkerUtils.getLinkType(\n isReversed !== undefined && isReversed ? end : start,\n isReversed !== undefined && isReversed ? start : end,\n overrideIsolatedLinkerPanelId ?? isolatedLinkerPanelId\n );\n\n switch (type) {\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 !== undefined && isReversed ? end : start,\n end: isReversed !== undefined && isReversed ? start : end,\n id,\n type,\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 endPanel = panelManager.getOpenedPanelById(panelId);\n if (!endPanel) {\n log.debug(\n 'endPanel no longer exists, 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 panel = panelManager.getOpenedPanelById(panelId);\n if (!panel) {\n log.debug('panel no longer exists, ignoring setFilterMap', panelId);\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 handleUpdateValues(panel: PanelComponent, dataMap: RowDataMap): void {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const { links, timeZone } = this.props;\n // Map of panel ID to filterMap\n const panelFilterMap = 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 === panelId && end != null) {\n const { panelId: endPanelId, columnName, columnType } = end;\n // Map of column name to column type and filter value\n const filterMap = panelFilterMap.has(endPanelId)\n ? panelFilterMap.get(endPanelId)\n : new Map();\n const filterList =\n filterMap.has(columnName) === true\n ? filterMap.get(columnName).filterList\n : [];\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({\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 const filter = { operator, text, value, startColumnIndex };\n filterList.push(filter);\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 panel: PanelComponent,\n tableColumn?: LinkColumn\n ): boolean {\n const { linkInProgress } = this.state;\n const { isolatedLinkerPanelId } = this.props;\n\n if (tableColumn == null) {\n if (linkInProgress?.start != null) {\n // Link started, end point is not a valid target\n this.updateLinkInProgressType();\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, start } = linkInProgress;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n return false;\n }\n\n const end = {\n panelId,\n panelComponent: LayoutUtils.getComponentNameFromPanel(panel),\n columnName: tableColumn.name,\n columnType: tableColumn.type,\n };\n\n const type =\n isReversed !== undefined && isReversed\n ? LinkerUtils.getLinkType(end, start, isolatedLinkerPanelId)\n : LinkerUtils.getLinkType(start, end, isolatedLinkerPanelId);\n\n this.updateLinkInProgressType(type);\n\n return type !== 'invalid';\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 <CSSTransition\n in={isLinkOverlayShown}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\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 />\n </CSSTransition>\n ) : null;\n }\n}\n\nconst ConnectedLinker = connector(Linker);\n\nexport default ConnectedLinker;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Linker.js","names":["React","Component","connect","shortid","memoize","CSSTransition","ThemeExport","LayoutUtils","PanelEvent","DateTimeColumnFormatter","DateUtils","TableUtils","Log","Type","FilterType","getActiveTool","getApi","getTimeZone","setActiveTool","setActiveToolAction","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","setDashboardLinks","setDashboardLinksAction","addDashboardLinks","addDashboardLinksAction","deleteDashboardLinks","deleteDashboardLinksAction","setDashboardIsolatedLinkerPanelId","setDashboardIsolatedLinkerPanelIdAction","setDashboardColumnSelectionValidator","setDashboardColumnSelectionValidatorAction","ToolType","ChartEvent","IrisGridEvent","InputFilterEvent","LinkerOverlayContent","LinkerUtils","isLinkablePanel","isLinkableColumn","log","module","mapState","state","ownProps","activeTool","dh","isolatedLinkerPanelId","localDashboardId","links","timeZone","connector","Linker","constructor","props","linkInProgress","isolateForPanelId","combinedLinks","start","push","undefined","filter","link","panelId","end","handleCancel","bind","handleDone","handlePanelCloned","handleFilterColumnSelect","handleColumnsChanged","handlePanelClosed","handleLayoutStateChanged","handleAllLinksDeleted","handleLinkDeleted","handleLinksUpdated","handleChartColumnSelect","handleGridColumnSelect","handleUpdateValues","handleStateChange","handleExited","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","COLUMNS_CHANGED","CLOSE","CLOSED","DRAGGING","DROPPED","off","setState","panel","column","columnSelected","debug","isOverlayShown","getIdFromPanel","panelLinks","LINKER","length","columns","linksToDelete","findColumn","deleteLinks","debug2","isAlwaysEndPoint","overrideIsolatedLinkerPanelId","panelComponent","getComponentNameFromPanel","name","columnName","type","columnType","newLink","id","generate","isReversed","getLinkType","existingLinkPanelId","panelLinkEnd","existingLinkEnd","existingLinkStart","panelLinkStart","operator","eq","addLinks","unsetFilterValueForLink","panelManager","endPanel","getOpenedPanelById","unsetFilterValue","setPanelFilterMap","filterMap","setFilterMap","clearAll","forEach","map","isolatedLinks","linkId","find","l","dataMap","panelFilterMap","Map","i","endPanelId","has","get","filterList","visibleIndex","startColumnIndex","isExpandable","isGrouped","value","text","isDateType","dateFilterFormatter","showTimeZone","showTSeparator","defaultDateTimeFormatString","FULL_DATE_FORMAT","format","set","cloneConfig","cloneId","linksToAdd","cloneLinksForPanel","componentId","deleteLinksForPanelId","newLinks","forceUpdate","updateLinkInProgressType","tableColumn","description","render","isLinkOverlayShown","disabled","linkerOverlayMessage","transitionMs","getCachedLinks","ConnectedLinker"],"sources":["../../src/linker/Linker.tsx"],"sourcesContent":["import React, { Component, ErrorInfo } from 'react';\nimport { connect, ConnectedProps } from 'react-redux';\nimport shortid from 'shortid';\nimport memoize from 'memoize-one';\nimport { CSSTransition } from 'react-transition-group';\nimport { ThemeExport } from '@deephaven/components';\nimport {\n LayoutUtils,\n PanelComponent,\n PanelEvent,\n PanelManager,\n} from '@deephaven/dashboard';\nimport type GoldenLayout from '@deephaven/golden-layout';\nimport {\n DateTimeColumnFormatter,\n DateUtils,\n 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 RootState,\n} from '@deephaven/redux';\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, InputFilterEvent } from '../events';\nimport LinkerOverlayContent from './LinkerOverlayContent';\nimport LinkerUtils, {\n isLinkablePanel,\n Link,\n LinkColumn,\n LinkFilterMap,\n LinkType,\n isLinkableColumn,\n} from './LinkerUtils';\n\nconst log = Log.module('Linker');\n\ninterface StateProps {\n activeTool: string;\n dh: 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: setDashboardColumnSelectionValidatorAction,\n});\n\nexport type LinkerProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type LinkerState = {\n linkInProgress?: Link;\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.handleFilterColumnSelect = this.handleFilterColumnSelect.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.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 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 eventHub.on(\n InputFilterEvent.COLUMN_SELECTED,\n this.handleFilterColumnSelect\n );\n eventHub.on(InputFilterEvent.COLUMNS_CHANGED, this.handleColumnsChanged);\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(\n InputFilterEvent.COLUMN_SELECTED,\n this.handleFilterColumnSelect\n );\n eventHub.off(InputFilterEvent.COLUMNS_CHANGED, this.handleColumnsChanged);\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 }\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 this.columnSelected(panel, column, true);\n }\n\n handleFilterColumnSelect(panel: PanelComponent, column: LinkColumn): void {\n log.debug('handleFilterColumnSelect', this.isOverlayShown());\n const {\n links,\n localDashboardId,\n setActiveTool,\n setDashboardIsolatedLinkerPanelId,\n } = this.props;\n\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const panelLinks = links.filter(\n link => link.start?.panelId === panelId || link.end?.panelId === panelId\n );\n\n if (!this.isOverlayShown() && panelId != null) {\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, panelId);\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(panel, column, true, panelId);\n }\n return;\n }\n\n // Filter source clicked with linker active\n this.columnSelected(panel, column, true);\n }\n\n handleColumnsChanged(panel: PanelComponent, columns: LinkColumn[]): void {\n log.debug('handleColumnsChanged', panel, columns);\n const { links } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error('Invalid panelId', panel);\n return;\n }\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 === panelId &&\n LinkerUtils.findColumn(columns, start) == null) ||\n (end != null &&\n end.panelId === panelId &&\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 this.columnSelected(panel, column);\n }\n\n /**\n * Track a column selection and build the link from it.\n * @param panel The panel component that is the source for the column selection\n * @param column The column that was selected\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 panel: PanelComponent,\n column: LinkColumn,\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 panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n return;\n }\n const panelComponent = LayoutUtils.getComponentNameFromPanel(panel);\n const { name: columnName, type: columnType } = column;\n if (linkInProgress == null || linkInProgress.start == null) {\n const newLink: Link = {\n id: shortid.generate(),\n start: {\n panelId,\n panelComponent,\n columnName,\n columnType,\n },\n // Link starts with type Invalid as linking a source to itself is not allowed\n type: 'invalid',\n isReversed: isAlwaysEndPoint,\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 } = linkInProgress;\n const end = {\n panelId,\n panelComponent,\n columnName,\n columnType,\n };\n\n const type = LinkerUtils.getLinkType(\n isReversed !== undefined && isReversed ? end : start,\n isReversed !== undefined && isReversed ? start : end,\n overrideIsolatedLinkerPanelId ?? isolatedLinkerPanelId\n );\n\n switch (type) {\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 !== undefined && isReversed ? end : start,\n end: isReversed !== undefined && isReversed ? start : end,\n id,\n type,\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 endPanel = panelManager.getOpenedPanelById(panelId);\n if (!endPanel) {\n log.debug(\n 'endPanel no longer exists, 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 panel = panelManager.getOpenedPanelById(panelId);\n if (!panel) {\n log.debug('panel no longer exists, ignoring setFilterMap', panelId);\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 handleUpdateValues(panel: PanelComponent, dataMap: RowDataMap): void {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const { dh, links, timeZone } = this.props;\n // Map of panel ID to filterMap\n const panelFilterMap = 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 === panelId && end != null) {\n const { panelId: endPanelId, columnName, columnType } = end;\n // Map of column name to column type and filter value\n const filterMap = panelFilterMap.has(endPanelId)\n ? panelFilterMap.get(endPanelId)\n : new Map();\n const filterList =\n filterMap.has(columnName) === true\n ? filterMap.get(columnName).filterList\n : [];\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 const filter = { operator, text, value, startColumnIndex };\n filterList.push(filter);\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 panel: PanelComponent,\n tableColumn?: LinkColumn\n ): boolean {\n const { linkInProgress } = this.state;\n const { isolatedLinkerPanelId } = this.props;\n\n if (tableColumn == null) {\n if (linkInProgress?.start != null) {\n // Link started, end point is not a valid target\n this.updateLinkInProgressType();\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, start } = linkInProgress;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n return false;\n }\n\n const end = {\n panelId,\n panelComponent: LayoutUtils.getComponentNameFromPanel(panel),\n columnName: tableColumn.name,\n columnType: tableColumn.type,\n };\n\n const type =\n isReversed !== undefined && isReversed\n ? LinkerUtils.getLinkType(end, start, isolatedLinkerPanelId)\n : LinkerUtils.getLinkType(start, end, isolatedLinkerPanelId);\n\n this.updateLinkInProgressType(type);\n\n return type !== 'invalid';\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 <CSSTransition\n in={isLinkOverlayShown}\n timeout={ThemeExport.transitionMs}\n classNames=\"fade\"\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 />\n </CSSTransition>\n ) : null;\n }\n}\n\nconst ConnectedLinker = connector(Linker);\n\nexport default ConnectedLinker;\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Component, ReactElement, RefObject } from 'react';
2
2
  import { Chart, ChartModel, ChartModelSettings, FilterMap } from '@deephaven/chart';
3
3
  import { PanelComponent } from '@deephaven/dashboard';
4
4
  import { InputFilter, ColumnName, DehydratedSort, DehydratedAdvancedFilter, DehydratedQuickFilter, LegacyDehydratedSort } from '@deephaven/iris-grid';
5
- import { SeriesPlotStyle, TableTemplate } from '@deephaven/jsapi-shim';
5
+ import type { SeriesPlotStyle, TableTemplate } from '@deephaven/jsapi-types';
6
6
  import { WorkspaceSettings } from '@deephaven/redux';
7
7
  import { Pending } from '@deephaven/utils';
8
8
  import type { Container, EventEmitter } from '@deephaven/golden-layout';
@@ -1 +1 @@
1
- {"version":3,"file":"ChartPanel.d.ts","sourceRoot":"","sources":["../../src/panels/ChartPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChartPanel.d.ts","sourceRoot":"","sources":["../../src/panels/ChartPanel.tsx"],"names":[],"mappings":"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"}
@@ -12,7 +12,6 @@ import debounce from 'lodash.debounce';
12
12
  import { Chart, ChartUtils, isFigureChartModel } from '@deephaven/chart';
13
13
  import { getOpenedPanelMapForDashboard, LayoutUtils } from '@deephaven/dashboard';
14
14
  import { IrisGridUtils } from '@deephaven/iris-grid';
15
- import dh from '@deephaven/jsapi-shim';
16
15
  import { ThemeExport } from '@deephaven/components';
17
16
  import Log from '@deephaven/log';
18
17
  import { getActiveTool, getSettings, setActiveTool as setActiveToolAction } from '@deephaven/redux';
@@ -218,10 +217,13 @@ export class ChartPanel extends Component {
218
217
  }
219
218
  componentWillUnmount() {
220
219
  this.pending.cancel();
220
+ var {
221
+ model
222
+ } = this.state;
221
223
  var {
222
224
  source
223
225
  } = this.props;
224
- if (source) {
226
+ if (model != null && source) {
225
227
  this.stopListeningToSource(source);
226
228
  }
227
229
  }
@@ -240,12 +242,26 @@ export class ChartPanel extends Component {
240
242
  }
241
243
  startListeningToSource(table) {
242
244
  log.debug('startListeningToSource', table);
245
+ var {
246
+ model
247
+ } = this.state;
248
+ assertNotNull(model);
249
+ var {
250
+ dh
251
+ } = model;
243
252
  table.addEventListener(dh.Table.EVENT_CUSTOMCOLUMNSCHANGED, this.handleSourceColumnChange);
244
253
  table.addEventListener(dh.Table.EVENT_FILTERCHANGED, this.handleSourceFilterChange);
245
254
  table.addEventListener(dh.Table.EVENT_SORTCHANGED, this.handleSourceSortChange);
246
255
  }
247
256
  stopListeningToSource(table) {
248
257
  log.debug('stopListeningToSource', table);
258
+ var {
259
+ model
260
+ } = this.state;
261
+ assertNotNull(model);
262
+ var {
263
+ dh
264
+ } = model;
249
265
  table.removeEventListener(dh.Table.EVENT_CUSTOMCOLUMNSCHANGED, this.handleSourceColumnChange);
250
266
  table.removeEventListener(dh.Table.EVENT_FILTERCHANGED, this.handleSourceFilterChange);
251
267
  table.removeEventListener(dh.Table.EVENT_SORTCHANGED, this.handleSourceSortChange);
@@ -393,14 +409,16 @@ export class ChartPanel extends Component {
393
409
  log.debug2('updateModelFromSource ignoring', isLinked, model, source);
394
410
  return;
395
411
  }
396
-
412
+ var {
413
+ dh
414
+ } = model;
397
415
  // By now the model has already been loaded, which is the only other cancelable thing in pending
398
416
  this.pending.cancel();
399
417
  if (isChartPanelTableMetadata(metadata)) {
400
418
  var {
401
419
  settings
402
420
  } = metadata;
403
- this.pending.add(dh.plot.Figure.create(ChartUtils.makeFigureSettings(settings, source))).then(figure => {
421
+ this.pending.add(dh.plot.Figure.create(new ChartUtils(dh).makeFigureSettings(settings, source))).then(figure => {
404
422
  if (isFigureChartModel(model)) {
405
423
  model.setFigure(figure);
406
424
  }