@deephaven/dashboard-core-plugins 0.5.2-matplotlib.3 → 0.6.1-demo.10
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/{src/ChartPlugin.d.ts → ChartPlugin.d.ts} +0 -0
- package/dist/ChartPlugin.d.ts.map +1 -0
- package/dist/ChartPlugin.js +25 -22
- package/dist/ChartPlugin.js.map +1 -1
- package/dist/{src/ConsolePlugin.d.ts → ConsolePlugin.d.ts} +0 -0
- package/dist/ConsolePlugin.d.ts.map +1 -0
- package/dist/ConsolePlugin.js +141 -139
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/{src/FilterPlugin.d.ts → FilterPlugin.d.ts} +0 -0
- package/dist/FilterPlugin.d.ts.map +1 -0
- package/dist/FilterPlugin.js +114 -116
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/{src/GridPlugin.d.ts → GridPlugin.d.ts} +0 -0
- package/dist/GridPlugin.d.ts.map +1 -0
- package/dist/GridPlugin.js +29 -26
- package/dist/GridPlugin.js.map +1 -1
- package/dist/{src/LinkerPlugin.d.ts → LinkerPlugin.d.ts} +0 -0
- package/dist/LinkerPlugin.d.ts.map +1 -0
- package/dist/LinkerPlugin.js +7 -5
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/{src/MarkdownPlugin.d.ts → MarkdownPlugin.d.ts} +0 -0
- package/dist/MarkdownPlugin.d.ts.map +1 -0
- package/dist/MarkdownPlugin.js +44 -45
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPlugin.d.ts +8 -0
- package/dist/PandasPlugin.d.ts.map +1 -0
- package/dist/PandasPlugin.js +12 -12
- package/dist/PandasPlugin.js.map +1 -1
- package/dist/{src/controls → controls}/ControlType.d.ts +2 -0
- package/dist/controls/ControlType.d.ts.map +1 -0
- package/dist/controls/ControlType.js +5 -5
- package/dist/controls/ControlType.js.map +1 -1
- package/dist/{src/controls → controls}/dropdown-filter/DropdownFilter.d.ts +6 -0
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -0
- package/dist/controls/dropdown-filter/DropdownFilter.js +356 -394
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/{src/controls → controls}/input-filter/InputFilter.d.ts +6 -0
- package/dist/controls/input-filter/InputFilter.d.ts.map +1 -0
- package/dist/controls/input-filter/InputFilter.js +256 -270
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/{src/controls → controls}/markdown/MarkdownContainer.d.ts +0 -0
- package/dist/controls/markdown/MarkdownContainer.d.ts.map +1 -0
- package/dist/controls/markdown/MarkdownContainer.js +18 -56
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/{src/controls → controls}/markdown/MarkdownEditor.d.ts +0 -0
- package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -0
- package/dist/controls/markdown/MarkdownEditor.js +36 -75
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/{src/controls → controls}/markdown/MarkdownStartPage.d.ts +0 -0
- package/dist/controls/markdown/MarkdownStartPage.d.ts.map +1 -0
- package/dist/controls/markdown/MarkdownStartPage.js +93 -133
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/{src/controls → controls}/markdown/MarkdownUtils.d.ts +0 -0
- package/dist/controls/markdown/MarkdownUtils.d.ts.map +1 -0
- package/dist/controls/markdown/MarkdownUtils.js +17 -32
- package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
- package/dist/{src/events → events}/ChartEvent.d.ts +0 -0
- package/dist/events/ChartEvent.d.ts.map +1 -0
- package/dist/events/ChartEvent.js +1 -5
- package/dist/events/ChartEvent.js.map +1 -1
- package/dist/{src/events → events}/ConsoleEvent.d.ts +0 -0
- package/dist/events/ConsoleEvent.d.ts.map +1 -0
- package/dist/events/ConsoleEvent.js +1 -5
- package/dist/events/ConsoleEvent.js.map +1 -1
- package/dist/{src/events → events}/ControlEvent.d.ts +0 -0
- package/dist/events/ControlEvent.d.ts.map +1 -0
- package/dist/events/ControlEvent.js +1 -5
- package/dist/events/ControlEvent.js.map +1 -1
- package/dist/{src/events → events}/InputFilterEvent.d.ts +2 -0
- package/dist/events/InputFilterEvent.d.ts.map +1 -0
- package/dist/events/InputFilterEvent.js +3 -5
- package/dist/events/InputFilterEvent.js.map +1 -1
- package/dist/{src/events → events}/IrisGridEvent.d.ts +0 -0
- package/dist/events/IrisGridEvent.d.ts.map +1 -0
- package/dist/events/IrisGridEvent.js +1 -5
- package/dist/events/IrisGridEvent.js.map +1 -1
- package/dist/{src/events → events}/MarkdownEvent.d.ts +0 -0
- package/dist/events/MarkdownEvent.d.ts.map +1 -0
- package/dist/{src/events → events}/NotebookEvent.d.ts +0 -0
- package/dist/events/NotebookEvent.d.ts.map +1 -0
- package/dist/events/NotebookEvent.js +1 -5
- package/dist/events/NotebookEvent.js.map +1 -1
- package/dist/{src/events → events}/PQEvent.d.ts +0 -0
- package/dist/events/PQEvent.d.ts.map +1 -0
- package/dist/events/PQEvent.js +1 -5
- package/dist/events/PQEvent.js.map +1 -1
- package/dist/{src/events → events}/PandasEvent.d.ts +0 -0
- package/dist/events/PandasEvent.d.ts.map +1 -0
- package/dist/events/PandasEvent.js +1 -5
- package/dist/events/PandasEvent.js.map +1 -1
- package/dist/{src/events → events}/TabEvent.d.ts +0 -0
- package/dist/events/TabEvent.d.ts.map +1 -0
- package/dist/events/TabEvent.js +1 -5
- package/dist/events/TabEvent.js.map +1 -1
- package/dist/{dist/events → events}/index.d.ts +0 -1
- package/dist/{dist/events → events}/index.d.ts.map +1 -1
- package/dist/events/index.js +9 -10
- package/dist/events/index.js.map +1 -1
- package/dist/{src/index.d.ts → index.d.ts} +0 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -11
- package/dist/index.js.map +1 -1
- package/dist/{src/linker → linker}/Linker.d.ts +1 -1
- package/dist/linker/Linker.d.ts.map +1 -0
- package/dist/linker/Linker.js +594 -606
- package/dist/linker/Linker.js.map +1 -1
- package/dist/{src/linker → linker}/LinkerLink.d.ts +0 -0
- package/dist/linker/LinkerLink.d.ts.map +1 -0
- package/dist/linker/LinkerLink.js +92 -126
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/{src/linker → linker}/LinkerOverlayContent.d.ts +0 -0
- package/dist/linker/LinkerOverlayContent.d.ts.map +1 -0
- package/dist/linker/LinkerOverlayContent.js +162 -220
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/{src/linker → linker}/LinkerUtils.d.ts +0 -0
- package/dist/linker/LinkerUtils.d.ts.map +1 -0
- package/dist/linker/LinkerUtils.js +105 -114
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/{src/linker → linker}/ToolType.d.ts +0 -0
- package/dist/{src/linker → linker}/ToolType.d.ts.map +1 -1
- package/dist/{src/panels → panels}/ChartColumnSelectorOverlay.d.ts +0 -0
- package/dist/panels/ChartColumnSelectorOverlay.d.ts.map +1 -0
- package/dist/panels/ChartColumnSelectorOverlay.js +19 -25
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/{src/panels → panels}/ChartFilterOverlay.d.ts +0 -0
- package/dist/panels/ChartFilterOverlay.d.ts.map +1 -0
- package/dist/panels/ChartFilterOverlay.js +18 -24
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/{src/panels → panels}/ChartPanel.d.ts +3 -0
- package/dist/panels/ChartPanel.d.ts.map +1 -0
- package/dist/panels/ChartPanel.js +839 -873
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/{src/panels → panels}/CommandHistoryPanel.d.ts +0 -0
- package/dist/panels/CommandHistoryPanel.d.ts.map +1 -0
- package/dist/panels/CommandHistoryPanel.js +160 -186
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/{src/panels → panels}/ConsolePanel.d.ts +1 -1
- package/dist/panels/ConsolePanel.d.ts.map +1 -0
- package/dist/panels/ConsolePanel.js +327 -374
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/{src/panels → panels}/DropdownFilterPanel.d.ts +6 -0
- package/dist/panels/DropdownFilterPanel.d.ts.map +1 -0
- package/dist/panels/DropdownFilterPanel.js +537 -566
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/{src/panels → panels}/FileExplorerPanel.d.ts +6 -1
- package/dist/panels/FileExplorerPanel.d.ts.map +1 -0
- package/dist/panels/FileExplorerPanel.js +208 -210
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.css +111 -0
- package/dist/panels/FilterSetManager.css.map +1 -0
- package/dist/panels/FilterSetManager.d.ts +66 -0
- package/dist/panels/FilterSetManager.d.ts.map +1 -0
- package/dist/panels/FilterSetManager.js +732 -0
- package/dist/panels/FilterSetManager.js.map +1 -0
- package/dist/panels/FilterSetManagerPanel.css +33 -0
- package/dist/panels/FilterSetManagerPanel.css.map +1 -0
- package/dist/panels/FilterSetManagerPanel.d.ts +69 -0
- package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -0
- package/dist/panels/FilterSetManagerPanel.js +383 -0
- package/dist/panels/FilterSetManagerPanel.js.map +1 -0
- package/dist/{src/panels → panels}/InputFilterPanel.d.ts +7 -0
- package/dist/panels/InputFilterPanel.d.ts.map +1 -0
- package/dist/panels/InputFilterPanel.js +198 -206
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/{src/panels → panels}/IrisGridPanel.d.ts +11 -3
- package/dist/panels/IrisGridPanel.d.ts.map +1 -0
- package/dist/panels/IrisGridPanel.js +779 -771
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/{src/panels → panels}/LogPanel.d.ts +0 -0
- package/dist/panels/LogPanel.d.ts.map +1 -0
- package/dist/panels/LogPanel.js +80 -116
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebookContainer.d.ts +21 -0
- package/dist/panels/MarkdownNotebookContainer.d.ts.map +1 -0
- package/dist/panels/MarkdownNotebookContainer.js +35 -0
- package/dist/panels/MarkdownNotebookContainer.js.map +1 -0
- package/dist/panels/MarkdownNotebookEditor.d.ts +46 -0
- package/dist/panels/MarkdownNotebookEditor.d.ts.map +1 -0
- package/dist/panels/MarkdownNotebookEditor.js +257 -0
- package/dist/panels/MarkdownNotebookEditor.js.map +1 -0
- package/dist/panels/MarkdownNotebookPanel.css +127 -0
- package/dist/panels/MarkdownNotebookPanel.css.map +1 -0
- package/dist/panels/MarkdownNotebookPanel.d.ts +91 -0
- package/dist/panels/MarkdownNotebookPanel.d.ts.map +1 -0
- package/dist/panels/MarkdownNotebookPanel.js +446 -0
- package/dist/panels/MarkdownNotebookPanel.js.map +1 -0
- package/dist/{src/panels → panels}/MarkdownPanel.d.ts +0 -0
- package/dist/panels/MarkdownPanel.d.ts.map +1 -0
- package/dist/panels/MarkdownPanel.js +165 -199
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/{src/panels → panels}/NotebookPanel.d.ts +3 -1
- package/dist/panels/NotebookPanel.d.ts.map +1 -0
- package/dist/panels/NotebookPanel.js +870 -862
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/{src/panels → panels}/PandasPanel.d.ts +0 -0
- package/dist/panels/PandasPanel.d.ts.map +1 -0
- package/dist/panels/PandasPanel.js +56 -90
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/{src/panels → panels}/Panel.d.ts +0 -0
- package/dist/panels/Panel.d.ts.map +1 -0
- package/dist/panels/Panel.js +282 -313
- package/dist/panels/Panel.js.map +1 -1
- package/dist/{src/panels → panels}/PanelContextMenu.d.ts +0 -0
- package/dist/panels/PanelContextMenu.d.ts.map +1 -0
- package/dist/panels/PanelContextMenu.js +107 -158
- package/dist/panels/PanelContextMenu.js.map +1 -1
- package/dist/{src/panels → panels}/RenameDialog.d.ts +0 -0
- package/dist/panels/RenameDialog.d.ts.map +1 -0
- package/dist/panels/RenameDialog.js +144 -172
- package/dist/panels/RenameDialog.js.map +1 -1
- package/dist/{src/panels → panels}/Shortcuts.d.ts +0 -0
- package/dist/panels/Shortcuts.d.ts.map +1 -0
- package/dist/panels/Shortcuts.js +1 -1
- package/dist/panels/Shortcuts.js.map +1 -1
- package/dist/{src/panels → panels}/WidgetPanel.d.ts +0 -0
- package/dist/panels/WidgetPanel.d.ts.map +1 -0
- package/dist/panels/WidgetPanel.js +133 -163
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/{src/panels → panels}/WidgetPanelTooltip.d.ts +0 -0
- package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -0
- package/dist/panels/WidgetPanelTooltip.js +7 -5
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/{src/panels → panels}/index.d.ts +1 -1
- package/dist/{src/events → panels}/index.d.ts.map +1 -1
- package/dist/panels/index.js +16 -16
- package/dist/panels/index.js.map +1 -1
- package/dist/{src/prop-types → prop-types}/CommonPropTypes.d.ts +0 -0
- package/dist/prop-types/CommonPropTypes.d.ts.map +1 -0
- package/dist/prop-types/CommonPropTypes.js +4 -8
- package/dist/prop-types/CommonPropTypes.js.map +1 -1
- package/dist/{src/prop-types → prop-types}/UIPropTypes.d.ts +0 -0
- package/dist/prop-types/UIPropTypes.d.ts.map +1 -0
- package/dist/prop-types/UIPropTypes.js +6 -6
- package/dist/prop-types/UIPropTypes.js.map +1 -1
- package/dist/{src/prop-types → prop-types}/index.d.ts +0 -0
- package/dist/{src/panels → prop-types}/index.d.ts.map +1 -1
- package/dist/prop-types/index.js +2 -2
- package/dist/prop-types/index.js.map +1 -1
- package/dist/{src/redux → redux}/actionTypes.d.ts +0 -0
- package/dist/redux/actionTypes.d.ts.map +1 -0
- package/dist/{src/redux → redux}/actions.d.ts +1 -0
- package/dist/redux/actions.d.ts.map +1 -0
- package/dist/redux/actions.js +33 -54
- package/dist/redux/actions.js.map +1 -1
- package/dist/{src/redux → redux}/index.d.ts +0 -0
- package/dist/redux/index.d.ts.map +1 -0
- package/dist/redux/index.js +6 -21
- package/dist/redux/index.js.map +1 -1
- package/dist/{src/redux → redux}/reducers/index.d.ts +0 -0
- package/dist/{src/prop-types → redux/reducers}/index.d.ts.map +1 -1
- package/dist/redux/reducers/index.js +2 -2
- package/dist/redux/reducers/index.js.map +1 -1
- package/dist/{src/redux → redux}/reducers/sessionWrapper.d.ts +0 -0
- package/dist/redux/reducers/sessionWrapper.d.ts.map +1 -0
- package/dist/redux/reducers/sessionWrapper.js +1 -1
- package/dist/redux/reducers/sessionWrapper.js.map +1 -1
- package/dist/{src/redux → redux}/selectors.d.ts +1 -0
- package/dist/redux/selectors.d.ts.map +1 -0
- package/dist/redux/selectors.js +22 -18
- package/dist/redux/selectors.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -54
- package/dist/MatPlotLibPlugin.js +0 -45
- package/dist/MatPlotLibPlugin.js.map +0 -1
- package/dist/dist/events/ChartEvent.d.ts +0 -3
- package/dist/dist/events/ChartEvent.d.ts.map +0 -1
- package/dist/dist/events/ConsoleEvent.d.ts +0 -3
- package/dist/dist/events/ConsoleEvent.d.ts.map +0 -1
- package/dist/dist/events/ControlEvent.d.ts +0 -3
- package/dist/dist/events/ControlEvent.d.ts.map +0 -1
- package/dist/dist/events/InputFilterEvent.d.ts +0 -3
- package/dist/dist/events/InputFilterEvent.d.ts.map +0 -1
- package/dist/dist/events/IrisGridEvent.d.ts +0 -3
- package/dist/dist/events/IrisGridEvent.d.ts.map +0 -1
- package/dist/dist/events/MarkdownEvent.d.ts +0 -5
- package/dist/dist/events/MarkdownEvent.d.ts.map +0 -1
- package/dist/dist/events/MatPlotLibEvent.d.ts +0 -3
- package/dist/dist/events/MatPlotLibEvent.d.ts.map +0 -1
- package/dist/dist/events/NotebookEvent.d.ts +0 -3
- package/dist/dist/events/NotebookEvent.d.ts.map +0 -1
- package/dist/dist/events/PandasEvent.d.ts +0 -3
- package/dist/dist/events/PandasEvent.d.ts.map +0 -1
- package/dist/dist/events/TabEvent.d.ts +0 -3
- package/dist/dist/events/TabEvent.d.ts.map +0 -1
- package/dist/events/MatPlotLibEvent.js +0 -12
- package/dist/events/MatPlotLibEvent.js.map +0 -1
- package/dist/panels/MatPlotLibPanel.css +0 -11
- package/dist/panels/MatPlotLibPanel.css.map +0 -1
- package/dist/panels/MatPlotLibPanel.js +0 -124
- package/dist/panels/MatPlotLibPanel.js.map +0 -1
- package/dist/src/ChartPlugin.d.ts.map +0 -1
- package/dist/src/ConsolePlugin.d.ts.map +0 -1
- package/dist/src/FilterPlugin.d.ts.map +0 -1
- package/dist/src/GridPlugin.d.ts.map +0 -1
- package/dist/src/LinkerPlugin.d.ts.map +0 -1
- package/dist/src/MarkdownPlugin.d.ts.map +0 -1
- package/dist/src/MatPlotLibPlugin.d.ts +0 -5
- package/dist/src/MatPlotLibPlugin.d.ts.map +0 -1
- package/dist/src/PandasPlugin.d.ts +0 -5
- package/dist/src/PandasPlugin.d.ts.map +0 -1
- package/dist/src/controls/ControlType.d.ts.map +0 -1
- package/dist/src/controls/dropdown-filter/DropdownFilter.d.ts.map +0 -1
- package/dist/src/controls/input-filter/InputFilter.d.ts.map +0 -1
- package/dist/src/controls/markdown/MarkdownContainer.d.ts.map +0 -1
- package/dist/src/controls/markdown/MarkdownEditor.d.ts.map +0 -1
- package/dist/src/controls/markdown/MarkdownStartPage.d.ts.map +0 -1
- package/dist/src/controls/markdown/MarkdownUtils.d.ts.map +0 -1
- package/dist/src/events/ChartEvent.d.ts.map +0 -1
- package/dist/src/events/ConsoleEvent.d.ts.map +0 -1
- package/dist/src/events/ControlEvent.d.ts.map +0 -1
- package/dist/src/events/InputFilterEvent.d.ts.map +0 -1
- package/dist/src/events/IrisGridEvent.d.ts.map +0 -1
- package/dist/src/events/MarkdownEvent.d.ts.map +0 -1
- package/dist/src/events/MatPlotLibEvent.d.ts +0 -5
- package/dist/src/events/MatPlotLibEvent.d.ts.map +0 -1
- package/dist/src/events/NotebookEvent.d.ts.map +0 -1
- package/dist/src/events/PQEvent.d.ts.map +0 -1
- package/dist/src/events/PandasEvent.d.ts.map +0 -1
- package/dist/src/events/TabEvent.d.ts.map +0 -1
- package/dist/src/events/index.d.ts +0 -11
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/linker/Linker.d.ts.map +0 -1
- package/dist/src/linker/LinkerLink.d.ts.map +0 -1
- package/dist/src/linker/LinkerOverlayContent.d.ts.map +0 -1
- package/dist/src/linker/LinkerUtils.d.ts.map +0 -1
- package/dist/src/panels/ChartColumnSelectorOverlay.d.ts.map +0 -1
- package/dist/src/panels/ChartFilterOverlay.d.ts.map +0 -1
- package/dist/src/panels/ChartPanel.d.ts.map +0 -1
- package/dist/src/panels/CommandHistoryPanel.d.ts.map +0 -1
- package/dist/src/panels/ConsolePanel.d.ts.map +0 -1
- package/dist/src/panels/DropdownFilterPanel.d.ts.map +0 -1
- package/dist/src/panels/FileExplorerPanel.d.ts.map +0 -1
- package/dist/src/panels/InputFilterPanel.d.ts.map +0 -1
- package/dist/src/panels/IrisGridPanel.d.ts.map +0 -1
- package/dist/src/panels/LogPanel.d.ts.map +0 -1
- package/dist/src/panels/MarkdownPanel.d.ts.map +0 -1
- package/dist/src/panels/MatPlotLibPanel.d.ts +0 -22
- package/dist/src/panels/MatPlotLibPanel.d.ts.map +0 -1
- package/dist/src/panels/NotebookPanel.d.ts.map +0 -1
- package/dist/src/panels/PandasPanel.d.ts.map +0 -1
- package/dist/src/panels/Panel.d.ts.map +0 -1
- package/dist/src/panels/PanelContextMenu.d.ts.map +0 -1
- package/dist/src/panels/RenameDialog.d.ts.map +0 -1
- package/dist/src/panels/Shortcuts.d.ts.map +0 -1
- package/dist/src/panels/WidgetPanel.d.ts.map +0 -1
- package/dist/src/panels/WidgetPanelTooltip.d.ts.map +0 -1
- package/dist/src/prop-types/CommonPropTypes.d.ts.map +0 -1
- package/dist/src/prop-types/UIPropTypes.d.ts.map +0 -1
- package/dist/src/redux/actionTypes.d.ts.map +0 -1
- package/dist/src/redux/actions.d.ts.map +0 -1
- package/dist/src/redux/index.d.ts.map +0 -1
- package/dist/src/redux/reducers/index.d.ts.map +0 -1
- package/dist/src/redux/reducers/sessionWrapper.d.ts.map +0 -1
- package/dist/src/redux/selectors.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/panels/FilterSetManager.tsx"],"names":["React","Component","memoizeOne","shortid","FontAwesomeIcon","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhICursor","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","log","module","NAME_INPUT_PLACEHOLDER","EMPTY_LIST_PLACEHOLDER","FilterSetManager","animateScreenFlash","overlay","document","createElement","classList","add","addEventListener","remove","querySelector","appendChild","constructor","props","createRef","filterSets","renameSet","undefined","some","id","handleSettingsCancel","bind","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleEditDropdownChange","handleFilterChange","handleFilterApply","handleCaptureNewSet","handleNameInputChange","handleNameInputKeyPress","handleRenameConfirm","handleRenameCancel","handleSetDelete","handleSetRename","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","componentDidMount","isValueShown","updateSelectedId","initSettingsScreen","componentDidUpdate","prevProps","prevState","isNameInputScreen","focusRenameInput","length","onChange","selectedId","debug","setState","isEmptyList","event","value","target","applyFilterSet","onUpdateSets","getFilterState","panels","title","getNameError","trimmedName","trim","error","namedFilterSet","selectedIndex","findIndex","updatedModifiedFilterSets","push","prevFilterSets","filter","newSelectedIndex","Math","max","min","newSelectedId","selectedSetIndex","selectedSet","find","stopPropagation","dropdownRef","current","focusInput","key","preventDefault","onApply","filterSet","focus","renameInputRef","render","isRenamingExistingSet","isEmptyEditList","isInitialScreen","isEditListScreen","captureSetIcon","updateSetIcon","editDropdownRef","map"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n ReactNode,\n KeyboardEvent,\n MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport shortid from 'shortid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n vsGear,\n vsSave,\n vsCircleSlash,\n vsTrash,\n vsDeviceCamera,\n dhICursor,\n dhRefresh,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsArrowSmallUp,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Button, CardFlip } from '@deephaven/components';\n\nimport './FilterSetManager.scss';\n\nconst log = Log.module('FilterSetManager');\n\nexport interface FilterSetPanel {\n id: string;\n state: unknown;\n}\n\nexport interface FilterSet {\n id: string;\n title: string;\n panels: FilterSetPanel[];\n}\n\nexport interface ChangeHandlerArgs {\n isValueShown: boolean;\n selectedId?: string;\n}\n\ninterface FilterSetManagerProps {\n isValueShown: boolean;\n selectedId?: string;\n filterSets: FilterSet[];\n getFilterState(): FilterSetPanel[];\n onChange(args: ChangeHandlerArgs): void;\n onApply(filterSet: FilterSet): void;\n onUpdateSets(filterSets: FilterSet[], editId?: string): void;\n}\n\ninterface FilterSetManagerState {\n nameInputValue: string;\n nameInputError?: string;\n editId?: string;\n renameSet?: FilterSet;\n // Unsaved set changes on the settings screen\n modifiedFilterSets: FilterSet[];\n}\n\nconst NAME_INPUT_PLACEHOLDER = 'Enter name...';\n\nconst EMPTY_LIST_PLACEHOLDER = 'No Available Filter Sets';\n\nclass FilterSetManager extends Component<\n FilterSetManagerProps,\n FilterSetManagerState\n> {\n static animateScreenFlash(): void {\n const overlay = document.createElement('div');\n overlay.classList.add('screen-flash-overlay');\n overlay.addEventListener('animationend', () => {\n // Removing the element removes its event listeners\n overlay.remove();\n });\n document.querySelector('body')?.appendChild(overlay);\n }\n\n constructor(props: FilterSetManagerProps) {\n super(props);\n\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleEditDropdownChange = this.handleEditDropdownChange.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleCaptureNewSet = this.handleCaptureNewSet.bind(this);\n this.handleNameInputChange = this.handleNameInputChange.bind(this);\n this.handleNameInputKeyPress = this.handleNameInputKeyPress.bind(this);\n this.handleRenameConfirm = this.handleRenameConfirm.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n\n this.handleSetDelete = this.handleSetDelete.bind(this);\n this.handleSetRename = this.handleSetRename.bind(this);\n this.handleSetUpdate = this.handleSetUpdate.bind(this);\n\n this.state = {\n editId: undefined,\n renameSet: undefined,\n nameInputValue: '',\n nameInputError: undefined,\n modifiedFilterSets: [],\n };\n }\n\n componentDidMount(): void {\n const { isValueShown } = this.props;\n if (isValueShown) {\n this.updateSelectedId();\n } else {\n this.initSettingsScreen();\n }\n }\n\n componentDidUpdate(\n prevProps: FilterSetManagerProps,\n prevState: FilterSetManagerState\n ): void {\n const { isValueShown, filterSets } = this.props;\n const { modifiedFilterSets } = this.state;\n\n if (prevProps.isValueShown && !isValueShown) {\n this.initSettingsScreen();\n }\n\n if (this.isNameInputScreen() && !this.isNameInputScreen(prevState)) {\n this.focusRenameInput();\n }\n\n if (filterSets !== prevProps.filterSets) {\n if (\n !isValueShown &&\n filterSets.length > 0 &&\n prevProps.filterSets.length === 0 &&\n modifiedFilterSets.length === 0\n ) {\n // Filter set added from another panel, flip from the settings side/initial screen to the value side\n const { onChange } = this.props;\n onChange({ isValueShown: true, selectedId: filterSets[0].id });\n } else {\n this.updateSelectedId();\n }\n }\n }\n\n private renameInputRef = React.createRef<HTMLInputElement>();\n\n private dropdownRef = React.createRef<HTMLSelectElement>();\n\n private editDropdownRef = React.createRef<HTMLSelectElement>();\n\n initSettingsScreen(): void {\n const { filterSets, selectedId } = this.props;\n log.debug('initSettingsScreen', filterSets, selectedId);\n this.setState({\n modifiedFilterSets: [...filterSets],\n editId: selectedId,\n });\n }\n\n // Update selected id without applying the new set on filterSets change\n updateSelectedId(): void {\n const { isValueShown, filterSets, selectedId, onChange } = this.props;\n log.debug('updateSelectedId', filterSets, selectedId);\n if (!isValueShown) {\n return;\n }\n if (!filterSets.some(({ id }) => id === selectedId)) {\n // Update the selection if selectedId doesn't exist in the list\n // Flip to the settings side for empty list to show the initial screen\n const isEmptyList = filterSets.length === 0;\n onChange({\n isValueShown: !isEmptyList,\n selectedId: isEmptyList ? undefined : filterSets[0].id,\n });\n }\n }\n\n handleEditDropdownChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: editId } = event.target;\n this.setState({ editId });\n }\n\n handleFilterChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: selectedId } = event.target;\n const { isValueShown, onChange } = this.props;\n this.applyFilterSet(selectedId);\n onChange({ isValueShown, selectedId });\n }\n\n handleFilterApply(): void {\n const { selectedId } = this.props;\n this.applyFilterSet(selectedId);\n }\n\n handleSettingsCancel(): void {\n const { onChange, selectedId, filterSets } = this.props;\n this.setState({ modifiedFilterSets: [] });\n // Flip the card to the filter set selection screen if the sets list isn't empty\n // Otherwise show the initial screen\n if (filterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleSettingsSave(): void {\n const { onChange, onUpdateSets, selectedId } = this.props;\n const { modifiedFilterSets, editId } = this.state;\n this.setState({ modifiedFilterSets: [] });\n log.debug('Update sets', modifiedFilterSets, editId);\n onUpdateSets(modifiedFilterSets, editId);\n // Don't flip the card to the filter set selection screen if the updated sets list is empty\n if (modifiedFilterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleCaptureNewSet(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const id = shortid();\n const panels = getFilterState();\n const renameSet = {\n id,\n title: '',\n panels,\n };\n log.debug('handleSetCreate', renameSet);\n this.setState({ nameInputValue: '', nameInputError: undefined, renameSet });\n }\n\n handleRenameCancel(): void {\n this.setState({ renameSet: undefined });\n }\n\n getNameError(nameInputValue: string): string | undefined {\n const { renameSet, modifiedFilterSets } = this.state;\n const trimmedName = nameInputValue?.trim() ?? '';\n if (trimmedName.length === 0) {\n log.debug('Name cannot be empty', trimmedName);\n return 'Name cannot be empty';\n }\n\n if (\n renameSet !== undefined &&\n modifiedFilterSets.some(\n ({ title, id }) => title === trimmedName && id !== renameSet.id\n )\n ) {\n log.debug('Set with this name already exists', trimmedName);\n return 'Set with this name already exists';\n }\n\n return undefined;\n }\n\n handleRenameConfirm(): void {\n const { nameInputValue, renameSet, modifiedFilterSets } = this.state;\n if (renameSet === undefined) {\n log.error('Renamed set undefined.');\n return;\n }\n const nameInputError = this.getNameError(nameInputValue);\n log.debug('handleRenameConfirm', nameInputValue, nameInputError);\n if (nameInputError !== undefined) {\n this.setState({ nameInputError });\n return;\n }\n const trimmedName = nameInputValue?.trim() ?? '';\n const namedFilterSet = { ...renameSet, title: trimmedName };\n const selectedIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === renameSet.id\n );\n const updatedModifiedFilterSets = [...modifiedFilterSets];\n\n if (selectedIndex >= 0) {\n updatedModifiedFilterSets[selectedIndex] = namedFilterSet;\n log.debug('Renamed existing set', updatedModifiedFilterSets);\n } else {\n updatedModifiedFilterSets.push(namedFilterSet);\n log.debug('Added new set to modified sets', updatedModifiedFilterSets);\n }\n\n this.setState({\n editId: namedFilterSet.id,\n modifiedFilterSets: updatedModifiedFilterSets,\n renameSet: undefined,\n });\n }\n\n handleSetDelete(): void {\n this.setState(state => {\n const { editId, modifiedFilterSets: prevFilterSets } = state;\n const selectedIndex = prevFilterSets.findIndex(({ id }) => id === editId);\n if (selectedIndex < 0) {\n log.error(\n 'Unable to find selected filterSet index',\n prevFilterSets,\n editId\n );\n return null;\n }\n const modifiedFilterSets = prevFilterSets.filter(\n ({ id }) => id !== editId\n );\n const newSelectedIndex = Math.max(\n 0,\n Math.min(modifiedFilterSets.length - 1, selectedIndex - 1)\n );\n const newSelectedId =\n modifiedFilterSets.length > 0\n ? modifiedFilterSets[newSelectedIndex].id\n : undefined;\n log.debug(\n 'Deleted selected set',\n editId,\n prevFilterSets,\n modifiedFilterSets\n );\n log.debug('New selection', newSelectedIndex, newSelectedId);\n return {\n modifiedFilterSets,\n editId: newSelectedId,\n };\n });\n }\n\n handleSetUpdate(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const panels = getFilterState();\n this.setState(({ modifiedFilterSets: prevFilterSets, editId }) => {\n if (editId === undefined) {\n log.error('Filter for update not selected.');\n return null;\n }\n const modifiedFilterSets = [...prevFilterSets];\n const selectedSetIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === editId\n );\n if (selectedSetIndex < 0) {\n log.error('Selected set for update not found.');\n return null;\n }\n // Clone selected set to avoid mutation of the props\n modifiedFilterSets[selectedSetIndex] = {\n ...modifiedFilterSets[selectedSetIndex],\n panels,\n };\n\n log.debug('Update set', modifiedFilterSets, panels);\n return {\n modifiedFilterSets,\n };\n });\n }\n\n handleSetRename(): void {\n this.setState(({ editId, modifiedFilterSets }) => {\n const selectedSet = modifiedFilterSets.find(({ id }) => id === editId);\n if (selectedSet === undefined) {\n log.error('Could not find selected set', editId, modifiedFilterSets);\n return null;\n }\n const { title } = selectedSet;\n return {\n nameInputValue: title,\n nameInputError: undefined,\n renameSet: selectedSet,\n };\n });\n }\n\n handleSettingsClick(event: MouseEvent): void {\n event.stopPropagation();\n const { onChange, selectedId } = this.props;\n onChange({ isValueShown: false, selectedId });\n }\n\n handleBackgroundClick(event: MouseEvent): void {\n log.debug('handleBackgroundClick');\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n handleNameInputChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value: nameInputValue } = event.target;\n const nameInputError = this.getNameError(nameInputValue);\n this.setState({ nameInputValue, nameInputError });\n }\n\n handleNameInputKeyPress(event: KeyboardEvent): void {\n const { key } = event;\n if (key === 'Enter') {\n event.preventDefault();\n this.handleRenameConfirm();\n }\n }\n\n isNameInputScreen(state = this.state): boolean {\n const { renameSet } = state;\n return renameSet !== undefined;\n }\n\n isRenamingExistingSet = memoizeOne(\n (filterSets: FilterSet[], renameSet?: FilterSet): boolean =>\n renameSet !== undefined &&\n filterSets.some(({ id }) => id === renameSet.id)\n );\n\n applyFilterSet(selectedId?: string): void {\n const { onApply, filterSets } = this.props;\n if (selectedId === undefined) {\n log.debug('No filter selected');\n return;\n }\n const filterSet = filterSets.find(({ id }) => id === selectedId);\n if (filterSet === undefined) {\n log.debug('Selected id not found in filterSets', selectedId, filterSets);\n return;\n }\n log.debug('Apply filterSet', filterSet);\n onApply(filterSet);\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n focusRenameInput(): void {\n this.renameInputRef.current?.focus();\n }\n\n render(): ReactNode {\n const {\n nameInputValue,\n nameInputError,\n editId,\n renameSet,\n modifiedFilterSets,\n } = this.state;\n const { isValueShown, filterSets, selectedId } = this.props;\n const isNameInputScreen = this.isNameInputScreen();\n const isRenamingExistingSet = this.isRenamingExistingSet(\n modifiedFilterSets,\n renameSet\n );\n const isEmptyEditList = modifiedFilterSets.length === 0;\n const isInitialScreen =\n !isNameInputScreen && isEmptyEditList && filterSets.length === 0;\n const isEditListScreen = !isNameInputScreen && !isInitialScreen;\n const captureSetIcon = (\n <div className=\"fa-layers mr-3\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhNewCircleLargeFilled}\n className=\"text-primary\"\n transform=\"shrink-6 down-5 right-7\"\n />\n </div>\n );\n const updateSetIcon = (\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={vsArrowSmallUp}\n transform=\"shrink-1 down-5 right-7\"\n />\n </div>\n );\n return (\n <div className=\"filter-set-manager fill-parent-absolute\">\n <CardFlip className=\"w-100 h-100\" isFlipped={isValueShown}>\n <div\n className=\"filter-set-manager-settings-card fill-parent-absolute\"\n key=\"front\"\n >\n <div className=\"filter-set-manager-card-content\">\n {isInitialScreen && (\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture filter set\n </Button>\n <div className=\"py-3 text-muted small\">\n Takes a snapshot of the currently applied filters on all\n panels, allowing you to restore saved filter sets later.\n </div>\n </div>\n )}\n\n {isNameInputScreen && (\n <div className=\"d-flex flex-column justify-content-center\">\n <div className=\"form-group\">\n <label>\n {isRenamingExistingSet\n ? 'Rename set'\n : 'Name captured set'}\n </label>\n <div className=\"name-input-container\">\n <input\n type=\"text\"\n className=\"input-set-name form-control\"\n placeholder={NAME_INPUT_PLACEHOLDER}\n value={nameInputValue}\n ref={this.renameInputRef}\n onChange={this.handleNameInputChange}\n onKeyPress={this.handleNameInputKeyPress}\n spellCheck=\"false\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameConfirm}\n tooltip=\"Save\"\n icon={vsSave}\n />\n\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameCancel}\n tooltip=\"Cancel\"\n icon={vsCircleSlash}\n />\n </div>\n {nameInputError && (\n <div className=\"error-message\">{nameInputError}</div>\n )}\n </div>\n </div>\n )}\n\n {isEditListScreen && (\n <div className=\"filter-set-manager-settings-grid-1\">\n <div className=\"form-group\">\n <label>Edit filter sets</label>\n <div className=\"filter-select-container\">\n <select\n ref={this.editDropdownRef}\n value={editId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleEditDropdownChange}\n disabled={isEmptyEditList}\n >\n {isEmptyEditList && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {modifiedFilterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </select>\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetUpdate}\n disabled={isEmptyEditList}\n icon={updateSetIcon}\n tooltip=\"Update\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetRename}\n disabled={isEmptyEditList}\n icon={dhICursor}\n tooltip=\"Rename\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetDelete}\n disabled={isEmptyEditList}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n </div>\n </div>\n\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture new filter set\n </Button>\n </div>\n\n <div className=\"py-3 text-right\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n >\n Cancel\n </Button>\n \n <Button kind=\"primary\" onClick={this.handleSettingsSave}>\n Save\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n <div\n className=\"filter-set-manager-value-card fill-parent-absolute\"\n key=\"back\"\n onClick={this.handleBackgroundClick}\n >\n <>\n <div className=\"filter-set-manager-column\">\n <div className=\"filter-set-manager-column-title\">\n Filter sets\n </div>\n </div>\n <div className=\"filter-set-manager-card-content\">\n <div className=\"filter-set-manager-value-input\">\n <div className=\"filter-select-container\">\n <select\n ref={this.dropdownRef}\n value={selectedId}\n className=\"custom-select filter-value-select\"\n onChange={this.handleFilterChange}\n >\n {filterSets.length === 0 && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {filterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </select>\n <Button\n kind=\"ghost\"\n onClick={this.handleFilterApply}\n icon={dhRefresh}\n tooltip=\"Apply Filter Set\"\n />\n </div>\n </div>\n </div>\n <div className=\"filter-set-manager-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n tooltip=\"Settings\"\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n />\n </div>\n </>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"file":"FilterSetManager.js"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
.filter-set-manager-panel {
|
|
2
|
+
padding-top: 1rem;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.screen-flash-overlay {
|
|
6
|
+
z-index: 1070;
|
|
7
|
+
position: absolute;
|
|
8
|
+
top: 0;
|
|
9
|
+
left: 0;
|
|
10
|
+
width: 100%;
|
|
11
|
+
height: 100%;
|
|
12
|
+
background: #fff;
|
|
13
|
+
opacity: 0;
|
|
14
|
+
mix-blend-mode: color-dodge;
|
|
15
|
+
pointer-events: none;
|
|
16
|
+
animation-duration: 0.4s;
|
|
17
|
+
animation-name: flash;
|
|
18
|
+
animation-timing-function: ease-out;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@keyframes flash {
|
|
22
|
+
0% {
|
|
23
|
+
opacity: 0%;
|
|
24
|
+
}
|
|
25
|
+
10% {
|
|
26
|
+
opacity: 100%;
|
|
27
|
+
}
|
|
28
|
+
100% {
|
|
29
|
+
opacity: 0%;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/*# sourceMappingURL=FilterSetManagerPanel.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.scss","../../../components/scss/new_variables.scss","../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE,aCCS;;;ADEX;EACE,SE+qBkC;EF9qBlC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;IACE;;EAGF;IACE;;EAGF;IACE","file":"FilterSetManagerPanel.css"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
declare var _default: import("react-redux").ConnectedComponent<typeof FilterSetManagerPanel, any>;
|
|
2
|
+
export default _default;
|
|
3
|
+
declare class FilterSetManagerPanel extends React.Component<any, any, any> {
|
|
4
|
+
static COMPONENT: string;
|
|
5
|
+
static changeFilterColumnNamesToIndexes(table: any, configs: any): any;
|
|
6
|
+
static changeFilterIndexesToColumnNames(table: any, configs: any): any;
|
|
7
|
+
constructor(props: any);
|
|
8
|
+
handleChange({ isValueShown, selectedId }: {
|
|
9
|
+
isValueShown: any;
|
|
10
|
+
selectedId: any;
|
|
11
|
+
}): void;
|
|
12
|
+
handleFilterApply(filterSet: any): void;
|
|
13
|
+
handleSetsUpdate(modifiedFilterSets: any, selectedEditId: any): void;
|
|
14
|
+
handleGetFilterState(): any[];
|
|
15
|
+
getFilterState(): any[];
|
|
16
|
+
getIrisGridPanelFilters(panelId: any, panelState: any): {
|
|
17
|
+
advancedFilters: any;
|
|
18
|
+
quickFilters: any;
|
|
19
|
+
} | null;
|
|
20
|
+
updatePanelState(): void;
|
|
21
|
+
restoreIrisGridFilters(panel: any, state: any): void;
|
|
22
|
+
restoreInputFilterState(panel: any, state: any): void;
|
|
23
|
+
}
|
|
24
|
+
declare namespace FilterSetManagerPanel {
|
|
25
|
+
namespace propTypes {
|
|
26
|
+
const glContainer: PropTypes.Validator<PropTypes.InferProps<{
|
|
27
|
+
on: PropTypes.Requireable<(...args: any[]) => any>;
|
|
28
|
+
off: PropTypes.Requireable<(...args: any[]) => any>;
|
|
29
|
+
isHidden: PropTypes.Requireable<boolean>;
|
|
30
|
+
tab: PropTypes.Requireable<PropTypes.InferProps<{
|
|
31
|
+
header: PropTypes.Requireable<PropTypes.InferProps<{
|
|
32
|
+
tabs: PropTypes.Requireable<(PropTypes.InferProps<{
|
|
33
|
+
contentItem: PropTypes.Requireable<PropTypes.InferProps<{}>>;
|
|
34
|
+
}> | null | undefined)[]>;
|
|
35
|
+
}>>;
|
|
36
|
+
}>>;
|
|
37
|
+
title: PropTypes.Requireable<string>;
|
|
38
|
+
setTitle: PropTypes.Requireable<(...args: any[]) => any>;
|
|
39
|
+
close: PropTypes.Requireable<(...args: any[]) => any>;
|
|
40
|
+
}>>;
|
|
41
|
+
const glEventHub: PropTypes.Validator<PropTypes.InferProps<{
|
|
42
|
+
on: PropTypes.Requireable<(...args: any[]) => any>;
|
|
43
|
+
off: PropTypes.Requireable<(...args: any[]) => any>;
|
|
44
|
+
emit: PropTypes.Requireable<(...args: any[]) => any>;
|
|
45
|
+
}>>;
|
|
46
|
+
const panelState: PropTypes.Requireable<PropTypes.InferProps<{
|
|
47
|
+
name: PropTypes.Requireable<string>;
|
|
48
|
+
type: PropTypes.Requireable<string>;
|
|
49
|
+
selectedId: PropTypes.Requireable<string>;
|
|
50
|
+
isValueShown: PropTypes.Requireable<boolean>;
|
|
51
|
+
}>>;
|
|
52
|
+
const filterSets: PropTypes.Validator<(PropTypes.InferProps<{
|
|
53
|
+
id: PropTypes.Validator<string>;
|
|
54
|
+
title: PropTypes.Validator<string>;
|
|
55
|
+
panels: PropTypes.Validator<(PropTypes.InferProps<{}> | null | undefined)[]>;
|
|
56
|
+
}> | null | undefined)[]>;
|
|
57
|
+
const localDashboardId: PropTypes.Validator<string>;
|
|
58
|
+
const dashboardOpenedPanelMap: PropTypes.Validator<Map<unknown, unknown>>;
|
|
59
|
+
const setDashboardFilterSets: PropTypes.Validator<(...args: any[]) => any>;
|
|
60
|
+
const panelTableMap: PropTypes.Validator<Map<unknown, unknown>>;
|
|
61
|
+
}
|
|
62
|
+
namespace defaultProps {
|
|
63
|
+
const panelState_1: null;
|
|
64
|
+
export { panelState_1 as panelState };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
import React from "react";
|
|
68
|
+
import PropTypes from "prop-types";
|
|
69
|
+
//# sourceMappingURL=FilterSetManagerPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterSetManagerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":[],"mappings":";;AA0BA;IACE,yBAA2C;IAE3C,uEAOC;IAED,uEAUC;IAED,wBAoBC;IA4FD;;;aAIC;IAED,wCAsBC;IAED,qEAeC;IAjDD,8BAEC;IAvFD,wBAkDC;IAED;;;aA+BC;IAqDD,yBAQC;IAED,qDAsBC;IAGD,sDAGC;CA4BF"}
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
3
|
+
import React, { Component } from 'react';
|
|
4
|
+
import PropTypes from 'prop-types';
|
|
5
|
+
import { connect } from 'react-redux';
|
|
6
|
+
import { getOpenedPanelMapForDashboard, GLPropTypes, LayoutUtils } from '@deephaven/dashboard';
|
|
7
|
+
import { IrisGridUtils } from '@deephaven/iris-grid';
|
|
8
|
+
import Log from '@deephaven/log';
|
|
9
|
+
import { getFilterSetsForDashboard, getInputFiltersForDashboard, getTableMapForDashboard, setDashboardFilterSets as setDashboardFilterSetsAction } from "../redux/index.js";
|
|
10
|
+
import Panel from "./Panel.js";
|
|
11
|
+
import FilterSetManager from "./FilterSetManager.js";
|
|
12
|
+
import IrisGridPanel from "./IrisGridPanel.js";
|
|
13
|
+
import InputFilterPanel from "./InputFilterPanel.js";
|
|
14
|
+
import DropdownFilterPanel from "./DropdownFilterPanel.js";
|
|
15
|
+
import "./FilterSetManagerPanel.css";
|
|
16
|
+
var log = Log.module('FilterSetManagerPanel');
|
|
17
|
+
|
|
18
|
+
class FilterSetManagerPanel extends Component {
|
|
19
|
+
static changeFilterColumnNamesToIndexes(table, configs) {
|
|
20
|
+
return configs.map((_ref) => {
|
|
21
|
+
var {
|
|
22
|
+
name,
|
|
23
|
+
filter
|
|
24
|
+
} = _ref;
|
|
25
|
+
var index = table.columns.findIndex(column => column.name === name);
|
|
26
|
+
return index < 0 ? null : [index, filter];
|
|
27
|
+
}).filter(config => config != null);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
static changeFilterIndexesToColumnNames(table, configs) {
|
|
31
|
+
return configs.map((_ref2) => {
|
|
32
|
+
var [index, filter] = _ref2;
|
|
33
|
+
|
|
34
|
+
if (index >= table.columns.length) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
var {
|
|
39
|
+
name
|
|
40
|
+
} = table.columns[index];
|
|
41
|
+
return {
|
|
42
|
+
name,
|
|
43
|
+
filter
|
|
44
|
+
};
|
|
45
|
+
}).filter(config => config != null);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
constructor(props) {
|
|
49
|
+
super(props);
|
|
50
|
+
this.handleChange = this.handleChange.bind(this);
|
|
51
|
+
this.handleFilterApply = this.handleFilterApply.bind(this);
|
|
52
|
+
this.handleSetsUpdate = this.handleSetsUpdate.bind(this);
|
|
53
|
+
this.handleGetFilterState = this.handleGetFilterState.bind(this);
|
|
54
|
+
var {
|
|
55
|
+
panelState,
|
|
56
|
+
filterSets
|
|
57
|
+
} = props;
|
|
58
|
+
var {
|
|
59
|
+
selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,
|
|
60
|
+
isValueShown = false
|
|
61
|
+
} = panelState !== null && panelState !== void 0 ? panelState : {};
|
|
62
|
+
this.state = {
|
|
63
|
+
selectedId,
|
|
64
|
+
isValueShown,
|
|
65
|
+
// eslint-disable-next-line react/no-unused-state
|
|
66
|
+
panelState // Dehydrated panel state that can load this panel
|
|
67
|
+
|
|
68
|
+
};
|
|
69
|
+
} // Collect all filter values for each dashboard panel
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
getFilterState() {
|
|
73
|
+
var {
|
|
74
|
+
dashboardOpenedPanelMap
|
|
75
|
+
} = this.props;
|
|
76
|
+
var panels = [];
|
|
77
|
+
[...dashboardOpenedPanelMap.keys()].forEach(key => {
|
|
78
|
+
var panel = dashboardOpenedPanelMap.get(key);
|
|
79
|
+
var componentName = LayoutUtils.getComponentNameFromPanel(panel);
|
|
80
|
+
var panelId = LayoutUtils.getIdFromPanel(panel);
|
|
81
|
+
log.debug('Panel:', panel, componentName);
|
|
82
|
+
var {
|
|
83
|
+
glContainer = null
|
|
84
|
+
} = panel.props;
|
|
85
|
+
|
|
86
|
+
if (glContainer == null) {
|
|
87
|
+
log.error('Could not get panel container', panel);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
var config = LayoutUtils.getComponentConfigFromContainer(glContainer);
|
|
92
|
+
|
|
93
|
+
if (config == null) {
|
|
94
|
+
log.error('Could not get component config from container', glContainer);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
var panelState = LayoutUtils.getPanelComponentState(config);
|
|
99
|
+
|
|
100
|
+
if (panelState == null) {
|
|
101
|
+
log.debug("Panel state is null ".concat(panelId));
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
switch (componentName) {
|
|
106
|
+
case LayoutUtils.getComponentName(IrisGridPanel):
|
|
107
|
+
{
|
|
108
|
+
var state = this.getIrisGridPanelFilters(panelId, panelState);
|
|
109
|
+
|
|
110
|
+
if (state != null) {
|
|
111
|
+
panels.push({
|
|
112
|
+
panelId,
|
|
113
|
+
type: componentName,
|
|
114
|
+
state
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
case LayoutUtils.getComponentName(InputFilterPanel):
|
|
122
|
+
case LayoutUtils.getComponentName(DropdownFilterPanel):
|
|
123
|
+
{
|
|
124
|
+
var {
|
|
125
|
+
isValueShown,
|
|
126
|
+
name,
|
|
127
|
+
type,
|
|
128
|
+
value
|
|
129
|
+
} = panelState;
|
|
130
|
+
panels.push({
|
|
131
|
+
panelId,
|
|
132
|
+
type: componentName,
|
|
133
|
+
state: {
|
|
134
|
+
isValueShown,
|
|
135
|
+
name,
|
|
136
|
+
type,
|
|
137
|
+
value
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
default:
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
return panels;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
getIrisGridPanelFilters(panelId, panelState) {
|
|
150
|
+
var {
|
|
151
|
+
panelTableMap
|
|
152
|
+
} = this.props;
|
|
153
|
+
var table = panelTableMap.get(panelId);
|
|
154
|
+
|
|
155
|
+
if (table == null) {
|
|
156
|
+
log.error("Unable to get table for panel ".concat(panelId, "."));
|
|
157
|
+
return null;
|
|
158
|
+
} // IrisGridUtils.hydrate uses numeric indexes for columns
|
|
159
|
+
// Change indexes to column names to make it work for proxy models
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
var {
|
|
163
|
+
irisGridState = null
|
|
164
|
+
} = panelState;
|
|
165
|
+
var {
|
|
166
|
+
advancedFilters: indexedAdvancedFilters = [],
|
|
167
|
+
quickFilters: indexedQuickFilters = []
|
|
168
|
+
} = irisGridState !== null && irisGridState !== void 0 ? irisGridState : {};
|
|
169
|
+
var dehydratedAdvancedFilters = IrisGridUtils.dehydrateAdvancedFilters(table, indexedAdvancedFilters);
|
|
170
|
+
var advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, dehydratedAdvancedFilters);
|
|
171
|
+
var dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(table, indexedQuickFilters);
|
|
172
|
+
var quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, dehydratedQuickFilters);
|
|
173
|
+
return {
|
|
174
|
+
advancedFilters,
|
|
175
|
+
quickFilters
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
handleGetFilterState() {
|
|
180
|
+
return this.getFilterState();
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
handleChange(_ref3) {
|
|
184
|
+
var {
|
|
185
|
+
isValueShown,
|
|
186
|
+
selectedId
|
|
187
|
+
} = _ref3;
|
|
188
|
+
log.debug('handleChange', isValueShown, selectedId);
|
|
189
|
+
this.setState({
|
|
190
|
+
isValueShown,
|
|
191
|
+
selectedId
|
|
192
|
+
});
|
|
193
|
+
this.updatePanelState();
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
handleFilterApply(filterSet) {
|
|
197
|
+
var {
|
|
198
|
+
dashboardOpenedPanelMap
|
|
199
|
+
} = this.props;
|
|
200
|
+
var {
|
|
201
|
+
panels
|
|
202
|
+
} = filterSet;
|
|
203
|
+
log.debug("Apply filters from filter set", filterSet);
|
|
204
|
+
panels.forEach((_ref4) => {
|
|
205
|
+
var {
|
|
206
|
+
panelId,
|
|
207
|
+
type,
|
|
208
|
+
state
|
|
209
|
+
} = _ref4;
|
|
210
|
+
|
|
211
|
+
if (!dashboardOpenedPanelMap.has(panelId)) {
|
|
212
|
+
log.debug('Ignore closed panel', panelId);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
log.debug('Apply panel filters', panelId, type, state);
|
|
217
|
+
var panel = dashboardOpenedPanelMap.get(panelId);
|
|
218
|
+
|
|
219
|
+
switch (type) {
|
|
220
|
+
case LayoutUtils.getComponentName(IrisGridPanel):
|
|
221
|
+
this.restoreIrisGridFilters(panel, state);
|
|
222
|
+
break;
|
|
223
|
+
|
|
224
|
+
case LayoutUtils.getComponentName(InputFilterPanel):
|
|
225
|
+
case LayoutUtils.getComponentName(DropdownFilterPanel):
|
|
226
|
+
this.restoreInputFilterState(panel, state);
|
|
227
|
+
break;
|
|
228
|
+
|
|
229
|
+
default:
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
handleSetsUpdate(modifiedFilterSets, selectedEditId) {
|
|
235
|
+
var {
|
|
236
|
+
setDashboardFilterSets,
|
|
237
|
+
localDashboardId
|
|
238
|
+
} = this.props;
|
|
239
|
+
var {
|
|
240
|
+
selectedId
|
|
241
|
+
} = this.state; // Only change the selected filter if the previous selection was deleted
|
|
242
|
+
|
|
243
|
+
var prevSelection = modifiedFilterSets.find((_ref5) => {
|
|
244
|
+
var {
|
|
245
|
+
id
|
|
246
|
+
} = _ref5;
|
|
247
|
+
return id === selectedId;
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
if (prevSelection !== undefined) {
|
|
251
|
+
this.setState({
|
|
252
|
+
selectedId: selectedEditId
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
log.debug('Saving updated sets', modifiedFilterSets); // Filter sets are stored in dashboard data instead of the panelState
|
|
257
|
+
// because they need to be shared between the filter view manager panels
|
|
258
|
+
|
|
259
|
+
setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
updatePanelState() {
|
|
263
|
+
this.setState((_ref6) => {
|
|
264
|
+
var {
|
|
265
|
+
selectedId,
|
|
266
|
+
isValueShown
|
|
267
|
+
} = _ref6;
|
|
268
|
+
return {
|
|
269
|
+
// eslint-disable-next-line react/no-unused-state
|
|
270
|
+
panelState: {
|
|
271
|
+
selectedId,
|
|
272
|
+
isValueShown
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
restoreIrisGridFilters(panel, state) {
|
|
279
|
+
var {
|
|
280
|
+
advancedFilters: savedAdvancedFilters,
|
|
281
|
+
quickFilters: savedQuickFilters
|
|
282
|
+
} = state;
|
|
283
|
+
var {
|
|
284
|
+
panelTableMap
|
|
285
|
+
} = this.props;
|
|
286
|
+
var panelId = LayoutUtils.getIdFromPanel(panel);
|
|
287
|
+
var table = panelTableMap.get(panelId);
|
|
288
|
+
|
|
289
|
+
if (table == null) {
|
|
290
|
+
log.error("Unable to get table for panel ".concat(panelId, "."));
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
log.debug('restoreIrisGridFilters', panelId, state);
|
|
295
|
+
var quickFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(table, savedQuickFilters);
|
|
296
|
+
var advancedFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(table, savedAdvancedFilters);
|
|
297
|
+
panel.setFilters({
|
|
298
|
+
quickFilters,
|
|
299
|
+
advancedFilters
|
|
300
|
+
});
|
|
301
|
+
} // eslint-disable-next-line class-methods-use-this
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
restoreInputFilterState(panel, state) {
|
|
305
|
+
log.debug('restoreInputFilterState', panel, state);
|
|
306
|
+
panel.setPanelState(state);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
render() {
|
|
310
|
+
var {
|
|
311
|
+
glContainer,
|
|
312
|
+
glEventHub,
|
|
313
|
+
filterSets
|
|
314
|
+
} = this.props;
|
|
315
|
+
var {
|
|
316
|
+
isValueShown,
|
|
317
|
+
selectedId
|
|
318
|
+
} = this.state;
|
|
319
|
+
return /*#__PURE__*/React.createElement(Panel, {
|
|
320
|
+
className: "filter-set-manager-panel",
|
|
321
|
+
componentPanel: this,
|
|
322
|
+
glContainer: glContainer,
|
|
323
|
+
glEventHub: glEventHub,
|
|
324
|
+
isClonable: true,
|
|
325
|
+
isRenamable: true
|
|
326
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
327
|
+
className: "input-filter-container h-100 w-100 container"
|
|
328
|
+
}, /*#__PURE__*/React.createElement(FilterSetManager, {
|
|
329
|
+
onChange: this.handleChange,
|
|
330
|
+
onApply: this.handleFilterApply,
|
|
331
|
+
onUpdateSets: this.handleSetsUpdate,
|
|
332
|
+
isValueShown: isValueShown,
|
|
333
|
+
filterSets: filterSets,
|
|
334
|
+
selectedId: selectedId,
|
|
335
|
+
getFilterState: this.handleGetFilterState
|
|
336
|
+
})));
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
_defineProperty(FilterSetManagerPanel, "COMPONENT", 'FilterSetManagerPanel');
|
|
342
|
+
|
|
343
|
+
FilterSetManagerPanel.propTypes = {
|
|
344
|
+
glContainer: GLPropTypes.Container.isRequired,
|
|
345
|
+
glEventHub: GLPropTypes.EventHub.isRequired,
|
|
346
|
+
panelState: PropTypes.shape({
|
|
347
|
+
name: PropTypes.string,
|
|
348
|
+
type: PropTypes.string,
|
|
349
|
+
selectedId: PropTypes.string,
|
|
350
|
+
isValueShown: PropTypes.bool
|
|
351
|
+
}),
|
|
352
|
+
filterSets: PropTypes.arrayOf(PropTypes.shape({
|
|
353
|
+
id: PropTypes.string.isRequired,
|
|
354
|
+
title: PropTypes.string.isRequired,
|
|
355
|
+
panels: PropTypes.arrayOf(PropTypes.shape({})).isRequired
|
|
356
|
+
})).isRequired,
|
|
357
|
+
localDashboardId: PropTypes.string.isRequired,
|
|
358
|
+
dashboardOpenedPanelMap: PropTypes.instanceOf(Map).isRequired,
|
|
359
|
+
setDashboardFilterSets: PropTypes.func.isRequired,
|
|
360
|
+
panelTableMap: PropTypes.instanceOf(Map).isRequired
|
|
361
|
+
};
|
|
362
|
+
FilterSetManagerPanel.defaultProps = {
|
|
363
|
+
panelState: null
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
var mapStateToProps = (state, ownProps) => {
|
|
367
|
+
var {
|
|
368
|
+
localDashboardId
|
|
369
|
+
} = ownProps;
|
|
370
|
+
return {
|
|
371
|
+
filterSets: getFilterSetsForDashboard(state, localDashboardId),
|
|
372
|
+
dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(state, localDashboardId),
|
|
373
|
+
dashboardInputFilters: getInputFiltersForDashboard(state, localDashboardId),
|
|
374
|
+
panelTableMap: getTableMapForDashboard(state, localDashboardId)
|
|
375
|
+
};
|
|
376
|
+
};
|
|
377
|
+
|
|
378
|
+
export default connect(mapStateToProps, {
|
|
379
|
+
setDashboardFilterSets: setDashboardFilterSetsAction
|
|
380
|
+
}, null, {
|
|
381
|
+
forwardRef: true
|
|
382
|
+
})(FilterSetManagerPanel);
|
|
383
|
+
//# sourceMappingURL=FilterSetManagerPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":["React","Component","PropTypes","connect","getOpenedPanelMapForDashboard","GLPropTypes","LayoutUtils","IrisGridUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","InputFilterPanel","DropdownFilterPanel","log","module","FilterSetManagerPanel","changeFilterColumnNamesToIndexes","table","configs","map","name","filter","index","columns","findIndex","column","config","changeFilterIndexesToColumnNames","length","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","selectedId","id","undefined","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","panel","get","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","error","getComponentConfigFromContainer","getPanelComponentState","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","indexedAdvancedFilters","quickFilters","indexedQuickFilters","dehydratedAdvancedFilters","dehydrateAdvancedFilters","dehydratedQuickFilters","dehydrateQuickFilters","setState","updatePanelState","filterSet","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","selectedEditId","localDashboardId","prevSelection","find","savedAdvancedFilters","savedQuickFilters","setFilters","setPanelState","render","glEventHub","propTypes","Container","isRequired","EventHub","shape","string","bool","arrayOf","title","instanceOf","Map","func","defaultProps","mapStateToProps","ownProps","dashboardInputFilters","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n GLPropTypes,\n LayoutUtils,\n} from '@deephaven/dashboard';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport Log from '@deephaven/log';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './Panel';\nimport FilterSetManager from './FilterSetManager';\nimport IrisGridPanel from './IrisGridPanel';\nimport InputFilterPanel from './InputFilterPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\n\nimport './FilterSetManagerPanel.scss';\n\nconst log = Log.module('FilterSetManagerPanel');\n\nclass FilterSetManagerPanel extends Component {\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterColumnNamesToIndexes(table, configs) {\n return configs\n .map(({ name, filter }) => {\n const index = table.columns.findIndex(column => column.name === name);\n return index < 0 ? null : [index, filter];\n })\n .filter(config => config != null);\n }\n\n static changeFilterIndexesToColumnNames(table, configs) {\n return configs\n .map(([index, filter]) => {\n if (index >= table.columns.length) {\n return null;\n }\n const { name } = table.columns[index];\n return { name, filter };\n })\n .filter(config => config != null);\n }\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleSetsUpdate = this.handleSetsUpdate.bind(this);\n this.handleGetFilterState = this.handleGetFilterState.bind(this);\n\n const { panelState, filterSets } = props;\n const {\n selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,\n isValueShown = false,\n } = panelState ?? {};\n\n this.state = {\n selectedId,\n isValueShown,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n // Collect all filter values for each dashboard panel\n getFilterState() {\n const { dashboardOpenedPanelMap } = this.props;\n const panels = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n const componentName = LayoutUtils.getComponentNameFromPanel(panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('Panel:', panel, componentName);\n\n const { glContainer = null } = panel.props;\n if (glContainer == null) {\n log.error('Could not get panel container', panel);\n return;\n }\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n const panelState = LayoutUtils.getPanelComponentState(config);\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n const state = this.getIrisGridPanelFilters(panelId, panelState);\n if (state != null) {\n panels.push({\n panelId,\n type: componentName,\n state,\n });\n }\n break;\n }\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel): {\n const { isValueShown, name, type, value } = panelState;\n panels.push({\n panelId,\n type: componentName,\n state: { isValueShown, name, type, value },\n });\n break;\n }\n default:\n }\n });\n return panels;\n }\n\n getIrisGridPanelFilters(panelId, panelState) {\n const { panelTableMap } = this.props;\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return null;\n }\n // IrisGridUtils.hydrate uses numeric indexes for columns\n // Change indexes to column names to make it work for proxy models\n const { irisGridState = null } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters = [],\n quickFilters: indexedQuickFilters = [],\n } = irisGridState ?? {};\n const dehydratedAdvancedFilters = IrisGridUtils.dehydrateAdvancedFilters(\n table,\n indexedAdvancedFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedAdvancedFilters\n );\n const dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(\n table,\n indexedQuickFilters\n );\n const quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedQuickFilters\n );\n return { advancedFilters, quickFilters };\n }\n\n handleGetFilterState() {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }) {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet) {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (!dashboardOpenedPanelMap.has(panelId)) {\n log.debug('Ignore closed panel', panelId);\n return;\n }\n log.debug('Apply panel filters', panelId, type, state);\n const panel = dashboardOpenedPanelMap.get(panelId);\n switch (type) {\n case LayoutUtils.getComponentName(IrisGridPanel):\n this.restoreIrisGridFilters(panel, state);\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets, selectedEditId) {\n const { setDashboardFilterSets, localDashboardId } = this.props;\n const { selectedId } = this.state;\n // Only change the selected filter if the previous selection was deleted\n const prevSelection = modifiedFilterSets.find(\n ({ id }) => id === selectedId\n );\n if (prevSelection !== undefined) {\n this.setState({ selectedId: selectedEditId });\n }\n\n log.debug('Saving updated sets', modifiedFilterSets);\n // Filter sets are stored in dashboard data instead of the panelState\n // because they need to be shared between the filter view manager panels\n setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);\n }\n\n updatePanelState() {\n this.setState(({ selectedId, isValueShown }) => ({\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n selectedId,\n isValueShown,\n },\n }));\n }\n\n restoreIrisGridFilters(panel, state) {\n const {\n advancedFilters: savedAdvancedFilters,\n quickFilters: savedQuickFilters,\n } = state;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return;\n }\n log.debug('restoreIrisGridFilters', panelId, state);\n const quickFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedQuickFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedAdvancedFilters\n );\n panel.setFilters({ quickFilters, advancedFilters });\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(panel, state) {\n log.debug('restoreInputFilterState', panel, state);\n panel.setPanelState(state);\n }\n\n render() {\n const { glContainer, glEventHub, filterSets } = this.props;\n const { isValueShown, selectedId } = this.state;\n return (\n <Panel\n className=\"filter-set-manager-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n isClonable\n isRenamable\n >\n <div className=\"input-filter-container h-100 w-100 container\">\n <FilterSetManager\n onChange={this.handleChange}\n onApply={this.handleFilterApply}\n onUpdateSets={this.handleSetsUpdate}\n isValueShown={isValueShown}\n filterSets={filterSets}\n selectedId={selectedId}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nFilterSetManagerPanel.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n panelState: PropTypes.shape({\n name: PropTypes.string,\n type: PropTypes.string,\n selectedId: PropTypes.string,\n isValueShown: PropTypes.bool,\n }),\n filterSets: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n panels: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n })\n ).isRequired,\n localDashboardId: PropTypes.string.isRequired,\n dashboardOpenedPanelMap: PropTypes.instanceOf(Map).isRequired,\n setDashboardFilterSets: PropTypes.func.isRequired,\n panelTableMap: PropTypes.instanceOf(Map).isRequired,\n};\n\nFilterSetManagerPanel.defaultProps = {\n panelState: null,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n return {\n filterSets: getFilterSetsForDashboard(state, localDashboardId),\n dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(\n state,\n localDashboardId\n ),\n dashboardInputFilters: getInputFiltersForDashboard(state, localDashboardId),\n panelTableMap: getTableMapForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n"],"file":"FilterSetManagerPanel.js"}
|