@deephaven/dashboard-core-plugins 0.16.1-beta.1 → 0.16.1-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ChartBuilderPlugin.js.map +1 -1
- package/dist/ChartPlugin.js.map +1 -1
- package/dist/ConsolePlugin.js.map +1 -1
- package/dist/FilterPlugin.js.map +1 -1
- package/dist/GridPlugin.js.map +1 -1
- package/dist/LinkerPlugin.js.map +1 -1
- package/dist/MarkdownPlugin.js.map +1 -1
- package/dist/PandasPlugin.js.map +1 -1
- package/dist/controls/ControlType.js.map +1 -1
- package/dist/controls/dropdown-filter/DropdownFilter.js.map +1 -1
- package/dist/controls/input-filter/InputFilter.js.map +1 -1
- package/dist/controls/markdown/MarkdownContainer.js.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.d.ts +1 -1
- package/dist/controls/markdown/MarkdownEditor.d.ts.map +1 -1
- package/dist/controls/markdown/MarkdownEditor.js.map +1 -1
- package/dist/controls/markdown/MarkdownStartPage.js.map +1 -1
- package/dist/controls/markdown/MarkdownUtils.js.map +1 -1
- package/dist/events/ChartEvent.js.map +1 -1
- package/dist/events/ConsoleEvent.js.map +1 -1
- package/dist/events/InputFilterEvent.js.map +1 -1
- package/dist/events/IrisGridEvent.js.map +1 -1
- package/dist/events/MarkdownEvent.js.map +1 -1
- package/dist/events/NotebookEvent.js.map +1 -1
- package/dist/events/PQEvent.js.map +1 -1
- package/dist/events/PandasEvent.js.map +1 -1
- package/dist/events/TabEvent.js.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/linker/ColumnSelectionValidator.js.map +1 -1
- package/dist/linker/Linker.js.map +1 -1
- package/dist/linker/LinkerLink.js.map +1 -1
- package/dist/linker/LinkerOverlayContent.js.map +1 -1
- package/dist/linker/LinkerUtils.js.map +1 -1
- package/dist/linker/ToolType.js.map +1 -1
- package/dist/linker/index.js.map +1 -1
- package/dist/panels/ChartColumnSelectorOverlay.js.map +1 -1
- package/dist/panels/ChartFilterOverlay.js.map +1 -1
- package/dist/panels/ChartPanel.js.map +1 -1
- package/dist/panels/CommandHistoryPanel.js.map +1 -1
- package/dist/panels/ConsolePanel.js.map +1 -1
- package/dist/panels/DropdownFilterPanel.js.map +1 -1
- package/dist/panels/FileExplorerPanel.js.map +1 -1
- package/dist/panels/FilterSetManager.js.map +1 -1
- package/dist/panels/FilterSetManagerPanel.js.map +1 -1
- package/dist/panels/InputFilterPanel.js.map +1 -1
- package/dist/panels/IrisGridPanel.js.map +1 -1
- package/dist/panels/LogPanel.js.map +1 -1
- package/dist/panels/MarkdownNotebook.js.map +1 -1
- package/dist/panels/MarkdownPanel.d.ts +1 -1
- package/dist/panels/MarkdownPanel.d.ts.map +1 -1
- package/dist/panels/MarkdownPanel.js.map +1 -1
- package/dist/panels/NotebookPanel.d.ts +1 -3
- package/dist/panels/NotebookPanel.d.ts.map +1 -1
- package/dist/panels/NotebookPanel.js +1 -2
- package/dist/panels/NotebookPanel.js.map +1 -1
- package/dist/panels/PandasPanel.js +1 -1
- package/dist/panels/PandasPanel.js.map +1 -1
- package/dist/panels/Panel.js.map +1 -1
- package/dist/panels/PanelContextMenu.js.map +1 -1
- package/dist/panels/RenameDialog.js.map +1 -1
- package/dist/panels/WidgetPanel.js.map +1 -1
- package/dist/panels/WidgetPanelTooltip.js.map +1 -1
- package/dist/panels/index.js.map +1 -1
- package/dist/prop-types/CommonPropTypes.js.map +1 -1
- package/dist/prop-types/UIPropTypes.js.map +1 -1
- package/dist/prop-types/index.js.map +1 -1
- package/dist/redux/actionTypes.js.map +1 -1
- package/dist/redux/actions.js.map +1 -1
- package/dist/redux/index.js.map +1 -1
- package/dist/redux/reducers/index.js.map +1 -1
- package/dist/redux/reducers/sessionWrapper.js.map +1 -1
- package/dist/redux/selectors.js.map +1 -1
- package/package.json +18 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/FilterSetManager.tsx"],"names":["React","Component","memoizeOne","shortid","FontAwesomeIcon","vsEdit","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","RadioGroup","RadioItem","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","handleRestoreFullStateChange","handleSetDelete","handleSetEdit","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","restoreFullState","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 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 = this.handleRestoreFullStateChange.bind(\n this\n );\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 {\n nameInputValue,\n renameSet,\n modifiedFilterSets,\n 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 && (\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 <>\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 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 </>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"file":"FilterSetManager.js"}
|
|
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","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","handleRestoreFullStateChange","handleSetDelete","handleSetEdit","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","restoreFullState","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"],"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 = this.handleRestoreFullStateChange.bind(\n this\n );\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 {\n nameInputValue,\n renameSet,\n modifiedFilterSets,\n 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 && (\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 <>\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 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 </>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/FilterSetManagerPanel.tsx"],"names":["React","Component","connect","getOpenedPanelMapForDashboard","LayoutUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","DropdownFilterPanel","InputFilterPanel","log","module","hasSetPanelState","panel","setPanelState","FilterSetManagerPanel","changeFilterIndexesToColumnNames","table","configs","map","index","filter","columns","length","name","config","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","selectedId","id","undefined","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","get","error","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","getComponentConfigFromContainer","getPanelComponentState","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","quickFilters","gridState","indexedAdvancedFilters","indexedQuickFilters","setState","updatePanelState","filterSet","restoreFullState","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","localDashboardId","prevAdvancedFilters","prevQuickFilters","setStateOverrides","setFilters","inputFilterState","render","glEventHub","mapStateToProps","ownProps","dashboardInputFilters","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n LayoutUtils,\n PanelComponent,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { TableTemplate } from '@deephaven/jsapi-shim';\nimport { RootState } from '@deephaven/redux';\nimport {\n AdvancedFilter,\n ColumnName,\n DehydratedIrisGridState,\n QuickFilter,\n} from '@deephaven/iris-grid';\nimport { GridState } from '@deephaven/grid';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './Panel';\nimport FilterSetManager, {\n ChangeHandlerArgs,\n FilterSet,\n FilterSetPanel,\n} from './FilterSetManager';\nimport { IrisGridPanel } from './IrisGridPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\nimport InputFilterPanel, {\n PanelState as InputFilterPanelState,\n} from './InputFilterPanel';\nimport './FilterSetManagerPanel.scss';\n\nconst log = Log.module('FilterSetManagerPanel');\ninterface IrisGridState {\n advancedFilters: [number, AdvancedFilter][];\n quickFilters: [number, QuickFilter][];\n}\n\ninterface PanelState {\n irisGridState?: IrisGridState;\n gridState?: Partial<GridState>;\n selectedId?: string | string[];\n isValueShown?: boolean;\n name?: string;\n type?: string;\n value?: string;\n}\n\ninterface FilterSetManagerPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n filterSets: FilterSet[];\n localDashboardId: string;\n dashboardOpenedPanelMap: Map<string | string[], PanelComponent>;\n setDashboardFilterSets: (\n dashboardId: string,\n filterSets: FilterSet[]\n ) => void;\n panelTableMap: Map<string | string[], TableTemplate>;\n}\n\ninterface FilterSetManagerPanelState {\n selectedId?: string | string[];\n isValueShown: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel\n}\n\nfunction hasSetPanelState(\n panel: PanelComponent\n): panel is PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n} {\n return (\n (panel as PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n }).setPanelState != null\n );\n}\nexport class FilterSetManagerPanel extends Component<\n FilterSetManagerPanelProps,\n FilterSetManagerPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterIndexesToColumnNames<T>(\n table: TableTemplate,\n configs: [number, T][]\n ): { name: string; filter: T }[] {\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) as { name: string; filter: T }[];\n }\n\n constructor(props: FilterSetManagerPanelProps) {\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(): FilterSetPanel[] {\n const { dashboardOpenedPanelMap } = this.props;\n const panels: FilterSetPanel[] = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n\n if (panel === undefined) {\n log.error('Could not get panel', panel);\n return;\n }\n\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(\n config\n ) as PanelState;\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n let state;\n if (panelId != null) {\n state = this.getIrisGridPanelFilters(panelId, panelState);\n }\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(\n panelId: string | string[],\n panelState: PanelState\n ): {\n irisGridState: Omit<IrisGridState, 'advancedFilters' | 'quickFilters'> & {\n advancedFilters?: {\n name: string;\n filter: AdvancedFilter;\n }[];\n quickFilters?: {\n name: string;\n filter: QuickFilter;\n }[];\n };\n gridState: Partial<GridState>;\n } | null {\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 {\n irisGridState = { advancedFilters: undefined, quickFilters: undefined },\n gridState = {},\n } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters,\n quickFilters: indexedQuickFilters,\n } = irisGridState;\n let advancedFilters;\n if (indexedAdvancedFilters) {\n advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedAdvancedFilters\n );\n }\n\n let quickFilters;\n if (indexedQuickFilters) {\n quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedQuickFilters\n );\n }\n return {\n irisGridState: {\n ...irisGridState,\n advancedFilters,\n quickFilters,\n },\n gridState: { ...gridState },\n };\n }\n\n handleGetFilterState(): FilterSetPanel[] {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }: ChangeHandlerArgs): void {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet: FilterSet): void {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels, restoreFullState = false } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (panelId == null) {\n log.debug('panel is null', panelId);\n return;\n }\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(\n panel as IrisGridPanel,\n state as {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: string; filter: AdvancedFilter }[];\n quickFilters: { name: string; filter: QuickFilter }[];\n },\n restoreFullState\n );\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state as InputFilterPanelState);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets: FilterSet[]): void {\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(): void {\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(\n panel: IrisGridPanel,\n state: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n },\n restoreFullState: boolean\n ): void {\n // Fall back to state.advancedFilters and state.quickFilters\n // for backward compatibility with filter sets that only contain filters\n const {\n irisGridState = {},\n advancedFilters: prevAdvancedFilters = [],\n quickFilters: prevQuickFilters = [],\n } = state;\n const {\n advancedFilters = prevAdvancedFilters,\n quickFilters = prevQuickFilters,\n } = irisGridState;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error(`Panel Id is null.`);\n return;\n }\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, restoreFullState);\n if (restoreFullState) {\n panel.setStateOverrides(state);\n } else {\n panel.setFilters({\n quickFilters: quickFilters as {\n name: string;\n filter: QuickFilter;\n }[],\n advancedFilters: advancedFilters as {\n name: string;\n filter: AdvancedFilter;\n }[],\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(\n panel: PanelComponent | undefined,\n state: InputFilterPanelState\n ): void {\n const inputFilterState = { ...state };\n // Restore state but don't flip the card\n delete inputFilterState.isValueShown;\n log.debug('restoreInputFilterState', panel, inputFilterState);\n if (panel && hasSetPanelState(panel)) {\n panel.setPanelState(inputFilterState);\n }\n }\n\n render(): ReactElement {\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 as string}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\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,"file":"FilterSetManagerPanel.js","names":["React","Component","connect","getOpenedPanelMapForDashboard","LayoutUtils","Log","getFilterSetsForDashboard","getInputFiltersForDashboard","getTableMapForDashboard","setDashboardFilterSets","setDashboardFilterSetsAction","Panel","FilterSetManager","IrisGridPanel","DropdownFilterPanel","InputFilterPanel","log","module","hasSetPanelState","panel","setPanelState","FilterSetManagerPanel","changeFilterIndexesToColumnNames","table","configs","map","index","filter","columns","length","name","config","constructor","props","handleChange","bind","handleFilterApply","handleSetsUpdate","handleGetFilterState","panelState","filterSets","selectedId","id","undefined","isValueShown","state","getFilterState","dashboardOpenedPanelMap","panels","keys","forEach","key","get","error","componentName","getComponentNameFromPanel","panelId","getIdFromPanel","debug","glContainer","getComponentConfigFromContainer","getPanelComponentState","getComponentName","getIrisGridPanelFilters","push","type","value","panelTableMap","irisGridState","advancedFilters","quickFilters","gridState","indexedAdvancedFilters","indexedQuickFilters","setState","updatePanelState","filterSet","restoreFullState","has","restoreIrisGridFilters","restoreInputFilterState","modifiedFilterSets","localDashboardId","prevAdvancedFilters","prevQuickFilters","setStateOverrides","setFilters","inputFilterState","render","glEventHub","mapStateToProps","ownProps","dashboardInputFilters","forwardRef"],"sources":["../../src/panels/FilterSetManagerPanel.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport { connect } from 'react-redux';\nimport {\n getOpenedPanelMapForDashboard,\n LayoutUtils,\n PanelComponent,\n} from '@deephaven/dashboard';\nimport Log from '@deephaven/log';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { TableTemplate } from '@deephaven/jsapi-shim';\nimport { RootState } from '@deephaven/redux';\nimport {\n AdvancedFilter,\n ColumnName,\n DehydratedIrisGridState,\n QuickFilter,\n} from '@deephaven/iris-grid';\nimport { GridState } from '@deephaven/grid';\nimport {\n getFilterSetsForDashboard,\n getInputFiltersForDashboard,\n getTableMapForDashboard,\n setDashboardFilterSets as setDashboardFilterSetsAction,\n} from '../redux';\nimport Panel from './Panel';\nimport FilterSetManager, {\n ChangeHandlerArgs,\n FilterSet,\n FilterSetPanel,\n} from './FilterSetManager';\nimport { IrisGridPanel } from './IrisGridPanel';\nimport DropdownFilterPanel from './DropdownFilterPanel';\nimport InputFilterPanel, {\n PanelState as InputFilterPanelState,\n} from './InputFilterPanel';\nimport './FilterSetManagerPanel.scss';\n\nconst log = Log.module('FilterSetManagerPanel');\ninterface IrisGridState {\n advancedFilters: [number, AdvancedFilter][];\n quickFilters: [number, QuickFilter][];\n}\n\ninterface PanelState {\n irisGridState?: IrisGridState;\n gridState?: Partial<GridState>;\n selectedId?: string | string[];\n isValueShown?: boolean;\n name?: string;\n type?: string;\n value?: string;\n}\n\ninterface FilterSetManagerPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n filterSets: FilterSet[];\n localDashboardId: string;\n dashboardOpenedPanelMap: Map<string | string[], PanelComponent>;\n setDashboardFilterSets: (\n dashboardId: string,\n filterSets: FilterSet[]\n ) => void;\n panelTableMap: Map<string | string[], TableTemplate>;\n}\n\ninterface FilterSetManagerPanelState {\n selectedId?: string | string[];\n isValueShown: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel\n}\n\nfunction hasSetPanelState(\n panel: PanelComponent\n): panel is PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n} {\n return (\n (panel as PanelComponent & {\n setPanelState: (state: InputFilterPanelState) => void;\n }).setPanelState != null\n );\n}\nexport class FilterSetManagerPanel extends Component<\n FilterSetManagerPanelProps,\n FilterSetManagerPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'FilterSetManagerPanel';\n\n static changeFilterIndexesToColumnNames<T>(\n table: TableTemplate,\n configs: [number, T][]\n ): { name: string; filter: T }[] {\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) as { name: string; filter: T }[];\n }\n\n constructor(props: FilterSetManagerPanelProps) {\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(): FilterSetPanel[] {\n const { dashboardOpenedPanelMap } = this.props;\n const panels: FilterSetPanel[] = [];\n [...dashboardOpenedPanelMap.keys()].forEach(key => {\n const panel = dashboardOpenedPanelMap.get(key);\n\n if (panel === undefined) {\n log.error('Could not get panel', panel);\n return;\n }\n\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(\n config\n ) as PanelState;\n if (panelState == null) {\n log.debug(`Panel state is null ${panelId}`);\n return;\n }\n switch (componentName) {\n case LayoutUtils.getComponentName(IrisGridPanel): {\n let state;\n if (panelId != null) {\n state = this.getIrisGridPanelFilters(panelId, panelState);\n }\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(\n panelId: string | string[],\n panelState: PanelState\n ): {\n irisGridState: Omit<IrisGridState, 'advancedFilters' | 'quickFilters'> & {\n advancedFilters?: {\n name: string;\n filter: AdvancedFilter;\n }[];\n quickFilters?: {\n name: string;\n filter: QuickFilter;\n }[];\n };\n gridState: Partial<GridState>;\n } | null {\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 {\n irisGridState = { advancedFilters: undefined, quickFilters: undefined },\n gridState = {},\n } = panelState;\n const {\n advancedFilters: indexedAdvancedFilters,\n quickFilters: indexedQuickFilters,\n } = irisGridState;\n let advancedFilters;\n if (indexedAdvancedFilters) {\n advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedAdvancedFilters\n );\n }\n\n let quickFilters;\n if (indexedQuickFilters) {\n quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(\n table,\n indexedQuickFilters\n );\n }\n return {\n irisGridState: {\n ...irisGridState,\n advancedFilters,\n quickFilters,\n },\n gridState: { ...gridState },\n };\n }\n\n handleGetFilterState(): FilterSetPanel[] {\n return this.getFilterState();\n }\n\n handleChange({ isValueShown, selectedId }: ChangeHandlerArgs): void {\n log.debug('handleChange', isValueShown, selectedId);\n this.setState({ isValueShown, selectedId });\n this.updatePanelState();\n }\n\n handleFilterApply(filterSet: FilterSet): void {\n const { dashboardOpenedPanelMap } = this.props;\n const { panels, restoreFullState = false } = filterSet;\n log.debug(`Apply filters from filter set`, filterSet);\n panels.forEach(({ panelId, type, state }) => {\n if (panelId == null) {\n log.debug('panel is null', panelId);\n return;\n }\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(\n panel as IrisGridPanel,\n state as {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: string; filter: AdvancedFilter }[];\n quickFilters: { name: string; filter: QuickFilter }[];\n },\n restoreFullState\n );\n break;\n case LayoutUtils.getComponentName(InputFilterPanel):\n case LayoutUtils.getComponentName(DropdownFilterPanel):\n this.restoreInputFilterState(panel, state as InputFilterPanelState);\n break;\n default:\n }\n });\n }\n\n handleSetsUpdate(modifiedFilterSets: FilterSet[]): void {\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(): void {\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(\n panel: IrisGridPanel,\n state: {\n irisGridState: Partial<DehydratedIrisGridState>;\n gridState: Partial<GridState>;\n advancedFilters: { name: ColumnName; filter: AdvancedFilter }[];\n quickFilters: { name: ColumnName; filter: QuickFilter }[];\n },\n restoreFullState: boolean\n ): void {\n // Fall back to state.advancedFilters and state.quickFilters\n // for backward compatibility with filter sets that only contain filters\n const {\n irisGridState = {},\n advancedFilters: prevAdvancedFilters = [],\n quickFilters: prevQuickFilters = [],\n } = state;\n const {\n advancedFilters = prevAdvancedFilters,\n quickFilters = prevQuickFilters,\n } = irisGridState;\n const { panelTableMap } = this.props;\n const panelId = LayoutUtils.getIdFromPanel(panel);\n if (panelId == null) {\n log.error(`Panel Id is null.`);\n return;\n }\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, restoreFullState);\n if (restoreFullState) {\n panel.setStateOverrides(state);\n } else {\n panel.setFilters({\n quickFilters: quickFilters as {\n name: string;\n filter: QuickFilter;\n }[],\n advancedFilters: advancedFilters as {\n name: string;\n filter: AdvancedFilter;\n }[],\n });\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n restoreInputFilterState(\n panel: PanelComponent | undefined,\n state: InputFilterPanelState\n ): void {\n const inputFilterState = { ...state };\n // Restore state but don't flip the card\n delete inputFilterState.isValueShown;\n log.debug('restoreInputFilterState', panel, inputFilterState);\n if (panel && hasSetPanelState(panel)) {\n panel.setPanelState(inputFilterState);\n }\n }\n\n render(): ReactElement {\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 as string}\n getFilterState={this.handleGetFilterState}\n />\n </div>\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\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"],"mappings":";;;;;;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAA+C,OAA/C;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,SACEC,6BADF,EAEEC,WAFF,QAIO,sBAJP;AAKA,OAAOC,GAAP,MAAgB,gBAAhB;SAYEC,yB,EACAC,2B,EACAC,uB,EACAC,sBAAsB,IAAIC,4B;OAErBC,K;OACAC,gB;SAKEC,a;OACFC,mB;OACAC,gB;;AAKP,IAAMC,GAAG,GAAGX,GAAG,CAACY,MAAJ,CAAW,uBAAX,CAAZ;;AAqCA,SAASC,gBAAT,CACEC,KADF,EAIE;EACA,OACGA,KAAD,CAEGC,aAFH,IAEoB,IAHtB;AAKD;;AACD,OAAO,MAAMC,qBAAN,SAAoCpB,SAApC,CAGL;EAOuC,OAAhCqB,gCAAgC,CACrCC,KADqC,EAErCC,OAFqC,EAGN;IAC/B,OAAOA,OAAO,CACXC,GADI,CACA,QAAqB;MAAA,IAApB,CAACC,KAAD,EAAQC,MAAR,CAAoB;;MACxB,IAAID,KAAK,IAAIH,KAAK,CAACK,OAAN,CAAcC,MAA3B,EAAmC;QACjC,OAAO,IAAP;MACD;;MACD,IAAM;QAAEC;MAAF,IAAWP,KAAK,CAACK,OAAN,CAAcF,KAAd,CAAjB;MACA,OAAO;QAAEI,IAAF;QAAQH;MAAR,CAAP;IACD,CAPI,EAQJA,MARI,CAQGI,MAAM,IAAIA,MAAM,IAAI,IARvB,CAAP;EASD;;EAEDC,WAAW,CAACC,KAAD,EAAoC;IAC7C,MAAMA,KAAN;IAEA,KAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAApB;IACA,KAAKC,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBD,IAAvB,CAA4B,IAA5B,CAAzB;IACA,KAAKE,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBF,IAAtB,CAA2B,IAA3B,CAAxB;IACA,KAAKG,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BH,IAA1B,CAA+B,IAA/B,CAA5B;IAEA,IAAM;MAAEI,UAAF;MAAcC;IAAd,IAA6BP,KAAnC;IACA,IAAM;MACJQ,UAAU,GAAGD,UAAU,CAACX,MAAX,GAAoB,CAApB,GAAwBW,UAAU,CAAC,CAAD,CAAV,CAAcE,EAAtC,GAA2CC,SADpD;MAEJC,YAAY,GAAG;IAFX,IAGFL,UAHE,aAGFA,UAHE,cAGFA,UAHE,GAGY,EAHlB;IAKA,KAAKM,KAAL,GAAa;MACXJ,UADW;MAEXG,YAFW;MAGX;MACAL,UAJW,CAIC;;IAJD,CAAb;EAMD,CA1CD,CA4CA;;;EACAO,cAAc,GAAqB;IACjC,IAAM;MAAEC;IAAF,IAA8B,KAAKd,KAAzC;IACA,IAAMe,MAAwB,GAAG,EAAjC;IACA,CAAC,GAAGD,uBAAuB,CAACE,IAAxB,EAAJ,EAAoCC,OAApC,CAA4CC,GAAG,IAAI;MACjD,IAAMhC,KAAK,GAAG4B,uBAAuB,CAACK,GAAxB,CAA4BD,GAA5B,CAAd;;MAEA,IAAIhC,KAAK,KAAKwB,SAAd,EAAyB;QACvB3B,GAAG,CAACqC,KAAJ,CAAU,qBAAV,EAAiClC,KAAjC;QACA;MACD;;MAED,IAAMmC,aAAa,GAAGlD,WAAW,CAACmD,yBAAZ,CAAsCpC,KAAtC,CAAtB;MACA,IAAMqC,OAAO,GAAGpD,WAAW,CAACqD,cAAZ,CAA2BtC,KAA3B,CAAhB;MACAH,GAAG,CAAC0C,KAAJ,CAAU,QAAV,EAAoBvC,KAApB,EAA2BmC,aAA3B;MAEA,IAAM;QAAEK,WAAW,GAAG;MAAhB,IAAyBxC,KAAK,CAACc,KAArC;;MACA,IAAI0B,WAAW,IAAI,IAAnB,EAAyB;QACvB3C,GAAG,CAACqC,KAAJ,CAAU,+BAAV,EAA2ClC,KAA3C;QACA;MACD;;MACD,IAAMY,MAAM,GAAG3B,WAAW,CAACwD,+BAAZ,CAA4CD,WAA5C,CAAf;;MACA,IAAI5B,MAAM,IAAI,IAAd,EAAoB;QAClBf,GAAG,CAACqC,KAAJ,CAAU,+CAAV,EAA2DM,WAA3D;QACA;MACD;;MACD,IAAMpB,UAAU,GAAGnC,WAAW,CAACyD,sBAAZ,CACjB9B,MADiB,CAAnB;;MAGA,IAAIQ,UAAU,IAAI,IAAlB,EAAwB;QACtBvB,GAAG,CAAC0C,KAAJ,+BAAiCF,OAAjC;QACA;MACD;;MACD,QAAQF,aAAR;QACE,KAAKlD,WAAW,CAAC0D,gBAAZ,CAA6BjD,aAA7B,CAAL;UAAkD;YAChD,IAAIgC,MAAJ;;YACA,IAAIW,OAAO,IAAI,IAAf,EAAqB;cACnBX,MAAK,GAAG,KAAKkB,uBAAL,CAA6BP,OAA7B,EAAsCjB,UAAtC,CAAR;YACD;;YACD,IAAIM,MAAK,IAAI,IAAb,EAAmB;cACjBG,MAAM,CAACgB,IAAP,CAAY;gBACVR,OADU;gBAEVS,IAAI,EAAEX,aAFI;gBAGVT,KAAK,EAALA;cAHU,CAAZ;YAKD;;YACD;UACD;;QACD,KAAKzC,WAAW,CAAC0D,gBAAZ,CAA6B/C,gBAA7B,CAAL;QACA,KAAKX,WAAW,CAAC0D,gBAAZ,CAA6BhD,mBAA7B,CAAL;UAAwD;YACtD,IAAM;cAAE8B,YAAF;cAAgBd,IAAhB;cAAsBmC,IAAtB;cAA4BC;YAA5B,IAAsC3B,UAA5C;YACAS,MAAM,CAACgB,IAAP,CAAY;cACVR,OADU;cAEVS,IAAI,EAAEX,aAFI;cAGVT,KAAK,EAAE;gBAAED,YAAF;gBAAgBd,IAAhB;gBAAsBmC,IAAtB;gBAA4BC;cAA5B;YAHG,CAAZ;YAKA;UACD;;QACD;MAzBF;IA2BD,CAxDD;IAyDA,OAAOlB,MAAP;EACD;;EAEDe,uBAAuB,CACrBP,OADqB,EAErBjB,UAFqB,EAed;IACP,IAAM;MAAE4B;IAAF,IAAoB,KAAKlC,KAA/B;IACA,IAAMV,KAAK,GAAG4C,aAAa,CAACf,GAAd,CAAkBI,OAAlB,CAAd;;IACA,IAAIjC,KAAK,IAAI,IAAb,EAAmB;MACjBP,GAAG,CAACqC,KAAJ,yCAA2CG,OAA3C;MACA,OAAO,IAAP;IACD,CANM,CAOP;IACA;;;IACA,IAAM;MACJY,aAAa,GAAG;QAAEC,eAAe,EAAE1B,SAAnB;QAA8B2B,YAAY,EAAE3B;MAA5C,CADZ;MAEJ4B,SAAS,GAAG;IAFR,IAGFhC,UAHJ;IAIA,IAAM;MACJ8B,eAAe,EAAEG,sBADb;MAEJF,YAAY,EAAEG;IAFV,IAGFL,aAHJ;IAIA,IAAIC,eAAJ;;IACA,IAAIG,sBAAJ,EAA4B;MAC1BH,eAAe,GAAGhD,qBAAqB,CAACC,gCAAtB,CAChBC,KADgB,EAEhBiD,sBAFgB,CAAlB;IAID;;IAED,IAAIF,YAAJ;;IACA,IAAIG,mBAAJ,EAAyB;MACvBH,YAAY,GAAGjD,qBAAqB,CAACC,gCAAtB,CACbC,KADa,EAEbkD,mBAFa,CAAf;IAID;;IACD,OAAO;MACLL,aAAa,kCACRA,aADQ;QAEXC,eAFW;QAGXC;MAHW,EADR;MAMLC,SAAS,oBAAOA,SAAP;IANJ,CAAP;EAQD;;EAEDjC,oBAAoB,GAAqB;IACvC,OAAO,KAAKQ,cAAL,EAAP;EACD;;EAEDZ,YAAY,QAAwD;IAAA,IAAvD;MAAEU,YAAF;MAAgBH;IAAhB,CAAuD;IAClEzB,GAAG,CAAC0C,KAAJ,CAAU,cAAV,EAA0Bd,YAA1B,EAAwCH,UAAxC;IACA,KAAKiC,QAAL,CAAc;MAAE9B,YAAF;MAAgBH;IAAhB,CAAd;IACA,KAAKkC,gBAAL;EACD;;EAEDvC,iBAAiB,CAACwC,SAAD,EAA6B;IAC5C,IAAM;MAAE7B;IAAF,IAA8B,KAAKd,KAAzC;IACA,IAAM;MAAEe,MAAF;MAAU6B,gBAAgB,GAAG;IAA7B,IAAuCD,SAA7C;IACA5D,GAAG,CAAC0C,KAAJ,kCAA2CkB,SAA3C;IACA5B,MAAM,CAACE,OAAP,CAAe,SAA8B;MAAA,IAA7B;QAAEM,OAAF;QAAWS,IAAX;QAAiBpB;MAAjB,CAA6B;;MAC3C,IAAIW,OAAO,IAAI,IAAf,EAAqB;QACnBxC,GAAG,CAAC0C,KAAJ,CAAU,eAAV,EAA2BF,OAA3B;QACA;MACD;;MACD,IAAI,CAACT,uBAAuB,CAAC+B,GAAxB,CAA4BtB,OAA5B,CAAL,EAA2C;QACzCxC,GAAG,CAAC0C,KAAJ,CAAU,qBAAV,EAAiCF,OAAjC;QACA;MACD;;MACDxC,GAAG,CAAC0C,KAAJ,CAAU,qBAAV,EAAiCF,OAAjC,EAA0CS,IAA1C,EAAgDpB,KAAhD;MACA,IAAM1B,KAAK,GAAG4B,uBAAuB,CAACK,GAAxB,CAA4BI,OAA5B,CAAd;;MACA,QAAQS,IAAR;QACE,KAAK7D,WAAW,CAAC0D,gBAAZ,CAA6BjD,aAA7B,CAAL;UACE,KAAKkE,sBAAL,CACE5D,KADF,EAEE0B,KAFF,EAQEgC,gBARF;UAUA;;QACF,KAAKzE,WAAW,CAAC0D,gBAAZ,CAA6B/C,gBAA7B,CAAL;QACA,KAAKX,WAAW,CAAC0D,gBAAZ,CAA6BhD,mBAA7B,CAAL;UACE,KAAKkE,uBAAL,CAA6B7D,KAA7B,EAAoC0B,KAApC;UACA;;QACF;MAjBF;IAmBD,CA9BD;EA+BD;;EAEDR,gBAAgB,CAAC4C,kBAAD,EAAwC;IACtD,IAAM;MAAExE,sBAAF;MAA0ByE;IAA1B,IAA+C,KAAKjD,KAA1D;IACAjB,GAAG,CAAC0C,KAAJ,CAAU,qBAAV,EAAiCuB,kBAAjC,EAFsD,CAGtD;IACA;;IACAxE,sBAAsB,CAACyE,gBAAD,EAAmB,CAAC,GAAGD,kBAAJ,CAAnB,CAAtB;EACD;;EAEDN,gBAAgB,GAAS;IACvB,KAAKD,QAAL,CAAc;MAAA,IAAC;QAAEjC,UAAF;QAAcG;MAAd,CAAD;MAAA,OAAmC;QAC/C;QACAL,UAAU,EAAE;UACVE,UADU;UAEVG;QAFU;MAFmC,CAAnC;IAAA,CAAd;EAOD;;EAEDmC,sBAAsB,CACpB5D,KADoB,EAEpB0B,KAFoB,EAQpBgC,gBARoB,EASd;IACN;IACA;IACA,IAAM;MACJT,aAAa,GAAG,EADZ;MAEJC,eAAe,EAAEc,mBAAmB,GAAG,EAFnC;MAGJb,YAAY,EAAEc,gBAAgB,GAAG;IAH7B,IAIFvC,KAJJ;IAKA,IAAM;MACJwB,eAAe,GAAGc,mBADd;MAEJb,YAAY,GAAGc;IAFX,IAGFhB,aAHJ;IAIA,IAAM;MAAED;IAAF,IAAoB,KAAKlC,KAA/B;IACA,IAAMuB,OAAO,GAAGpD,WAAW,CAACqD,cAAZ,CAA2BtC,KAA3B,CAAhB;;IACA,IAAIqC,OAAO,IAAI,IAAf,EAAqB;MACnBxC,GAAG,CAACqC,KAAJ;MACA;IACD;;IACD,IAAM9B,KAAK,GAAG4C,aAAa,CAACf,GAAd,CAAkBI,OAAlB,CAAd;;IACA,IAAIjC,KAAK,IAAI,IAAb,EAAmB;MACjBP,GAAG,CAACqC,KAAJ,yCAA2CG,OAA3C;MACA;IACD;;IACDxC,GAAG,CAAC0C,KAAJ,CAAU,wBAAV,EAAoCF,OAApC,EAA6CX,KAA7C,EAAoDgC,gBAApD;;IACA,IAAIA,gBAAJ,EAAsB;MACpB1D,KAAK,CAACkE,iBAAN,CAAwBxC,KAAxB;IACD,CAFD,MAEO;MACL1B,KAAK,CAACmE,UAAN,CAAiB;QACfhB,YAAY,EAAEA,YADC;QAKfD,eAAe,EAAEA;MALF,CAAjB;IAUD;EACF,CArRD,CAuRA;;;EACAW,uBAAuB,CACrB7D,KADqB,EAErB0B,KAFqB,EAGf;IACN,IAAM0C,gBAAgB,qBAAQ1C,KAAR,CAAtB,CADM,CAEN;;;IACA,OAAO0C,gBAAgB,CAAC3C,YAAxB;IACA5B,GAAG,CAAC0C,KAAJ,CAAU,yBAAV,EAAqCvC,KAArC,EAA4CoE,gBAA5C;;IACA,IAAIpE,KAAK,IAAID,gBAAgB,CAACC,KAAD,CAA7B,EAAsC;MACpCA,KAAK,CAACC,aAAN,CAAoBmE,gBAApB;IACD;EACF;;EAEDC,MAAM,GAAiB;IACrB,IAAM;MAAE7B,WAAF;MAAe8B,UAAf;MAA2BjD;IAA3B,IAA0C,KAAKP,KAArD;IACA,IAAM;MAAEW,YAAF;MAAgBH;IAAhB,IAA+B,KAAKI,KAA1C;IACA,oBACE,oBAAC,KAAD;MACE,SAAS,EAAC,0BADZ;MAEE,cAAc,EAAE,IAFlB;MAGE,WAAW,EAAEc,WAHf;MAIE,UAAU,EAAE8B,UAJd;MAKE,UAAU,MALZ;MAME,WAAW;IANb,gBAQE;MAAK,SAAS,EAAC;IAAf,gBACE,oBAAC,gBAAD;MACE,QAAQ,EAAE,KAAKvD,YADjB;MAEE,OAAO,EAAE,KAAKE,iBAFhB;MAGE,YAAY,EAAE,KAAKC,gBAHrB;MAIE,YAAY,EAAEO,YAJhB;MAKE,UAAU,EAAEJ,UALd;MAME,UAAU,EAAEC,UANd;MAOE,cAAc,EAAE,KAAKH;IAPvB,EADF,CARF,CADF;EAsBD;;AA9TD;;gBAHWjB,qB,kBAIW;EACpBkB,UAAU,EAAE;AADQ,C;;gBAJXlB,qB,eAQQ,uB;;AA4TrB,IAAMqE,eAAe,GAAG,CACtB7C,KADsB,EAEtB8C,QAFsB,KAGnB;EACH,IAAM;IAAET;EAAF,IAAuBS,QAA7B;EACA,OAAO;IACLnD,UAAU,EAAElC,yBAAyB,CAACuC,KAAD,EAAQqC,gBAAR,CADhC;IAELnC,uBAAuB,EAAE5C,6BAA6B,CACpD0C,KADoD,EAEpDqC,gBAFoD,CAFjD;IAMLU,qBAAqB,EAAErF,2BAA2B,CAACsC,KAAD,EAAQqC,gBAAR,CAN7C;IAOLf,aAAa,EAAE3D,uBAAuB,CAACqC,KAAD,EAAQqC,gBAAR;EAPjC,CAAP;AASD,CAdD;;AAgBA,eAAehF,OAAO,CACpBwF,eADoB,EAEpB;EACEjF,sBAAsB,EAAEC;AAD1B,CAFoB,EAKpB,IALoB,EAMpB;EAAEmF,UAAU,EAAE;AAAd,CANoB,CAAP,CAObxE,qBAPa,CAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panels/InputFilterPanel.tsx"],"names":["React","Component","connect","debounce","Panel","InputFilter","InputFilterEvent","getColumnsForDashboard","INPUT_FILTER_DEBOUNCE","InputFilterPanel","constructor","props","handleChange","bind","handleClearAllFilters","inputFilterRef","createRef","panelState","value","isValueShown","name","type","timestamp","state","columns","column","undefined","wasFlipped","skipUpdate","componentDidMount","updateColumns","sendUpdate","componentDidUpdate","prevProps","Date","now","setState","prevTimestamp","isFlip","current","clearFilter","glEventHub","emit","FILTERS_CHANGED","setPanelState","setFilterState","length","find","render","glContainer","mapStateToProps","ownProps","localDashboardId","forwardRef"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAA4C,OAA5C;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,OAAOC,QAAP,MAAqB,iBAArB;OAGOC,K;OACAC,W;SAGEC,gB;SACAC,sB;AAET,IAAMC,qBAAqB,GAAG,GAA9B;;AA4BA,MAAMC,gBAAN,SAA+BR,SAA/B,CAGE;AAOA;AACA;AAGAS,EAAAA,WAAW,CAACC,KAAD,EAA+B;AACxC,UAAMA,KAAN;;AADwC;;AAGxC,SAAKC,YAAL,GAAoBT,QAAQ,CAC1B,KAAKS,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAD0B,EAE1BL,qBAF0B,CAA5B;AAIA,SAAKM,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BD,IAA3B,CAAgC,IAAhC,CAA7B;AAEA,SAAKE,cAAL,gBAAsBf,KAAK,CAACgB,SAAN,EAAtB;AAEA,QAAM;AAAEC,MAAAA;AAAF,QAAiBN,KAAvB,CAXwC,CAYxC;;AACA,QAAM;AAAEO,MAAAA,KAAF;AAASC,MAAAA,YAAY,GAAG,KAAxB;AAA+BC,MAAAA,IAA/B;AAAqCC,MAAAA,IAArC;AAA2CC,MAAAA;AAA3C,QACJL,UADI,aACJA,UADI,cACJA,UADI,GACU,EADhB;AAGA,SAAKM,KAAL,GAAa;AACXC,MAAAA,OAAO,EAAE,EADE;AAEXC,MAAAA,MAAM,EAAEL,IAAI,IAAIC,IAAR,GAAe;AAAED,QAAAA,IAAF;AAAQC,QAAAA;AAAR,OAAf,GAAgCK,SAF7B;AAGXR,MAAAA,KAHW;AAIXI,MAAAA,SAJW;AAKXH,MAAAA,YALW;AAMXQ,MAAAA,UAAU,EAAE,KAND;AAOXC,MAAAA,UAAU,EAAE,KAPD;AAQX;AACAX,MAAAA,UATW,CASC;;AATD,KAAb;AAWD;;AAEDY,EAAAA,iBAAiB,GAAG;AAClB,SAAKC,aAAL;AAEA,QAAM;AAAEL,MAAAA,MAAF;AAAUP,MAAAA,KAAV;AAAiBI,MAAAA;AAAjB,QAA+B,KAAKC,KAA1C;;AACA,QAAIE,MAAM,IAAI,IAAd,EAAoB;AAClB,UAAM;AAAEL,QAAAA,IAAF;AAAQC,QAAAA;AAAR,UAAiBI,MAAvB;AACA,WAAKM,UAAL,CAAgBX,IAAhB,EAAsBC,IAAtB,EAA4BH,KAA5B,EAAmCI,SAAnC;AACD;AACF;;AAEDU,EAAAA,kBAAkB,CAACC,SAAD,EAAmC;AACnD,QAAM;AAAET,MAAAA;AAAF,QAAc,KAAKb,KAAzB;;AACA,QAAIa,OAAO,KAAKS,SAAS,CAACT,OAA1B,EAAmC;AACjC,WAAKM,aAAL;AACD;AACF;;AAIDlB,EAAAA,YAAY,OAQT;AAAA,QARU;AACXa,MAAAA,MADW;AAEXN,MAAAA,YAFW;AAGXD,MAAAA;AAHW,KAQV;AACD,QAAIE,IAAJ;AACA,QAAIC,IAAJ;;AACA,QAAII,MAAM,IAAI,IAAd,EAAoB;AAClB,OAAC;AAAEL,QAAAA,IAAF;AAAQC,QAAAA;AAAR,UAAiBI,MAAlB;AACD;;AACD,QAAIM,UAAU,GAAG,IAAjB;AACA,QAAIT,SAA6B,GAAGY,IAAI,CAACC,GAAL,EAApC;AACA,SAAKC,QAAL,CACE,SAAsE;AAAA;;AAAA,UAArE;AAAEnB,QAAAA,UAAF;AAAcK,QAAAA,SAAS,EAAEe,aAAzB;AAAwCV,QAAAA,UAAxC;AAAoDC,QAAAA;AAApD,OAAqE;AACpE;AACA,UAAMU,MAAM,GACVrB,UAAU,IAAI,IAAd,IACAE,YAAY,KAAKF,UAAU,CAACE,YAD5B,IAEAC,IAAI,KAAKH,UAAU,CAACG,IAFpB,IAGAC,IAAI,KAAKJ,UAAU,CAACI,IAHpB,IAIAH,KAAK,KAAKD,UAAU,CAACC,KALvB;AAMAa,MAAAA,UAAU,YACP,CAACH,UAAD,IAAeT,YAAf,KAAgC,CAACmB,MAAD,IAAW,CAACX,UAA5C,CADO,yCACqD,KAD/D;;AAGA,UAAI,CAACI,UAAL,EAAiB;AACfT,QAAAA,SAAS,GAAGe,aAAZ;AACD;;AAED,aAAO;AACLpB,QAAAA,UAAU,EAAE;AACVE,UAAAA,YADU;AAEVC,UAAAA,IAFU;AAGVC,UAAAA,IAHU;AAIVH,UAAAA,KAJU;AAKVI,UAAAA;AALU,SADP;AAQLA,QAAAA,SARK;AASLK,QAAAA,UAAU,EAAEW,MATP;AAULV,QAAAA,UAAU,EAAE;AAVP,OAAP;AAYD,KA5BH,EA6BE,MAAM;AACJ,UAAIG,UAAJ,EAAgB;AACd,aAAKA,UAAL,CAAgBX,IAAhB,EAAsBC,IAAtB,EAA4BH,KAA5B,EAAmCI,SAAnC;AACD;AACF,KAjCH;AAmCD;;AAEDR,EAAAA,qBAAqB,GAAS;AAAA;;AAC5B,kCAAKC,cAAL,CAAoBwB,OAApB,gFAA6BC,WAA7B;AACD;;AAEDT,EAAAA,UAAU,CAACX,IAAD,EAAgBC,IAAhB,EAA+BH,KAA/B,EAA+CI,SAA/C,EAAmE;AAC3E,QAAM;AAAEmB,MAAAA;AAAF,QAAiB,KAAK9B,KAA5B;AACA8B,IAAAA,UAAU,CAACC,IAAX,CAAgBpC,gBAAgB,CAACqC,eAAjC,EAAkD,IAAlD,EAAwD;AACtDvB,MAAAA,IADsD;AAEtDC,MAAAA,IAFsD;AAGtDH,MAAAA,KAHsD;AAItDI,MAAAA;AAJsD,KAAxD;AAMD;AAED;AACF;AACA;AACA;AACA;;;AACEsB,EAAAA,aAAa,CAACrB,KAAD,EAAwC;AAAA;;AAAA,QAApBQ,UAAoB,uEAAP,KAAO;AACnD;AACA,SAAKK,QAAL,CAAc;AAAER,MAAAA,UAAU,EAAE,CAACG;AAAf,KAAd,EAFmD,CAInD;AACA;;AACA,mCAAKhB,cAAL,CAAoBwB,OAApB,kFAA6BM,cAA7B,CAA4CtB,KAA5C;AACD;;AAEDO,EAAAA,aAAa,GAAG;AACd,QAAM;AAAEN,MAAAA;AAAF,QAAc,KAAKb,KAAzB;;AACA,QAAIa,OAAO,IAAI,IAAf,EAAqB;AACnB;AACD;;AAED,SAAKY,QAAL,CAAcb,KAAK,IAAI;AACrB,UAAM;AAAEE,QAAAA;AAAF,UAAaF,KAAnB;;AAEA,UAAIE,MAAM,IAAI,IAAV,IAAkBD,OAAO,CAACsB,MAAR,GAAiB,CAAvC,EAA0C;AACxC,eAAO;AACLtB,UAAAA,OAAO,EAAE,CAAC,GAAGA,OAAJ,CADJ;AAELC,UAAAA,MAAM,EAAED,OAAO,CAAC,CAAD;AAFV,SAAP;AAID;;AAED,UACEC,MAAM,IAAI,IAAV,IACA,CAACD,OAAO,CAACuB,IAAR,CACC;AAAA,YAAC;AAAE3B,UAAAA,IAAF;AAAQC,UAAAA;AAAR,SAAD;AAAA,eAAoBI,MAAM,CAACL,IAAP,KAAgBA,IAAhB,IAAwBK,MAAM,CAACJ,IAAP,KAAgBA,IAA5D;AAAA,OADD,CAFH,EAKE;AACA,eAAO;AAAEG,UAAAA,OAAO,EAAE,CAAC,GAAGA,OAAJ,EAAaC,MAAb;AAAX,SAAP;AACD;;AAED,aAAO;AAAED,QAAAA,OAAO,EAAE,CAAC,GAAGA,OAAJ;AAAX,OAAP;AACD,KApBD;AAqBD;;AAEDwB,EAAAA,MAAM,GAAG;AACP,QAAM;AAAEC,MAAAA,WAAF;AAAeR,MAAAA;AAAf,QAA8B,KAAK9B,KAAzC;AACA,QAAM;AAAEc,MAAAA,MAAF;AAAUD,MAAAA,OAAV;AAAmBL,MAAAA,YAAnB;AAAiCD,MAAAA;AAAjC,QAA2C,KAAKK,KAAtD;AACA,wBACE,oBAAC,KAAD;AACE,MAAA,SAAS,EAAC,yBADZ;AAEE,MAAA,cAAc,EAAE,IAFlB;AAGE,MAAA,WAAW,EAAE0B,WAHf;AAIE,MAAA,UAAU,EAAER,UAJd;AAKE,MAAA,iBAAiB,EAAE,KAAK3B,qBAL1B;AAME,MAAA,UAAU,MANZ;AAOE,MAAA,WAAW;AAPb,oBASE,oBAAC,WAAD;AACE,MAAA,GAAG,EAAE,KAAKC,cADZ;AAEE,MAAA,MAAM,EAAEU,MAFV;AAGE,MAAA,OAAO,EAAED,OAHX;AAIE,MAAA,QAAQ,EAAE,KAAKZ,YAJjB;AAKE,MAAA,YAAY,EAAEO,YALhB;AAME,MAAA,KAAK,EAAED;AANT,MATF,CADF;AAoBD;;AAhMD;;gBAHIT,gB,kBAIkB;AACpBQ,EAAAA,UAAU,EAAE;AADQ,C;;gBAJlBR,gB,eAQe,kB;;gBARfA,gB,iBAYiB,kB;;AA0LvB,IAAMyC,eAAe,GAAG,CACtB3B,KADsB,EAEtB4B,QAFsB,KAGnB;AACH,MAAM;AAAEC,IAAAA;AAAF,MAAuBD,QAA7B;AAEA,SAAO;AACL3B,IAAAA,OAAO,EAAEjB,sBAAsB,CAACgB,KAAD,EAAQ6B,gBAAR;AAD1B,GAAP;AAGD,CATD;;AAWA,eAAelD,OAAO,CAACgD,eAAD,EAAkB,IAAlB,EAAwB,IAAxB,EAA8B;AAAEG,EAAAA,UAAU,EAAE;AAAd,CAA9B,CAAP,CACb5C,gBADa,CAAf","sourcesContent":["import React, { Component, RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { RootState } from '@deephaven/redux';\nimport Panel from './Panel';\nimport InputFilter, {\n InputFilterColumn,\n} from '../controls/input-filter/InputFilter';\nimport { InputFilterEvent } from '../events';\nimport { getColumnsForDashboard } from '../redux';\n\nconst INPUT_FILTER_DEBOUNCE = 250;\n\nexport interface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ninterface InputFilterPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n columns: InputFilterColumn[];\n}\n\ninterface InputFilterPanelState {\n columns: InputFilterColumn[];\n column?: InputFilterColumn;\n value?: string;\n timestamp?: number;\n isValueShown: boolean;\n wasFlipped: boolean;\n skipUpdate: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel}\n}\nclass InputFilterPanel extends Component<\n InputFilterPanelProps,\n InputFilterPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'InputFilterPanel';\n\n // Have to explicitly specify displayName\n // otherwise it gets minified and breaks LayoutUtils.getComponentName\n static displayName = 'InputFilterPanel';\n\n constructor(props: InputFilterPanelProps) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n INPUT_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.inputFilterRef = React.createRef();\n\n const { panelState } = props;\n // if panelstate is null, use destructured defaults\n const { value, isValueShown = false, name, type, timestamp } =\n panelState ?? {};\n\n this.state = {\n columns: [],\n column: name && type ? { name, type } : undefined,\n value,\n timestamp,\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount() {\n this.updateColumns();\n\n const { column, value, timestamp } = this.state;\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(prevProps: InputFilterPanelProps) {\n const { columns } = this.props;\n if (columns !== prevProps.columns) {\n this.updateColumns();\n }\n }\n\n inputFilterRef: RefObject<InputFilter>;\n\n handleChange({\n column,\n isValueShown,\n value,\n }: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }) {\n let name: string | undefined;\n let type: string | undefined;\n if (column != null) {\n ({ name, type } = column);\n }\n let sendUpdate = true;\n let timestamp: number | undefined = Date.now();\n this.setState(\n ({ panelState, timestamp: prevTimestamp, wasFlipped, skipUpdate }) => {\n // If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it\n const isFlip =\n panelState != null &&\n isValueShown !== panelState.isValueShown &&\n name === panelState.name &&\n type === panelState.type &&\n value === panelState.value;\n sendUpdate =\n (!skipUpdate && isValueShown && (!isFlip || !wasFlipped)) ?? false;\n\n if (!sendUpdate) {\n timestamp = prevTimestamp;\n }\n\n return {\n panelState: {\n isValueShown,\n name,\n type,\n value,\n timestamp,\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false,\n };\n },\n () => {\n if (sendUpdate) {\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n );\n }\n\n handleClearAllFilters(): void {\n this.inputFilterRef.current?.clearFilter();\n }\n\n sendUpdate(name?: string, type?: string, value?: string, timestamp?: number) {\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.FILTERS_CHANGED, this, {\n name,\n type,\n value,\n timestamp,\n });\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param state Filter state to set\n * @param sendUpdate Emit filters changed event if true\n */\n setPanelState(state: PanelState, sendUpdate = false) {\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({ skipUpdate: !sendUpdate });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n this.inputFilterRef.current?.setFilterState(state);\n }\n\n updateColumns() {\n const { columns } = this.props;\n if (columns == null) {\n return;\n }\n\n this.setState(state => {\n const { column } = state;\n\n if (column == null && columns.length > 0) {\n return {\n columns: [...columns],\n column: columns[0],\n };\n }\n\n if (\n column != null &&\n !columns.find(\n ({ name, type }) => column.name === name && column.type === type\n )\n ) {\n return { columns: [...columns, column] };\n }\n\n return { columns: [...columns] };\n });\n }\n\n render() {\n const { glContainer, glEventHub } = this.props;\n const { column, columns, isValueShown, value } = this.state;\n return (\n <Panel\n className=\"iris-input-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n isClonable\n isRenamable\n >\n <InputFilter\n ref={this.inputFilterRef}\n column={column}\n columns={columns}\n onChange={this.handleChange}\n isValueShown={isValueShown}\n value={value}\n />\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\n const { localDashboardId } = ownProps;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n InputFilterPanel\n);\n"],"file":"InputFilterPanel.js"}
|
|
1
|
+
{"version":3,"file":"InputFilterPanel.js","names":["React","Component","connect","debounce","Panel","InputFilter","InputFilterEvent","getColumnsForDashboard","INPUT_FILTER_DEBOUNCE","InputFilterPanel","constructor","props","handleChange","bind","handleClearAllFilters","inputFilterRef","createRef","panelState","value","isValueShown","name","type","timestamp","state","columns","column","undefined","wasFlipped","skipUpdate","componentDidMount","updateColumns","sendUpdate","componentDidUpdate","prevProps","Date","now","setState","prevTimestamp","isFlip","current","clearFilter","glEventHub","emit","FILTERS_CHANGED","setPanelState","setFilterState","length","find","render","glContainer","mapStateToProps","ownProps","localDashboardId","forwardRef"],"sources":["../../src/panels/InputFilterPanel.tsx"],"sourcesContent":["import React, { Component, RefObject } from 'react';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport { Container, EventEmitter } from '@deephaven/golden-layout';\nimport { RootState } from '@deephaven/redux';\nimport Panel from './Panel';\nimport InputFilter, {\n InputFilterColumn,\n} from '../controls/input-filter/InputFilter';\nimport { InputFilterEvent } from '../events';\nimport { getColumnsForDashboard } from '../redux';\n\nconst INPUT_FILTER_DEBOUNCE = 250;\n\nexport interface PanelState {\n name?: string;\n type?: string;\n value?: string;\n isValueShown?: boolean;\n timestamp?: number;\n}\n\ninterface InputFilterPanelProps {\n glContainer: Container;\n glEventHub: EventEmitter;\n panelState: PanelState;\n columns: InputFilterColumn[];\n}\n\ninterface InputFilterPanelState {\n columns: InputFilterColumn[];\n column?: InputFilterColumn;\n value?: string;\n timestamp?: number;\n isValueShown: boolean;\n wasFlipped: boolean;\n skipUpdate: boolean;\n // eslint-disable-next-line react/no-unused-state\n panelState: PanelState; // Dehydrated panel state that can load this panel}\n}\nclass InputFilterPanel extends Component<\n InputFilterPanelProps,\n InputFilterPanelState\n> {\n static defaultProps = {\n panelState: null,\n };\n\n static COMPONENT = 'InputFilterPanel';\n\n // Have to explicitly specify displayName\n // otherwise it gets minified and breaks LayoutUtils.getComponentName\n static displayName = 'InputFilterPanel';\n\n constructor(props: InputFilterPanelProps) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n INPUT_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n\n this.inputFilterRef = React.createRef();\n\n const { panelState } = props;\n // if panelstate is null, use destructured defaults\n const { value, isValueShown = false, name, type, timestamp } =\n panelState ?? {};\n\n this.state = {\n columns: [],\n column: name && type ? { name, type } : undefined,\n value,\n timestamp,\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n };\n }\n\n componentDidMount() {\n this.updateColumns();\n\n const { column, value, timestamp } = this.state;\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(prevProps: InputFilterPanelProps) {\n const { columns } = this.props;\n if (columns !== prevProps.columns) {\n this.updateColumns();\n }\n }\n\n inputFilterRef: RefObject<InputFilter>;\n\n handleChange({\n column,\n isValueShown,\n value,\n }: {\n column?: InputFilterColumn;\n isValueShown?: boolean;\n value?: string;\n }) {\n let name: string | undefined;\n let type: string | undefined;\n if (column != null) {\n ({ name, type } = column);\n }\n let sendUpdate = true;\n let timestamp: number | undefined = Date.now();\n this.setState(\n ({ panelState, timestamp: prevTimestamp, wasFlipped, skipUpdate }) => {\n // If the user had a value set, and they flip the card over and flip it back without changing any settings, ignore it\n const isFlip =\n panelState != null &&\n isValueShown !== panelState.isValueShown &&\n name === panelState.name &&\n type === panelState.type &&\n value === panelState.value;\n sendUpdate =\n (!skipUpdate && isValueShown && (!isFlip || !wasFlipped)) ?? false;\n\n if (!sendUpdate) {\n timestamp = prevTimestamp;\n }\n\n return {\n panelState: {\n isValueShown,\n name,\n type,\n value,\n timestamp,\n },\n timestamp,\n wasFlipped: isFlip,\n skipUpdate: false,\n };\n },\n () => {\n if (sendUpdate) {\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n );\n }\n\n handleClearAllFilters(): void {\n this.inputFilterRef.current?.clearFilter();\n }\n\n sendUpdate(name?: string, type?: string, value?: string, timestamp?: number) {\n const { glEventHub } = this.props;\n glEventHub.emit(InputFilterEvent.FILTERS_CHANGED, this, {\n name,\n type,\n value,\n timestamp,\n });\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param state Filter state to set\n * @param sendUpdate Emit filters changed event if true\n */\n setPanelState(state: PanelState, sendUpdate = false) {\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({ skipUpdate: !sendUpdate });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n this.inputFilterRef.current?.setFilterState(state);\n }\n\n updateColumns() {\n const { columns } = this.props;\n if (columns == null) {\n return;\n }\n\n this.setState(state => {\n const { column } = state;\n\n if (column == null && columns.length > 0) {\n return {\n columns: [...columns],\n column: columns[0],\n };\n }\n\n if (\n column != null &&\n !columns.find(\n ({ name, type }) => column.name === name && column.type === type\n )\n ) {\n return { columns: [...columns, column] };\n }\n\n return { columns: [...columns] };\n });\n }\n\n render() {\n const { glContainer, glEventHub } = this.props;\n const { column, columns, isValueShown, value } = this.state;\n return (\n <Panel\n className=\"iris-input-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n isClonable\n isRenamable\n >\n <InputFilter\n ref={this.inputFilterRef}\n column={column}\n columns={columns}\n onChange={this.handleChange}\n isValueShown={isValueShown}\n value={value}\n />\n </Panel>\n );\n }\n}\n\nconst mapStateToProps = (\n state: RootState,\n ownProps: { localDashboardId: string }\n) => {\n const { localDashboardId } = ownProps;\n\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n InputFilterPanel\n);\n"],"mappings":"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"}
|