@deephaven/dashboard-core-plugins 0.54.1-ui.1 → 0.55.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/{ChartPlugin.d.ts → ChartPanelPlugin.d.ts} +3 -3
- package/dist/ChartPanelPlugin.d.ts.map +1 -0
- package/dist/{ChartPlugin.js → ChartPanelPlugin.js} +4 -34
- package/dist/ChartPanelPlugin.js.map +1 -0
- package/dist/ChartPluginConfig.d.ts.map +1 -1
- package/dist/ChartPluginConfig.js +3 -2
- package/dist/ChartPluginConfig.js.map +1 -1
- package/dist/ChartWidgetPlugin.d.ts +5 -0
- package/dist/ChartWidgetPlugin.d.ts.map +1 -0
- package/dist/ChartWidgetPlugin.js +39 -0
- package/dist/ChartWidgetPlugin.js.map +1 -0
- package/dist/{GridPlugin.d.ts → GridPanelPlugin.d.ts} +3 -3
- package/dist/GridPanelPlugin.d.ts.map +1 -0
- package/dist/{GridPlugin.js → GridPanelPlugin.js} +3 -38
- package/dist/GridPanelPlugin.js.map +1 -0
- package/dist/GridPluginConfig.d.ts.map +1 -1
- package/dist/GridPluginConfig.js +3 -2
- package/dist/GridPluginConfig.js.map +1 -1
- package/dist/GridWidgetPlugin.d.ts +5 -0
- package/dist/GridWidgetPlugin.d.ts.map +1 -0
- package/dist/GridWidgetPlugin.js +38 -0
- package/dist/GridWidgetPlugin.js.map +1 -0
- package/dist/{PandasPlugin.d.ts → PandasPanelPlugin.d.ts} +3 -3
- package/dist/PandasPanelPlugin.d.ts.map +1 -0
- package/dist/PandasPanelPlugin.js +26 -0
- package/dist/PandasPanelPlugin.js.map +1 -0
- package/dist/PandasPluginConfig.d.ts.map +1 -1
- package/dist/PandasPluginConfig.js +3 -2
- package/dist/PandasPluginConfig.js.map +1 -1
- package/dist/PandasWidgetPlugin.d.ts +5 -0
- package/dist/PandasWidgetPlugin.d.ts.map +1 -0
- package/dist/{PandasPlugin.js → PandasWidgetPlugin.js} +5 -25
- package/dist/PandasWidgetPlugin.js.map +1 -0
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts +3 -3
- package/dist/controls/dropdown-filter/DropdownFilter.d.ts.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js +10 -14
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.d.ts +1 -1
- package/dist/controls/input-filter/InputFilter.d.ts.map +1 -1
- package/dist/controls/input-filter/InputFilter.js +5 -8
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/panels/FilterSetManager.d.ts +2 -2
- package/dist/panels/FilterSetManager.d.ts.map +1 -1
- package/dist/panels/FilterSetManager.js +8 -13
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/PandasPanel.d.ts +1 -4
- package/dist/panels/PandasPanel.d.ts.map +1 -1
- package/dist/panels/PandasPanel.js +2 -30
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/PandasReloadButton.d.ts +6 -0
- package/dist/panels/PandasReloadButton.d.ts.map +1 -0
- package/dist/panels/PandasReloadButton.js +33 -0
- package/dist/panels/PandasReloadButton.js.map +1 -0
- package/package.json +24 -24
- package/dist/ChartPlugin.d.ts.map +0 -1
- package/dist/ChartPlugin.js.map +0 -1
- package/dist/GridPlugin.d.ts.map +0 -1
- package/dist/GridPlugin.js.map +0 -1
- package/dist/PandasPlugin.d.ts.map +0 -1
- package/dist/PandasPlugin.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterSetManager.js","names":["React","Component","memoizeOne","shortid","FontAwesomeIcon","vsEdit","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","RadioGroup","RadioItem","jsx","_jsx","jsxs","_jsxs","log","module","NAME_INPUT_PLACEHOLDER","EMPTY_LIST_PLACEHOLDER","FilterSetManager","animateScreenFlash","_document$querySelect","overlay","document","createElement","classList","add","addEventListener","remove","querySelector","appendChild","constructor","props","_defineProperty","createRef","filterSets","renameSet","undefined","some","_ref","id","handleSettingsCancel","bind","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleEditDropdownChange","handleFilterChange","handleFilterApply","handleCaptureNewSet","handleNameInputChange","handleNameInputKeyPress","handleRenameConfirm","handleRenameCancel","handleRestoreFullStateChange","handleSetDelete","handleSetEdit","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","restoreFullState","componentDidMount","isValueShown","updateSelectedId","initSettingsScreen","componentDidUpdate","prevProps","prevState","isNameInputScreen","focusRenameInput","length","onChange","selectedId","debug","setState","_ref2","isEmptyList","event","value","target","applyFilterSet","onUpdateSets","getFilterState","panels","title","getNameError","_nameInputValue$trim","trimmedName","trim","_ref3","_nameInputValue$trim2","error","namedFilterSet","_objectSpread","selectedIndex","findIndex","_ref4","updatedModifiedFilterSets","push","prevFilterSets","_ref5","filter","_ref6","newSelectedIndex","Math","max","min","newSelectedId","_ref7","selectedSetIndex","_ref8","_ref9","selectedSet","find","_ref10","stopPropagation","dropdownRef","current","focusInput","key","preventDefault","arguments","onApply","filterSet","_ref11","_this$dropdownRef$cur","focus","_this$renameInputRef$","renameInputRef","render","isRenamingExistingSet","isEmptyEditList","isInitialScreen","isEditListScreen","captureSetIcon","className","children","icon","mask","transform","updateSetIcon","isFlipped","kind","onClick","type","placeholder","ref","onKeyPress","spellCheck","tooltip","concat","editDropdownRef","disabled","map","_ref12","_ref13"],"sources":["../../src/panels/FilterSetManager.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 convenience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n ReactNode,\n KeyboardEvent,\n MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport shortid from 'shortid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n vsEdit,\n vsGear,\n vsSave,\n vsCircleSlash,\n vsTrash,\n vsDeviceCamera,\n dhRefresh,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsArrowSmallUp,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Button, CardFlip, RadioGroup, RadioItem } from '@deephaven/components';\n\nimport './FilterSetManager.scss';\n\nconst log = Log.module('FilterSetManager');\n\nexport interface FilterSetPanel {\n panelId?: string | string[] | null;\n type: string;\n id?: string;\n state: unknown;\n}\n\nexport interface FilterSet {\n id: string;\n title: string;\n panels: FilterSetPanel[];\n restoreFullState?: boolean;\n}\n\nexport interface ChangeHandlerArgs {\n isValueShown: boolean;\n selectedId?: string;\n}\n\ninterface FilterSetManagerProps {\n isValueShown: boolean;\n selectedId?: string;\n filterSets: FilterSet[];\n getFilterState: () => FilterSetPanel[];\n onChange: (args: ChangeHandlerArgs) => void;\n onApply: (filterSet: FilterSet) => void;\n onUpdateSets: (filterSets: FilterSet[], editId?: string) => void;\n}\n\ninterface FilterSetManagerState {\n nameInputValue: string;\n nameInputError?: string;\n editId?: string;\n renameSet?: FilterSet;\n // Unsaved set changes on the settings screen\n modifiedFilterSets: FilterSet[];\n restoreFullState: boolean;\n}\n\nconst NAME_INPUT_PLACEHOLDER = 'Enter name...';\n\nconst EMPTY_LIST_PLACEHOLDER = 'No Available Filter Sets';\n\nclass FilterSetManager extends Component<\n FilterSetManagerProps,\n FilterSetManagerState\n> {\n static animateScreenFlash(): void {\n const overlay = document.createElement('div');\n overlay.classList.add('screen-flash-overlay');\n overlay.addEventListener('animationend', () => {\n // Removing the element removes its event listeners\n overlay.remove();\n });\n document.querySelector('body')?.appendChild(overlay);\n }\n\n constructor(props: FilterSetManagerProps) {\n super(props);\n\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleEditDropdownChange = this.handleEditDropdownChange.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleCaptureNewSet = this.handleCaptureNewSet.bind(this);\n this.handleNameInputChange = this.handleNameInputChange.bind(this);\n this.handleNameInputKeyPress = this.handleNameInputKeyPress.bind(this);\n this.handleRenameConfirm = this.handleRenameConfirm.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRestoreFullStateChange =\n this.handleRestoreFullStateChange.bind(this);\n\n this.handleSetDelete = this.handleSetDelete.bind(this);\n this.handleSetEdit = this.handleSetEdit.bind(this);\n this.handleSetUpdate = this.handleSetUpdate.bind(this);\n\n this.state = {\n editId: undefined,\n renameSet: undefined,\n nameInputValue: '',\n nameInputError: undefined,\n modifiedFilterSets: [],\n restoreFullState: false,\n };\n }\n\n componentDidMount(): void {\n const { isValueShown } = this.props;\n if (isValueShown) {\n this.updateSelectedId();\n } else {\n this.initSettingsScreen();\n }\n }\n\n componentDidUpdate(\n prevProps: FilterSetManagerProps,\n prevState: FilterSetManagerState\n ): void {\n const { isValueShown, filterSets } = this.props;\n const { modifiedFilterSets } = this.state;\n\n if (prevProps.isValueShown && !isValueShown) {\n this.initSettingsScreen();\n }\n\n if (this.isNameInputScreen() && !this.isNameInputScreen(prevState)) {\n this.focusRenameInput();\n }\n\n if (filterSets !== prevProps.filterSets) {\n if (\n !isValueShown &&\n filterSets.length > 0 &&\n prevProps.filterSets.length === 0 &&\n modifiedFilterSets.length === 0\n ) {\n // Filter set added from another panel, flip from the settings side/initial screen to the value side\n const { onChange } = this.props;\n onChange({ isValueShown: true, selectedId: filterSets[0].id });\n } else {\n this.updateSelectedId();\n }\n }\n }\n\n private renameInputRef = React.createRef<HTMLInputElement>();\n\n private dropdownRef = React.createRef<HTMLSelectElement>();\n\n private editDropdownRef = React.createRef<HTMLSelectElement>();\n\n initSettingsScreen(): void {\n const { filterSets, selectedId } = this.props;\n log.debug('initSettingsScreen', filterSets, selectedId);\n this.setState({\n modifiedFilterSets: [...filterSets],\n editId: selectedId,\n });\n }\n\n // Update selected id without applying the new set on filterSets change\n updateSelectedId(): void {\n const { isValueShown, filterSets, selectedId, onChange } = this.props;\n log.debug('updateSelectedId', filterSets, selectedId);\n if (!isValueShown) {\n return;\n }\n if (!filterSets.some(({ id }) => id === selectedId)) {\n // Update the selection if selectedId doesn't exist in the list\n // Flip to the settings side for empty list to show the initial screen\n const isEmptyList = filterSets.length === 0;\n onChange({\n isValueShown: !isEmptyList,\n selectedId: isEmptyList ? undefined : filterSets[0].id,\n });\n }\n }\n\n handleEditDropdownChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: editId } = event.target;\n this.setState({ editId });\n }\n\n handleFilterChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: selectedId } = event.target;\n const { isValueShown, onChange } = this.props;\n this.applyFilterSet(selectedId);\n onChange({ isValueShown, selectedId });\n }\n\n handleFilterApply(): void {\n const { selectedId } = this.props;\n this.applyFilterSet(selectedId);\n }\n\n handleSettingsCancel(): void {\n const { onChange, selectedId, filterSets } = this.props;\n this.setState({ modifiedFilterSets: [] });\n // Flip the card to the filter set selection screen if the sets list isn't empty\n // Otherwise show the initial screen\n if (filterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleSettingsSave(): void {\n const { onChange, onUpdateSets } = this.props;\n const { modifiedFilterSets, editId } = this.state;\n this.setState({ modifiedFilterSets: [] });\n log.debug('Update sets', modifiedFilterSets, editId);\n onUpdateSets(modifiedFilterSets);\n // Don't flip the card to the filter set selection screen if the updated sets list is empty\n if (modifiedFilterSets.length > 0) {\n onChange({ isValueShown: true, selectedId: editId });\n }\n }\n\n handleCaptureNewSet(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const id = shortid();\n const panels = getFilterState();\n const renameSet = {\n id,\n title: '',\n panels,\n };\n log.debug('handleSetCreate', renameSet);\n this.setState({ nameInputValue: '', nameInputError: undefined, renameSet });\n }\n\n handleRenameCancel(): void {\n this.setState({ renameSet: undefined });\n }\n\n handleRestoreFullStateChange(event: ChangeEvent<HTMLInputElement>): void {\n this.setState({\n restoreFullState: event.target.value === 'true',\n });\n }\n\n getNameError(nameInputValue: string): string | undefined {\n const { renameSet, modifiedFilterSets } = this.state;\n const trimmedName = nameInputValue?.trim() ?? '';\n if (trimmedName.length === 0) {\n log.debug('Name cannot be empty', trimmedName);\n return 'Name cannot be empty';\n }\n\n if (\n renameSet !== undefined &&\n modifiedFilterSets.some(\n ({ title, id }) => title === trimmedName && id !== renameSet.id\n )\n ) {\n log.debug('Set with this name already exists', trimmedName);\n return 'Set with this name already exists';\n }\n\n return undefined;\n }\n\n handleRenameConfirm(): void {\n const { nameInputValue, renameSet, modifiedFilterSets, restoreFullState } =\n this.state;\n if (renameSet === undefined) {\n log.error('Renamed set undefined.');\n return;\n }\n const nameInputError = this.getNameError(nameInputValue);\n log.debug('handleRenameConfirm', nameInputValue, nameInputError);\n if (nameInputError !== undefined) {\n this.setState({ nameInputError });\n return;\n }\n const trimmedName = nameInputValue?.trim() ?? '';\n const namedFilterSet = {\n ...renameSet,\n title: trimmedName,\n restoreFullState,\n };\n const selectedIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === renameSet.id\n );\n const updatedModifiedFilterSets = [...modifiedFilterSets];\n\n if (selectedIndex >= 0) {\n updatedModifiedFilterSets[selectedIndex] = namedFilterSet;\n log.debug('Renamed existing set', updatedModifiedFilterSets);\n } else {\n updatedModifiedFilterSets.push(namedFilterSet);\n log.debug('Added new set to modified sets', updatedModifiedFilterSets);\n }\n\n this.setState({\n editId: namedFilterSet.id,\n modifiedFilterSets: updatedModifiedFilterSets,\n renameSet: undefined,\n });\n }\n\n handleSetDelete(): void {\n this.setState(state => {\n const { editId, modifiedFilterSets: prevFilterSets } = state;\n const selectedIndex = prevFilterSets.findIndex(({ id }) => id === editId);\n if (selectedIndex < 0) {\n log.error(\n 'Unable to find selected filterSet index',\n prevFilterSets,\n editId\n );\n return null;\n }\n const modifiedFilterSets = prevFilterSets.filter(\n ({ id }) => id !== editId\n );\n const newSelectedIndex = Math.max(\n 0,\n Math.min(modifiedFilterSets.length - 1, selectedIndex - 1)\n );\n const newSelectedId =\n modifiedFilterSets.length > 0\n ? modifiedFilterSets[newSelectedIndex].id\n : undefined;\n log.debug(\n 'Deleted selected set',\n editId,\n prevFilterSets,\n modifiedFilterSets\n );\n log.debug('New selection', newSelectedIndex, newSelectedId);\n return {\n modifiedFilterSets,\n editId: newSelectedId,\n };\n });\n }\n\n handleSetUpdate(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const panels = getFilterState();\n this.setState(({ modifiedFilterSets: prevFilterSets, editId }) => {\n if (editId === undefined) {\n log.error('Filter for update not selected.');\n return null;\n }\n const modifiedFilterSets = [...prevFilterSets];\n const selectedSetIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === editId\n );\n if (selectedSetIndex < 0) {\n log.error('Selected set for update not found.');\n return null;\n }\n // Clone selected set to avoid mutation of the props\n modifiedFilterSets[selectedSetIndex] = {\n ...modifiedFilterSets[selectedSetIndex],\n panels,\n };\n\n log.debug('Update set', modifiedFilterSets, panels);\n return {\n modifiedFilterSets,\n };\n });\n }\n\n handleSetEdit(): void {\n this.setState(({ editId, modifiedFilterSets }) => {\n const selectedSet = modifiedFilterSets.find(({ id }) => id === editId);\n if (selectedSet === undefined) {\n log.error('Could not find selected set', editId, modifiedFilterSets);\n return null;\n }\n const { title, restoreFullState = false } = selectedSet;\n return {\n nameInputValue: title,\n nameInputError: undefined,\n renameSet: selectedSet,\n restoreFullState,\n };\n });\n }\n\n handleSettingsClick(event: MouseEvent): void {\n event.stopPropagation();\n const { onChange, selectedId } = this.props;\n onChange({ isValueShown: false, selectedId });\n }\n\n handleBackgroundClick(event: MouseEvent): void {\n log.debug('handleBackgroundClick');\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n handleNameInputChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value: nameInputValue } = event.target;\n const nameInputError = this.getNameError(nameInputValue);\n this.setState({ nameInputValue, nameInputError });\n }\n\n handleNameInputKeyPress(event: KeyboardEvent): void {\n const { key } = event;\n if (key === 'Enter') {\n event.preventDefault();\n this.handleRenameConfirm();\n }\n }\n\n isNameInputScreen(state = this.state): boolean {\n const { renameSet } = state;\n return renameSet !== undefined;\n }\n\n isRenamingExistingSet = memoizeOne(\n (filterSets: FilterSet[], renameSet?: FilterSet): boolean =>\n renameSet !== undefined &&\n filterSets.some(({ id }) => id === renameSet.id)\n );\n\n applyFilterSet(selectedId?: string): void {\n const { onApply, filterSets } = this.props;\n if (selectedId === undefined) {\n log.debug('No filter selected');\n return;\n }\n const filterSet = filterSets.find(({ id }) => id === selectedId);\n if (filterSet === undefined) {\n log.debug('Selected id not found in filterSets', selectedId, filterSets);\n return;\n }\n log.debug('Apply filterSet', filterSet);\n onApply(filterSet);\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n focusRenameInput(): void {\n this.renameInputRef.current?.focus();\n }\n\n render(): ReactNode {\n const {\n nameInputValue,\n nameInputError,\n editId,\n renameSet,\n modifiedFilterSets,\n restoreFullState,\n } = this.state;\n const { isValueShown, filterSets, selectedId } = this.props;\n const isNameInputScreen = this.isNameInputScreen();\n const isRenamingExistingSet = this.isRenamingExistingSet(\n modifiedFilterSets,\n renameSet\n );\n const isEmptyEditList = modifiedFilterSets.length === 0;\n const isInitialScreen =\n !isNameInputScreen && isEmptyEditList && filterSets.length === 0;\n const isEditListScreen = !isNameInputScreen && !isInitialScreen;\n const captureSetIcon = (\n <div className=\"fa-layers mr-3\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhNewCircleLargeFilled}\n className=\"text-primary\"\n transform=\"shrink-6 down-5 right-7\"\n />\n </div>\n );\n const updateSetIcon = (\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={vsArrowSmallUp}\n transform=\"shrink-1 down-5 right-7\"\n />\n </div>\n );\n return (\n <div className=\"filter-set-manager fill-parent-absolute\">\n <CardFlip className=\"w-100 h-100\" isFlipped={isValueShown}>\n <div\n className=\"filter-set-manager-settings-card fill-parent-absolute\"\n key=\"front\"\n >\n <div className=\"filter-set-manager-card-content\">\n {isInitialScreen && (\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture filter set\n </Button>\n <div className=\"py-3 text-muted small\">\n Takes a snapshot of the currently applied filters on all\n panels, allowing you to restore saved filter sets later.\n </div>\n </div>\n )}\n\n {isNameInputScreen && (\n <div\n className=\"d-flex flex-column justify-content-center\"\n data-testid=\"edit-filter-set-container\"\n >\n <div className=\"form-group\">\n <label>\n {isRenamingExistingSet ? 'Edit set' : 'Name captured set'}\n </label>\n <div className=\"name-input-container\">\n <input\n type=\"text\"\n className=\"input-set-name form-control\"\n placeholder={NAME_INPUT_PLACEHOLDER}\n value={nameInputValue}\n ref={this.renameInputRef}\n onChange={this.handleNameInputChange}\n onKeyPress={this.handleNameInputKeyPress}\n spellCheck=\"false\"\n />\n <Button\n data-testid=\"rename-confirm-button\"\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameConfirm}\n tooltip=\"Save\"\n test-id=\"button-save\"\n icon={vsSave}\n />\n\n <Button\n data-testid=\"rename-cancel-button\"\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameCancel}\n tooltip=\"Cancel\"\n icon={vsCircleSlash}\n />\n </div>\n {nameInputError !== undefined && (\n <div className=\"error-message\">{nameInputError}</div>\n )}\n </div>\n <div className=\"form-group\">\n <RadioGroup\n onChange={this.handleRestoreFullStateChange}\n value={`${restoreFullState}`}\n >\n <RadioItem value=\"false\">Restore only filters</RadioItem>\n <RadioItem value=\"true\">\n Restore full table state\n </RadioItem>\n </RadioGroup>\n </div>\n </div>\n )}\n\n {isEditListScreen && (\n <div className=\"filter-set-manager-settings-grid-1\">\n <div className=\"form-group\">\n <label>Edit filter sets</label>\n <div className=\"filter-select-container\">\n <select\n data-testid=\"settings-card-filter-select\"\n ref={this.editDropdownRef}\n value={editId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleEditDropdownChange}\n disabled={isEmptyEditList}\n >\n {isEmptyEditList && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {modifiedFilterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </select>\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetUpdate}\n disabled={isEmptyEditList}\n icon={updateSetIcon}\n tooltip=\"Update\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetEdit}\n disabled={isEmptyEditList}\n icon={vsEdit}\n tooltip=\"Edit\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetDelete}\n disabled={isEmptyEditList}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n </div>\n </div>\n\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture new filter set\n </Button>\n </div>\n\n <div className=\"py-3 text-right\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n >\n Cancel\n </Button>\n \n <Button kind=\"primary\" onClick={this.handleSettingsSave}>\n Save\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n <div\n className=\"filter-set-manager-value-card fill-parent-absolute\"\n key=\"back\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"filter-set-manager-column\">\n <div className=\"filter-set-manager-column-title\">Filter sets</div>\n </div>\n <div className=\"filter-set-manager-card-content\">\n <div className=\"filter-set-manager-value-input\">\n <div className=\"filter-select-container\">\n <select\n data-testid=\"value-card-filter-select\"\n ref={this.dropdownRef}\n value={selectedId}\n className=\"custom-select filter-value-select\"\n onChange={this.handleFilterChange}\n >\n {filterSets.length === 0 && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {filterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </select>\n <Button\n data-testid=\"filter-apply-button\"\n kind=\"ghost\"\n onClick={this.handleFilterApply}\n icon={dhRefresh}\n tooltip=\"Apply Filter Set\"\n />\n </div>\n </div>\n </div>\n <div className=\"filter-set-manager-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n tooltip=\"Settings\"\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n />\n </div>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FilterSetManager.js","names":["React","Component","memoizeOne","shortid","FontAwesomeIcon","vsEdit","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","RadioGroup","RadioItem","Select","jsx","_jsx","jsxs","_jsxs","log","module","NAME_INPUT_PLACEHOLDER","EMPTY_LIST_PLACEHOLDER","FilterSetManager","animateScreenFlash","_document$querySelect","overlay","document","createElement","classList","add","addEventListener","remove","querySelector","appendChild","constructor","props","_defineProperty","createRef","filterSets","renameSet","undefined","some","_ref","id","handleSettingsCancel","bind","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleEditDropdownChange","handleFilterChange","handleFilterApply","handleCaptureNewSet","handleNameInputChange","handleNameInputKeyPress","handleRenameConfirm","handleRenameCancel","handleRestoreFullStateChange","handleSetDelete","handleSetEdit","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","restoreFullState","componentDidMount","isValueShown","updateSelectedId","initSettingsScreen","componentDidUpdate","prevProps","prevState","isNameInputScreen","focusRenameInput","length","onChange","selectedId","debug","setState","_ref2","isEmptyList","eventTargetValue","applyFilterSet","onUpdateSets","getFilterState","panels","title","event","target","value","getNameError","_nameInputValue$trim","trimmedName","trim","_ref3","_nameInputValue$trim2","error","namedFilterSet","_objectSpread","selectedIndex","findIndex","_ref4","updatedModifiedFilterSets","push","prevFilterSets","_ref5","filter","_ref6","newSelectedIndex","Math","max","min","newSelectedId","_ref7","selectedSetIndex","_ref8","_ref9","selectedSet","find","_ref10","stopPropagation","dropdownRef","current","focusInput","key","preventDefault","arguments","onApply","filterSet","_ref11","_this$dropdownRef$cur","focus","_this$renameInputRef$","renameInputRef","render","isRenamingExistingSet","isEmptyEditList","isInitialScreen","isEditListScreen","captureSetIcon","className","children","icon","mask","transform","updateSetIcon","isFlipped","kind","onClick","type","placeholder","ref","onKeyPress","spellCheck","tooltip","concat","editDropdownRef","disabled","map","_ref12","_ref13"],"sources":["../../src/panels/FilterSetManager.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 convenience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n ReactNode,\n KeyboardEvent,\n MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport shortid from 'shortid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n vsEdit,\n vsGear,\n vsSave,\n vsCircleSlash,\n vsTrash,\n vsDeviceCamera,\n dhRefresh,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsArrowSmallUp,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport {\n Button,\n CardFlip,\n RadioGroup,\n RadioItem,\n Select,\n} from '@deephaven/components';\n\nimport './FilterSetManager.scss';\n\nconst log = Log.module('FilterSetManager');\n\nexport interface FilterSetPanel {\n panelId?: string | string[] | null;\n type: string;\n id?: string;\n state: unknown;\n}\n\nexport interface FilterSet {\n id: string;\n title: string;\n panels: FilterSetPanel[];\n restoreFullState?: boolean;\n}\n\nexport interface ChangeHandlerArgs {\n isValueShown: boolean;\n selectedId?: string;\n}\n\ninterface FilterSetManagerProps {\n isValueShown: boolean;\n selectedId?: string;\n filterSets: FilterSet[];\n getFilterState: () => FilterSetPanel[];\n onChange: (args: ChangeHandlerArgs) => void;\n onApply: (filterSet: FilterSet) => void;\n onUpdateSets: (filterSets: FilterSet[], editId?: string) => void;\n}\n\ninterface FilterSetManagerState {\n nameInputValue: string;\n nameInputError?: string;\n editId?: string;\n renameSet?: FilterSet;\n // Unsaved set changes on the settings screen\n modifiedFilterSets: FilterSet[];\n restoreFullState: boolean;\n}\n\nconst NAME_INPUT_PLACEHOLDER = 'Enter name...';\n\nconst EMPTY_LIST_PLACEHOLDER = 'No Available Filter Sets';\n\nclass FilterSetManager extends Component<\n FilterSetManagerProps,\n FilterSetManagerState\n> {\n static animateScreenFlash(): void {\n const overlay = document.createElement('div');\n overlay.classList.add('screen-flash-overlay');\n overlay.addEventListener('animationend', () => {\n // Removing the element removes its event listeners\n overlay.remove();\n });\n document.querySelector('body')?.appendChild(overlay);\n }\n\n constructor(props: FilterSetManagerProps) {\n super(props);\n\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleEditDropdownChange = this.handleEditDropdownChange.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleCaptureNewSet = this.handleCaptureNewSet.bind(this);\n this.handleNameInputChange = this.handleNameInputChange.bind(this);\n this.handleNameInputKeyPress = this.handleNameInputKeyPress.bind(this);\n this.handleRenameConfirm = this.handleRenameConfirm.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n this.handleRestoreFullStateChange =\n this.handleRestoreFullStateChange.bind(this);\n\n this.handleSetDelete = this.handleSetDelete.bind(this);\n this.handleSetEdit = this.handleSetEdit.bind(this);\n this.handleSetUpdate = this.handleSetUpdate.bind(this);\n\n this.state = {\n editId: undefined,\n renameSet: undefined,\n nameInputValue: '',\n nameInputError: undefined,\n modifiedFilterSets: [],\n restoreFullState: false,\n };\n }\n\n componentDidMount(): void {\n const { isValueShown } = this.props;\n if (isValueShown) {\n this.updateSelectedId();\n } else {\n this.initSettingsScreen();\n }\n }\n\n componentDidUpdate(\n prevProps: FilterSetManagerProps,\n prevState: FilterSetManagerState\n ): void {\n const { isValueShown, filterSets } = this.props;\n const { modifiedFilterSets } = this.state;\n\n if (prevProps.isValueShown && !isValueShown) {\n this.initSettingsScreen();\n }\n\n if (this.isNameInputScreen() && !this.isNameInputScreen(prevState)) {\n this.focusRenameInput();\n }\n\n if (filterSets !== prevProps.filterSets) {\n if (\n !isValueShown &&\n filterSets.length > 0 &&\n prevProps.filterSets.length === 0 &&\n modifiedFilterSets.length === 0\n ) {\n // Filter set added from another panel, flip from the settings side/initial screen to the value side\n const { onChange } = this.props;\n onChange({ isValueShown: true, selectedId: filterSets[0].id });\n } else {\n this.updateSelectedId();\n }\n }\n }\n\n private renameInputRef = React.createRef<HTMLInputElement>();\n\n private dropdownRef = React.createRef<HTMLSelectElement>();\n\n private editDropdownRef = React.createRef<HTMLSelectElement>();\n\n initSettingsScreen(): void {\n const { filterSets, selectedId } = this.props;\n log.debug('initSettingsScreen', filterSets, selectedId);\n this.setState({\n modifiedFilterSets: [...filterSets],\n editId: selectedId,\n });\n }\n\n // Update selected id without applying the new set on filterSets change\n updateSelectedId(): void {\n const { isValueShown, filterSets, selectedId, onChange } = this.props;\n log.debug('updateSelectedId', filterSets, selectedId);\n if (!isValueShown) {\n return;\n }\n if (!filterSets.some(({ id }) => id === selectedId)) {\n // Update the selection if selectedId doesn't exist in the list\n // Flip to the settings side for empty list to show the initial screen\n const isEmptyList = filterSets.length === 0;\n onChange({\n isValueShown: !isEmptyList,\n selectedId: isEmptyList ? undefined : filterSets[0].id,\n });\n }\n }\n\n handleEditDropdownChange(eventTargetValue: string): void {\n this.setState({ editId: eventTargetValue });\n }\n\n handleFilterChange(eventTargetValue: string): void {\n const selectedId = eventTargetValue;\n const { isValueShown, onChange } = this.props;\n this.applyFilterSet(selectedId);\n onChange({ isValueShown, selectedId });\n }\n\n handleFilterApply(): void {\n const { selectedId } = this.props;\n this.applyFilterSet(selectedId);\n }\n\n handleSettingsCancel(): void {\n const { onChange, selectedId, filterSets } = this.props;\n this.setState({ modifiedFilterSets: [] });\n // Flip the card to the filter set selection screen if the sets list isn't empty\n // Otherwise show the initial screen\n if (filterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleSettingsSave(): void {\n const { onChange, onUpdateSets } = this.props;\n const { modifiedFilterSets, editId } = this.state;\n this.setState({ modifiedFilterSets: [] });\n log.debug('Update sets', modifiedFilterSets, editId);\n onUpdateSets(modifiedFilterSets);\n // Don't flip the card to the filter set selection screen if the updated sets list is empty\n if (modifiedFilterSets.length > 0) {\n onChange({ isValueShown: true, selectedId: editId });\n }\n }\n\n handleCaptureNewSet(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const id = shortid();\n const panels = getFilterState();\n const renameSet = {\n id,\n title: '',\n panels,\n };\n log.debug('handleSetCreate', renameSet);\n this.setState({ nameInputValue: '', nameInputError: undefined, renameSet });\n }\n\n handleRenameCancel(): void {\n this.setState({ renameSet: undefined });\n }\n\n handleRestoreFullStateChange(event: ChangeEvent<HTMLInputElement>): void {\n this.setState({\n restoreFullState: event.target.value === 'true',\n });\n }\n\n getNameError(nameInputValue: string): string | undefined {\n const { renameSet, modifiedFilterSets } = this.state;\n const trimmedName = nameInputValue?.trim() ?? '';\n if (trimmedName.length === 0) {\n log.debug('Name cannot be empty', trimmedName);\n return 'Name cannot be empty';\n }\n\n if (\n renameSet !== undefined &&\n modifiedFilterSets.some(\n ({ title, id }) => title === trimmedName && id !== renameSet.id\n )\n ) {\n log.debug('Set with this name already exists', trimmedName);\n return 'Set with this name already exists';\n }\n\n return undefined;\n }\n\n handleRenameConfirm(): void {\n const { nameInputValue, renameSet, modifiedFilterSets, restoreFullState } =\n this.state;\n if (renameSet === undefined) {\n log.error('Renamed set undefined.');\n return;\n }\n const nameInputError = this.getNameError(nameInputValue);\n log.debug('handleRenameConfirm', nameInputValue, nameInputError);\n if (nameInputError !== undefined) {\n this.setState({ nameInputError });\n return;\n }\n const trimmedName = nameInputValue?.trim() ?? '';\n const namedFilterSet = {\n ...renameSet,\n title: trimmedName,\n restoreFullState,\n };\n const selectedIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === renameSet.id\n );\n const updatedModifiedFilterSets = [...modifiedFilterSets];\n\n if (selectedIndex >= 0) {\n updatedModifiedFilterSets[selectedIndex] = namedFilterSet;\n log.debug('Renamed existing set', updatedModifiedFilterSets);\n } else {\n updatedModifiedFilterSets.push(namedFilterSet);\n log.debug('Added new set to modified sets', updatedModifiedFilterSets);\n }\n\n this.setState({\n editId: namedFilterSet.id,\n modifiedFilterSets: updatedModifiedFilterSets,\n renameSet: undefined,\n });\n }\n\n handleSetDelete(): void {\n this.setState(state => {\n const { editId, modifiedFilterSets: prevFilterSets } = state;\n const selectedIndex = prevFilterSets.findIndex(({ id }) => id === editId);\n if (selectedIndex < 0) {\n log.error(\n 'Unable to find selected filterSet index',\n prevFilterSets,\n editId\n );\n return null;\n }\n const modifiedFilterSets = prevFilterSets.filter(\n ({ id }) => id !== editId\n );\n const newSelectedIndex = Math.max(\n 0,\n Math.min(modifiedFilterSets.length - 1, selectedIndex - 1)\n );\n const newSelectedId =\n modifiedFilterSets.length > 0\n ? modifiedFilterSets[newSelectedIndex].id\n : undefined;\n log.debug(\n 'Deleted selected set',\n editId,\n prevFilterSets,\n modifiedFilterSets\n );\n log.debug('New selection', newSelectedIndex, newSelectedId);\n return {\n modifiedFilterSets,\n editId: newSelectedId,\n };\n });\n }\n\n handleSetUpdate(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const panels = getFilterState();\n this.setState(({ modifiedFilterSets: prevFilterSets, editId }) => {\n if (editId === undefined) {\n log.error('Filter for update not selected.');\n return null;\n }\n const modifiedFilterSets = [...prevFilterSets];\n const selectedSetIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === editId\n );\n if (selectedSetIndex < 0) {\n log.error('Selected set for update not found.');\n return null;\n }\n // Clone selected set to avoid mutation of the props\n modifiedFilterSets[selectedSetIndex] = {\n ...modifiedFilterSets[selectedSetIndex],\n panels,\n };\n\n log.debug('Update set', modifiedFilterSets, panels);\n return {\n modifiedFilterSets,\n };\n });\n }\n\n handleSetEdit(): void {\n this.setState(({ editId, modifiedFilterSets }) => {\n const selectedSet = modifiedFilterSets.find(({ id }) => id === editId);\n if (selectedSet === undefined) {\n log.error('Could not find selected set', editId, modifiedFilterSets);\n return null;\n }\n const { title, restoreFullState = false } = selectedSet;\n return {\n nameInputValue: title,\n nameInputError: undefined,\n renameSet: selectedSet,\n restoreFullState,\n };\n });\n }\n\n handleSettingsClick(event: MouseEvent): void {\n event.stopPropagation();\n const { onChange, selectedId } = this.props;\n onChange({ isValueShown: false, selectedId });\n }\n\n handleBackgroundClick(event: MouseEvent): void {\n log.debug('handleBackgroundClick');\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n handleNameInputChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value: nameInputValue } = event.target;\n const nameInputError = this.getNameError(nameInputValue);\n this.setState({ nameInputValue, nameInputError });\n }\n\n handleNameInputKeyPress(event: KeyboardEvent): void {\n const { key } = event;\n if (key === 'Enter') {\n event.preventDefault();\n this.handleRenameConfirm();\n }\n }\n\n isNameInputScreen(state = this.state): boolean {\n const { renameSet } = state;\n return renameSet !== undefined;\n }\n\n isRenamingExistingSet = memoizeOne(\n (filterSets: FilterSet[], renameSet?: FilterSet): boolean =>\n renameSet !== undefined &&\n filterSets.some(({ id }) => id === renameSet.id)\n );\n\n applyFilterSet(selectedId?: string): void {\n const { onApply, filterSets } = this.props;\n if (selectedId === undefined) {\n log.debug('No filter selected');\n return;\n }\n const filterSet = filterSets.find(({ id }) => id === selectedId);\n if (filterSet === undefined) {\n log.debug('Selected id not found in filterSets', selectedId, filterSets);\n return;\n }\n log.debug('Apply filterSet', filterSet);\n onApply(filterSet);\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n focusRenameInput(): void {\n this.renameInputRef.current?.focus();\n }\n\n render(): ReactNode {\n const {\n nameInputValue,\n nameInputError,\n editId,\n renameSet,\n modifiedFilterSets,\n restoreFullState,\n } = this.state;\n const { isValueShown, filterSets, selectedId } = this.props;\n const isNameInputScreen = this.isNameInputScreen();\n const isRenamingExistingSet = this.isRenamingExistingSet(\n modifiedFilterSets,\n renameSet\n );\n const isEmptyEditList = modifiedFilterSets.length === 0;\n const isInitialScreen =\n !isNameInputScreen && isEmptyEditList && filterSets.length === 0;\n const isEditListScreen = !isNameInputScreen && !isInitialScreen;\n const captureSetIcon = (\n <div className=\"fa-layers mr-3\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhNewCircleLargeFilled}\n className=\"text-primary\"\n transform=\"shrink-6 down-5 right-7\"\n />\n </div>\n );\n const updateSetIcon = (\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={vsArrowSmallUp}\n transform=\"shrink-1 down-5 right-7\"\n />\n </div>\n );\n return (\n <div className=\"filter-set-manager fill-parent-absolute\">\n <CardFlip className=\"w-100 h-100\" isFlipped={isValueShown}>\n <div\n className=\"filter-set-manager-settings-card fill-parent-absolute\"\n key=\"front\"\n >\n <div className=\"filter-set-manager-card-content\">\n {isInitialScreen && (\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture filter set\n </Button>\n <div className=\"py-3 text-muted small\">\n Takes a snapshot of the currently applied filters on all\n panels, allowing you to restore saved filter sets later.\n </div>\n </div>\n )}\n\n {isNameInputScreen && (\n <div\n className=\"d-flex flex-column justify-content-center\"\n data-testid=\"edit-filter-set-container\"\n >\n <div className=\"form-group\">\n <label>\n {isRenamingExistingSet ? 'Edit set' : 'Name captured set'}\n </label>\n <div className=\"name-input-container\">\n <input\n type=\"text\"\n className=\"input-set-name form-control\"\n placeholder={NAME_INPUT_PLACEHOLDER}\n value={nameInputValue}\n ref={this.renameInputRef}\n onChange={this.handleNameInputChange}\n onKeyPress={this.handleNameInputKeyPress}\n spellCheck=\"false\"\n />\n <Button\n data-testid=\"rename-confirm-button\"\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameConfirm}\n tooltip=\"Save\"\n test-id=\"button-save\"\n icon={vsSave}\n />\n\n <Button\n data-testid=\"rename-cancel-button\"\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameCancel}\n tooltip=\"Cancel\"\n icon={vsCircleSlash}\n />\n </div>\n {nameInputError !== undefined && (\n <div className=\"error-message\">{nameInputError}</div>\n )}\n </div>\n <div className=\"form-group\">\n <RadioGroup\n onChange={this.handleRestoreFullStateChange}\n value={`${restoreFullState}`}\n >\n <RadioItem value=\"false\">Restore only filters</RadioItem>\n <RadioItem value=\"true\">\n Restore full table state\n </RadioItem>\n </RadioGroup>\n </div>\n </div>\n )}\n\n {isEditListScreen && (\n <div className=\"filter-set-manager-settings-grid-1\">\n <div className=\"form-group\">\n <label>Edit filter sets</label>\n <div className=\"filter-select-container\">\n <Select\n data-testid=\"settings-card-filter-select\"\n ref={this.editDropdownRef}\n value={editId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleEditDropdownChange}\n disabled={isEmptyEditList}\n >\n {isEmptyEditList && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {modifiedFilterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </Select>\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetUpdate}\n disabled={isEmptyEditList}\n icon={updateSetIcon}\n tooltip=\"Update\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetEdit}\n disabled={isEmptyEditList}\n icon={vsEdit}\n tooltip=\"Edit\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetDelete}\n disabled={isEmptyEditList}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n </div>\n </div>\n\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture new filter set\n </Button>\n </div>\n\n <div className=\"py-3 text-right\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n >\n Cancel\n </Button>\n \n <Button kind=\"primary\" onClick={this.handleSettingsSave}>\n Save\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n <div\n className=\"filter-set-manager-value-card fill-parent-absolute\"\n key=\"back\"\n onClick={this.handleBackgroundClick}\n >\n <div className=\"filter-set-manager-column\">\n <div className=\"filter-set-manager-column-title\">Filter sets</div>\n </div>\n <div className=\"filter-set-manager-card-content\">\n <div className=\"filter-set-manager-value-input\">\n <div className=\"filter-select-container\">\n <Select\n data-testid=\"value-card-filter-select\"\n ref={this.dropdownRef}\n value={selectedId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleFilterChange}\n >\n {filterSets.length === 0 && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {filterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </Select>\n <Button\n data-testid=\"filter-apply-button\"\n kind=\"ghost\"\n onClick={this.handleFilterApply}\n icon={dhRefresh}\n tooltip=\"Apply Filter Set\"\n />\n </div>\n </div>\n </div>\n <div className=\"filter-set-manager-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n tooltip=\"Settings\"\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n />\n </div>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"mappings":"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"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Component, ReactElement, RefObject } from 'react';
|
|
2
2
|
import { type IrisGridPanel, type OwnProps as IrisGridPanelOwnProps, type PanelState } from './IrisGridPanel';
|
|
3
3
|
import './PandasPanel.scss';
|
|
4
|
-
export declare function PandasReloadButton({ onClick, }: {
|
|
5
|
-
onClick: React.MouseEventHandler<HTMLButtonElement>;
|
|
6
|
-
}): JSX.Element;
|
|
7
4
|
export interface PandasPanelProps extends IrisGridPanelOwnProps {
|
|
8
5
|
panelState: PanelState | null;
|
|
9
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PandasPanel.d.ts","sourceRoot":"","sources":["../../src/panels/PandasPanel.tsx"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"PandasPanel.d.ts","sourceRoot":"","sources":["../../src/panels/PandasPanel.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClE,OAA+B,EAC7B,KAAK,aAAa,EAClB,KAAK,QAAQ,IAAI,qBAAqB,EACtC,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,oBAAoB,CAAC;AAE5B,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB;IAC7D,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B;AAED,UAAU,gBAAgB;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,cAAM,WAAY,SAAQ,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IACrE,MAAM,CAAC,YAAY;;MAEjB;IAEF,MAAM,CAAC,SAAS,SAAiB;gBAErB,KAAK,EAAE,gBAAgB;IAgBnC,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAEtC,YAAY,IAAI,IAAI;IAOpB,qBAAqB,IAAI,IAAI;IAU7B,sBAAsB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAMpD,MAAM,IAAI,YAAY;CAYvB;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -5,39 +5,11 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typ
|
|
|
5
5
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
6
6
|
/* eslint-disable react/jsx-props-no-spreading */
|
|
7
7
|
/* eslint-disable react/no-unused-state */
|
|
8
|
-
import React, { Component
|
|
9
|
-
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
10
|
-
import { dhRefresh } from '@deephaven/icons';
|
|
11
|
-
import { Button } from '@deephaven/components';
|
|
8
|
+
import React, { Component } from 'react';
|
|
12
9
|
import ConnectedIrisGridPanel from "./IrisGridPanel.js";
|
|
10
|
+
import { PandasReloadButton } from "./PandasReloadButton.js";
|
|
13
11
|
import "./PandasPanel.css";
|
|
14
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
|
-
export function PandasReloadButton(_ref) {
|
|
17
|
-
var {
|
|
18
|
-
onClick
|
|
19
|
-
} = _ref;
|
|
20
|
-
var buttonRef = useRef(null);
|
|
21
|
-
var handleClick = useCallback(e => {
|
|
22
|
-
var _buttonRef$current;
|
|
23
|
-
(_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 ? void 0 : _buttonRef$current.blur();
|
|
24
|
-
onClick(e);
|
|
25
|
-
}, [onClick]);
|
|
26
|
-
return /*#__PURE__*/_jsxs(Button, {
|
|
27
|
-
ref: buttonRef,
|
|
28
|
-
kind: "primary",
|
|
29
|
-
className: "btn-pandas",
|
|
30
|
-
onClick: handleClick,
|
|
31
|
-
tooltip: "Click to refresh pandas dataframe, updates do not occur automatically.",
|
|
32
|
-
children: ["pandas dataframe", /*#__PURE__*/_jsxs("span", {
|
|
33
|
-
children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
|
|
34
|
-
icon: dhRefresh,
|
|
35
|
-
transform: "shrink-1",
|
|
36
|
-
className: "mr-1"
|
|
37
|
-
}), "Reload"]
|
|
38
|
-
})]
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
13
|
/**
|
|
42
14
|
* Wraps and IrisGridPanel to add a refresh button for Pandas.
|
|
43
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PandasPanel.js","names":["React","Component","
|
|
1
|
+
{"version":3,"file":"PandasPanel.js","names":["React","Component","ConnectedIrisGridPanel","PandasReloadButton","jsx","_jsx","PandasPanel","constructor","props","_defineProperty","irisGridRef","createRef","handleReload","bind","handleGridStateChange","handlePanelStateUpdate","panelState","state","shouldFocusGrid","_this$irisGridRef$cur","current","initModel","setState","_this$irisGridRef$cur2","_this$irisGridRef$cur3","_this$irisGridRef$cur4","irisGrid","grid","focus","render","_objectSpread","ref","onStateChange","onPanelStateUpdate","children","onClick"],"sources":["../../src/panels/PandasPanel.tsx"],"sourcesContent":["/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/no-unused-state */\nimport React, { Component, ReactElement, RefObject } from 'react';\nimport ConnectedIrisGridPanel, {\n type IrisGridPanel,\n type OwnProps as IrisGridPanelOwnProps,\n type PanelState,\n} from './IrisGridPanel';\nimport { PandasReloadButton } from './PandasReloadButton';\nimport './PandasPanel.scss';\n\nexport interface PandasPanelProps extends IrisGridPanelOwnProps {\n panelState: PanelState | null;\n}\n\ninterface PandasPanelState {\n shouldFocusGrid: boolean;\n panelState: PanelState | null;\n}\n\n/**\n * Wraps and IrisGridPanel to add a refresh button for Pandas.\n */\nclass PandasPanel extends Component<PandasPanelProps, PandasPanelState> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'PandasPanel';\n\n constructor(props: PandasPanelProps) {\n super(props);\n\n this.irisGridRef = React.createRef();\n\n this.handleReload = this.handleReload.bind(this);\n this.handleGridStateChange = this.handleGridStateChange.bind(this);\n this.handlePanelStateUpdate = this.handlePanelStateUpdate.bind(this);\n\n const { panelState } = props;\n this.state = {\n shouldFocusGrid: false,\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n irisGridRef: RefObject<IrisGridPanel>;\n\n handleReload(): void {\n this.irisGridRef.current?.initModel();\n this.setState({\n shouldFocusGrid: true,\n });\n }\n\n handleGridStateChange(): void {\n const { shouldFocusGrid } = this.state;\n if (shouldFocusGrid && this.irisGridRef.current?.irisGrid?.current?.grid) {\n this.irisGridRef.current.irisGrid.current.grid.focus();\n this.setState({\n shouldFocusGrid: false,\n });\n }\n }\n\n handlePanelStateUpdate(panelState: PanelState): void {\n this.setState({\n panelState,\n });\n }\n\n render(): ReactElement {\n return (\n <ConnectedIrisGridPanel\n ref={this.irisGridRef}\n onStateChange={this.handleGridStateChange}\n onPanelStateUpdate={this.handlePanelStateUpdate}\n {...this.props}\n >\n <PandasReloadButton onClick={this.handleReload} />\n </ConnectedIrisGridPanel>\n );\n }\n}\n\nexport default PandasPanel;\n"],"mappings":";;;;;AAAA;AACA;AACA,OAAOA,KAAK,IAAIC,SAAS,QAAiC,OAAO;AAAC,OAC3DC,sBAAsB;AAAA,SAKpBC,kBAAkB;AAAA;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAY3B;AACA;AACA;AACA,MAAMC,WAAW,SAASL,SAAS,CAAqC;EAOtEM,WAAWA,CAACC,KAAuB,EAAE;IACnC,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAEb,IAAI,CAACC,WAAW,gBAAGV,KAAK,CAACW,SAAS,CAAC,CAAC;IAEpC,IAAI,CAACC,YAAY,GAAG,IAAI,CAACA,YAAY,CAACC,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACC,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACD,IAAI,CAAC,IAAI,CAAC;IAClE,IAAI,CAACE,sBAAsB,GAAG,IAAI,CAACA,sBAAsB,CAACF,IAAI,CAAC,IAAI,CAAC;IAEpE,IAAM;MAAEG;IAAW,CAAC,GAAGR,KAAK;IAC5B,IAAI,CAACS,KAAK,GAAG;MACXC,eAAe,EAAE,KAAK;MACtBF,UAAU,CAAE;IACd,CAAC;EACH;;EAIAJ,YAAYA,CAAA,EAAS;IAAA,IAAAO,qBAAA;IACnB,CAAAA,qBAAA,OAAI,CAACT,WAAW,CAACU,OAAO,cAAAD,qBAAA,uBAAxBA,qBAAA,CAA0BE,SAAS,CAAC,CAAC;IACrC,IAAI,CAACC,QAAQ,CAAC;MACZJ,eAAe,EAAE;IACnB,CAAC,CAAC;EACJ;EAEAJ,qBAAqBA,CAAA,EAAS;IAAA,IAAAS,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IAC5B,IAAM;MAAEP;IAAgB,CAAC,GAAG,IAAI,CAACD,KAAK;IACtC,IAAIC,eAAe,KAAAK,sBAAA,GAAI,IAAI,CAACb,WAAW,CAACU,OAAO,cAAAG,sBAAA,gBAAAC,sBAAA,GAAxBD,sBAAA,CAA0BG,QAAQ,cAAAF,sBAAA,gBAAAC,sBAAA,GAAlCD,sBAAA,CAAoCJ,OAAO,cAAAK,sBAAA,eAA3CA,sBAAA,CAA6CE,IAAI,EAAE;MACxE,IAAI,CAACjB,WAAW,CAACU,OAAO,CAACM,QAAQ,CAACN,OAAO,CAACO,IAAI,CAACC,KAAK,CAAC,CAAC;MACtD,IAAI,CAACN,QAAQ,CAAC;QACZJ,eAAe,EAAE;MACnB,CAAC,CAAC;IACJ;EACF;EAEAH,sBAAsBA,CAACC,UAAsB,EAAQ;IACnD,IAAI,CAACM,QAAQ,CAAC;MACZN;IACF,CAAC,CAAC;EACJ;EAEAa,MAAMA,CAAA,EAAiB;IACrB,oBACExB,IAAA,CAACH,sBAAsB,EAAA4B,aAAA,CAAAA,aAAA;MACrBC,GAAG,EAAE,IAAI,CAACrB,WAAY;MACtBsB,aAAa,EAAE,IAAI,CAAClB,qBAAsB;MAC1CmB,kBAAkB,EAAE,IAAI,CAAClB;IAAuB,GAC5C,IAAI,CAACP,KAAK;MAAA0B,QAAA,eAEd7B,IAAA,CAACF,kBAAkB;QAACgC,OAAO,EAAE,IAAI,CAACvB;MAAa,CAAE;IAAC,EAC5B,CAAC;EAE7B;AACF;AAACH,eAAA,CA5DKH,WAAW,kBACO;EACpBU,UAAU,EAAE;AACd,CAAC;AAAAP,eAAA,CAHGH,WAAW,eAKI,aAAa;AAyDlC,eAAeA,WAAW"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PandasReloadButton.d.ts","sourceRoot":"","sources":["../../src/panels/PandasReloadButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,GACR,EAAE;IACD,OAAO,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;CACrD,GAAG,GAAG,CAAC,OAAO,CA8Bd;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React, { useCallback, useRef } from 'react';
|
|
2
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
3
|
+
import { dhRefresh } from '@deephaven/icons';
|
|
4
|
+
import { Button } from '@deephaven/components';
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
export function PandasReloadButton(_ref) {
|
|
8
|
+
var {
|
|
9
|
+
onClick
|
|
10
|
+
} = _ref;
|
|
11
|
+
var buttonRef = useRef(null);
|
|
12
|
+
var handleClick = useCallback(e => {
|
|
13
|
+
var _buttonRef$current;
|
|
14
|
+
(_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 ? void 0 : _buttonRef$current.blur();
|
|
15
|
+
onClick(e);
|
|
16
|
+
}, [onClick]);
|
|
17
|
+
return /*#__PURE__*/_jsxs(Button, {
|
|
18
|
+
ref: buttonRef,
|
|
19
|
+
kind: "primary",
|
|
20
|
+
className: "btn-pandas",
|
|
21
|
+
onClick: handleClick,
|
|
22
|
+
tooltip: "Click to refresh pandas dataframe, updates do not occur automatically.",
|
|
23
|
+
children: ["pandas dataframe", /*#__PURE__*/_jsxs("span", {
|
|
24
|
+
children: [/*#__PURE__*/_jsx(FontAwesomeIcon, {
|
|
25
|
+
icon: dhRefresh,
|
|
26
|
+
transform: "shrink-1",
|
|
27
|
+
className: "mr-1"
|
|
28
|
+
}), "Reload"]
|
|
29
|
+
})]
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
export default PandasReloadButton;
|
|
33
|
+
//# sourceMappingURL=PandasReloadButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PandasReloadButton.js","names":["React","useCallback","useRef","FontAwesomeIcon","dhRefresh","Button","jsx","_jsx","jsxs","_jsxs","PandasReloadButton","_ref","onClick","buttonRef","handleClick","e","_buttonRef$current","current","blur","ref","kind","className","tooltip","children","icon","transform"],"sources":["../../src/panels/PandasReloadButton.tsx"],"sourcesContent":["import React, { useCallback, useRef } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhRefresh } from '@deephaven/icons';\nimport { Button } from '@deephaven/components';\n\nexport function PandasReloadButton({\n onClick,\n}: {\n onClick: React.MouseEventHandler<HTMLButtonElement>;\n}): JSX.Element {\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n buttonRef.current?.blur();\n onClick(e);\n },\n [onClick]\n );\n\n return (\n <Button\n ref={buttonRef}\n kind=\"primary\"\n className=\"btn-pandas\"\n onClick={handleClick}\n tooltip=\"Click to refresh pandas dataframe, updates do not occur automatically.\"\n >\n pandas dataframe\n <span>\n <FontAwesomeIcon\n icon={dhRefresh}\n transform=\"shrink-1\"\n className=\"mr-1\"\n />\n Reload\n </span>\n </Button>\n );\n}\n\nexport default PandasReloadButton;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,MAAM,QAAQ,OAAO;AAClD,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,MAAM,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAE/C,OAAO,SAASC,kBAAkBA,CAAAC,IAAA,EAIlB;EAAA,IAJmB;IACjCC;EAGF,CAAC,GAAAD,IAAA;EACC,IAAME,SAAS,GAAGX,MAAM,CAAoB,IAAI,CAAC;EAEjD,IAAMY,WAAW,GAAGb,WAAW,CAC5Bc,CAAsC,IAAK;IAAA,IAAAC,kBAAA;IAC1C,CAAAA,kBAAA,GAAAH,SAAS,CAACI,OAAO,cAAAD,kBAAA,uBAAjBA,kBAAA,CAAmBE,IAAI,CAAC,CAAC;IACzBN,OAAO,CAACG,CAAC,CAAC;EACZ,CAAC,EACD,CAACH,OAAO,CACV,CAAC;EAED,oBACEH,KAAA,CAACJ,MAAM;IACLc,GAAG,EAAEN,SAAU;IACfO,IAAI,EAAC,SAAS;IACdC,SAAS,EAAC,YAAY;IACtBT,OAAO,EAAEE,WAAY;IACrBQ,OAAO,EAAC,wEAAwE;IAAAC,QAAA,GACjF,kBAEC,eAAAd,KAAA;MAAAc,QAAA,gBACEhB,IAAA,CAACJ,eAAe;QACdqB,IAAI,EAAEpB,SAAU;QAChBqB,SAAS,EAAC,UAAU;QACpBJ,SAAS,EAAC;MAAM,CACjB,CAAC,UAEJ;IAAA,CAAM,CAAC;EAAA,CACD,CAAC;AAEb;AAEA,eAAeX,kBAAkB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/dashboard-core-plugins",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.55.0",
|
|
4
4
|
"description": "Deephaven Dashboard Core Plugins",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -22,26 +22,26 @@
|
|
|
22
22
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@deephaven/chart": "^0.
|
|
26
|
-
"@deephaven/components": "^0.
|
|
27
|
-
"@deephaven/console": "^0.
|
|
28
|
-
"@deephaven/dashboard": "^0.
|
|
29
|
-
"@deephaven/file-explorer": "^0.
|
|
30
|
-
"@deephaven/filters": "^0.
|
|
31
|
-
"@deephaven/golden-layout": "^0.
|
|
32
|
-
"@deephaven/grid": "^0.
|
|
33
|
-
"@deephaven/icons": "^0.
|
|
34
|
-
"@deephaven/iris-grid": "^0.
|
|
35
|
-
"@deephaven/jsapi-bootstrap": "^0.
|
|
36
|
-
"@deephaven/jsapi-components": "^0.
|
|
37
|
-
"@deephaven/jsapi-types": "^0.
|
|
38
|
-
"@deephaven/jsapi-utils": "^0.
|
|
39
|
-
"@deephaven/log": "^0.
|
|
40
|
-
"@deephaven/plugin": "^0.
|
|
41
|
-
"@deephaven/react-hooks": "^0.
|
|
42
|
-
"@deephaven/redux": "^0.
|
|
43
|
-
"@deephaven/storage": "^0.
|
|
44
|
-
"@deephaven/utils": "^0.
|
|
25
|
+
"@deephaven/chart": "^0.55.0",
|
|
26
|
+
"@deephaven/components": "^0.55.0",
|
|
27
|
+
"@deephaven/console": "^0.55.0",
|
|
28
|
+
"@deephaven/dashboard": "^0.55.0",
|
|
29
|
+
"@deephaven/file-explorer": "^0.55.0",
|
|
30
|
+
"@deephaven/filters": "^0.55.0",
|
|
31
|
+
"@deephaven/golden-layout": "^0.55.0",
|
|
32
|
+
"@deephaven/grid": "^0.55.0",
|
|
33
|
+
"@deephaven/icons": "^0.55.0",
|
|
34
|
+
"@deephaven/iris-grid": "^0.55.0",
|
|
35
|
+
"@deephaven/jsapi-bootstrap": "^0.55.0",
|
|
36
|
+
"@deephaven/jsapi-components": "^0.55.0",
|
|
37
|
+
"@deephaven/jsapi-types": "^0.55.0",
|
|
38
|
+
"@deephaven/jsapi-utils": "^0.55.0",
|
|
39
|
+
"@deephaven/log": "^0.55.0",
|
|
40
|
+
"@deephaven/plugin": "^0.55.0",
|
|
41
|
+
"@deephaven/react-hooks": "^0.55.0",
|
|
42
|
+
"@deephaven/redux": "^0.55.0",
|
|
43
|
+
"@deephaven/storage": "^0.55.0",
|
|
44
|
+
"@deephaven/utils": "^0.55.0",
|
|
45
45
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
|
46
46
|
"classnames": "^2.3.1",
|
|
47
47
|
"deep-equal": "^2.0.5",
|
|
@@ -64,8 +64,8 @@
|
|
|
64
64
|
"react-redux": "^7.2.4"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@deephaven/jsapi-shim": "^0.
|
|
68
|
-
"@deephaven/mocks": "^0.
|
|
67
|
+
"@deephaven/jsapi-shim": "^0.55.0",
|
|
68
|
+
"@deephaven/mocks": "^0.55.0"
|
|
69
69
|
},
|
|
70
70
|
"files": [
|
|
71
71
|
"dist"
|
|
@@ -76,5 +76,5 @@
|
|
|
76
76
|
"publishConfig": {
|
|
77
77
|
"access": "public"
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "c6c1e12a7c05ee082baf7def89e1e4f597f1e38a"
|
|
80
80
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChartPlugin.d.ts","sourceRoot":"","sources":["../src/ChartPlugin.tsx"],"names":[],"mappings":";AAiBA,OAAO,EAAE,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAQhF,OAA4B,EAC1B,KAAK,UAAU,EAEhB,MAAM,qBAAqB,CAAC;AAwF7B,wBAAgB,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CA+B3E;AAED,eAAO,MAAM,gBAAgB,yGA6C5B,CAAC"}
|
package/dist/ChartPlugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ChartPlugin.js","names":["forwardRef","useEffect","useMemo","useState","useApi","useConnection","Chart","ChartModelFactory","useChartTheme","IrisGridUtils","getTimeZone","store","isChartPanelDehydratedProps","isChartPanelFigureMetadata","isChartPanelTableMetadata","ConnectedChartPanel","jsx","_jsx","createChartModel","_x","_x2","_x3","_x4","_x5","_x6","_createChartModel","apply","arguments","_asyncToGenerator","dh","chartTheme","connection","metadata","fetch","panelState","settings","tableName","figureName","tableSettings","table","undefined","figure","name","_objectSpread","makeModel","type","VariableType","FIGURE","definition","getObject","TABLE","applyTableSettings","getState","makeModelFromSettings","ChartPlugin","props","model","setModel","cancelled","init","_init","newModel","ChartPanelPlugin","ref","localDashboardId","hydratedProps","Error","displayName"],"sources":["../src/ChartPlugin.tsx"],"sourcesContent":["import { forwardRef, useEffect, useMemo, useState } from 'react';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { useConnection } from '@deephaven/jsapi-components';\nimport {\n Chart,\n ChartModel,\n ChartModelFactory,\n ChartTheme,\n useChartTheme,\n} from '@deephaven/chart';\nimport type {\n dh as DhType,\n Figure,\n IdeConnection,\n} from '@deephaven/jsapi-types';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport { getTimeZone, store } from '@deephaven/redux';\nimport { WidgetPanelProps, type WidgetComponentProps } from '@deephaven/plugin';\nimport {\n ChartPanelMetadata,\n GLChartPanelState,\n isChartPanelDehydratedProps,\n isChartPanelFigureMetadata,\n isChartPanelTableMetadata,\n} from './panels';\nimport ConnectedChartPanel, {\n type ChartPanel,\n type ChartPanelProps,\n} from './panels/ChartPanel';\n\nasync function createChartModel(\n dh: DhType,\n chartTheme: ChartTheme,\n connection: IdeConnection,\n metadata: ChartPanelMetadata,\n fetch: () => Promise<Figure>,\n panelState?: GLChartPanelState\n): Promise<ChartModel> {\n let settings;\n let tableName;\n let figureName;\n let tableSettings;\n\n if (isChartPanelTableMetadata(metadata)) {\n settings = metadata.settings;\n tableName = metadata.table;\n figureName = undefined;\n tableSettings = metadata.tableSettings;\n } else {\n settings = {};\n tableName = '';\n figureName = isChartPanelFigureMetadata(metadata)\n ? metadata.figure\n : metadata.name;\n tableSettings = {};\n }\n if (panelState != null) {\n if (panelState.tableSettings != null) {\n tableSettings = panelState.tableSettings;\n }\n if (panelState.table != null) {\n tableName = panelState.table;\n }\n if (panelState.figure != null) {\n figureName = panelState.figure;\n }\n if (panelState.settings != null) {\n settings = {\n ...settings,\n ...panelState.settings,\n };\n }\n }\n\n if (figureName == null && tableName == null) {\n const figure = await fetch();\n\n return ChartModelFactory.makeModel(dh, settings, figure, chartTheme);\n }\n\n if (figureName != null) {\n let figure: Figure;\n\n if (metadata.type === dh.VariableType.FIGURE) {\n const definition = {\n name: figureName,\n type: dh.VariableType.FIGURE,\n };\n figure = await connection.getObject(definition);\n } else {\n figure = await fetch();\n }\n\n return ChartModelFactory.makeModel(dh, settings, figure, chartTheme);\n }\n\n const definition = {\n name: tableName,\n type: dh.VariableType.TABLE,\n };\n const table = await connection.getObject(definition);\n new IrisGridUtils(dh).applyTableSettings(\n table,\n tableSettings,\n getTimeZone(store.getState())\n );\n\n return ChartModelFactory.makeModelFromSettings(\n dh,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n settings as any,\n table,\n chartTheme\n );\n}\n\nexport function ChartPlugin(props: WidgetComponentProps): JSX.Element | null {\n const dh = useApi();\n const chartTheme = useChartTheme();\n const [model, setModel] = useState<ChartModel>();\n\n const { fetch } = props;\n\n useEffect(() => {\n let cancelled = false;\n async function init() {\n const figure = (await fetch()) as unknown as Figure;\n const newModel = await ChartModelFactory.makeModel(\n dh,\n undefined,\n figure,\n chartTheme\n );\n\n if (!cancelled) {\n setModel(newModel);\n }\n }\n\n init();\n\n return () => {\n cancelled = true;\n };\n }, [dh, fetch, chartTheme]);\n\n return model ? <Chart model={model} /> : null;\n}\n\nexport const ChartPanelPlugin = forwardRef(\n (props: WidgetPanelProps, ref: React.Ref<ChartPanel>) => {\n const dh = useApi();\n const chartTheme = useChartTheme();\n const connection = useConnection();\n\n const panelState = isChartPanelDehydratedProps(props)\n ? (props as unknown as ChartPanelProps).panelState\n : undefined;\n\n const { fetch, metadata, localDashboardId } = props;\n\n const hydratedProps = useMemo(\n () => ({\n metadata: metadata as ChartPanelMetadata,\n localDashboardId,\n makeModel: () => {\n if (metadata == null) {\n throw new Error('Metadata is required for chart panel');\n }\n\n return createChartModel(\n dh,\n chartTheme,\n connection,\n metadata as ChartPanelMetadata,\n fetch as unknown as () => Promise<Figure>,\n panelState\n );\n },\n }),\n [\n dh,\n connection,\n fetch,\n panelState,\n metadata,\n localDashboardId,\n chartTheme,\n ]\n );\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <ConnectedChartPanel ref={ref} {...props} {...hydratedProps} />;\n }\n);\n\nChartPanelPlugin.displayName = 'ChartPanelPlugin';\n"],"mappings":"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"}
|
package/dist/GridPlugin.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GridPlugin.d.ts","sourceRoot":"","sources":["../src/GridPlugin.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAShF,OAA+B,EAC7B,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,UAAU,CAAC,KAAK,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAyB1E;AAED,eAAO,MAAM,eAAe,4GAW3B,CAAC"}
|
package/dist/GridPlugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GridPlugin.js","names":["useEffect","useState","forwardRef","useApi","IrisGrid","IrisGridModelFactory","useHydrateGrid","ConnectedIrisGridPanel","jsx","_jsx","GridPlugin","props","dh","model","setModel","fetch","cancelled","init","_init","apply","arguments","_asyncToGenerator","table","newModel","makeModel","GridPanelPlugin","ref","localDashboardId","hydratedProps","_objectSpread","displayName"],"sources":["../src/GridPlugin.tsx"],"sourcesContent":["import { useEffect, useState, forwardRef } from 'react';\nimport { WidgetPanelProps, type WidgetComponentProps } from '@deephaven/plugin';\nimport { type Table } from '@deephaven/jsapi-types';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport {\n IrisGrid,\n IrisGridModelFactory,\n type IrisGridModel,\n} from '@deephaven/iris-grid';\nimport useHydrateGrid from './useHydrateGrid';\nimport ConnectedIrisGridPanel, {\n type IrisGridPanel,\n} from './panels/IrisGridPanel';\n\nexport function GridPlugin(props: WidgetComponentProps): JSX.Element | null {\n const dh = useApi();\n const [model, setModel] = useState<IrisGridModel>();\n\n const { fetch } = props;\n\n useEffect(() => {\n let cancelled = false;\n async function init() {\n const table = (await fetch()) as unknown as Table;\n const newModel = await IrisGridModelFactory.makeModel(dh, table);\n if (!cancelled) {\n setModel(newModel);\n }\n }\n\n init();\n\n return () => {\n cancelled = true;\n };\n }, [dh, fetch]);\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return model ? <IrisGrid model={model} /> : null;\n}\n\nexport const GridPanelPlugin = forwardRef(\n (props: WidgetPanelProps, ref: React.Ref<IrisGridPanel>) => {\n const { localDashboardId, fetch } = props;\n const hydratedProps = useHydrateGrid(\n fetch as unknown as () => Promise<Table>,\n localDashboardId\n );\n\n // eslint-disable-next-line react/jsx-props-no-spreading\n return <ConnectedIrisGridPanel ref={ref} {...props} {...hydratedProps} />;\n }\n);\n\nGridPanelPlugin.displayName = 'GridPanelPlugin';\n"],"mappings":";;;;;;;AAAA,SAASA,SAAS,EAAEC,QAAQ,EAAEC,UAAU,QAAQ,OAAO;AAGvD,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SACEC,QAAQ,EACRC,oBAAoB,QAEf,sBAAsB;AAAC,OACvBC,cAAc;AAAA,OACdC,sBAAsB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAI7B,OAAO,SAASC,UAAUA,CAACC,KAA2B,EAAsB;EAC1E,IAAMC,EAAE,GAAGT,MAAM,CAAC,CAAC;EACnB,IAAM,CAACU,KAAK,EAAEC,QAAQ,CAAC,GAAGb,QAAQ,CAAgB,CAAC;EAEnD,IAAM;IAAEc;EAAM,CAAC,GAAGJ,KAAK;EAEvBX,SAAS,CAAC,MAAM;IACd,IAAIgB,SAAS,GAAG,KAAK;IAAC,SACPC,IAAIA,CAAA;MAAA,OAAAC,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,MAAA;MAAAA,KAAA,GAAAG,iBAAA,CAAnB,aAAsB;QACpB,IAAMC,KAAK,SAAUP,KAAK,CAAC,CAAsB;QACjD,IAAMQ,QAAQ,SAASlB,oBAAoB,CAACmB,SAAS,CAACZ,EAAE,EAAEU,KAAK,CAAC;QAChE,IAAI,CAACN,SAAS,EAAE;UACdF,QAAQ,CAACS,QAAQ,CAAC;QACpB;MACF,CAAC;MAAA,OAAAL,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAEDH,IAAI,CAAC,CAAC;IAEN,OAAO,MAAM;MACXD,SAAS,GAAG,IAAI;IAClB,CAAC;EACH,CAAC,EAAE,CAACJ,EAAE,EAAEG,KAAK,CAAC,CAAC;;EAEf;EACA,OAAOF,KAAK,gBAAGJ,IAAA,CAACL,QAAQ;IAACS,KAAK,EAAEA;EAAM,CAAE,CAAC,GAAG,IAAI;AAClD;AAEA,OAAO,IAAMY,eAAe,gBAAGvB,UAAU,CACvC,CAACS,KAAuB,EAAEe,GAA6B,KAAK;EAC1D,IAAM;IAAEC,gBAAgB;IAAEZ;EAAM,CAAC,GAAGJ,KAAK;EACzC,IAAMiB,aAAa,GAAGtB,cAAc,CAClCS,KAAK,EACLY,gBACF,CAAC;;EAED;EACA,oBAAOlB,IAAA,CAACF,sBAAsB,EAAAsB,aAAA,CAAAA,aAAA;IAACH,GAAG,EAAEA;EAAI,GAAKf,KAAK,GAAMiB,aAAa,CAAG,CAAC;AAC3E,CACF,CAAC;AAEDH,eAAe,CAACK,WAAW,GAAG,iBAAiB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PandasPlugin.d.ts","sourceRoot":"","sources":["../src/PandasPlugin.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAQ3E,OAAO,EAAE,WAAW,EAAsB,MAAM,UAAU,CAAC;AAG3D,wBAAgB,YAAY,CAAC,KAAK,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAiD5E;AAED,eAAO,MAAM,iBAAiB,0GAa7B,CAAC"}
|
package/dist/PandasPlugin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PandasPlugin.js","names":["forwardRef","useCallback","useEffect","useState","IrisGrid","IrisGridModelFactory","useApi","LoadingOverlay","PandasPanel","PandasReloadButton","useHydrateGrid","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PandasPlugin","props","dh","model","setModel","isLoading","setIsLoading","isLoaded","setIsLoaded","fetch","makeModel","_asyncToGenerator","table","handleReload","newModel","cancelled","init","_init","apply","arguments","children","onClick","PandasPanelPlugin","ref","localDashboardId","hydratedProps","_objectSpread","displayName"],"sources":["../src/PandasPlugin.tsx"],"sourcesContent":["import { forwardRef, useCallback, useEffect, useState } from 'react';\nimport { WidgetComponentProps, WidgetPanelProps } from '@deephaven/plugin';\nimport { type Table } from '@deephaven/jsapi-types';\nimport IrisGrid, {\n IrisGridModelFactory,\n type IrisGridModel,\n} from '@deephaven/iris-grid';\nimport { useApi } from '@deephaven/jsapi-bootstrap';\nimport { LoadingOverlay } from '@deephaven/components';\nimport { PandasPanel, PandasReloadButton } from './panels';\nimport useHydrateGrid from './useHydrateGrid';\n\nexport function PandasPlugin(props: WidgetComponentProps): JSX.Element | null {\n const dh = useApi();\n const [model, setModel] = useState<IrisGridModel>();\n const [isLoading, setIsLoading] = useState(true);\n const [isLoaded, setIsLoaded] = useState(false);\n\n const { fetch } = props;\n\n const makeModel = useCallback(async () => {\n const table = (await fetch()) as unknown as Table;\n return IrisGridModelFactory.makeModel(dh, table);\n }, [dh, fetch]);\n\n const handleReload = useCallback(async () => {\n setIsLoading(true);\n const newModel = await makeModel();\n setModel(newModel);\n setIsLoading(false);\n }, [makeModel]);\n\n useEffect(() => {\n let cancelled = false;\n async function init() {\n const newModel = await makeModel();\n if (!cancelled) {\n setModel(newModel);\n setIsLoaded(true);\n setIsLoading(false);\n }\n }\n\n init();\n setIsLoading(true);\n\n return () => {\n cancelled = true;\n };\n }, [makeModel]);\n\n return (\n <>\n <LoadingOverlay isLoaded={isLoaded} isLoading={isLoading} />\n {model && (\n <IrisGrid model={model}>\n <PandasReloadButton onClick={handleReload} />\n </IrisGrid>\n )}\n </>\n );\n}\n\nexport const PandasPanelPlugin = forwardRef(\n (props: WidgetPanelProps, ref: React.Ref<PandasPanel>) => {\n const { localDashboardId, fetch } = props;\n const hydratedProps = useHydrateGrid(\n fetch as unknown as () => Promise<Table>,\n localDashboardId\n );\n\n return (\n // eslint-disable-next-line react/jsx-props-no-spreading\n <PandasPanel ref={ref} {...props} {...hydratedProps} />\n );\n }\n);\n\nPandasPanelPlugin.displayName = 'PandasPanelPlugin';\n"],"mappings":"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"}
|