@deephaven/dashboard-core-plugins 0.17.1-beta.2 → 0.17.1-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.d.ts +1 -1
- package/dist/panels/CommandHistoryPanel.d.ts.map +1 -1
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.d.ts +1 -1
- package/dist/panels/ConsolePanel.d.ts.map +1 -1
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts.map +1 -1
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.d.ts +1 -1
- package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.d.ts +1 -1
- package/dist/panels/InputFilterPanel.d.ts.map +1 -1
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.d.ts +1 -1
- package/dist/panels/IrisGridPanel.d.ts.map +1 -1
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/LogPanel.d.ts +1 -1
- package/dist/panels/LogPanel.d.ts.map +1 -1
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts +1 -1
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/package.json +18 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerOverlayContent.js","names":["React","Component","classNames","ContextActions","GLOBAL_SHORTCUTS","LayoutUtils","Log","isLinkableFromPanel","LinkerLink","log","module","LinkerOverlayContent","constructor","props","handleMouseMove","bind","handleEscapePressed","state","mouseX","undefined","mouseY","componentDidMount","window","addEventListener","componentDidCatch","error","info","componentWillUnmount","removeEventListener","getPointFromLinkPoint","linkPoint","panelManager","panelId","columnName","panel","getOpenedPanelById","Error","coordinate","getCoordinateForColumn","e","glContainer","getContainerByPanelId","getTabPoint","event","setState","clientX","clientY","onCancel","render","disabled","links","messageText","onLinkDeleted","onAllLinksDeleted","onDone","visibleLinks","map","link","id","type","isReversed","start","end","x1","y1","x2","y2","tmpX","tmpY","className","interactive","filter","item","action","shortcut","LINKER_CLOSE","isGlobal"],"sources":["../../src/linker/LinkerOverlayContent.tsx"],"sourcesContent":["import React, { Component, ErrorInfo } from 'react';\nimport classNames from 'classnames';\nimport { ContextActions, GLOBAL_SHORTCUTS } from '@deephaven/components';\nimport { LayoutUtils, PanelManager } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport GoldenLayout from '@deephaven/golden-layout';\nimport {\n isLinkableFromPanel,\n Link,\n LinkerCoordinate,\n LinkPoint,\n} from './LinkerUtils';\nimport LinkerLink from './LinkerLink';\nimport './LinkerOverlayContent.scss';\n\nconst log = Log.module('LinkerOverlayContent');\n\nexport type VisibleLink = {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n id: string;\n className: string;\n};\n\nexport type LinkerOverlayContentProps = {\n disabled?: boolean;\n links: Link[];\n messageText: string;\n onLinkDeleted: (linkId: string) => void;\n onAllLinksDeleted: () => void;\n onCancel: () => void;\n onDone: () => void;\n panelManager: PanelManager;\n};\n\nexport type LinkerOverlayContentState = {\n mouseX?: number;\n mouseY?: number;\n};\n\nexport class LinkerOverlayContent extends Component<\n LinkerOverlayContentProps,\n LinkerOverlayContentState\n> {\n static defaultProps = {\n disabled: 'false',\n };\n\n constructor(props: LinkerOverlayContentProps) {\n super(props);\n\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleEscapePressed = this.handleEscapePressed.bind(this);\n\n this.state = {\n mouseX: undefined,\n mouseY: undefined,\n };\n }\n\n componentDidMount(): void {\n window.addEventListener('mousemove', this.handleMouseMove, true);\n }\n\n // eslint-disable-next-line react/sort-comp\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('mousemove', this.handleMouseMove, true);\n }\n\n /** Gets the on screen points for a link start or end spec */\n getPointFromLinkPoint(linkPoint: LinkPoint): LinkerCoordinate {\n const { panelManager } = this.props;\n const { panelId, columnName } = linkPoint;\n const panel = panelManager.getOpenedPanelById(panelId);\n if (panel != null) {\n if (!isLinkableFromPanel(panel)) {\n throw new Error(\n `Panel does not have getCoordinateForColumn method: ${panelId}`\n );\n }\n try {\n // TODO: remove try/catch when IDS-7371 is fixed.\n // getCoordinateForColumn throws an exception when accessing\n // columns on a model while it reconnects\n const coordinate = panel.getCoordinateForColumn(columnName);\n if (coordinate != null) {\n return coordinate;\n }\n } catch (e) {\n log.error('Could not get coordinate for column', columnName, panel);\n }\n }\n // Fallback to panel container if the panel itself\n // crashed, unmounted, and removed from openedPanelMap.\n const glContainer = panelManager.getContainerByPanelId(panelId);\n if (glContainer == null) {\n throw new Error(`Unable to find panel container for id: ${panelId}`);\n }\n return LayoutUtils.getTabPoint(\n (glContainer as unknown) as GoldenLayout.Container\n ) as LinkerCoordinate;\n }\n\n handleMouseMove(event: MouseEvent): void {\n this.setState({\n mouseX: event.clientX,\n mouseY: event.clientY,\n });\n }\n\n handleEscapePressed(): void {\n const { onCancel } = this.props;\n onCancel();\n }\n\n render(): JSX.Element {\n const {\n disabled,\n links,\n messageText,\n onLinkDeleted,\n onAllLinksDeleted,\n onDone,\n } = this.props;\n\n const { mouseX, mouseY } = this.state;\n const visibleLinks = links\n .map(link => {\n try {\n const { id, type, isReversed, start, end } = link;\n let [x1, y1] = this.getPointFromLinkPoint(start);\n let x2 = mouseX ?? x1;\n let y2 = mouseY ?? y1;\n if (end != null) {\n [x2, y2] = this.getPointFromLinkPoint(end);\n }\n if (isReversed) {\n const [tmpX, tmpY] = [x1, y1];\n [x1, y1] = [x2, y2];\n [x2, y2] = [tmpX, tmpY];\n }\n const className = classNames(\n 'linker-link',\n { disabled },\n { 'link-filter-source': type === 'filterSource' },\n { 'link-invalid': type === 'invalid' },\n { interactive: link.end == null }\n );\n return { x1, y1, x2, y2, id, className };\n } catch (error) {\n log.error('Unable to get point for link', link, error);\n return null;\n }\n })\n .filter(item => item != null) as VisibleLink[];\n\n return (\n <div className=\"linker-overlay\">\n <svg>\n {visibleLinks.map(({ x1, y1, x2, y2, id, className }) => (\n <LinkerLink\n className={className}\n id={id}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n key={id}\n onClick={onLinkDeleted}\n />\n ))}\n </svg>\n <div className=\"linker-toast-dialog\">\n <div className=\"toast-body\">{messageText}</div>\n <div className=\"toast-footer\">\n <button\n className=\"btn btn-outline-primary\"\n onClick={onAllLinksDeleted}\n type=\"button\"\n >\n Clear All\n </button>\n <button className=\"btn btn-primary\" onClick={onDone} type=\"button\">\n Done\n </button>\n </div>\n </div>\n <ContextActions\n actions={[\n {\n action: this.handleEscapePressed,\n shortcut: GLOBAL_SHORTCUTS.LINKER_CLOSE,\n isGlobal: true,\n },\n ]}\n />\n </div>\n );\n }\n}\n\nexport default LinkerOverlayContent;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LinkerOverlayContent.js","names":["React","Component","classNames","ContextActions","GLOBAL_SHORTCUTS","LayoutUtils","Log","isLinkableFromPanel","LinkerLink","log","module","LinkerOverlayContent","constructor","props","handleMouseMove","bind","handleEscapePressed","state","mouseX","undefined","mouseY","componentDidMount","window","addEventListener","componentDidCatch","error","info","componentWillUnmount","removeEventListener","getPointFromLinkPoint","linkPoint","panelManager","panelId","columnName","panel","getOpenedPanelById","Error","coordinate","getCoordinateForColumn","e","glContainer","getContainerByPanelId","getTabPoint","event","setState","clientX","clientY","onCancel","render","disabled","links","messageText","onLinkDeleted","onAllLinksDeleted","onDone","visibleLinks","map","link","id","type","isReversed","start","end","x1","y1","x2","y2","tmpX","tmpY","className","interactive","filter","item","action","shortcut","LINKER_CLOSE","isGlobal"],"sources":["../../src/linker/LinkerOverlayContent.tsx"],"sourcesContent":["import React, { Component, ErrorInfo } from 'react';\nimport classNames from 'classnames';\nimport { ContextActions, GLOBAL_SHORTCUTS } from '@deephaven/components';\nimport { LayoutUtils, PanelManager } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type GoldenLayout from '@deephaven/golden-layout';\nimport {\n isLinkableFromPanel,\n Link,\n LinkerCoordinate,\n LinkPoint,\n} from './LinkerUtils';\nimport LinkerLink from './LinkerLink';\nimport './LinkerOverlayContent.scss';\n\nconst log = Log.module('LinkerOverlayContent');\n\nexport type VisibleLink = {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n id: string;\n className: string;\n};\n\nexport type LinkerOverlayContentProps = {\n disabled?: boolean;\n links: Link[];\n messageText: string;\n onLinkDeleted: (linkId: string) => void;\n onAllLinksDeleted: () => void;\n onCancel: () => void;\n onDone: () => void;\n panelManager: PanelManager;\n};\n\nexport type LinkerOverlayContentState = {\n mouseX?: number;\n mouseY?: number;\n};\n\nexport class LinkerOverlayContent extends Component<\n LinkerOverlayContentProps,\n LinkerOverlayContentState\n> {\n static defaultProps = {\n disabled: 'false',\n };\n\n constructor(props: LinkerOverlayContentProps) {\n super(props);\n\n this.handleMouseMove = this.handleMouseMove.bind(this);\n this.handleEscapePressed = this.handleEscapePressed.bind(this);\n\n this.state = {\n mouseX: undefined,\n mouseY: undefined,\n };\n }\n\n componentDidMount(): void {\n window.addEventListener('mousemove', this.handleMouseMove, true);\n }\n\n // eslint-disable-next-line react/sort-comp\n componentDidCatch(error: Error, info: ErrorInfo): void {\n log.error('componentDidCatch', error, info);\n }\n\n componentWillUnmount(): void {\n window.removeEventListener('mousemove', this.handleMouseMove, true);\n }\n\n /** Gets the on screen points for a link start or end spec */\n getPointFromLinkPoint(linkPoint: LinkPoint): LinkerCoordinate {\n const { panelManager } = this.props;\n const { panelId, columnName } = linkPoint;\n const panel = panelManager.getOpenedPanelById(panelId);\n if (panel != null) {\n if (!isLinkableFromPanel(panel)) {\n throw new Error(\n `Panel does not have getCoordinateForColumn method: ${panelId}`\n );\n }\n try {\n // TODO: remove try/catch when IDS-7371 is fixed.\n // getCoordinateForColumn throws an exception when accessing\n // columns on a model while it reconnects\n const coordinate = panel.getCoordinateForColumn(columnName);\n if (coordinate != null) {\n return coordinate;\n }\n } catch (e) {\n log.error('Could not get coordinate for column', columnName, panel);\n }\n }\n // Fallback to panel container if the panel itself\n // crashed, unmounted, and removed from openedPanelMap.\n const glContainer = panelManager.getContainerByPanelId(panelId);\n if (glContainer == null) {\n throw new Error(`Unable to find panel container for id: ${panelId}`);\n }\n return LayoutUtils.getTabPoint(\n (glContainer as unknown) as GoldenLayout.Container\n ) as LinkerCoordinate;\n }\n\n handleMouseMove(event: MouseEvent): void {\n this.setState({\n mouseX: event.clientX,\n mouseY: event.clientY,\n });\n }\n\n handleEscapePressed(): void {\n const { onCancel } = this.props;\n onCancel();\n }\n\n render(): JSX.Element {\n const {\n disabled,\n links,\n messageText,\n onLinkDeleted,\n onAllLinksDeleted,\n onDone,\n } = this.props;\n\n const { mouseX, mouseY } = this.state;\n const visibleLinks = links\n .map(link => {\n try {\n const { id, type, isReversed, start, end } = link;\n let [x1, y1] = this.getPointFromLinkPoint(start);\n let x2 = mouseX ?? x1;\n let y2 = mouseY ?? y1;\n if (end != null) {\n [x2, y2] = this.getPointFromLinkPoint(end);\n }\n if (isReversed) {\n const [tmpX, tmpY] = [x1, y1];\n [x1, y1] = [x2, y2];\n [x2, y2] = [tmpX, tmpY];\n }\n const className = classNames(\n 'linker-link',\n { disabled },\n { 'link-filter-source': type === 'filterSource' },\n { 'link-invalid': type === 'invalid' },\n { interactive: link.end == null }\n );\n return { x1, y1, x2, y2, id, className };\n } catch (error) {\n log.error('Unable to get point for link', link, error);\n return null;\n }\n })\n .filter(item => item != null) as VisibleLink[];\n\n return (\n <div className=\"linker-overlay\">\n <svg>\n {visibleLinks.map(({ x1, y1, x2, y2, id, className }) => (\n <LinkerLink\n className={className}\n id={id}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n key={id}\n onClick={onLinkDeleted}\n />\n ))}\n </svg>\n <div className=\"linker-toast-dialog\">\n <div className=\"toast-body\">{messageText}</div>\n <div className=\"toast-footer\">\n <button\n className=\"btn btn-outline-primary\"\n onClick={onAllLinksDeleted}\n type=\"button\"\n >\n Clear All\n </button>\n <button className=\"btn btn-primary\" onClick={onDone} type=\"button\">\n Done\n </button>\n </div>\n </div>\n <ContextActions\n actions={[\n {\n action: this.handleEscapePressed,\n shortcut: GLOBAL_SHORTCUTS.LINKER_CLOSE,\n isGlobal: true,\n },\n ]}\n />\n </div>\n );\n }\n}\n\nexport default LinkerOverlayContent;\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAA4C,OAA5C;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,cAAT,EAAyBC,gBAAzB,QAAiD,uBAAjD;AACA,SAASC,WAAT,QAA0C,sBAA1C;AACA,OAAOC,GAAP,MAAgB,gBAAhB;SAGEC,mB;OAKKC,U;;AAGP,IAAMC,GAAG,GAAGH,GAAG,CAACI,MAAJ,CAAW,sBAAX,CAAZ;AA2BA,OAAO,MAAMC,oBAAN,SAAmCV,SAAnC,CAGL;EAKAW,WAAW,CAACC,KAAD,EAAmC;IAC5C,MAAMA,KAAN;IAEA,KAAKC,eAAL,GAAuB,KAAKA,eAAL,CAAqBC,IAArB,CAA0B,IAA1B,CAAvB;IACA,KAAKC,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBD,IAAzB,CAA8B,IAA9B,CAA3B;IAEA,KAAKE,KAAL,GAAa;MACXC,MAAM,EAAEC,SADG;MAEXC,MAAM,EAAED;IAFG,CAAb;EAID;;EAEDE,iBAAiB,GAAS;IACxBC,MAAM,CAACC,gBAAP,CAAwB,WAAxB,EAAqC,KAAKT,eAA1C,EAA2D,IAA3D;EACD,CAnBD,CAqBA;;;EACAU,iBAAiB,CAACC,KAAD,EAAeC,IAAf,EAAsC;IACrDjB,GAAG,CAACgB,KAAJ,CAAU,mBAAV,EAA+BA,KAA/B,EAAsCC,IAAtC;EACD;;EAEDC,oBAAoB,GAAS;IAC3BL,MAAM,CAACM,mBAAP,CAA2B,WAA3B,EAAwC,KAAKd,eAA7C,EAA8D,IAA9D;EACD;EAED;;;EACAe,qBAAqB,CAACC,SAAD,EAAyC;IAC5D,IAAM;MAAEC;IAAF,IAAmB,KAAKlB,KAA9B;IACA,IAAM;MAAEmB,OAAF;MAAWC;IAAX,IAA0BH,SAAhC;IACA,IAAMI,KAAK,GAAGH,YAAY,CAACI,kBAAb,CAAgCH,OAAhC,CAAd;;IACA,IAAIE,KAAK,IAAI,IAAb,EAAmB;MACjB,IAAI,CAAC3B,mBAAmB,CAAC2B,KAAD,CAAxB,EAAiC;QAC/B,MAAM,IAAIE,KAAJ,8DACkDJ,OADlD,EAAN;MAGD;;MACD,IAAI;QACF;QACA;QACA;QACA,IAAMK,UAAU,GAAGH,KAAK,CAACI,sBAAN,CAA6BL,UAA7B,CAAnB;;QACA,IAAII,UAAU,IAAI,IAAlB,EAAwB;UACtB,OAAOA,UAAP;QACD;MACF,CARD,CAQE,OAAOE,CAAP,EAAU;QACV9B,GAAG,CAACgB,KAAJ,CAAU,qCAAV,EAAiDQ,UAAjD,EAA6DC,KAA7D;MACD;IACF,CArB2D,CAsB5D;IACA;;;IACA,IAAMM,WAAW,GAAGT,YAAY,CAACU,qBAAb,CAAmCT,OAAnC,CAApB;;IACA,IAAIQ,WAAW,IAAI,IAAnB,EAAyB;MACvB,MAAM,IAAIJ,KAAJ,kDAAoDJ,OAApD,EAAN;IACD;;IACD,OAAO3B,WAAW,CAACqC,WAAZ,CACJF,WADI,CAAP;EAGD;;EAED1B,eAAe,CAAC6B,KAAD,EAA0B;IACvC,KAAKC,QAAL,CAAc;MACZ1B,MAAM,EAAEyB,KAAK,CAACE,OADF;MAEZzB,MAAM,EAAEuB,KAAK,CAACG;IAFF,CAAd;EAID;;EAED9B,mBAAmB,GAAS;IAC1B,IAAM;MAAE+B;IAAF,IAAe,KAAKlC,KAA1B;IACAkC,QAAQ;EACT;;EAEDC,MAAM,GAAgB;IACpB,IAAM;MACJC,QADI;MAEJC,KAFI;MAGJC,WAHI;MAIJC,aAJI;MAKJC,iBALI;MAMJC;IANI,IAOF,KAAKzC,KAPT;IASA,IAAM;MAAEK,MAAF;MAAUE;IAAV,IAAqB,KAAKH,KAAhC;IACA,IAAMsC,YAAY,GAAGL,KAAK,CACvBM,GADkB,CACdC,IAAI,IAAI;MACX,IAAI;QACF,IAAM;UAAEC,EAAF;UAAMC,IAAN;UAAYC,UAAZ;UAAwBC,KAAxB;UAA+BC;QAA/B,IAAuCL,IAA7C;QACA,IAAI,CAACM,EAAD,EAAKC,EAAL,IAAW,KAAKnC,qBAAL,CAA2BgC,KAA3B,CAAf;QACA,IAAII,EAAE,GAAG/C,MAAH,aAAGA,MAAH,cAAGA,MAAH,GAAa6C,EAAnB;QACA,IAAIG,EAAE,GAAG9C,MAAH,aAAGA,MAAH,cAAGA,MAAH,GAAa4C,EAAnB;;QACA,IAAIF,GAAG,IAAI,IAAX,EAAiB;UACf,CAACG,EAAD,EAAKC,EAAL,IAAW,KAAKrC,qBAAL,CAA2BiC,GAA3B,CAAX;QACD;;QACD,IAAIF,UAAJ,EAAgB;UACd,IAAM,CAACO,IAAD,EAAOC,IAAP,IAAe,CAACL,EAAD,EAAKC,EAAL,CAArB;UACA,CAACD,EAAD,EAAKC,EAAL,IAAW,CAACC,EAAD,EAAKC,EAAL,CAAX;UACA,CAACD,EAAD,EAAKC,EAAL,IAAW,CAACC,IAAD,EAAOC,IAAP,CAAX;QACD;;QACD,IAAMC,SAAS,GAAGnE,UAAU,CAC1B,aAD0B,EAE1B;UAAE+C;QAAF,CAF0B,EAG1B;UAAE,sBAAsBU,IAAI,KAAK;QAAjC,CAH0B,EAI1B;UAAE,gBAAgBA,IAAI,KAAK;QAA3B,CAJ0B,EAK1B;UAAEW,WAAW,EAAEb,IAAI,CAACK,GAAL,IAAY;QAA3B,CAL0B,CAA5B;QAOA,OAAO;UAAEC,EAAF;UAAMC,EAAN;UAAUC,EAAV;UAAcC,EAAd;UAAkBR,EAAlB;UAAsBW;QAAtB,CAAP;MACD,CArBD,CAqBE,OAAO5C,KAAP,EAAc;QACdhB,GAAG,CAACgB,KAAJ,CAAU,8BAAV,EAA0CgC,IAA1C,EAAgDhC,KAAhD;QACA,OAAO,IAAP;MACD;IACF,CA3BkB,EA4BlB8C,MA5BkB,CA4BXC,IAAI,IAAIA,IAAI,IAAI,IA5BL,CAArB;IA8BA,oBACE;MAAK,SAAS,EAAC;IAAf,gBACE,iCACGjB,YAAY,CAACC,GAAb,CAAiB;MAAA,IAAC;QAAEO,EAAF;QAAMC,EAAN;QAAUC,EAAV;QAAcC,EAAd;QAAkBR,EAAlB;QAAsBW;MAAtB,CAAD;MAAA,oBAChB,oBAAC,UAAD;QACE,SAAS,EAAEA,SADb;QAEE,EAAE,EAAEX,EAFN;QAGE,EAAE,EAAEK,EAHN;QAIE,EAAE,EAAEC,EAJN;QAKE,EAAE,EAAEC,EALN;QAME,EAAE,EAAEC,EANN;QAOE,GAAG,EAAER,EAPP;QAQE,OAAO,EAAEN;MARX,EADgB;IAAA,CAAjB,CADH,CADF,eAeE;MAAK,SAAS,EAAC;IAAf,gBACE;MAAK,SAAS,EAAC;IAAf,GAA6BD,WAA7B,CADF,eAEE;MAAK,SAAS,EAAC;IAAf,gBACE;MACE,SAAS,EAAC,yBADZ;MAEE,OAAO,EAAEE,iBAFX;MAGE,IAAI,EAAC;IAHP,eADF,eAQE;MAAQ,SAAS,EAAC,iBAAlB;MAAoC,OAAO,EAAEC,MAA7C;MAAqD,IAAI,EAAC;IAA1D,UARF,CAFF,CAfF,eA8BE,oBAAC,cAAD;MACE,OAAO,EAAE,CACP;QACEmB,MAAM,EAAE,KAAKzD,mBADf;QAEE0D,QAAQ,EAAEtE,gBAAgB,CAACuE,YAF7B;QAGEC,QAAQ,EAAE;MAHZ,CADO;IADX,EA9BF,CADF;EA0CD;;AA/JD;;gBAHWjE,oB,kBAIW;EACpBsC,QAAQ,EAAE;AADU,C;;AAiKxB,eAAetC,oBAAf"}
|
|
@@ -2,7 +2,7 @@ import React, { Component, RefObject } from 'react';
|
|
|
2
2
|
import { ContextAction } from '@deephaven/components';
|
|
3
3
|
import { CommandHistory, CommandHistoryStorage, CommandHistorySettings, CommandHistoryTable } from '@deephaven/console';
|
|
4
4
|
import { Pending } from '@deephaven/utils';
|
|
5
|
-
import { Container, EventEmitter } from '@deephaven/golden-layout';
|
|
5
|
+
import type { Container, EventEmitter } from '@deephaven/golden-layout';
|
|
6
6
|
import { IdeSession } from '@deephaven/jsapi-shim';
|
|
7
7
|
import './CommandHistoryPanel.scss';
|
|
8
8
|
interface CommandHistoryPanelProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHistoryPanel.d.ts","sourceRoot":"","sources":["../../src/panels/CommandHistoryPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAkB,MAAM,uBAAuB,CAAC;AACtE,OAAO,EACL,cAAc,EACd,qBAAqB,EAErB,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAiB,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"CommandHistoryPanel.d.ts","sourceRoot":"","sources":["../../src/panels/CommandHistoryPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAkB,MAAM,uBAAuB,CAAC;AACtE,OAAO,EACL,cAAc,EACd,qBAAqB,EAErB,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAiB,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,4BAA4B,CAAC;AAMpC,UAAU,wBAAwB;IAChC,WAAW,EAAE,SAAS,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C;AAED,UAAU,wBAAwB;IAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAED,cAAM,mBAAoB,SAAQ,SAAS,CACzC,wBAAwB,EACxB,wBAAwB,CACzB;IACC,MAAM,CAAC,SAAS,SAAyB;IAEzC,MAAM,CAAC,KAAK,SAAqB;IAEjC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO;gBAIrB,KAAK,EAAE,wBAAwB;IA6B3C,iBAAiB,IAAI,IAAI;IAQzB,oBAAoB,IAAI,IAAI;IAO5B,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IAErC,OAAO,EAAE,OAAO,CAAC;IAEjB,kBAAkB,IAAI,IAAI;IAM1B,mBAAmB,CACjB,OAAO,EAAE,UAAU,EACnB,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAC/D,IAAI;IAaP,mBAAmB;IASnB,oBAAoB,CAClB,QAAQ,EAAE,sBAAsB,EAChC,gBAAgB,UAAQ;IAmB1B,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,UAAO,EAAE,OAAO,UAAQ;IAMlE,SAAS;IAgBT,MAAM;CAiCP;;;;AAwBD,wBAEE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHistoryPanel.js","names":["React","Component","connect","ContextActions","CommandHistory","SHORTCUTS","Log","getCommandHistoryStorage","assertNotNull","Pending","ConsoleEvent","NotebookEvent","Panel","getDashboardSessionWrapper","log","module","CommandHistoryPanel","handleError","error","constructor","props","handleFocusHistory","bind","handleSessionOpened","handleSessionClosed","handleSendToConsole","handleSendToNotebook","container","createRef","pending","session","sessionId","language","state","panelState","contextActions","action","shortcut","COMMAND_HISTORY","FOCUS_HISTORY","componentDidMount","glEventHub","on","loadTable","componentWillUnmount","off","cancel","current","focus","setState","undefined","table","settings","forceNewNotebook","debug","emit","CREATE_NOTEBOOK","SEND_TO_NOTEBOOK","command","execute","SEND_COMMAND","commandHistoryStorage","add","getTable","Date","now","resolved","close","then","catch","render","glContainer","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","type","id","forwardRef"],"sources":["../../src/panels/CommandHistoryPanel.tsx"],"sourcesContent":["import React, { Component, RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport { ContextAction, ContextActions } from '@deephaven/components';\nimport {\n CommandHistory,\n CommandHistoryStorage,\n SHORTCUTS,\n CommandHistorySettings,\n CommandHistoryTable,\n} from '@deephaven/console';\nimport Log from '@deephaven/log';\nimport { getCommandHistoryStorage, RootState } from '@deephaven/redux';\nimport { assertNotNull, Pending } from '@deephaven/utils';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport './CommandHistoryPanel.scss';\nimport Panel from './Panel';\nimport { getDashboardSessionWrapper } from '../redux';\n\nconst log = Log.module('CommandHistoryPanel');\n\ninterface CommandHistoryPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState?: Record<string, never>;\n session?: IdeSession;\n sessionId?: string;\n language?: string;\n commandHistoryStorage: CommandHistoryStorage;\n}\n\ninterface CommandHistoryPanelState {\n panelState: Record<string, never>;\n session?: IdeSession;\n sessionId?: string;\n language?: string;\n contextActions: ContextAction[];\n table?: CommandHistoryTable;\n}\n\nclass CommandHistoryPanel extends Component<\n CommandHistoryPanelProps,\n CommandHistoryPanelState\n> {\n static COMPONENT = 'CommandHistoryPanel';\n\n static TITLE = 'Command History';\n\n static handleError(error: unknown) {\n log.error(error);\n }\n\n constructor(props: CommandHistoryPanelProps) {\n super(props);\n\n this.handleFocusHistory = this.handleFocusHistory.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSendToConsole = this.handleSendToConsole.bind(this);\n this.handleSendToNotebook = this.handleSendToNotebook.bind(this);\n\n this.container = React.createRef();\n this.pending = new Pending();\n\n const { session, sessionId, language } = props;\n\n this.state = {\n // eslint-disable-next-line react/no-unused-state\n panelState: {},\n session,\n sessionId,\n language,\n contextActions: [\n {\n action: this.handleFocusHistory,\n shortcut: SHORTCUTS.COMMAND_HISTORY.FOCUS_HISTORY,\n },\n ],\n };\n }\n\n componentDidMount(): void {\n const { glEventHub, session } = this.props;\n glEventHub.on(ConsoleEvent.FOCUS_HISTORY, this.handleFocusHistory);\n if (session != null) {\n this.loadTable();\n }\n }\n\n componentWillUnmount(): void {\n const { glEventHub } = this.props;\n glEventHub.off(ConsoleEvent.FOCUS_HISTORY, this.handleFocusHistory);\n\n this.pending.cancel();\n }\n\n container: RefObject<CommandHistory>;\n\n pending: Pending;\n\n handleFocusHistory(): void {\n if (this.container.current) {\n this.container.current.focus();\n }\n }\n\n handleSessionOpened(\n session: IdeSession,\n { language, sessionId }: { language: string; sessionId: string }\n ): void {\n this.setState(\n {\n session,\n sessionId,\n language,\n },\n () => {\n this.loadTable();\n }\n );\n }\n\n handleSessionClosed() {\n this.pending.cancel();\n this.setState({\n session: undefined,\n language: undefined,\n table: undefined,\n });\n }\n\n handleSendToNotebook(\n settings: CommandHistorySettings,\n forceNewNotebook = false\n ) {\n const { session, language } = this.state;\n log.debug('handleSendToNotebook', session, settings);\n if (!session) {\n log.error('Session is not connected.');\n return;\n }\n const { glEventHub } = this.props;\n glEventHub.emit(\n forceNewNotebook\n ? NotebookEvent.CREATE_NOTEBOOK\n : NotebookEvent.SEND_TO_NOTEBOOK,\n session,\n language,\n settings\n );\n }\n\n handleSendToConsole(command: string, focus = true, execute = false) {\n log.debug('handleSendToConsole', command);\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, focus, execute);\n }\n\n loadTable() {\n const { commandHistoryStorage } = this.props;\n const { language, sessionId } = this.state;\n assertNotNull(language);\n assertNotNull(sessionId);\n this.pending\n .add(\n commandHistoryStorage.getTable(language, sessionId, Date.now()),\n resolved => resolved.close()\n )\n .then(table => {\n this.setState({ table });\n })\n .catch(CommandHistoryPanel.handleError);\n }\n\n render() {\n const { glContainer, glEventHub, commandHistoryStorage } = this.props;\n const { language, contextActions, table } = this.state;\n return (\n <Panel\n className=\"command-history-pane\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n >\n {!table && (\n <div className=\"command-history-disconnected-message\">\n Waiting for console connection\n </div>\n )}\n {table && language && (\n <>\n <CommandHistory\n ref={this.container}\n language={language}\n sendToNotebook={this.handleSendToNotebook}\n sendToConsole={this.handleSendToConsole}\n table={table}\n commandHistoryStorage={commandHistoryStorage}\n />\n <ContextActions actions={contextActions} />\n </>\n )}\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\n const commandHistoryStorage = getCommandHistoryStorage(\n state\n ) as CommandHistoryStorage;\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: language, id: sessionId } = sessionConfig ?? {};\n\n return {\n commandHistoryStorage,\n language,\n session,\n sessionId,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n CommandHistoryPanel\n);\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAA4C,OAA5C;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,SAAwBC,cAAxB,QAA8C,uBAA9C;AACA,SACEC,cADF,EAGEC,SAHF,QAMO,oBANP;AAOA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,wBAAT,QAAoD,kBAApD;AACA,SAASC,aAAT,EAAwBC,OAAxB,QAAuC,kBAAvC;SAGSC,Y,EAAcC,a;;OAEhBC,K;SACEC,0B;AAET,IAAMC,GAAG,GAAGR,GAAG,CAACS,MAAJ,CAAW,qBAAX,CAAZ;;AAqBA,MAAMC,mBAAN,SAAkCf,SAAlC,CAGE;EAKkB,OAAXgB,WAAW,CAACC,KAAD,EAAiB;IACjCJ,GAAG,CAACI,KAAJ,CAAUA,KAAV;EACD;;EAEDC,WAAW,CAACC,KAAD,EAAkC;IAC3C,MAAMA,KAAN;;IAD2C;;IAAA;;IAG3C,KAAKC,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBC,IAAxB,CAA6B,IAA7B,CAA1B;IACA,KAAKC,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBD,IAAzB,CAA8B,IAA9B,CAA3B;IACA,KAAKE,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBF,IAAzB,CAA8B,IAA9B,CAA3B;IACA,KAAKG,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBH,IAAzB,CAA8B,IAA9B,CAA3B;IACA,KAAKI,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BJ,IAA1B,CAA+B,IAA/B,CAA5B;IAEA,KAAKK,SAAL,gBAAiB3B,KAAK,CAAC4B,SAAN,EAAjB;IACA,KAAKC,OAAL,GAAe,IAAIpB,OAAJ,EAAf;IAEA,IAAM;MAAEqB,OAAF;MAAWC,SAAX;MAAsBC;IAAtB,IAAmCZ,KAAzC;IAEA,KAAKa,KAAL,GAAa;MACX;MACAC,UAAU,EAAE,EAFD;MAGXJ,OAHW;MAIXC,SAJW;MAKXC,QALW;MAMXG,cAAc,EAAE,CACd;QACEC,MAAM,EAAE,KAAKf,kBADf;QAEEgB,QAAQ,EAAEhC,SAAS,CAACiC,eAAV,CAA0BC;MAFtC,CADc;IANL,CAAb;EAaD;;EAEDC,iBAAiB,GAAS;IACxB,IAAM;MAAEC,UAAF;MAAcX;IAAd,IAA0B,KAAKV,KAArC;IACAqB,UAAU,CAACC,EAAX,CAAchC,YAAY,CAAC6B,aAA3B,EAA0C,KAAKlB,kBAA/C;;IACA,IAAIS,OAAO,IAAI,IAAf,EAAqB;MACnB,KAAKa,SAAL;IACD;EACF;;EAEDC,oBAAoB,GAAS;IAC3B,IAAM;MAAEH;IAAF,IAAiB,KAAKrB,KAA5B;IACAqB,UAAU,CAACI,GAAX,CAAenC,YAAY,CAAC6B,aAA5B,EAA2C,KAAKlB,kBAAhD;IAEA,KAAKQ,OAAL,CAAaiB,MAAb;EACD;;EAMDzB,kBAAkB,GAAS;IACzB,IAAI,KAAKM,SAAL,CAAeoB,OAAnB,EAA4B;MAC1B,KAAKpB,SAAL,CAAeoB,OAAf,CAAuBC,KAAvB;IACD;EACF;;EAEDzB,mBAAmB,CACjBO,OADiB,QAGX;IAAA,IADN;MAAEE,QAAF;MAAYD;IAAZ,CACM;IACN,KAAKkB,QAAL,CACE;MACEnB,OADF;MAEEC,SAFF;MAGEC;IAHF,CADF,EAME,MAAM;MACJ,KAAKW,SAAL;IACD,CARH;EAUD;;EAEDnB,mBAAmB,GAAG;IACpB,KAAKK,OAAL,CAAaiB,MAAb;IACA,KAAKG,QAAL,CAAc;MACZnB,OAAO,EAAEoB,SADG;MAEZlB,QAAQ,EAAEkB,SAFE;MAGZC,KAAK,EAAED;IAHK,CAAd;EAKD;;EAEDxB,oBAAoB,CAClB0B,QADkB,EAGlB;IAAA,IADAC,gBACA,uEADmB,KACnB;IACA,IAAM;MAAEvB,OAAF;MAAWE;IAAX,IAAwB,KAAKC,KAAnC;IACAnB,GAAG,CAACwC,KAAJ,CAAU,sBAAV,EAAkCxB,OAAlC,EAA2CsB,QAA3C;;IACA,IAAI,CAACtB,OAAL,EAAc;MACZhB,GAAG,CAACI,KAAJ,CAAU,2BAAV;MACA;IACD;;IACD,IAAM;MAAEuB;IAAF,IAAiB,KAAKrB,KAA5B;IACAqB,UAAU,CAACc,IAAX,CACEF,gBAAgB,GACZ1C,aAAa,CAAC6C,eADF,GAEZ7C,aAAa,CAAC8C,gBAHpB,EAIE3B,OAJF,EAKEE,QALF,EAMEoB,QANF;EAQD;;EAED3B,mBAAmB,CAACiC,OAAD,EAAiD;IAAA,IAA/BV,KAA+B,uEAAvB,IAAuB;IAAA,IAAjBW,OAAiB,uEAAP,KAAO;IAClE7C,GAAG,CAACwC,KAAJ,CAAU,qBAAV,EAAiCI,OAAjC;IACA,IAAM;MAAEjB;IAAF,IAAiB,KAAKrB,KAA5B;IACAqB,UAAU,CAACc,IAAX,CAAgB7C,YAAY,CAACkD,YAA7B,EAA2CF,OAA3C,EAAoDV,KAApD,EAA2DW,OAA3D;EACD;;EAEDhB,SAAS,GAAG;IACV,IAAM;MAAEkB;IAAF,IAA4B,KAAKzC,KAAvC;IACA,IAAM;MAAEY,QAAF;MAAYD;IAAZ,IAA0B,KAAKE,KAArC;IACAzB,aAAa,CAACwB,QAAD,CAAb;IACAxB,aAAa,CAACuB,SAAD,CAAb;IACA,KAAKF,OAAL,CACGiC,GADH,CAEID,qBAAqB,CAACE,QAAtB,CAA+B/B,QAA/B,EAAyCD,SAAzC,EAAoDiC,IAAI,CAACC,GAAL,EAApD,CAFJ,EAGIC,QAAQ,IAAIA,QAAQ,CAACC,KAAT,EAHhB,EAKGC,IALH,CAKQjB,KAAK,IAAI;MACb,KAAKF,QAAL,CAAc;QAAEE;MAAF,CAAd;IACD,CAPH,EAQGkB,KARH,CAQSrD,mBAAmB,CAACC,WAR7B;EASD;;EAEDqD,MAAM,GAAG;IACP,IAAM;MAAEC,WAAF;MAAe9B,UAAf;MAA2BoB;IAA3B,IAAqD,KAAKzC,KAAhE;IACA,IAAM;MAAEY,QAAF;MAAYG,cAAZ;MAA4BgB;IAA5B,IAAsC,KAAKlB,KAAjD;IACA,oBACE,oBAAC,KAAD;MACE,SAAS,EAAC,sBADZ;MAEE,cAAc,EAAE,IAFlB;MAGE,WAAW,EAAEsC,WAHf;MAIE,UAAU,EAAE9B,UAJd;MAKE,aAAa,EAAE,KAAKlB,mBALtB;MAME,cAAc,EAAE,KAAKC;IANvB,GAQG,CAAC2B,KAAD,iBACC;MAAK,SAAS,EAAC;IAAf,oCATJ,EAaGA,KAAK,IAAInB,QAAT,iBACC,uDACE,oBAAC,cAAD;MACE,GAAG,EAAE,KAAKL,SADZ;MAEE,QAAQ,EAAEK,QAFZ;MAGE,cAAc,EAAE,KAAKN,oBAHvB;MAIE,aAAa,EAAE,KAAKD,mBAJtB;MAKE,KAAK,EAAE0B,KALT;MAME,qBAAqB,EAAEU;IANzB,EADF,eASE,oBAAC,cAAD;MAAgB,OAAO,EAAE1B;IAAzB,EATF,CAdJ,CADF;EA6BD;;AAnKD;;gBAHInB,mB,eAIe,qB;;gBAJfA,mB,WAMW,iB;;AAmKjB,IAAMwD,eAAe,GAAG,CACtBvC,KADsB,EAEtBwC,QAFsB,KAGnB;EACH,IAAMZ,qBAAqB,GAAGtD,wBAAwB,CACpD0B,KADoD,CAAtD;EAGA,IAAMyC,cAAc,GAAG7D,0BAA0B,CAC/CoB,KAD+C,EAE/CwC,QAAQ,CAACE,gBAFsC,CAAjD;EAIA,IAAM;IAAE7C,OAAF;IAAW8C,MAAM,EAAEC;EAAnB,IAAqCH,cAArC,aAAqCA,cAArC,cAAqCA,cAArC,GAAuD,EAA7D;EACA,IAAM;IAAEI,IAAI,EAAE9C,QAAR;IAAkB+C,EAAE,EAAEhD;EAAtB,IAAoC8C,aAApC,aAAoCA,aAApC,cAAoCA,aAApC,GAAqD,EAA3D;EAEA,OAAO;IACLhB,qBADK;IAEL7B,QAFK;IAGLF,OAHK;IAILC;EAJK,CAAP;AAMD,CApBD;;AAsBA,eAAe7B,OAAO,CAACsE,eAAD,EAAkB,IAAlB,EAAwB,IAAxB,EAA8B;EAAEQ,UAAU,EAAE;AAAd,CAA9B,CAAP,CACbhE,mBADa,CAAf"}
|
|
1
|
+
{"version":3,"file":"CommandHistoryPanel.js","names":["React","Component","connect","ContextActions","CommandHistory","SHORTCUTS","Log","getCommandHistoryStorage","assertNotNull","Pending","ConsoleEvent","NotebookEvent","Panel","getDashboardSessionWrapper","log","module","CommandHistoryPanel","handleError","error","constructor","props","handleFocusHistory","bind","handleSessionOpened","handleSessionClosed","handleSendToConsole","handleSendToNotebook","container","createRef","pending","session","sessionId","language","state","panelState","contextActions","action","shortcut","COMMAND_HISTORY","FOCUS_HISTORY","componentDidMount","glEventHub","on","loadTable","componentWillUnmount","off","cancel","current","focus","setState","undefined","table","settings","forceNewNotebook","debug","emit","CREATE_NOTEBOOK","SEND_TO_NOTEBOOK","command","execute","SEND_COMMAND","commandHistoryStorage","add","getTable","Date","now","resolved","close","then","catch","render","glContainer","mapStateToProps","ownProps","sessionWrapper","localDashboardId","config","sessionConfig","type","id","forwardRef"],"sources":["../../src/panels/CommandHistoryPanel.tsx"],"sourcesContent":["import React, { Component, RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport { ContextAction, ContextActions } from '@deephaven/components';\nimport {\n CommandHistory,\n CommandHistoryStorage,\n SHORTCUTS,\n CommandHistorySettings,\n CommandHistoryTable,\n} from '@deephaven/console';\nimport Log from '@deephaven/log';\nimport { getCommandHistoryStorage, RootState } from '@deephaven/redux';\nimport { assertNotNull, Pending } from '@deephaven/utils';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { IdeSession } from '@deephaven/jsapi-shim';\nimport { ConsoleEvent, NotebookEvent } from '../events';\nimport './CommandHistoryPanel.scss';\nimport Panel from './Panel';\nimport { getDashboardSessionWrapper } from '../redux';\n\nconst log = Log.module('CommandHistoryPanel');\n\ninterface CommandHistoryPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState?: Record<string, never>;\n session?: IdeSession;\n sessionId?: string;\n language?: string;\n commandHistoryStorage: CommandHistoryStorage;\n}\n\ninterface CommandHistoryPanelState {\n panelState: Record<string, never>;\n session?: IdeSession;\n sessionId?: string;\n language?: string;\n contextActions: ContextAction[];\n table?: CommandHistoryTable;\n}\n\nclass CommandHistoryPanel extends Component<\n CommandHistoryPanelProps,\n CommandHistoryPanelState\n> {\n static COMPONENT = 'CommandHistoryPanel';\n\n static TITLE = 'Command History';\n\n static handleError(error: unknown) {\n log.error(error);\n }\n\n constructor(props: CommandHistoryPanelProps) {\n super(props);\n\n this.handleFocusHistory = this.handleFocusHistory.bind(this);\n this.handleSessionOpened = this.handleSessionOpened.bind(this);\n this.handleSessionClosed = this.handleSessionClosed.bind(this);\n this.handleSendToConsole = this.handleSendToConsole.bind(this);\n this.handleSendToNotebook = this.handleSendToNotebook.bind(this);\n\n this.container = React.createRef();\n this.pending = new Pending();\n\n const { session, sessionId, language } = props;\n\n this.state = {\n // eslint-disable-next-line react/no-unused-state\n panelState: {},\n session,\n sessionId,\n language,\n contextActions: [\n {\n action: this.handleFocusHistory,\n shortcut: SHORTCUTS.COMMAND_HISTORY.FOCUS_HISTORY,\n },\n ],\n };\n }\n\n componentDidMount(): void {\n const { glEventHub, session } = this.props;\n glEventHub.on(ConsoleEvent.FOCUS_HISTORY, this.handleFocusHistory);\n if (session != null) {\n this.loadTable();\n }\n }\n\n componentWillUnmount(): void {\n const { glEventHub } = this.props;\n glEventHub.off(ConsoleEvent.FOCUS_HISTORY, this.handleFocusHistory);\n\n this.pending.cancel();\n }\n\n container: RefObject<CommandHistory>;\n\n pending: Pending;\n\n handleFocusHistory(): void {\n if (this.container.current) {\n this.container.current.focus();\n }\n }\n\n handleSessionOpened(\n session: IdeSession,\n { language, sessionId }: { language: string; sessionId: string }\n ): void {\n this.setState(\n {\n session,\n sessionId,\n language,\n },\n () => {\n this.loadTable();\n }\n );\n }\n\n handleSessionClosed() {\n this.pending.cancel();\n this.setState({\n session: undefined,\n language: undefined,\n table: undefined,\n });\n }\n\n handleSendToNotebook(\n settings: CommandHistorySettings,\n forceNewNotebook = false\n ) {\n const { session, language } = this.state;\n log.debug('handleSendToNotebook', session, settings);\n if (!session) {\n log.error('Session is not connected.');\n return;\n }\n const { glEventHub } = this.props;\n glEventHub.emit(\n forceNewNotebook\n ? NotebookEvent.CREATE_NOTEBOOK\n : NotebookEvent.SEND_TO_NOTEBOOK,\n session,\n language,\n settings\n );\n }\n\n handleSendToConsole(command: string, focus = true, execute = false) {\n log.debug('handleSendToConsole', command);\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.SEND_COMMAND, command, focus, execute);\n }\n\n loadTable() {\n const { commandHistoryStorage } = this.props;\n const { language, sessionId } = this.state;\n assertNotNull(language);\n assertNotNull(sessionId);\n this.pending\n .add(\n commandHistoryStorage.getTable(language, sessionId, Date.now()),\n resolved => resolved.close()\n )\n .then(table => {\n this.setState({ table });\n })\n .catch(CommandHistoryPanel.handleError);\n }\n\n render() {\n const { glContainer, glEventHub, commandHistoryStorage } = this.props;\n const { language, contextActions, table } = this.state;\n return (\n <Panel\n className=\"command-history-pane\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onSessionOpen={this.handleSessionOpened}\n onSessionClose={this.handleSessionClosed}\n >\n {!table && (\n <div className=\"command-history-disconnected-message\">\n Waiting for console connection\n </div>\n )}\n {table && language && (\n <>\n <CommandHistory\n ref={this.container}\n language={language}\n sendToNotebook={this.handleSendToNotebook}\n sendToConsole={this.handleSendToConsole}\n table={table}\n commandHistoryStorage={commandHistoryStorage}\n />\n <ContextActions actions={contextActions} />\n </>\n )}\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\n const commandHistoryStorage = getCommandHistoryStorage(\n state\n ) as CommandHistoryStorage;\n const sessionWrapper = getDashboardSessionWrapper(\n state,\n ownProps.localDashboardId\n );\n const { session, config: sessionConfig } = sessionWrapper ?? {};\n const { type: language, id: sessionId } = sessionConfig ?? {};\n\n return {\n commandHistoryStorage,\n language,\n session,\n sessionId,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n CommandHistoryPanel\n);\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { PureComponent, ReactElement, RefObject } from 'react';
|
|
2
2
|
import { CommandHistoryStorage, Console } from '@deephaven/console';
|
|
3
3
|
import { IdeSession, VariableDefinition } from '@deephaven/jsapi-shim';
|
|
4
|
-
import { Container, EventEmitter } from '@deephaven/golden-layout';
|
|
4
|
+
import type { Container, EventEmitter } from '@deephaven/golden-layout';
|
|
5
5
|
import type { JSZipObject } from 'jszip';
|
|
6
6
|
import './ConsolePanel.scss';
|
|
7
7
|
import { SessionWrapper } from '../redux';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsolePanel.d.ts","sourceRoot":"","sources":["../../src/panels/ConsolePanel.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAItE,OAAO,EACL,qBAAqB,EACrB,OAAO,EAGR,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAOvE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ConsolePanel.d.ts","sourceRoot":"","sources":["../../src/panels/ConsolePanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsolePanel.js","names":["React","PureComponent","shortid","debounce","connect","Console","ConsoleConstants","HeapUsage","PanelEvent","Log","getCommandHistoryStorage","getTimeZone","assertNotNull","ConsoleEvent","Panel","getDashboardSessionWrapper","log","module","DEBOUNCE_PANEL_STATE_UPDATE","DEFAULT_PANEL_STATE","Object","freeze","consoleSettings","itemIds","ConsolePanel","constructor","props","state","panelState","debug","setState","handleFocusCommandHistory","bind","handleOpenObject","handleCloseObject","handleResize","handleSettingsChange","handleShow","handlePanelMount","consoleRef","createRef","initialPanelState","Map","objectMap","error","undefined","componentDidMount","glEventHub","closeDisconnectedPanels","on","MOUNT","subscribeToFieldUpdates","componentDidUpdate","prevProps","prevState","savePanelState","componentWillUnmount","flush","off","objectSubscriptionCleanup","sessionWrapper","session","updates","updated","created","removed","objectsToRemove","newObjectMap","forEach","toRemove","title","delete","objectsToAdd","toAdd","set","setItemId","name","id","newItemIds","getItemId","createIfNecessary","get","generate","handleTabFocus","current","focus","panel","panelId","sourceId","metadata","sourcePanelId","pandelIds","Set","values","has","emit","FOCUS_HISTORY","updateDimensions","object","openWidget","CLOSE","SETTINGS_CHANGED","widget","openOptions","fetch","getObject","OPEN","addCommand","command","execute","force","isClosePanelsOnDisconnectEnabled","panelIdsToClose","render","commandHistoryStorage","glContainer","timeZone","unzip","config","connection","sessionId","type","language","LANGUAGE_MAP","mapStateToProps","ownProps","localDashboardId","forwardRef"],"sources":["../../src/panels/ConsolePanel.tsx"],"sourcesContent":["// Wrapper for the Console for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent, ReactElement, RefObject } from 'react';\nimport shortid from 'shortid';\nimport debounce from 'lodash.debounce';\nimport { connect } from 'react-redux';\nimport {\n CommandHistoryStorage,\n Console,\n ConsoleConstants,\n HeapUsage,\n} from '@deephaven/console';\nimport { PanelEvent } from '@deephaven/dashboard';\nimport { IdeSession, VariableDefinition } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport {\n getCommandHistoryStorage,\n getTimeZone,\n RootState,\n} from '@deephaven/redux';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { assertNotNull } from '@deephaven/utils';\nimport type { JSZipObject } from 'jszip';\nimport { ConsoleEvent } from '../events';\nimport './ConsolePanel.scss';\nimport Panel from './Panel';\nimport { getDashboardSessionWrapper, SessionWrapper } from '../redux';\n\nconst log = Log.module('ConsolePanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst DEFAULT_PANEL_STATE = Object.freeze({\n consoleSettings: {},\n itemIds: [],\n});\n\ninterface ConsoleSettings {\n isClosePanelsOnDisconnectEnabled?: boolean;\n}\n\ninterface PanelState {\n consoleSettings: ConsoleSettings;\n itemIds: [string, string][];\n}\n\ntype ItemIds = Map<string, string>;\n\ninterface ConsolePanelProps {\n commandHistoryStorage: CommandHistoryStorage;\n glContainer: Container;\n glEventHub: EventEmitter;\n\n panelState?: PanelState;\n\n sessionWrapper: SessionWrapper;\n\n timeZone: string;\n unzip?: (file: File) => Promise<JSZipObject[]>;\n}\n\ninterface ConsolePanelState {\n consoleSettings: ConsoleSettings;\n itemIds: ItemIds;\n\n objectMap: Map<string, VariableDefinition>;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n error: unknown;\n}\n\nexport class ConsolePanel extends PureComponent<\n ConsolePanelProps,\n ConsolePanelState\n> {\n static COMPONENT = 'ConsolePanel';\n\n static TITLE = 'Console';\n\n constructor(props: ConsolePanelProps) {\n super(props);\n\n this.handleFocusCommandHistory = this.handleFocusCommandHistory.bind(this);\n this.handleOpenObject = this.handleOpenObject.bind(this);\n this.handleCloseObject = this.handleCloseObject.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleSettingsChange = this.handleSettingsChange.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handlePanelMount = this.handlePanelMount.bind(this);\n\n this.consoleRef = React.createRef();\n\n const { panelState: initialPanelState } = props;\n const panelState = {\n ...DEFAULT_PANEL_STATE,\n ...(initialPanelState || {}),\n };\n const { consoleSettings, itemIds } = panelState;\n\n this.state = {\n consoleSettings,\n itemIds: new Map(itemIds),\n\n objectMap: new Map(),\n error: undefined,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount(): void {\n const { glEventHub } = this.props;\n // Need to close the disconnected panels when we're first loaded,\n // as they may have been saved with the dashboard\n this.closeDisconnectedPanels();\n glEventHub.on(PanelEvent.MOUNT, this.handlePanelMount);\n this.subscribeToFieldUpdates();\n }\n\n componentDidUpdate(\n prevProps: ConsolePanelProps,\n prevState: ConsolePanelState\n ): void {\n const { consoleSettings, itemIds } = this.state;\n if (\n prevState.consoleSettings !== consoleSettings ||\n prevState.itemIds !== itemIds\n ) {\n this.savePanelState();\n }\n }\n\n componentWillUnmount(): void {\n const { glEventHub } = this.props;\n this.savePanelState.flush();\n glEventHub.off(PanelEvent.MOUNT, this.handlePanelMount);\n this.objectSubscriptionCleanup?.();\n }\n\n consoleRef: RefObject<Console>;\n\n objectSubscriptionCleanup?: () => void;\n\n subscribeToFieldUpdates(): void {\n const { sessionWrapper } = this.props;\n const { session } = sessionWrapper;\n\n this.objectSubscriptionCleanup = session.subscribeToFieldUpdates(\n updates => {\n log.debug('Got updates', updates);\n this.setState(({ objectMap }) => {\n const { updated, created, removed } = updates;\n\n // Remove from the array if it's been removed OR modified. We'll add it back after if it was modified.\n const objectsToRemove = [...updated, ...removed];\n const newObjectMap = new Map(objectMap);\n objectsToRemove.forEach(toRemove => {\n const { title } = toRemove;\n if (title) {\n newObjectMap.delete(title);\n }\n });\n\n // Now add all the modified and updated widgets back in\n const objectsToAdd = [...updated, ...created];\n objectsToAdd.forEach(toAdd => {\n if (toAdd.title) {\n newObjectMap.set(toAdd.title, toAdd);\n }\n });\n\n return { objectMap: newObjectMap };\n });\n }\n );\n }\n\n setItemId(name: string, id: string): void {\n this.setState(({ itemIds }) => {\n const newItemIds = new Map(itemIds);\n newItemIds.set(name, id);\n return { itemIds: newItemIds };\n });\n }\n\n getItemId(name: string, createIfNecessary = true): string | undefined {\n const { itemIds } = this.state;\n let id = itemIds.get(name);\n if (id == null && createIfNecessary) {\n id = shortid.generate();\n this.setItemId(name, id);\n }\n return id;\n }\n\n handleTabFocus(): void {\n if (this.consoleRef) {\n this.consoleRef.current?.focus();\n }\n }\n\n handlePanelMount(panel: {\n props: { id: string; metadata: { sourcePanelId: string } };\n }): void {\n const { itemIds } = this.state;\n const panelId = panel?.props?.id;\n const sourceId = panel?.props?.metadata?.sourcePanelId;\n if (panelId && sourceId) {\n // Check if the panel was created from a panel in this console\n const pandelIds = new Set(itemIds.values());\n if (pandelIds.has(sourceId)) {\n // The Chart Panel does not have name so map panelId to panelId\n this.setItemId(panelId, panelId);\n }\n }\n }\n\n handleFocusCommandHistory(): void {\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.FOCUS_HISTORY);\n }\n\n handleResize(): void {\n this.updateDimensions();\n }\n\n handleShow(): void {\n this.updateDimensions();\n }\n\n handleOpenObject(object: VariableDefinition): void {\n const { sessionWrapper } = this.props;\n const { session } = sessionWrapper;\n this.openWidget(object, session);\n }\n\n handleCloseObject(object: VariableDefinition): void {\n const { title } = object;\n if (title) {\n const id = this.getItemId(title, false);\n const { glEventHub } = this.props;\n glEventHub.emit(PanelEvent.CLOSE, id);\n }\n }\n\n handleSettingsChange(consoleSettings: Record<string, unknown>): void {\n const { glEventHub } = this.props;\n log.debug('handleSettingsChange', consoleSettings);\n this.setState({\n consoleSettings,\n });\n glEventHub.emit(ConsoleEvent.SETTINGS_CHANGED, consoleSettings);\n }\n\n /**\n * @param widget The widget to open\n * @param session The session object\n */\n openWidget(widget: VariableDefinition, session: IdeSession): void {\n const { glEventHub } = this.props;\n const { title } = widget;\n assertNotNull(title);\n const panelId = this.getItemId(title);\n const openOptions = {\n fetch: () => session.getObject(widget),\n panelId,\n widget,\n };\n\n log.debug('openWidget', openOptions);\n\n glEventHub.emit(PanelEvent.OPEN, openOptions);\n }\n\n addCommand(command: string, focus = true, execute = false): void {\n this.consoleRef.current?.addCommand(command, focus, execute);\n }\n\n /**\n * Close the disconnected panels from this session\n * @param force True to force the panels closed regardless of the current setting\n */\n closeDisconnectedPanels(force = false): void {\n const { consoleSettings, itemIds } = this.state;\n const { isClosePanelsOnDisconnectEnabled = true } = consoleSettings;\n if (!isClosePanelsOnDisconnectEnabled && !force) {\n return;\n }\n\n const panelIdsToClose = [...itemIds.values()];\n const { glEventHub } = this.props;\n panelIdsToClose.forEach(panelId => {\n glEventHub.emit(PanelEvent.CLOSE, panelId);\n });\n\n this.setState({ itemIds: new Map() });\n }\n\n savePanelState = debounce((): void => {\n const { consoleSettings, itemIds } = this.state;\n const panelState = {\n consoleSettings,\n itemIds: [...itemIds],\n };\n log.debug('Saving panel state', panelState);\n // eslint-disable-next-line react/no-unused-state\n this.setState({ panelState });\n }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateDimensions(): void {\n this.consoleRef.current?.updateDimensions();\n }\n\n render(): ReactElement {\n const {\n commandHistoryStorage,\n glContainer,\n glEventHub,\n sessionWrapper,\n timeZone,\n unzip,\n } = this.props;\n const { consoleSettings, error, objectMap } = this.state;\n const { config, session, connection } = sessionWrapper;\n const { id: sessionId, type: language } = config;\n\n return (\n <Panel\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleTabFocus}\n errorMessage={error != null ? `${error}` : undefined}\n >\n <>\n {session && (\n <Console\n ref={this.consoleRef}\n settings={consoleSettings}\n session={session}\n focusCommandHistory={this.handleFocusCommandHistory}\n openObject={this.handleOpenObject}\n closeObject={this.handleCloseObject}\n commandHistoryStorage={commandHistoryStorage}\n onSettingsChange={this.handleSettingsChange}\n language={language}\n statusBarChildren={\n <>\n <div> </div>\n <div>{ConsoleConstants.LANGUAGE_MAP.get(language)}</div>\n <div> </div>\n <div>\n <HeapUsage\n connection={connection}\n defaultUpdateInterval={10 * 1000}\n hoverUpdateInterval={3 * 1000}\n monitorDuration={10 * 60 * 1000}\n />\n </div>\n <div> </div>\n </>\n }\n scope={sessionId}\n timeZone={timeZone}\n objectMap={objectMap}\n unzip={unzip}\n />\n )}\n </>\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => ({\n commandHistoryStorage: getCommandHistoryStorage(\n state\n ) as CommandHistoryStorage,\n sessionWrapper: getDashboardSessionWrapper(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n});\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n ConsolePanel\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConsolePanel.js","names":["React","PureComponent","shortid","debounce","connect","Console","ConsoleConstants","HeapUsage","PanelEvent","Log","getCommandHistoryStorage","getTimeZone","assertNotNull","ConsoleEvent","Panel","getDashboardSessionWrapper","log","module","DEBOUNCE_PANEL_STATE_UPDATE","DEFAULT_PANEL_STATE","Object","freeze","consoleSettings","itemIds","ConsolePanel","constructor","props","state","panelState","debug","setState","handleFocusCommandHistory","bind","handleOpenObject","handleCloseObject","handleResize","handleSettingsChange","handleShow","handlePanelMount","consoleRef","createRef","initialPanelState","Map","objectMap","error","undefined","componentDidMount","glEventHub","closeDisconnectedPanels","on","MOUNT","subscribeToFieldUpdates","componentDidUpdate","prevProps","prevState","savePanelState","componentWillUnmount","flush","off","objectSubscriptionCleanup","sessionWrapper","session","updates","updated","created","removed","objectsToRemove","newObjectMap","forEach","toRemove","title","delete","objectsToAdd","toAdd","set","setItemId","name","id","newItemIds","getItemId","createIfNecessary","get","generate","handleTabFocus","current","focus","panel","panelId","sourceId","metadata","sourcePanelId","pandelIds","Set","values","has","emit","FOCUS_HISTORY","updateDimensions","object","openWidget","CLOSE","SETTINGS_CHANGED","widget","openOptions","fetch","getObject","OPEN","addCommand","command","execute","force","isClosePanelsOnDisconnectEnabled","panelIdsToClose","render","commandHistoryStorage","glContainer","timeZone","unzip","config","connection","sessionId","type","language","LANGUAGE_MAP","mapStateToProps","ownProps","localDashboardId","forwardRef"],"sources":["../../src/panels/ConsolePanel.tsx"],"sourcesContent":["// Wrapper for the Console for use in a golden layout container\n// Will probably need to handle window popping out from golden layout here.\nimport React, { PureComponent, ReactElement, RefObject } from 'react';\nimport shortid from 'shortid';\nimport debounce from 'lodash.debounce';\nimport { connect } from 'react-redux';\nimport {\n CommandHistoryStorage,\n Console,\n ConsoleConstants,\n HeapUsage,\n} from '@deephaven/console';\nimport { PanelEvent } from '@deephaven/dashboard';\nimport { IdeSession, VariableDefinition } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport {\n getCommandHistoryStorage,\n getTimeZone,\n RootState,\n} from '@deephaven/redux';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { assertNotNull } from '@deephaven/utils';\nimport type { JSZipObject } from 'jszip';\nimport { ConsoleEvent } from '../events';\nimport './ConsolePanel.scss';\nimport Panel from './Panel';\nimport { getDashboardSessionWrapper, SessionWrapper } from '../redux';\n\nconst log = Log.module('ConsolePanel');\n\nconst DEBOUNCE_PANEL_STATE_UPDATE = 500;\n\nconst DEFAULT_PANEL_STATE = Object.freeze({\n consoleSettings: {},\n itemIds: [],\n});\n\ninterface ConsoleSettings {\n isClosePanelsOnDisconnectEnabled?: boolean;\n}\n\ninterface PanelState {\n consoleSettings: ConsoleSettings;\n itemIds: [string, string][];\n}\n\ntype ItemIds = Map<string, string>;\n\ninterface ConsolePanelProps {\n commandHistoryStorage: CommandHistoryStorage;\n glContainer: Container;\n glEventHub: EventEmitter;\n\n panelState?: PanelState;\n\n sessionWrapper: SessionWrapper;\n\n timeZone: string;\n unzip?: (file: File) => Promise<JSZipObject[]>;\n}\n\ninterface ConsolePanelState {\n consoleSettings: ConsoleSettings;\n itemIds: ItemIds;\n\n objectMap: Map<string, VariableDefinition>;\n\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState;\n error: unknown;\n}\n\nexport class ConsolePanel extends PureComponent<\n ConsolePanelProps,\n ConsolePanelState\n> {\n static COMPONENT = 'ConsolePanel';\n\n static TITLE = 'Console';\n\n constructor(props: ConsolePanelProps) {\n super(props);\n\n this.handleFocusCommandHistory = this.handleFocusCommandHistory.bind(this);\n this.handleOpenObject = this.handleOpenObject.bind(this);\n this.handleCloseObject = this.handleCloseObject.bind(this);\n this.handleResize = this.handleResize.bind(this);\n this.handleSettingsChange = this.handleSettingsChange.bind(this);\n this.handleShow = this.handleShow.bind(this);\n this.handlePanelMount = this.handlePanelMount.bind(this);\n\n this.consoleRef = React.createRef();\n\n const { panelState: initialPanelState } = props;\n const panelState = {\n ...DEFAULT_PANEL_STATE,\n ...(initialPanelState || {}),\n };\n const { consoleSettings, itemIds } = panelState;\n\n this.state = {\n consoleSettings,\n itemIds: new Map(itemIds),\n\n objectMap: new Map(),\n error: undefined,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount(): void {\n const { glEventHub } = this.props;\n // Need to close the disconnected panels when we're first loaded,\n // as they may have been saved with the dashboard\n this.closeDisconnectedPanels();\n glEventHub.on(PanelEvent.MOUNT, this.handlePanelMount);\n this.subscribeToFieldUpdates();\n }\n\n componentDidUpdate(\n prevProps: ConsolePanelProps,\n prevState: ConsolePanelState\n ): void {\n const { consoleSettings, itemIds } = this.state;\n if (\n prevState.consoleSettings !== consoleSettings ||\n prevState.itemIds !== itemIds\n ) {\n this.savePanelState();\n }\n }\n\n componentWillUnmount(): void {\n const { glEventHub } = this.props;\n this.savePanelState.flush();\n glEventHub.off(PanelEvent.MOUNT, this.handlePanelMount);\n this.objectSubscriptionCleanup?.();\n }\n\n consoleRef: RefObject<Console>;\n\n objectSubscriptionCleanup?: () => void;\n\n subscribeToFieldUpdates(): void {\n const { sessionWrapper } = this.props;\n const { session } = sessionWrapper;\n\n this.objectSubscriptionCleanup = session.subscribeToFieldUpdates(\n updates => {\n log.debug('Got updates', updates);\n this.setState(({ objectMap }) => {\n const { updated, created, removed } = updates;\n\n // Remove from the array if it's been removed OR modified. We'll add it back after if it was modified.\n const objectsToRemove = [...updated, ...removed];\n const newObjectMap = new Map(objectMap);\n objectsToRemove.forEach(toRemove => {\n const { title } = toRemove;\n if (title) {\n newObjectMap.delete(title);\n }\n });\n\n // Now add all the modified and updated widgets back in\n const objectsToAdd = [...updated, ...created];\n objectsToAdd.forEach(toAdd => {\n if (toAdd.title) {\n newObjectMap.set(toAdd.title, toAdd);\n }\n });\n\n return { objectMap: newObjectMap };\n });\n }\n );\n }\n\n setItemId(name: string, id: string): void {\n this.setState(({ itemIds }) => {\n const newItemIds = new Map(itemIds);\n newItemIds.set(name, id);\n return { itemIds: newItemIds };\n });\n }\n\n getItemId(name: string, createIfNecessary = true): string | undefined {\n const { itemIds } = this.state;\n let id = itemIds.get(name);\n if (id == null && createIfNecessary) {\n id = shortid.generate();\n this.setItemId(name, id);\n }\n return id;\n }\n\n handleTabFocus(): void {\n if (this.consoleRef) {\n this.consoleRef.current?.focus();\n }\n }\n\n handlePanelMount(panel: {\n props: { id: string; metadata: { sourcePanelId: string } };\n }): void {\n const { itemIds } = this.state;\n const panelId = panel?.props?.id;\n const sourceId = panel?.props?.metadata?.sourcePanelId;\n if (panelId && sourceId) {\n // Check if the panel was created from a panel in this console\n const pandelIds = new Set(itemIds.values());\n if (pandelIds.has(sourceId)) {\n // The Chart Panel does not have name so map panelId to panelId\n this.setItemId(panelId, panelId);\n }\n }\n }\n\n handleFocusCommandHistory(): void {\n const { glEventHub } = this.props;\n glEventHub.emit(ConsoleEvent.FOCUS_HISTORY);\n }\n\n handleResize(): void {\n this.updateDimensions();\n }\n\n handleShow(): void {\n this.updateDimensions();\n }\n\n handleOpenObject(object: VariableDefinition): void {\n const { sessionWrapper } = this.props;\n const { session } = sessionWrapper;\n this.openWidget(object, session);\n }\n\n handleCloseObject(object: VariableDefinition): void {\n const { title } = object;\n if (title) {\n const id = this.getItemId(title, false);\n const { glEventHub } = this.props;\n glEventHub.emit(PanelEvent.CLOSE, id);\n }\n }\n\n handleSettingsChange(consoleSettings: Record<string, unknown>): void {\n const { glEventHub } = this.props;\n log.debug('handleSettingsChange', consoleSettings);\n this.setState({\n consoleSettings,\n });\n glEventHub.emit(ConsoleEvent.SETTINGS_CHANGED, consoleSettings);\n }\n\n /**\n * @param widget The widget to open\n * @param session The session object\n */\n openWidget(widget: VariableDefinition, session: IdeSession): void {\n const { glEventHub } = this.props;\n const { title } = widget;\n assertNotNull(title);\n const panelId = this.getItemId(title);\n const openOptions = {\n fetch: () => session.getObject(widget),\n panelId,\n widget,\n };\n\n log.debug('openWidget', openOptions);\n\n glEventHub.emit(PanelEvent.OPEN, openOptions);\n }\n\n addCommand(command: string, focus = true, execute = false): void {\n this.consoleRef.current?.addCommand(command, focus, execute);\n }\n\n /**\n * Close the disconnected panels from this session\n * @param force True to force the panels closed regardless of the current setting\n */\n closeDisconnectedPanels(force = false): void {\n const { consoleSettings, itemIds } = this.state;\n const { isClosePanelsOnDisconnectEnabled = true } = consoleSettings;\n if (!isClosePanelsOnDisconnectEnabled && !force) {\n return;\n }\n\n const panelIdsToClose = [...itemIds.values()];\n const { glEventHub } = this.props;\n panelIdsToClose.forEach(panelId => {\n glEventHub.emit(PanelEvent.CLOSE, panelId);\n });\n\n this.setState({ itemIds: new Map() });\n }\n\n savePanelState = debounce((): void => {\n const { consoleSettings, itemIds } = this.state;\n const panelState = {\n consoleSettings,\n itemIds: [...itemIds],\n };\n log.debug('Saving panel state', panelState);\n // eslint-disable-next-line react/no-unused-state\n this.setState({ panelState });\n }, DEBOUNCE_PANEL_STATE_UPDATE);\n\n updateDimensions(): void {\n this.consoleRef.current?.updateDimensions();\n }\n\n render(): ReactElement {\n const {\n commandHistoryStorage,\n glContainer,\n glEventHub,\n sessionWrapper,\n timeZone,\n unzip,\n } = this.props;\n const { consoleSettings, error, objectMap } = this.state;\n const { config, session, connection } = sessionWrapper;\n const { id: sessionId, type: language } = config;\n\n return (\n <Panel\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onResize={this.handleResize}\n onShow={this.handleShow}\n onTabFocus={this.handleTabFocus}\n errorMessage={error != null ? `${error}` : undefined}\n >\n <>\n {session && (\n <Console\n ref={this.consoleRef}\n settings={consoleSettings}\n session={session}\n focusCommandHistory={this.handleFocusCommandHistory}\n openObject={this.handleOpenObject}\n closeObject={this.handleCloseObject}\n commandHistoryStorage={commandHistoryStorage}\n onSettingsChange={this.handleSettingsChange}\n language={language}\n statusBarChildren={\n <>\n <div> </div>\n <div>{ConsoleConstants.LANGUAGE_MAP.get(language)}</div>\n <div> </div>\n <div>\n <HeapUsage\n connection={connection}\n defaultUpdateInterval={10 * 1000}\n hoverUpdateInterval={3 * 1000}\n monitorDuration={10 * 60 * 1000}\n />\n </div>\n <div> </div>\n </>\n }\n scope={sessionId}\n timeZone={timeZone}\n objectMap={objectMap}\n unzip={unzip}\n />\n )}\n </>\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => ({\n commandHistoryStorage: getCommandHistoryStorage(\n state\n ) as CommandHistoryStorage,\n sessionWrapper: getDashboardSessionWrapper(state, ownProps.localDashboardId),\n timeZone: getTimeZone(state),\n});\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n ConsolePanel\n);\n"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import React, { Component, RefObject } from 'react';
|
|
|
2
2
|
import { Column, Row, TableTemplate } from '@deephaven/jsapi-shim';
|
|
3
3
|
import { DateTimeColumnFormatter, Formatter, FormattingRule } from '@deephaven/jsapi-utils';
|
|
4
4
|
import { Pending } from '@deephaven/utils';
|
|
5
|
-
import { Container, EventEmitter } from '@deephaven/golden-layout';
|
|
5
|
+
import type { Container, EventEmitter } from '@deephaven/golden-layout';
|
|
6
6
|
import DropdownFilter, { DropdownFilterColumn } from '../controls/dropdown-filter/DropdownFilter';
|
|
7
7
|
import './DropdownFilterPanel.scss';
|
|
8
8
|
import { Link } from '../linker/LinkerUtils';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownFilterPanel.d.ts","sourceRoot":"","sources":["../../src/panels/DropdownFilterPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMpD,OAAW,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EACL,uBAAuB,EACvB,SAAS,EAET,cAAc,EAEf,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,OAAO,EAAgB,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"DropdownFilterPanel.d.ts","sourceRoot":"","sources":["../../src/panels/DropdownFilterPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownFilterPanel.js","names":["React","Component","connect","debounce","deepEqual","memoize","LayoutUtils","dh","DateTimeColumnFormatter","Formatter","FormatterUtils","TableUtils","Log","getActiveTool","getSettings","Pending","PromiseUtils","DropdownFilter","InputFilterEvent","getColumnsForDashboard","getColumnSelectionValidatorForDashboard","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","getTableMapForDashboard","ToolType","WidgetPanel","log","module","DROPDOWN_FILTER_DEBOUNCE","DropdownFilterPanel","constructor","props","rawValues","formatter","type","name","isDateType","map","value","DATETIME_FORMATTER","format","getFormattedString","dashboardLinks","panel","panelId","getIdFromPanel","debug","filter","link","end","links","source","length","start","error","panelTableMap","get","table","columns","find","columnName","columnType","handleChange","bind","handleClearAllFilters","handleDisconnect","handleReconnect","handleColumnSelected","handleSourceFilterChange","handleSourceSortChange","handleSourceSizeChange","handleSourceMouseEnter","handleSourceMouseLeave","handleValuesTableUpdate","dropdownFilterRef","createRef","panelContainer","pending","panelState","settings","columnFormats","getColumnFormats","isValueShown","timestamp","column","undefined","state","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","current","element","querySelector","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","Date","now","setState","prevTimestamp","isFlip","Error","applySourceFilters","applySourceSorts","detail","glEventHub","emit","COLUMN_SELECTED","SOURCE_COLUMN","clearFilter","setPanelState","setFilterState","sourcePanelId","excludePanelIds","FILTERS_CHANGED","size","add","copy","resolved","then","updateViewportListener","catch","isCanceled","sort","sorts","applySort","setViewport","filters","applyFilter","EVENT_UPDATED","rows","row","columnSelectionValidator","render","disableLinking","glContainer","isLinkerActive","settingsErrorMessage","panelErrorMessage","formattedValues","getCachedValues","showTimeZone","showTSeparator","defaultDateTimeFormatString","Object","freeze","mapStateToProps","ownProps","localDashboardId","activeTool","isolatedLinkerPanelId","LINKER","forwardRef"],"sources":["../../src/panels/DropdownFilterPanel.tsx"],"sourcesContent":["import React, { Component, RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport deepEqual from 'deep-equal';\nimport memoize from 'memoize-one';\nimport { LayoutUtils } from '@deephaven/dashboard';\nimport dh, { Column, Row, TableTemplate } from '@deephaven/jsapi-shim';\nimport {\n DateTimeColumnFormatter,\n Formatter,\n FormatterUtils,\n FormattingRule,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { getActiveTool, getSettings, RootState } from '@deephaven/redux';\nimport { Pending, PromiseUtils } from '@deephaven/utils';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport DropdownFilter, {\n 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 { Link } from '../linker/LinkerUtils';\nimport { ColumnSelectionValidator } from '../linker/ColumnSelectionValidator';\n\nconst log = Log.module('DropdownFilterPanel');\n\nconst DROPDOWN_FILTER_DEBOUNCE = 250;\n\ninterface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ninterface DropdownFilterPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState?: PanelState;\n isLinkerActive: boolean;\n columns: Column[];\n columnSelectionValidator?: ColumnSelectionValidator;\n disableLinking: boolean;\n settings: {\n formatter: FormattingRule[];\n };\n // eslint-disable-next-line react/no-unused-prop-types\n panelTableMap: Map<string | string[], TableTemplate>;\n // eslint-disable-next-line react/no-unused-prop-types\n dashboardLinks: Link[];\n}\n\ninterface DropdownFilterPanelState {\n column?: DropdownFilterColumn;\n formatter: Formatter;\n valuesTable?: TableTemplate;\n valuesColumn?: 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\nclass 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 // Filter dropdown needs to show and send full timestamp format with nanoseconds\n static DATETIME_FORMATTER = new DateTimeColumnFormatter({\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: `yyyy-MM-dd HH:mm:ss.SSSSSSSSS`,\n });\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 { panelState, settings } = props;\n this.columnFormats = FormatterUtils.getColumnFormats(settings);\n const { value = '', isValueShown = false, name, type, timestamp } =\n panelState ?? {};\n const column = name != null && type != null ? { name, type } : undefined;\n this.state = {\n column,\n formatter: new Formatter(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() {\n this.updateValuesTable();\n const { column, value, timestamp } = this.state;\n const sourceTable = this.getSourceTable();\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 ) {\n const { valuesTable } = this.state;\n const { settings } = this.props;\n const source = this.getSource();\n const sourceTable = this.getSourceTable();\n const prevSource = this.getSource(prevProps);\n const prevSourceTable = this.getSourceTable(prevProps);\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 { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\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 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 && TableUtils.isDateType(type)) {\n return rawValues.map(value =>\n DropdownFilterPanel.DATETIME_FORMATTER.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 );\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 ? `${error}` : undefined;\n }\n\n getCachedPanelLinks = memoize((dashboardLinks: Link[], panel) => {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('getCachedPanelLinks', dashboardLinks, panelId);\n return dashboardLinks.filter(link => link.end?.panelId === panelId);\n });\n\n getCachedSource = memoize(links => {\n log.debug('getCachedSource', links);\n let source = null;\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\n getCachedSourceTable = memoize((panelTableMap, source) => {\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\n getCachedSourceColumn = memoize((table: TableTemplate, source) => {\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\n getSource(props = this.props) {\n const { dashboardLinks } = props;\n const panelLinks = this.getCachedPanelLinks(dashboardLinks, this);\n return this.getCachedSource(panelLinks);\n }\n\n getSourceTable(props = this.props) {\n const { panelTableMap } = props;\n const source = this.getSource(props);\n return this.getCachedSourceTable(panelTableMap, source);\n }\n\n getValuesColumn(valuesTable: TableTemplate): Column | null {\n const source = this.getSource();\n return this.getCachedSourceColumn(valuesTable, source);\n }\n\n startListeningToSource(sourceTable: TableTemplate): void {\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: TableTemplate): void {\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,\n value,\n }: {\n column: Partial<Column> | null;\n isValueShown?: boolean | undefined;\n value?: string | undefined;\n }) {\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() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect() {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleSourceFilterChange() {\n this.applySourceFilters();\n }\n\n handleSourceSortChange() {\n this.applySourceSorts();\n }\n\n handleSourceSizeChange({ detail }: { detail: number }) {\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(\n state: {\n name: string;\n type: string;\n value: string;\n isValueShown: boolean;\n },\n sendUpdate = false\n ): void {\n if (this.getSource() == 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 { glEventHub } = this.props;\n const sourcePanelId = this.getSource()?.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 source = this.getSource();\n const sourceTable = this.getSourceTable();\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() {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n log.debug('applySourceSorts', sourceTable.sort);\n if (valuesTable == 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 { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n log.debug('applySourceFilters', sourceTable.filter);\n if (valuesTable == 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: TableTemplate): void {\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: TableTemplate): void {\n const valuesColumn = this.getValuesColumn(valuesTable);\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 }) {\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n if (!deepEqual(this.columnFormats, columnFormats)) {\n this.columnFormats = columnFormats;\n this.setState({ formatter: new Formatter(columnFormats) });\n }\n }\n\n handleValuesTableUpdate({ detail }: { detail: { rows: Row[] } }) {\n const { rows } = detail;\n const { valuesTable } = this.state;\n if (!valuesTable) {\n log.error('valuesTable is null');\n return;\n }\n const valuesColumn = this.getValuesColumn(valuesTable);\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() {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, DropdownFilterPanel.SOURCE_COLUMN);\n }\n\n handleSourceMouseLeave() {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, undefined);\n }\n\n render() {\n const {\n columns,\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\n const source = this.getSource();\n const settingsErrorMessage = this.getSettingsErrorMessage();\n const panelErrorMessage = this.getPanelErrorMessage();\n const formattedValues =\n isLoaded && valuesColumn != null\n ? this.getCachedValues(values, valuesColumn, formatter)\n : [];\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 widgetName=\"Dropdown Filter\"\n widgetType=\"DropdownFilter\"\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 mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string; glContainer: Container }\n) => {\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 isLinkerActive,\n disableLinking,\n settings: getSettings(state),\n panelTableMap,\n dashboardLinks,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n DropdownFilterPanel\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DropdownFilterPanel.js","names":["React","Component","connect","debounce","deepEqual","memoize","LayoutUtils","dh","DateTimeColumnFormatter","Formatter","FormatterUtils","TableUtils","Log","getActiveTool","getSettings","Pending","PromiseUtils","DropdownFilter","InputFilterEvent","getColumnsForDashboard","getColumnSelectionValidatorForDashboard","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","getTableMapForDashboard","ToolType","WidgetPanel","log","module","DROPDOWN_FILTER_DEBOUNCE","DropdownFilterPanel","constructor","props","rawValues","formatter","type","name","isDateType","map","value","DATETIME_FORMATTER","format","getFormattedString","dashboardLinks","panel","panelId","getIdFromPanel","debug","filter","link","end","links","source","length","start","error","panelTableMap","get","table","columns","find","columnName","columnType","handleChange","bind","handleClearAllFilters","handleDisconnect","handleReconnect","handleColumnSelected","handleSourceFilterChange","handleSourceSortChange","handleSourceSizeChange","handleSourceMouseEnter","handleSourceMouseLeave","handleValuesTableUpdate","dropdownFilterRef","createRef","panelContainer","pending","panelState","settings","columnFormats","getColumnFormats","isValueShown","timestamp","column","undefined","state","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","current","element","querySelector","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","Date","now","setState","prevTimestamp","isFlip","Error","applySourceFilters","applySourceSorts","detail","glEventHub","emit","COLUMN_SELECTED","SOURCE_COLUMN","clearFilter","setPanelState","setFilterState","sourcePanelId","excludePanelIds","FILTERS_CHANGED","size","add","copy","resolved","then","updateViewportListener","catch","isCanceled","sort","sorts","applySort","setViewport","filters","applyFilter","EVENT_UPDATED","rows","row","columnSelectionValidator","render","disableLinking","glContainer","isLinkerActive","settingsErrorMessage","panelErrorMessage","formattedValues","getCachedValues","showTimeZone","showTSeparator","defaultDateTimeFormatString","Object","freeze","mapStateToProps","ownProps","localDashboardId","activeTool","isolatedLinkerPanelId","LINKER","forwardRef"],"sources":["../../src/panels/DropdownFilterPanel.tsx"],"sourcesContent":["import React, { Component, RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport deepEqual from 'deep-equal';\nimport memoize from 'memoize-one';\nimport { LayoutUtils } from '@deephaven/dashboard';\nimport dh, { Column, Row, TableTemplate } from '@deephaven/jsapi-shim';\nimport {\n DateTimeColumnFormatter,\n Formatter,\n FormatterUtils,\n FormattingRule,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { getActiveTool, getSettings, RootState } from '@deephaven/redux';\nimport { Pending, PromiseUtils } from '@deephaven/utils';\nimport type { Container, EventEmitter } from '@deephaven/golden-layout';\nimport DropdownFilter, {\n 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 { Link } from '../linker/LinkerUtils';\nimport { ColumnSelectionValidator } from '../linker/ColumnSelectionValidator';\n\nconst log = Log.module('DropdownFilterPanel');\n\nconst DROPDOWN_FILTER_DEBOUNCE = 250;\n\ninterface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ninterface DropdownFilterPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState?: PanelState;\n isLinkerActive: boolean;\n columns: Column[];\n columnSelectionValidator?: ColumnSelectionValidator;\n disableLinking: boolean;\n settings: {\n formatter: FormattingRule[];\n };\n // eslint-disable-next-line react/no-unused-prop-types\n panelTableMap: Map<string | string[], TableTemplate>;\n // eslint-disable-next-line react/no-unused-prop-types\n dashboardLinks: Link[];\n}\n\ninterface DropdownFilterPanelState {\n column?: DropdownFilterColumn;\n formatter: Formatter;\n valuesTable?: TableTemplate;\n valuesColumn?: 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\nclass 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 // Filter dropdown needs to show and send full timestamp format with nanoseconds\n static DATETIME_FORMATTER = new DateTimeColumnFormatter({\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: `yyyy-MM-dd HH:mm:ss.SSSSSSSSS`,\n });\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 { panelState, settings } = props;\n this.columnFormats = FormatterUtils.getColumnFormats(settings);\n const { value = '', isValueShown = false, name, type, timestamp } =\n panelState ?? {};\n const column = name != null && type != null ? { name, type } : undefined;\n this.state = {\n column,\n formatter: new Formatter(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() {\n this.updateValuesTable();\n const { column, value, timestamp } = this.state;\n const sourceTable = this.getSourceTable();\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 ) {\n const { valuesTable } = this.state;\n const { settings } = this.props;\n const source = this.getSource();\n const sourceTable = this.getSourceTable();\n const prevSource = this.getSource(prevProps);\n const prevSourceTable = this.getSourceTable(prevProps);\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 { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\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 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 && TableUtils.isDateType(type)) {\n return rawValues.map(value =>\n DropdownFilterPanel.DATETIME_FORMATTER.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 );\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 ? `${error}` : undefined;\n }\n\n getCachedPanelLinks = memoize((dashboardLinks: Link[], panel) => {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('getCachedPanelLinks', dashboardLinks, panelId);\n return dashboardLinks.filter(link => link.end?.panelId === panelId);\n });\n\n getCachedSource = memoize(links => {\n log.debug('getCachedSource', links);\n let source = null;\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\n getCachedSourceTable = memoize((panelTableMap, source) => {\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\n getCachedSourceColumn = memoize((table: TableTemplate, source) => {\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\n getSource(props = this.props) {\n const { dashboardLinks } = props;\n const panelLinks = this.getCachedPanelLinks(dashboardLinks, this);\n return this.getCachedSource(panelLinks);\n }\n\n getSourceTable(props = this.props) {\n const { panelTableMap } = props;\n const source = this.getSource(props);\n return this.getCachedSourceTable(panelTableMap, source);\n }\n\n getValuesColumn(valuesTable: TableTemplate): Column | null {\n const source = this.getSource();\n return this.getCachedSourceColumn(valuesTable, source);\n }\n\n startListeningToSource(sourceTable: TableTemplate): void {\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: TableTemplate): void {\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,\n value,\n }: {\n column: Partial<Column> | null;\n isValueShown?: boolean | undefined;\n value?: string | undefined;\n }) {\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() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect() {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleSourceFilterChange() {\n this.applySourceFilters();\n }\n\n handleSourceSortChange() {\n this.applySourceSorts();\n }\n\n handleSourceSizeChange({ detail }: { detail: number }) {\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(\n state: {\n name: string;\n type: string;\n value: string;\n isValueShown: boolean;\n },\n sendUpdate = false\n ): void {\n if (this.getSource() == 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 { glEventHub } = this.props;\n const sourcePanelId = this.getSource()?.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 source = this.getSource();\n const sourceTable = this.getSourceTable();\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() {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n log.debug('applySourceSorts', sourceTable.sort);\n if (valuesTable == 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 { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n log.debug('applySourceFilters', sourceTable.filter);\n if (valuesTable == 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: TableTemplate): void {\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: TableTemplate): void {\n const valuesColumn = this.getValuesColumn(valuesTable);\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 }) {\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n if (!deepEqual(this.columnFormats, columnFormats)) {\n this.columnFormats = columnFormats;\n this.setState({ formatter: new Formatter(columnFormats) });\n }\n }\n\n handleValuesTableUpdate({ detail }: { detail: { rows: Row[] } }) {\n const { rows } = detail;\n const { valuesTable } = this.state;\n if (!valuesTable) {\n log.error('valuesTable is null');\n return;\n }\n const valuesColumn = this.getValuesColumn(valuesTable);\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() {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, DropdownFilterPanel.SOURCE_COLUMN);\n }\n\n handleSourceMouseLeave() {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, undefined);\n }\n\n render() {\n const {\n columns,\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\n const source = this.getSource();\n const settingsErrorMessage = this.getSettingsErrorMessage();\n const panelErrorMessage = this.getPanelErrorMessage();\n const formattedValues =\n isLoaded && valuesColumn != null\n ? this.getCachedValues(values, valuesColumn, formatter)\n : [];\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 widgetName=\"Dropdown Filter\"\n widgetType=\"DropdownFilter\"\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 mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string; glContainer: Container }\n) => {\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 isLinkerActive,\n disableLinking,\n settings: getSettings(state),\n panelTableMap,\n dashboardLinks,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n DropdownFilterPanel\n);\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, ReactElement } from 'react';
|
|
2
2
|
import { PanelComponent } from '@deephaven/dashboard';
|
|
3
|
-
import { Container, EventEmitter } from '@deephaven/golden-layout';
|
|
3
|
+
import type { Container, EventEmitter } from '@deephaven/golden-layout';
|
|
4
4
|
import { TableTemplate } from '@deephaven/jsapi-shim';
|
|
5
5
|
import { AdvancedFilter, ColumnName, DehydratedIrisGridState, QuickFilter } from '@deephaven/iris-grid';
|
|
6
6
|
import { GridState } from '@deephaven/grid';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterSetManagerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,EAGL,cAAc,EACf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"FilterSetManagerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.tsx"],"names":[],"mappings":"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"}
|