@deephaven/dashboard-core-plugins 0.6.1 → 0.6.3-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/ChartPlugin.js +1 -1
  2. package/dist/ChartPlugin.js.map +1 -1
  3. package/dist/ConsolePlugin.js +3 -3
  4. package/dist/ConsolePlugin.js.map +1 -1
  5. package/dist/FilterPlugin.js +4 -4
  6. package/dist/FilterPlugin.js.map +1 -1
  7. package/dist/GridPlugin.js +1 -1
  8. package/dist/GridPlugin.js.map +1 -1
  9. package/dist/LinkerPlugin.js +1 -1
  10. package/dist/MarkdownPlugin.js +1 -1
  11. package/dist/MarkdownPlugin.js.map +1 -1
  12. package/dist/PandasPlugin.js +1 -1
  13. package/dist/PandasPlugin.js.map +1 -1
  14. package/dist/controls/dropdown-filter/DropdownFilter.js +3 -3
  15. package/dist/controls/input-filter/InputFilter.js +1 -1
  16. package/dist/linker/Linker.js +4 -4
  17. package/dist/linker/LinkerOverlayContent.js +1 -1
  18. package/dist/linker/LinkerUtils.js +2 -2
  19. package/dist/panels/ChartColumnSelectorOverlay.js +1 -1
  20. package/dist/panels/ChartFilterOverlay.js +1 -1
  21. package/dist/panels/ChartFilterOverlay.js.map +1 -1
  22. package/dist/panels/ChartPanel.js +4 -4
  23. package/dist/panels/ChartPanel.js.map +1 -1
  24. package/dist/panels/ConsolePanel.d.ts.map +1 -1
  25. package/dist/panels/ConsolePanel.js +4 -4
  26. package/dist/panels/ConsolePanel.js.map +1 -1
  27. package/dist/panels/DropdownFilterPanel.js +2 -2
  28. package/dist/panels/DropdownFilterPanel.js.map +1 -1
  29. package/dist/panels/FilterSetManager.js +14 -14
  30. package/dist/panels/FilterSetManager.js.map +1 -1
  31. package/dist/panels/FilterSetManagerPanel.d.ts.map +1 -1
  32. package/dist/panels/FilterSetManagerPanel.js +7 -7
  33. package/dist/panels/FilterSetManagerPanel.js.map +1 -1
  34. package/dist/panels/InputFilterPanel.js +2 -2
  35. package/dist/panels/InputFilterPanel.js.map +1 -1
  36. package/dist/panels/IrisGridPanel.d.ts.map +1 -1
  37. package/dist/panels/IrisGridPanel.js +8 -4
  38. package/dist/panels/IrisGridPanel.js.map +1 -1
  39. package/dist/panels/NotebookPanel.js +4 -4
  40. package/dist/panels/NotebookPanel.js.map +1 -1
  41. package/dist/panels/PandasPanel.js +2 -1
  42. package/dist/panels/PandasPanel.js.map +1 -1
  43. package/dist/redux/index.js +1 -1
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +17 -17
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/DropdownFilterPanel.jsx"],"names":["React","Component","PropTypes","connect","debounce","deepEqual","memoize","GLPropTypes","LayoutUtils","Formatter","FormatterUtils","TableUtils","DateTimeColumnFormatter","dh","Log","getActiveTool","getSettings","Pending","PromiseUtils","DropdownFilter","InputFilterEvent","getColumnsForDashboard","getColumnSelectionValidatorForDashboard","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","getTableMapForDashboard","UIPropTypes","ToolType","WidgetPanel","log","module","DROPDOWN_FILTER_DEBOUNCE","DropdownFilterPanel","constructor","props","rawValues","formatter","type","name","isDateType","map","value","DATETIME_FORMATTER","format","getFormattedString","dashboardLinks","panel","panelId","getIdFromPanel","debug","filter","link","end","links","source","length","start","error","panelTableMap","get","table","columns","find","columnName","columnType","handleChange","bind","handleClearAllFilters","handleDisconnect","handleReconnect","handleColumnSelected","handleSourceFilterChange","handleSourceSortChange","handleSourceSizeChange","handleSourceMouseEnter","handleSourceMouseLeave","handleValuesTableUpdate","dropdownFilterRef","createRef","panelContainer","pending","cleanup","panelState","settings","columnFormats","isValueShown","timestamp","column","state","valuesTable","valuesColumn","sourceSize","values","wasFlipped","skipUpdate","isDisconnected","isLoading","isLoaded","componentDidMount","updateValuesTable","sourceTable","getSourceTable","startListeningToSource","sendUpdate","componentDidUpdate","prevProps","prevState","getSource","prevSource","prevSourceTable","updateFormatterSettings","close","stopListeningToSource","componentWillUnmount","cancel","getCoordinateForColumn","current","element","querySelector","SOURCE_BUTTON_CLASS_NAME","rect","getBoundingClientRect","width","height","x","left","y","bottom","getSettingsErrorMessage","MAX_TABLE_SIZE","getPanelErrorMessage","panelLinks","getCachedPanelLinks","getCachedSource","getCachedSourceTable","getValuesColumn","getCachedSourceColumn","addEventListener","Table","EVENT_FILTERCHANGED","EVENT_SORTCHANGED","EVENT_SIZECHANGED","EVENT_DISCONNECT","EVENT_RECONNECT","removeEventListener","Date","now","setState","prevTimestamp","isFlip","Error","applySourceFilters","applySourceSorts","detail","glEventHub","emit","COLUMN_SELECTED","SOURCE_COLUMN","clearFilter","setPanelState","setFilterState","sourcePanelId","excludePanelIds","FILTERS_CHANGED","size","add","copy","resolved","then","updateViewportListener","catch","isCancelled","sort","sorts","applySort","setViewport","filters","applyFilter","EVENT_UPDATED","getColumnFormats","rows","row","columnSelectionValidator","render","disableLinking","glContainer","isLinkerActive","settingsErrorMessage","panelErrorMessage","formattedValues","getCachedValues","showTimeZone","showTSeparator","defaultDateTimeFormatString","Object","freeze","propTypes","Container","isRequired","EventHub","shape","string","bool","arrayOf","func","instanceOf","Map","Links","defaultProps","displayName","mapStateToProps","ownProps","localDashboardId","activeTool","isolatedLinkerPanelId","LINKER","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport deepEqual from 'deep-equal';\nimport memoize from 'memoize-one';\nimport { GLPropTypes, LayoutUtils } from '@deephaven/dashboard';\nimport { Formatter, FormatterUtils, TableUtils } from '@deephaven/iris-grid';\nimport { DateTimeColumnFormatter } from '@deephaven/iris-grid/dist/formatters';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { getActiveTool, getSettings } from '@deephaven/redux';\nimport { Pending, PromiseUtils } from '@deephaven/utils';\nimport DropdownFilter from '../controls/dropdown-filter/DropdownFilter';\nimport { InputFilterEvent } from '../events';\nimport {\n getColumnsForDashboard,\n getColumnSelectionValidatorForDashboard,\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n getTableMapForDashboard,\n} from '../redux';\nimport './DropdownFilterPanel.scss';\nimport { UIPropTypes } from '../prop-types';\nimport ToolType from '../linker/ToolType';\nimport WidgetPanel from './WidgetPanel';\n\nconst log = Log.module('DropdownFilterPanel');\n\nconst DROPDOWN_FILTER_DEBOUNCE = 250;\n\nclass DropdownFilterPanel extends Component {\n static COMPONENT = 'DropdownFilterPanel';\n\n static MAX_TABLE_SIZE = 256;\n\n // Filter dropdown needs to show and send full timestamp format with nanoseconds\n static DATETIME_FORMATTER = new DateTimeColumnFormatter({\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: `yyyy-MM-dd HH:mm:ss.SSSSSSSSS`,\n });\n\n static SOURCE_COLUMN = Object.freeze({\n name: 'FilterSource',\n type: null,\n });\n\n constructor(props) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n DROPDOWN_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleSourceFilterChange = this.handleSourceFilterChange.bind(this);\n this.handleSourceSortChange = this.handleSourceSortChange.bind(this);\n this.handleSourceSizeChange = this.handleSourceSizeChange.bind(this);\n this.handleSourceMouseEnter = this.handleSourceMouseEnter.bind(this);\n this.handleSourceMouseLeave = this.handleSourceMouseLeave.bind(this);\n this.handleValuesTableUpdate = this.handleValuesTableUpdate.bind(this);\n\n this.dropdownFilterRef = React.createRef();\n this.panelContainer = React.createRef();\n this.pending = new Pending();\n this.cleanup = null;\n\n const { panelState, settings } = props;\n this.columnFormats = settings.columnFormats;\n const { value = '', isValueShown = false, name, type, timestamp = null } =\n panelState ?? {};\n const column = name != null && type != null ? { name, type } : null;\n this.state = {\n column,\n formatter: new Formatter(this.columnFormats),\n valuesTable: null,\n valuesColumn: null,\n sourceSize: 0,\n value,\n timestamp,\n values: [],\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n\n isDisconnected: false,\n isLoading: false,\n isLoaded: false,\n error: null,\n };\n }\n\n componentDidMount() {\n this.updateValuesTable();\n const { column, value, timestamp } = this.state;\n const sourceTable = this.getSourceTable();\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { valuesTable } = this.state;\n const { settings } = this.props;\n const source = this.getSource();\n const sourceTable = this.getSourceTable();\n const prevSource = this.getSource(prevProps);\n const prevSourceTable = this.getSourceTable(prevProps);\n\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n\n if (\n valuesTable !== prevState.valuesTable &&\n prevState.valuesTable !== null\n ) {\n log.debug('Table in state modified, closing the old table.');\n prevState.valuesTable.close();\n }\n\n // Checking source change in addition to table change\n // in case a different column is selected in the same table\n if (sourceTable !== prevSourceTable || source !== prevSource) {\n this.updateValuesTable();\n }\n\n if (sourceTable !== prevSourceTable) {\n if (prevSourceTable !== null) {\n this.stopListeningToSource(prevSourceTable);\n }\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n }\n }\n\n componentWillUnmount() {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n this.pending.cancel();\n if (sourceTable !== null) {\n this.stopListeningToSource(sourceTable);\n }\n if (this.cleanup) {\n this.cleanup();\n }\n if (valuesTable !== null) {\n valuesTable.close();\n }\n }\n\n getCachedValues = memoize((rawValues, { type, name }, formatter) => {\n if (TableUtils.isDateType(type)) {\n return rawValues.map(value =>\n DropdownFilterPanel.DATETIME_FORMATTER.format(value)\n );\n }\n return rawValues.map(value =>\n // Skip formatting for nulls so they don't get converted to ''\n value != null ? formatter.getFormattedString(value, type, name) : null\n );\n });\n\n getCoordinateForColumn() {\n if (!this.panelContainer.current) {\n return null;\n }\n\n const element = this.panelContainer.current.querySelector(\n `.${DropdownFilter.SOURCE_BUTTON_CLASS_NAME}`\n );\n const rect = element?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n const x = rect.left + rect.width / 2;\n const y = rect.bottom;\n return [x, y];\n }\n\n getSettingsErrorMessage() {\n const { sourceSize } = this.state;\n if (sourceSize > DropdownFilterPanel.MAX_TABLE_SIZE) {\n return `Table too large, must have fewer than ${DropdownFilterPanel.MAX_TABLE_SIZE} options.`;\n }\n return null;\n }\n\n getPanelErrorMessage() {\n const { error } = this.state;\n return error ? `${error}` : null;\n }\n\n getCachedPanelLinks = memoize((dashboardLinks, panel) => {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('getCachedPanelLinks', dashboardLinks, panelId);\n return dashboardLinks.filter(link => link.end?.panelId === panelId);\n });\n\n getCachedSource = memoize(links => {\n log.debug('getCachedSource', links);\n let source = null;\n if (links.length > 0) {\n const [link] = links;\n source = link.start;\n if (links.length > 1) {\n log.error('Filter has more that one link', links);\n }\n }\n return source;\n });\n\n getCachedSourceTable = memoize((panelTableMap, source) => {\n log.debug('getCachedSourceTable', panelTableMap, source);\n if (source == null) {\n return null;\n }\n const { panelId } = source;\n return panelTableMap.get(panelId) ?? null;\n });\n\n getCachedSourceColumn = memoize((table, source) => {\n log.debug('getCachedSourceColumn', table, source);\n if (table == null || source == null) {\n return null;\n }\n return (\n table.columns.find(\n ({ name, type }) =>\n name === source.columnName && type === source.columnType\n ) ?? null\n );\n });\n\n getSource(props = this.props) {\n const { dashboardLinks } = props;\n const panelLinks = this.getCachedPanelLinks(dashboardLinks, this);\n return this.getCachedSource(panelLinks);\n }\n\n getSourceTable(props = this.props) {\n const { panelTableMap } = props;\n const source = this.getSource(props);\n return this.getCachedSourceTable(panelTableMap, source);\n }\n\n getValuesColumn(valuesTable) {\n const source = this.getSource();\n return this.getCachedSourceColumn(valuesTable, source);\n }\n\n startListeningToSource(sourceTable) {\n log.debug('startListeningToSource');\n sourceTable.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_SIZECHANGED,\n this.handleSourceSizeChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleDisconnect\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleReconnect\n );\n }\n\n stopListeningToSource(sourceTable) {\n log.debug('stopListeningToSource');\n sourceTable.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_SIZECHANGED,\n this.handleSourceSizeChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleDisconnect\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleReconnect\n );\n }\n\n handleChange({ column, isValueShown, value }) {\n const { name = null, type = null } = column ?? {};\n let sendUpdate = true;\n let timestamp = 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 = !skipUpdate && isValueShown && (!isFlip || !wasFlipped);\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 handleDisconnect() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect() {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleSourceFilterChange() {\n this.applySourceFilters();\n }\n\n handleSourceSortChange() {\n this.applySourceSorts();\n }\n\n handleSourceSizeChange({ detail }) {\n this.setState({ sourceSize: detail });\n }\n\n handleColumnSelected() {\n log.debug('handleColumnSelected');\n const { glEventHub } = this.props;\n glEventHub.emit(\n InputFilterEvent.COLUMN_SELECTED,\n this,\n DropdownFilterPanel.SOURCE_COLUMN\n );\n }\n\n handleClearAllFilters() {\n this.dropdownFilterRef.current.clearFilter();\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param {Object} state Filter state to set\n * @param {boolean} sendUpdate Emit filters changed event if true\n */\n setPanelState(state, sendUpdate = false) {\n if (this.getSource() == null) {\n log.debug('Ignore state update for unlinked filter', state);\n return;\n }\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({ skipUpdate: !sendUpdate });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n this.dropdownFilterRef.current?.setFilterState(state);\n }\n\n sendUpdate(name, type, value, timestamp) {\n const { glEventHub } = this.props;\n const sourcePanelId = this.getSource()?.panelId;\n const excludePanelIds = sourcePanelId === null ? [] : [sourcePanelId];\n log.debug('sendUpdate', {\n name,\n type,\n value,\n timestamp,\n excludePanelIds,\n });\n\n glEventHub.emit(InputFilterEvent.FILTERS_CHANGED, this, {\n name,\n type,\n value: value != null ? value : '=null',\n timestamp,\n excludePanelIds,\n });\n }\n\n updateValuesTable() {\n const source = this.getSource();\n const sourceTable = this.getSourceTable();\n log.debug('updateValuesTable', source, sourceTable);\n\n this.setState({\n values: [],\n valuesTable: null,\n error: null,\n });\n\n if (source == null) {\n log.debug('Filter unlinked.');\n this.setState({\n isLoading: false,\n isLoaded: true,\n isValueShown: false,\n sourceSize: 0,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n\n if (sourceTable == null) {\n return;\n }\n\n this.setState({ isLoaded: false, sourceSize: sourceTable.size });\n\n this.pending\n .add(sourceTable.copy(), resolved => resolved.close())\n .then(valuesTable => {\n // Loading/loaded will be set when values array is actually populated\n this.updateViewportListener(valuesTable);\n this.setState({ valuesTable });\n })\n .catch(error => {\n if (PromiseUtils.isCancelled(error)) {\n return;\n }\n log.error(error);\n this.setState({ isLoading: false, error });\n });\n }\n\n applySourceSorts() {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n log.debug('applySourceSorts', sourceTable.sort);\n if (valuesTable == null) {\n log.debug('Table not initialized');\n return;\n }\n const sorts = [...sourceTable.sort];\n valuesTable.applySort(sorts);\n this.setViewport(valuesTable);\n }\n\n applySourceFilters() {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n log.debug('applySourceFilters', sourceTable.filter);\n if (valuesTable == null) {\n log.debug('Table not initialized');\n return;\n }\n const filters = [...sourceTable.filter];\n valuesTable.applyFilter(filters);\n this.setViewport(valuesTable);\n }\n\n updateViewportListener(valuesTable) {\n log.debug('updateViewportListener', valuesTable?.size);\n\n if (this.cleanup) {\n this.cleanup();\n }\n\n if (valuesTable == null) {\n this.cleanup = null;\n return;\n }\n\n this.cleanup = valuesTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleValuesTableUpdate\n );\n\n this.setViewport(valuesTable);\n }\n\n setViewport(valuesTable) {\n const valuesColumn = this.getValuesColumn(valuesTable);\n valuesTable.setViewport(0, DropdownFilterPanel.MAX_TABLE_SIZE - 1, [\n valuesColumn,\n ]);\n }\n\n updateFormatterSettings(settings) {\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n if (!deepEqual(this.columnFormats, columnFormats)) {\n this.columnFormats = columnFormats;\n this.setState({ formatter: new Formatter(columnFormats) });\n }\n }\n\n handleValuesTableUpdate({ detail }) {\n const { rows } = detail;\n const { valuesTable } = this.state;\n const valuesColumn = this.getValuesColumn(valuesTable);\n if (!valuesColumn) {\n log.error('Values column not found');\n return;\n }\n const values = rows.map(row => row.get(valuesColumn));\n this.setState({ values, isLoading: false, isLoaded: true, valuesColumn });\n }\n\n handleSourceMouseEnter() {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, DropdownFilterPanel.SOURCE_COLUMN);\n }\n\n handleSourceMouseLeave() {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, null);\n }\n\n render() {\n const {\n columns,\n disableLinking,\n glContainer,\n glEventHub,\n isLinkerActive,\n } = this.props;\n const {\n column,\n formatter,\n isDisconnected,\n isValueShown,\n value,\n values,\n valuesColumn,\n isLoading,\n isLoaded,\n } = this.state;\n\n const source = this.getSource();\n const settingsErrorMessage = this.getSettingsErrorMessage();\n const panelErrorMessage = this.getPanelErrorMessage();\n const formattedValues =\n isLoaded && valuesColumn != null\n ? this.getCachedValues(values, valuesColumn, formatter)\n : [];\n\n return (\n <WidgetPanel\n errorMessage={panelErrorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n isDisconnected={isDisconnected}\n className=\"iris-dropdown-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n widgetName=\"Dropdown Filter\"\n widgetType=\"DropdownFilter\"\n >\n <div\n ref={this.panelContainer}\n className=\"dropdown-filter-container h-100 w-100 container\"\n >\n <DropdownFilter\n ref={this.dropdownFilterRef}\n column={column}\n columns={columns}\n isValueShown={isValueShown}\n isLinkerActive={isLinkerActive}\n disableLinking={disableLinking}\n isLoaded={isLoaded}\n settingsError={settingsErrorMessage}\n source={source}\n value={value}\n values={formattedValues}\n onChange={this.handleChange}\n onColumnSelected={this.handleColumnSelected}\n onSourceMouseEnter={this.handleSourceMouseEnter}\n onSourceMouseLeave={this.handleSourceMouseLeave}\n />\n </div>\n </WidgetPanel>\n );\n }\n}\n\nDropdownFilterPanel.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n panelState: PropTypes.shape({\n name: PropTypes.string,\n type: PropTypes.string,\n value: PropTypes.string,\n isValueShown: PropTypes.bool,\n }),\n isLinkerActive: PropTypes.bool.isRequired,\n columns: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n columnSelectionValidator: PropTypes.func,\n disableLinking: PropTypes.bool.isRequired,\n settings: PropTypes.shape({\n columnFormats: PropTypes.arrayOf(PropTypes.shape({})),\n }).isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n panelTableMap: PropTypes.instanceOf(Map).isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n dashboardLinks: UIPropTypes.Links.isRequired,\n};\n\nDropdownFilterPanel.defaultProps = {\n columnSelectionValidator: null,\n panelState: null,\n};\n\nDropdownFilterPanel.displayName = 'DropdownFilterPanel';\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n const panelId = LayoutUtils.getIdFromPanel({ props: ownProps });\n const panelTableMap = getTableMapForDashboard(state, localDashboardId);\n const dashboardLinks = getLinksForDashboard(state, localDashboardId);\n const activeTool = getActiveTool(state);\n const isolatedLinkerPanelId = getIsolatedLinkerPanelIdForDashboard(\n state,\n localDashboardId\n );\n const isLinkerActive =\n activeTool === ToolType.LINKER &&\n (isolatedLinkerPanelId === null || isolatedLinkerPanelId === panelId);\n // Disable linking if linker is in isolated mode for a different panel\n const disableLinking =\n activeTool === ToolType.LINKER &&\n isolatedLinkerPanelId !== null &&\n isolatedLinkerPanelId !== panelId;\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n isLinkerActive,\n disableLinking,\n settings: getSettings(state),\n panelTableMap,\n dashboardLinks,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n DropdownFilterPanel\n);\n"],"file":"DropdownFilterPanel.js"}
1
+ {"version":3,"sources":["../../src/panels/DropdownFilterPanel.jsx"],"names":["React","Component","PropTypes","connect","debounce","deepEqual","memoize","GLPropTypes","LayoutUtils","Formatter","FormatterUtils","TableUtils","DateTimeColumnFormatter","dh","Log","getActiveTool","getSettings","Pending","PromiseUtils","DropdownFilter","InputFilterEvent","getColumnsForDashboard","getColumnSelectionValidatorForDashboard","getIsolatedLinkerPanelIdForDashboard","getLinksForDashboard","getTableMapForDashboard","UIPropTypes","ToolType","WidgetPanel","log","module","DROPDOWN_FILTER_DEBOUNCE","DropdownFilterPanel","constructor","props","rawValues","formatter","type","name","isDateType","map","value","DATETIME_FORMATTER","format","getFormattedString","dashboardLinks","panel","panelId","getIdFromPanel","debug","filter","link","end","links","source","length","start","error","panelTableMap","get","table","columns","find","columnName","columnType","handleChange","bind","handleClearAllFilters","handleDisconnect","handleReconnect","handleColumnSelected","handleSourceFilterChange","handleSourceSortChange","handleSourceSizeChange","handleSourceMouseEnter","handleSourceMouseLeave","handleValuesTableUpdate","dropdownFilterRef","createRef","panelContainer","pending","cleanup","panelState","settings","columnFormats","isValueShown","timestamp","column","state","valuesTable","valuesColumn","sourceSize","values","wasFlipped","skipUpdate","isDisconnected","isLoading","isLoaded","componentDidMount","updateValuesTable","sourceTable","getSourceTable","startListeningToSource","sendUpdate","componentDidUpdate","prevProps","prevState","getSource","prevSource","prevSourceTable","updateFormatterSettings","close","stopListeningToSource","componentWillUnmount","cancel","getCoordinateForColumn","current","element","querySelector","SOURCE_BUTTON_CLASS_NAME","rect","getBoundingClientRect","width","height","x","left","y","bottom","getSettingsErrorMessage","MAX_TABLE_SIZE","getPanelErrorMessage","panelLinks","getCachedPanelLinks","getCachedSource","getCachedSourceTable","getValuesColumn","getCachedSourceColumn","addEventListener","Table","EVENT_FILTERCHANGED","EVENT_SORTCHANGED","EVENT_SIZECHANGED","EVENT_DISCONNECT","EVENT_RECONNECT","removeEventListener","Date","now","setState","prevTimestamp","isFlip","Error","applySourceFilters","applySourceSorts","detail","glEventHub","emit","COLUMN_SELECTED","SOURCE_COLUMN","clearFilter","setPanelState","setFilterState","sourcePanelId","excludePanelIds","FILTERS_CHANGED","size","add","copy","resolved","then","updateViewportListener","catch","isCancelled","sort","sorts","applySort","setViewport","filters","applyFilter","EVENT_UPDATED","getColumnFormats","rows","row","columnSelectionValidator","render","disableLinking","glContainer","isLinkerActive","settingsErrorMessage","panelErrorMessage","formattedValues","getCachedValues","showTimeZone","showTSeparator","defaultDateTimeFormatString","Object","freeze","propTypes","Container","isRequired","EventHub","shape","string","bool","arrayOf","func","instanceOf","Map","Links","defaultProps","displayName","mapStateToProps","ownProps","localDashboardId","activeTool","isolatedLinkerPanelId","LINKER","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport debounce from 'lodash.debounce';\nimport deepEqual from 'deep-equal';\nimport memoize from 'memoize-one';\nimport { GLPropTypes, LayoutUtils } from '@deephaven/dashboard';\nimport { Formatter, FormatterUtils, TableUtils } from '@deephaven/iris-grid';\nimport { DateTimeColumnFormatter } from '@deephaven/iris-grid/dist/formatters';\nimport dh from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { getActiveTool, getSettings } from '@deephaven/redux';\nimport { Pending, PromiseUtils } from '@deephaven/utils';\nimport DropdownFilter from '../controls/dropdown-filter/DropdownFilter';\nimport { InputFilterEvent } from '../events';\nimport {\n getColumnsForDashboard,\n getColumnSelectionValidatorForDashboard,\n getIsolatedLinkerPanelIdForDashboard,\n getLinksForDashboard,\n getTableMapForDashboard,\n} from '../redux';\nimport './DropdownFilterPanel.scss';\nimport { UIPropTypes } from '../prop-types';\nimport ToolType from '../linker/ToolType';\nimport WidgetPanel from './WidgetPanel';\n\nconst log = Log.module('DropdownFilterPanel');\n\nconst DROPDOWN_FILTER_DEBOUNCE = 250;\n\nclass DropdownFilterPanel extends Component {\n static COMPONENT = 'DropdownFilterPanel';\n\n static MAX_TABLE_SIZE = 256;\n\n // Filter dropdown needs to show and send full timestamp format with nanoseconds\n static DATETIME_FORMATTER = new DateTimeColumnFormatter({\n showTimeZone: false,\n showTSeparator: true,\n defaultDateTimeFormatString: `yyyy-MM-dd HH:mm:ss.SSSSSSSSS`,\n });\n\n static SOURCE_COLUMN = Object.freeze({\n name: 'FilterSource',\n type: null,\n });\n\n constructor(props) {\n super(props);\n\n this.handleChange = debounce(\n this.handleChange.bind(this),\n DROPDOWN_FILTER_DEBOUNCE\n );\n this.handleClearAllFilters = this.handleClearAllFilters.bind(this);\n this.handleDisconnect = this.handleDisconnect.bind(this);\n this.handleReconnect = this.handleReconnect.bind(this);\n this.handleColumnSelected = this.handleColumnSelected.bind(this);\n this.handleSourceFilterChange = this.handleSourceFilterChange.bind(this);\n this.handleSourceSortChange = this.handleSourceSortChange.bind(this);\n this.handleSourceSizeChange = this.handleSourceSizeChange.bind(this);\n this.handleSourceMouseEnter = this.handleSourceMouseEnter.bind(this);\n this.handleSourceMouseLeave = this.handleSourceMouseLeave.bind(this);\n this.handleValuesTableUpdate = this.handleValuesTableUpdate.bind(this);\n\n this.dropdownFilterRef = React.createRef();\n this.panelContainer = React.createRef();\n this.pending = new Pending();\n this.cleanup = null;\n\n const { panelState, settings } = props;\n this.columnFormats = settings.columnFormats;\n const { value = '', isValueShown = false, name, type, timestamp = null } =\n panelState ?? {};\n const column = name != null && type != null ? { name, type } : null;\n this.state = {\n column,\n formatter: new Formatter(this.columnFormats),\n valuesTable: null,\n valuesColumn: null,\n sourceSize: 0,\n value,\n timestamp,\n values: [],\n isValueShown,\n wasFlipped: false,\n skipUpdate: false,\n\n // eslint-disable-next-line react/no-unused-state\n panelState, // Dehydrated panel state that can load this panel\n\n isDisconnected: false,\n isLoading: false,\n isLoaded: false,\n error: null,\n };\n }\n\n componentDidMount() {\n this.updateValuesTable();\n const { column, value, timestamp } = this.state;\n const sourceTable = this.getSourceTable();\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n if (column != null) {\n const { name, type } = column;\n this.sendUpdate(name, type, value, timestamp);\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { valuesTable } = this.state;\n const { settings } = this.props;\n const source = this.getSource();\n const sourceTable = this.getSourceTable();\n const prevSource = this.getSource(prevProps);\n const prevSourceTable = this.getSourceTable(prevProps);\n\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n\n if (\n valuesTable !== prevState.valuesTable &&\n prevState.valuesTable !== null\n ) {\n log.debug('Table in state modified, closing the old table.');\n prevState.valuesTable.close();\n }\n\n // Checking source change in addition to table change\n // in case a different column is selected in the same table\n if (sourceTable !== prevSourceTable || source !== prevSource) {\n this.updateValuesTable();\n }\n\n if (sourceTable !== prevSourceTable) {\n if (prevSourceTable !== null) {\n this.stopListeningToSource(prevSourceTable);\n }\n if (sourceTable !== null) {\n this.startListeningToSource(sourceTable);\n }\n }\n }\n\n componentWillUnmount() {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n this.pending.cancel();\n if (sourceTable !== null) {\n this.stopListeningToSource(sourceTable);\n }\n if (this.cleanup) {\n this.cleanup();\n }\n if (valuesTable !== null) {\n valuesTable.close();\n }\n }\n\n getCachedValues = memoize((rawValues, { type, name }, formatter) => {\n if (TableUtils.isDateType(type)) {\n return rawValues.map(value =>\n DropdownFilterPanel.DATETIME_FORMATTER.format(value)\n );\n }\n return rawValues.map(value =>\n // Skip formatting for nulls so they don't get converted to ''\n value != null ? formatter.getFormattedString(value, type, name) : null\n );\n });\n\n getCoordinateForColumn() {\n if (!this.panelContainer.current) {\n return null;\n }\n\n const element = this.panelContainer.current.querySelector(\n `.${DropdownFilter.SOURCE_BUTTON_CLASS_NAME}`\n );\n const rect = element?.getBoundingClientRect() ?? null;\n if (rect == null || rect.width <= 0 || rect.height <= 0) {\n return null;\n }\n const x = rect.left + rect.width / 2;\n const y = rect.bottom;\n return [x, y];\n }\n\n getSettingsErrorMessage() {\n const { sourceSize } = this.state;\n if (sourceSize > DropdownFilterPanel.MAX_TABLE_SIZE) {\n return `Table too large, must have fewer than ${DropdownFilterPanel.MAX_TABLE_SIZE} options.`;\n }\n return null;\n }\n\n getPanelErrorMessage() {\n const { error } = this.state;\n return error ? `${error}` : null;\n }\n\n getCachedPanelLinks = memoize((dashboardLinks, panel) => {\n const panelId = LayoutUtils.getIdFromPanel(panel);\n log.debug('getCachedPanelLinks', dashboardLinks, panelId);\n return dashboardLinks.filter(link => link.end?.panelId === panelId);\n });\n\n getCachedSource = memoize(links => {\n log.debug('getCachedSource', links);\n let source = null;\n if (links.length > 0) {\n const [link] = links;\n source = link.start;\n if (links.length > 1) {\n log.error('Filter has more that one link', links);\n }\n }\n return source;\n });\n\n getCachedSourceTable = memoize((panelTableMap, source) => {\n log.debug('getCachedSourceTable', panelTableMap, source);\n if (source == null) {\n return null;\n }\n const { panelId } = source;\n return panelTableMap.get(panelId) ?? null;\n });\n\n getCachedSourceColumn = memoize((table, source) => {\n log.debug('getCachedSourceColumn', table, source);\n if (table == null || source == null) {\n return null;\n }\n return (\n table.columns.find(\n ({ name, type }) =>\n name === source.columnName && type === source.columnType\n ) ?? null\n );\n });\n\n getSource(props = this.props) {\n const { dashboardLinks } = props;\n const panelLinks = this.getCachedPanelLinks(dashboardLinks, this);\n return this.getCachedSource(panelLinks);\n }\n\n getSourceTable(props = this.props) {\n const { panelTableMap } = props;\n const source = this.getSource(props);\n return this.getCachedSourceTable(panelTableMap, source);\n }\n\n getValuesColumn(valuesTable) {\n const source = this.getSource();\n return this.getCachedSourceColumn(valuesTable, source);\n }\n\n startListeningToSource(sourceTable) {\n log.debug('startListeningToSource');\n sourceTable.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_SIZECHANGED,\n this.handleSourceSizeChange\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleDisconnect\n );\n sourceTable.addEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleReconnect\n );\n }\n\n stopListeningToSource(sourceTable) {\n log.debug('stopListeningToSource');\n sourceTable.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleSourceFilterChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_SORTCHANGED,\n this.handleSourceSortChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_SIZECHANGED,\n this.handleSourceSizeChange\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleDisconnect\n );\n sourceTable.removeEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleReconnect\n );\n }\n\n handleChange({ column, isValueShown, value }) {\n const { name = null, type = null } = column ?? {};\n let sendUpdate = true;\n let timestamp = 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 = !skipUpdate && isValueShown && (!isFlip || !wasFlipped);\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 handleDisconnect() {\n this.setState({\n error: new Error('Table disconnected'),\n isDisconnected: true,\n isLoading: false,\n });\n }\n\n handleReconnect() {\n this.setState({ isDisconnected: false, error: null });\n }\n\n handleSourceFilterChange() {\n this.applySourceFilters();\n }\n\n handleSourceSortChange() {\n this.applySourceSorts();\n }\n\n handleSourceSizeChange({ detail }) {\n this.setState({ sourceSize: detail });\n }\n\n handleColumnSelected() {\n log.debug('handleColumnSelected');\n const { glEventHub } = this.props;\n glEventHub.emit(\n InputFilterEvent.COLUMN_SELECTED,\n this,\n DropdownFilterPanel.SOURCE_COLUMN\n );\n }\n\n handleClearAllFilters() {\n this.dropdownFilterRef.current.clearFilter();\n }\n\n /**\n * Set the filter value, card side, selected column\n * @param {Object} state Filter state to set\n * @param {boolean} sendUpdate Emit filters changed event if true\n */\n setPanelState(state, sendUpdate = false) {\n if (this.getSource() == null) {\n log.debug('Ignore state update for unlinked filter', state);\n return;\n }\n // Set the skipUpdate flag so the next onChange handler call doesn't emit the FILTERS_CHANGED event\n this.setState({ skipUpdate: !sendUpdate });\n\n // Changing the inputFilter state via props doesn't quite work because of the delays on manual input changes\n // Setting the ref state directly triggers the onChange handler and updates the panelState\n this.dropdownFilterRef.current?.setFilterState(state);\n }\n\n sendUpdate(name, type, value, timestamp) {\n const { glEventHub } = this.props;\n const sourcePanelId = this.getSource()?.panelId;\n const excludePanelIds = sourcePanelId === null ? [] : [sourcePanelId];\n log.debug('sendUpdate', {\n name,\n type,\n value,\n timestamp,\n excludePanelIds,\n });\n\n glEventHub.emit(InputFilterEvent.FILTERS_CHANGED, this, {\n name,\n type,\n value: value != null ? value : '=null',\n timestamp,\n excludePanelIds,\n });\n }\n\n updateValuesTable() {\n const source = this.getSource();\n const sourceTable = this.getSourceTable();\n log.debug('updateValuesTable', source, sourceTable);\n\n this.setState({\n values: [],\n valuesTable: null,\n error: null,\n });\n\n if (source == null) {\n log.debug('Filter unlinked.');\n this.setState({\n isLoading: false,\n isLoaded: true,\n isValueShown: false,\n sourceSize: 0,\n });\n return;\n }\n\n this.setState({ isLoading: true });\n\n if (sourceTable == null) {\n return;\n }\n\n this.setState({ isLoaded: false, sourceSize: sourceTable.size });\n\n this.pending\n .add(sourceTable.copy(), resolved => resolved.close())\n .then(valuesTable => {\n // Loading/loaded will be set when values array is actually populated\n this.updateViewportListener(valuesTable);\n this.setState({ valuesTable });\n })\n .catch(error => {\n if (PromiseUtils.isCancelled(error)) {\n return;\n }\n log.error(error);\n this.setState({ isLoading: false, error });\n });\n }\n\n applySourceSorts() {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n log.debug('applySourceSorts', sourceTable.sort);\n if (valuesTable == null) {\n log.debug('Table not initialized');\n return;\n }\n const sorts = [...sourceTable.sort];\n valuesTable.applySort(sorts);\n this.setViewport(valuesTable);\n }\n\n applySourceFilters() {\n const { valuesTable } = this.state;\n const sourceTable = this.getSourceTable();\n log.debug('applySourceFilters', sourceTable.filter);\n if (valuesTable == null) {\n log.debug('Table not initialized');\n return;\n }\n const filters = [...sourceTable.filter];\n valuesTable.applyFilter(filters);\n this.setViewport(valuesTable);\n }\n\n updateViewportListener(valuesTable) {\n log.debug('updateViewportListener', valuesTable?.size);\n\n if (this.cleanup) {\n this.cleanup();\n }\n\n if (valuesTable == null) {\n this.cleanup = null;\n return;\n }\n\n this.cleanup = valuesTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleValuesTableUpdate\n );\n\n this.setViewport(valuesTable);\n }\n\n setViewport(valuesTable) {\n const valuesColumn = this.getValuesColumn(valuesTable);\n valuesTable.setViewport(0, DropdownFilterPanel.MAX_TABLE_SIZE - 1, [\n valuesColumn,\n ]);\n }\n\n updateFormatterSettings(settings) {\n const columnFormats = FormatterUtils.getColumnFormats(settings);\n if (!deepEqual(this.columnFormats, columnFormats)) {\n this.columnFormats = columnFormats;\n this.setState({ formatter: new Formatter(columnFormats) });\n }\n }\n\n handleValuesTableUpdate({ detail }) {\n const { rows } = detail;\n const { valuesTable } = this.state;\n const valuesColumn = this.getValuesColumn(valuesTable);\n if (!valuesColumn) {\n log.error('Values column not found');\n return;\n }\n const values = rows.map(row => row.get(valuesColumn));\n this.setState({ values, isLoading: false, isLoaded: true, valuesColumn });\n }\n\n handleSourceMouseEnter() {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, DropdownFilterPanel.SOURCE_COLUMN);\n }\n\n handleSourceMouseLeave() {\n const { columnSelectionValidator } = this.props;\n if (!columnSelectionValidator) {\n return;\n }\n columnSelectionValidator(this, null);\n }\n\n render() {\n const {\n columns,\n disableLinking,\n glContainer,\n glEventHub,\n isLinkerActive,\n } = this.props;\n const {\n column,\n formatter,\n isDisconnected,\n isValueShown,\n value,\n values,\n valuesColumn,\n isLoading,\n isLoaded,\n } = this.state;\n\n const source = this.getSource();\n const settingsErrorMessage = this.getSettingsErrorMessage();\n const panelErrorMessage = this.getPanelErrorMessage();\n const formattedValues =\n isLoaded && valuesColumn != null\n ? this.getCachedValues(values, valuesColumn, formatter)\n : [];\n\n return (\n <WidgetPanel\n errorMessage={panelErrorMessage}\n isLoading={isLoading}\n isLoaded={isLoaded}\n isDisconnected={isDisconnected}\n className=\"iris-dropdown-filter-panel\"\n componentPanel={this}\n glContainer={glContainer}\n glEventHub={glEventHub}\n onClearAllFilters={this.handleClearAllFilters}\n widgetName=\"Dropdown Filter\"\n widgetType=\"DropdownFilter\"\n >\n <div\n ref={this.panelContainer}\n className=\"dropdown-filter-container h-100 w-100 container\"\n >\n <DropdownFilter\n ref={this.dropdownFilterRef}\n column={column}\n columns={columns}\n isValueShown={isValueShown}\n isLinkerActive={isLinkerActive}\n disableLinking={disableLinking}\n isLoaded={isLoaded}\n settingsError={settingsErrorMessage}\n source={source}\n value={value}\n values={formattedValues}\n onChange={this.handleChange}\n onColumnSelected={this.handleColumnSelected}\n onSourceMouseEnter={this.handleSourceMouseEnter}\n onSourceMouseLeave={this.handleSourceMouseLeave}\n />\n </div>\n </WidgetPanel>\n );\n }\n}\n\nDropdownFilterPanel.propTypes = {\n glContainer: GLPropTypes.Container.isRequired,\n glEventHub: GLPropTypes.EventHub.isRequired,\n panelState: PropTypes.shape({\n name: PropTypes.string,\n type: PropTypes.string,\n value: PropTypes.string,\n isValueShown: PropTypes.bool,\n }),\n isLinkerActive: PropTypes.bool.isRequired,\n columns: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n columnSelectionValidator: PropTypes.func,\n disableLinking: PropTypes.bool.isRequired,\n settings: PropTypes.shape({\n columnFormats: PropTypes.arrayOf(PropTypes.shape({})),\n }).isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n panelTableMap: PropTypes.instanceOf(Map).isRequired,\n // eslint-disable-next-line react/no-unused-prop-types\n dashboardLinks: UIPropTypes.Links.isRequired,\n};\n\nDropdownFilterPanel.defaultProps = {\n columnSelectionValidator: null,\n panelState: null,\n};\n\nDropdownFilterPanel.displayName = 'DropdownFilterPanel';\n\nconst mapStateToProps = (state, ownProps) => {\n const { localDashboardId } = ownProps;\n const panelId = LayoutUtils.getIdFromPanel({ props: ownProps });\n const panelTableMap = getTableMapForDashboard(state, localDashboardId);\n const dashboardLinks = getLinksForDashboard(state, localDashboardId);\n const activeTool = getActiveTool(state);\n const isolatedLinkerPanelId = getIsolatedLinkerPanelIdForDashboard(\n state,\n localDashboardId\n );\n const isLinkerActive =\n activeTool === ToolType.LINKER &&\n (isolatedLinkerPanelId === null || isolatedLinkerPanelId === panelId);\n // Disable linking if linker is in isolated mode for a different panel\n const disableLinking =\n activeTool === ToolType.LINKER &&\n isolatedLinkerPanelId !== null &&\n isolatedLinkerPanelId !== panelId;\n return {\n columns: getColumnsForDashboard(state, localDashboardId),\n columnSelectionValidator: getColumnSelectionValidatorForDashboard(\n state,\n localDashboardId\n ),\n isLinkerActive,\n disableLinking,\n settings: getSettings(state),\n panelTableMap,\n dashboardLinks,\n };\n};\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n DropdownFilterPanel\n);\n"],"file":"DropdownFilterPanel.js"}
@@ -1,4 +1,4 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
3
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
4
 
@@ -42,7 +42,7 @@ class FilterSetManager extends Component {
42
42
 
43
43
  _defineProperty(this, "editDropdownRef", /*#__PURE__*/React.createRef());
44
44
 
45
- _defineProperty(this, "isRenamingExistingSet", memoizeOne((filterSets, renameSet) => renameSet !== undefined && filterSets.some((_ref) => {
45
+ _defineProperty(this, "isRenamingExistingSet", memoizeOne((filterSets, renameSet) => renameSet !== undefined && filterSets.some(_ref => {
46
46
  var {
47
47
  id
48
48
  } = _ref;
@@ -145,7 +145,7 @@ class FilterSetManager extends Component {
145
145
  return;
146
146
  }
147
147
 
148
- if (!filterSets.some((_ref2) => {
148
+ if (!filterSets.some(_ref2 => {
149
149
  var {
150
150
  id
151
151
  } = _ref2;
@@ -275,7 +275,7 @@ class FilterSetManager extends Component {
275
275
  return 'Name cannot be empty';
276
276
  }
277
277
 
278
- if (renameSet !== undefined && modifiedFilterSets.some((_ref3) => {
278
+ if (renameSet !== undefined && modifiedFilterSets.some(_ref3 => {
279
279
  var {
280
280
  title,
281
281
  id
@@ -319,7 +319,7 @@ class FilterSetManager extends Component {
319
319
  title: trimmedName
320
320
  });
321
321
 
322
- var selectedIndex = modifiedFilterSets.findIndex((_ref4) => {
322
+ var selectedIndex = modifiedFilterSets.findIndex(_ref4 => {
323
323
  var {
324
324
  id
325
325
  } = _ref4;
@@ -348,7 +348,7 @@ class FilterSetManager extends Component {
348
348
  editId,
349
349
  modifiedFilterSets: prevFilterSets
350
350
  } = state;
351
- var selectedIndex = prevFilterSets.findIndex((_ref5) => {
351
+ var selectedIndex = prevFilterSets.findIndex(_ref5 => {
352
352
  var {
353
353
  id
354
354
  } = _ref5;
@@ -360,7 +360,7 @@ class FilterSetManager extends Component {
360
360
  return null;
361
361
  }
362
362
 
363
- var modifiedFilterSets = prevFilterSets.filter((_ref6) => {
363
+ var modifiedFilterSets = prevFilterSets.filter(_ref6 => {
364
364
  var {
365
365
  id
366
366
  } = _ref6;
@@ -383,7 +383,7 @@ class FilterSetManager extends Component {
383
383
  } = this.props;
384
384
  FilterSetManager.animateScreenFlash();
385
385
  var panels = getFilterState();
386
- this.setState((_ref7) => {
386
+ this.setState(_ref7 => {
387
387
  var {
388
388
  modifiedFilterSets: prevFilterSets,
389
389
  editId
@@ -395,7 +395,7 @@ class FilterSetManager extends Component {
395
395
  }
396
396
 
397
397
  var modifiedFilterSets = [...prevFilterSets];
398
- var selectedSetIndex = modifiedFilterSets.findIndex((_ref8) => {
398
+ var selectedSetIndex = modifiedFilterSets.findIndex(_ref8 => {
399
399
  var {
400
400
  id
401
401
  } = _ref8;
@@ -419,12 +419,12 @@ class FilterSetManager extends Component {
419
419
  }
420
420
 
421
421
  handleSetRename() {
422
- this.setState((_ref9) => {
422
+ this.setState(_ref9 => {
423
423
  var {
424
424
  editId,
425
425
  modifiedFilterSets
426
426
  } = _ref9;
427
- var selectedSet = modifiedFilterSets.find((_ref10) => {
427
+ var selectedSet = modifiedFilterSets.find(_ref10 => {
428
428
  var {
429
429
  id
430
430
  } = _ref10;
@@ -508,7 +508,7 @@ class FilterSetManager extends Component {
508
508
  return;
509
509
  }
510
510
 
511
- var filterSet = filterSets.find((_ref11) => {
511
+ var filterSet = filterSets.find(_ref11 => {
512
512
  var {
513
513
  id
514
514
  } = _ref11;
@@ -636,7 +636,7 @@ class FilterSetManager extends Component {
636
636
  }, isEmptyEditList && /*#__PURE__*/React.createElement("option", {
637
637
  value: "-1",
638
638
  disabled: true
639
- }, EMPTY_LIST_PLACEHOLDER), modifiedFilterSets.map((_ref12) => {
639
+ }, EMPTY_LIST_PLACEHOLDER), modifiedFilterSets.map(_ref12 => {
640
640
  var {
641
641
  id,
642
642
  title
@@ -698,7 +698,7 @@ class FilterSetManager extends Component {
698
698
  }, filterSets.length === 0 && /*#__PURE__*/React.createElement("option", {
699
699
  value: "-1",
700
700
  disabled: true
701
- }, EMPTY_LIST_PLACEHOLDER), filterSets.map((_ref13) => {
701
+ }, EMPTY_LIST_PLACEHOLDER), filterSets.map(_ref13 => {
702
702
  var {
703
703
  id,
704
704
  title
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/panels/FilterSetManager.tsx"],"names":["React","Component","memoizeOne","shortid","FontAwesomeIcon","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhICursor","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","log","module","NAME_INPUT_PLACEHOLDER","EMPTY_LIST_PLACEHOLDER","FilterSetManager","animateScreenFlash","overlay","document","createElement","classList","add","addEventListener","remove","querySelector","appendChild","constructor","props","createRef","filterSets","renameSet","undefined","some","id","handleSettingsCancel","bind","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleEditDropdownChange","handleFilterChange","handleFilterApply","handleCaptureNewSet","handleNameInputChange","handleNameInputKeyPress","handleRenameConfirm","handleRenameCancel","handleSetDelete","handleSetRename","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","componentDidMount","isValueShown","updateSelectedId","initSettingsScreen","componentDidUpdate","prevProps","prevState","isNameInputScreen","focusRenameInput","length","onChange","selectedId","debug","setState","isEmptyList","event","value","target","applyFilterSet","onUpdateSets","getFilterState","panels","title","getNameError","trimmedName","trim","error","namedFilterSet","selectedIndex","findIndex","updatedModifiedFilterSets","push","prevFilterSets","filter","newSelectedIndex","Math","max","min","newSelectedId","selectedSetIndex","selectedSet","find","stopPropagation","dropdownRef","current","focusInput","key","preventDefault","onApply","filterSet","focus","renameInputRef","render","isRenamingExistingSet","isEmptyEditList","isInitialScreen","isEditListScreen","captureSetIcon","updateSetIcon","editDropdownRef","map"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n ReactNode,\n KeyboardEvent,\n MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport shortid from 'shortid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n vsGear,\n vsSave,\n vsCircleSlash,\n vsTrash,\n vsDeviceCamera,\n dhICursor,\n dhRefresh,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsArrowSmallUp,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Button, CardFlip } from '@deephaven/components';\n\nimport './FilterSetManager.scss';\n\nconst log = Log.module('FilterSetManager');\n\nexport interface FilterSetPanel {\n id: string;\n state: unknown;\n}\n\nexport interface FilterSet {\n id: string;\n title: string;\n panels: FilterSetPanel[];\n}\n\nexport interface ChangeHandlerArgs {\n isValueShown: boolean;\n selectedId?: string;\n}\n\ninterface FilterSetManagerProps {\n isValueShown: boolean;\n selectedId?: string;\n filterSets: FilterSet[];\n getFilterState(): FilterSetPanel[];\n onChange(args: ChangeHandlerArgs): void;\n onApply(filterSet: FilterSet): void;\n onUpdateSets(filterSets: FilterSet[], editId?: string): void;\n}\n\ninterface FilterSetManagerState {\n nameInputValue: string;\n nameInputError?: string;\n editId?: string;\n renameSet?: FilterSet;\n // Unsaved set changes on the settings screen\n modifiedFilterSets: FilterSet[];\n}\n\nconst NAME_INPUT_PLACEHOLDER = 'Enter name...';\n\nconst EMPTY_LIST_PLACEHOLDER = 'No Available Filter Sets';\n\nclass FilterSetManager extends Component<\n FilterSetManagerProps,\n FilterSetManagerState\n> {\n static animateScreenFlash(): void {\n const overlay = document.createElement('div');\n overlay.classList.add('screen-flash-overlay');\n overlay.addEventListener('animationend', () => {\n // Removing the element removes its event listeners\n overlay.remove();\n });\n document.querySelector('body')?.appendChild(overlay);\n }\n\n constructor(props: FilterSetManagerProps) {\n super(props);\n\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleEditDropdownChange = this.handleEditDropdownChange.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleCaptureNewSet = this.handleCaptureNewSet.bind(this);\n this.handleNameInputChange = this.handleNameInputChange.bind(this);\n this.handleNameInputKeyPress = this.handleNameInputKeyPress.bind(this);\n this.handleRenameConfirm = this.handleRenameConfirm.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n\n this.handleSetDelete = this.handleSetDelete.bind(this);\n this.handleSetRename = this.handleSetRename.bind(this);\n this.handleSetUpdate = this.handleSetUpdate.bind(this);\n\n this.state = {\n editId: undefined,\n renameSet: undefined,\n nameInputValue: '',\n nameInputError: undefined,\n modifiedFilterSets: [],\n };\n }\n\n componentDidMount(): void {\n const { isValueShown } = this.props;\n if (isValueShown) {\n this.updateSelectedId();\n } else {\n this.initSettingsScreen();\n }\n }\n\n componentDidUpdate(\n prevProps: FilterSetManagerProps,\n prevState: FilterSetManagerState\n ): void {\n const { isValueShown, filterSets } = this.props;\n const { modifiedFilterSets } = this.state;\n\n if (prevProps.isValueShown && !isValueShown) {\n this.initSettingsScreen();\n }\n\n if (this.isNameInputScreen() && !this.isNameInputScreen(prevState)) {\n this.focusRenameInput();\n }\n\n if (filterSets !== prevProps.filterSets) {\n if (\n !isValueShown &&\n filterSets.length > 0 &&\n prevProps.filterSets.length === 0 &&\n modifiedFilterSets.length === 0\n ) {\n // Filter set added from another panel, flip from the settings side/initial screen to the value side\n const { onChange } = this.props;\n onChange({ isValueShown: true, selectedId: filterSets[0].id });\n } else {\n this.updateSelectedId();\n }\n }\n }\n\n private renameInputRef = React.createRef<HTMLInputElement>();\n\n private dropdownRef = React.createRef<HTMLSelectElement>();\n\n private editDropdownRef = React.createRef<HTMLSelectElement>();\n\n initSettingsScreen(): void {\n const { filterSets, selectedId } = this.props;\n log.debug('initSettingsScreen', filterSets, selectedId);\n this.setState({\n modifiedFilterSets: [...filterSets],\n editId: selectedId,\n });\n }\n\n // Update selected id without applying the new set on filterSets change\n updateSelectedId(): void {\n const { isValueShown, filterSets, selectedId, onChange } = this.props;\n log.debug('updateSelectedId', filterSets, selectedId);\n if (!isValueShown) {\n return;\n }\n if (!filterSets.some(({ id }) => id === selectedId)) {\n // Update the selection if selectedId doesn't exist in the list\n // Flip to the settings side for empty list to show the initial screen\n const isEmptyList = filterSets.length === 0;\n onChange({\n isValueShown: !isEmptyList,\n selectedId: isEmptyList ? undefined : filterSets[0].id,\n });\n }\n }\n\n handleEditDropdownChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: editId } = event.target;\n this.setState({ editId });\n }\n\n handleFilterChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: selectedId } = event.target;\n const { isValueShown, onChange } = this.props;\n this.applyFilterSet(selectedId);\n onChange({ isValueShown, selectedId });\n }\n\n handleFilterApply(): void {\n const { selectedId } = this.props;\n this.applyFilterSet(selectedId);\n }\n\n handleSettingsCancel(): void {\n const { onChange, selectedId, filterSets } = this.props;\n this.setState({ modifiedFilterSets: [] });\n // Flip the card to the filter set selection screen if the sets list isn't empty\n // Otherwise show the initial screen\n if (filterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleSettingsSave(): void {\n const { onChange, onUpdateSets, selectedId } = this.props;\n const { modifiedFilterSets, editId } = this.state;\n this.setState({ modifiedFilterSets: [] });\n log.debug('Update sets', modifiedFilterSets, editId);\n onUpdateSets(modifiedFilterSets, editId);\n // Don't flip the card to the filter set selection screen if the updated sets list is empty\n if (modifiedFilterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleCaptureNewSet(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const id = shortid();\n const panels = getFilterState();\n const renameSet = {\n id,\n title: '',\n panels,\n };\n log.debug('handleSetCreate', renameSet);\n this.setState({ nameInputValue: '', nameInputError: undefined, renameSet });\n }\n\n handleRenameCancel(): void {\n this.setState({ renameSet: undefined });\n }\n\n getNameError(nameInputValue: string): string | undefined {\n const { renameSet, modifiedFilterSets } = this.state;\n const trimmedName = nameInputValue?.trim() ?? '';\n if (trimmedName.length === 0) {\n log.debug('Name cannot be empty', trimmedName);\n return 'Name cannot be empty';\n }\n\n if (\n renameSet !== undefined &&\n modifiedFilterSets.some(\n ({ title, id }) => title === trimmedName && id !== renameSet.id\n )\n ) {\n log.debug('Set with this name already exists', trimmedName);\n return 'Set with this name already exists';\n }\n\n return undefined;\n }\n\n handleRenameConfirm(): void {\n const { nameInputValue, renameSet, modifiedFilterSets } = this.state;\n if (renameSet === undefined) {\n log.error('Renamed set undefined.');\n return;\n }\n const nameInputError = this.getNameError(nameInputValue);\n log.debug('handleRenameConfirm', nameInputValue, nameInputError);\n if (nameInputError !== undefined) {\n this.setState({ nameInputError });\n return;\n }\n const trimmedName = nameInputValue?.trim() ?? '';\n const namedFilterSet = { ...renameSet, title: trimmedName };\n const selectedIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === renameSet.id\n );\n const updatedModifiedFilterSets = [...modifiedFilterSets];\n\n if (selectedIndex >= 0) {\n updatedModifiedFilterSets[selectedIndex] = namedFilterSet;\n log.debug('Renamed existing set', updatedModifiedFilterSets);\n } else {\n updatedModifiedFilterSets.push(namedFilterSet);\n log.debug('Added new set to modified sets', updatedModifiedFilterSets);\n }\n\n this.setState({\n editId: namedFilterSet.id,\n modifiedFilterSets: updatedModifiedFilterSets,\n renameSet: undefined,\n });\n }\n\n handleSetDelete(): void {\n this.setState(state => {\n const { editId, modifiedFilterSets: prevFilterSets } = state;\n const selectedIndex = prevFilterSets.findIndex(({ id }) => id === editId);\n if (selectedIndex < 0) {\n log.error(\n 'Unable to find selected filterSet index',\n prevFilterSets,\n editId\n );\n return null;\n }\n const modifiedFilterSets = prevFilterSets.filter(\n ({ id }) => id !== editId\n );\n const newSelectedIndex = Math.max(\n 0,\n Math.min(modifiedFilterSets.length - 1, selectedIndex - 1)\n );\n const newSelectedId =\n modifiedFilterSets.length > 0\n ? modifiedFilterSets[newSelectedIndex].id\n : undefined;\n log.debug(\n 'Deleted selected set',\n editId,\n prevFilterSets,\n modifiedFilterSets\n );\n log.debug('New selection', newSelectedIndex, newSelectedId);\n return {\n modifiedFilterSets,\n editId: newSelectedId,\n };\n });\n }\n\n handleSetUpdate(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const panels = getFilterState();\n this.setState(({ modifiedFilterSets: prevFilterSets, editId }) => {\n if (editId === undefined) {\n log.error('Filter for update not selected.');\n return null;\n }\n const modifiedFilterSets = [...prevFilterSets];\n const selectedSetIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === editId\n );\n if (selectedSetIndex < 0) {\n log.error('Selected set for update not found.');\n return null;\n }\n // Clone selected set to avoid mutation of the props\n modifiedFilterSets[selectedSetIndex] = {\n ...modifiedFilterSets[selectedSetIndex],\n panels,\n };\n\n log.debug('Update set', modifiedFilterSets, panels);\n return {\n modifiedFilterSets,\n };\n });\n }\n\n handleSetRename(): void {\n this.setState(({ editId, modifiedFilterSets }) => {\n const selectedSet = modifiedFilterSets.find(({ id }) => id === editId);\n if (selectedSet === undefined) {\n log.error('Could not find selected set', editId, modifiedFilterSets);\n return null;\n }\n const { title } = selectedSet;\n return {\n nameInputValue: title,\n nameInputError: undefined,\n renameSet: selectedSet,\n };\n });\n }\n\n handleSettingsClick(event: MouseEvent): void {\n event.stopPropagation();\n const { onChange, selectedId } = this.props;\n onChange({ isValueShown: false, selectedId });\n }\n\n handleBackgroundClick(event: MouseEvent): void {\n log.debug('handleBackgroundClick');\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n handleNameInputChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value: nameInputValue } = event.target;\n const nameInputError = this.getNameError(nameInputValue);\n this.setState({ nameInputValue, nameInputError });\n }\n\n handleNameInputKeyPress(event: KeyboardEvent): void {\n const { key } = event;\n if (key === 'Enter') {\n event.preventDefault();\n this.handleRenameConfirm();\n }\n }\n\n isNameInputScreen(state = this.state): boolean {\n const { renameSet } = state;\n return renameSet !== undefined;\n }\n\n isRenamingExistingSet = memoizeOne(\n (filterSets: FilterSet[], renameSet?: FilterSet): boolean =>\n renameSet !== undefined &&\n filterSets.some(({ id }) => id === renameSet.id)\n );\n\n applyFilterSet(selectedId?: string): void {\n const { onApply, filterSets } = this.props;\n if (selectedId === undefined) {\n log.debug('No filter selected');\n return;\n }\n const filterSet = filterSets.find(({ id }) => id === selectedId);\n if (filterSet === undefined) {\n log.debug('Selected id not found in filterSets', selectedId, filterSets);\n return;\n }\n log.debug('Apply filterSet', filterSet);\n onApply(filterSet);\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n focusRenameInput(): void {\n this.renameInputRef.current?.focus();\n }\n\n render(): ReactNode {\n const {\n nameInputValue,\n nameInputError,\n editId,\n renameSet,\n modifiedFilterSets,\n } = this.state;\n const { isValueShown, filterSets, selectedId } = this.props;\n const isNameInputScreen = this.isNameInputScreen();\n const isRenamingExistingSet = this.isRenamingExistingSet(\n modifiedFilterSets,\n renameSet\n );\n const isEmptyEditList = modifiedFilterSets.length === 0;\n const isInitialScreen =\n !isNameInputScreen && isEmptyEditList && filterSets.length === 0;\n const isEditListScreen = !isNameInputScreen && !isInitialScreen;\n const captureSetIcon = (\n <div className=\"fa-layers mr-3\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhNewCircleLargeFilled}\n className=\"text-primary\"\n transform=\"shrink-6 down-5 right-7\"\n />\n </div>\n );\n const updateSetIcon = (\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={vsArrowSmallUp}\n transform=\"shrink-1 down-5 right-7\"\n />\n </div>\n );\n return (\n <div className=\"filter-set-manager fill-parent-absolute\">\n <CardFlip className=\"w-100 h-100\" isFlipped={isValueShown}>\n <div\n className=\"filter-set-manager-settings-card fill-parent-absolute\"\n key=\"front\"\n >\n <div className=\"filter-set-manager-card-content\">\n {isInitialScreen && (\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture filter set\n </Button>\n <div className=\"py-3 text-muted small\">\n Takes a snapshot of the currently applied filters on all\n panels, allowing you to restore saved filter sets later.\n </div>\n </div>\n )}\n\n {isNameInputScreen && (\n <div className=\"d-flex flex-column justify-content-center\">\n <div className=\"form-group\">\n <label>\n {isRenamingExistingSet\n ? 'Rename set'\n : 'Name captured set'}\n </label>\n <div className=\"name-input-container\">\n <input\n type=\"text\"\n className=\"input-set-name form-control\"\n placeholder={NAME_INPUT_PLACEHOLDER}\n value={nameInputValue}\n ref={this.renameInputRef}\n onChange={this.handleNameInputChange}\n onKeyPress={this.handleNameInputKeyPress}\n spellCheck=\"false\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameConfirm}\n tooltip=\"Save\"\n icon={vsSave}\n />\n\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameCancel}\n tooltip=\"Cancel\"\n icon={vsCircleSlash}\n />\n </div>\n {nameInputError && (\n <div className=\"error-message\">{nameInputError}</div>\n )}\n </div>\n </div>\n )}\n\n {isEditListScreen && (\n <div className=\"filter-set-manager-settings-grid-1\">\n <div className=\"form-group\">\n <label>Edit filter sets</label>\n <div className=\"filter-select-container\">\n <select\n ref={this.editDropdownRef}\n value={editId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleEditDropdownChange}\n disabled={isEmptyEditList}\n >\n {isEmptyEditList && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {modifiedFilterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </select>\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetUpdate}\n disabled={isEmptyEditList}\n icon={updateSetIcon}\n tooltip=\"Update\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetRename}\n disabled={isEmptyEditList}\n icon={dhICursor}\n tooltip=\"Rename\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetDelete}\n disabled={isEmptyEditList}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n </div>\n </div>\n\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture new filter set\n </Button>\n </div>\n\n <div className=\"py-3 text-right\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n >\n Cancel\n </Button>\n &nbsp;\n <Button kind=\"primary\" onClick={this.handleSettingsSave}>\n Save\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n <div\n className=\"filter-set-manager-value-card fill-parent-absolute\"\n key=\"back\"\n onClick={this.handleBackgroundClick}\n >\n <>\n <div className=\"filter-set-manager-column\">\n <div className=\"filter-set-manager-column-title\">\n Filter sets\n </div>\n </div>\n <div className=\"filter-set-manager-card-content\">\n <div className=\"filter-set-manager-value-input\">\n <div className=\"filter-select-container\">\n <select\n ref={this.dropdownRef}\n value={selectedId}\n className=\"custom-select filter-value-select\"\n onChange={this.handleFilterChange}\n >\n {filterSets.length === 0 && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {filterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </select>\n <Button\n kind=\"ghost\"\n onClick={this.handleFilterApply}\n icon={dhRefresh}\n tooltip=\"Apply Filter Set\"\n />\n </div>\n </div>\n </div>\n <div className=\"filter-set-manager-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n tooltip=\"Settings\"\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n />\n </div>\n </>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"file":"FilterSetManager.js"}
1
+ {"version":3,"sources":["../../src/panels/FilterSetManager.tsx"],"names":["React","Component","memoizeOne","shortid","FontAwesomeIcon","vsGear","vsSave","vsCircleSlash","vsTrash","vsDeviceCamera","dhICursor","dhRefresh","dhNewCircleLargeFilled","vsCircleLargeFilled","vsArrowSmallUp","Log","Button","CardFlip","log","module","NAME_INPUT_PLACEHOLDER","EMPTY_LIST_PLACEHOLDER","FilterSetManager","animateScreenFlash","overlay","document","createElement","classList","add","addEventListener","remove","querySelector","appendChild","constructor","props","createRef","filterSets","renameSet","undefined","some","id","handleSettingsCancel","bind","handleSettingsClick","handleSettingsSave","handleBackgroundClick","handleEditDropdownChange","handleFilterChange","handleFilterApply","handleCaptureNewSet","handleNameInputChange","handleNameInputKeyPress","handleRenameConfirm","handleRenameCancel","handleSetDelete","handleSetRename","handleSetUpdate","state","editId","nameInputValue","nameInputError","modifiedFilterSets","componentDidMount","isValueShown","updateSelectedId","initSettingsScreen","componentDidUpdate","prevProps","prevState","isNameInputScreen","focusRenameInput","length","onChange","selectedId","debug","setState","isEmptyList","event","value","target","applyFilterSet","onUpdateSets","getFilterState","panels","title","getNameError","trimmedName","trim","error","namedFilterSet","selectedIndex","findIndex","updatedModifiedFilterSets","push","prevFilterSets","filter","newSelectedIndex","Math","max","min","newSelectedId","selectedSetIndex","selectedSet","find","stopPropagation","dropdownRef","current","focusInput","key","preventDefault","onApply","filterSet","focus","renameInputRef","render","isRenamingExistingSet","isEmptyEditList","isInitialScreen","isEditListScreen","captureSetIcon","updateSetIcon","editDropdownRef","map"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/click-events-have-key-events */\n/* eslint-disable jsx-a11y/no-static-element-interactions */\n// background click is just a convenience method, not an actual a11y issue\n\nimport React, {\n ChangeEvent,\n Component,\n ReactNode,\n KeyboardEvent,\n MouseEvent,\n} from 'react';\nimport memoizeOne from 'memoize-one';\nimport shortid from 'shortid';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n vsGear,\n vsSave,\n vsCircleSlash,\n vsTrash,\n vsDeviceCamera,\n dhICursor,\n dhRefresh,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsArrowSmallUp,\n} from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { Button, CardFlip } from '@deephaven/components';\n\nimport './FilterSetManager.scss';\n\nconst log = Log.module('FilterSetManager');\n\nexport interface FilterSetPanel {\n id: string;\n state: unknown;\n}\n\nexport interface FilterSet {\n id: string;\n title: string;\n panels: FilterSetPanel[];\n}\n\nexport interface ChangeHandlerArgs {\n isValueShown: boolean;\n selectedId?: string;\n}\n\ninterface FilterSetManagerProps {\n isValueShown: boolean;\n selectedId?: string;\n filterSets: FilterSet[];\n getFilterState(): FilterSetPanel[];\n onChange(args: ChangeHandlerArgs): void;\n onApply(filterSet: FilterSet): void;\n onUpdateSets(filterSets: FilterSet[], editId?: string): void;\n}\n\ninterface FilterSetManagerState {\n nameInputValue: string;\n nameInputError?: string;\n editId?: string;\n renameSet?: FilterSet;\n // Unsaved set changes on the settings screen\n modifiedFilterSets: FilterSet[];\n}\n\nconst NAME_INPUT_PLACEHOLDER = 'Enter name...';\n\nconst EMPTY_LIST_PLACEHOLDER = 'No Available Filter Sets';\n\nclass FilterSetManager extends Component<\n FilterSetManagerProps,\n FilterSetManagerState\n> {\n static animateScreenFlash(): void {\n const overlay = document.createElement('div');\n overlay.classList.add('screen-flash-overlay');\n overlay.addEventListener('animationend', () => {\n // Removing the element removes its event listeners\n overlay.remove();\n });\n document.querySelector('body')?.appendChild(overlay);\n }\n\n constructor(props: FilterSetManagerProps) {\n super(props);\n\n this.handleSettingsCancel = this.handleSettingsCancel.bind(this);\n this.handleSettingsClick = this.handleSettingsClick.bind(this);\n this.handleSettingsSave = this.handleSettingsSave.bind(this);\n this.handleBackgroundClick = this.handleBackgroundClick.bind(this);\n this.handleEditDropdownChange = this.handleEditDropdownChange.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterApply = this.handleFilterApply.bind(this);\n this.handleCaptureNewSet = this.handleCaptureNewSet.bind(this);\n this.handleNameInputChange = this.handleNameInputChange.bind(this);\n this.handleNameInputKeyPress = this.handleNameInputKeyPress.bind(this);\n this.handleRenameConfirm = this.handleRenameConfirm.bind(this);\n this.handleRenameCancel = this.handleRenameCancel.bind(this);\n\n this.handleSetDelete = this.handleSetDelete.bind(this);\n this.handleSetRename = this.handleSetRename.bind(this);\n this.handleSetUpdate = this.handleSetUpdate.bind(this);\n\n this.state = {\n editId: undefined,\n renameSet: undefined,\n nameInputValue: '',\n nameInputError: undefined,\n modifiedFilterSets: [],\n };\n }\n\n componentDidMount(): void {\n const { isValueShown } = this.props;\n if (isValueShown) {\n this.updateSelectedId();\n } else {\n this.initSettingsScreen();\n }\n }\n\n componentDidUpdate(\n prevProps: FilterSetManagerProps,\n prevState: FilterSetManagerState\n ): void {\n const { isValueShown, filterSets } = this.props;\n const { modifiedFilterSets } = this.state;\n\n if (prevProps.isValueShown && !isValueShown) {\n this.initSettingsScreen();\n }\n\n if (this.isNameInputScreen() && !this.isNameInputScreen(prevState)) {\n this.focusRenameInput();\n }\n\n if (filterSets !== prevProps.filterSets) {\n if (\n !isValueShown &&\n filterSets.length > 0 &&\n prevProps.filterSets.length === 0 &&\n modifiedFilterSets.length === 0\n ) {\n // Filter set added from another panel, flip from the settings side/initial screen to the value side\n const { onChange } = this.props;\n onChange({ isValueShown: true, selectedId: filterSets[0].id });\n } else {\n this.updateSelectedId();\n }\n }\n }\n\n private renameInputRef = React.createRef<HTMLInputElement>();\n\n private dropdownRef = React.createRef<HTMLSelectElement>();\n\n private editDropdownRef = React.createRef<HTMLSelectElement>();\n\n initSettingsScreen(): void {\n const { filterSets, selectedId } = this.props;\n log.debug('initSettingsScreen', filterSets, selectedId);\n this.setState({\n modifiedFilterSets: [...filterSets],\n editId: selectedId,\n });\n }\n\n // Update selected id without applying the new set on filterSets change\n updateSelectedId(): void {\n const { isValueShown, filterSets, selectedId, onChange } = this.props;\n log.debug('updateSelectedId', filterSets, selectedId);\n if (!isValueShown) {\n return;\n }\n if (!filterSets.some(({ id }) => id === selectedId)) {\n // Update the selection if selectedId doesn't exist in the list\n // Flip to the settings side for empty list to show the initial screen\n const isEmptyList = filterSets.length === 0;\n onChange({\n isValueShown: !isEmptyList,\n selectedId: isEmptyList ? undefined : filterSets[0].id,\n });\n }\n }\n\n handleEditDropdownChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: editId } = event.target;\n this.setState({ editId });\n }\n\n handleFilterChange(event: ChangeEvent<HTMLSelectElement>): void {\n const { value: selectedId } = event.target;\n const { isValueShown, onChange } = this.props;\n this.applyFilterSet(selectedId);\n onChange({ isValueShown, selectedId });\n }\n\n handleFilterApply(): void {\n const { selectedId } = this.props;\n this.applyFilterSet(selectedId);\n }\n\n handleSettingsCancel(): void {\n const { onChange, selectedId, filterSets } = this.props;\n this.setState({ modifiedFilterSets: [] });\n // Flip the card to the filter set selection screen if the sets list isn't empty\n // Otherwise show the initial screen\n if (filterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleSettingsSave(): void {\n const { onChange, onUpdateSets, selectedId } = this.props;\n const { modifiedFilterSets, editId } = this.state;\n this.setState({ modifiedFilterSets: [] });\n log.debug('Update sets', modifiedFilterSets, editId);\n onUpdateSets(modifiedFilterSets, editId);\n // Don't flip the card to the filter set selection screen if the updated sets list is empty\n if (modifiedFilterSets.length > 0) {\n onChange({ isValueShown: true, selectedId });\n }\n }\n\n handleCaptureNewSet(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const id = shortid();\n const panels = getFilterState();\n const renameSet = {\n id,\n title: '',\n panels,\n };\n log.debug('handleSetCreate', renameSet);\n this.setState({ nameInputValue: '', nameInputError: undefined, renameSet });\n }\n\n handleRenameCancel(): void {\n this.setState({ renameSet: undefined });\n }\n\n getNameError(nameInputValue: string): string | undefined {\n const { renameSet, modifiedFilterSets } = this.state;\n const trimmedName = nameInputValue?.trim() ?? '';\n if (trimmedName.length === 0) {\n log.debug('Name cannot be empty', trimmedName);\n return 'Name cannot be empty';\n }\n\n if (\n renameSet !== undefined &&\n modifiedFilterSets.some(\n ({ title, id }) => title === trimmedName && id !== renameSet.id\n )\n ) {\n log.debug('Set with this name already exists', trimmedName);\n return 'Set with this name already exists';\n }\n\n return undefined;\n }\n\n handleRenameConfirm(): void {\n const { nameInputValue, renameSet, modifiedFilterSets } = this.state;\n if (renameSet === undefined) {\n log.error('Renamed set undefined.');\n return;\n }\n const nameInputError = this.getNameError(nameInputValue);\n log.debug('handleRenameConfirm', nameInputValue, nameInputError);\n if (nameInputError !== undefined) {\n this.setState({ nameInputError });\n return;\n }\n const trimmedName = nameInputValue?.trim() ?? '';\n const namedFilterSet = { ...renameSet, title: trimmedName };\n const selectedIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === renameSet.id\n );\n const updatedModifiedFilterSets = [...modifiedFilterSets];\n\n if (selectedIndex >= 0) {\n updatedModifiedFilterSets[selectedIndex] = namedFilterSet;\n log.debug('Renamed existing set', updatedModifiedFilterSets);\n } else {\n updatedModifiedFilterSets.push(namedFilterSet);\n log.debug('Added new set to modified sets', updatedModifiedFilterSets);\n }\n\n this.setState({\n editId: namedFilterSet.id,\n modifiedFilterSets: updatedModifiedFilterSets,\n renameSet: undefined,\n });\n }\n\n handleSetDelete(): void {\n this.setState(state => {\n const { editId, modifiedFilterSets: prevFilterSets } = state;\n const selectedIndex = prevFilterSets.findIndex(({ id }) => id === editId);\n if (selectedIndex < 0) {\n log.error(\n 'Unable to find selected filterSet index',\n prevFilterSets,\n editId\n );\n return null;\n }\n const modifiedFilterSets = prevFilterSets.filter(\n ({ id }) => id !== editId\n );\n const newSelectedIndex = Math.max(\n 0,\n Math.min(modifiedFilterSets.length - 1, selectedIndex - 1)\n );\n const newSelectedId =\n modifiedFilterSets.length > 0\n ? modifiedFilterSets[newSelectedIndex].id\n : undefined;\n log.debug(\n 'Deleted selected set',\n editId,\n prevFilterSets,\n modifiedFilterSets\n );\n log.debug('New selection', newSelectedIndex, newSelectedId);\n return {\n modifiedFilterSets,\n editId: newSelectedId,\n };\n });\n }\n\n handleSetUpdate(): void {\n const { getFilterState } = this.props;\n FilterSetManager.animateScreenFlash();\n const panels = getFilterState();\n this.setState(({ modifiedFilterSets: prevFilterSets, editId }) => {\n if (editId === undefined) {\n log.error('Filter for update not selected.');\n return null;\n }\n const modifiedFilterSets = [...prevFilterSets];\n const selectedSetIndex = modifiedFilterSets.findIndex(\n ({ id }) => id === editId\n );\n if (selectedSetIndex < 0) {\n log.error('Selected set for update not found.');\n return null;\n }\n // Clone selected set to avoid mutation of the props\n modifiedFilterSets[selectedSetIndex] = {\n ...modifiedFilterSets[selectedSetIndex],\n panels,\n };\n\n log.debug('Update set', modifiedFilterSets, panels);\n return {\n modifiedFilterSets,\n };\n });\n }\n\n handleSetRename(): void {\n this.setState(({ editId, modifiedFilterSets }) => {\n const selectedSet = modifiedFilterSets.find(({ id }) => id === editId);\n if (selectedSet === undefined) {\n log.error('Could not find selected set', editId, modifiedFilterSets);\n return null;\n }\n const { title } = selectedSet;\n return {\n nameInputValue: title,\n nameInputError: undefined,\n renameSet: selectedSet,\n };\n });\n }\n\n handleSettingsClick(event: MouseEvent): void {\n event.stopPropagation();\n const { onChange, selectedId } = this.props;\n onChange({ isValueShown: false, selectedId });\n }\n\n handleBackgroundClick(event: MouseEvent): void {\n log.debug('handleBackgroundClick');\n // allow clicking anywhere in the background to select and focus the input\n if (event.target !== this.dropdownRef.current) {\n this.focusInput();\n }\n }\n\n handleNameInputChange(event: ChangeEvent<HTMLInputElement>): void {\n const { value: nameInputValue } = event.target;\n const nameInputError = this.getNameError(nameInputValue);\n this.setState({ nameInputValue, nameInputError });\n }\n\n handleNameInputKeyPress(event: KeyboardEvent): void {\n const { key } = event;\n if (key === 'Enter') {\n event.preventDefault();\n this.handleRenameConfirm();\n }\n }\n\n isNameInputScreen(state = this.state): boolean {\n const { renameSet } = state;\n return renameSet !== undefined;\n }\n\n isRenamingExistingSet = memoizeOne(\n (filterSets: FilterSet[], renameSet?: FilterSet): boolean =>\n renameSet !== undefined &&\n filterSets.some(({ id }) => id === renameSet.id)\n );\n\n applyFilterSet(selectedId?: string): void {\n const { onApply, filterSets } = this.props;\n if (selectedId === undefined) {\n log.debug('No filter selected');\n return;\n }\n const filterSet = filterSets.find(({ id }) => id === selectedId);\n if (filterSet === undefined) {\n log.debug('Selected id not found in filterSets', selectedId, filterSets);\n return;\n }\n log.debug('Apply filterSet', filterSet);\n onApply(filterSet);\n }\n\n focusInput(): void {\n this.dropdownRef.current?.focus();\n }\n\n focusRenameInput(): void {\n this.renameInputRef.current?.focus();\n }\n\n render(): ReactNode {\n const {\n nameInputValue,\n nameInputError,\n editId,\n renameSet,\n modifiedFilterSets,\n } = this.state;\n const { isValueShown, filterSets, selectedId } = this.props;\n const isNameInputScreen = this.isNameInputScreen();\n const isRenamingExistingSet = this.isRenamingExistingSet(\n modifiedFilterSets,\n renameSet\n );\n const isEmptyEditList = modifiedFilterSets.length === 0;\n const isInitialScreen =\n !isNameInputScreen && isEmptyEditList && filterSets.length === 0;\n const isEditListScreen = !isNameInputScreen && !isInitialScreen;\n const captureSetIcon = (\n <div className=\"fa-layers mr-3\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhNewCircleLargeFilled}\n className=\"text-primary\"\n transform=\"shrink-6 down-5 right-7\"\n />\n </div>\n );\n const updateSetIcon = (\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={vsDeviceCamera}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={vsArrowSmallUp}\n transform=\"shrink-1 down-5 right-7\"\n />\n </div>\n );\n return (\n <div className=\"filter-set-manager fill-parent-absolute\">\n <CardFlip className=\"w-100 h-100\" isFlipped={isValueShown}>\n <div\n className=\"filter-set-manager-settings-card fill-parent-absolute\"\n key=\"front\"\n >\n <div className=\"filter-set-manager-card-content\">\n {isInitialScreen && (\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture filter set\n </Button>\n <div className=\"py-3 text-muted small\">\n Takes a snapshot of the currently applied filters on all\n panels, allowing you to restore saved filter sets later.\n </div>\n </div>\n )}\n\n {isNameInputScreen && (\n <div className=\"d-flex flex-column justify-content-center\">\n <div className=\"form-group\">\n <label>\n {isRenamingExistingSet\n ? 'Rename set'\n : 'Name captured set'}\n </label>\n <div className=\"name-input-container\">\n <input\n type=\"text\"\n className=\"input-set-name form-control\"\n placeholder={NAME_INPUT_PLACEHOLDER}\n value={nameInputValue}\n ref={this.renameInputRef}\n onChange={this.handleNameInputChange}\n onKeyPress={this.handleNameInputKeyPress}\n spellCheck=\"false\"\n />\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameConfirm}\n tooltip=\"Save\"\n icon={vsSave}\n />\n\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline pt-2 pb-2\"\n onClick={this.handleRenameCancel}\n tooltip=\"Cancel\"\n icon={vsCircleSlash}\n />\n </div>\n {nameInputError && (\n <div className=\"error-message\">{nameInputError}</div>\n )}\n </div>\n </div>\n )}\n\n {isEditListScreen && (\n <div className=\"filter-set-manager-settings-grid-1\">\n <div className=\"form-group\">\n <label>Edit filter sets</label>\n <div className=\"filter-select-container\">\n <select\n ref={this.editDropdownRef}\n value={editId ?? '-1'}\n className=\"custom-select filter-value-select\"\n onChange={this.handleEditDropdownChange}\n disabled={isEmptyEditList}\n >\n {isEmptyEditList && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {modifiedFilterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </select>\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetUpdate}\n disabled={isEmptyEditList}\n icon={updateSetIcon}\n tooltip=\"Update\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetRename}\n disabled={isEmptyEditList}\n icon={dhICursor}\n tooltip=\"Rename\"\n />\n\n <Button\n kind=\"ghost\"\n onClick={this.handleSetDelete}\n disabled={isEmptyEditList}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n </div>\n </div>\n\n <div>\n <Button\n kind=\"ghost\"\n className=\"btn btn-link no-underline\"\n onClick={this.handleCaptureNewSet}\n icon={captureSetIcon}\n >\n Capture new filter set\n </Button>\n </div>\n\n <div className=\"py-3 text-right\">\n <Button\n kind=\"secondary\"\n onClick={this.handleSettingsCancel}\n >\n Cancel\n </Button>\n &nbsp;\n <Button kind=\"primary\" onClick={this.handleSettingsSave}>\n Save\n </Button>\n </div>\n </div>\n )}\n </div>\n </div>\n <div\n className=\"filter-set-manager-value-card fill-parent-absolute\"\n key=\"back\"\n onClick={this.handleBackgroundClick}\n >\n <>\n <div className=\"filter-set-manager-column\">\n <div className=\"filter-set-manager-column-title\">\n Filter sets\n </div>\n </div>\n <div className=\"filter-set-manager-card-content\">\n <div className=\"filter-set-manager-value-input\">\n <div className=\"filter-select-container\">\n <select\n ref={this.dropdownRef}\n value={selectedId}\n className=\"custom-select filter-value-select\"\n onChange={this.handleFilterChange}\n >\n {filterSets.length === 0 && (\n <option value=\"-1\" disabled>\n {EMPTY_LIST_PLACEHOLDER}\n </option>\n )}\n {filterSets.map(({ id, title }) => (\n <option key={id} value={id}>\n {title}\n </option>\n ))}\n </select>\n <Button\n kind=\"ghost\"\n onClick={this.handleFilterApply}\n icon={dhRefresh}\n tooltip=\"Apply Filter Set\"\n />\n </div>\n </div>\n </div>\n <div className=\"filter-set-manager-menu\">\n <Button\n kind=\"ghost\"\n className=\"btn btn-link btn-link-icon m-2 px-2\"\n onClick={this.handleSettingsClick}\n tooltip=\"Settings\"\n icon={<FontAwesomeIcon icon={vsGear} transform=\"grow-4\" />}\n />\n </div>\n </>\n </div>\n </CardFlip>\n </div>\n );\n }\n}\n\nexport default FilterSetManager;\n"],"file":"FilterSetManager.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterSetManagerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":[],"mappings":";;AA0BA;IACE,yBAA2C;IAE3C,uEAOC;IAED,uEAUC;IAED,wBAoBC;IA4FD;;;aAIC;IAED,wCAsBC;IAED,qEAeC;IAjDD,8BAEC;IAvFD,wBAkDC;IAED;;;aA+BC;IAqDD,yBAQC;IAED,qDAsBC;IAGD,sDAGC;CA4BF"}
1
+ {"version":3,"file":"FilterSetManagerPanel.d.ts","sourceRoot":"","sources":["../../src/panels/FilterSetManagerPanel.jsx"],"names":[],"mappings":";;AA0BA;IACE,yBAA2C;IAE3C,uEAOC;IAED,uEAUC;IAED,wBAoBC;IA2FD;;;aAIC;IAED,wCAsBC;IAED,qEAeC;IAjDD,8BAEC;IAtFD,wBAkDC;IAED;;;aA8BC;IAqDD,yBAQC;IAED,qDAsBC;IAGD,sDAGC;CA4BF"}
@@ -17,7 +17,7 @@ var log = Log.module('FilterSetManagerPanel');
17
17
 
18
18
  class FilterSetManagerPanel extends Component {
19
19
  static changeFilterColumnNamesToIndexes(table, configs) {
20
- return configs.map((_ref) => {
20
+ return configs.map(_ref => {
21
21
  var {
22
22
  name,
23
23
  filter
@@ -28,7 +28,7 @@ class FilterSetManagerPanel extends Component {
28
28
  }
29
29
 
30
30
  static changeFilterIndexesToColumnNames(table, configs) {
31
- return configs.map((_ref2) => {
31
+ return configs.map(_ref2 => {
32
32
  var [index, filter] = _ref2;
33
33
 
34
34
  if (index >= table.columns.length) {
@@ -166,9 +166,9 @@ class FilterSetManagerPanel extends Component {
166
166
  advancedFilters: indexedAdvancedFilters = [],
167
167
  quickFilters: indexedQuickFilters = []
168
168
  } = irisGridState !== null && irisGridState !== void 0 ? irisGridState : {};
169
- var dehydratedAdvancedFilters = IrisGridUtils.dehydrateAdvancedFilters(table, indexedAdvancedFilters);
169
+ var dehydratedAdvancedFilters = IrisGridUtils.dehydrateAdvancedFilters(table.columns, indexedAdvancedFilters);
170
170
  var advancedFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, dehydratedAdvancedFilters);
171
- var dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(table, indexedQuickFilters);
171
+ var dehydratedQuickFilters = IrisGridUtils.dehydrateQuickFilters(indexedQuickFilters);
172
172
  var quickFilters = FilterSetManagerPanel.changeFilterIndexesToColumnNames(table, dehydratedQuickFilters);
173
173
  return {
174
174
  advancedFilters,
@@ -201,7 +201,7 @@ class FilterSetManagerPanel extends Component {
201
201
  panels
202
202
  } = filterSet;
203
203
  log.debug("Apply filters from filter set", filterSet);
204
- panels.forEach((_ref4) => {
204
+ panels.forEach(_ref4 => {
205
205
  var {
206
206
  panelId,
207
207
  type,
@@ -240,7 +240,7 @@ class FilterSetManagerPanel extends Component {
240
240
  selectedId
241
241
  } = this.state; // Only change the selected filter if the previous selection was deleted
242
242
 
243
- var prevSelection = modifiedFilterSets.find((_ref5) => {
243
+ var prevSelection = modifiedFilterSets.find(_ref5 => {
244
244
  var {
245
245
  id
246
246
  } = _ref5;
@@ -260,7 +260,7 @@ class FilterSetManagerPanel extends Component {
260
260
  }
261
261
 
262
262
  updatePanelState() {
263
- this.setState((_ref6) => {
263
+ this.setState(_ref6 => {
264
264
  var {
265
265
  selectedId,
266
266
  isValueShown