@deephaven/dashboard-core-plugins 0.19.2-beta.5 → 0.20.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartPlugin.js.map +1 -1
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPlugin.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +10 -8
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +16 -15
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.d.ts.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js +13 -15
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.d.ts.map +1 -1
- package/dist/linker/LinkerOverlayContent.js +7 -9
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/panels/ChartPanel.d.ts +3 -3
- package/dist/panels/ChartPanel.d.ts.map +1 -1
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.d.ts +1 -1
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +32 -28
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.d.ts.map +1 -1
- package/dist/panels/PandasPanel.js +7 -6
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/RenameDialog.js +7 -7
- package/dist/panels/RenameDialog.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.d.ts +2 -2
- package/dist/panels/WidgetPanelTooltip.d.ts.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/package.json +19 -19
|
@@ -5,7 +5,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
5
5
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
6
6
|
// background click is just a convience method, not an actual a11y issue
|
|
7
7
|
import React, { Component } from 'react';
|
|
8
|
-
import { CardFlip } from '@deephaven/components';
|
|
8
|
+
import { Button, CardFlip } from '@deephaven/components';
|
|
9
9
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
10
10
|
import { vsGear } from '@deephaven/icons';
|
|
11
11
|
import memoizee from 'memoizee';
|
|
@@ -260,14 +260,13 @@ class InputFilter extends Component {
|
|
|
260
260
|
className: "text-muted small"
|
|
261
261
|
}, "Input filter control will apply its filter to all columns matching this name in this dashboard.")), /*#__PURE__*/React.createElement("div", {
|
|
262
262
|
className: "input-filter-settings-buttons"
|
|
263
|
-
}, /*#__PURE__*/React.createElement(
|
|
264
|
-
|
|
265
|
-
className: "btn btn-outline-primary",
|
|
263
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
264
|
+
kind: "secondary",
|
|
266
265
|
onClick: this.handleSettingsCancel,
|
|
267
266
|
disabled: column == null
|
|
268
|
-
}, "Cancel"), /*#__PURE__*/React.createElement(
|
|
269
|
-
|
|
270
|
-
className: "
|
|
267
|
+
}, "Cancel"), /*#__PURE__*/React.createElement(Button, {
|
|
268
|
+
kind: "primary",
|
|
269
|
+
className: "ml-2",
|
|
271
270
|
onClick: this.handleSettingsSave,
|
|
272
271
|
disabled: selectedColumn == null
|
|
273
272
|
}, "Save")))), /*#__PURE__*/React.createElement("div", {
|
|
@@ -294,14 +293,16 @@ class InputFilter extends Component {
|
|
|
294
293
|
spellCheck: "false"
|
|
295
294
|
}))), /*#__PURE__*/React.createElement("div", {
|
|
296
295
|
className: "input-filter-menu"
|
|
297
|
-
}, /*#__PURE__*/React.createElement(
|
|
298
|
-
|
|
299
|
-
className: "
|
|
300
|
-
onClick: this.handleSettingsClick
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
296
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
297
|
+
kind: "ghost",
|
|
298
|
+
className: "m-2 px-2",
|
|
299
|
+
onClick: this.handleSettingsClick,
|
|
300
|
+
icon: /*#__PURE__*/React.createElement(FontAwesomeIcon, {
|
|
301
|
+
icon: vsGear,
|
|
302
|
+
transform: "grow-4"
|
|
303
|
+
}),
|
|
304
|
+
tooltip: "Input Filter Settings"
|
|
305
|
+
}))));
|
|
305
306
|
}
|
|
306
307
|
|
|
307
308
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputFilter.js","names":["React","Component","CardFlip","FontAwesomeIcon","vsGear","memoizee","debounce","Log","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","columns","index","name","type","length","shortType","substring","lastIndexOf","onChange","column","value","isValueShown","state","handleColumnChange","bind","handleInputKeyPress","handleValueChange","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","inputRef","createRef","selectedColumn","componentDidUpdate","prevProps","prevState","propColumn","setState","undefined","focusInput","sendUpdate","componentWillUnmount","flush","event","target","parseInt","debug2","key","preventDefault","stopPropagation","current","select","focus","clearFilter","setFilterState","update","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","map","columnItem","width"],"sources":["../../../src/controls/input-filter/InputFilter.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n RefObject,\n MouseEvent,\n KeyboardEvent,\n ReactElement,\n} from 'react';\nimport { CardFlip } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport { Column } from '@deephaven/jsapi-shim';\nimport memoizee from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './InputFilter.scss';\n\nconst log = Log.module('InputFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport type InputFilterColumn = Pick<Column, 'type' | 'name'>;\n\ninterface InputFilterProps {\n columns: InputFilterColumn[];\n column: InputFilterColumn;\n isValueShown: boolean;\n value: string;\n onChange: (change: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n}\n\nexport interface InputFilterState {\n column?: InputFilterColumn;\n selectedColumn?: InputFilterColumn;\n value?: string;\n isValueShown?: boolean;\n}\n\nclass InputFilter extends Component<InputFilterProps, InputFilterState> {\n static PLACEHOLDER = 'Enter value...';\n\n static defaultProps = {\n column: null,\n isValueShown: false,\n value: null,\n };\n\n constructor(props: InputFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleInputKeyPress = this.handleInputKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n\n this.inputRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n value,\n isValueShown,\n };\n }\n\n componentDidUpdate(\n prevProps: InputFilterProps,\n prevState: InputFilterState\n ): void {\n const { column: propColumn } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (propColumn !== prevProps.column) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ column: propColumn, selectedColumn: propColumn });\n }\n\n if (\n isValueShown !== undefined &&\n isValueShown &&\n isValueShown !== prevState.isValueShown\n ) {\n this.focusInput();\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n inputRef: RefObject<HTMLInputElement>;\n\n getItemLabel = memoizee((columns, index) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { columns } = this.props;\n const { value } = event.target;\n const selectedColumn = columns[parseInt(value, 10)];\n\n log.debug2('handleColumnChange', selectedColumn);\n\n this.setState({ selectedColumn, value: undefined });\n }\n\n handleInputKeyPress(event: KeyboardEvent<HTMLInputElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.setState(\n ({ value }) => (value == null ? { value: '' } : null),\n () => {\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n );\n }\n }\n\n handleValueChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: true });\n }\n\n handleSettingsSave(): void {\n const { selectedColumn } = this.state;\n this.setState({ column: selectedColumn, isValueShown: true });\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n event.stopPropagation();\n }\n\n handleBackgroundClick(event: MouseEvent<HTMLDivElement>): void {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.inputRef.current) {\n this.focusInput();\n }\n }\n\n focusInput(): void {\n if (this.inputRef.current !== null) {\n this.inputRef.current.select();\n this.inputRef.current.focus();\n }\n }\n\n clearFilter(): void {\n this.setState({ value: '' });\n }\n\n setFilterState({\n name,\n type,\n value,\n isValueShown,\n }: {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n }): void {\n const column = name != null && type != null ? { name, type } : undefined;\n const update =\n isValueShown === undefined\n ? { column, value }\n : { column, value, isValueShown };\n this.setState(update);\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const { columns } = this.props;\n const { column, isValueShown, selectedColumn, value } = this.state;\n const inputLength =\n value == null || value.length === 0\n ? InputFilter.PLACEHOLDER.length\n : value.length;\n let titleLabel = null;\n if (column != null) {\n const columnIndex = columns.findIndex(\n item => item.name === column.name && item.type === column.type\n );\n titleLabel =\n columnIndex >= 0\n ? this.getItemLabel(columns, columnIndex)\n : column.name;\n }\n\n return (\n <CardFlip\n className=\"input-filter fill-parent-absolute\"\n isFlipped={isValueShown ?? false}\n >\n <div className=\"input-filter-settings-card\">\n <div className=\"input-filter-settings-content\">\n <div className=\"input-filter-settings-grid\">\n <label>Filter Column</label>\n <select\n value={columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n >\n {columns.map((columnItem, index) => (\n <option\n key={`${columnItem.name}/${columnItem.type}`}\n value={index}\n >\n {this.getItemLabel(columns, index)}\n </option>\n ))}\n {columns.length === 0 && (\n <option value=\"-1\" disabled>\n No Available Columns\n </option>\n )}\n </select>\n <div className=\"text-muted small\">\n Input filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n <div className=\"input-filter-settings-buttons\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary\"\n onClick={this.handleSettingsCancel}\n disabled={column == null}\n >\n Cancel\n </button>\n <button\n type=\"button\"\n className=\"btn btn-primary ml-2\"\n onClick={this.handleSettingsSave}\n disabled={selectedColumn == null}\n >\n Save\n </button>\n </div>\n </div>\n </div>\n\n <div\n className=\"input-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"input-filter-column\">\n <div className=\"input-filter-column-title\">{titleLabel} Filter</div>\n </div>\n <div className=\"d-flex justify-content-center align-items-center h-100 w-100\">\n <div className=\"input-filter-value-input d-flex flex-column justify-content-center\">\n <input\n type=\"text\"\n ref={this.inputRef}\n placeholder={InputFilter.PLACEHOLDER}\n value={value ?? ''}\n onChange={this.handleValueChange}\n onKeyPress={this.handleInputKeyPress}\n style={{ width: `${inputLength + 3}ch` }}\n spellCheck=\"false\"\n />\n </div>\n </div>\n <div className=\"input-filter-menu\">\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n >\n <FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />\n </button>\n </div>\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default InputFilter;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InputFilter.js","names":["React","Component","Button","CardFlip","FontAwesomeIcon","vsGear","memoizee","debounce","Log","log","module","UPDATE_DEBOUNCE","InputFilter","constructor","props","columns","index","name","type","length","shortType","substring","lastIndexOf","onChange","column","value","isValueShown","state","handleColumnChange","bind","handleInputKeyPress","handleValueChange","handleSettingsCancel","handleSettingsClick","handleSettingsSave","handleBackgroundClick","inputRef","createRef","selectedColumn","componentDidUpdate","prevProps","prevState","propColumn","setState","undefined","focusInput","sendUpdate","componentWillUnmount","flush","event","target","parseInt","debug2","key","preventDefault","stopPropagation","current","select","focus","clearFilter","setFilterState","update","render","inputLength","PLACEHOLDER","titleLabel","columnIndex","findIndex","item","getItemLabel","map","columnItem","width"],"sources":["../../../src/controls/input-filter/InputFilter.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n RefObject,\n MouseEvent,\n KeyboardEvent,\n ReactElement,\n} from 'react';\nimport { Button, CardFlip } from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGear } from '@deephaven/icons';\nimport { Column } from '@deephaven/jsapi-shim';\nimport memoizee from 'memoizee';\nimport debounce from 'lodash.debounce';\nimport Log from '@deephaven/log';\nimport './InputFilter.scss';\n\nconst log = Log.module('InputFilter');\nconst UPDATE_DEBOUNCE = 150;\n\nexport type InputFilterColumn = Pick<Column, 'type' | 'name'>;\n\ninterface InputFilterProps {\n columns: InputFilterColumn[];\n column: InputFilterColumn;\n isValueShown: boolean;\n value: string;\n onChange: (change: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }) => void;\n}\n\nexport interface InputFilterState {\n column?: InputFilterColumn;\n selectedColumn?: InputFilterColumn;\n value?: string;\n isValueShown?: boolean;\n}\n\nclass InputFilter extends Component<InputFilterProps, InputFilterState> {\n static PLACEHOLDER = 'Enter value...';\n\n static defaultProps = {\n column: null,\n isValueShown: false,\n value: null,\n };\n\n constructor(props: InputFilterProps) {\n super(props);\n\n this.handleColumnChange = this.handleColumnChange.bind(this);\n this.handleInputKeyPress = this.handleInputKeyPress.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n\n this.inputRef = React.createRef();\n\n const { column, isValueShown, value } = props;\n this.state = {\n column,\n selectedColumn: column,\n value,\n isValueShown,\n };\n }\n\n componentDidUpdate(\n prevProps: InputFilterProps,\n prevState: InputFilterState\n ): void {\n const { column: propColumn } = this.props;\n const { column, value, isValueShown } = this.state;\n\n if (propColumn !== prevProps.column) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ column: propColumn, selectedColumn: propColumn });\n }\n\n if (\n isValueShown !== undefined &&\n isValueShown &&\n isValueShown !== prevState.isValueShown\n ) {\n this.focusInput();\n }\n\n if (\n column !== prevState.column ||\n value !== prevState.value ||\n isValueShown !== prevState.isValueShown\n ) {\n this.sendUpdate();\n }\n }\n\n componentWillUnmount(): void {\n this.sendUpdate.flush();\n }\n\n inputRef: RefObject<HTMLInputElement>;\n\n getItemLabel = memoizee((columns, index) => {\n const { name, type } = columns[index];\n\n if (\n (index > 0 && columns[index - 1].name === name) ||\n (index < columns.length - 1 && columns[index + 1].name === name)\n ) {\n const shortType = type.substring(type.lastIndexOf('.') + 1);\n return `${name} (${shortType})`;\n }\n\n return name;\n });\n\n handleColumnChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { columns } = this.props;\n const { value } = event.target;\n const selectedColumn = columns[parseInt(value, 10)];\n\n log.debug2('handleColumnChange', selectedColumn);\n\n this.setState({ selectedColumn, value: undefined });\n }\n\n handleInputKeyPress(event: KeyboardEvent<HTMLInputElement>): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.setState(\n ({ value }) => (value == null ? { value: '' } : null),\n () => {\n this.sendUpdate();\n this.sendUpdate.flush();\n }\n );\n }\n }\n\n handleValueChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value } = event.target;\n\n log.debug2('handleValueChange', value);\n\n this.setState({ value });\n }\n\n handleSettingsCancel(): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: true });\n }\n\n handleSettingsSave(): void {\n const { selectedColumn } = this.state;\n this.setState({ column: selectedColumn, isValueShown: true });\n }\n\n handleSettingsClick(event: MouseEvent<HTMLButtonElement>): void {\n const { column } = this.state;\n this.setState({ selectedColumn: column, isValueShown: false });\n event.stopPropagation();\n }\n\n handleBackgroundClick(event: MouseEvent<HTMLDivElement>): void {\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.inputRef.current) {\n this.focusInput();\n }\n }\n\n focusInput(): void {\n if (this.inputRef.current !== null) {\n this.inputRef.current.select();\n this.inputRef.current.focus();\n }\n }\n\n clearFilter(): void {\n this.setState({ value: '' });\n }\n\n setFilterState({\n name,\n type,\n value,\n isValueShown,\n }: {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n }): void {\n const column = name != null && type != null ? { name, type } : undefined;\n const update =\n isValueShown === undefined\n ? { column, value }\n : { column, value, isValueShown };\n this.setState(update);\n }\n\n sendUpdate = debounce(() => {\n const { onChange } = this.props;\n const { column, value, isValueShown } = this.state;\n onChange({ column, isValueShown, value });\n }, UPDATE_DEBOUNCE);\n\n render(): ReactElement {\n const { columns } = this.props;\n const { column, isValueShown, selectedColumn, value } = this.state;\n const inputLength =\n value == null || value.length === 0\n ? InputFilter.PLACEHOLDER.length\n : value.length;\n let titleLabel = null;\n if (column != null) {\n const columnIndex = columns.findIndex(\n item => item.name === column.name && item.type === column.type\n );\n titleLabel =\n columnIndex >= 0\n ? this.getItemLabel(columns, columnIndex)\n : column.name;\n }\n\n return (\n <CardFlip\n className=\"input-filter fill-parent-absolute\"\n isFlipped={isValueShown ?? false}\n >\n <div className=\"input-filter-settings-card\">\n <div className=\"input-filter-settings-content\">\n <div className=\"input-filter-settings-grid\">\n <label>Filter Column</label>\n <select\n value={columns.findIndex(\n item =>\n item.name === selectedColumn?.name &&\n item.type === selectedColumn?.type\n )}\n className=\"custom-select\"\n onChange={this.handleColumnChange}\n >\n {columns.map((columnItem, index) => (\n <option\n key={`${columnItem.name}/${columnItem.type}`}\n value={index}\n >\n {this.getItemLabel(columns, index)}\n </option>\n ))}\n {columns.length === 0 && (\n <option value=\"-1\" disabled>\n No Available Columns\n </option>\n )}\n </select>\n <div className=\"text-muted small\">\n Input filter control will apply its filter to all columns\n matching this name in this dashboard.\n </div>\n </div>\n <div className=\"input-filter-settings-buttons\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n disabled={column == null}\n >\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n className=\"ml-2\"\n onClick={this.handleSettingsSave}\n disabled={selectedColumn == null}\n >\n Save\n </Button>\n </div>\n </div>\n </div>\n\n <div\n className=\"input-filter-value-card\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"input-filter-column\">\n <div className=\"input-filter-column-title\">{titleLabel} Filter</div>\n </div>\n <div className=\"d-flex justify-content-center align-items-center h-100 w-100\">\n <div className=\"input-filter-value-input d-flex flex-column justify-content-center\">\n <input\n type=\"text\"\n ref={this.inputRef}\n placeholder={InputFilter.PLACEHOLDER}\n value={value ?? ''}\n onChange={this.handleValueChange}\n onKeyPress={this.handleInputKeyPress}\n style={{ width: `${inputLength + 3}ch` }}\n spellCheck=\"false\"\n />\n </div>\n </div>\n <div className=\"input-filter-menu\">\n <Button\n kind=\"ghost\"\n className=\"m-2 px-2\"\n onClick={this.handleSettingsClick}\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n tooltip=\"Input Filter Settings\"\n />\n </div>\n </div>\n </CardFlip>\n );\n }\n}\n\nexport default InputFilter;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownStartPage.d.ts","sourceRoot":"","sources":["../../../src/controls/markdown/MarkdownStartPage.tsx"],"names":[],"mappings":"AAAA,OAAc,EAEZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACb,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MarkdownStartPage.d.ts","sourceRoot":"","sources":["../../../src/controls/markdown/MarkdownStartPage.tsx"],"names":[],"mappings":"AAAA,OAAc,EAEZ,iBAAiB,EACjB,aAAa,EACb,YAAY,EACb,MAAM,OAAO,CAAC;AAYf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAIrE,UAAU,sBAAsB;IAC9B,eAAe,EAAE,oBAAoB,EAAE,CAAC;IACxC,MAAM,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACjD,QAAQ,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAC/C,QAAQ,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACpD;AAED,UAAU,sBAAsB;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED,cAAM,iBAAkB,SAAQ,aAAa,CAC3C,sBAAsB,EACtB,sBAAsB,CACvB;IACC,MAAM,CAAC,YAAY;;sBAEL,IAAI;wBACF,IAAI;wBACJ,IAAI;MAClB;gBAEU,KAAK,EAAE,sBAAsB;IASzC,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAI7D,sBAAsB,IAAI,IAAI;IAI9B,oBAAoB,CAAC,QAAQ,CAAC,EAAE,oBAAoB,GAAG,IAAI;IAW3D,MAAM,IAAI,YAAY;CAiEvB;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
2
|
|
|
3
3
|
import React, { PureComponent } from 'react';
|
|
4
|
-
import { Modal, ModalBody, ModalFooter, ModalHeader } from '@deephaven/components';
|
|
4
|
+
import { Button, Modal, ModalBody, ModalFooter, ModalHeader } from '@deephaven/components';
|
|
5
5
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
6
6
|
import { vsTrash } from '@deephaven/icons';
|
|
7
7
|
import Log from '@deephaven/log';
|
|
@@ -67,9 +67,9 @@ class MarkdownStartPage extends PureComponent {
|
|
|
67
67
|
className: "list-title"
|
|
68
68
|
}, "Start"), /*#__PURE__*/React.createElement("div", {
|
|
69
69
|
className: "list-item"
|
|
70
|
-
}, /*#__PURE__*/React.createElement(
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
71
|
+
kind: "ghost",
|
|
72
|
+
className: "title",
|
|
73
73
|
onClick: onCreate
|
|
74
74
|
}, "New Markdown Note"))), /*#__PURE__*/React.createElement("div", {
|
|
75
75
|
className: "markdown-panel-start-list"
|
|
@@ -78,9 +78,9 @@ class MarkdownStartPage extends PureComponent {
|
|
|
78
78
|
}, "Recently Closed from Dashboard"), closedMarkdowns.map(markdown => /*#__PURE__*/React.createElement("div", {
|
|
79
79
|
className: "list-item",
|
|
80
80
|
key: markdown.id
|
|
81
|
-
}, /*#__PURE__*/React.createElement(
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
82
|
+
kind: "ghost",
|
|
83
|
+
className: "title",
|
|
84
84
|
onClick: () => onOpen(markdown)
|
|
85
85
|
}, markdown.title), /*#__PURE__*/React.createElement("button", {
|
|
86
86
|
className: "btn-link icon",
|
|
@@ -94,16 +94,14 @@ class MarkdownStartPage extends PureComponent {
|
|
|
94
94
|
isOpen: isDeleteModalShown,
|
|
95
95
|
toggle: this.handleDeleteModalClose,
|
|
96
96
|
className: "modal-dialog-centered markdown-delete-modal theme-bg-light"
|
|
97
|
-
}, /*#__PURE__*/React.createElement(ModalHeader, null, "Are you sure you want to permanently delete this note?"), /*#__PURE__*/React.createElement(ModalBody, null, "You can't undo this action."), /*#__PURE__*/React.createElement(ModalFooter, null, /*#__PURE__*/React.createElement(
|
|
98
|
-
|
|
99
|
-
onClick: this.handleDeleteModalClose
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
className: "btn btn-danger",
|
|
97
|
+
}, /*#__PURE__*/React.createElement(ModalHeader, null, "Are you sure you want to permanently delete this note?"), /*#__PURE__*/React.createElement(ModalBody, null, "You can't undo this action."), /*#__PURE__*/React.createElement(ModalFooter, null, /*#__PURE__*/React.createElement(Button, {
|
|
98
|
+
kind: "secondary",
|
|
99
|
+
onClick: this.handleDeleteModalClose
|
|
100
|
+
}, "Cancel"), /*#__PURE__*/React.createElement(Button, {
|
|
101
|
+
kind: "danger",
|
|
103
102
|
onClick: () => {
|
|
104
103
|
this.handleDeleteMarkdown(toBeDeleted);
|
|
105
|
-
}
|
|
106
|
-
type: "button"
|
|
104
|
+
}
|
|
107
105
|
}, "Delete"))))));
|
|
108
106
|
}
|
|
109
107
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownStartPage.js","names":["React","PureComponent","Modal","ModalBody","ModalFooter","ModalHeader","FontAwesomeIcon","vsTrash","Log","log","module","MarkdownStartPage","constructor","props","handleDeleteButtonClick","bind","handleDeleteModalClose","state","isDeleteModalShown","markdown","setState","toBeDeleted","undefined","handleDeleteMarkdown","debug","onDelete","render","closedMarkdowns","onOpen","onCreate","map","id","title"],"sources":["../../../src/controls/markdown/MarkdownStartPage.tsx"],"sourcesContent":["import React, {\n Key,\n MouseEventHandler,\n PureComponent,\n ReactElement,\n} from 'react';\nimport {\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTrash } from '@deephaven/icons';\n\nimport Log from '@deephaven/log';\nimport type { ReactComponentConfig } from '@deephaven/golden-layout';\n\nconst log = Log.module('MarkdownStartPage');\n\ninterface MarkdownStartPageProps {\n closedMarkdowns: ReactComponentConfig[];\n onOpen: (markdown: ReactComponentConfig) => void;\n onCreate: MouseEventHandler<HTMLButtonElement>;\n onDelete: (markdown: ReactComponentConfig) => void;\n}\n\ninterface MarkdownStartPageState {\n isDeleteModalShown: boolean;\n toBeDeleted?: ReactComponentConfig;\n}\n\nclass MarkdownStartPage extends PureComponent<\n MarkdownStartPageProps,\n MarkdownStartPageState\n> {\n static defaultProps = {\n closedMarkdowns: [],\n onOpen: (): void => undefined,\n onCreate: (): void => undefined,\n onDelete: (): void => undefined,\n };\n\n constructor(props: MarkdownStartPageProps) {\n super(props);\n this.handleDeleteButtonClick = this.handleDeleteButtonClick.bind(this);\n this.handleDeleteModalClose = this.handleDeleteModalClose.bind(this);\n this.state = {\n isDeleteModalShown: false,\n };\n }\n\n handleDeleteButtonClick(markdown: ReactComponentConfig): void {\n this.setState({ isDeleteModalShown: true, toBeDeleted: markdown });\n }\n\n handleDeleteModalClose(): void {\n this.setState({ isDeleteModalShown: false, toBeDeleted: undefined });\n }\n\n handleDeleteMarkdown(markdown?: ReactComponentConfig): void {\n log.debug('delete markdown: ', markdown);\n\n if (markdown !== undefined) {\n const { onDelete } = this.props;\n onDelete(markdown);\n }\n\n this.setState({ isDeleteModalShown: false, toBeDeleted: undefined });\n }\n\n render(): ReactElement {\n const { closedMarkdowns, onOpen, onCreate } = this.props;\n const { isDeleteModalShown, toBeDeleted } = this.state;\n\n return (\n <div className=\"markdown-panel-start-page h-100 w-100\">\n <div className=\"markdown-panel-start-page-container\">\n <div className=\"markdown-panel-start-list\">\n <h3 className=\"list-title\">Start</h3>\n <div className=\"list-item\">\n <
|
|
1
|
+
{"version":3,"file":"MarkdownStartPage.js","names":["React","PureComponent","Button","Modal","ModalBody","ModalFooter","ModalHeader","FontAwesomeIcon","vsTrash","Log","log","module","MarkdownStartPage","constructor","props","handleDeleteButtonClick","bind","handleDeleteModalClose","state","isDeleteModalShown","markdown","setState","toBeDeleted","undefined","handleDeleteMarkdown","debug","onDelete","render","closedMarkdowns","onOpen","onCreate","map","id","title"],"sources":["../../../src/controls/markdown/MarkdownStartPage.tsx"],"sourcesContent":["import React, {\n Key,\n MouseEventHandler,\n PureComponent,\n ReactElement,\n} from 'react';\nimport {\n Button,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n} from '@deephaven/components';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsTrash } from '@deephaven/icons';\n\nimport Log from '@deephaven/log';\nimport type { ReactComponentConfig } from '@deephaven/golden-layout';\n\nconst log = Log.module('MarkdownStartPage');\n\ninterface MarkdownStartPageProps {\n closedMarkdowns: ReactComponentConfig[];\n onOpen: (markdown: ReactComponentConfig) => void;\n onCreate: MouseEventHandler<HTMLButtonElement>;\n onDelete: (markdown: ReactComponentConfig) => void;\n}\n\ninterface MarkdownStartPageState {\n isDeleteModalShown: boolean;\n toBeDeleted?: ReactComponentConfig;\n}\n\nclass MarkdownStartPage extends PureComponent<\n MarkdownStartPageProps,\n MarkdownStartPageState\n> {\n static defaultProps = {\n closedMarkdowns: [],\n onOpen: (): void => undefined,\n onCreate: (): void => undefined,\n onDelete: (): void => undefined,\n };\n\n constructor(props: MarkdownStartPageProps) {\n super(props);\n this.handleDeleteButtonClick = this.handleDeleteButtonClick.bind(this);\n this.handleDeleteModalClose = this.handleDeleteModalClose.bind(this);\n this.state = {\n isDeleteModalShown: false,\n };\n }\n\n handleDeleteButtonClick(markdown: ReactComponentConfig): void {\n this.setState({ isDeleteModalShown: true, toBeDeleted: markdown });\n }\n\n handleDeleteModalClose(): void {\n this.setState({ isDeleteModalShown: false, toBeDeleted: undefined });\n }\n\n handleDeleteMarkdown(markdown?: ReactComponentConfig): void {\n log.debug('delete markdown: ', markdown);\n\n if (markdown !== undefined) {\n const { onDelete } = this.props;\n onDelete(markdown);\n }\n\n this.setState({ isDeleteModalShown: false, toBeDeleted: undefined });\n }\n\n render(): ReactElement {\n const { closedMarkdowns, onOpen, onCreate } = this.props;\n const { isDeleteModalShown, toBeDeleted } = this.state;\n\n return (\n <div className=\"markdown-panel-start-page h-100 w-100\">\n <div className=\"markdown-panel-start-page-container\">\n <div className=\"markdown-panel-start-list\">\n <h3 className=\"list-title\">Start</h3>\n <div className=\"list-item\">\n <Button kind=\"ghost\" className=\"title\" onClick={onCreate}>\n New Markdown Note\n </Button>\n </div>\n </div>\n <div className=\"markdown-panel-start-list\">\n <h3 className=\"list-title\">Recently Closed from Dashboard</h3>\n {closedMarkdowns.map(markdown => (\n <div className=\"list-item\" key={markdown.id as Key}>\n <Button\n kind=\"ghost\"\n className=\"title\"\n onClick={() => onOpen(markdown)}\n >\n {markdown.title}\n </Button>\n <button\n className=\"btn-link icon\"\n type=\"button\"\n onClick={() => {\n this.handleDeleteButtonClick(markdown);\n }}\n >\n <FontAwesomeIcon icon={vsTrash} />\n </button>\n </div>\n ))}\n <Modal\n isOpen={isDeleteModalShown}\n toggle={this.handleDeleteModalClose}\n className=\"modal-dialog-centered markdown-delete-modal theme-bg-light\"\n >\n <ModalHeader>\n Are you sure you want to permanently delete this note?\n </ModalHeader>\n <ModalBody>You can't undo this action.</ModalBody>\n <ModalFooter>\n <Button kind=\"secondary\" onClick={this.handleDeleteModalClose}>\n Cancel\n </Button>\n <Button\n kind=\"danger\"\n onClick={() => {\n this.handleDeleteMarkdown(toBeDeleted);\n }}\n >\n Delete\n </Button>\n </ModalFooter>\n </Modal>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default MarkdownStartPage;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkerOverlayContent.d.ts","sourceRoot":"","sources":["../../src/linker/LinkerOverlayContent.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"LinkerOverlayContent.d.ts","sourceRoot":"","sources":["../../src/linker/LinkerOverlayContent.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOpD,OAAO,EAAe,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGjE,OAAO,EAEL,IAAI,EACJ,gBAAgB,EAChB,SAAS,EACV,MAAM,eAAe,CAAC;AAEvB,OAAO,6BAA6B,CAAC;AAIrC,oBAAY,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,oBAAY,yBAAyB,GAAG;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,oBAAY,yBAAyB,GAAG;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,SAAS,CACjD,yBAAyB,EACzB,yBAAyB,CAC1B;IACC,MAAM,CAAC,YAAY;;MAEjB;gBAEU,KAAK,EAAE,yBAAyB;IAY5C,iBAAiB,IAAI,IAAI;IAKzB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IAItD,oBAAoB,IAAI,IAAI;IAI5B,6DAA6D;IAC7D,qBAAqB,CAAC,SAAS,EAAE,SAAS,GAAG,gBAAgB;IA+B7D,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAOxC,mBAAmB,IAAI,IAAI;IAK3B,MAAM,IAAI,GAAG,CAAC,OAAO;CAgFtB;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -2,7 +2,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
2
2
|
|
|
3
3
|
import React, { Component } from 'react';
|
|
4
4
|
import classNames from 'classnames';
|
|
5
|
-
import { ContextActions, GLOBAL_SHORTCUTS } from '@deephaven/components';
|
|
5
|
+
import { Button, ContextActions, GLOBAL_SHORTCUTS } from '@deephaven/components';
|
|
6
6
|
import { LayoutUtils } from '@deephaven/dashboard';
|
|
7
7
|
import Log from '@deephaven/log';
|
|
8
8
|
import { isLinkableFromPanel } from "./LinkerUtils.js";
|
|
@@ -174,14 +174,12 @@ export class LinkerOverlayContent extends Component {
|
|
|
174
174
|
className: "toast-body"
|
|
175
175
|
}, messageText), /*#__PURE__*/React.createElement("div", {
|
|
176
176
|
className: "toast-footer"
|
|
177
|
-
}, /*#__PURE__*/React.createElement(
|
|
178
|
-
|
|
179
|
-
onClick: onAllLinksDeleted
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
onClick: onDone,
|
|
184
|
-
type: "button"
|
|
177
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
178
|
+
kind: "secondary",
|
|
179
|
+
onClick: onAllLinksDeleted
|
|
180
|
+
}, "Clear All"), /*#__PURE__*/React.createElement(Button, {
|
|
181
|
+
kind: "primary",
|
|
182
|
+
onClick: onDone
|
|
185
183
|
}, "Done"))), /*#__PURE__*/React.createElement(ContextActions, {
|
|
186
184
|
actions: [{
|
|
187
185
|
action: this.handleEscapePressed,
|
|
@@ -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 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 != null && 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","Button","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 {\n Button,\n ContextActions,\n GLOBAL_SHORTCUTS,\n} from '@deephaven/components';\nimport { LayoutUtils, PanelManager } from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport type { Container } 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((glContainer as unknown) as Container);\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 != null && 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 kind=\"secondary\" onClick={onAllLinksDeleted}>\n Clear All\n </Button>\n <Button kind=\"primary\" onClick={onDone}>\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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"}
|
|
@@ -5,7 +5,7 @@ import { InputFilter, ColumnName } from '@deephaven/iris-grid';
|
|
|
5
5
|
import { SeriesPlotStyle, TableTemplate } from '@deephaven/jsapi-shim';
|
|
6
6
|
import { WorkspaceSettings } from '@deephaven/redux';
|
|
7
7
|
import { Pending } from '@deephaven/utils';
|
|
8
|
-
import
|
|
8
|
+
import type { Container, EventEmitter } from '@deephaven/golden-layout';
|
|
9
9
|
import { ModelIndex } from '@deephaven/grid';
|
|
10
10
|
import { AdvancedFilterOptions, SortDirection } from '@deephaven/jsapi-utils';
|
|
11
11
|
import { ColumnMap } from './ChartFilterOverlay';
|
|
@@ -76,8 +76,8 @@ export interface GLChartPanelState {
|
|
|
76
76
|
figure?: string;
|
|
77
77
|
}
|
|
78
78
|
export interface ChartPanelProps {
|
|
79
|
-
glContainer:
|
|
80
|
-
glEventHub:
|
|
79
|
+
glContainer: Container;
|
|
80
|
+
glEventHub: EventEmitter;
|
|
81
81
|
metadata: ChartPanelMetadata;
|
|
82
82
|
/** Function to build the ChartModel used by this ChartPanel. Can return a promise. */
|
|
83
83
|
makeModel: () => Promise<ChartModel>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartPanel.d.ts","sourceRoot":"","sources":["../../src/panels/ChartPanel.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMlE,OAAO,EACL,KAAK,EACL,UAAU,EACV,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAiB,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAW,EAET,eAAe,EACf,aAAa,EACd,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAKL,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,OAAO,EAGR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,YAAY,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ChartPanel.d.ts","sourceRoot":"","sources":["../../src/panels/ChartPanel.tsx"],"names":[],"mappings":"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"}
|