@deephaven/dashboard-core-plugins 0.9.1-embed-grid.14 → 0.9.2-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/ChartPlugin.d.ts +2 -2
  2. package/dist/ChartPlugin.d.ts.map +1 -1
  3. package/dist/ChartPlugin.js +5 -4
  4. package/dist/ChartPlugin.js.map +1 -1
  5. package/dist/ConsolePlugin.d.ts +2 -1
  6. package/dist/ConsolePlugin.d.ts.map +1 -1
  7. package/dist/ConsolePlugin.js +8 -7
  8. package/dist/ConsolePlugin.js.map +1 -1
  9. package/dist/FilterPlugin.d.ts +2 -1
  10. package/dist/FilterPlugin.d.ts.map +1 -1
  11. package/dist/FilterPlugin.js +10 -9
  12. package/dist/FilterPlugin.js.map +1 -1
  13. package/dist/GridPlugin.d.ts +4 -2
  14. package/dist/GridPlugin.d.ts.map +1 -1
  15. package/dist/GridPlugin.js +9 -6
  16. package/dist/GridPlugin.js.map +1 -1
  17. package/dist/LinkerPlugin.d.ts +2 -1
  18. package/dist/LinkerPlugin.d.ts.map +1 -1
  19. package/dist/LinkerPlugin.js +4 -2
  20. package/dist/LinkerPlugin.js.map +1 -1
  21. package/dist/MarkdownPlugin.d.ts +7 -1
  22. package/dist/MarkdownPlugin.d.ts.map +1 -1
  23. package/dist/MarkdownPlugin.js +6 -5
  24. package/dist/MarkdownPlugin.js.map +1 -1
  25. package/dist/PandasPlugin.d.ts +2 -2
  26. package/dist/PandasPlugin.d.ts.map +1 -1
  27. package/dist/PandasPlugin.js +47 -5
  28. package/dist/PandasPlugin.js.map +1 -1
  29. package/dist/controls/dropdown-filter/DropdownFilter.css.map +1 -1
  30. package/dist/controls/input-filter/InputFilter.css.map +1 -1
  31. package/dist/linker/LinkerOverlayContent.css.map +1 -1
  32. package/dist/panels/ConsolePanel.d.ts +4 -2
  33. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  34. package/dist/panels/ConsolePanel.js +51 -16
  35. package/dist/panels/ConsolePanel.js.map +1 -1
  36. package/dist/panels/FilterSetManager.css.map +1 -1
  37. package/dist/panels/FilterSetManager.js +3 -4
  38. package/dist/panels/FilterSetManager.js.map +1 -1
  39. package/dist/panels/FilterSetManagerPanel.css.map +1 -1
  40. package/dist/panels/FilterSetManagerPanel.d.ts +1 -1
  41. package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
  42. package/dist/panels/FilterSetManagerPanel.js +3 -20
  43. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  44. package/dist/panels/IrisGridPanel.d.ts +4 -1
  45. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  46. package/dist/panels/IrisGridPanel.js +23 -7
  47. package/dist/panels/IrisGridPanel.js.map +1 -1
  48. package/dist/panels/MarkdownNotebook.css +106 -0
  49. package/dist/panels/MarkdownNotebook.css.map +1 -0
  50. package/dist/panels/MarkdownNotebook.d.ts +41 -0
  51. package/dist/panels/MarkdownNotebook.d.ts.map +1 -0
  52. package/dist/panels/MarkdownNotebook.js +254 -0
  53. package/dist/panels/MarkdownNotebook.js.map +1 -0
  54. package/dist/panels/NotebookPanel.d.ts +14 -0
  55. package/dist/panels/NotebookPanel.d.ts.map +1 -1
  56. package/dist/panels/NotebookPanel.js +124 -32
  57. package/dist/panels/NotebookPanel.js.map +1 -1
  58. package/package.json +19 -23
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/FilterSetManager.tsx"],"names":["React","Component","memoizeOne","shortid","FontAwesomeIcon","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhICursor","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","log","module","NAME_INPUT_PLACEHOLDER","EMPTY_LIST_PLACEHOLDER","FilterSetManager","animateScreenFlash","overlay","document","createElement","classList","add","addEventListener","remove","querySelector","appendChild","constructor","props","createRef","filterSets","renameSet","undefined","some","id","handleSettingsCancel","bind","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleEditDropdownChange","handleFilterChange","handleFilterApply","handleCaptureNewSet","handleNameInputChange","handleNameInputKeyPress","handleRenameConfirm","handleRenameCancel","handleSetDelete","handleSetRename","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","componentDidMount","isValueShown","updateSelectedId","initSettingsScreen","componentDidUpdate","prevProps","prevState","isNameInputScreen","focusRenameInput","length","onChange","selectedId","debug","setState","isEmptyList","event","value","target","applyFilterSet","onUpdateSets","getFilterState","panels","title","getNameError","trimmedName","trim","error","namedFilterSet","selectedIndex","findIndex","updatedModifiedFilterSets","push","prevFilterSets","filter","newSelectedIndex","Math","max","min","newSelectedId","selectedSetIndex","selectedSet","find","stopPropagation","dropdownRef","current","focusInput","key","preventDefault","onApply","filterSet","focus","renameInputRef","render","isRenamingExistingSet","isEmptyEditList","isInitialScreen","isEditListScreen","captureSetIcon","updateSetIcon","editDropdownRef","map"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n ReactNode,\n KeyboardEvent,\n MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport shortid from 'shortid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n vsGear,\n vsSave,\n vsCircleSlash,\n vsTrash,\n vsDeviceCamera,\n dhICursor,\n dhRefresh,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsArrowSmallUp,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Button, CardFlip } from '@deephaven/components';\n\nimport './FilterSetManager.scss';\n\nconst log = Log.module('FilterSetManager');\n\nexport interface FilterSetPanel {\n id: string;\n state: unknown;\n}\n\nexport interface FilterSet {\n id: string;\n title: string;\n panels: FilterSetPanel[];\n}\n\nexport interface ChangeHandlerArgs {\n isValueShown: boolean;\n selectedId?: string;\n}\n\ninterface FilterSetManagerProps {\n isValueShown: boolean;\n selectedId?: string;\n filterSets: FilterSet[];\n getFilterState(): FilterSetPanel[];\n onChange(args: ChangeHandlerArgs): void;\n onApply(filterSet: FilterSet): void;\n onUpdateSets(filterSets: FilterSet[], editId?: string): void;\n}\n\ninterface FilterSetManagerState {\n nameInputValue: string;\n nameInputError?: string;\n editId?: string;\n renameSet?: FilterSet;\n // Unsaved set changes on the settings screen\n modifiedFilterSets: FilterSet[];\n}\n\nconst NAME_INPUT_PLACEHOLDER = 'Enter name...';\n\nconst EMPTY_LIST_PLACEHOLDER = 'No Available Filter Sets';\n\nclass FilterSetManager extends Component<\n FilterSetManagerProps,\n FilterSetManagerState\n> {\n static animateScreenFlash(): void {\n const overlay = document.createElement('div');\n overlay.classList.add('screen-flash-overlay');\n overlay.addEventListener('animationend', () => {\n // Removing the element removes its event listeners\n overlay.remove();\n });\n document.querySelector('body')?.appendChild(overlay);\n }\n\n constructor(props: FilterSetManagerProps) {\n super(props);\n\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleEditDropdownChange = this.handleEditDropdownChange.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleCaptureNewSet = this.handleCaptureNewSet.bind(this);\n this.handleNameInputChange = this.handleNameInputChange.bind(this);\n this.handleNameInputKeyPress = this.handleNameInputKeyPress.bind(this);\n this.handleRenameConfirm = this.handleRenameConfirm.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n\n this.handleSetDelete = this.handleSetDelete.bind(this);\n this.handleSetRename = this.handleSetRename.bind(this);\n this.handleSetUpdate = this.handleSetUpdate.bind(this);\n\n this.state = {\n editId: undefined,\n renameSet: undefined,\n nameInputValue: '',\n nameInputError: undefined,\n modifiedFilterSets: [],\n };\n }\n\n componentDidMount(): void {\n const { isValueShown } = this.props;\n if (isValueShown) {\n this.updateSelectedId();\n } else {\n this.initSettingsScreen();\n }\n }\n\n componentDidUpdate(\n prevProps: FilterSetManagerProps,\n prevState: FilterSetManagerState\n ): void {\n const { isValueShown, filterSets } = this.props;\n const { modifiedFilterSets } = this.state;\n\n if (prevProps.isValueShown && !isValueShown) {\n this.initSettingsScreen();\n }\n\n if (this.isNameInputScreen() && !this.isNameInputScreen(prevState)) {\n this.focusRenameInput();\n }\n\n if (filterSets !== prevProps.filterSets) {\n if (\n !isValueShown &&\n filterSets.length > 0 &&\n prevProps.filterSets.length === 0 &&\n modifiedFilterSets.length === 0\n ) {\n // Filter set added from another panel, flip from the settings side/initial screen to the value side\n const { onChange } = this.props;\n onChange({ isValueShown: true, selectedId: filterSets[0].id });\n } else {\n this.updateSelectedId();\n }\n }\n }\n\n private renameInputRef = React.createRef<HTMLInputElement>();\n\n private dropdownRef = React.createRef<HTMLSelectElement>();\n\n private editDropdownRef = React.createRef<HTMLSelectElement>();\n\n initSettingsScreen(): void {\n const { filterSets, selectedId } = this.props;\n log.debug('initSettingsScreen', filterSets, selectedId);\n this.setState({\n modifiedFilterSets: [...filterSets],\n editId: selectedId,\n });\n }\n\n // Update selected id without applying the new set on filterSets change\n updateSelectedId(): void {\n const { isValueShown, filterSets, selectedId, onChange } = this.props;\n log.debug('updateSelectedId', filterSets, selectedId);\n if (!isValueShown) {\n return;\n }\n if (!filterSets.some(({ id }) => id === selectedId)) {\n // Update the selection if selectedId doesn't exist in the list\n // Flip to the settings side for empty list to show the initial screen\n const isEmptyList = filterSets.length === 0;\n onChange({\n isValueShown: !isEmptyList,\n selectedId: isEmptyList ? undefined : filterSets[0].id,\n });\n }\n }\n\n handleEditDropdownChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: editId } = event.target;\n this.setState({ editId });\n }\n\n handleFilterChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: selectedId } = event.target;\n const { isValueShown, onChange } = this.props;\n this.applyFilterSet(selectedId);\n onChange({ isValueShown, selectedId });\n }\n\n handleFilterApply(): void {\n const { selectedId } = this.props;\n this.applyFilterSet(selectedId);\n }\n\n handleSettingsCancel(): void {\n const { onChange, selectedId, filterSets } = this.props;\n this.setState({ modifiedFilterSets: [] });\n // Flip the card to the filter set selection screen if the sets list isn't empty\n // Otherwise show the initial screen\n if (filterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleSettingsSave(): void {\n const { onChange, onUpdateSets, selectedId } = this.props;\n const { modifiedFilterSets, editId } = this.state;\n this.setState({ modifiedFilterSets: [] });\n log.debug('Update sets', modifiedFilterSets, editId);\n onUpdateSets(modifiedFilterSets, editId);\n // Don't flip the card to the filter set selection screen if the updated sets list is empty\n if (modifiedFilterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleCaptureNewSet(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const id = shortid();\n const panels = getFilterState();\n const renameSet = {\n id,\n title: '',\n panels,\n };\n log.debug('handleSetCreate', renameSet);\n this.setState({ nameInputValue: '', nameInputError: undefined, renameSet });\n }\n\n handleRenameCancel(): void {\n this.setState({ renameSet: undefined });\n }\n\n getNameError(nameInputValue: string): string | undefined {\n const { renameSet, modifiedFilterSets } = this.state;\n const trimmedName = nameInputValue?.trim() ?? '';\n if (trimmedName.length === 0) {\n log.debug('Name cannot be empty', trimmedName);\n return 'Name cannot be empty';\n }\n\n if (\n renameSet !== undefined &&\n modifiedFilterSets.some(\n ({ title, id }) => title === trimmedName && id !== renameSet.id\n )\n ) {\n log.debug('Set with this name already exists', trimmedName);\n return 'Set with this name already exists';\n }\n\n return undefined;\n }\n\n handleRenameConfirm(): void {\n const { nameInputValue, renameSet, modifiedFilterSets } = this.state;\n if (renameSet === undefined) {\n log.error('Renamed set undefined.');\n return;\n }\n const nameInputError = this.getNameError(nameInputValue);\n log.debug('handleRenameConfirm', nameInputValue, nameInputError);\n if (nameInputError !== undefined) {\n this.setState({ nameInputError });\n return;\n }\n const trimmedName = nameInputValue?.trim() ?? '';\n const namedFilterSet = { ...renameSet, title: trimmedName };\n const selectedIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === renameSet.id\n );\n const updatedModifiedFilterSets = [...modifiedFilterSets];\n\n if (selectedIndex >= 0) {\n updatedModifiedFilterSets[selectedIndex] = namedFilterSet;\n log.debug('Renamed existing set', updatedModifiedFilterSets);\n } else {\n updatedModifiedFilterSets.push(namedFilterSet);\n log.debug('Added new set to modified sets', updatedModifiedFilterSets);\n }\n\n this.setState({\n editId: namedFilterSet.id,\n modifiedFilterSets: updatedModifiedFilterSets,\n renameSet: undefined,\n });\n }\n\n handleSetDelete(): void {\n this.setState(state => {\n const { editId, modifiedFilterSets: prevFilterSets } = state;\n const selectedIndex = prevFilterSets.findIndex(({ id }) => id === editId);\n if (selectedIndex < 0) {\n log.error(\n 'Unable to find selected filterSet index',\n prevFilterSets,\n editId\n );\n return null;\n }\n const modifiedFilterSets = prevFilterSets.filter(\n ({ id }) => id !== editId\n );\n const newSelectedIndex = Math.max(\n 0,\n Math.min(modifiedFilterSets.length - 1, selectedIndex - 1)\n );\n const newSelectedId =\n modifiedFilterSets.length > 0\n ? modifiedFilterSets[newSelectedIndex].id\n : undefined;\n log.debug(\n 'Deleted selected set',\n editId,\n prevFilterSets,\n modifiedFilterSets\n );\n log.debug('New selection', newSelectedIndex, newSelectedId);\n return {\n modifiedFilterSets,\n editId: newSelectedId,\n };\n });\n }\n\n handleSetUpdate(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const panels = getFilterState();\n this.setState(({ modifiedFilterSets: prevFilterSets, editId }) => {\n if (editId === undefined) {\n log.error('Filter for update not selected.');\n return null;\n }\n const modifiedFilterSets = [...prevFilterSets];\n const selectedSetIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === editId\n );\n if (selectedSetIndex < 0) {\n log.error('Selected set for update not found.');\n return null;\n }\n // Clone selected set to avoid mutation of the props\n modifiedFilterSets[selectedSetIndex] = {\n ...modifiedFilterSets[selectedSetIndex],\n panels,\n };\n\n log.debug('Update set', modifiedFilterSets, panels);\n return {\n modifiedFilterSets,\n };\n });\n }\n\n handleSetRename(): void {\n this.setState(({ editId, modifiedFilterSets }) => {\n const selectedSet = modifiedFilterSets.find(({ id }) => id === editId);\n if (selectedSet === undefined) {\n log.error('Could not find selected set', editId, modifiedFilterSets);\n return null;\n }\n const { title } = selectedSet;\n return {\n nameInputValue: title,\n nameInputError: undefined,\n renameSet: selectedSet,\n };\n });\n }\n\n handleSettingsClick(event: MouseEvent): void {\n event.stopPropagation();\n const { onChange, selectedId } = this.props;\n onChange({ isValueShown: false, selectedId });\n }\n\n handleBackgroundClick(event: MouseEvent): void {\n log.debug('handleBackgroundClick');\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n handleNameInputChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value: nameInputValue } = event.target;\n const nameInputError = this.getNameError(nameInputValue);\n this.setState({ nameInputValue, nameInputError });\n }\n\n handleNameInputKeyPress(event: KeyboardEvent): void {\n const { key } = event;\n if (key === 'Enter') {\n event.preventDefault();\n this.handleRenameConfirm();\n }\n }\n\n isNameInputScreen(state = this.state): boolean {\n const { renameSet } = state;\n return renameSet !== undefined;\n }\n\n isRenamingExistingSet = memoizeOne(\n (filterSets: FilterSet[], renameSet?: FilterSet): boolean =>\n renameSet !== undefined &&\n filterSets.some(({ id }) => id === renameSet.id)\n );\n\n applyFilterSet(selectedId?: string): void {\n const { onApply, filterSets } = this.props;\n if (selectedId === undefined) {\n log.debug('No filter selected');\n return;\n }\n const filterSet = filterSets.find(({ id }) => id === selectedId);\n if (filterSet === undefined) {\n log.debug('Selected id not found in filterSets', selectedId, filterSets);\n return;\n }\n log.debug('Apply filterSet', filterSet);\n onApply(filterSet);\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n focusRenameInput(): void {\n this.renameInputRef.current?.focus();\n }\n\n render(): ReactNode {\n const {\n nameInputValue,\n nameInputError,\n editId,\n renameSet,\n modifiedFilterSets,\n } = this.state;\n const { isValueShown, filterSets, selectedId } = this.props;\n const isNameInputScreen = this.isNameInputScreen();\n const isRenamingExistingSet = this.isRenamingExistingSet(\n modifiedFilterSets,\n renameSet\n );\n const isEmptyEditList = modifiedFilterSets.length === 0;\n const isInitialScreen =\n !isNameInputScreen && isEmptyEditList && filterSets.length === 0;\n const isEditListScreen = !isNameInputScreen && !isInitialScreen;\n const captureSetIcon = (\n <div className=\"fa-layers mr-3\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhNewCircleLargeFilled}\n className=\"text-primary\"\n transform=\"shrink-6 down-5 right-7\"\n />\n </div>\n );\n const updateSetIcon = (\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={vsArrowSmallUp}\n transform=\"shrink-1 down-5 right-7\"\n />\n </div>\n );\n return (\n <div className=\"filter-set-manager fill-parent-absolute\">\n <CardFlip className=\"w-100 h-100\" isFlipped={isValueShown}>\n <div\n className=\"filter-set-manager-settings-card fill-parent-absolute\"\n key=\"front\"\n >\n <div className=\"filter-set-manager-card-content\">\n {isInitialScreen && (\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture filter set\n </Button>\n <div className=\"py-3 text-muted small\">\n Takes a snapshot of the currently applied filters on all\n panels, allowing you to restore saved filter sets later.\n </div>\n </div>\n )}\n\n {isNameInputScreen && (\n <div className=\"d-flex flex-column justify-content-center\">\n <div className=\"form-group\">\n <label>\n {isRenamingExistingSet\n ? 'Rename set'\n : 'Name captured set'}\n </label>\n <div className=\"name-input-container\">\n <input\n type=\"text\"\n className=\"input-set-name form-control\"\n placeholder={NAME_INPUT_PLACEHOLDER}\n value={nameInputValue}\n ref={this.renameInputRef}\n onChange={this.handleNameInputChange}\n onKeyPress={this.handleNameInputKeyPress}\n spellCheck=\"false\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameConfirm}\n tooltip=\"Save\"\n icon={vsSave}\n />\n\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameCancel}\n tooltip=\"Cancel\"\n icon={vsCircleSlash}\n />\n </div>\n {nameInputError && (\n <div className=\"error-message\">{nameInputError}</div>\n )}\n </div>\n </div>\n )}\n\n {isEditListScreen && (\n <div className=\"filter-set-manager-settings-grid-1\">\n <div className=\"form-group\">\n <label>Edit filter sets</label>\n <div className=\"filter-select-container\">\n <select\n ref={this.editDropdownRef}\n value={editId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleEditDropdownChange}\n disabled={isEmptyEditList}\n >\n {isEmptyEditList && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {modifiedFilterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </select>\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetUpdate}\n disabled={isEmptyEditList}\n icon={updateSetIcon}\n tooltip=\"Update\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetRename}\n disabled={isEmptyEditList}\n icon={dhICursor}\n tooltip=\"Rename\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetDelete}\n disabled={isEmptyEditList}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n </div>\n </div>\n\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture new filter set\n </Button>\n </div>\n\n <div className=\"py-3 text-right\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n >\n Cancel\n </Button>\n &nbsp;\n <Button kind=\"primary\" onClick={this.handleSettingsSave}>\n Save\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n <div\n className=\"filter-set-manager-value-card fill-parent-absolute\"\n key=\"back\"\n onClick={this.handleBackgroundClick}\n >\n <>\n <div className=\"filter-set-manager-column\">\n <div className=\"filter-set-manager-column-title\">\n Filter sets\n </div>\n </div>\n <div className=\"filter-set-manager-card-content\">\n <div className=\"filter-set-manager-value-input\">\n <div className=\"filter-select-container\">\n <select\n ref={this.dropdownRef}\n value={selectedId}\n className=\"custom-select filter-value-select\"\n onChange={this.handleFilterChange}\n >\n {filterSets.length === 0 && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {filterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </select>\n <Button\n kind=\"ghost\"\n onClick={this.handleFilterApply}\n icon={dhRefresh}\n tooltip=\"Apply Filter Set\"\n />\n </div>\n </div>\n </div>\n <div className=\"filter-set-manager-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n tooltip=\"Settings\"\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n />\n </div>\n </>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"file":"FilterSetManager.js"}
1
+ {"version":3,"sources":["../../src/panels/FilterSetManager.tsx"],"names":["React","Component","memoizeOne","shortid","FontAwesomeIcon","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhICursor","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","log","module","NAME_INPUT_PLACEHOLDER","EMPTY_LIST_PLACEHOLDER","FilterSetManager","animateScreenFlash","overlay","document","createElement","classList","add","addEventListener","remove","querySelector","appendChild","constructor","props","createRef","filterSets","renameSet","undefined","some","id","handleSettingsCancel","bind","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleEditDropdownChange","handleFilterChange","handleFilterApply","handleCaptureNewSet","handleNameInputChange","handleNameInputKeyPress","handleRenameConfirm","handleRenameCancel","handleSetDelete","handleSetRename","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","componentDidMount","isValueShown","updateSelectedId","initSettingsScreen","componentDidUpdate","prevProps","prevState","isNameInputScreen","focusRenameInput","length","onChange","selectedId","debug","setState","isEmptyList","event","value","target","applyFilterSet","onUpdateSets","getFilterState","panels","title","getNameError","trimmedName","trim","error","namedFilterSet","selectedIndex","findIndex","updatedModifiedFilterSets","push","prevFilterSets","filter","newSelectedIndex","Math","max","min","newSelectedId","selectedSetIndex","selectedSet","find","stopPropagation","dropdownRef","current","focusInput","key","preventDefault","onApply","filterSet","focus","renameInputRef","render","isRenamingExistingSet","isEmptyEditList","isInitialScreen","isEditListScreen","captureSetIcon","updateSetIcon","editDropdownRef","map"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n ReactNode,\n KeyboardEvent,\n MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport shortid from 'shortid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n vsGear,\n vsSave,\n vsCircleSlash,\n vsTrash,\n vsDeviceCamera,\n dhICursor,\n dhRefresh,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsArrowSmallUp,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Button, CardFlip } from '@deephaven/components';\n\nimport './FilterSetManager.scss';\n\nconst log = Log.module('FilterSetManager');\n\nexport interface FilterSetPanel {\n id: string;\n state: unknown;\n}\n\nexport interface FilterSet {\n id: string;\n title: string;\n panels: FilterSetPanel[];\n}\n\nexport interface ChangeHandlerArgs {\n isValueShown: boolean;\n selectedId?: string;\n}\n\ninterface FilterSetManagerProps {\n isValueShown: boolean;\n selectedId?: string;\n filterSets: FilterSet[];\n getFilterState(): FilterSetPanel[];\n onChange(args: ChangeHandlerArgs): void;\n onApply(filterSet: FilterSet): void;\n onUpdateSets(filterSets: FilterSet[], editId?: string): void;\n}\n\ninterface FilterSetManagerState {\n nameInputValue: string;\n nameInputError?: string;\n editId?: string;\n renameSet?: FilterSet;\n // Unsaved set changes on the settings screen\n modifiedFilterSets: FilterSet[];\n}\n\nconst NAME_INPUT_PLACEHOLDER = 'Enter name...';\n\nconst EMPTY_LIST_PLACEHOLDER = 'No Available Filter Sets';\n\nclass FilterSetManager extends Component<\n FilterSetManagerProps,\n FilterSetManagerState\n> {\n static animateScreenFlash(): void {\n const overlay = document.createElement('div');\n overlay.classList.add('screen-flash-overlay');\n overlay.addEventListener('animationend', () => {\n // Removing the element removes its event listeners\n overlay.remove();\n });\n document.querySelector('body')?.appendChild(overlay);\n }\n\n constructor(props: FilterSetManagerProps) {\n super(props);\n\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleEditDropdownChange = this.handleEditDropdownChange.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleCaptureNewSet = this.handleCaptureNewSet.bind(this);\n this.handleNameInputChange = this.handleNameInputChange.bind(this);\n this.handleNameInputKeyPress = this.handleNameInputKeyPress.bind(this);\n this.handleRenameConfirm = this.handleRenameConfirm.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n\n this.handleSetDelete = this.handleSetDelete.bind(this);\n this.handleSetRename = this.handleSetRename.bind(this);\n this.handleSetUpdate = this.handleSetUpdate.bind(this);\n\n this.state = {\n editId: undefined,\n renameSet: undefined,\n nameInputValue: '',\n nameInputError: undefined,\n modifiedFilterSets: [],\n };\n }\n\n componentDidMount(): void {\n const { isValueShown } = this.props;\n if (isValueShown) {\n this.updateSelectedId();\n } else {\n this.initSettingsScreen();\n }\n }\n\n componentDidUpdate(\n prevProps: FilterSetManagerProps,\n prevState: FilterSetManagerState\n ): void {\n const { isValueShown, filterSets } = this.props;\n const { modifiedFilterSets } = this.state;\n\n if (prevProps.isValueShown && !isValueShown) {\n this.initSettingsScreen();\n }\n\n if (this.isNameInputScreen() && !this.isNameInputScreen(prevState)) {\n this.focusRenameInput();\n }\n\n if (filterSets !== prevProps.filterSets) {\n if (\n !isValueShown &&\n filterSets.length > 0 &&\n prevProps.filterSets.length === 0 &&\n modifiedFilterSets.length === 0\n ) {\n // Filter set added from another panel, flip from the settings side/initial screen to the value side\n const { onChange } = this.props;\n onChange({ isValueShown: true, selectedId: filterSets[0].id });\n } else {\n this.updateSelectedId();\n }\n }\n }\n\n private renameInputRef = React.createRef<HTMLInputElement>();\n\n private dropdownRef = React.createRef<HTMLSelectElement>();\n\n private editDropdownRef = React.createRef<HTMLSelectElement>();\n\n initSettingsScreen(): void {\n const { filterSets, selectedId } = this.props;\n log.debug('initSettingsScreen', filterSets, selectedId);\n this.setState({\n modifiedFilterSets: [...filterSets],\n editId: selectedId,\n });\n }\n\n // Update selected id without applying the new set on filterSets change\n updateSelectedId(): void {\n const { isValueShown, filterSets, selectedId, onChange } = this.props;\n log.debug('updateSelectedId', filterSets, selectedId);\n if (!isValueShown) {\n return;\n }\n if (!filterSets.some(({ id }) => id === selectedId)) {\n // Update the selection if selectedId doesn't exist in the list\n // Flip to the settings side for empty list to show the initial screen\n const isEmptyList = filterSets.length === 0;\n onChange({\n isValueShown: !isEmptyList,\n selectedId: isEmptyList ? undefined : filterSets[0].id,\n });\n }\n }\n\n handleEditDropdownChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: editId } = event.target;\n this.setState({ editId });\n }\n\n handleFilterChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: selectedId } = event.target;\n const { isValueShown, onChange } = this.props;\n this.applyFilterSet(selectedId);\n onChange({ isValueShown, selectedId });\n }\n\n handleFilterApply(): void {\n const { selectedId } = this.props;\n this.applyFilterSet(selectedId);\n }\n\n handleSettingsCancel(): void {\n const { onChange, selectedId, filterSets } = this.props;\n this.setState({ modifiedFilterSets: [] });\n // Flip the card to the filter set selection screen if the sets list isn't empty\n // Otherwise show the initial screen\n if (filterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleSettingsSave(): void {\n const { onChange, onUpdateSets } = 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 getNameError(nameInputValue: string): string | undefined {\n const { renameSet, modifiedFilterSets } = this.state;\n const trimmedName = nameInputValue?.trim() ?? '';\n if (trimmedName.length === 0) {\n log.debug('Name cannot be empty', trimmedName);\n return 'Name cannot be empty';\n }\n\n if (\n renameSet !== undefined &&\n modifiedFilterSets.some(\n ({ title, id }) => title === trimmedName && id !== renameSet.id\n )\n ) {\n log.debug('Set with this name already exists', trimmedName);\n return 'Set with this name already exists';\n }\n\n return undefined;\n }\n\n handleRenameConfirm(): void {\n const { nameInputValue, renameSet, modifiedFilterSets } = this.state;\n if (renameSet === undefined) {\n log.error('Renamed set undefined.');\n return;\n }\n const nameInputError = this.getNameError(nameInputValue);\n log.debug('handleRenameConfirm', nameInputValue, nameInputError);\n if (nameInputError !== undefined) {\n this.setState({ nameInputError });\n return;\n }\n const trimmedName = nameInputValue?.trim() ?? '';\n const namedFilterSet = { ...renameSet, title: trimmedName };\n const selectedIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === renameSet.id\n );\n const updatedModifiedFilterSets = [...modifiedFilterSets];\n\n if (selectedIndex >= 0) {\n updatedModifiedFilterSets[selectedIndex] = namedFilterSet;\n log.debug('Renamed existing set', updatedModifiedFilterSets);\n } else {\n updatedModifiedFilterSets.push(namedFilterSet);\n log.debug('Added new set to modified sets', updatedModifiedFilterSets);\n }\n\n this.setState({\n editId: namedFilterSet.id,\n modifiedFilterSets: updatedModifiedFilterSets,\n renameSet: undefined,\n });\n }\n\n handleSetDelete(): void {\n this.setState(state => {\n const { editId, modifiedFilterSets: prevFilterSets } = state;\n const selectedIndex = prevFilterSets.findIndex(({ id }) => id === editId);\n if (selectedIndex < 0) {\n log.error(\n 'Unable to find selected filterSet index',\n prevFilterSets,\n editId\n );\n return null;\n }\n const modifiedFilterSets = prevFilterSets.filter(\n ({ id }) => id !== editId\n );\n const newSelectedIndex = Math.max(\n 0,\n Math.min(modifiedFilterSets.length - 1, selectedIndex - 1)\n );\n const newSelectedId =\n modifiedFilterSets.length > 0\n ? modifiedFilterSets[newSelectedIndex].id\n : undefined;\n log.debug(\n 'Deleted selected set',\n editId,\n prevFilterSets,\n modifiedFilterSets\n );\n log.debug('New selection', newSelectedIndex, newSelectedId);\n return {\n modifiedFilterSets,\n editId: newSelectedId,\n };\n });\n }\n\n handleSetUpdate(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const panels = getFilterState();\n this.setState(({ modifiedFilterSets: prevFilterSets, editId }) => {\n if (editId === undefined) {\n log.error('Filter for update not selected.');\n return null;\n }\n const modifiedFilterSets = [...prevFilterSets];\n const selectedSetIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === editId\n );\n if (selectedSetIndex < 0) {\n log.error('Selected set for update not found.');\n return null;\n }\n // Clone selected set to avoid mutation of the props\n modifiedFilterSets[selectedSetIndex] = {\n ...modifiedFilterSets[selectedSetIndex],\n panels,\n };\n\n log.debug('Update set', modifiedFilterSets, panels);\n return {\n modifiedFilterSets,\n };\n });\n }\n\n handleSetRename(): void {\n this.setState(({ editId, modifiedFilterSets }) => {\n const selectedSet = modifiedFilterSets.find(({ id }) => id === editId);\n if (selectedSet === undefined) {\n log.error('Could not find selected set', editId, modifiedFilterSets);\n return null;\n }\n const { title } = selectedSet;\n return {\n nameInputValue: title,\n nameInputError: undefined,\n renameSet: selectedSet,\n };\n });\n }\n\n handleSettingsClick(event: MouseEvent): void {\n event.stopPropagation();\n const { onChange, selectedId } = this.props;\n onChange({ isValueShown: false, selectedId });\n }\n\n handleBackgroundClick(event: MouseEvent): void {\n log.debug('handleBackgroundClick');\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n handleNameInputChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value: nameInputValue } = event.target;\n const nameInputError = this.getNameError(nameInputValue);\n this.setState({ nameInputValue, nameInputError });\n }\n\n handleNameInputKeyPress(event: KeyboardEvent): void {\n const { key } = event;\n if (key === 'Enter') {\n event.preventDefault();\n this.handleRenameConfirm();\n }\n }\n\n isNameInputScreen(state = this.state): boolean {\n const { renameSet } = state;\n return renameSet !== undefined;\n }\n\n isRenamingExistingSet = memoizeOne(\n (filterSets: FilterSet[], renameSet?: FilterSet): boolean =>\n renameSet !== undefined &&\n filterSets.some(({ id }) => id === renameSet.id)\n );\n\n applyFilterSet(selectedId?: string): void {\n const { onApply, filterSets } = this.props;\n if (selectedId === undefined) {\n log.debug('No filter selected');\n return;\n }\n const filterSet = filterSets.find(({ id }) => id === selectedId);\n if (filterSet === undefined) {\n log.debug('Selected id not found in filterSets', selectedId, filterSets);\n return;\n }\n log.debug('Apply filterSet', filterSet);\n onApply(filterSet);\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n focusRenameInput(): void {\n this.renameInputRef.current?.focus();\n }\n\n render(): ReactNode {\n const {\n nameInputValue,\n nameInputError,\n editId,\n renameSet,\n modifiedFilterSets,\n } = this.state;\n const { isValueShown, filterSets, selectedId } = this.props;\n const isNameInputScreen = this.isNameInputScreen();\n const isRenamingExistingSet = this.isRenamingExistingSet(\n modifiedFilterSets,\n renameSet\n );\n const isEmptyEditList = modifiedFilterSets.length === 0;\n const isInitialScreen =\n !isNameInputScreen && isEmptyEditList && filterSets.length === 0;\n const isEditListScreen = !isNameInputScreen && !isInitialScreen;\n const captureSetIcon = (\n <div className=\"fa-layers mr-3\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhNewCircleLargeFilled}\n className=\"text-primary\"\n transform=\"shrink-6 down-5 right-7\"\n />\n </div>\n );\n const updateSetIcon = (\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={vsArrowSmallUp}\n transform=\"shrink-1 down-5 right-7\"\n />\n </div>\n );\n return (\n <div className=\"filter-set-manager fill-parent-absolute\">\n <CardFlip className=\"w-100 h-100\" isFlipped={isValueShown}>\n <div\n className=\"filter-set-manager-settings-card fill-parent-absolute\"\n key=\"front\"\n >\n <div className=\"filter-set-manager-card-content\">\n {isInitialScreen && (\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture filter set\n </Button>\n <div className=\"py-3 text-muted small\">\n Takes a snapshot of the currently applied filters on all\n panels, allowing you to restore saved filter sets later.\n </div>\n </div>\n )}\n\n {isNameInputScreen && (\n <div className=\"d-flex flex-column justify-content-center\">\n <div className=\"form-group\">\n <label>\n {isRenamingExistingSet\n ? 'Rename set'\n : 'Name captured set'}\n </label>\n <div className=\"name-input-container\">\n <input\n type=\"text\"\n className=\"input-set-name form-control\"\n placeholder={NAME_INPUT_PLACEHOLDER}\n value={nameInputValue}\n ref={this.renameInputRef}\n onChange={this.handleNameInputChange}\n onKeyPress={this.handleNameInputKeyPress}\n spellCheck=\"false\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameConfirm}\n tooltip=\"Save\"\n icon={vsSave}\n />\n\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameCancel}\n tooltip=\"Cancel\"\n icon={vsCircleSlash}\n />\n </div>\n {nameInputError && (\n <div className=\"error-message\">{nameInputError}</div>\n )}\n </div>\n </div>\n )}\n\n {isEditListScreen && (\n <div className=\"filter-set-manager-settings-grid-1\">\n <div className=\"form-group\">\n <label>Edit filter sets</label>\n <div className=\"filter-select-container\">\n <select\n ref={this.editDropdownRef}\n value={editId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleEditDropdownChange}\n disabled={isEmptyEditList}\n >\n {isEmptyEditList && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {modifiedFilterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </select>\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetUpdate}\n disabled={isEmptyEditList}\n icon={updateSetIcon}\n tooltip=\"Update\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetRename}\n disabled={isEmptyEditList}\n icon={dhICursor}\n tooltip=\"Rename\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetDelete}\n disabled={isEmptyEditList}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n </div>\n </div>\n\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture new filter set\n </Button>\n </div>\n\n <div className=\"py-3 text-right\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n >\n Cancel\n </Button>\n &nbsp;\n <Button kind=\"primary\" onClick={this.handleSettingsSave}>\n Save\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n <div\n className=\"filter-set-manager-value-card fill-parent-absolute\"\n key=\"back\"\n onClick={this.handleBackgroundClick}\n >\n <>\n <div className=\"filter-set-manager-column\">\n <div className=\"filter-set-manager-column-title\">\n Filter sets\n </div>\n </div>\n <div className=\"filter-set-manager-card-content\">\n <div className=\"filter-set-manager-value-input\">\n <div className=\"filter-select-container\">\n <select\n ref={this.dropdownRef}\n value={selectedId}\n className=\"custom-select filter-value-select\"\n onChange={this.handleFilterChange}\n >\n {filterSets.length === 0 && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {filterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </select>\n <Button\n kind=\"ghost\"\n onClick={this.handleFilterApply}\n icon={dhRefresh}\n tooltip=\"Apply Filter Set\"\n />\n </div>\n </div>\n </div>\n <div className=\"filter-set-manager-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n tooltip=\"Settings\"\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n />\n </div>\n </>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"file":"FilterSetManager.js"}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.scss","../../../components/scss/new_variables.scss","../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE,aCCS;;;ADEX;EACE,SE2qBkC;EF1qBlC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;IACE;;EAGF;IACE;;EAGF;IACE","file":"FilterSetManagerPanel.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.scss","../../../components/scss/new_variables.scss","../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE,aCCS;;;ADEX;EACE,SE+qBkC;EF9qBlC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;IACE;;EAGF;IACE;;EAGF;IACE","file":"FilterSetManagerPanel.css"}
@@ -10,7 +10,7 @@ declare class FilterSetManagerPanel extends React.Component<any, any, any> {
10
10
  selectedId: any;
11
11
  }): void;
12
12
  handleFilterApply(filterSet: any): void;
13
- handleSetsUpdate(modifiedFilterSets: any, selectedEditId: any): void;
13
+ handleSetsUpdate(modifiedFilterSets: any): void;
14
14
  handleGetFilterState(): any[];
15
15
  getFilterState(): any[];
16
16
  getIrisGridPanelFilters(panelId: any, panelState: any): {
@@ -1 +1 @@
1
- {"version":3,"file":"FilterSetManagerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":[],"mappings":";;AA0BA;IACE,yBAA2C;IAE3C,uEAOC;IAED,uEAUC;IAED,wBAoBC;IA2FD;;;aAIC;IAED,wCAsBC;IAED,qEAeC;IAjDD,8BAEC;IAtFD,wBAkDC;IAED;;;aA8BC;IAqDD,yBAQC;IAED,qDAsBC;IAGD,sDAGC;CA4BF"}
1
+ {"version":3,"file":"FilterSetManagerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":[],"mappings":";;AA0BA;IACE,yBAA2C;IAE3C,uEAOC;IAED,uEAUC;IAED,wBAoBC;IA2FD;;;aAIC;IAED,wCAsBC;IAED,gDAMC;IAxCD,8BAEC;IAtFD,wBAkDC;IAED;;;aA8BC;IA4CD,yBAQC;IAED,qDAsBC;IAGD,sDAGC;CA4BF"}
@@ -231,28 +231,11 @@ class FilterSetManagerPanel extends Component {
231
231
  });
232
232
  }
