@deephaven/dashboard-core-plugins 0.108.1-beta.0 → 0.108.1-beta.12
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/FilterEvents.d.ts +86 -0
- package/dist/FilterEvents.d.ts.map +1 -0
- package/dist/FilterEvents.js +78 -0
- package/dist/FilterEvents.js.map +1 -0
- package/dist/FilterPlugin.d.ts +1 -12
- package/dist/FilterPlugin.d.ts.map +1 -1
- package/dist/FilterPlugin.js +30 -23
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridWidgetPlugin.d.ts +2 -2
- package/dist/GridWidgetPlugin.d.ts.map +1 -1
- package/dist/GridWidgetPlugin.js +54 -5
- package/dist/GridWidgetPlugin.js.map +1 -1
- package/dist/events/TabEventMap.d.ts +1 -1
- package/dist/events/TabEventMap.d.ts.map +1 -1
- package/dist/events/TabEventMap.js.map +1 -1
- package/dist/events/index.d.ts +7 -1
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +5 -1
- package/dist/events/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/linker/Linker.d.ts +3 -2
- package/dist/linker/Linker.d.ts.map +1 -1
- package/dist/linker/Linker.js +11 -2
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerUtils.d.ts +2 -2
- package/dist/linker/LinkerUtils.d.ts.map +1 -1
- package/dist/linker/LinkerUtils.js +2 -1
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts +2 -2
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js +4 -1
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.js +1 -1
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.js +1 -1
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/CorePanel.d.ts +13 -0
- package/dist/panels/CorePanel.d.ts.map +1 -0
- package/dist/panels/CorePanel.js +76 -0
- package/dist/panels/CorePanel.js.map +1 -0
- package/dist/panels/DropdownFilterPanel.d.ts +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
- package/dist/panels/DropdownFilterPanel.js +7 -4
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.js +1 -1
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.d.ts +2 -2
- package/dist/panels/FilterSetManagerPanel.js +1 -1
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.d.ts +2 -2
- package/dist/panels/InputFilterPanel.d.ts.map +1 -1
- package/dist/panels/InputFilterPanel.js +9 -5
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +2 -2
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js +11 -4
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/LogPanel.d.ts +1 -1
- package/dist/panels/LogPanel.js +1 -1
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownPanel.d.ts +1 -1
- package/dist/panels/MarkdownPanel.js +1 -1
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts +1 -1
- package/dist/panels/NotebookPanel.js +1 -1
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/WidgetPanel.d.ts +1 -1
- package/dist/panels/WidgetPanel.d.ts.map +1 -1
- package/dist/panels/WidgetPanel.js +1 -1
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/index.d.ts +5 -1
- package/dist/panels/index.d.ts.map +1 -1
- package/dist/panels/index.js +7 -1
- package/dist/panels/index.js.map +1 -1
- package/dist/redux/selectors.d.ts +1 -1
- package/dist/redux/selectors.js.map +1 -1
- package/dist/useDashboardColumnFilters.d.ts +17 -0
- package/dist/useDashboardColumnFilters.d.ts.map +1 -0
- package/dist/useDashboardColumnFilters.js +59 -0
- package/dist/useDashboardColumnFilters.js.map +1 -0
- package/dist/useIrisGridModel.d.ts.map +1 -1
- package/dist/useIrisGridModel.js +25 -22
- package/dist/useIrisGridModel.js.map +1 -1
- package/package.json +24 -24
- package/dist/events/TabEvent.d.ts +0 -6
- package/dist/events/TabEvent.d.ts.map +0 -1
- package/dist/events/TabEvent.js +0 -6
- package/dist/events/TabEvent.js.map +0 -1
- package/dist/panels/Panel.css +0 -5
- package/dist/panels/Panel.css.map +0 -1
- package/dist/panels/Panel.d.ts +0 -44
- package/dist/panels/Panel.d.ts.map +0 -1
- package/dist/panels/Panel.js +0 -333
- package/dist/panels/Panel.js.map +0 -1
- package/dist/panels/PanelContextMenu.d.ts +0 -30
- package/dist/panels/PanelContextMenu.d.ts.map +0 -1
- package/dist/panels/PanelContextMenu.js +0 -159
- package/dist/panels/PanelContextMenu.js.map +0 -1
- package/dist/panels/RenameDialog.d.ts +0 -34
- package/dist/panels/RenameDialog.d.ts.map +0 -1
- package/dist/panels/RenameDialog.js +0 -167
- package/dist/panels/RenameDialog.js.map +0 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type BasePanelProps } from '@deephaven/dashboard';
|
|
2
|
+
import type { dh } from '@deephaven/jsapi-types';
|
|
3
|
+
export type CorePanelProps = BasePanelProps & {
|
|
4
|
+
onClearAllFilters?: (...args: unknown[]) => void;
|
|
5
|
+
onSessionClose?: (session: dh.IdeSession) => void;
|
|
6
|
+
onSessionOpen?: (session: dh.IdeSession, { language, sessionId }: {
|
|
7
|
+
language: string;
|
|
8
|
+
sessionId: string;
|
|
9
|
+
}) => void;
|
|
10
|
+
};
|
|
11
|
+
declare const XCorePanel: import("@deephaven/components").XComponentType<CorePanelProps>;
|
|
12
|
+
export default XCorePanel;
|
|
13
|
+
//# sourceMappingURL=CorePanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CorePanel.d.ts","sourceRoot":"","sources":["../../src/panels/CorePanel.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAa,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AAGjD,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C,iBAAiB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACjD,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC;IAClD,aAAa,CAAC,EAAE,CACd,OAAO,EAAE,EAAE,CAAC,UAAU,EACtB,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAC7D,IAAI,CAAC;CACX,CAAC;AA8DF,QAAA,MAAM,UAAU,gEAA8B,CAAC;AAE/C,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
var _excluded = ["children"];
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
5
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
6
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
7
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
8
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
9
|
+
import React, { PureComponent } from 'react';
|
|
10
|
+
import { createXComponent } from '@deephaven/components';
|
|
11
|
+
import { BasePanel } from '@deephaven/dashboard';
|
|
12
|
+
import { ConsoleEvent, InputFilterEvent } from "../events/index.js";
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
/**
|
|
15
|
+
* Extends the base panel component to handle Session events and input filter events.
|
|
16
|
+
*/
|
|
17
|
+
class CorePanel extends PureComponent {
|
|
18
|
+
constructor(props) {
|
|
19
|
+
super(props);
|
|
20
|
+
this.handleClearAllFilters = this.handleClearAllFilters.bind(this);
|
|
21
|
+
this.handleSessionClosed = this.handleSessionClosed.bind(this);
|
|
22
|
+
this.handleSessionOpened = this.handleSessionOpened.bind(this);
|
|
23
|
+
}
|
|
24
|
+
componentDidMount() {
|
|
25
|
+
var {
|
|
26
|
+
glEventHub
|
|
27
|
+
} = this.props;
|
|
28
|
+
glEventHub.on(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);
|
|
29
|
+
glEventHub.on(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);
|
|
30
|
+
glEventHub.on(InputFilterEvent.CLEAR_ALL_FILTERS, this.handleClearAllFilters);
|
|
31
|
+
}
|
|
32
|
+
componentWillUnmount() {
|
|
33
|
+
var {
|
|
34
|
+
glEventHub
|
|
35
|
+
} = this.props;
|
|
36
|
+
glEventHub.off(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);
|
|
37
|
+
glEventHub.off(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);
|
|
38
|
+
glEventHub.off(InputFilterEvent.CLEAR_ALL_FILTERS, this.handleClearAllFilters);
|
|
39
|
+
}
|
|
40
|
+
handleClearAllFilters() {
|
|
41
|
+
var {
|
|
42
|
+
onClearAllFilters
|
|
43
|
+
} = this.props;
|
|
44
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
45
|
+
args[_key] = arguments[_key];
|
|
46
|
+
}
|
|
47
|
+
onClearAllFilters === null || onClearAllFilters === void 0 ? void 0 : onClearAllFilters(...args);
|
|
48
|
+
}
|
|
49
|
+
handleSessionClosed(session) {
|
|
50
|
+
var {
|
|
51
|
+
onSessionClose
|
|
52
|
+
} = this.props;
|
|
53
|
+
onSessionClose === null || onSessionClose === void 0 ? void 0 : onSessionClose(session);
|
|
54
|
+
}
|
|
55
|
+
handleSessionOpened(session, params) {
|
|
56
|
+
var {
|
|
57
|
+
onSessionOpen
|
|
58
|
+
} = this.props;
|
|
59
|
+
onSessionOpen === null || onSessionOpen === void 0 ? void 0 : onSessionOpen(session, params);
|
|
60
|
+
}
|
|
61
|
+
render() {
|
|
62
|
+
var _this$props = this.props,
|
|
63
|
+
{
|
|
64
|
+
children
|
|
65
|
+
} = _this$props,
|
|
66
|
+
otherProps = _objectWithoutProperties(_this$props, _excluded);
|
|
67
|
+
|
|
68
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
69
|
+
return /*#__PURE__*/_jsx(BasePanel, _objectSpread(_objectSpread({}, otherProps), {}, {
|
|
70
|
+
children: children
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
var XCorePanel = createXComponent(CorePanel);
|
|
75
|
+
export default XCorePanel;
|
|
76
|
+
//# sourceMappingURL=CorePanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CorePanel.js","names":["React","PureComponent","createXComponent","BasePanel","ConsoleEvent","InputFilterEvent","jsx","_jsx","CorePanel","constructor","props","handleClearAllFilters","bind","handleSessionClosed","handleSessionOpened","componentDidMount","glEventHub","on","SESSION_CLOSED","SESSION_OPENED","CLEAR_ALL_FILTERS","componentWillUnmount","off","onClearAllFilters","_len","arguments","length","args","Array","_key","session","onSessionClose","params","onSessionOpen","render","_this$props","children","otherProps","_objectWithoutProperties","_excluded","_objectSpread","XCorePanel"],"sources":["../../src/panels/CorePanel.tsx"],"sourcesContent":["import React, { PureComponent, type ReactElement } from 'react';\nimport { createXComponent } from '@deephaven/components';\nimport { type BasePanelProps, BasePanel } from '@deephaven/dashboard';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { ConsoleEvent, InputFilterEvent } from '../events';\n\nexport type CorePanelProps = BasePanelProps & {\n onClearAllFilters?: (...args: unknown[]) => void;\n onSessionClose?: (session: dh.IdeSession) => void;\n onSessionOpen?: (\n session: dh.IdeSession,\n { language, sessionId }: { language: string; sessionId: string }\n ) => void;\n};\n\n/**\n * Extends the base panel component to handle Session events and input filter events.\n */\nclass CorePanel extends PureComponent<CorePanelProps> {\n constructor(props: CorePanelProps) {\n super(props);\n\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n }\n\n componentDidMount(): void {\n const { glEventHub } = this.props;\n\n glEventHub.on(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);\n glEventHub.on(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);\n glEventHub.on(\n InputFilterEvent.CLEAR_ALL_FILTERS,\n this.handleClearAllFilters\n );\n }\n\n componentWillUnmount(): void {\n const { glEventHub } = this.props;\n\n glEventHub.off(ConsoleEvent.SESSION_CLOSED, this.handleSessionClosed);\n glEventHub.off(ConsoleEvent.SESSION_OPENED, this.handleSessionOpened);\n glEventHub.off(\n InputFilterEvent.CLEAR_ALL_FILTERS,\n this.handleClearAllFilters\n );\n }\n\n handleClearAllFilters(...args: unknown[]): void {\n const { onClearAllFilters } = this.props;\n onClearAllFilters?.(...args);\n }\n\n handleSessionClosed(session: dh.IdeSession): void {\n const { onSessionClose } = this.props;\n onSessionClose?.(session);\n }\n\n handleSessionOpened(\n session: dh.IdeSession,\n params: { language: string; sessionId: string }\n ): void {\n const { onSessionOpen } = this.props;\n onSessionOpen?.(session, params);\n }\n\n render(): ReactElement {\n const { children, ...otherProps } = this.props;\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <BasePanel {...otherProps}>{children}</BasePanel>;\n }\n}\n\nconst XCorePanel = createXComponent(CorePanel);\n\nexport default XCorePanel;\n"],"mappings":"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"}
|
|
@@ -124,7 +124,7 @@ export declare class DropdownFilterPanel extends Component<DropdownFilterPanelPr
|
|
|
124
124
|
declare const ConnectedDropdownFilterPanel: import("react-redux").ConnectedComponent<typeof DropdownFilterPanel, import("react-redux").Omit<React.ClassAttributes<DropdownFilterPanel> & import("@deephaven/golden-layout").GLPanelProps & {
|
|
125
125
|
metadata?: import("@deephaven/dashboard").PanelMetadata;
|
|
126
126
|
panelState?: unknown;
|
|
127
|
-
} & import("@deephaven/dashboard").LocalDashboardProps & StateProps & import("react-redux").DispatchProp<import("redux").AnyAction>, "
|
|
127
|
+
} & import("@deephaven/dashboard").LocalDashboardProps & StateProps & import("react-redux").DispatchProp<import("redux").AnyAction>, "columns" | "dispatch" | "columnSelectionValidator" | "settings" | "panelState" | "isLinkerActive" | "dashboardLinks" | "dh" | "disableLinking" | "panelTableMap"> & import("@deephaven/golden-layout").GLPanelProps & {
|
|
128
128
|
metadata?: import("@deephaven/dashboard").PanelMetadata;
|
|
129
129
|
panelState?: unknown;
|
|
130
130
|
} & import("@deephaven/dashboard").LocalDashboardProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownFilterPanel.d.ts","sourceRoot":"","sources":["../../src/panels/DropdownFilterPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAG3D,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,KAAK,mBAAmB,EAAe,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,SAAS,EAET,KAAK,cAAc,EAEpB,MAAM,wBAAwB,CAAC;AAQhC,OAAO,
|
|
1
|
+
{"version":3,"file":"DropdownFilterPanel.d.ts","sourceRoot":"","sources":["../../src/panels/DropdownFilterPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAG3D,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,KAAK,mBAAmB,EAAe,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,SAAS,EAET,KAAK,cAAc,EAEpB,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAGL,OAAO,EAER,MAAM,kBAAkB,CAAC;AAC1B,OAAO,cAAc,EAAE,EACrB,KAAK,oBAAoB,EAC1B,MAAM,4CAA4C,CAAC;AASpD,OAAO,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,KAAK,UAAU,IAAI,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAY9E,UAAU,UAAU;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,KAAK,aAAa,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAE1D,KAAK,UAAU,GAAG;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IACzB,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,cAAc,EAAE,IAAI,EAAE,CAAC;IACvB,EAAE,EAAE,OAAO,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,EAAE;QAAE,SAAS,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC;CAC3C,CAAC;AAEF,KAAK,QAAQ,GAAG,mBAAmB,CAAC;AAoCpC,QAAA,MAAM,SAAS,4JAA6D,CAAC;AAE7E,MAAM,MAAM,wBAAwB,GAAG,QAAQ,GAC7C,UAAU,GACV,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC;AAEnC,UAAU,wBAAwB;IAChC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IAEpB,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CACvB;AAED,qBAAa,mBAAoB,SAAQ,SAAS,CAChD,wBAAwB,EACxB,wBAAwB,CACzB;IACC,MAAM,CAAC,WAAW,SAAyB;IAE3C,MAAM,CAAC,SAAS,SAAyB;IAEzC,MAAM,CAAC,cAAc,SAAO;IAE5B,MAAM,CAAC,aAAa;;;OAGjB;gBAES,KAAK,EAAE,wBAAwB;IA6D3C,iBAAiB,IAAI,IAAI;IAczB,kBAAkB,CAChB,SAAS,EAAE,wBAAwB,EACnC,SAAS,EAAE,wBAAwB,GAClC,IAAI;IAwCP,oBAAoB,IAAI,IAAI;IAgB5B,iBAAiB,EAAE,uBAAuB,CAAC;IAE3C,iBAAiB,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IAE7C,cAAc,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IAE1C,OAAO,EAAE,OAAO,CAAC;IAEjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;IAEjC,eAAe,eAEA,OAAO,EAAE,kBACJ,oBAAoB,aACzB,SAAS,uDAFT,OAAO,EAAE,kBACJ,oBAAoB,aACzB,SAAS,wBAetB;IAEF,sBAAsB,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAiBjD,uBAAuB,IAAI,MAAM,GAAG,SAAS;IAQ7C,oBAAoB,IAAI,MAAM,GAAG,SAAS;IAK1C,mBAAmB,oBACA,IAAI,EAAE,SAAS,mBAAmB,iDAAlC,IAAI,EAAE,SAAS,mBAAmB,aAMnD;IAEF,eAAe,WACL,IAAI,EAAE,uDAAN,IAAI,EAAE,4BAad;IAEF,oBAAoB,mBAED,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,UAC3C,SAAS,GAAG,SAAS,6DADd,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,UAC3C,SAAS,GAAG,SAAS,0BAU/B;IAEF,qBAAqB,WACX,MAAM,CAAC,KAAK,UAAU,SAAS,GAAG,SAAS,sDAA3C,MAAM,CAAC,KAAK,UAAU,SAAS,GAAG,SAAS,2BAanD;IAEF,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,GAAG,SAAS;IAK/C,cAAc,CACZ,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,IAAI,EAAE,GACZ,MAAM,CAAC,KAAK,GAAG,IAAI;IAKtB,eAAe,CACb,WAAW,EAAE,MAAM,CAAC,KAAK,EACzB,KAAK,EAAE,IAAI,EAAE,GACZ,MAAM,CAAC,MAAM,GAAG,IAAI;IAKvB,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI;IAyBvD,qBAAqB,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI;IAyBtD,YAAY,CAAC,EACX,MAAM,EACN,YAAoB,EACpB,KAAK,GACN,EAAE;QACD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QACtC,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACnC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC5B,GAAG,IAAI;IAyCR,gBAAgB,IAAI,IAAI;IAQxB,eAAe,IAAI,IAAI;IAIvB,wBAAwB,IAAI,IAAI;IAIhC,sBAAsB,IAAI,IAAI;IAI9B,sBAAsB,CAAC,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAI5D,oBAAoB,IAAI,IAAI;IAU5B,qBAAqB,IAAI,IAAI;IAI7B;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,qBAAqB,EAAE,UAAU,UAAQ,GAAG,IAAI;IAcrE,UAAU,CACR,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IA8BP,iBAAiB,IAAI,IAAI;IA+CzB,gBAAgB,IAAI,IAAI;IAcxB,kBAAkB,IAAI,IAAI;IAc1B,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI;IAqBvD,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,GAAG,IAAI;IAY5C,uBAAuB,CAAC,QAAQ,EAAE;QAChC,SAAS,CAAC,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;KAC1C,GAAG,IAAI;IASR,uBAAuB,CAAC,EACtB,MAAM,GACP,EAAE;QACD,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAA;SAAE,CAAC;KAChC,GAAG,IAAI;IAiBR,sBAAsB,IAAI,IAAI;IAQ9B,sBAAsB,IAAI,IAAI;IAQ9B,MAAM,IAAI,KAAK,CAAC,YAAY;CAkE7B;AAED,QAAA,MAAM,4BAA4B;;;;;;uDAAiC,CAAC;AAEpE,eAAe,4BAA4B,CAAC"}
|
|
@@ -10,13 +10,14 @@ import { LayoutUtils } from '@deephaven/dashboard';
|
|
|
10
10
|
import { DateTimeColumnFormatter, Formatter, FormatterUtils, TableUtils } from '@deephaven/jsapi-utils';
|
|
11
11
|
import Log from '@deephaven/log';
|
|
12
12
|
import { getActiveTool, getApi, getSettings } from '@deephaven/redux';
|
|
13
|
-
import { EMPTY_ARRAY, Pending, PromiseUtils } from '@deephaven/utils';
|
|
13
|
+
import { assertNotNull, EMPTY_ARRAY, Pending, PromiseUtils } from '@deephaven/utils';
|
|
14
14
|
import DropdownFilter from "../controls/dropdown-filter/DropdownFilter.js";
|
|
15
15
|
import { InputFilterEvent } from "../events/index.js";
|
|
16
16
|
import { getColumnsForDashboard, getColumnSelectionValidatorForDashboard, getIsolatedLinkerPanelIdForDashboard, getLinksForDashboard, getTableMapForDashboard } from "../redux/index.js";
|
|
17
17
|
import "./DropdownFilterPanel.css";
|
|
18
18
|
import ToolType from "../linker/ToolType.js";
|
|
19
19
|
import WidgetPanel from "./WidgetPanel.js";
|
|
20
|
+
import { emitFilterChanged } from "../FilterEvents.js";
|
|
20
21
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
21
22
|
var log = Log.module('DropdownFilterPanel');
|
|
22
23
|
var DROPDOWN_FILTER_DEBOUNCE = 250;
|
|
@@ -442,7 +443,7 @@ export class DropdownFilterPanel extends Component {
|
|
|
442
443
|
glEventHub
|
|
443
444
|
} = this.props;
|
|
444
445
|
var sourcePanelId = (_this$getSource = this.getSource(dashboardLinks)) === null || _this$getSource === void 0 ? void 0 : _this$getSource.panelId;
|
|
445
|
-
var excludePanelIds = sourcePanelId
|
|
446
|
+
var excludePanelIds = sourcePanelId == null ? [] : [sourcePanelId];
|
|
446
447
|
log.debug('sendUpdate', {
|
|
447
448
|
name,
|
|
448
449
|
type,
|
|
@@ -450,13 +451,15 @@ export class DropdownFilterPanel extends Component {
|
|
|
450
451
|
timestamp,
|
|
451
452
|
excludePanelIds
|
|
452
453
|
});
|
|
453
|
-
|
|
454
|
+
var panelId = LayoutUtils.getIdFromPanel(this);
|
|
455
|
+
assertNotNull(panelId);
|
|
456
|
+
emitFilterChanged(glEventHub, panelId, name != null && type != null && timestamp != null ? {
|
|
454
457
|
name,
|
|
455
458
|
type,
|
|
456
459
|
value: value != null ? value : '=null',
|
|
457
460
|
timestamp,
|
|
458
461
|
excludePanelIds
|
|
459
|
-
});
|
|
462
|
+
} : null);
|
|
460
463
|
}
|
|
461
464
|
updateValuesTable() {
|
|
462
465
|
var {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownFilterPanel.js","names":["React","Component","connect","debounce","deepEqual","memoize","LayoutUtils","DateTimeColumnFormatter","Formatter","FormatterUtils","TableUtils","Log","getActiveTool","getApi","getSettings","EMPTY_ARRAY","Pending","PromiseUtils","DropdownFilter","InputFilterEvent","getColumnsForDashboard","getColumnSelectionValidatorForDashboard","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","getTableMapForDashboard","ToolType","WidgetPanel","jsx","_jsx","log","module","DROPDOWN_FILTER_DEBOUNCE","WIDGET_DESCRIPTOR","Object","freeze","name","type","mapStateToProps","state","ownProps","localDashboardId","panelId","getIdFromPanel","props","panelTableMap","dashboardLinks","activeTool","isolatedLinkerPanelId","isLinkerActive","LINKER","undefined","disableLinking","columns","columnSelectionValidator","dh","settings","connector","forwardRef","DropdownFilterPanel","constructor","_defineProperty","rawValues","_ref","formatter","isDateType","map","value","dateTimeFormatter","format","getFormattedString","max","panel","debug","filter","link","_link$end","end","links","source","length","start","error","_panelTableMap$get","get","table","_table$columns$find","find","_ref2","columnName","columnType","handleChange","bind","handleClearAllFilters","handleDisconnect","handleReconnect","handleColumnSelected","handleSourceFilterChange","handleSourceSortChange","handleSourceSizeChange","handleSourceMouseEnter","handleSourceMouseLeave","handleValuesTableUpdate","dropdownFilterRef","createRef","panelContainer","pending","panelState","columnFormats","getColumnFormats","showTimeZone","showTSeparator","defaultDateTimeFormatString","isValueShown","timestamp","column","valuesTable","valuesColumn","sourceSize","values","wasFlipped","skipUpdate","isDisconnected","isLoading","isLoaded","componentDidMount","updateValuesTable","sourceTable","getSourceTable","startListeningToSource","sendUpdate","componentDidUpdate","prevProps","prevState","getSource","prevSource","prevSourceTable","updateFormatterSettings","close","stopListeningToSource","componentWillUnmount","cancel","cleanup","getCoordinateForColumn","_element$getBoundingC","current","element","querySelector","concat","SOURCE_BUTTON_CLASS_NAME","rect","getBoundingClientRect","width","height","x","left","y","bottom","getSettingsErrorMessage","MAX_TABLE_SIZE","getPanelErrorMessage","panelLinks","getCachedPanelLinks","getCachedSource","getCachedSourceTable","getValuesColumn","getCachedSourceColumn","addEventListener","Table","EVENT_FILTERCHANGED","EVENT_SORTCHANGED","EVENT_SIZECHANGED","EVENT_DISCONNECT","EVENT_RECONNECT","removeEventListener","_ref3","Date","now","setState","_ref4","_ref5","_timestamp","prevTimestamp","isFlip","Error","applySourceFilters","applySourceSorts","_ref6","detail","glEventHub","emit","COLUMN_SELECTED","SOURCE_COLUMN","_this$dropdownFilterR","_this$dropdownFilterR2","clearFilter","setPanelState","_this$dropdownFilterR3","_this$dropdownFilterR4","arguments","setFilterState","_this$getSource","sourcePanelId","excludePanelIds","FILTERS_CHANGED","size","add","copy","resolved","then","updateViewportListener","catch","isCanceled","sort","sorts","applySort","setViewport","filters","applyFilter","EVENT_UPDATED","_ref7","rows","row","render","glContainer","settingsErrorMessage","panelErrorMessage","formattedValues","getCachedValues","errorMessage","className","componentPanel","onClearAllFilters","descriptor","children","ref","settingsError","onChange","onColumnSelected","onSourceMouseEnter","onSourceMouseLeave","ConnectedDropdownFilterPanel"],"sources":["../../src/panels/DropdownFilterPanel.tsx"],"sourcesContent":["import React, { Component, type RefObject } from 'react';\nimport { connect, type ConnectedProps } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport deepEqual from 'fast-deep-equal';\nimport memoize from 'memoizee';\nimport { type DashboardPanelProps, LayoutUtils } from '@deephaven/dashboard';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n DateTimeColumnFormatter,\n Formatter,\n FormatterUtils,\n type FormattingRule,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getActiveTool,\n getApi,\n getSettings,\n type RootState,\n} from '@deephaven/redux';\nimport { EMPTY_ARRAY, Pending, PromiseUtils } from '@deephaven/utils';\nimport DropdownFilter, {\n type DropdownFilterColumn,\n} from '../controls/dropdown-filter/DropdownFilter';\nimport { InputFilterEvent } from '../events';\nimport {\n getColumnsForDashboard,\n getColumnSelectionValidatorForDashboard,\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n getTableMapForDashboard,\n} from '../redux';\nimport './DropdownFilterPanel.scss';\nimport ToolType from '../linker/ToolType';\nimport WidgetPanel from './WidgetPanel';\nimport type { Link, LinkPoint } from '../linker/LinkerUtils';\nimport { type ColumnSelectionValidator } from '../linker/ColumnSelectionValidator';\nimport { type PanelState as InputFilterPanelState } from './InputFilterPanel';\n\nconst log = Log.module('DropdownFilterPanel');\n\nconst DROPDOWN_FILTER_DEBOUNCE = 250;\n\nconst WIDGET_DESCRIPTOR = Object.freeze({\n name: 'Dropdown Filter',\n type: 'DropdownFilter',\n});\n\ninterface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ntype PanelTableMap = Map<string | string[], DhType.Table>;\n\ntype StateProps = {\n columns: DhType.Column[];\n columnSelectionValidator?: ColumnSelectionValidator;\n dashboardLinks: Link[];\n dh: typeof DhType;\n disableLinking: boolean;\n isLinkerActive: boolean;\n panelTableMap: PanelTableMap;\n panelState?: PanelState;\n settings: { formatter: FormattingRule[] };\n};\n\ntype OwnProps = DashboardPanelProps;\n\nconst mapStateToProps = (state: RootState, ownProps: OwnProps): StateProps => {\n const { localDashboardId } = ownProps;\n const panelId = LayoutUtils.getIdFromPanel({ props: ownProps });\n const panelTableMap = getTableMapForDashboard(state, localDashboardId);\n const dashboardLinks = getLinksForDashboard(state, localDashboardId);\n const activeTool = getActiveTool(state);\n const isolatedLinkerPanelId = getIsolatedLinkerPanelIdForDashboard(\n state,\n localDashboardId\n );\n const isLinkerActive =\n activeTool === ToolType.LINKER &&\n (isolatedLinkerPanelId === undefined || isolatedLinkerPanelId === panelId);\n // Disable linking if linker is in isolated mode for a different panel\n const disableLinking =\n activeTool === ToolType.LINKER &&\n isolatedLinkerPanelId !== undefined &&\n isolatedLinkerPanelId !== panelId;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n dh: getApi(state),\n isLinkerActive,\n disableLinking,\n settings: getSettings(state),\n panelTableMap,\n dashboardLinks,\n };\n};\n\nconst connector = connect(mapStateToProps, null, null, { forwardRef: true });\n\nexport type DropdownFilterPanelProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\ninterface DropdownFilterPanelState {\n column?: DropdownFilterColumn;\n formatter: Formatter;\n valuesTable?: DhType.Table;\n valuesColumn?: DhType.Column;\n sourceSize: number;\n value: string;\n timestamp?: number;\n values: unknown[];\n isValueShown: boolean;\n wasFlipped: boolean;\n skipUpdate: boolean;\n\n panelState?: PanelState; // Dehydrated panel state that can load this panel\n\n isDisconnected: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n error: unknown | null;\n}\n\nexport class DropdownFilterPanel extends Component<\n DropdownFilterPanelProps,\n DropdownFilterPanelState\n> {\n static displayName = 'DropdownFilterPanel';\n\n static COMPONENT = 'DropdownFilterPanel';\n\n static MAX_TABLE_SIZE = 256;\n\n static SOURCE_COLUMN = Object.freeze({\n name: 'FilterSource',\n type: null,\n });\n\n constructor(props: DropdownFilterPanelProps) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n DROPDOWN_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleSourceFilterChange = this.handleSourceFilterChange.bind(this);\n this.handleSourceSortChange = this.handleSourceSortChange.bind(this);\n this.handleSourceSizeChange = this.handleSourceSizeChange.bind(this);\n this.handleSourceMouseEnter = this.handleSourceMouseEnter.bind(this);\n this.handleSourceMouseLeave = this.handleSourceMouseLeave.bind(this);\n this.handleValuesTableUpdate = this.handleValuesTableUpdate.bind(this);\n\n this.dropdownFilterRef = React.createRef();\n this.panelContainer = React.createRef();\n this.pending = new Pending();\n\n const { dh, panelState, settings } = props;\n this.columnFormats = FormatterUtils.getColumnFormats(settings);\n // Filter dropdown needs to show and send full timestamp format with nanoseconds\n this.dateTimeFormatter = new DateTimeColumnFormatter(dh, {\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: `yyyy-MM-dd HH:mm:ss.SSSSSSSSS`,\n });\n const {\n value = '',\n isValueShown = false,\n name,\n type,\n timestamp,\n } = panelState ?? {};\n const column = name != null && type != null ? { name, type } : undefined;\n this.state = {\n column,\n formatter: new Formatter(dh, this.columnFormats),\n valuesTable: undefined,\n valuesColumn: undefined,\n sourceSize: 0,\n value,\n timestamp,\n values: [],\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n\n isDisconnected: false,\n isLoading: false,\n isLoaded: false,\n error: null,\n };\n }\n\n componentDidMount(): void {\n this.updateValuesTable();\n const { dashboardLinks, panelTableMap } = this.props;\n const { column, value, timestamp } = this.state;\n const sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(\n prevProps: DropdownFilterPanelProps,\n prevState: DropdownFilterPanelState\n ): void {\n const { dashboardLinks, panelTableMap, settings } = this.props;\n const { valuesTable } = this.state;\n const source = this.getSource(dashboardLinks);\n const sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n\n const prevSource = this.getSource(prevProps.dashboardLinks);\n const prevSourceTable = this.getSourceTable(\n prevProps.panelTableMap,\n prevProps.dashboardLinks\n );\n\n if (settings !== prevProps.settings && settings !== undefined) {\n this.updateFormatterSettings(settings);\n }\n\n if (\n valuesTable !== prevState.valuesTable &&\n prevState.valuesTable != null\n ) {\n log.debug('Table in state modified, closing the old table.');\n prevState.valuesTable.close();\n }\n\n // Checking source change in addition to table change\n // in case a different column is selected in the same table\n if (sourceTable !== prevSourceTable || source !== prevSource) {\n this.updateValuesTable();\n }\n\n if (sourceTable !== prevSourceTable) {\n if (prevSourceTable !== null) {\n this.stopListeningToSource(prevSourceTable);\n }\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n }\n }\n\n componentWillUnmount(): void {\n const { dashboardLinks, panelTableMap } = this.props;\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n this.pending.cancel();\n if (sourceTable !== null) {\n this.stopListeningToSource(sourceTable);\n }\n if (this.cleanup) {\n this.cleanup();\n }\n if (valuesTable != null) {\n valuesTable.close();\n }\n }\n\n dateTimeFormatter: DateTimeColumnFormatter;\n\n dropdownFilterRef: RefObject<DropdownFilter>;\n\n panelContainer: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n cleanup?: () => void;\n\n columnFormats?: FormattingRule[];\n\n getCachedValues = memoize(\n (\n rawValues: unknown[],\n { type, name }: DropdownFilterColumn,\n formatter: Formatter\n ) => {\n if (type !== undefined && TableUtils.isDateType(type)) {\n return rawValues.map(value =>\n this.dateTimeFormatter.format(value as number)\n );\n }\n return rawValues.map(value =>\n // Skip formatting for nulls so they don't get converted to ''\n value != null && type != null\n ? formatter.getFormattedString(value, type, name)\n : null\n );\n },\n { max: 1000 }\n );\n\n getCoordinateForColumn(): [number, number] | null {\n if (this.panelContainer.current == null) {\n return null;\n }\n\n const element = this.panelContainer.current.querySelector(\n `.${DropdownFilter.SOURCE_BUTTON_CLASS_NAME}`\n );\n const rect = element?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n const x = rect.left + rect.width / 2;\n const y = rect.bottom;\n return [x, y];\n }\n\n getSettingsErrorMessage(): string | undefined {\n const { sourceSize } = this.state;\n if (sourceSize > DropdownFilterPanel.MAX_TABLE_SIZE) {\n return `Table too large, must have fewer than ${DropdownFilterPanel.MAX_TABLE_SIZE} options.`;\n }\n return undefined;\n }\n\n getPanelErrorMessage(): string | undefined {\n const { error } = this.state;\n return error != null ? `${error}` : undefined;\n }\n\n getCachedPanelLinks = memoize(\n (dashboardLinks: Link[], panel: DropdownFilterPanel) => {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('getCachedPanelLinks', dashboardLinks, panelId);\n return dashboardLinks.filter(link => link.end?.panelId === panelId);\n },\n { max: 1000 }\n );\n\n getCachedSource = memoize(\n (links: Link[]) => {\n log.debug('getCachedSource', links);\n let source: LinkPoint | undefined;\n if (links.length > 0) {\n const [link] = links;\n source = link.start;\n if (links.length > 1) {\n log.error('Filter has more that one link', links);\n }\n }\n return source;\n },\n { max: 1000 }\n );\n\n getCachedSourceTable = memoize(\n (\n panelTableMap: Map<string | string[], DhType.Table>,\n source: LinkPoint | undefined\n ) => {\n log.debug('getCachedSourceTable', panelTableMap, source);\n if (source == null) {\n return null;\n }\n const { panelId } = source;\n return panelTableMap.get(panelId) ?? null;\n },\n { max: 1000 }\n );\n\n getCachedSourceColumn = memoize(\n (table: DhType.Table, source: LinkPoint | undefined) => {\n log.debug('getCachedSourceColumn', table, source);\n if (table == null || source == null) {\n return null;\n }\n return (\n table.columns.find(\n ({ name, type }) =>\n name === source.columnName && type === source.columnType\n ) ?? null\n );\n },\n { max: 1000 }\n );\n\n getSource(links: Link[]): LinkPoint | undefined {\n const panelLinks = this.getCachedPanelLinks(links, this);\n return this.getCachedSource(panelLinks);\n }\n\n getSourceTable(\n panelTableMap: PanelTableMap,\n links: Link[]\n ): DhType.Table | null {\n const source = this.getSource(links);\n return this.getCachedSourceTable(panelTableMap, source);\n }\n\n getValuesColumn(\n valuesTable: DhType.Table,\n links: Link[]\n ): DhType.Column | null {\n const source = this.getSource(links);\n return this.getCachedSourceColumn(valuesTable, source);\n }\n\n startListeningToSource(sourceTable: DhType.Table): void {\n const { dh } = this.props;\n log.debug('startListeningToSource');\n sourceTable.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_SIZECHANGED,\n this.handleSourceSizeChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleDisconnect\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleReconnect\n );\n }\n\n stopListeningToSource(sourceTable: DhType.Table): void {\n const { dh } = this.props;\n log.debug('stopListeningToSource');\n sourceTable.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_SIZECHANGED,\n this.handleSourceSizeChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleDisconnect\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleReconnect\n );\n }\n\n handleChange({\n column,\n isValueShown = false,\n value,\n }: {\n column: Partial<DhType.Column> | null;\n isValueShown?: boolean | undefined;\n value?: string | undefined;\n }): void {\n const { name = undefined, type = undefined } = column ?? {};\n let sendUpdate = true;\n let timestamp: number | undefined = Date.now();\n this.setState(\n ({ panelState, timestamp: prevTimestamp, wasFlipped, skipUpdate }) => {\n // If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it\n const isFlip =\n panelState != null &&\n isValueShown !== panelState.isValueShown &&\n name === panelState.name &&\n type === panelState.type &&\n value === panelState.value;\n sendUpdate =\n (!skipUpdate && isValueShown && (!isFlip || !wasFlipped)) ?? false;\n\n if (!sendUpdate) {\n timestamp = prevTimestamp;\n }\n\n return {\n panelState: {\n isValueShown,\n name,\n type,\n value,\n timestamp: timestamp ?? undefined,\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false,\n };\n },\n () => {\n if (sendUpdate) {\n this.sendUpdate(name ?? null, type, value, timestamp);\n }\n }\n );\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleSourceFilterChange(): void {\n this.applySourceFilters();\n }\n\n handleSourceSortChange(): void {\n this.applySourceSorts();\n }\n\n handleSourceSizeChange({ detail }: { detail: number }): void {\n this.setState({ sourceSize: detail });\n }\n\n handleColumnSelected(): void {\n log.debug('handleColumnSelected');\n const { glEventHub } = this.props;\n glEventHub.emit(\n InputFilterEvent.COLUMN_SELECTED,\n this,\n DropdownFilterPanel.SOURCE_COLUMN\n );\n }\n\n handleClearAllFilters(): void {\n this.dropdownFilterRef?.current?.clearFilter();\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param state Filter state to set\n * @param sendUpdate Emit filters changed event if true\n */\n setPanelState(state: InputFilterPanelState, sendUpdate = false): void {\n const { dashboardLinks } = this.props;\n if (this.getSource(dashboardLinks) == null) {\n log.debug('Ignore state update for unlinked filter', state);\n return;\n }\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({ skipUpdate: !sendUpdate });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n this.dropdownFilterRef?.current?.setFilterState(state);\n }\n\n sendUpdate(\n name: string | null,\n type: string | undefined,\n value: string | undefined,\n timestamp?: number\n ): void {\n const { dashboardLinks, glEventHub } = this.props;\n const sourcePanelId = this.getSource(dashboardLinks)?.panelId;\n const excludePanelIds = sourcePanelId === null ? [] : [sourcePanelId];\n log.debug('sendUpdate', {\n name,\n type,\n value,\n timestamp,\n excludePanelIds,\n });\n\n glEventHub.emit(InputFilterEvent.FILTERS_CHANGED, this, {\n name,\n type,\n value: value != null ? value : '=null',\n timestamp,\n excludePanelIds,\n });\n }\n\n updateValuesTable(): void {\n const { dashboardLinks, panelTableMap } = this.props;\n const source = this.getSource(dashboardLinks);\n const sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n log.debug('updateValuesTable', source, sourceTable);\n\n this.setState({\n values: [],\n valuesTable: undefined,\n error: null,\n });\n\n if (source == null) {\n log.debug('Filter unlinked.');\n this.setState({\n isLoading: false,\n isLoaded: true,\n isValueShown: false,\n sourceSize: 0,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n\n if (sourceTable == null) {\n return;\n }\n\n this.setState({ isLoaded: false, sourceSize: sourceTable.size });\n\n this.pending\n .add(sourceTable.copy(), resolved => resolved.close())\n .then(valuesTable => {\n // Loading/loaded will be set when values array is actually populated\n this.updateViewportListener(valuesTable);\n this.setState({ valuesTable });\n })\n .catch((error: unknown) => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n this.setState({ isLoading: false, error });\n });\n }\n\n applySourceSorts(): void {\n const { dashboardLinks, panelTableMap } = this.props;\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n log.debug('applySourceSorts', sourceTable?.sort);\n if (valuesTable == null || sourceTable == null) {\n log.debug('Table not initialized');\n return;\n }\n const sorts = [...sourceTable.sort];\n valuesTable.applySort(sorts);\n this.setViewport(valuesTable);\n }\n\n applySourceFilters(): void {\n const { dashboardLinks, panelTableMap } = this.props;\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n log.debug('applySourceFilters', sourceTable?.filter);\n if (valuesTable == null || sourceTable == null) {\n log.debug('Table not initialized');\n return;\n }\n const filters = [...sourceTable.filter];\n valuesTable.applyFilter(filters);\n this.setViewport(valuesTable);\n }\n\n updateViewportListener(valuesTable: DhType.Table): void {\n const { dh } = this.props;\n log.debug('updateViewportListener', valuesTable?.size);\n\n if (this.cleanup) {\n this.cleanup();\n }\n\n if (valuesTable == null) {\n this.cleanup = undefined;\n return;\n }\n\n this.cleanup = valuesTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleValuesTableUpdate\n );\n\n this.setViewport(valuesTable);\n }\n\n setViewport(valuesTable: DhType.Table): void {\n const { dashboardLinks } = this.props;\n const valuesColumn = this.getValuesColumn(valuesTable, dashboardLinks);\n if (!valuesColumn) {\n log.error('values column is null');\n return;\n }\n valuesTable.setViewport(0, DropdownFilterPanel.MAX_TABLE_SIZE - 1, [\n valuesColumn,\n ]);\n }\n\n updateFormatterSettings(settings: {\n formatter?: FormattingRule[] | undefined;\n }): void {\n const { dh } = this.props;\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n if (!deepEqual(this.columnFormats, columnFormats)) {\n this.columnFormats = columnFormats;\n this.setState({ formatter: new Formatter(dh, columnFormats) });\n }\n }\n\n handleValuesTableUpdate({\n detail,\n }: {\n detail: { rows: DhType.Row[] };\n }): void {\n const { rows } = detail;\n const { dashboardLinks } = this.props;\n const { valuesTable } = this.state;\n if (!valuesTable) {\n log.error('valuesTable is null');\n return;\n }\n const valuesColumn = this.getValuesColumn(valuesTable, dashboardLinks);\n if (!valuesColumn) {\n log.error('Values column not found');\n return;\n }\n const values = rows.map(row => row.get(valuesColumn));\n this.setState({ values, isLoading: false, isLoaded: true, valuesColumn });\n }\n\n handleSourceMouseEnter(): void {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, DropdownFilterPanel.SOURCE_COLUMN);\n }\n\n handleSourceMouseLeave(): void {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, undefined);\n }\n\n render(): React.ReactElement {\n const {\n columns,\n dashboardLinks,\n disableLinking,\n glContainer,\n glEventHub,\n isLinkerActive,\n } = this.props;\n const {\n column,\n formatter,\n isDisconnected,\n isValueShown,\n value,\n values,\n valuesColumn,\n isLoading,\n isLoaded,\n } = this.state;\n const source = this.getSource(dashboardLinks);\n const settingsErrorMessage = this.getSettingsErrorMessage();\n const panelErrorMessage = this.getPanelErrorMessage();\n const formattedValues =\n isLoaded && valuesColumn != null\n ? this.getCachedValues(values, valuesColumn, formatter)\n : EMPTY_ARRAY;\n\n return (\n <WidgetPanel\n errorMessage={panelErrorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n isDisconnected={isDisconnected}\n className=\"iris-dropdown-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n descriptor={WIDGET_DESCRIPTOR}\n >\n <div\n ref={this.panelContainer}\n className=\"dropdown-filter-container h-100 w-100 container\"\n >\n <DropdownFilter\n ref={this.dropdownFilterRef}\n column={column}\n columns={columns}\n isValueShown={isValueShown}\n isLinkerActive={isLinkerActive}\n disableLinking={disableLinking}\n isLoaded={isLoaded}\n settingsError={settingsErrorMessage}\n source={source}\n value={value}\n values={formattedValues}\n onChange={this.handleChange}\n onColumnSelected={this.handleColumnSelected}\n onSourceMouseEnter={this.handleSourceMouseEnter}\n onSourceMouseLeave={this.handleSourceMouseLeave}\n />\n </div>\n </WidgetPanel>\n );\n }\n}\n\nconst ConnectedDropdownFilterPanel = connector(DropdownFilterPanel);\n\nexport default ConnectedDropdownFilterPanel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DropdownFilterPanel.js","names":["React","Component","connect","debounce","deepEqual","memoize","LayoutUtils","DateTimeColumnFormatter","Formatter","FormatterUtils","TableUtils","Log","getActiveTool","getApi","getSettings","assertNotNull","EMPTY_ARRAY","Pending","PromiseUtils","DropdownFilter","InputFilterEvent","getColumnsForDashboard","getColumnSelectionValidatorForDashboard","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","getTableMapForDashboard","ToolType","WidgetPanel","emitFilterChanged","jsx","_jsx","log","module","DROPDOWN_FILTER_DEBOUNCE","WIDGET_DESCRIPTOR","Object","freeze","name","type","mapStateToProps","state","ownProps","localDashboardId","panelId","getIdFromPanel","props","panelTableMap","dashboardLinks","activeTool","isolatedLinkerPanelId","isLinkerActive","LINKER","undefined","disableLinking","columns","columnSelectionValidator","dh","settings","connector","forwardRef","DropdownFilterPanel","constructor","_defineProperty","rawValues","_ref","formatter","isDateType","map","value","dateTimeFormatter","format","getFormattedString","max","panel","debug","filter","link","_link$end","end","links","source","length","start","error","_panelTableMap$get","get","table","_table$columns$find","find","_ref2","columnName","columnType","handleChange","bind","handleClearAllFilters","handleDisconnect","handleReconnect","handleColumnSelected","handleSourceFilterChange","handleSourceSortChange","handleSourceSizeChange","handleSourceMouseEnter","handleSourceMouseLeave","handleValuesTableUpdate","dropdownFilterRef","createRef","panelContainer","pending","panelState","columnFormats","getColumnFormats","showTimeZone","showTSeparator","defaultDateTimeFormatString","isValueShown","timestamp","column","valuesTable","valuesColumn","sourceSize","values","wasFlipped","skipUpdate","isDisconnected","isLoading","isLoaded","componentDidMount","updateValuesTable","sourceTable","getSourceTable","startListeningToSource","sendUpdate","componentDidUpdate","prevProps","prevState","getSource","prevSource","prevSourceTable","updateFormatterSettings","close","stopListeningToSource","componentWillUnmount","cancel","cleanup","getCoordinateForColumn","_element$getBoundingC","current","element","querySelector","concat","SOURCE_BUTTON_CLASS_NAME","rect","getBoundingClientRect","width","height","x","left","y","bottom","getSettingsErrorMessage","MAX_TABLE_SIZE","getPanelErrorMessage","panelLinks","getCachedPanelLinks","getCachedSource","getCachedSourceTable","getValuesColumn","getCachedSourceColumn","addEventListener","Table","EVENT_FILTERCHANGED","EVENT_SORTCHANGED","EVENT_SIZECHANGED","EVENT_DISCONNECT","EVENT_RECONNECT","removeEventListener","_ref3","Date","now","setState","_ref4","_ref5","_timestamp","prevTimestamp","isFlip","Error","applySourceFilters","applySourceSorts","_ref6","detail","glEventHub","emit","COLUMN_SELECTED","SOURCE_COLUMN","_this$dropdownFilterR","_this$dropdownFilterR2","clearFilter","setPanelState","_this$dropdownFilterR3","_this$dropdownFilterR4","arguments","setFilterState","_this$getSource","sourcePanelId","excludePanelIds","size","add","copy","resolved","then","updateViewportListener","catch","isCanceled","sort","sorts","applySort","setViewport","filters","applyFilter","EVENT_UPDATED","_ref7","rows","row","render","glContainer","settingsErrorMessage","panelErrorMessage","formattedValues","getCachedValues","errorMessage","className","componentPanel","onClearAllFilters","descriptor","children","ref","settingsError","onChange","onColumnSelected","onSourceMouseEnter","onSourceMouseLeave","ConnectedDropdownFilterPanel"],"sources":["../../src/panels/DropdownFilterPanel.tsx"],"sourcesContent":["import React, { Component, type RefObject } from 'react';\nimport { connect, type ConnectedProps } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport deepEqual from 'fast-deep-equal';\nimport memoize from 'memoizee';\nimport { type DashboardPanelProps, LayoutUtils } from '@deephaven/dashboard';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n DateTimeColumnFormatter,\n Formatter,\n FormatterUtils,\n type FormattingRule,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport {\n getActiveTool,\n getApi,\n getSettings,\n type RootState,\n} from '@deephaven/redux';\nimport {\n assertNotNull,\n EMPTY_ARRAY,\n Pending,\n PromiseUtils,\n} from '@deephaven/utils';\nimport DropdownFilter, {\n type DropdownFilterColumn,\n} from '../controls/dropdown-filter/DropdownFilter';\nimport { InputFilterEvent } from '../events';\nimport {\n getColumnsForDashboard,\n getColumnSelectionValidatorForDashboard,\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n getTableMapForDashboard,\n} from '../redux';\nimport './DropdownFilterPanel.scss';\nimport ToolType from '../linker/ToolType';\nimport WidgetPanel from './WidgetPanel';\nimport type { Link, LinkPoint } from '../linker/LinkerUtils';\nimport { type ColumnSelectionValidator } from '../linker/ColumnSelectionValidator';\nimport { type PanelState as InputFilterPanelState } from './InputFilterPanel';\nimport { emitFilterChanged } from '../FilterEvents';\n\nconst log = Log.module('DropdownFilterPanel');\n\nconst DROPDOWN_FILTER_DEBOUNCE = 250;\n\nconst WIDGET_DESCRIPTOR = Object.freeze({\n name: 'Dropdown Filter',\n type: 'DropdownFilter',\n});\n\ninterface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ntype PanelTableMap = Map<string | string[], DhType.Table>;\n\ntype StateProps = {\n columns: DhType.Column[];\n columnSelectionValidator?: ColumnSelectionValidator;\n dashboardLinks: Link[];\n dh: typeof DhType;\n disableLinking: boolean;\n isLinkerActive: boolean;\n panelTableMap: PanelTableMap;\n panelState?: PanelState;\n settings: { formatter: FormattingRule[] };\n};\n\ntype OwnProps = DashboardPanelProps;\n\nconst mapStateToProps = (state: RootState, ownProps: OwnProps): StateProps => {\n const { localDashboardId } = ownProps;\n const panelId = LayoutUtils.getIdFromPanel({ props: ownProps });\n const panelTableMap = getTableMapForDashboard(state, localDashboardId);\n const dashboardLinks = getLinksForDashboard(state, localDashboardId);\n const activeTool = getActiveTool(state);\n const isolatedLinkerPanelId = getIsolatedLinkerPanelIdForDashboard(\n state,\n localDashboardId\n );\n const isLinkerActive =\n activeTool === ToolType.LINKER &&\n (isolatedLinkerPanelId === undefined || isolatedLinkerPanelId === panelId);\n // Disable linking if linker is in isolated mode for a different panel\n const disableLinking =\n activeTool === ToolType.LINKER &&\n isolatedLinkerPanelId !== undefined &&\n isolatedLinkerPanelId !== panelId;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n dh: getApi(state),\n isLinkerActive,\n disableLinking,\n settings: getSettings(state),\n panelTableMap,\n dashboardLinks,\n };\n};\n\nconst connector = connect(mapStateToProps, null, null, { forwardRef: true });\n\nexport type DropdownFilterPanelProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\ninterface DropdownFilterPanelState {\n column?: DropdownFilterColumn;\n formatter: Formatter;\n valuesTable?: DhType.Table;\n valuesColumn?: DhType.Column;\n sourceSize: number;\n value: string;\n timestamp?: number;\n values: unknown[];\n isValueShown: boolean;\n wasFlipped: boolean;\n skipUpdate: boolean;\n\n panelState?: PanelState; // Dehydrated panel state that can load this panel\n\n isDisconnected: boolean;\n isLoading: boolean;\n isLoaded: boolean;\n error: unknown | null;\n}\n\nexport class DropdownFilterPanel extends Component<\n DropdownFilterPanelProps,\n DropdownFilterPanelState\n> {\n static displayName = 'DropdownFilterPanel';\n\n static COMPONENT = 'DropdownFilterPanel';\n\n static MAX_TABLE_SIZE = 256;\n\n static SOURCE_COLUMN = Object.freeze({\n name: 'FilterSource',\n type: null,\n });\n\n constructor(props: DropdownFilterPanelProps) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n DROPDOWN_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleSourceFilterChange = this.handleSourceFilterChange.bind(this);\n this.handleSourceSortChange = this.handleSourceSortChange.bind(this);\n this.handleSourceSizeChange = this.handleSourceSizeChange.bind(this);\n this.handleSourceMouseEnter = this.handleSourceMouseEnter.bind(this);\n this.handleSourceMouseLeave = this.handleSourceMouseLeave.bind(this);\n this.handleValuesTableUpdate = this.handleValuesTableUpdate.bind(this);\n\n this.dropdownFilterRef = React.createRef();\n this.panelContainer = React.createRef();\n this.pending = new Pending();\n\n const { dh, panelState, settings } = props;\n this.columnFormats = FormatterUtils.getColumnFormats(settings);\n // Filter dropdown needs to show and send full timestamp format with nanoseconds\n this.dateTimeFormatter = new DateTimeColumnFormatter(dh, {\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: `yyyy-MM-dd HH:mm:ss.SSSSSSSSS`,\n });\n const {\n value = '',\n isValueShown = false,\n name,\n type,\n timestamp,\n } = panelState ?? {};\n const column = name != null && type != null ? { name, type } : undefined;\n this.state = {\n column,\n formatter: new Formatter(dh, this.columnFormats),\n valuesTable: undefined,\n valuesColumn: undefined,\n sourceSize: 0,\n value,\n timestamp,\n values: [],\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n\n isDisconnected: false,\n isLoading: false,\n isLoaded: false,\n error: null,\n };\n }\n\n componentDidMount(): void {\n this.updateValuesTable();\n const { dashboardLinks, panelTableMap } = this.props;\n const { column, value, timestamp } = this.state;\n const sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(\n prevProps: DropdownFilterPanelProps,\n prevState: DropdownFilterPanelState\n ): void {\n const { dashboardLinks, panelTableMap, settings } = this.props;\n const { valuesTable } = this.state;\n const source = this.getSource(dashboardLinks);\n const sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n\n const prevSource = this.getSource(prevProps.dashboardLinks);\n const prevSourceTable = this.getSourceTable(\n prevProps.panelTableMap,\n prevProps.dashboardLinks\n );\n\n if (settings !== prevProps.settings && settings !== undefined) {\n this.updateFormatterSettings(settings);\n }\n\n if (\n valuesTable !== prevState.valuesTable &&\n prevState.valuesTable != null\n ) {\n log.debug('Table in state modified, closing the old table.');\n prevState.valuesTable.close();\n }\n\n // Checking source change in addition to table change\n // in case a different column is selected in the same table\n if (sourceTable !== prevSourceTable || source !== prevSource) {\n this.updateValuesTable();\n }\n\n if (sourceTable !== prevSourceTable) {\n if (prevSourceTable !== null) {\n this.stopListeningToSource(prevSourceTable);\n }\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n }\n }\n\n componentWillUnmount(): void {\n const { dashboardLinks, panelTableMap } = this.props;\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n this.pending.cancel();\n if (sourceTable !== null) {\n this.stopListeningToSource(sourceTable);\n }\n if (this.cleanup) {\n this.cleanup();\n }\n if (valuesTable != null) {\n valuesTable.close();\n }\n }\n\n dateTimeFormatter: DateTimeColumnFormatter;\n\n dropdownFilterRef: RefObject<DropdownFilter>;\n\n panelContainer: RefObject<HTMLDivElement>;\n\n pending: Pending;\n\n cleanup?: () => void;\n\n columnFormats?: FormattingRule[];\n\n getCachedValues = memoize(\n (\n rawValues: unknown[],\n { type, name }: DropdownFilterColumn,\n formatter: Formatter\n ) => {\n if (type !== undefined && TableUtils.isDateType(type)) {\n return rawValues.map(value =>\n this.dateTimeFormatter.format(value as number)\n );\n }\n return rawValues.map(value =>\n // Skip formatting for nulls so they don't get converted to ''\n value != null && type != null\n ? formatter.getFormattedString(value, type, name)\n : null\n );\n },\n { max: 1000 }\n );\n\n getCoordinateForColumn(): [number, number] | null {\n if (this.panelContainer.current == null) {\n return null;\n }\n\n const element = this.panelContainer.current.querySelector(\n `.${DropdownFilter.SOURCE_BUTTON_CLASS_NAME}`\n );\n const rect = element?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n const x = rect.left + rect.width / 2;\n const y = rect.bottom;\n return [x, y];\n }\n\n getSettingsErrorMessage(): string | undefined {\n const { sourceSize } = this.state;\n if (sourceSize > DropdownFilterPanel.MAX_TABLE_SIZE) {\n return `Table too large, must have fewer than ${DropdownFilterPanel.MAX_TABLE_SIZE} options.`;\n }\n return undefined;\n }\n\n getPanelErrorMessage(): string | undefined {\n const { error } = this.state;\n return error != null ? `${error}` : undefined;\n }\n\n getCachedPanelLinks = memoize(\n (dashboardLinks: Link[], panel: DropdownFilterPanel) => {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('getCachedPanelLinks', dashboardLinks, panelId);\n return dashboardLinks.filter(link => link.end?.panelId === panelId);\n },\n { max: 1000 }\n );\n\n getCachedSource = memoize(\n (links: Link[]) => {\n log.debug('getCachedSource', links);\n let source: LinkPoint | undefined;\n if (links.length > 0) {\n const [link] = links;\n source = link.start;\n if (links.length > 1) {\n log.error('Filter has more that one link', links);\n }\n }\n return source;\n },\n { max: 1000 }\n );\n\n getCachedSourceTable = memoize(\n (\n panelTableMap: Map<string | string[], DhType.Table>,\n source: LinkPoint | undefined\n ) => {\n log.debug('getCachedSourceTable', panelTableMap, source);\n if (source == null) {\n return null;\n }\n const { panelId } = source;\n return panelTableMap.get(panelId) ?? null;\n },\n { max: 1000 }\n );\n\n getCachedSourceColumn = memoize(\n (table: DhType.Table, source: LinkPoint | undefined) => {\n log.debug('getCachedSourceColumn', table, source);\n if (table == null || source == null) {\n return null;\n }\n return (\n table.columns.find(\n ({ name, type }) =>\n name === source.columnName && type === source.columnType\n ) ?? null\n );\n },\n { max: 1000 }\n );\n\n getSource(links: Link[]): LinkPoint | undefined {\n const panelLinks = this.getCachedPanelLinks(links, this);\n return this.getCachedSource(panelLinks);\n }\n\n getSourceTable(\n panelTableMap: PanelTableMap,\n links: Link[]\n ): DhType.Table | null {\n const source = this.getSource(links);\n return this.getCachedSourceTable(panelTableMap, source);\n }\n\n getValuesColumn(\n valuesTable: DhType.Table,\n links: Link[]\n ): DhType.Column | null {\n const source = this.getSource(links);\n return this.getCachedSourceColumn(valuesTable, source);\n }\n\n startListeningToSource(sourceTable: DhType.Table): void {\n const { dh } = this.props;\n log.debug('startListeningToSource');\n sourceTable.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_SIZECHANGED,\n this.handleSourceSizeChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleDisconnect\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleReconnect\n );\n }\n\n stopListeningToSource(sourceTable: DhType.Table): void {\n const { dh } = this.props;\n log.debug('stopListeningToSource');\n sourceTable.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_SIZECHANGED,\n this.handleSourceSizeChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleDisconnect\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleReconnect\n );\n }\n\n handleChange({\n column,\n isValueShown = false,\n value,\n }: {\n column: Partial<DhType.Column> | null;\n isValueShown?: boolean | undefined;\n value?: string | undefined;\n }): void {\n const { name = undefined, type = undefined } = column ?? {};\n let sendUpdate = true;\n let timestamp: number | undefined = Date.now();\n this.setState(\n ({ panelState, timestamp: prevTimestamp, wasFlipped, skipUpdate }) => {\n // If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it\n const isFlip =\n panelState != null &&\n isValueShown !== panelState.isValueShown &&\n name === panelState.name &&\n type === panelState.type &&\n value === panelState.value;\n sendUpdate =\n (!skipUpdate && isValueShown && (!isFlip || !wasFlipped)) ?? false;\n\n if (!sendUpdate) {\n timestamp = prevTimestamp;\n }\n\n return {\n panelState: {\n isValueShown,\n name,\n type,\n value,\n timestamp: timestamp ?? undefined,\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false,\n };\n },\n () => {\n if (sendUpdate) {\n this.sendUpdate(name ?? null, type, value, timestamp);\n }\n }\n );\n }\n\n handleDisconnect(): void {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect(): void {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleSourceFilterChange(): void {\n this.applySourceFilters();\n }\n\n handleSourceSortChange(): void {\n this.applySourceSorts();\n }\n\n handleSourceSizeChange({ detail }: { detail: number }): void {\n this.setState({ sourceSize: detail });\n }\n\n handleColumnSelected(): void {\n log.debug('handleColumnSelected');\n const { glEventHub } = this.props;\n glEventHub.emit(\n InputFilterEvent.COLUMN_SELECTED,\n this,\n DropdownFilterPanel.SOURCE_COLUMN\n );\n }\n\n handleClearAllFilters(): void {\n this.dropdownFilterRef?.current?.clearFilter();\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param state Filter state to set\n * @param sendUpdate Emit filters changed event if true\n */\n setPanelState(state: InputFilterPanelState, sendUpdate = false): void {\n const { dashboardLinks } = this.props;\n if (this.getSource(dashboardLinks) == null) {\n log.debug('Ignore state update for unlinked filter', state);\n return;\n }\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({ skipUpdate: !sendUpdate });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n this.dropdownFilterRef?.current?.setFilterState(state);\n }\n\n sendUpdate(\n name: string | null,\n type: string | undefined,\n value: string | undefined,\n timestamp?: number\n ): void {\n const { dashboardLinks, glEventHub } = this.props;\n const sourcePanelId = this.getSource(dashboardLinks)?.panelId;\n const excludePanelIds = sourcePanelId == null ? [] : [sourcePanelId];\n log.debug('sendUpdate', {\n name,\n type,\n value,\n timestamp,\n excludePanelIds,\n });\n\n const panelId = LayoutUtils.getIdFromPanel(this);\n assertNotNull(panelId);\n\n emitFilterChanged(\n glEventHub,\n panelId,\n name != null && type != null && timestamp != null\n ? {\n name,\n type,\n value: value != null ? value : '=null',\n timestamp,\n excludePanelIds,\n }\n : null\n );\n }\n\n updateValuesTable(): void {\n const { dashboardLinks, panelTableMap } = this.props;\n const source = this.getSource(dashboardLinks);\n const sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n log.debug('updateValuesTable', source, sourceTable);\n\n this.setState({\n values: [],\n valuesTable: undefined,\n error: null,\n });\n\n if (source == null) {\n log.debug('Filter unlinked.');\n this.setState({\n isLoading: false,\n isLoaded: true,\n isValueShown: false,\n sourceSize: 0,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n\n if (sourceTable == null) {\n return;\n }\n\n this.setState({ isLoaded: false, sourceSize: sourceTable.size });\n\n this.pending\n .add(sourceTable.copy(), resolved => resolved.close())\n .then(valuesTable => {\n // Loading/loaded will be set when values array is actually populated\n this.updateViewportListener(valuesTable);\n this.setState({ valuesTable });\n })\n .catch((error: unknown) => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n log.error(error);\n this.setState({ isLoading: false, error });\n });\n }\n\n applySourceSorts(): void {\n const { dashboardLinks, panelTableMap } = this.props;\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n log.debug('applySourceSorts', sourceTable?.sort);\n if (valuesTable == null || sourceTable == null) {\n log.debug('Table not initialized');\n return;\n }\n const sorts = [...sourceTable.sort];\n valuesTable.applySort(sorts);\n this.setViewport(valuesTable);\n }\n\n applySourceFilters(): void {\n const { dashboardLinks, panelTableMap } = this.props;\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable(panelTableMap, dashboardLinks);\n log.debug('applySourceFilters', sourceTable?.filter);\n if (valuesTable == null || sourceTable == null) {\n log.debug('Table not initialized');\n return;\n }\n const filters = [...sourceTable.filter];\n valuesTable.applyFilter(filters);\n this.setViewport(valuesTable);\n }\n\n updateViewportListener(valuesTable: DhType.Table): void {\n const { dh } = this.props;\n log.debug('updateViewportListener', valuesTable?.size);\n\n if (this.cleanup) {\n this.cleanup();\n }\n\n if (valuesTable == null) {\n this.cleanup = undefined;\n return;\n }\n\n this.cleanup = valuesTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleValuesTableUpdate\n );\n\n this.setViewport(valuesTable);\n }\n\n setViewport(valuesTable: DhType.Table): void {\n const { dashboardLinks } = this.props;\n const valuesColumn = this.getValuesColumn(valuesTable, dashboardLinks);\n if (!valuesColumn) {\n log.error('values column is null');\n return;\n }\n valuesTable.setViewport(0, DropdownFilterPanel.MAX_TABLE_SIZE - 1, [\n valuesColumn,\n ]);\n }\n\n updateFormatterSettings(settings: {\n formatter?: FormattingRule[] | undefined;\n }): void {\n const { dh } = this.props;\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n if (!deepEqual(this.columnFormats, columnFormats)) {\n this.columnFormats = columnFormats;\n this.setState({ formatter: new Formatter(dh, columnFormats) });\n }\n }\n\n handleValuesTableUpdate({\n detail,\n }: {\n detail: { rows: DhType.Row[] };\n }): void {\n const { rows } = detail;\n const { dashboardLinks } = this.props;\n const { valuesTable } = this.state;\n if (!valuesTable) {\n log.error('valuesTable is null');\n return;\n }\n const valuesColumn = this.getValuesColumn(valuesTable, dashboardLinks);\n if (!valuesColumn) {\n log.error('Values column not found');\n return;\n }\n const values = rows.map(row => row.get(valuesColumn));\n this.setState({ values, isLoading: false, isLoaded: true, valuesColumn });\n }\n\n handleSourceMouseEnter(): void {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, DropdownFilterPanel.SOURCE_COLUMN);\n }\n\n handleSourceMouseLeave(): void {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, undefined);\n }\n\n render(): React.ReactElement {\n const {\n columns,\n dashboardLinks,\n disableLinking,\n glContainer,\n glEventHub,\n isLinkerActive,\n } = this.props;\n const {\n column,\n formatter,\n isDisconnected,\n isValueShown,\n value,\n values,\n valuesColumn,\n isLoading,\n isLoaded,\n } = this.state;\n const source = this.getSource(dashboardLinks);\n const settingsErrorMessage = this.getSettingsErrorMessage();\n const panelErrorMessage = this.getPanelErrorMessage();\n const formattedValues =\n isLoaded && valuesColumn != null\n ? this.getCachedValues(values, valuesColumn, formatter)\n : EMPTY_ARRAY;\n\n return (\n <WidgetPanel\n errorMessage={panelErrorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n isDisconnected={isDisconnected}\n className=\"iris-dropdown-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n descriptor={WIDGET_DESCRIPTOR}\n >\n <div\n ref={this.panelContainer}\n className=\"dropdown-filter-container h-100 w-100 container\"\n >\n <DropdownFilter\n ref={this.dropdownFilterRef}\n column={column}\n columns={columns}\n isValueShown={isValueShown}\n isLinkerActive={isLinkerActive}\n disableLinking={disableLinking}\n isLoaded={isLoaded}\n settingsError={settingsErrorMessage}\n source={source}\n value={value}\n values={formattedValues}\n onChange={this.handleChange}\n onColumnSelected={this.handleColumnSelected}\n onSourceMouseEnter={this.handleSourceMouseEnter}\n onSourceMouseLeave={this.handleSourceMouseLeave}\n />\n </div>\n </WidgetPanel>\n );\n }\n}\n\nconst ConnectedDropdownFilterPanel = connector(DropdownFilterPanel);\n\nexport default ConnectedDropdownFilterPanel;\n"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { getFileStorage } from '@deephaven/redux';
|
|
|
8
8
|
import FileExplorer, { FileExplorerToolbar, FileUtils, NewItemModal, isDirectory } from '@deephaven/file-explorer';
|
|
9
9
|
import React from 'react';
|
|
10
10
|
import { connect } from 'react-redux';
|
|
11
|
-
import Panel from "./
|
|
11
|
+
import Panel from "./CorePanel.js";
|
|
12
12
|
import { NotebookEvent } from "../events/index.js";
|
|
13
13
|
import "./FileExplorerPanel.css";
|
|
14
14
|
import { getDashboardSessionWrapper } from "../redux/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileExplorerPanel.js","names":["Log","getFileStorage","FileExplorer","FileExplorerToolbar","FileUtils","NewItemModal","isDirectory","React","connect","Panel","NotebookEvent","getDashboardSessionWrapper","jsx","_jsx","jsxs","_jsxs","log","module","mapStateToProps","state","ownProps","fileStorage","sessionWrapper","localDashboardId","session","config","sessionConfig","language","type","connector","forwardRef","isMouseEvent","e","mouseEvent","button","FileExplorerPanel","Component","handleError","error","isFocusEvent","event","detail","constructor","props","handleFileSelect","bind","handleCopyFile","handleCreateFile","handleCreateDirectory","handleCreateDirectoryCancel","handleCreateDirectorySubmit","handleDelete","handleRename","handleSessionOpened","handleSessionClosed","handleShow","handleSelectionChange","isShown","showCreateFolder","focusedFilePath","componentDidMount","isHidden","setState","glEventHub","notebookSettings","value","debug","emit","CREATE_NOTEBOOK","path","createDirectory","catch","file","_this","_asyncToGenerator","newName","getUniqueCopyFileName","filename","copyFile","files","forEach","CLOSE_FILE","id","itemName","selectedItems","length","makePath","getPath","shouldFocus","fileMetadata","SELECT_NOTEBOOK","oldName","RENAME_FILE","_ref","undefined","glContainer","render","className","componentPanel","onSessionOpen","onSessionClose","onShow","children","createFile","createFolder","isMultiSelect","storage","onCopy","onCreateFile","onCreateFolder","onDelete","onRename","onSelect","onSelectionChange","isOpen","title","onSubmit","onCancel","defaultValue","_defineProperty","ConnectedFileExplorerPanel"],"sources":["../../src/panels/FileExplorerPanel.tsx"],"sourcesContent":["import { type DashboardPanelProps } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { getFileStorage, type RootState } from '@deephaven/redux';\nimport FileExplorer, {\n FileExplorerToolbar,\n type FileStorage,\n type FileStorageItem,\n FileUtils,\n NewItemModal,\n isDirectory,\n} from '@deephaven/file-explorer';\nimport React, { type ReactNode } from 'react';\nimport { connect, type ConnectedProps } from 'react-redux';\nimport type { dh } from '@deephaven/jsapi-types';\nimport Panel from './Panel';\nimport { NotebookEvent } from '../events';\nimport './FileExplorerPanel.scss';\nimport { getDashboardSessionWrapper } from '../redux';\n\nconst log = Log.module('FileExplorerPanel');\n\ntype StateProps = {\n fileStorage: FileStorage;\n language?: string;\n session?: dh.IdeSession;\n};\n\ntype OwnProps = DashboardPanelProps;\n\nconst mapStateToProps = (state: RootState, ownProps: OwnProps): StateProps => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const language = sessionConfig?.type;\n\n return {\n fileStorage,\n language,\n session,\n };\n};\n\nconst connector = connect(mapStateToProps, null, null, { forwardRef: true });\n\nexport type FileExplorerPanelProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type FileExplorerPanelState = {\n isShown: boolean;\n language?: string;\n session?: dh.IdeSession;\n showCreateFolder: boolean;\n focusedFilePath: string;\n};\n\nfunction isMouseEvent<T>(e: React.SyntheticEvent<T>): e is React.MouseEvent<T> {\n const mouseEvent = e as React.MouseEvent<T>;\n return mouseEvent != null && typeof mouseEvent.button === 'number';\n}\n\n/**\n * Panel for showing a FileExplorer in a Dashboard.\n */\nexport class FileExplorerPanel extends React.Component<\n FileExplorerPanelProps,\n FileExplorerPanelState\n> {\n static COMPONENT = 'FileExplorerPanel';\n\n static TITLE = 'File Explorer';\n\n static handleError(error: Error): void {\n log.error(error);\n }\n\n /**\n * Return true if the event should open a file and focus it, otherwise false\n * @param event The event to check\n */\n static isFocusEvent(event: React.SyntheticEvent): boolean {\n if (isMouseEvent(event)) {\n // If it's not a double click, then it's a preview event\n return event.detail >= 2;\n }\n\n // Keyboard event should always open with focus\n return true;\n }\n\n constructor(props: FileExplorerPanelProps) {\n super(props);\n\n this.handleFileSelect = this.handleFileSelect.bind(this);\n this.handleCopyFile = this.handleCopyFile.bind(this);\n this.handleCreateFile = this.handleCreateFile.bind(this);\n this.handleCreateDirectory = this.handleCreateDirectory.bind(this);\n this.handleCreateDirectoryCancel =\n this.handleCreateDirectoryCancel.bind(this);\n this.handleCreateDirectorySubmit =\n this.handleCreateDirectorySubmit.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleRename = this.handleRename.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n\n const { session, language } = props;\n this.state = {\n isShown: false,\n language,\n session,\n showCreateFolder: false,\n focusedFilePath: '/',\n };\n }\n\n componentDidMount(): void {\n if (!this.isHidden()) {\n this.setState({ isShown: true });\n }\n }\n\n handleCreateFile(): void {\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n language,\n value: '',\n };\n log.debug('handleCreateFile', session, language, notebookSettings);\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n language,\n notebookSettings\n );\n }\n\n handleCreateDirectory(): void {\n this.setState({ showCreateFolder: true });\n }\n\n handleCreateDirectoryCancel(): void {\n log.debug('handleCreateDirectoryCancel');\n this.setState({\n showCreateFolder: false,\n });\n }\n\n handleCreateDirectorySubmit(path: string): void {\n log.debug('handleCreateDirectorySubmit', path);\n this.setState({ showCreateFolder: false });\n const { fileStorage } = this.props;\n fileStorage.createDirectory(path).catch(FileExplorerPanel.handleError);\n }\n\n async handleCopyFile(file: FileStorageItem): Promise<void> {\n const { fileStorage } = this.props;\n if (isDirectory(file)) {\n log.error('Invalid item in handleCopyItem', file);\n return;\n }\n const newName = await FileUtils.getUniqueCopyFileName(\n fileStorage,\n file.filename\n );\n await fileStorage.copyFile(file.filename, newName);\n }\n\n handleDelete(files: FileStorageItem[]): void {\n const { glEventHub } = this.props;\n files.forEach(file => {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, {\n id: file.filename,\n itemName: file.filename,\n });\n });\n }\n\n handleSelectionChange(selectedItems: FileStorageItem[]): void {\n let path = '/';\n if (selectedItems.length === 1) {\n if (selectedItems[0].type === 'directory') {\n path = FileUtils.makePath(selectedItems[0].filename);\n } else {\n path = FileUtils.getPath(selectedItems[0].filename);\n }\n }\n this.setState({ focusedFilePath: path });\n }\n\n handleFileSelect(file: FileStorageItem, event: React.SyntheticEvent): void {\n log.debug('fileSelect', file);\n if (file.type === 'directory') {\n return;\n }\n\n const shouldFocus = FileExplorerPanel.isFocusEvent(event);\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n fileMetadata,\n shouldFocus\n );\n }\n\n handleRename(oldName: string, newName: string): void {\n const { glEventHub } = this.props;\n log.debug('handleRename', oldName, newName);\n glEventHub.emit(NotebookEvent.RENAME_FILE, oldName, newName);\n }\n\n handleSessionOpened(\n session: dh.IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n language: undefined,\n });\n }\n\n handleShow(): void {\n this.setState({ isShown: true });\n }\n\n isHidden(): boolean {\n const { glContainer } = this.props;\n const { isHidden } = glContainer;\n return isHidden;\n }\n\n render(): ReactNode {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { isShown, showCreateFolder, focusedFilePath } = this.state;\n return (\n <Panel\n className=\"file-explorer-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onShow={this.handleShow}\n >\n <FileExplorerToolbar\n createFile={this.handleCreateFile}\n createFolder={this.handleCreateDirectory}\n />\n {isShown && (\n <FileExplorer\n isMultiSelect\n storage={fileStorage}\n onCopy={this.handleCopyFile}\n onCreateFile={this.handleCreateFile}\n onCreateFolder={this.handleCreateDirectory}\n onDelete={this.handleDelete}\n onRename={this.handleRename}\n onSelect={this.handleFileSelect}\n onSelectionChange={this.handleSelectionChange}\n />\n )}\n <NewItemModal\n isOpen={showCreateFolder}\n type=\"directory\"\n title=\"Create New Folder\"\n storage={fileStorage}\n onSubmit={this.handleCreateDirectorySubmit}\n onCancel={this.handleCreateDirectoryCancel}\n defaultValue={focusedFilePath}\n />\n </Panel>\n );\n }\n}\n\nconst ConnectedFileExplorerPanel = connector(FileExplorerPanel);\n\nexport default ConnectedFileExplorerPanel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FileExplorerPanel.js","names":["Log","getFileStorage","FileExplorer","FileExplorerToolbar","FileUtils","NewItemModal","isDirectory","React","connect","Panel","NotebookEvent","getDashboardSessionWrapper","jsx","_jsx","jsxs","_jsxs","log","module","mapStateToProps","state","ownProps","fileStorage","sessionWrapper","localDashboardId","session","config","sessionConfig","language","type","connector","forwardRef","isMouseEvent","e","mouseEvent","button","FileExplorerPanel","Component","handleError","error","isFocusEvent","event","detail","constructor","props","handleFileSelect","bind","handleCopyFile","handleCreateFile","handleCreateDirectory","handleCreateDirectoryCancel","handleCreateDirectorySubmit","handleDelete","handleRename","handleSessionOpened","handleSessionClosed","handleShow","handleSelectionChange","isShown","showCreateFolder","focusedFilePath","componentDidMount","isHidden","setState","glEventHub","notebookSettings","value","debug","emit","CREATE_NOTEBOOK","path","createDirectory","catch","file","_this","_asyncToGenerator","newName","getUniqueCopyFileName","filename","copyFile","files","forEach","CLOSE_FILE","id","itemName","selectedItems","length","makePath","getPath","shouldFocus","fileMetadata","SELECT_NOTEBOOK","oldName","RENAME_FILE","_ref","undefined","glContainer","render","className","componentPanel","onSessionOpen","onSessionClose","onShow","children","createFile","createFolder","isMultiSelect","storage","onCopy","onCreateFile","onCreateFolder","onDelete","onRename","onSelect","onSelectionChange","isOpen","title","onSubmit","onCancel","defaultValue","_defineProperty","ConnectedFileExplorerPanel"],"sources":["../../src/panels/FileExplorerPanel.tsx"],"sourcesContent":["import { type DashboardPanelProps } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { getFileStorage, type RootState } from '@deephaven/redux';\nimport FileExplorer, {\n FileExplorerToolbar,\n type FileStorage,\n type FileStorageItem,\n FileUtils,\n NewItemModal,\n isDirectory,\n} from '@deephaven/file-explorer';\nimport React, { type ReactNode } from 'react';\nimport { connect, type ConnectedProps } from 'react-redux';\nimport type { dh } from '@deephaven/jsapi-types';\nimport Panel from './CorePanel';\nimport { NotebookEvent } from '../events';\nimport './FileExplorerPanel.scss';\nimport { getDashboardSessionWrapper } from '../redux';\n\nconst log = Log.module('FileExplorerPanel');\n\ntype StateProps = {\n fileStorage: FileStorage;\n language?: string;\n session?: dh.IdeSession;\n};\n\ntype OwnProps = DashboardPanelProps;\n\nconst mapStateToProps = (state: RootState, ownProps: OwnProps): StateProps => {\n const fileStorage = getFileStorage(state);\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const language = sessionConfig?.type;\n\n return {\n fileStorage,\n language,\n session,\n };\n};\n\nconst connector = connect(mapStateToProps, null, null, { forwardRef: true });\n\nexport type FileExplorerPanelProps = OwnProps &\n StateProps &\n ConnectedProps<typeof connector>;\n\nexport type FileExplorerPanelState = {\n isShown: boolean;\n language?: string;\n session?: dh.IdeSession;\n showCreateFolder: boolean;\n focusedFilePath: string;\n};\n\nfunction isMouseEvent<T>(e: React.SyntheticEvent<T>): e is React.MouseEvent<T> {\n const mouseEvent = e as React.MouseEvent<T>;\n return mouseEvent != null && typeof mouseEvent.button === 'number';\n}\n\n/**\n * Panel for showing a FileExplorer in a Dashboard.\n */\nexport class FileExplorerPanel extends React.Component<\n FileExplorerPanelProps,\n FileExplorerPanelState\n> {\n static COMPONENT = 'FileExplorerPanel';\n\n static TITLE = 'File Explorer';\n\n static handleError(error: Error): void {\n log.error(error);\n }\n\n /**\n * Return true if the event should open a file and focus it, otherwise false\n * @param event The event to check\n */\n static isFocusEvent(event: React.SyntheticEvent): boolean {\n if (isMouseEvent(event)) {\n // If it's not a double click, then it's a preview event\n return event.detail >= 2;\n }\n\n // Keyboard event should always open with focus\n return true;\n }\n\n constructor(props: FileExplorerPanelProps) {\n super(props);\n\n this.handleFileSelect = this.handleFileSelect.bind(this);\n this.handleCopyFile = this.handleCopyFile.bind(this);\n this.handleCreateFile = this.handleCreateFile.bind(this);\n this.handleCreateDirectory = this.handleCreateDirectory.bind(this);\n this.handleCreateDirectoryCancel =\n this.handleCreateDirectoryCancel.bind(this);\n this.handleCreateDirectorySubmit =\n this.handleCreateDirectorySubmit.bind(this);\n this.handleDelete = this.handleDelete.bind(this);\n this.handleRename = this.handleRename.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handleSelectionChange = this.handleSelectionChange.bind(this);\n\n const { session, language } = props;\n this.state = {\n isShown: false,\n language,\n session,\n showCreateFolder: false,\n focusedFilePath: '/',\n };\n }\n\n componentDidMount(): void {\n if (!this.isHidden()) {\n this.setState({ isShown: true });\n }\n }\n\n handleCreateFile(): void {\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n language,\n value: '',\n };\n log.debug('handleCreateFile', session, language, notebookSettings);\n glEventHub.emit(\n NotebookEvent.CREATE_NOTEBOOK,\n session,\n language,\n notebookSettings\n );\n }\n\n handleCreateDirectory(): void {\n this.setState({ showCreateFolder: true });\n }\n\n handleCreateDirectoryCancel(): void {\n log.debug('handleCreateDirectoryCancel');\n this.setState({\n showCreateFolder: false,\n });\n }\n\n handleCreateDirectorySubmit(path: string): void {\n log.debug('handleCreateDirectorySubmit', path);\n this.setState({ showCreateFolder: false });\n const { fileStorage } = this.props;\n fileStorage.createDirectory(path).catch(FileExplorerPanel.handleError);\n }\n\n async handleCopyFile(file: FileStorageItem): Promise<void> {\n const { fileStorage } = this.props;\n if (isDirectory(file)) {\n log.error('Invalid item in handleCopyItem', file);\n return;\n }\n const newName = await FileUtils.getUniqueCopyFileName(\n fileStorage,\n file.filename\n );\n await fileStorage.copyFile(file.filename, newName);\n }\n\n handleDelete(files: FileStorageItem[]): void {\n const { glEventHub } = this.props;\n files.forEach(file => {\n glEventHub.emit(NotebookEvent.CLOSE_FILE, {\n id: file.filename,\n itemName: file.filename,\n });\n });\n }\n\n handleSelectionChange(selectedItems: FileStorageItem[]): void {\n let path = '/';\n if (selectedItems.length === 1) {\n if (selectedItems[0].type === 'directory') {\n path = FileUtils.makePath(selectedItems[0].filename);\n } else {\n path = FileUtils.getPath(selectedItems[0].filename);\n }\n }\n this.setState({ focusedFilePath: path });\n }\n\n handleFileSelect(file: FileStorageItem, event: React.SyntheticEvent): void {\n log.debug('fileSelect', file);\n if (file.type === 'directory') {\n return;\n }\n\n const shouldFocus = FileExplorerPanel.isFocusEvent(event);\n const fileMetadata = { id: file.filename, itemName: file.filename };\n const { glEventHub } = this.props;\n const { session, language } = this.state;\n const notebookSettings = {\n value: null,\n language,\n };\n glEventHub.emit(\n NotebookEvent.SELECT_NOTEBOOK,\n session,\n language,\n notebookSettings,\n fileMetadata,\n shouldFocus\n );\n }\n\n handleRename(oldName: string, newName: string): void {\n const { glEventHub } = this.props;\n log.debug('handleRename', oldName, newName);\n glEventHub.emit(NotebookEvent.RENAME_FILE, oldName, newName);\n }\n\n handleSessionOpened(\n session: dh.IdeSession,\n { language }: { language: string }\n ): void {\n this.setState({\n session,\n language,\n });\n }\n\n handleSessionClosed(): void {\n this.setState({\n session: undefined,\n language: undefined,\n });\n }\n\n handleShow(): void {\n this.setState({ isShown: true });\n }\n\n isHidden(): boolean {\n const { glContainer } = this.props;\n const { isHidden } = glContainer;\n return isHidden;\n }\n\n render(): ReactNode {\n const { fileStorage, glContainer, glEventHub } = this.props;\n const { isShown, showCreateFolder, focusedFilePath } = this.state;\n return (\n <Panel\n className=\"file-explorer-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n onShow={this.handleShow}\n >\n <FileExplorerToolbar\n createFile={this.handleCreateFile}\n createFolder={this.handleCreateDirectory}\n />\n {isShown && (\n <FileExplorer\n isMultiSelect\n storage={fileStorage}\n onCopy={this.handleCopyFile}\n onCreateFile={this.handleCreateFile}\n onCreateFolder={this.handleCreateDirectory}\n onDelete={this.handleDelete}\n onRename={this.handleRename}\n onSelect={this.handleFileSelect}\n onSelectionChange={this.handleSelectionChange}\n />\n )}\n <NewItemModal\n isOpen={showCreateFolder}\n type=\"directory\"\n title=\"Create New Folder\"\n storage={fileStorage}\n onSubmit={this.handleCreateDirectorySubmit}\n onCancel={this.handleCreateDirectoryCancel}\n defaultValue={focusedFilePath}\n />\n </Panel>\n );\n }\n}\n\nconst ConnectedFileExplorerPanel = connector(FileExplorerPanel);\n\nexport default ConnectedFileExplorerPanel;\n"],"mappings":"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"}
|
|
@@ -80,9 +80,9 @@ export declare class FilterSetManagerPanel extends Component<FilterSetManagerPan
|
|
|
80
80
|
restoreInputFilterState(panel: PanelComponent | undefined, state: InputFilterPanelState): void;
|
|
81
81
|
render(): ReactElement;
|
|
82
82
|
}
|
|
83
|
-
declare const ConnectedFilterSetManagerPanel: import("react-redux").ConnectedComponent<typeof FilterSetManagerPanel, import("react-redux").Omit<Pick<FilterSetManagerPanelProps, "
|
|
83
|
+
declare const ConnectedFilterSetManagerPanel: import("react-redux").ConnectedComponent<typeof FilterSetManagerPanel, import("react-redux").Omit<Pick<FilterSetManagerPanelProps, "glEventHub" | "glContainer" | "localDashboardId" | "panelTableMap" | "filterSets" | "dashboardOpenedPanelMap" | "setDashboardFilterSets"> & Partial<Pick<FilterSetManagerPanelProps, "panelState">> & Partial<Pick<{
|
|
84
84
|
panelState: null;
|
|
85
|
-
}, never>>, "
|
|
85
|
+
}, never>>, "panelTableMap" | "filterSets" | "dashboardOpenedPanelMap" | "setDashboardFilterSets"> & {
|
|
86
86
|
localDashboardId: string;
|
|
87
87
|
}>;
|
|
88
88
|
export default ConnectedFilterSetManagerPanel;
|
|
@@ -8,7 +8,7 @@ import { connect } from 'react-redux';
|
|
|
8
8
|
import { getOpenedPanelMapForDashboard, LayoutUtils } from '@deephaven/dashboard';
|
|
9
9
|
import Log from '@deephaven/log';
|
|
10
10
|
import { getFilterSetsForDashboard, getInputFiltersForDashboard, getTableMapForDashboard, setDashboardFilterSets as setDashboardFilterSetsAction } from "../redux/index.js";
|
|
11
|
-
import Panel from "./
|
|
11
|
+
import Panel from "./CorePanel.js";
|
|
12
12
|
import FilterSetManager from "./FilterSetManager.js";
|
|
13
13
|
import { IrisGridPanel } from "./IrisGridPanel.js";
|
|
14
14
|
import DropdownFilterPanel from "./DropdownFilterPanel.js";
|