@deephaven/dashboard-core-plugins 0.15.5-vite.12 → 0.15.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChartBuilderPlugin.d.ts.map +1 -1
- package/dist/ChartBuilderPlugin.js +2 -1
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartPlugin.js.map +1 -1
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.js +1 -1
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPlugin.js.map +1 -1
- package/dist/controls/ControlType.d.ts +1 -1
- package/dist/controls/ControlType.d.ts.map +1 -1
- package/dist/controls/ControlType.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts +73 -81
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +41 -58
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.d.ts +46 -46
- package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +32 -39
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.d.ts +11 -16
- package/dist/controls/markdown/MarkdownContainer.d.ts.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js +5 -8
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.d.ts +17 -19
- package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js +5 -8
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.d.ts +24 -28
- package/dist/controls/markdown/MarkdownStartPage.d.ts.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +19 -23
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/controls/markdown/MarkdownUtils.d.ts +4 -4
- package/dist/controls/markdown/MarkdownUtils.d.ts.map +1 -1
- package/dist/controls/markdown/MarkdownUtils.js +2 -2
- package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
- package/dist/events/ChartEvent.d.ts +1 -1
- package/dist/events/ChartEvent.d.ts.map +1 -1
- package/dist/events/ChartEvent.js.map +1 -1
- package/dist/events/ConsoleEvent.d.ts +1 -1
- package/dist/events/ConsoleEvent.d.ts.map +1 -1
- package/dist/events/ConsoleEvent.js.map +1 -1
- package/dist/events/InputFilterEvent.d.ts +1 -1
- package/dist/events/InputFilterEvent.d.ts.map +1 -1
- package/dist/events/InputFilterEvent.js.map +1 -1
- package/dist/events/IrisGridEvent.d.ts +1 -1
- package/dist/events/IrisGridEvent.d.ts.map +1 -1
- package/dist/events/IrisGridEvent.js.map +1 -1
- package/dist/events/MarkdownEvent.js.map +1 -1
- package/dist/events/NotebookEvent.d.ts +1 -1
- package/dist/events/NotebookEvent.d.ts.map +1 -1
- package/dist/events/NotebookEvent.js.map +1 -1
- package/dist/events/PQEvent.d.ts +1 -1
- package/dist/events/PQEvent.d.ts.map +1 -1
- package/dist/events/PQEvent.js.map +1 -1
- package/dist/events/PandasEvent.d.ts +1 -1
- package/dist/events/PandasEvent.d.ts.map +1 -1
- package/dist/events/PandasEvent.js.map +1 -1
- package/dist/events/TabEvent.d.ts +1 -1
- package/dist/events/TabEvent.d.ts.map +1 -1
- package/dist/events/TabEvent.js.map +1 -1
- package/dist/events/index.d.ts +8 -8
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/linker/ColumnSelectionValidator.d.ts +4 -0
- package/dist/linker/ColumnSelectionValidator.d.ts.map +1 -0
- package/dist/linker/ColumnSelectionValidator.js +2 -0
- package/dist/linker/ColumnSelectionValidator.js.map +1 -0
- package/dist/linker/Linker.d.ts +11 -11
- package/dist/linker/Linker.js +1 -1
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.d.ts +3 -3
- package/dist/linker/LinkerUtils.d.ts.map +1 -1
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/linker/ToolType.d.ts +1 -1
- package/dist/linker/ToolType.d.ts.map +1 -1
- package/dist/linker/ToolType.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.d.ts +22 -26
- package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js +5 -14
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.d.ts +27 -21
- package/dist/panels/ChartFilterOverlay.d.ts.map +1 -1
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts +149 -152
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js +65 -73
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.d.ts +41 -56
- package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +13 -35
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.d.ts +63 -73
- package/dist/panels/ConsolePanel.d.ts.map +1 -1
- package/dist/panels/ConsolePanel.js +67 -83
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts +110 -106
- package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +60 -62
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.d.ts +5 -7
- package/dist/panels/FileExplorerPanel.d.ts.map +1 -1
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.d.ts +3 -1
- package/dist/panels/FilterSetManager.d.ts.map +1 -1
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.d.ts +83 -62
- package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js +58 -36
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.d.ts +50 -51
- package/dist/panels/InputFilterPanel.d.ts.map +1 -1
- package/dist/panels/InputFilterPanel.js +35 -34
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +191 -178
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +150 -179
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/LogPanel.d.ts +29 -45
- package/dist/panels/LogPanel.d.ts.map +1 -1
- package/dist/panels/LogPanel.js +9 -11
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.d.ts +34 -34
- package/dist/panels/MarkdownNotebook.d.ts.map +1 -1
- package/dist/panels/MarkdownNotebook.js +21 -18
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.d.ts +41 -47
- package/dist/panels/MarkdownPanel.d.ts.map +1 -1
- package/dist/panels/MarkdownPanel.js +17 -19
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts +137 -115
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +95 -68
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.d.ts +20 -17
- package/dist/panels/PandasPanel.d.ts.map +1 -1
- package/dist/panels/PandasPanel.js +18 -14
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/Panel.d.ts +87 -123
- package/dist/panels/Panel.d.ts.map +1 -1
- package/dist/panels/Panel.js +29 -54
- package/dist/panels/Panel.js.map +1 -1
- package/dist/panels/PanelContextMenu.d.ts +16 -31
- package/dist/panels/PanelContextMenu.d.ts.map +1 -1
- package/dist/panels/PanelContextMenu.js +12 -15
- package/dist/panels/PanelContextMenu.js.map +1 -1
- package/dist/panels/RenameDialog.d.ts +26 -28
- package/dist/panels/RenameDialog.d.ts.map +1 -1
- package/dist/panels/RenameDialog.js +15 -19
- package/dist/panels/RenameDialog.js.map +1 -1
- package/dist/panels/WidgetPanel.d.ts +72 -106
- package/dist/panels/WidgetPanel.d.ts.map +1 -1
- package/dist/panels/WidgetPanel.js +17 -47
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.d.ts +29 -22
- package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js +1 -1
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/panels/index.js.map +1 -1
- package/dist/prop-types/CommonPropTypes.d.ts +4 -4
- package/dist/prop-types/CommonPropTypes.d.ts.map +1 -1
- package/dist/prop-types/CommonPropTypes.js +1 -1
- package/dist/prop-types/CommonPropTypes.js.map +1 -1
- package/dist/prop-types/UIPropTypes.d.ts +2 -7
- package/dist/prop-types/UIPropTypes.d.ts.map +1 -1
- package/dist/prop-types/UIPropTypes.js +0 -7
- package/dist/prop-types/UIPropTypes.js.map +1 -1
- package/dist/prop-types/index.d.ts +2 -2
- package/dist/prop-types/index.d.ts.map +1 -1
- package/dist/prop-types/index.js.map +1 -1
- package/dist/redux/actionTypes.d.ts +1 -1
- package/dist/redux/actionTypes.d.ts.map +1 -1
- package/dist/redux/actionTypes.js.map +1 -1
- package/dist/redux/actions.d.ts +63 -8
- package/dist/redux/actions.d.ts.map +1 -1
- package/dist/redux/actions.js +17 -17
- package/dist/redux/actions.js.map +1 -1
- package/dist/redux/index.js.map +1 -1
- package/dist/redux/reducers/index.d.ts +3 -4
- package/dist/redux/reducers/index.d.ts.map +1 -1
- package/dist/redux/reducers/index.js.map +1 -1
- package/dist/redux/reducers/sessionWrapper.d.ts +1 -1
- package/dist/redux/reducers/sessionWrapper.d.ts.map +1 -1
- package/dist/redux/reducers/sessionWrapper.js.map +1 -1
- package/dist/redux/selectors.d.ts +63 -9
- package/dist/redux/selectors.d.ts.map +1 -1
- package/dist/redux/selectors.js +24 -24
- package/dist/redux/selectors.js.map +1 -1
- package/package.json +21 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerUtils.js","names":["shortid","LayoutUtils","TableUtils","Log","ChartPanel","IrisGridPanel","DropdownFilterPanel","isLinkableFromPanel","panel","p","getCoordinateForColumn","isLinkablePanel","setFilterMap","unsetFilterValue","log","module","LinkerUtils","getLinkType","start","end","isolatedLinkerPanelId","panelId","debug2","panelComponent","error","isCompatibleComponent","ALLOWED_LINKS","get","includes","columnType","startColumnType","endColumnType","isCompatibleType","getComponentName","findColumn","columns","columnName","find","name","type","cloneLinksForPanel","links","cloneId","clonedLinks","forEach","link","push","id","generate","Map"],"sources":["../../src/linker/LinkerUtils.tsx"],"sourcesContent":["import shortid from 'shortid';\nimport { LayoutUtils, PanelComponent } from '@deephaven/dashboard';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { ChartPanel, IrisGridPanel, DropdownFilterPanel } from '../panels';\n\nexport type LinkType = 'invalid' | 'filterSource' | 'tableLink';\n\nexport type LinkPoint = {\n panelId: string | string[];\n panelComponent?: string | null;\n columnName: string;\n columnType: string;\n};\n\nexport type Link = {\n start: LinkPoint;\n end?: LinkPoint;\n id: string;\n isReversed?: boolean;\n type: LinkType;\n};\n\nexport type LinkColumn = {\n name: string;\n type: string;\n};\n\nexport type LinkFilterMapValue<T = unknown> = {\n columnType: string;\n text: string;\n value: T;\n};\n\nexport type LinkFilterMap<T = unknown> = Map<string, LinkFilterMapValue<T>>;\n\nexport type LinkDataMapValue = {\n type: string;\n text: string;\n value: string;\n};\n\nexport type LinkDataMap = Record<string, LinkDataMapValue>;\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) => 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\nconst log = Log.module('LinkerUtils');\n\n/**\n * Collection of utility functions for use with the Linker\n */\nclass LinkerUtils {\n static ALLOWED_LINKS = new Map([\n [\n LayoutUtils.getComponentName(IrisGridPanel),\n [\n LayoutUtils.getComponentName(IrisGridPanel),\n LayoutUtils.getComponentName(ChartPanel),\n LayoutUtils.getComponentName(DropdownFilterPanel),\n ],\n ],\n ]);\n\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 getLinkType(\n start?: LinkPoint,\n end?: LinkPoint,\n isolatedLinkerPanelId?: string | string[]\n ): LinkType {\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 'invalid';\n }\n\n if (start.panelComponent == null || end.panelComponent == null) {\n log.error('PanelComponent should not be null', start, end);\n return 'invalid';\n }\n\n const isCompatibleComponent = LinkerUtils.ALLOWED_LINKS.get(\n start.panelComponent\n )?.includes(end.panelComponent);\n\n if (!isCompatibleComponent) {\n log.debug2('Incompatible panel components', start, end);\n return 'invalid';\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 'invalid';\n }\n\n // If all checks pass, link type is determined by the target panel component\n switch (end.panelComponent) {\n case LayoutUtils.getComponentName(ChartPanel):\n case LayoutUtils.getComponentName(IrisGridPanel):\n return 'tableLink';\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n return 'filterSource';\n default:\n }\n\n log.debug2('Incompatible target panel component', end.panelComponent);\n return 'invalid';\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: 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: shortid.generate(),\n start: { ...link.start, panelId: cloneId },\n });\n } else if (link.end?.panelId === panelId) {\n clonedLinks.push({\n ...link,\n id: shortid.generate(),\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
|
+
{"version":3,"sources":["../../src/linker/LinkerUtils.tsx"],"names":["shortid","LayoutUtils","TableUtils","Log","ChartPanel","IrisGridPanel","DropdownFilterPanel","isLinkableFromPanel","panel","p","getCoordinateForColumn","isLinkablePanel","setFilterMap","unsetFilterValue","log","module","LinkerUtils","getLinkType","start","end","isolatedLinkerPanelId","panelId","debug2","panelComponent","error","isCompatibleComponent","ALLOWED_LINKS","get","includes","columnType","startColumnType","endColumnType","isCompatibleType","getComponentName","findColumn","columns","columnName","find","name","type","cloneLinksForPanel","links","cloneId","clonedLinks","forEach","link","push","id","generate","Map"],"mappings":"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","sourcesContent":["import shortid from 'shortid';\nimport { LayoutUtils, PanelComponent } from '@deephaven/dashboard';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { ChartPanel, IrisGridPanel, DropdownFilterPanel } from '../panels';\n\nexport type LinkType = 'invalid' | 'filterSource' | 'tableLink';\n\nexport type LinkPoint = {\n panelId: string | string[];\n panelComponent?: string | null;\n columnName: string;\n columnType: string | null;\n};\n\nexport type Link = {\n start: LinkPoint;\n end?: LinkPoint;\n id: string;\n isReversed?: boolean;\n type: LinkType;\n};\n\nexport type LinkColumn = {\n name: string;\n type: string | null;\n};\n\nexport type LinkFilterMapValue<T = unknown> = {\n columnType: string;\n text: string;\n value: T;\n};\n\nexport type LinkFilterMap<T = unknown> = Map<string, LinkFilterMapValue<T>>;\n\nexport type LinkDataMapValue = {\n type: string;\n text: string;\n value: string;\n};\n\nexport type LinkDataMap = Record<string, LinkDataMapValue>;\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\nconst log = Log.module('LinkerUtils');\n\n/**\n * Collection of utility functions for use with the Linker\n */\nclass LinkerUtils {\n static ALLOWED_LINKS = new Map([\n [\n LayoutUtils.getComponentName(IrisGridPanel),\n [\n LayoutUtils.getComponentName(IrisGridPanel),\n LayoutUtils.getComponentName(ChartPanel),\n LayoutUtils.getComponentName(DropdownFilterPanel),\n ],\n ],\n ]);\n\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 getLinkType(\n start?: LinkPoint,\n end?: LinkPoint,\n isolatedLinkerPanelId?: string | string[]\n ): LinkType {\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 'invalid';\n }\n\n if (start.panelComponent == null || end.panelComponent == null) {\n log.error('PanelComponent should not be null', start, end);\n return 'invalid';\n }\n\n const isCompatibleComponent = LinkerUtils.ALLOWED_LINKS.get(\n start.panelComponent\n )?.includes(end.panelComponent);\n\n if (!isCompatibleComponent) {\n log.debug2('Incompatible panel components', start, end);\n return 'invalid';\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 'invalid';\n }\n\n // If all checks pass, link type is determined by the target panel component\n switch (end.panelComponent) {\n case LayoutUtils.getComponentName(ChartPanel):\n case LayoutUtils.getComponentName(IrisGridPanel):\n return 'tableLink';\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n return 'filterSource';\n default:\n }\n\n log.debug2('Incompatible target panel component', end.panelComponent);\n return 'invalid';\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: 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: shortid.generate(),\n start: { ...link.start, panelId: cloneId },\n });\n } else if (link.end?.panelId === panelId) {\n clonedLinks.push({\n ...link,\n id: shortid.generate(),\n end: { ...link.end, panelId: cloneId },\n });\n }\n });\n return clonedLinks;\n }\n}\n\nexport default LinkerUtils;\n"],"file":"LinkerUtils.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolType.d.ts","sourceRoot":"","sources":["../../src/linker/ToolType.
|
|
1
|
+
{"version":3,"file":"ToolType.d.ts","sourceRoot":"","sources":["../../src/linker/ToolType.ts"],"names":[],"mappings":";;;;AAAA,wBAGG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/linker/ToolType.ts"],"names":["Object","freeze","DEFAULT","LINKER"],"mappings":"AAAA,eAAeA,MAAM,CAACC,MAAP,CAAc;AAC3BC,EAAAA,OAAO,EAAE,SADkB;AAE3BC,EAAAA,MAAM,EAAE;AAFmB,CAAd,CAAf","sourcesContent":["export default Object.freeze({\n DEFAULT: 'DEFAULT',\n LINKER: 'LINKER',\n});\n"],"file":"ToolType.js"}
|
|
@@ -1,28 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
isActive: PropTypes.Validator<boolean>;
|
|
15
|
-
}> | null | undefined)[]>;
|
|
16
|
-
const onColumnSelected: PropTypes.Validator<(...args: any[]) => any>;
|
|
17
|
-
const onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
|
|
18
|
-
const onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
|
|
19
|
-
}
|
|
20
|
-
namespace defaultProps {
|
|
21
|
-
export function onMouseEnter_1(): void;
|
|
22
|
-
export { onMouseEnter_1 as onMouseEnter };
|
|
23
|
-
export function onMouseLeave_1(): void;
|
|
24
|
-
export { onMouseLeave_1 as onMouseLeave };
|
|
25
|
-
}
|
|
1
|
+
import { MouseEventHandler, ReactElement } from 'react';
|
|
2
|
+
import './ChartColumnSelectorOverlay.scss';
|
|
3
|
+
export interface SelectorColumn {
|
|
4
|
+
name: string;
|
|
5
|
+
type: string;
|
|
6
|
+
isValid: boolean;
|
|
7
|
+
isActive: boolean;
|
|
8
|
+
}
|
|
9
|
+
interface ChartColumnSelectorOverlayProps {
|
|
10
|
+
columns: SelectorColumn[];
|
|
11
|
+
onColumnSelected: (name: string) => void;
|
|
12
|
+
onMouseEnter?: (column: SelectorColumn) => void;
|
|
13
|
+
onMouseLeave?: MouseEventHandler<HTMLButtonElement>;
|
|
26
14
|
}
|
|
27
|
-
|
|
15
|
+
declare const ChartColumnSelectorOverlay: {
|
|
16
|
+
({ columns, onColumnSelected, onMouseEnter, onMouseLeave, }: ChartColumnSelectorOverlayProps): ReactElement;
|
|
17
|
+
makeButtonClassName(columnName: string): string;
|
|
18
|
+
defaultProps: {
|
|
19
|
+
onMouseEnter: () => void;
|
|
20
|
+
onMouseLeave: () => void;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export default ChartColumnSelectorOverlay;
|
|
28
24
|
//# sourceMappingURL=ChartColumnSelectorOverlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartColumnSelectorOverlay.d.ts","sourceRoot":"","sources":["../../src/panels/ChartColumnSelectorOverlay.
|
|
1
|
+
{"version":3,"file":"ChartColumnSelectorOverlay.d.ts","sourceRoot":"","sources":["../../src/panels/ChartColumnSelectorOverlay.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG/D,OAAO,mCAAmC,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,+BAA+B;IACvC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,YAAY,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;CACrD;AAED,QAAA,MAAM,0BAA0B;iEAK7B,+BAA+B,GAAG,YAAY;oCAiCa,MAAM;;4BAIhD,IAAI;4BACJ,IAAI;;CAPvB,CAAC;AAUF,eAAe,0BAA0B,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
2
|
import classNames from 'classnames';
|
|
4
3
|
import { SocketedButton } from '@deephaven/components';
|
|
5
4
|
import "./ChartColumnSelectorOverlay.css";
|
|
@@ -23,7 +22,9 @@ var ChartColumnSelectorOverlay = _ref => {
|
|
|
23
22
|
key: column.name,
|
|
24
23
|
className: classNames('btn-chart-column-selector', ChartColumnSelectorOverlay.makeButtonClassName(column.name)),
|
|
25
24
|
onClick: () => onColumnSelected(column.name),
|
|
26
|
-
onMouseEnter: () =>
|
|
25
|
+
onMouseEnter: () => {
|
|
26
|
+
if (_onMouseEnter) _onMouseEnter(column);
|
|
27
|
+
},
|
|
27
28
|
onMouseLeave: onMouseLeave,
|
|
28
29
|
disabled: !column.isValid,
|
|
29
30
|
isLinked: column.isActive
|
|
@@ -32,19 +33,9 @@ var ChartColumnSelectorOverlay = _ref => {
|
|
|
32
33
|
|
|
33
34
|
ChartColumnSelectorOverlay.makeButtonClassName = columnName => "btn-chart-column-selector-".concat(columnName);
|
|
34
35
|
|
|
35
|
-
ChartColumnSelectorOverlay.propTypes = {
|
|
36
|
-
columns: PropTypes.arrayOf(PropTypes.shape({
|
|
37
|
-
name: PropTypes.string.isRequired,
|
|
38
|
-
isValid: PropTypes.bool.isRequired,
|
|
39
|
-
isActive: PropTypes.bool.isRequired
|
|
40
|
-
})).isRequired,
|
|
41
|
-
onColumnSelected: PropTypes.func.isRequired,
|
|
42
|
-
onMouseEnter: PropTypes.func,
|
|
43
|
-
onMouseLeave: PropTypes.func
|
|
44
|
-
};
|
|
45
36
|
ChartColumnSelectorOverlay.defaultProps = {
|
|
46
|
-
onMouseEnter: () =>
|
|
47
|
-
onMouseLeave: () =>
|
|
37
|
+
onMouseEnter: () => undefined,
|
|
38
|
+
onMouseLeave: () => undefined
|
|
48
39
|
};
|
|
49
40
|
export default ChartColumnSelectorOverlay;
|
|
50
41
|
//# sourceMappingURL=ChartColumnSelectorOverlay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/panels/ChartColumnSelectorOverlay.tsx"],"names":["React","classNames","SocketedButton","ChartColumnSelectorOverlay","columns","onColumnSelected","onMouseEnter","onMouseLeave","map","column","name","makeButtonClassName","isValid","isActive","columnName","defaultProps","undefined"],"mappings":"AAAA,OAAOA,KAAP,MAAuD,OAAvD;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,cAAT,QAA+B,uBAA/B;;;AAiBA,IAAMC,0BAA0B,GAAG;AAAA,MAAC;AAClCC,IAAAA,OADkC;AAElCC,IAAAA,gBAFkC;AAGlCC,IAAAA,YAAY,EAAZA,aAHkC;AAIlCC,IAAAA;AAJkC,GAAD;AAAA,sBAMjC;AAAK,IAAA,SAAS,EAAC;AAAf,kBACE;AAAK,IAAA,SAAS,EAAEN,UAAU,CAAC,6BAAD;AAA1B,kBACE,uDACE;AAAK,IAAA,SAAS,EAAC;AAAf,6HADF,eAKE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGG,OAAO,CAACI,GAAR,CAAYC,MAAM,iBACjB,oBAAC,cAAD;AACE,IAAA,GAAG,EAAEA,MAAM,CAACC,IADd;AAEE,IAAA,SAAS,EAAET,UAAU,CACnB,2BADmB,EAEnBE,0BAA0B,CAACQ,mBAA3B,CAA+CF,MAAM,CAACC,IAAtD,CAFmB,CAFvB;AAME,IAAA,OAAO,EAAE,MAAML,gBAAgB,CAACI,MAAM,CAACC,IAAR,CANjC;AAOE,IAAA,YAAY,EAAE,MAAM;AAClB,UAAIJ,aAAJ,EAAkBA,aAAY,CAACG,MAAD,CAAZ;AACnB,KATH;AAUE,IAAA,YAAY,EAAEF,YAVhB;AAWE,IAAA,QAAQ,EAAE,CAACE,MAAM,CAACG,OAXpB;AAYE,IAAA,QAAQ,EAAEH,MAAM,CAACI;AAZnB,KAcGJ,MAAM,CAACC,IAdV,CADD,CADH,CALF,CADF,CADF,CANiC;AAAA,CAAnC;;AAsCAP,0BAA0B,CAACQ,mBAA3B,GAAkDG,UAAD,wCAClBA,UADkB,CAAjD;;AAGAX,0BAA0B,CAACY,YAA3B,GAA0C;AACxCT,EAAAA,YAAY,EAAE,MAAYU,SADc;AAExCT,EAAAA,YAAY,EAAE,MAAYS;AAFc,CAA1C;AAKA,eAAeb,0BAAf","sourcesContent":["import React, { MouseEventHandler, ReactElement } from 'react';\nimport classNames from 'classnames';\nimport { SocketedButton } from '@deephaven/components';\nimport './ChartColumnSelectorOverlay.scss';\n\nexport interface SelectorColumn {\n name: string;\n type: string;\n isValid: boolean;\n isActive: boolean;\n}\n\ninterface ChartColumnSelectorOverlayProps {\n columns: SelectorColumn[];\n onColumnSelected: (name: string) => void;\n onMouseEnter?: (column: SelectorColumn) => void;\n onMouseLeave?: MouseEventHandler<HTMLButtonElement>;\n}\n\nconst ChartColumnSelectorOverlay = ({\n columns,\n onColumnSelected,\n onMouseEnter,\n onMouseLeave,\n}: ChartColumnSelectorOverlayProps): ReactElement => (\n <div className=\"chart-panel-overlay chart-column-selector-overlay\">\n <div className={classNames('chart-panel-overlay-content')}>\n <>\n <div className=\"info-message\">\n This plot requires a filter control to be added to the layout or a\n table link to be created on the following columns:\n </div>\n <div className=\"waiting-column-select-list\">\n {columns.map(column => (\n <SocketedButton\n key={column.name}\n className={classNames(\n 'btn-chart-column-selector',\n ChartColumnSelectorOverlay.makeButtonClassName(column.name)\n )}\n onClick={() => onColumnSelected(column.name)}\n onMouseEnter={() => {\n if (onMouseEnter) onMouseEnter(column);\n }}\n onMouseLeave={onMouseLeave}\n disabled={!column.isValid}\n isLinked={column.isActive}\n >\n {column.name}\n </SocketedButton>\n ))}\n </div>\n </>\n </div>\n </div>\n);\n\nChartColumnSelectorOverlay.makeButtonClassName = (columnName: string) =>\n `btn-chart-column-selector-${columnName}`;\n\nChartColumnSelectorOverlay.defaultProps = {\n onMouseEnter: (): void => undefined,\n onMouseLeave: (): void => undefined,\n};\n\nexport default ChartColumnSelectorOverlay;\n"],"file":"ChartColumnSelectorOverlay.js"}
|
|
@@ -1,23 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const linkedColumnMap: PropTypes.Validator<Map<unknown, unknown>>;
|
|
16
|
-
const onAdd: PropTypes.Validator<(...args: any[]) => any>;
|
|
17
|
-
const onOpenLinker: PropTypes.Validator<(...args: any[]) => any>;
|
|
18
|
-
const waitingFilterMap: PropTypes.Validator<Map<unknown, unknown>>;
|
|
19
|
-
const waitingInputMap: PropTypes.Validator<Map<unknown, unknown>>;
|
|
20
|
-
}
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { ColumnName, InputFilter } from '@deephaven/iris-grid';
|
|
4
|
+
import { Column } from '@deephaven/jsapi-shim';
|
|
5
|
+
import './ChartFilterOverlay.scss';
|
|
6
|
+
export declare type ColumnMap = Map<ColumnName, Column>;
|
|
7
|
+
interface ChartFilterOverlayProps {
|
|
8
|
+
columnMap: ColumnMap;
|
|
9
|
+
inputFilterMap: Map<ColumnName, InputFilter>;
|
|
10
|
+
linkedColumnMap: Map<string, unknown>;
|
|
11
|
+
onAdd: (columns: InputFilter[]) => void;
|
|
12
|
+
onOpenLinker: () => void;
|
|
13
|
+
waitingFilterMap: Map<string, InputFilter>;
|
|
14
|
+
waitingInputMap: Map<ColumnName, unknown>;
|
|
21
15
|
}
|
|
22
|
-
|
|
16
|
+
declare const ChartFilterOverlay: {
|
|
17
|
+
({ columnMap, inputFilterMap, linkedColumnMap, onAdd, onOpenLinker, waitingFilterMap, waitingInputMap, }: ChartFilterOverlayProps): ReactElement;
|
|
18
|
+
propTypes: {
|
|
19
|
+
columnMap: PropTypes.Validator<Map<unknown, unknown>>;
|
|
20
|
+
inputFilterMap: PropTypes.Validator<Map<unknown, unknown>>;
|
|
21
|
+
linkedColumnMap: PropTypes.Validator<Map<unknown, unknown>>;
|
|
22
|
+
onAdd: PropTypes.Validator<(...args: any[]) => any>;
|
|
23
|
+
onOpenLinker: PropTypes.Validator<(...args: any[]) => any>;
|
|
24
|
+
waitingFilterMap: PropTypes.Validator<Map<unknown, unknown>>;
|
|
25
|
+
waitingInputMap: PropTypes.Validator<Map<unknown, unknown>>;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
export default ChartFilterOverlay;
|
|
23
29
|
//# sourceMappingURL=ChartFilterOverlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartFilterOverlay.d.ts","sourceRoot":"","sources":["../../src/panels/ChartFilterOverlay.
|
|
1
|
+
{"version":3,"file":"ChartFilterOverlay.d.ts","sourceRoot":"","sources":["../../src/panels/ChartFilterOverlay.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAc,YAAY,EAAwB,MAAM,OAAO,CAAC;AAC9E,OAAO,SAAS,MAAM,YAAY,CAAC;AAMnC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,2BAA2B,CAAC;AAEnC,oBAAY,SAAS,GAAG,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAEhD,UAAU,uBAAuB;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,cAAc,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IAC7C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC3C,eAAe,EAAE,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,QAAA,MAAM,kBAAkB;8GAQrB,uBAAuB,GAAG,YAAY;;;;;;;;;;CA+FxC,CAAC;AAYF,eAAe,kBAAkB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/panels/ChartFilterOverlay.tsx"],"names":["React","useCallback","useMemo","PropTypes","classNames","FontAwesomeIcon","ButtonOld","vsPass","vsWarning","TextUtils","ChartFilterOverlay","columnMap","inputFilterMap","linkedColumnMap","onAdd","onOpenLinker","waitingFilterMap","waitingInputMap","inputMessage","waitingColumns","Array","from","keys","needsInputFilterValue","find","columnName","get","needsLinkValue","columnsText","join","map","item","columns","values","handleAddClick","event","stopPropagation","preventDefault","handleOpenLinker","isWaitingFilters","size","isWaitingInput","column","isColumnWaiting","has","name","icon","propTypes","instanceOf","Map","isRequired","func"],"mappings":"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","sourcesContent":["import React, { MouseEvent, ReactElement, useCallback, useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ButtonOld } from '@deephaven/components';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { TextUtils } from '@deephaven/utils';\nimport { ColumnName, InputFilter } from '@deephaven/iris-grid';\nimport { Column } from '@deephaven/jsapi-shim';\nimport './ChartFilterOverlay.scss';\n\nexport type ColumnMap = Map<ColumnName, Column>;\n\ninterface ChartFilterOverlayProps {\n columnMap: ColumnMap;\n inputFilterMap: Map<ColumnName, InputFilter>;\n linkedColumnMap: Map<string, unknown>;\n onAdd: (columns: InputFilter[]) => void;\n onOpenLinker: () => void;\n waitingFilterMap: Map<string, InputFilter>;\n waitingInputMap: Map<ColumnName, unknown>;\n}\n\nconst ChartFilterOverlay = ({\n columnMap,\n inputFilterMap,\n linkedColumnMap,\n onAdd,\n onOpenLinker,\n waitingFilterMap,\n waitingInputMap,\n}: ChartFilterOverlayProps): ReactElement => {\n const inputMessage = useMemo(() => {\n const waitingColumns = Array.from(waitingInputMap.keys());\n const needsInputFilterValue = waitingColumns.find(\n (columnName: ColumnName) => inputFilterMap.get(columnName) != null\n );\n const needsLinkValue = waitingColumns.find(\n columnName => linkedColumnMap.get(columnName) != null\n );\n const columnsText = TextUtils.join(waitingColumns.map(item => `\"${item}\"`));\n if (needsInputFilterValue && needsLinkValue) {\n return `Use a filter control or linked table to set a value for ${columnsText}`;\n }\n if (needsInputFilterValue) {\n return `Set a filter control value for ${columnsText}`;\n }\n return `Double click a row in a linked table to set a value for ${columnsText}`;\n }, [inputFilterMap, linkedColumnMap, waitingInputMap]);\n\n const columns = useMemo(() => Array.from(columnMap.values()), [columnMap]);\n\n const handleAddClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n event.stopPropagation();\n event.preventDefault();\n\n onAdd(Array.from(waitingFilterMap.values()));\n },\n [onAdd, waitingFilterMap]\n );\n\n const handleOpenLinker = useCallback(\n event => {\n event.stopPropagation();\n event.preventDefault();\n\n onOpenLinker();\n },\n [onOpenLinker]\n );\n\n const isWaitingFilters = waitingFilterMap.size > 0;\n const isWaitingInput = !isWaitingFilters && waitingInputMap.size > 0;\n\n return (\n <div className=\"chart-panel-overlay chart-filter-overlay\">\n <div\n className={classNames(\n 'chart-panel-overlay-content chart-filter-overlay-content',\n { 'chart-filter-waiting-filter': isWaitingFilters },\n { 'chart-filter-waiting-input': isWaitingInput }\n )}\n >\n {isWaitingFilters && (\n <>\n <div className=\"info-message\">\n This plot requires a filter control to be added to the layout or a\n table link to be created on the following columns:\n </div>\n <div className=\"waiting-filter-list\">\n {columns.map(column => {\n const isColumnWaiting = waitingFilterMap.has(column.name);\n const icon = isColumnWaiting ? vsWarning : vsPass;\n return (\n <div\n key={column.name}\n className={classNames('waiting-filter-item', {\n 'is-invalid': isColumnWaiting,\n })}\n >\n <FontAwesomeIcon icon={icon} />\n {column.name}\n </div>\n );\n })}\n </div>\n <div>\n <ButtonOld onClick={handleAddClick} className=\"btn-primary\">\n Add Input Filters\n </ButtonOld>\n <ButtonOld onClick={handleOpenLinker} className=\"btn-primary\">\n Open Linker Tool\n </ButtonOld>\n </div>\n </>\n )}\n {isWaitingInput && (\n <>\n <div className=\"info-message\">Waiting for User Input</div>\n <div className=\"\">{inputMessage}</div>\n </>\n )}\n </div>\n </div>\n );\n};\n\nChartFilterOverlay.propTypes = {\n columnMap: PropTypes.instanceOf(Map).isRequired,\n inputFilterMap: PropTypes.instanceOf(Map).isRequired,\n linkedColumnMap: PropTypes.instanceOf(Map).isRequired,\n onAdd: PropTypes.func.isRequired,\n onOpenLinker: PropTypes.func.isRequired,\n waitingFilterMap: PropTypes.instanceOf(Map).isRequired,\n waitingInputMap: PropTypes.instanceOf(Map).isRequired,\n};\n\nexport default ChartFilterOverlay;\n"],"file":"ChartFilterOverlay.js"}
|
|
@@ -1,67 +1,156 @@
|
|
|
1
|
-
|
|
1
|
+
import { Component, ReactElement, RefObject } from 'react';
|
|
2
|
+
import { Chart, ChartModel } from '@deephaven/chart';
|
|
3
|
+
import { PanelComponent } from '@deephaven/dashboard';
|
|
4
|
+
import { InputFilter, ColumnName } from '@deephaven/iris-grid';
|
|
5
|
+
import { Column, SeriesPlotStyle, TableTemplate } from '@deephaven/jsapi-shim';
|
|
6
|
+
import { WorkspaceSettings } from '@deephaven/redux';
|
|
7
|
+
import { Pending } from '@deephaven/utils';
|
|
8
|
+
import GoldenLayout from '@deephaven/golden-layout';
|
|
9
|
+
import { ColumnMap } from './ChartFilterOverlay';
|
|
10
|
+
import { SelectorColumn } from './ChartColumnSelectorOverlay';
|
|
11
|
+
import './ChartPanel.scss';
|
|
12
|
+
import { Link } from '../linker/LinkerUtils';
|
|
13
|
+
import { ColumnSelectionValidator } from '../linker/ColumnSelectionValidator';
|
|
14
|
+
export declare type InputFilterMap = Map<string, InputFilter>;
|
|
15
|
+
export declare type FilterMap = Map<string, string>;
|
|
16
|
+
export declare type LinkedColumnMap = Map<string, Column>;
|
|
17
|
+
export interface ChartPanelMetaData {
|
|
18
|
+
figure: string;
|
|
19
|
+
table: string;
|
|
20
|
+
query: string;
|
|
21
|
+
querySerial: string;
|
|
22
|
+
sourcePanelId: string;
|
|
23
|
+
settings: {
|
|
24
|
+
isLinked: boolean;
|
|
25
|
+
title: string;
|
|
26
|
+
xAxis: string;
|
|
27
|
+
series: string[];
|
|
28
|
+
type: SeriesPlotStyle;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
declare type Settings = Record<string, unknown>;
|
|
32
|
+
interface PanelState {
|
|
33
|
+
filterValueMap: [string, string][];
|
|
34
|
+
settings: Partial<WorkspaceSettings>;
|
|
35
|
+
tableSettings: unknown;
|
|
36
|
+
irisGridState?: {
|
|
37
|
+
advancedFilters: unknown;
|
|
38
|
+
quickFilters: unknown;
|
|
39
|
+
sorts: unknown;
|
|
40
|
+
};
|
|
41
|
+
irisGridPanelState?: {
|
|
42
|
+
partitionColumn: string;
|
|
43
|
+
partition: unknown;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
interface ChartPanelProps {
|
|
47
|
+
glContainer: GoldenLayout.Container;
|
|
48
|
+
glEventHub: GoldenLayout.EventEmitter;
|
|
49
|
+
metadata: ChartPanelMetaData;
|
|
50
|
+
/** Function to build the ChartModel used by this ChartPanel. Can return a promise. */
|
|
51
|
+
makeModel: () => ChartModel;
|
|
52
|
+
inputFilters: InputFilter[];
|
|
53
|
+
links: Link[];
|
|
54
|
+
localDashboardId: string;
|
|
55
|
+
isLinkerActive: boolean;
|
|
56
|
+
source?: TableTemplate;
|
|
57
|
+
sourcePanel?: PanelComponent;
|
|
58
|
+
columnSelectionValidator?: ColumnSelectionValidator;
|
|
59
|
+
setActiveTool: (tool: string) => void;
|
|
60
|
+
setDashboardIsolatedLinkerPanelId: (id: string, secondParam: undefined) => void;
|
|
61
|
+
panelState: PanelState;
|
|
62
|
+
settings: Partial<WorkspaceSettings>;
|
|
63
|
+
}
|
|
64
|
+
interface ChartPanelState {
|
|
65
|
+
settings: Partial<WorkspaceSettings>;
|
|
66
|
+
error?: unknown;
|
|
67
|
+
isActive: boolean;
|
|
68
|
+
isDisconnected: boolean;
|
|
69
|
+
isLoading: boolean;
|
|
70
|
+
isLoaded: boolean;
|
|
71
|
+
isLinked: boolean;
|
|
72
|
+
filterMap: Map<string, string>;
|
|
73
|
+
filterValueMap: Map<string, string>;
|
|
74
|
+
model?: ChartModel;
|
|
75
|
+
columnMap: ColumnMap;
|
|
76
|
+
panelState: PanelState;
|
|
77
|
+
}
|
|
78
|
+
export declare class ChartPanel extends Component<ChartPanelProps, ChartPanelState> {
|
|
79
|
+
static defaultProps: {
|
|
80
|
+
columnSelectionValidator: null;
|
|
81
|
+
isLinkerActive: boolean;
|
|
82
|
+
source: null;
|
|
83
|
+
sourcePanel: null;
|
|
84
|
+
panelState: null;
|
|
85
|
+
settings: {};
|
|
86
|
+
};
|
|
87
|
+
static displayName: string;
|
|
2
88
|
static COMPONENT: string;
|
|
3
|
-
constructor(props:
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
89
|
+
constructor(props: ChartPanelProps);
|
|
90
|
+
componentDidMount(): void;
|
|
91
|
+
componentDidUpdate(prevProps: ChartPanelProps, prevState: ChartPanelState): void;
|
|
92
|
+
componentWillUnmount(): void;
|
|
93
|
+
panelContainer: RefObject<HTMLDivElement>;
|
|
94
|
+
chart: RefObject<Chart>;
|
|
95
|
+
pending: Pending;
|
|
96
|
+
initModel(): void;
|
|
97
|
+
getWaitingInputMap: (isFilterRequired: boolean, columnMap: ColumnMap, filterMap: FilterMap) => Map<string, Column>;
|
|
98
|
+
getWaitingFilterMap: (isFilterRequired: boolean, columnMap: ColumnMap, filterMap: FilterMap, linkedColumnMap: LinkedColumnMap, inputFilterMap: InputFilterMap) => Map<any, any>;
|
|
99
|
+
getInputFilterColumnMap: (columnMap: ColumnMap, inputFilters: InputFilter[]) => Map<string, InputFilter>;
|
|
100
|
+
getLinkedColumnMap: (columnMap: ColumnMap, links: Link[]) => Map<string, Column>;
|
|
101
|
+
getSelectorColumns: (columnMap: ColumnMap, linkedColumnMap: LinkedColumnMap, columnSelectionValidator?: ColumnSelectionValidator | undefined) => {
|
|
102
|
+
name: string;
|
|
103
|
+
type: string;
|
|
104
|
+
isValid: boolean;
|
|
105
|
+
isActive: boolean;
|
|
106
|
+
}[];
|
|
107
|
+
startListeningToSource(table: TableTemplate): void;
|
|
108
|
+
stopListeningToSource(table: TableTemplate): void;
|
|
109
|
+
loadModelIfNecessary(): void;
|
|
110
|
+
isHidden(): boolean;
|
|
111
|
+
handleColumnSelected(columnName: string): void;
|
|
112
|
+
handleColumnMouseEnter({ type, name }: SelectorColumn): void;
|
|
9
113
|
handleColumnMouseLeave(): void;
|
|
10
114
|
handleDisconnect(): void;
|
|
11
|
-
|
|
12
|
-
handleFilterAdd(columns: any): void;
|
|
13
|
-
handleHide(): void;
|
|
14
|
-
handleError(): void;
|
|
15
|
-
handleLoadError(error: any): void;
|
|
16
|
-
handleLoadSuccess(model: any): void;
|
|
17
|
-
handleResize(): void;
|
|
18
|
-
handleSettingsChanged(update: any): void;
|
|
115
|
+
handleFilterAdd(columns: InputFilter[]): void;
|
|
19
116
|
handleOpenLinker(): void;
|
|
20
|
-
|
|
117
|
+
handleReconnect(): void;
|
|
118
|
+
handleLoadSuccess(model: ChartModel): void;
|
|
119
|
+
handleLoadError(error: unknown): void;
|
|
21
120
|
handleSourceColumnChange(): void;
|
|
22
121
|
handleSourceFilterChange(): void;
|
|
23
122
|
handleSourceSortChange(): void;
|
|
123
|
+
updateModelFromSource(): void;
|
|
124
|
+
updatePanelState(): void;
|
|
125
|
+
handleError(): void;
|
|
126
|
+
handleResize(): void;
|
|
127
|
+
handleSettingsChanged(update: Partial<Settings>): void;
|
|
128
|
+
handleHide(): void;
|
|
129
|
+
handleShow(): void;
|
|
24
130
|
handleTabBlur(): void;
|
|
25
131
|
handleTabFocus(): void;
|
|
26
132
|
handleUpdate(): void;
|
|
27
|
-
updateModelFromSource(): void;
|
|
28
133
|
handleClearAllFilters(): void;
|
|
29
|
-
panelContainer: React.RefObject<any>;
|
|
30
|
-
chart: React.RefObject<any>;
|
|
31
|
-
pending: Pending;
|
|
32
|
-
initModel(): void;
|
|
33
|
-
getWaitingInputMap: (this: any, isFilterRequired: any, columnMap: any, filterMap: any) => Map<any, any>;
|
|
34
|
-
getWaitingFilterMap: (this: any, isFilterRequired: any, columnMap: any, filterMap: any, linkedColumnMap: any, inputFilterMap: any) => Map<any, any>;
|
|
35
|
-
getInputFilterColumnMap: (this: any, columnMap: any, inputFilters: any) => Map<any, any>;
|
|
36
|
-
getLinkedColumnMap: (this: any, columnMap: any, links: any) => Map<any, any>;
|
|
37
|
-
getSelectorColumns: (this: any, columnMap: any, linkedColumnMap: any, columnSelectionValidator: any) => {
|
|
38
|
-
name: any;
|
|
39
|
-
type: any;
|
|
40
|
-
isValid: any;
|
|
41
|
-
isActive: any;
|
|
42
|
-
}[];
|
|
43
|
-
startListeningToSource(table: any): void;
|
|
44
|
-
stopListeningToSource(table: any): void;
|
|
45
|
-
loadModelIfNecessary(): void;
|
|
46
|
-
isHidden(): any;
|
|
47
|
-
updatePanelState(): void;
|
|
48
134
|
/**
|
|
49
135
|
* Create an input filter panel for the provided column
|
|
50
|
-
* @param
|
|
136
|
+
* @param column The column to create the input filter for
|
|
51
137
|
*/
|
|
52
|
-
openInputFilter(column:
|
|
53
|
-
setActive(isActive:
|
|
138
|
+
openInputFilter(column: InputFilter): void;
|
|
139
|
+
setActive(isActive: boolean): void;
|
|
54
140
|
sendColumnChange(): void;
|
|
55
|
-
getCoordinateForColumn(columnName:
|
|
141
|
+
getCoordinateForColumn(columnName: ColumnName): [number, number] | null;
|
|
56
142
|
/**
|
|
57
143
|
* Set chart filters based on the filter map
|
|
58
|
-
* @param
|
|
144
|
+
* @param filterMapParam Filter map
|
|
59
145
|
*/
|
|
60
|
-
setFilterMap(filterMapParam: Map<string,
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
146
|
+
setFilterMap(filterMapParam: Map<string, {
|
|
147
|
+
columnType: string;
|
|
148
|
+
value: string;
|
|
149
|
+
}>): void;
|
|
150
|
+
unsetFilterValue(columnName: ColumnName): void;
|
|
151
|
+
updateChangedInputFilters(inputFilters: InputFilter[], prevInputFilters: InputFilter[]): void;
|
|
152
|
+
updateInputFilters(inputFilters: InputFilter[], forceUpdate?: boolean): void;
|
|
153
|
+
deleteInputFilters(inputFilters: InputFilter[], forceUpdate?: boolean): void;
|
|
65
154
|
updateColumnFilters(): void;
|
|
66
155
|
updateFilters(): void;
|
|
67
156
|
/**
|
|
@@ -69,112 +158,20 @@ export class ChartPanel extends React.Component<any, any, any> {
|
|
|
69
158
|
*/
|
|
70
159
|
pruneFilterMaps(): void;
|
|
71
160
|
updateChart(): void;
|
|
161
|
+
render(): ReactElement;
|
|
72
162
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
title: PropTypes.Requireable<string>;
|
|
87
|
-
setTitle: PropTypes.Requireable<(...args: any[]) => any>;
|
|
88
|
-
close: PropTypes.Requireable<(...args: any[]) => any>;
|
|
89
|
-
}>>;
|
|
90
|
-
const glEventHub: PropTypes.Validator<PropTypes.InferProps<{
|
|
91
|
-
on: PropTypes.Requireable<(...args: any[]) => any>;
|
|
92
|
-
off: PropTypes.Requireable<(...args: any[]) => any>;
|
|
93
|
-
emit: PropTypes.Requireable<(...args: any[]) => any>;
|
|
94
|
-
}>>;
|
|
95
|
-
const metadata: PropTypes.Validator<PropTypes.InferProps<{
|
|
96
|
-
figure: PropTypes.Requireable<string>;
|
|
97
|
-
table: PropTypes.Requireable<string>;
|
|
98
|
-
query: PropTypes.Requireable<string>;
|
|
99
|
-
querySerial: PropTypes.Requireable<string>;
|
|
100
|
-
sourcePanelId: PropTypes.Requireable<string>;
|
|
101
|
-
settings: PropTypes.Requireable<PropTypes.InferProps<{
|
|
102
|
-
isLinked: PropTypes.Requireable<boolean>;
|
|
103
|
-
}>>;
|
|
104
|
-
}>>;
|
|
105
|
-
const makeModel: PropTypes.Validator<(...args: any[]) => any>;
|
|
106
|
-
const inputFilters: PropTypes.Validator<(PropTypes.InferProps<{
|
|
107
|
-
name: PropTypes.Validator<string>;
|
|
108
|
-
type: PropTypes.Validator<string>;
|
|
109
|
-
value: any;
|
|
110
|
-
}> | null | undefined)[]>;
|
|
111
|
-
const links: PropTypes.Validator<(PropTypes.InferProps<{
|
|
112
|
-
start: PropTypes.Requireable<PropTypes.InferProps<{
|
|
113
|
-
panelId: PropTypes.Validator<string>;
|
|
114
|
-
columnName: PropTypes.Validator<string>;
|
|
115
|
-
}>>;
|
|
116
|
-
end: PropTypes.Requireable<PropTypes.InferProps<{
|
|
117
|
-
panelId: PropTypes.Validator<string>;
|
|
118
|
-
columnName: PropTypes.Validator<string>;
|
|
119
|
-
}>>;
|
|
120
|
-
id: PropTypes.Requireable<string>;
|
|
121
|
-
isReversed: PropTypes.Requireable<boolean>;
|
|
122
|
-
}> | null | undefined)[]>;
|
|
123
|
-
const localDashboardId: PropTypes.Validator<string>;
|
|
124
|
-
const isLinkerActive: PropTypes.Requireable<boolean>;
|
|
125
|
-
const source: PropTypes.Requireable<PropTypes.InferProps<{
|
|
126
|
-
columns: PropTypes.Validator<(PropTypes.InferProps<{
|
|
127
|
-
name: PropTypes.Validator<string>;
|
|
128
|
-
type: PropTypes.Validator<string>;
|
|
129
|
-
description: PropTypes.Requireable<string>;
|
|
130
|
-
constituentType: PropTypes.Requireable<string>;
|
|
131
|
-
}> | null | undefined)[]>;
|
|
132
|
-
customColumns: PropTypes.Validator<(string | null | undefined)[]>;
|
|
133
|
-
filter: PropTypes.Requireable<(PropTypes.InferProps<{
|
|
134
|
-
not: PropTypes.Validator<(...args: any[]) => any>;
|
|
135
|
-
and: PropTypes.Validator<(...args: any[]) => any>;
|
|
136
|
-
or: PropTypes.Validator<(...args: any[]) => any>;
|
|
137
|
-
}> | null | undefined)[]>;
|
|
138
|
-
addEventListener: PropTypes.Validator<(...args: any[]) => any>;
|
|
139
|
-
removeEventListener: PropTypes.Validator<(...args: any[]) => any>;
|
|
140
|
-
size: PropTypes.Validator<number>;
|
|
141
|
-
sort: PropTypes.Requireable<any[]>;
|
|
142
|
-
copy: PropTypes.Validator<(...args: any[]) => any>;
|
|
143
|
-
applyFilter: PropTypes.Validator<(...args: any[]) => any>;
|
|
144
|
-
applySort: PropTypes.Validator<(...args: any[]) => any>;
|
|
145
|
-
applyCustomColumns: PropTypes.Validator<(...args: any[]) => any>;
|
|
146
|
-
description: PropTypes.Requireable<string>;
|
|
147
|
-
}>>;
|
|
148
|
-
const sourcePanel: PropTypes.Requireable<PropTypes.InferProps<{
|
|
149
|
-
state: PropTypes.Requireable<PropTypes.InferProps<{
|
|
150
|
-
panelState: PropTypes.Requireable<PropTypes.InferProps<{}>>;
|
|
151
|
-
}>>;
|
|
152
|
-
}>>;
|
|
153
|
-
const columnSelectionValidator: PropTypes.Requireable<(...args: any[]) => any>;
|
|
154
|
-
const setActiveTool: PropTypes.Validator<(...args: any[]) => any>;
|
|
155
|
-
const setDashboardIsolatedLinkerPanelId: PropTypes.Validator<(...args: any[]) => any>;
|
|
156
|
-
const panelState: PropTypes.Requireable<PropTypes.InferProps<{}>>;
|
|
157
|
-
const settings: PropTypes.Requireable<PropTypes.InferProps<{}>>;
|
|
158
|
-
}
|
|
159
|
-
namespace defaultProps {
|
|
160
|
-
const columnSelectionValidator_1: null;
|
|
161
|
-
export { columnSelectionValidator_1 as columnSelectionValidator };
|
|
162
|
-
const isLinkerActive_1: boolean;
|
|
163
|
-
export { isLinkerActive_1 as isLinkerActive };
|
|
164
|
-
const source_1: null;
|
|
165
|
-
export { source_1 as source };
|
|
166
|
-
const sourcePanel_1: null;
|
|
167
|
-
export { sourcePanel_1 as sourcePanel };
|
|
168
|
-
const panelState_1: null;
|
|
169
|
-
export { panelState_1 as panelState };
|
|
170
|
-
const settings_1: {};
|
|
171
|
-
export { settings_1 as settings };
|
|
172
|
-
}
|
|
173
|
-
const displayName: string;
|
|
174
|
-
}
|
|
175
|
-
declare var _default: import("react-redux").ConnectedComponent<typeof ChartPanel, any>;
|
|
163
|
+
declare const _default: import("react-redux").ConnectedComponent<typeof ChartPanel, import("react-redux").Omit<Pick<ChartPanelProps, "glContainer" | "metadata" | "glEventHub" | "localDashboardId" | "inputFilters" | "links" | "makeModel" | "setActiveTool" | "setDashboardIsolatedLinkerPanelId"> & Partial<Pick<ChartPanelProps, "source" | "panelState" | "columnSelectionValidator" | "isLinkerActive" | "settings" | "sourcePanel">> & Partial<Pick<{
|
|
164
|
+
columnSelectionValidator: null;
|
|
165
|
+
isLinkerActive: boolean;
|
|
166
|
+
source: null;
|
|
167
|
+
sourcePanel: null;
|
|
168
|
+
panelState: null;
|
|
169
|
+
settings: {};
|
|
170
|
+
}, never>>, "source" | "columnSelectionValidator" | "isLinkerActive" | "settings" | "inputFilters" | "links" | "setActiveTool" | "setDashboardIsolatedLinkerPanelId" | "sourcePanel"> & {
|
|
171
|
+
localDashboardId: string;
|
|
172
|
+
metadata: {
|
|
173
|
+
sourcePanelId: string;
|
|
174
|
+
};
|
|
175
|
+
}>;
|
|
176
176
|
export default _default;
|
|
177
|
-
import React from "react";
|
|
178
|
-
import { Pending } from "@deephaven/utils";
|
|
179
|
-
import PropTypes from "prop-types";
|
|
180
177
|
//# sourceMappingURL=ChartPanel.d.ts.map
|