233
233
 
234
- handleSetsUpdate(modifiedFilterSets, selectedEditId) {
234
+ handleSetsUpdate(modifiedFilterSets) {
235
235
  var {
236
236
  setDashboardFilterSets,
237
237
  localDashboardId
238
238
  } = this.props;
239
- var {
240
- selectedId
241
- } = this.state; // Only change the selected filter if the previous selection was deleted
242
-
243
- var prevSelection = modifiedFilterSets.find(_ref5 => {
244
- var {
245
- id
246
- } = _ref5;
247
- return id === selectedId;
248
- });
249
-
250
- if (prevSelection !== undefined) {
251
- this.setState({
252
- selectedId: selectedEditId
253
- });
254
- }
255
-
256
239
  log.debug('Saving updated sets', modifiedFilterSets); // Filter sets are stored in dashboard data instead of the panelState
257
240
  // because they need to be shared between the filter view manager panels
258
241
 
@@ -260,11 +243,11 @@ class FilterSetManagerPanel extends Component {
260
243
  }
261
244
 
262
245
  updatePanelState() {
263
- this.setState(_ref6 => {
246
+ this.setState(_ref5 => {
264
247
  var {
265
248
  selectedId,
266
249
  isValueShown
267
- } = _ref6;
250
+ } = _ref5;
268
251
  return {
269
252
  // eslint-disable-next-line react/no-unused-state
270
253
  panelState: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":["React","Component","PropTypes","connect","getOpenedPanelMapForDashboard","GLPropTypes","LayoutUtils","IrisGridUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","InputFilterPanel","DropdownFilterPanel","log","module","FilterSetManagerPanel","changeFilterColumnNamesToIndexes","table","configs","map","name","filter","index","columns","findIndex","column","config","changeFilterIndexesToColumnNames","length","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","selectedId","id","undefined","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","panel","get","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","error","getComponentConfigFromContainer","getPanelComponentState","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","indexedAdvancedFilters","quickFilters","indexedQuickFilters","dehydratedAdvancedFilters","dehydrateAdvancedFilters","dehydratedQuickFilters","dehydrateQuickFilters","setState","updatePanelState","filterSet","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","selectedEditId","localDashboardId","prevSelection","find","savedAdvancedFilters","savedQuickFilters","setFilters","setPanelState","render","glEventHub","propTypes","Container","isRequired","EventHub","shape","string","bool","arrayOf","title","instanceOf","Map","func","defaultProps","mapStateToProps","ownProps","dashboardInputFilters","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n GLPropTypes,\n LayoutUtils,\n} from '@deephaven/dashboard';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport Log from '@deephaven/log';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './Panel';\nimport FilterSetManager from './FilterSetManager';\nimport IrisGridPanel from './IrisGridPanel';\nimport InputFilterPanel from './InputFilterPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\n\nimport './FilterSetManagerPanel.scss';\n\nconst log = Log.module('FilterSetManagerPanel');\n\nclass FilterSetManagerPanel extends Component {\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterColumnNamesToIndexes(table, configs) {\n return configs\n .map(({ name, filter }) => {\n const index = table.columns.findIndex(column => column.name === name);\n return index < 0 ? null : [index, filter];\n })\n .filter(config => config != null);\n }\n\n static changeFilterIndexesToColumnNames(table, configs) {\n return configs\n .map(([index, filter]) => {\n if (index >= table.columns.length) {\n return null;\n }\n const { name } = table.columns[index];\n return { name, filter };\n })\n .filter(config => config != null);\n }\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleSetsUpdate = this.handleSetsUpdate.bind(this);\n this.handleGetFilterState = this.handleGetFilterState.bind(this);\n\n const { panelState, filterSets } = props;\n const {\n selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,\n isValueShown = false,\n } = panelState ?? {};\n\n this.state = {\n selectedId,\n isValueShown,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n // Collect all filter values for each dashboard panel\n getFilterState() {\n const { dashboardOpenedPanelMap } = this.props;\n const panels = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n const componentName = LayoutUtils.getComponentNameFromPanel(panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('Panel:', panel, componentName);\n\n const { glContainer = null } = panel.props;\n if (glContainer == null) {\n log.error('Could not get panel container', panel);\n return;\n }\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n const panelState = LayoutUtils.getPanelComponentState(config);\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n const state = this.getIrisGridPanelFilters(panelId, panelState);\n if (state != null) {\n panels.push({\n panelId,\n type: componentName,\n state,\n });\n }\n break;\n }\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel): {\n const { isValueShown, name, type, value } = panelState;\n panels.push({\n panelId,\n type: componentName,\n state: { isValueShown, name, type, value },\n });\n break;\n }\n default:\n }\n });\n return panels;\n }\n\n getIrisGridPanelFilters(panelId, panelState) {\n const { panelTableMap } = this.props;\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return null;\n }\n // IrisGridUtils.hydrate uses numeric indexes for columns\n // Change indexes to column names to make it work for proxy models\n const { irisGridState = null } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters = [],\n quickFilters: indexedQuickFilters = [],\n } = irisGridState ?? {};\n const dehydratedAdvancedFilters = IrisGridUtils.dehydrateAdvancedFilters(\n table.columns,\n indexedAdvancedFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedAdvancedFilters\n );\n const dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(\n indexedQuickFilters\n );\n const quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedQuickFilters\n );\n return { advancedFilters, quickFilters };\n }\n\n handleGetFilterState() {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }) {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet) {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (!dashboardOpenedPanelMap.has(panelId)) {\n log.debug('Ignore closed panel', panelId);\n return;\n }\n log.debug('Apply panel filters', panelId, type, state);\n const panel = dashboardOpenedPanelMap.get(panelId);\n switch (type) {\n case LayoutUtils.getComponentName(IrisGridPanel):\n this.restoreIrisGridFilters(panel, state);\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets, selectedEditId) {\n const { setDashboardFilterSets, localDashboardId } = this.props;\n const { selectedId } = this.state;\n // Only change the selected filter if the previous selection was deleted\n const prevSelection = modifiedFilterSets.find(\n ({ id }) => id === selectedId\n );\n if (prevSelection !== undefined) {\n this.setState({ selectedId: selectedEditId });\n }\n\n log.debug('Saving updated sets', modifiedFilterSets);\n // Filter sets are stored in dashboard data instead of the panelState\n // because they need to be shared between the filter view manager panels\n setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);\n }\n\n updatePanelState() {\n this.setState(({ selectedId, isValueShown }) => ({\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n selectedId,\n isValueShown,\n },\n }));\n }\n\n restoreIrisGridFilters(panel, state) {\n const {\n advancedFilters: savedAdvancedFilters,\n quickFilters: savedQuickFilters,\n } = state;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return;\n }\n log.debug('restoreIrisGridFilters', panelId, state);\n const quickFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedQuickFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedAdvancedFilters\n );\n panel.setFilters({ quickFilters, advancedFilters });\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(panel, state) {\n log.debug('restoreInputFilterState', panel, state);\n panel.setPanelState(state);\n }\n\n render() {\n const { glContainer, glEventHub, filterSets } = this.props;\n const { isValueShown, selectedId } = this.state;\n return (\n <Panel\n className=\"filter-set-manager-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n isClonable\n isRenamable\n >\n <div className=\"input-filter-container h-100 w-100 container\">\n <FilterSetManager\n onChange={this.handleChange}\n onApply={this.handleFilterApply}\n onUpdateSets={this.handleSetsUpdate}\n isValueShown={isValueShown}\n filterSets={filterSets}\n selectedId={selectedId}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nFilterSetManagerPanel.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n panelState: PropTypes.shape({\n name: PropTypes.string,\n type: PropTypes.string,\n selectedId: PropTypes.string,\n isValueShown: PropTypes.bool,\n }),\n filterSets: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n panels: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n })\n ).isRequired,\n localDashboardId: PropTypes.string.isRequired,\n dashboardOpenedPanelMap: PropTypes.instanceOf(Map).isRequired,\n setDashboardFilterSets: PropTypes.func.isRequired,\n panelTableMap: PropTypes.instanceOf(Map).isRequired,\n};\n\nFilterSetManagerPanel.defaultProps = {\n panelState: null,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n return {\n filterSets: getFilterSetsForDashboard(state, localDashboardId),\n dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(\n state,\n localDashboardId\n ),\n dashboardInputFilters: getInputFiltersForDashboard(state, localDashboardId),\n panelTableMap: getTableMapForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n"],"file":"FilterSetManagerPanel.js"}
1
+ {"version":3,"sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":["React","Component","PropTypes","connect","getOpenedPanelMapForDashboard","GLPropTypes","LayoutUtils","IrisGridUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","InputFilterPanel","DropdownFilterPanel","log","module","FilterSetManagerPanel","changeFilterColumnNamesToIndexes","table","configs","map","name","filter","index","columns","findIndex","column","config","changeFilterIndexesToColumnNames","length","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","selectedId","id","undefined","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","panel","get","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","error","getComponentConfigFromContainer","getPanelComponentState","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","indexedAdvancedFilters","quickFilters","indexedQuickFilters","dehydratedAdvancedFilters","dehydrateAdvancedFilters","dehydratedQuickFilters","dehydrateQuickFilters","setState","updatePanelState","filterSet","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","localDashboardId","savedAdvancedFilters","savedQuickFilters","setFilters","setPanelState","render","glEventHub","propTypes","Container","isRequired","EventHub","shape","string","bool","arrayOf","title","instanceOf","Map","func","defaultProps","mapStateToProps","ownProps","dashboardInputFilters","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n GLPropTypes,\n LayoutUtils,\n} from '@deephaven/dashboard';\nimport { IrisGridUtils } from '@deephaven/iris-grid';\nimport Log from '@deephaven/log';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './Panel';\nimport FilterSetManager from './FilterSetManager';\nimport IrisGridPanel from './IrisGridPanel';\nimport InputFilterPanel from './InputFilterPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\n\nimport './FilterSetManagerPanel.scss';\n\nconst log = Log.module('FilterSetManagerPanel');\n\nclass FilterSetManagerPanel extends Component {\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterColumnNamesToIndexes(table, configs) {\n return configs\n .map(({ name, filter }) => {\n const index = table.columns.findIndex(column => column.name === name);\n return index < 0 ? null : [index, filter];\n })\n .filter(config => config != null);\n }\n\n static changeFilterIndexesToColumnNames(table, configs) {\n return configs\n .map(([index, filter]) => {\n if (index >= table.columns.length) {\n return null;\n }\n const { name } = table.columns[index];\n return { name, filter };\n })\n .filter(config => config != null);\n }\n\n constructor(props) {\n super(props);\n\n this.handleChange = this.handleChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleSetsUpdate = this.handleSetsUpdate.bind(this);\n this.handleGetFilterState = this.handleGetFilterState.bind(this);\n\n const { panelState, filterSets } = props;\n const {\n selectedId = filterSets.length > 0 ? filterSets[0].id : undefined,\n isValueShown = false,\n } = panelState ?? {};\n\n this.state = {\n selectedId,\n isValueShown,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n // Collect all filter values for each dashboard panel\n getFilterState() {\n const { dashboardOpenedPanelMap } = this.props;\n const panels = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n const componentName = LayoutUtils.getComponentNameFromPanel(panel);\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('Panel:', panel, componentName);\n\n const { glContainer = null } = panel.props;\n if (glContainer == null) {\n log.error('Could not get panel container', panel);\n return;\n }\n const config = LayoutUtils.getComponentConfigFromContainer(glContainer);\n if (config == null) {\n log.error('Could not get component config from container', glContainer);\n return;\n }\n const panelState = LayoutUtils.getPanelComponentState(config);\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n const state = this.getIrisGridPanelFilters(panelId, panelState);\n if (state != null) {\n panels.push({\n panelId,\n type: componentName,\n state,\n });\n }\n break;\n }\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel): {\n const { isValueShown, name, type, value } = panelState;\n panels.push({\n panelId,\n type: componentName,\n state: { isValueShown, name, type, value },\n });\n break;\n }\n default:\n }\n });\n return panels;\n }\n\n getIrisGridPanelFilters(panelId, panelState) {\n const { panelTableMap } = this.props;\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return null;\n }\n // IrisGridUtils.hydrate uses numeric indexes for columns\n // Change indexes to column names to make it work for proxy models\n const { irisGridState = null } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters = [],\n quickFilters: indexedQuickFilters = [],\n } = irisGridState ?? {};\n const dehydratedAdvancedFilters = IrisGridUtils.dehydrateAdvancedFilters(\n table.columns,\n indexedAdvancedFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedAdvancedFilters\n );\n const dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(\n indexedQuickFilters\n );\n const quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n dehydratedQuickFilters\n );\n return { advancedFilters, quickFilters };\n }\n\n handleGetFilterState() {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }) {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet) {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (!dashboardOpenedPanelMap.has(panelId)) {\n log.debug('Ignore closed panel', panelId);\n return;\n }\n log.debug('Apply panel filters', panelId, type, state);\n const panel = dashboardOpenedPanelMap.get(panelId);\n switch (type) {\n case LayoutUtils.getComponentName(IrisGridPanel):\n this.restoreIrisGridFilters(panel, state);\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets) {\n const { setDashboardFilterSets, localDashboardId } = this.props;\n log.debug('Saving updated sets', modifiedFilterSets);\n // Filter sets are stored in dashboard data instead of the panelState\n // because they need to be shared between the filter view manager panels\n setDashboardFilterSets(localDashboardId, [...modifiedFilterSets]);\n }\n\n updatePanelState() {\n this.setState(({ selectedId, isValueShown }) => ({\n // eslint-disable-next-line react/no-unused-state\n panelState: {\n selectedId,\n isValueShown,\n },\n }));\n }\n\n restoreIrisGridFilters(panel, state) {\n const {\n advancedFilters: savedAdvancedFilters,\n quickFilters: savedQuickFilters,\n } = state;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n const table = panelTableMap.get(panelId);\n if (table == null) {\n log.error(`Unable to get table for panel ${panelId}.`);\n return;\n }\n log.debug('restoreIrisGridFilters', panelId, state);\n const quickFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedQuickFilters\n );\n const advancedFilters = FilterSetManagerPanel.changeFilterColumnNamesToIndexes(\n table,\n savedAdvancedFilters\n );\n panel.setFilters({ quickFilters, advancedFilters });\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(panel, state) {\n log.debug('restoreInputFilterState', panel, state);\n panel.setPanelState(state);\n }\n\n render() {\n const { glContainer, glEventHub, filterSets } = this.props;\n const { isValueShown, selectedId } = this.state;\n return (\n <Panel\n className=\"filter-set-manager-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n isClonable\n isRenamable\n >\n <div className=\"input-filter-container h-100 w-100 container\">\n <FilterSetManager\n onChange={this.handleChange}\n onApply={this.handleFilterApply}\n onUpdateSets={this.handleSetsUpdate}\n isValueShown={isValueShown}\n filterSets={filterSets}\n selectedId={selectedId}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nFilterSetManagerPanel.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n panelState: PropTypes.shape({\n name: PropTypes.string,\n type: PropTypes.string,\n selectedId: PropTypes.string,\n isValueShown: PropTypes.bool,\n }),\n filterSets: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n panels: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n })\n ).isRequired,\n localDashboardId: PropTypes.string.isRequired,\n dashboardOpenedPanelMap: PropTypes.instanceOf(Map).isRequired,\n setDashboardFilterSets: PropTypes.func.isRequired,\n panelTableMap: PropTypes.instanceOf(Map).isRequired,\n};\n\nFilterSetManagerPanel.defaultProps = {\n panelState: null,\n};\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n return {\n filterSets: getFilterSetsForDashboard(state, localDashboardId),\n dashboardOpenedPanelMap: getOpenedPanelMapForDashboard(\n state,\n localDashboardId\n ),\n dashboardInputFilters: getInputFiltersForDashboard(state, localDashboardId),\n panelTableMap: getTableMapForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(\n mapStateToProps,\n {\n setDashboardFilterSets: setDashboardFilterSetsAction,\n },\n null,\n { forwardRef: true }\n)(FilterSetManagerPanel);\n"],"file":"FilterSetManagerPanel.js"}
@@ -55,7 +55,7 @@ export class IrisGridPanel extends React.PureComponent<any, any, any> {
55
55
  pendingDataMap: any[][];
56
56
  frozenColumns: any;
57
57
  };
58
- getDehydratedGridState: (this: any, model: any, movedColumns: any, movedRows: any) => Object;
58
+ getDehydratedGridState: (this: any, model: any, movedColumns: any, movedRows: any, isStuckToBottom: any, isStuckToRight: any) => Object;
59
59
  getCachedPanelState: (this: any, irisGridPanelState: any, irisGridState: any, gridState: any, pluginState: any) => {
60
60
  irisGridPanelState: any;
61
61
  irisGridState: any;
@@ -165,6 +165,7 @@ export namespace IrisGridPanel {
165
165
  }>>;
166
166
  const getDownloadWorker: PropTypes.Requireable<(...args: any[]) => any>;
167
167
  const loadPlugin: PropTypes.Requireable<(...args: any[]) => any>;
168
+ const theme: PropTypes.Requireable<PropTypes.InferProps<{}>>;
168
169
  }
169
170
  namespace defaultProps {
170
171
  const children_1: null;
@@ -181,6 +182,8 @@ export namespace IrisGridPanel {
181
182
  export { getDownloadWorker_1 as getDownloadWorker };
182
183
  const loadPlugin_1: undefined;
183
184
  export { loadPlugin_1 as loadPlugin };
185
+ const theme_1: undefined;
186
+ export { theme_1 as theme };
184
187
  }
185
188
  const displayName: string;
186
189
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.jsx"],"names":[],"mappings":"AA0CA;IACE,yBAAmC;IAEnC,wBAoFC;IAimBD,uBAwEC;IAlcD,yDAOC;IAqDD,uCAOC;IAED,qCAKC;IAyCD,wCAGC;IAED,iDAGC;IAUD,8BAGC;IApGD,gEAYC;IAED,gDAQC;IAkBD,qDAMC;IAED,mDA6BC;IAYD,qBAEC;IAED,mBAEC;IAOD,yBAMC;IAED,wBAEC;IAhND,yCA6CC;IAqKD,kCAMC;IAhID,8CAMC;IAVD,kCAEC;IAjBD,uCASC;IAED,wDAEC;IA6JD,8BAMC;IApdC,+BAAiC;IACjC,gCAAkC;IAClC,uEAAwB;IAKxB,mBAAyB;IACzB,eAAqB;IACrB,iBAAuB;IA6EzB,oBAGC;IAED,2EAWE;IAEF,0FAWG;IAEH,0HAqBG;IAEH,oIAOE;IAEF;;;;;;;;;;;;;;;;;;;;MA8CE;IAEF,6FAEE;IAEF;;;;;MAOE;IAEF,kBAWC;IAiDD,uDAWC;IAgKD,mCAmBC;IAUD,sCAIC;IAED,sCAcC;IAED,qCAiBC;IAED,sDAsCC;IAED,mCAKC;IAED,2CAKC;IAED;;;aAmBC;IAGD,yBAEC;IAED,iCAoEC;IA4ED,mBAMC;CAgJF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAgDgB,wCAAQ;;QACH,6CAAQ"}
1
+ {"version":3,"file":"IrisGridPanel.d.ts","sourceRoot":"","sources":["../../src/panels/IrisGridPanel.jsx"],"names":[],"mappings":"AA0CA;IACE,yBAAmC;IAEnC,wBAoFC;IA8mBD,uBAmFC;IApdD,yDAOC;IAqDD,uCAOC;IAED,qCAKC;IAyCD,wCAGC;IAED,iDAGC;IAUD,8BAGC;IApGD,gEAYC;IAED,gDAQC;IAkBD,qDAMC;IAED,mDA6BC;IAYD,qBAEC;IAED,mBAEC;IAOD,yBAMC;IAED,wBAEC;IAhND,yCA6CC;IAqKD,kCAMC;IAhID,8CAMC;IAVD,kCAEC;IAjBD,uCASC;IAED,wDAEC;IA6JD,8BAMC;IA1dC,+BAAiC;IACjC,gCAAkC;IAClC,uEAAwB;IAKxB,mBAAyB;IACzB,eAAqB;IACrB,iBAAuB;IA6EzB,oBAGC;IAED,2EAWE;IAEF,0FAWG;IAEH,0HAqBG;IAEH,oIAOE;IAEF;;;;;;;;;;;;;;;;;;;;MA8CE;IAEF,wIAQE;IAEF;;;;;MAOE;IAEF,kBAWC;IAiDD,uDAWC;IAgKD,mCAmBC;IAUD,sCAIC;IAED,sCAcC;IAED,qCAiBC;IAED,sDAsCC;IAED,mCAKC;IAED,2CAKC;IAED;;;aAmBC;IAGD,yBAEC;IAED,iCA2EC;IAuFD,mBAMC;CAsJF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAkDgB,wCAAQ;;QACH,6CAAQ"}
@@ -109,7 +109,9 @@ export class IrisGridPanel extends PureComponent {
109
109
  frozenColumns
110
110
  })));
111
111
 
112
- _defineProperty(this, "getDehydratedGridState", memoize((model, movedColumns, movedRows) => IrisGridUtils.dehydrateGridState(model, {
112
+ _defineProperty(this, "getDehydratedGridState", memoize((model, movedColumns, movedRows, isStuckToBottom, isStuckToRight) => IrisGridUtils.dehydrateGridState(model, {
113
+ isStuckToBottom,
114
+ isStuckToRight,
113
115
  movedColumns,
114
116
  movedRows
115
117
  })));
@@ -717,6 +719,8 @@ export class IrisGridPanel extends PureComponent {
717
719
  frozenColumns
718
720
  } = IrisGridUtils.hydrateIrisGridState(model, irisGridState);
719
721
  var {
722
+ isStuckToBottom,
723
+ isStuckToRight,
720
724
  movedColumns,
721
725
  movedRows
722
726
  } = IrisGridUtils.hydrateGridState(model, gridState, irisGridState.customColumns);
@@ -744,7 +748,9 @@ export class IrisGridPanel extends PureComponent {
744
748
  selectedSearchColumns,
745
749
  invertSearchColumns,
746
750
  pendingDataMap,
747
- frozenColumns
751
+ frozenColumns,
752
+ isStuckToBottom,
753
+ isStuckToRight
748
754
  });
749
755
  } catch (error) {
750
756
  log.error('loadPanelState failed to load panelState', panelState, error);
@@ -792,10 +798,12 @@ export class IrisGridPanel extends PureComponent {
792
798
  userRowHeights
793
799
  } = metrics;
794
800
  var {
801
+ isStuckToBottom,
802
+ isStuckToRight,
795
803
  movedColumns,
796
804
  movedRows
797
805
  } = gridState;
798
- var panelState = this.getCachedPanelState(this.getDehydratedIrisGridPanelState(model, isSelectingPartition, partition, partitionColumn), this.getDehydratedIrisGridState(model, sorts, advancedFilters, customColumnFormatMap, isFilterBarShown, quickFilters, customColumns, reverseType, rollupConfig, showSearchBar, searchValue, selectDistinctColumns, selectedSearchColumns, invertSearchColumns, userColumnWidths, userRowHeights, aggregationSettings, advancedSettings, pendingDataMap, frozenColumns), this.getDehydratedGridState(model, movedColumns, movedRows), pluginState);
806
+ var panelState = this.getCachedPanelState(this.getDehydratedIrisGridPanelState(model, isSelectingPartition, partition, partitionColumn), this.getDehydratedIrisGridState(model, sorts, advancedFilters, customColumnFormatMap, isFilterBarShown, quickFilters, customColumns, reverseType, rollupConfig, showSearchBar, searchValue, selectDistinctColumns, selectedSearchColumns, invertSearchColumns, userColumnWidths, userRowHeights, aggregationSettings, advancedSettings, pendingDataMap, frozenColumns), this.getDehydratedGridState(model, movedColumns, movedRows, isStuckToBottom, isStuckToRight), pluginState);
799
807
 
800
808
  if (panelState !== oldPanelState) {
801
809
  log.debug('Saving panel state', this, panelState);
@@ -830,7 +838,8 @@ export class IrisGridPanel extends PureComponent {
830
838
  panelState,
831
839
  user,
832
840
  workspace,
833
- settings
841
+ settings,
842
+ theme
834
843
  } = this.props;
835
844
  var {
836
845
  advancedFilters,
@@ -842,6 +851,8 @@ export class IrisGridPanel extends PureComponent {
842
851
  isDisconnected,
843
852
  isFilterBarShown,
844
853
  isSelectingPartition,
854
+ isStuckToBottom,
855
+ isStuckToRight,
845
856
  isLoaded,
846
857
  isLoading,
847
858
  isModelReady,
@@ -916,6 +927,8 @@ export class IrisGridPanel extends PureComponent {
916
927
  isFilterBarShown: isFilterBarShown,
917
928
  isSelectingColumn: columnSelectionValidator != null,
918
929
  isSelectingPartition: isSelectingPartition,
930
+ isStuckToBottom: isStuckToBottom,
931
+ isStuckToRight: isStuckToRight,
919
932
  movedColumns: movedColumns,
920
933
  movedRows: movedRows,
921
934
  partition: partition,
@@ -948,7 +961,8 @@ export class IrisGridPanel extends PureComponent {
948
961
  canDownloadCsv: canDownloadCsv,
949
962
  ref: this.irisGrid,
950
963
  getDownloadWorker: getDownloadWorker,
951
- frozenColumns: frozenColumns
964
+ frozenColumns: frozenColumns,
965
+ theme: theme
952
966
  }, childrenContent), !isModelReady && /*#__PURE__*/React.createElement(React.Fragment, null));
953
967
  }
954
968
 
@@ -994,7 +1008,8 @@ IrisGridPanel.propTypes = {
994
1008
  // Retrieve a download worker for optimizing exporting tables
995
1009
  getDownloadWorker: PropTypes.func,
996
1010
  // Load a plugin defined by the table
997
- loadPlugin: PropTypes.func
1011
+ loadPlugin: PropTypes.func,
1012
+ theme: PropTypes.shape({})
998
1013
  };
999
1014
  IrisGridPanel.defaultProps = {
1000
1015
  children: null,
@@ -1003,7 +1018,8 @@ IrisGridPanel.defaultProps = {
1003
1018
  onStateChange: () => {},
1004
1019
  onPanelStateUpdate: () => {},
1005
1020
  getDownloadWorker: undefined,
1006
- loadPlugin: undefined
1021
+ loadPlugin: undefined,
1022
+ theme: undefined
1007
1023
  };
1008
1024
  IrisGridPanel.displayName = 'IrisGridPanel';
1009
1025