@deephaven/iris-grid 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/IrisGrid.jsx"],"names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","connect","Log","FontAwesomeIcon","ContextActionUtils","ContextActions","DeephavenSpinner","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Grid","GridRange","GridUtils","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsCloudDownload","vsFilter","vsMenu","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","dh","APIPropTypes","getSettings","Pending","PromiseUtils","ValidationError","throttle","debounce","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridSortMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","IrisGridTheme","ColumnStatistics","Formatter","FormatterUtils","TableUtils","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","IrisGridUtils","CrossColumnSearch","IrisGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","log","module","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","isEmptyConfig","advancedFilters","quickFilters","sorts","customColumns","reverseType","searchFilter","size","length","REVERSE_TYPE","NONE","IrisGrid","props","column","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","handleAdvancedFilterChange","handleAdvancedFilterSortChange","handleAdvancedFilterDone","isChartBuilderAvailable","isCustomColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","isFilterBarShown","showSearchBar","optionItems","push","type","CHART_BUILDER","title","icon","VISIBILITY_ORDERING_BUILDER","CUSTOM_COLUMN_BUILDER","ROLLUP_ROWS","AGGREGATIONS","SELECT_DISTINCT","TABLE_EXPORTER","ADVANCED_SETTINGS","QUICK_FILTERS","subtitle","shortcut","getDisplayText","isOn","onChange","action","SEARCH_BAR","hiddenColumns","normalizer","join","columns","aggregations","aggregationMap","forEach","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","name","newOperations","map","o","originalColumns","config","aggregationSettings","getModelRollupConfig","showOnTop","getOperationMap","operationOrder","getOperationOrder","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","rollupConfig","customFilters","partitionFilters","getFiltersFromFilterMap","isEditable","autoSelectRow","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleUpdate","handleTooltipRef","handleViewChanged","handleFormatSelection","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadProgressUpdate","handleDownloadCompleted","handlePartitionAppend","handlePartitionChange","handlePartitionFetchAll","handlePartitionDone","handleColumnVisibilityChanged","handleCrossColumnSearch","handleRollupChange","updateSearchFilter","grid","gridWrapper","lastFocusedFilterBarColumn","lastLoadedConfig","tooltip","pending","globalColumnFormats","dateTimeFormatterOptions","loadingScrimStartTime","loadingScrimFinishTime","loadingTimer","renderer","tableSaver","crossColumnRef","createRef","isAnimating","animationFrame","filterInputRef","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","discardAction","discardPending","error","INPUT_TABLE","DISCARD","commitAction","commitPending","COMMIT","contextActions","keyHandlers","mouseHandlers","customColumnFormatMap","isSelectingPartition","movedColumns","movedRows","partition","partitionColumn","userColumnWidths","userRowHeights","searchValue","selectedSearchColumns","invertSearchColumns","selectDistinctColumns","pendingDataMap","metricCalculator","Map","searchColumns","createSearchFilter","state","focusedFilterBarColumn","metrics","partitionTable","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","loadingSpinnerShown","shownColumnTooltip","isMenuShown","isTableDownloading","isReady","tableDownloadStatus","tableDownloadProgress","tableDownloadEstimatedTime","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingDataErrors","pendingSavePromise","pendingSaveError","toastMessage","find","c","isPartitionColumn","isFilterRequired","isValuesTableAvailable","loadPartitionsTable","initState","startListening","prevProps","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","applyInputFilters","resetColumnSelection","updateFormatterSettings","startLoading","window","requestAnimationFrame","now","Date","currentTime","totalTime","Math","min","setState","debug2","sendStateChange","cancel","clearTimeout","cancelAnimationFrame","columnIndex","rowIndex","rawValue","modelColumn","getModelColumn","modelRow","getModelRow","valueForCell","textForCell","modelColumns","modelRows","getCachedTheme","modelIndex","getVisibleIndex","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","value","findIndex","columnName","columnType","applyQuickFilter","trim","quickFilter","text","makeQuickFilter","err","set","options","debug","filterMap","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","setQuickFilter","index","isNull","filterValue","isTextType","FilterValue","ofString","ofNumber","eq","current","setValue","key","makeAdvancedFilter","forceUpdate","getColumnFormats","getDateTimeFormatterOptions","isColumnFormatChanged","isDateFormattingChanged","updateFormatter","rebuildFilters","updatedFormats","update","mergedColumnFormats","values","applyInputFiltersOnInit","inputFiltersWithValues","initFormatter","add","valuesTable","resolved","close","sort","desc","applySort","setViewport","getViewportData","data","rows","row","updatePartition","info","handleTableLoadError","partitionFilter","getValueForCell","copyToClipboard","e","ranges","includeHeaders","formatValues","boundedRanges","columnCount","rowCount","resetRanges","theme","getTheme","clearSelectedRanges","setViewState","top","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","addEventListener","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","removeEventListener","isFilterable","gridX","left","rightVisible","lastLeft","metricState","getMetricState","newLeft","getLastLeft","columnVisibleIndex","setColumnWidth","getModelIndex","modelIndexes","visibilityOption","VISIBILITY_OPTIONS","SHOW","resetColumnWidth","updateCanvasScale","updateCanvas","onPartitionAppend","isCanceled","onError","entries","i","columnWidth","addToExisting","currentSorts","toggleSortForColumn","table","direction","isAbs","sortColumn","isReversible","focusIndex","focusFilterBar","focus","Error","document","activeElement","classList","contains","newPendingSavePromise","then","onColumnSelected","dataMap","onDataSelected","setAdvancedFilter","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","rollback","onCreateChart","warn","setGridFocus","defocusInput","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","newOptions","pop","option","event","detail","stopLoading","canRollback","bottomViewport","selectionEndRow","bottomNonFloating","floatingBottomRowCount","floatingTopRowCount","onSelectionChanged","onChangeApplied","startTimer","oldCustomColumns","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","newMovedColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","aggregation","AGGREGATION_EDIT","resetGridViewState","showAllColumns","columnNames","DOWNLOAD_STATUS","INITIATING","args","startDownload","DOWNLOADING","cancelDownload","FINISHED","CANCELED","columnAllowedCursor","cursor","CURSOR_TYPE_DEFAULT","topOffset","leftOffset","irisGridState","gridState","onStateChange","children","getDownloadWorker","onlyFetchVisibleColumns","alwaysFetchColumns","onAdvancedSettingsChange","getCachedFilter","stateOverride","getCachedStateOverride","bottom","right","isVisible","width","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridY","visibleColumnXs","visibleColumnWidths","columnX","x","y","filterBarHeight","fieldWidth","fieldHeight","style","minWidth","isValid","advancedFilter","isBarFiltered","active","handleContextMenu","loadingElement","loadingStatus","loader","cancelButton","show","columnTooltip","columnHeaderHeight","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","filterBar","visibleColumns","isFilterSet","isFilterVisible","element","hidden","advancedFilterMenus","xColumnHeader","xFilterBar","getAdvancedMenuOpenedHandler","getCachedAdvancedFilterMenuActions","getCachedOptionItems","openOptionsStack","getCachedHiddenColumns","getHiddenColumns","transitionSlowMs","displayString","getModelTotalsConfig","transitionMidMs","propTypes","node","instanceOf","arrayOf","string","bool","shape","from","number","isRequired","to","func","Column","showConstituents","showNonAggregatedColumns","includeDescriptions","columnSelectionValidator","columnNotAllowedCursor","onContextMenu","defaultProps","Promise","reject","mapStateToProps","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'deep-equal';\nimport { connect } from 'react-redux';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActionUtils,\n ContextActions,\n DeephavenSpinner,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n} from '@deephaven/components';\nimport { Grid, GridRange, GridUtils } from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsCloudDownload,\n vsFilter,\n vsMenu,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport dh, { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport { getSettings } from '@deephaven/redux';\nimport { Pending, PromiseUtils, ValidationError } from '@deephaven/utils';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridSortMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport IrisGridTheme from './IrisGridTheme';\nimport ColumnStatistics from './ColumnStatistics';\nimport './IrisGrid.scss';\nimport Formatter from './Formatter';\nimport FormatterUtils from './FormatterUtils';\nimport TableUtils from './TableUtils';\nimport AdvancedFilterCreator from './AdvancedFilterCreator';\nimport {\n Aggregations,\n AggregationEdit,\n AggregationUtils,\n ChartBuilder,\n CustomColumnBuilder,\n OptionType,\n RollupRows,\n TableCsvExporter,\n TableSaver,\n VisibilityOrderingBuilder,\n} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\n\nconst log = Log.module('IrisGrid');\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nfunction isEmptyConfig({\n advancedFilters,\n quickFilters,\n sorts,\n customColumns,\n reverseType,\n searchFilter,\n}) {\n return (\n advancedFilters.size === 0 &&\n quickFilters.size === 0 &&\n sorts.length === 0 &&\n customColumns.length === 0 &&\n reverseType === TableUtils.REVERSE_TYPE.NONE &&\n searchFilter == null\n );\n}\n\nexport class IrisGrid extends Component {\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n constructor(props) {\n super(props);\n\n this.handleAdvancedFilterChange = this.handleAdvancedFilterChange.bind(\n this\n );\n this.handleAdvancedFilterSortChange = this.handleAdvancedFilterSortChange.bind(\n this\n );\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged = this.handleCustomColumnsChanged.bind(\n this\n );\n this.handleSelectDistinctChanged = this.handleSelectDistinctChanged.bind(\n this\n );\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handlePendingCommitClicked = this.handlePendingCommitClicked.bind(\n this\n );\n this.handlePendingDiscardClicked = this.handlePendingDiscardClicked.bind(\n this\n );\n\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadProgressUpdate = throttle(\n this.handleDownloadProgressUpdate.bind(this),\n UPDATE_DOWNLOAD_THROTTLE\n );\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionAppend = this.handlePartitionAppend.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handlePartitionFetchAll = this.handlePartitionFetchAll.bind(this);\n this.handlePartitionDone = this.handlePartitionDone.bind(this);\n this.handleColumnVisibilityChanged = this.handleColumnVisibilityChanged.bind(\n this\n );\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n\n this.updateSearchFilter = debounce(\n this.updateSearchFilter.bind(this),\n SET_FILTER_DEBOUNCE\n );\n\n this.grid = null;\n this.gridWrapper = null;\n this.lastFocusedFilterBarColumn = null;\n this.lastLoadedConfig = null;\n this.tooltip = null;\n this.pending = new Pending();\n this.globalColumnFormats = [];\n this.dateTimeFormatterOptions = {};\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.loadingScrimStartTime = null;\n this.loadingScrimFinishTime = null;\n this.loadingTimer = null;\n this.renderer = new IrisGridRenderer();\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.animationFrame = null;\n this.filterInputRef = React.createRef();\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n this.discardAction = {\n action: () => this.discardPending().catch(log.error),\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD,\n };\n this.commitAction = {\n action: () => this.commitPending().catch(log.error),\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT,\n };\n this.contextActions = [\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const keyHandlers = [\n new CopyKeyHandler(this),\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n const mouseHandlers = [\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n ];\n const {\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n model,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n rollupConfig,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n } = props;\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: null,\n keyHandlers,\n mouseHandlers,\n\n partition,\n partitionColumn,\n partitionTable: null,\n partitionFilters: [],\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: new Map(quickFilters),\n advancedFilters: new Map(advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\n\n filter: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: [],\n selectDistinctColumns,\n\n // selected range in table\n selectedRanges: [],\n\n // Current ongoing copy operation\n copyOperation: null,\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap,\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n\n toastMessage: null,\n };\n }\n\n componentDidMount() {\n const { partitionColumn, model } = this.props;\n const column =\n partitionColumn || model.columns.find(c => c.isPartitionColumn);\n if (\n model.isFilterRequired &&\n model.isValuesTableAvailable &&\n column != null\n ) {\n this.loadPartitionsTable(column);\n } else {\n this.initState();\n }\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps) {\n const {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n } = this.props;\n\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n\n const changedInputFilters =\n inputFilters !== prevProps.inputFilters\n ? inputFilters.filter(\n inputFilter => !prevProps.inputFilters.includes(inputFilter)\n )\n : [];\n if (changedInputFilters.length > 0) {\n const { advancedSettings } = this.props;\n const replaceExistingFilters =\n advancedSettings.get(\n AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', true);\n }\n\n const { loadingScrimStartTime, loadingScrimFinishTime } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n const now = Date.now();\n const currentTime = now - loadingScrimStartTime;\n const totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n const loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = null;\n this.loadingScrimFinishTime = null;\n }\n\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n\n return { loadingScrimProgress };\n });\n });\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount() {\n const { model } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n cancelAnimationFrame(this.animationFrame);\n }\n\n getAdvancedMenuOpenedHandler = memoize(\n column => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (model, column, advancedFilterOptions, sortDirection, formatter) => (\n <AdvancedFilterCreator\n model={model}\n column={column}\n onFilterChange={this.handleAdvancedFilterChange}\n onSortChange={this.handleAdvancedFilterSortChange}\n onDone={this.handleAdvancedFilterDone}\n options={advancedFilterOptions}\n sortDirection={sortDirection}\n formatter={formatter}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable,\n isCustomColumnsAvailable,\n isRollupAvailable,\n isTotalsAvailable,\n isSelectDistinctAvailable,\n isExportAvailable,\n toggleFilterBarAction,\n toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar\n ) => {\n const optionItems = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp,\n });\n }\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Column Visibility & Ordering',\n icon: dhEye,\n });\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Manage Custom Columns',\n icon: vsSplitHorizontal,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n });\n }\n if (isExportAvailable) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n });\n }\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n });\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n });\n\n return optionItems;\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(hiddenColumns => hiddenColumns, {\n max: 1,\n normalizer: ([hiddenColumns]) => hiddenColumns.join(),\n });\n\n getAggregationMap = memoize((columns, aggregations) => {\n const aggregationMap = {};\n aggregations.forEach(({ operation, selected, invert }) => {\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n );\n });\n return aggregationMap;\n });\n\n getOperationMap = memoize((columns, aggregations) => {\n const operationMap = {};\n aggregations\n .filter(a => !AggregationUtils.isRollupOperation(a.operation))\n .forEach(({ operation, selected, invert }) => {\n AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n ).forEach(name => {\n const newOperations = [...(operationMap[name] ?? []), operation];\n operationMap[name] = newOperations;\n });\n });\n return operationMap;\n });\n\n getOperationOrder = memoize(aggregations =>\n aggregations\n .map(a => a.operation)\n .filter(o => !AggregationUtils.isRollupOperation(o))\n );\n\n getModelRollupConfig = memoize(\n (originalColumns, config, aggregationSettings) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n )\n );\n\n getModelTotalsConfig = memoize((columns, config, aggregationSettings) => {\n const { aggregations, showOnTop } = aggregationSettings;\n // If we've got rollups, then aggregations are applied as part of that...\n if (\n (config?.columns?.length ?? 0) > 0 ||\n (aggregations?.length ?? 0) === 0\n ) {\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return { operationMap, operationOrder, showOnTop };\n });\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig\n ) => ({\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n ) => [\n ...customFilters,\n ...partitionFilters,\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter ? [searchFilter] : []), // null check\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n isEditable => ({ ...IrisGridTheme, autoSelectRow: !isEditable }),\n { max: 1 }\n );\n\n getValueForCell(columnIndex, rowIndex, rawValue = false) {\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue) {\n return model.valueForCell(modelColumn, modelRow);\n }\n return model.textForCell(modelColumn, modelRow);\n }\n\n getModelColumn(columnIndex) {\n const { metrics } = this.state;\n const { modelColumns } = metrics;\n if (!modelColumns) {\n return null;\n }\n\n return modelColumns.get(columnIndex);\n }\n\n getModelRow(rowIndex) {\n const { metrics } = this.state;\n const { modelRows } = metrics;\n if (!modelRows) {\n return null;\n }\n\n return modelRows.get(rowIndex);\n }\n\n getTheme() {\n const { model } = this.props;\n return this.getCachedTheme(model.isEditable);\n }\n\n getVisibleColumn(modelIndex) {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param {inputFilter[]} inputFilters Array of input filters to apply\n * @param {boolean} replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(inputFilters, replaceExisting = false) {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const newAdvancedFilters = replaceExisting\n ? new Map()\n : new Map(advancedFilters);\n const newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n\n let isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(({ name, type, value }) => {\n const modelIndex = model.columns.findIndex(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged =\n this.applyQuickFilter(modelIndex, value, newQuickFilters) ||\n isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param {number} modelIndex The index in the model of the column to set\n * @param {string} value The string value to set to the quick filter\n * @param {Map} quickFilters The quick filters map\n * @returns {boolean} True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(modelIndex, value, quickFilters) {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n\n if (value != null && `${value}`.trim().length > 0) {\n const quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n const { text } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n let filter = null;\n try {\n filter = TableUtils.makeQuickFilter(column, value);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n quickFilters.set(modelIndex, { filter, text: value });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilter(modelIndex, filter, options) {\n if (modelIndex == null) {\n log.error('Invalid model index to filter on');\n return;\n }\n\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param {Number} modelIndex The index in the model for the column this filter is applied to\n * @param {dh.FilterCondition} filter A filter to apply to the column, or null if there was an error\n * @param {String} text The original text the filter was created with\n */\n setQuickFilter(modelIndex, filter, text) {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n return { quickFilters: newQuickFilters };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param {Map<string, Object>} filterMap Filter map\n */\n setFilterMap(filterMap) {\n log.debug('setFilterMap', filterMap);\n\n const { advancedSettings } = this.props;\n const clearFiltersOnLinkerFilterUpdate =\n advancedSettings.get(\n AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n\n const { model } = this.props;\n filterMap.forEach(({ columnType, text, value }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n if (value === null) {\n this.setQuickFilter(column.index, column.filter().isNull(), '=null');\n } else {\n const filterValue = TableUtils.isTextType(columnType)\n ? dh.FilterValue.ofString(value)\n : dh.FilterValue.ofNumber(value);\n this.setQuickFilter(\n column.index,\n column.filter().eq(filterValue),\n `${text}`\n );\n }\n });\n }\n\n removeColumnFilter(modelColumn) {\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters, quickFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n newAdvancedFilters.delete(modelColumn);\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n });\n }\n\n clearAllFilters() {\n log.debug('Clearing all filters');\n\n const { advancedFilters, quickFilters, searchFilter } = this.state;\n if (\n quickFilters.size === 0 &&\n advancedFilters.size === 0 &&\n searchFilter === null\n ) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n\n this.startLoading('Clearing Filters...', true);\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: null,\n });\n }\n\n clearCrossColumSearch() {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: null,\n });\n }\n\n clearGridInputField() {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters() {\n log.debug('Rebuilding filters');\n\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns } = model;\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = TableUtils.makeAdvancedFilter(column, options);\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n const filter = TableUtils.makeQuickFilter(column, text);\n newQuickFilters.set(key, {\n text,\n filter,\n });\n });\n\n this.startLoading('Rebuilding filters...', true);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n\n setFilters({ quickFilters, advancedFilters }) {\n this.setState({\n quickFilters,\n advancedFilters,\n });\n }\n\n updateFormatterSettings(settings, forceUpdate = true) {\n const globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n if (isColumnFormatChanged || isDateFormattingChanged) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n updateFormatter(updatedFormats, forceUpdate = true) {\n const { customColumnFormatMap } = this.state;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...this.globalColumnFormats,\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n mergedColumnFormats,\n this.dateTimeFormatterOptions\n );\n\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n\n this.setState({ ...update, formatter }, () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n\n initFormatter() {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState() {\n const {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n } = this.props;\n\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverseType,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(partitionColumn) {\n const { model } = this.props;\n this.setState({ isSelectingPartition: true });\n\n try {\n const partitionTable = await this.pending.add(\n model.valuesTable(partitionColumn),\n resolved => resolved.close()\n );\n\n const column = partitionTable.columns[0];\n const sort = column.sort().desc();\n partitionTable.applySort([sort]);\n partitionTable.setViewport(0, 0, [column]);\n\n const data = await this.pending.add(partitionTable.getViewportData());\n if (data.rows.length > 0) {\n const row = data.rows[0];\n const value = row.get(column);\n\n this.updatePartition(value, partitionColumn);\n\n this.setState({ isSelectingPartition: true });\n } else {\n log.info('Table does not have any data, just fetching all');\n this.setState({ isSelectingPartition: false });\n this.handlePartitionFetchAll();\n }\n this.setState({ partitionTable, partitionColumn }, () => {\n this.initState();\n });\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n updatePartition(partition, partitionColumn) {\n const partitionFilter = partitionColumn\n .filter()\n .eq(dh.FilterValue.ofString(partition));\n const partitionFilters = [partitionFilter];\n this.setState({\n partition,\n partitionFilters,\n });\n }\n\n copyCell(columnIndex, rowIndex, rawValue = false) {\n const value = this.getValueForCell(columnIndex, rowIndex, rawValue);\n ContextActionUtils.copyToClipboard(value).catch(e =>\n log.error('Unable to copy cell', e)\n );\n }\n\n copyRanges(\n ranges,\n includeHeaders = false,\n formatValues = true,\n error = null\n ) {\n const { model } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const { userColumnWidths } = metricCalculator;\n\n const copyOperation = {\n ranges: GridRange.boundedRanges(\n ranges,\n model.columnCount,\n model.rowCount\n ),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error,\n };\n\n this.setState({ copyOperation });\n }\n\n startLoading(loadingText, resetRanges = false) {\n this.setState({ loadingText });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n const height = this.gridWrapper?.getBoundingClientRect().height ?? 0;\n const scrimTransitionTime = Math.max(\n minScrimTransitionTime,\n Math.min(height / 2, maxScrimTransitionTime)\n );\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime =\n this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0,\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true,\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n\n stopLoading() {\n this.loadingScrimStartTime = null;\n this.loadingScrimFinishTime = null;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n });\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = null;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback() {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n const {\n advancedFilters,\n customColumns,\n quickFilters,\n reverseType,\n searchFilter,\n sorts,\n } = this.lastLoadedConfig;\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n customColumns,\n quickFilters,\n reverseType,\n searchFilter,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n quickFilters: new Map(),\n sorts: [],\n customColumns: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns {boolean} true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback() {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n\n startListening(model) {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n stopListening(model) {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n focusFilterBar(column) {\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = this.getModelColumn(column);\n\n if (\n column == null ||\n column < 0 ||\n columnCount <= column ||\n !model.isFilterable(modelColumn)\n ) {\n this.setState({ focusedFilterBarColumn: null });\n return;\n }\n\n const { metricCalculator, metrics } = this.state;\n const { gridX, left, rightVisible, lastLeft } = metrics;\n if (column < left) {\n this.grid.setViewState({ left: column }, true);\n } else if (rightVisible < column) {\n const metricState = this.grid.getMetricState();\n const newLeft = metricCalculator.getLastLeft(metricState, column, gridX);\n this.grid.setViewState({ left: Math.min(newLeft, lastLeft) }, true);\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex) {\n const { metricCalculator, movedColumns } = this.state;\n metricCalculator.setColumnWidth(\n GridUtils.getModelIndex(columnVisibleIndex, movedColumns),\n 0\n );\n\n this.grid.forceUpdate();\n }\n\n handleColumnVisibilityChanged(modelIndexes, visibilityOption) {\n const { metricCalculator } = this.state;\n if (\n visibilityOption === VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n ) {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.resetColumnWidth(modelIndex);\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid.forceUpdate();\n }\n\n handleCrossColumnSearch(\n searchValue,\n selectedSearchColumns,\n invertSearchColumns\n ) {\n const { model } = this.props;\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n ) {\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n }\n\n handleAnimationLoop() {\n this.grid.updateCanvasScale();\n this.grid.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart() {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd() {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionAppend(value) {\n const { onPartitionAppend } = this.props;\n const { partitionColumn } = this.state;\n onPartitionAppend(partitionColumn, value);\n }\n\n handlePartitionChange(partition) {\n const { partitionColumn } = this.state;\n this.updatePartition(partition, partitionColumn);\n }\n\n handlePartitionFetchAll() {\n this.setState({\n partitionFilters: [],\n isSelectingPartition: false,\n });\n }\n\n handlePartitionDone() {\n this.setState({ isSelectingPartition: false });\n }\n\n handleTableLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error(error);\n\n const { onError } = this.props;\n onError(error);\n }\n\n showAllColumns() {\n const { metricCalculator } = this.state;\n const { userColumnWidths } = metricCalculator;\n const entries = [...userColumnWidths.entries()];\n for (let i = 0; i < entries.length; i += 1) {\n const [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n this.grid.forceUpdate();\n }\n\n toggleSort(columnIndex, addToExisting) {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const { sorts: currentSorts } = this.state;\n const modelColumn = this.getModelColumn(columnIndex);\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.table,\n modelColumn,\n addToExisting\n );\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid.forceUpdate();\n }\n\n sortColumn(modelColumn, direction, isAbs = false, addToExisting = false) {\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.table,\n modelColumn,\n direction,\n isAbs,\n addToExisting\n );\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid.forceUpdate();\n }\n\n reverse(reverseType) {\n this.startLoading('Reversing...');\n this.setState({ reverseType });\n this.grid.forceUpdate();\n }\n\n isReversible() {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn) {\n let { isFilterBarShown } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({ isFilterBarShown });\n\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n let columnIndex = 0;\n const { model } = this.props;\n const { columnCount } = model;\n for (let i = 0; i < columnCount; i += 1) {\n const modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column != null && TableUtils.isTextType(column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n this.grid.focus();\n }\n }\n\n toggleSearchBar() {\n const { showSearchBar } = this.state;\n const update = !showSearchBar;\n this.setState(\n {\n showSearchBar: update,\n },\n () => {\n if (update && this.crossColumnRef.current) {\n this.crossColumnRef.current.focus();\n } else {\n this.grid.focus();\n }\n }\n );\n }\n\n async commitPending() {\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n\n if (document.activeElement.classList.contains('grid-cell-input-field')) {\n if (document.activeElement.classList.contains('error')) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid.focus();\n }\n\n const { model } = this.props;\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending() {\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n\n this.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map(),\n });\n }\n\n /**\n * Select the passed in column and notify listener\n * @param {dh.Column} column The column in this table to link\n */\n selectColumn(column) {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Select all the data for a given row and notify listener\n */\n selectData(columnIndex, rowIndex) {\n const { model } = this.props;\n const { columns } = model;\n const dataMap = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n dataMap[name] = { value, text, type };\n }\n\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n handleAdvancedFilterChange(column, filter, options) {\n this.setAdvancedFilter(column.index, filter, options);\n }\n\n handleAdvancedFilterSortChange(column, direction, addToExisting = false) {\n const { model } = this.props;\n const columnIndex = column.index;\n const oldSort = TableUtils.getSortForColumn(model.sort, columnIndex);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnIndex,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.startLoading('Sorting...');\n this.setState({ sorts });\n\n this.grid.forceUpdate();\n }\n\n handleAdvancedFilterDone() {\n this.grid.focus();\n }\n\n handleAdvancedMenuOpened(column) {\n this.setState({ shownAdvancedFilter: column });\n }\n\n handleAdvancedMenuClosed(columnIndex) {\n const { focusedFilterBarColumn, isFilterBarShown } = this.state;\n if (\n isFilterBarShown &&\n focusedFilterBarColumn === columnIndex &&\n this.filterInputRef.current !== null\n ) {\n this.filterInputRef.current.focus();\n this.setState({ shownAdvancedFilter: null });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null,\n });\n }\n }\n\n handleCancel() {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange() {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings) {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model.table);\n }\n\n handleGridError(error) {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value) {\n this.startLoading('Filtering...', true);\n\n this.setState(({ focusedFilterBarColumn, quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n return { quickFilters: newQuickFilters };\n });\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true) {\n if (setGridFocus) {\n this.grid.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward) {\n const { focusedFilterBarColumn } = this.state;\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(modelIndex, selectedFormat) {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n const { customColumnFormatMap: prevCustomColumnFormatMap } = this.state;\n const customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n\n if (selectedFormat) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n const columnFormattingRule = Formatter.makeColumnFormattingRule(\n normalizedType,\n column.name,\n selectedFormat\n );\n\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n\n this.updateFormatter({ customColumnFormatMap });\n }\n\n handleMenu() {\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose() {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack() {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option) {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event) {\n log.error('request failed:', event.detail);\n this.stopLoading();\n if (this.canRollback()) {\n this.startLoading('Rolling back changes...', true);\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${event.detail}`));\n }\n }\n\n handleUpdate() {\n this.stopLoading();\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n customColumns,\n quickFilters,\n reverseType,\n searchFilter,\n sorts,\n } = this.state;\n const config = {\n advancedFilters,\n customColumns,\n reverseType,\n quickFilters,\n searchFilter,\n sorts,\n };\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid.forceUpdate();\n }\n\n handleViewChanged(metrics) {\n const { model } = this.props;\n const { bottomViewport } = metrics;\n const { selectionEndRow = 0 } = this.grid?.state ?? {};\n let pendingRowCount = 0;\n if (model.isEditable) {\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n const bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(\n 0,\n bottomViewport -\n (model.rowCount - model.pendingRowCount) -\n model.floatingTopRowCount -\n model.floatingBottomRowCount -\n 1\n );\n }\n }\n\n this.setState({ metrics, pendingRowCount });\n }\n\n handleSelectionChanged(selectedRanges) {\n const { onSelectionChanged } = this.props;\n const { copyOperation } = this.state;\n this.setState({ selectedRanges });\n if (copyOperation != null) {\n this.setState({ copyOperation: null });\n }\n onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(movedColumns, onChangeApplied = () => {}) {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleTooltipRef(tooltip) {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleUpdateCustomColumns(customColumns) {\n log.info(`handleUpdateCustomColumns:`, customColumns);\n\n const { model } = this.props;\n const {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns,\n } = this.state;\n\n const { columns, customColumns: oldCustomColumns } = model;\n\n const removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(\n oldCustomColumns,\n customColumns\n );\n if (removedColumnNames.length > 0) {\n const newSorts = IrisGridUtils.removeSortsInColumns(\n sorts,\n removedColumnNames\n );\n const newQuickFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n quickFilters,\n removedColumnNames\n );\n const newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n advancedFilters,\n removedColumnNames\n );\n const newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n );\n const newSelectDistinctColumns = IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({ sorts: newSorts });\n }\n if (\n newQuickFilters.size !== quickFilters.size ||\n newAdvancedFilters.size !== advancedFilters.size\n ) {\n log.debug(`removing filters from removed custom columns...`);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\n `change moved columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ movedColumns: newMovedColumns });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\n `change selectDistinct columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ selectDistinctColumns: newSelectDistinctColumns });\n }\n }\n\n this.setState({ customColumns, top: 0 });\n this.startLoading('Applying custom columns...');\n }\n\n handleCustomColumnsChanged() {\n log.debug('custom columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.stopLoading();\n this.grid.forceUpdate();\n } else {\n this.initState();\n }\n }\n\n handlePendingCommitClicked() {\n return this.commitPending();\n }\n\n handlePendingDiscardClicked() {\n return this.discardPending();\n }\n\n handlePendingDataUpdated() {\n log.debug('pending data updated');\n const { model } = this.props;\n const { pendingDataMap, pendingDataErrors } = model;\n this.setState({ pendingDataMap, pendingDataErrors });\n this.grid.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param {AggregationSettings} aggregationSettings The new aggregation settings\n */\n handleAggregationsChange(aggregationSettings) {\n log.debug('handleAggregationsChange', aggregationSettings);\n\n this.startLoading(\n `Aggregating ${aggregationSettings.aggregations\n .map(a => a.operation)\n .join(', ')}...`\n );\n this.setState({ aggregationSettings });\n }\n\n /**\n * A specific aggregation has been modified\n * @param {Aggregation} aggregation The new aggregation\n */\n handleAggregationChange(aggregation) {\n log.debug('handleAggregationChange', aggregation);\n\n this.startLoading(`Aggregating ${aggregation.operation}...`);\n this.setState(({ aggregationSettings }) => ({\n selectedAggregation: aggregation,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: aggregationSettings.aggregations.map(a =>\n a.operation === aggregation.operation ? aggregation : a\n ),\n },\n }));\n }\n\n /**\n * An aggregations has been selected for editing\n * @param {Aggregation} aggregation The aggregation to edit\n */\n handleAggregationEdit(aggregation) {\n log.debug('handleAggregationEdit', aggregation);\n\n const { openOptions } = this.state;\n\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.AGGREGATION_EDIT,\n title: `Edit Columns to ${aggregation.operation}`,\n },\n ],\n selectedAggregation: aggregation,\n });\n }\n\n handleRollupChange(rollupConfig) {\n log.info('Rollup change', rollupConfig);\n\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Grouping by columns ${rollupConfig?.columns?.join(', ') ?? ''}...`\n );\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n selectDistinctColumns: [],\n });\n }\n\n handleSelectDistinctChanged(columnNames) {\n log.debug('SelectDistinct change', columnNames);\n\n this.resetGridViewState();\n\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Selecting distinct values in ${\n columnNames.length > 0 ? columnNames.join(', ') : ''\n }...`\n );\n\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n });\n }\n\n handleDownloadTableStart() {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n }\n\n handleDownloadTable(...args) {\n log.info('start table downloading', ...args);\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(...args);\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n };\n });\n }\n\n handleCancelDownloadTable() {\n this.tableSaver.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate(\n tableDownloadProgress,\n tableDownloadEstimatedTime\n ) {\n const { tableDownloadStatus } = this.state;\n if (tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n }\n\n handleDownloadCompleted() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED,\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param {GridRange[]} ranges The ranges to delete\n */\n deleteRanges(ranges) {\n const { model } = this.props;\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection() {\n if (this.grid == null) {\n return;\n }\n const { isSelectingColumn } = this.props;\n if (isSelectingColumn) {\n const { columnAllowedCursor } = this.props;\n this.grid.setState({ cursor: columnAllowedCursor });\n } else {\n this.grid.setState({ cursor: Grid.CURSOR_TYPE_DEFAULT });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true) {\n if (!this.grid) {\n return;\n }\n\n this.grid.clearSelectedRanges();\n this.grid.setViewState(\n { left: 0, top: 0, topOffset: 0, leftOffset: 0 },\n forceUpdate\n );\n }\n\n sendStateChange() {\n if (!this.grid) {\n return;\n }\n const { state: irisGridState } = this;\n const { state: gridState } = this.grid;\n const { onStateChange } = this.props;\n\n onStateChange(irisGridState, gridState);\n }\n\n render() {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n } = this.props;\n const {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n keyHandlers,\n mouseHandlers,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n partition,\n partitionFilters,\n partitionTable,\n partitionColumn,\n searchFilter,\n selectDistinctColumns,\n\n movedColumns,\n movedRows,\n\n formatter,\n\n sorts,\n reverseType,\n customColumns,\n\n selectedRanges,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n );\n\n const { userColumnWidths } = metricCalculator;\n const stateOverride = this.getCachedStateOverride(\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig\n );\n const top = metrics ? metrics.top : 0;\n const bottom = metrics ? metrics.bottomViewport : 0;\n let left = null;\n let right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n const isVisible =\n metrics != null && metrics.width > 0 && metrics.height > 0;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n\n let focusField = null;\n\n const debounceMs = metrics\n ? Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n )\n : IrisGrid.maxDebounce;\n\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n const { gridX, gridY, visibleColumnXs, visibleColumnWidths } = metrics;\n const columnX = visibleColumnXs.get(focusedFilterBarColumn);\n const columnWidth = visibleColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - theme.filterBarHeight;\n const fieldWidth = columnWidth + 1; // cover right border\n const fieldHeight = theme.filterBarHeight - 1; // remove bottom border\n const style = {\n top: y,\n left: x,\n minWidth: fieldWidth,\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n const isBarFiltered =\n quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = (\n <FilterInputField\n ref={this.filterInputRef}\n style={style}\n className={classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered,\n })}\n isAdvancedFilterSet={advancedFilter != null}\n onAdvancedFiltersTriggered={() => {\n this.setState({ shownAdvancedFilter: focusedFilterBarColumn });\n }}\n key={focusedFilterBarColumn}\n onChange={this.handleFilterBarChange}\n onDone={this.handleFilterBarDone}\n onTab={this.handleFilterBarTab}\n onContextMenu={this.grid.handleContextMenu}\n debounceMs={debounceMs}\n value={value}\n />\n );\n }\n }\n\n let loadingElement = null;\n if (loadingText != null) {\n const loadingStatus = (\n <div className=\"iris-grid-loading-status\">{loadingText}</div>\n );\n const loader = <DeephavenSpinner show={loadingSpinnerShown} />;\n const cancelButton = (\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames(\n 'btn btn-secondary btn-cancelable iris-grid-btn-cancel',\n {\n show: loadingSpinnerShown,\n }\n )}\n >\n Cancel\n </button>\n );\n\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div className=\"iris-grid-loading\" style={{ top: gridY }}>\n {loadingStatus}\n {loader}\n {cancelButton}\n </div>\n );\n }\n\n let columnTooltip = null;\n if (shownColumnTooltip != null && metrics) {\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n } = metrics;\n const columnX = visibleColumnXs.get(shownColumnTooltip);\n const columnWidth = visibleColumnWidths.get(shownColumnTooltip);\n const wrapperStyle = {\n position: 'absolute',\n top: 0,\n left: columnX,\n width: columnWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n const popperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(shownColumnTooltip);\n const column = model.columns[modelColumn];\n\n if (column != null) {\n columnTooltip = (\n <div style={wrapperStyle}>\n <Tooltip\n key={column.name}\n timeout={400}\n interactive\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n <ColumnStatistics\n model={model}\n column={column}\n onStatistics={() => {\n if (this.tooltip) this.tooltip.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n }\n\n const filterBar = [];\n if (metrics && isFilterBarShown) {\n const {\n gridX,\n gridY,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths,\n } = metrics;\n const { filterBarHeight } = theme;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n\n const columnX = visibleColumnXs.get(columnIndex);\n const columnWidth = visibleColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n const isFilterable = model.isFilterable(modelColumn);\n if (\n isFilterable &&\n columnX != null &&\n columnWidth != null &&\n columnWidth > 0\n ) {\n const x = gridX + columnX + columnWidth - 24;\n const y = gridY - filterBarHeight + 2; // 2 acts as top margin for the button\n const style = {\n position: 'absolute',\n top: y,\n left: x,\n };\n const advancedFilter = advancedFilters.get(modelColumn);\n const isFilterSet = advancedFilter != null;\n const isFilterVisible =\n columnIndex === hoverAdvancedFilter ||\n columnIndex === focusedFilterBarColumn ||\n isFilterSet;\n const element = (\n <div\n className={classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible,\n })}\n key={columnIndex}\n style={style}\n >\n {isFilterVisible && (\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({ shownAdvancedFilter: columnIndex });\n }}\n onContextMenu={event => {\n this.grid.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon icon={vsFilter} className=\"filter-light\" />\n </div>\n </button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = visibleColumnXs.get(columnIndex);\n const columnWidth = visibleColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style = isFilterBarShown\n ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight,\n }\n : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight,\n };\n const modelColumn = this.getModelColumn(columnIndex);\n const column = model.columns[modelColumn];\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, modelColumn);\n const sortDirection = sort ? sort.direction : null;\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n >\n {this.getCachedAdvancedFilterMenuActions(\n model,\n column,\n advancedFilterOptions,\n sortDirection,\n formatter\n )}\n </Popper>\n </div>\n );\n advancedFilterMenus.push(element);\n }\n }\n }\n\n const optionItems = this.getCachedOptionItems(\n model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar\n );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n userColumnWidths={userColumnWidths}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return (\n <CustomColumnBuilder\n model={model}\n customColumns={customColumns}\n onSave={this.handleUpdateCustomColumns}\n onCancel={this.handleMenuBack}\n key={OptionType.CUSTOM_COLUMN_BUILDER}\n />\n );\n case OptionType.ROLLUP_ROWS:\n return (\n <RollupRows\n metrics={metrics}\n model={model}\n onChange={this.handleRollupChange}\n config={rollupConfig}\n key={OptionType.ROLLUP_ROWS}\n />\n );\n case OptionType.AGGREGATIONS:\n return (\n <Aggregations\n settings={aggregationSettings}\n isRollup={isRollup}\n onChange={this.handleAggregationsChange}\n onEdit={this.handleAggregationEdit}\n />\n );\n case OptionType.AGGREGATION_EDIT:\n return (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={tableDownloadEstimatedTime}\n onDownload={this.handleDownloadTable}\n onDownloadStart={this.handleDownloadTableStart}\n onCancel={this.handleCancelDownloadTable}\n selectedRanges={selectedRanges}\n key={OptionType.TABLE_EXPORTER}\n />\n );\n case OptionType.SELECT_DISTINCT:\n return (\n <SelectDistinctBuilder\n model={model}\n selectDistinctColumns={selectDistinctColumns}\n onChange={this.handleSelectDistinctChanged}\n />\n );\n case OptionType.ADVANCED_SETTINGS:\n return (\n <AdvancedSettingsMenu\n items={advancedSettings}\n onChange={onAdvancedSettingsChange}\n />\n );\n\n default:\n throw Error('Unexpected option type', option.type);\n }\n });\n\n const hiddenColumns = this.getCachedHiddenColumns(\n IrisGridUtils.getHiddenColumns(userColumnWidths)\n );\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\">\n {partitionTable && partitionColumn && (\n <IrisGridPartitionSelector\n table={partitionTable}\n getFormattedString={(...args) => model.displayString(...args)}\n columnName={partitionColumn.name}\n partition={partition}\n onChange={this.handlePartitionChange}\n onFetchAll={this.handlePartitionFetchAll}\n onAppend={this.handlePartitionAppend}\n onDone={this.handlePartitionDone}\n />\n )}\n </div>\n </CSSTransition>\n <CSSTransition\n in={showSearchBar}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-bar\">\n <CrossColumnSearch\n value={searchValue}\n selectedColumns={selectedSearchColumns}\n invertSelection={invertSearchColumns}\n onChange={this.handleCrossColumnSearch}\n columns={model.columns}\n ref={this.crossColumnRef}\n />\n </div>\n </CSSTransition>\n <div\n className=\"grid-wrapper\"\n ref={gridWrapper => {\n this.gridWrapper = gridWrapper;\n }}\n >\n <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!model.isEditable}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={keyHandlers}\n mouseHandlers={mouseHandlers}\n movedColumns={movedColumns}\n movedRows={movedRows}\n onError={this.handleGridError}\n onViewChanged={this.handleViewChanged}\n onSelectionChanged={this.handleSelectionChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n renderer={this.renderer}\n stateOverride={stateOverride}\n theme={theme}\n />\n {isVisible && (\n <IrisGridModelUpdater\n model={model}\n modelColumns={model.columns}\n top={top}\n bottom={bottom}\n left={left}\n right={right}\n filter={filter}\n formatter={formatter}\n sorts={sorts}\n reverseType={reverseType}\n movedColumns={movedColumns}\n customColumns={customColumns}\n hiddenColumns={hiddenColumns}\n alwaysFetchColumns={alwaysFetchColumns}\n rollupConfig={this.getModelRollupConfig(\n model.originalColumns,\n rollupConfig,\n aggregationSettings\n )}\n totalsConfig={this.getModelTotalsConfig(\n model.columns,\n rollupConfig,\n aggregationSettings\n )}\n selectDistinctColumns={selectDistinctColumns}\n pendingRowCount={pendingRowCount}\n pendingDataMap={pendingDataMap}\n />\n )}\n <div\n className={classNames('grid-settings-button', {\n 'is-menu-shown': isMenuShown,\n })}\n >\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon\"\n onClick={this.handleMenu}\n >\n <FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />\n </button>\n </div>\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n </div>\n <PendingDataBottomBar\n error={pendingSaveError}\n isSaving={pendingSavePromise != null}\n saveTooltip={`Commit (${this.commitAction.shortcut.getDisplayText()})`}\n discardTooltip={`Discard (${this.discardAction.shortcut.getDisplayText()})`}\n pendingDataErrors={pendingDataErrors}\n pendingDataMap={pendingDataMap}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n onSave={this.handlePendingCommitClicked}\n onDiscard={this.handlePendingDiscardClicked}\n />\n <ToastBottomBar>{toastMessage}</ToastBottomBar>\n <IrisGridCopyHandler\n model={model}\n copyOperation={copyOperation}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <CSSTransition\n in={isMenuShown}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n <Page title=\"Table Options\" onClose={this.handleMenuClose}>\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>\n {openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n ))}\n </Stack>\n </div>\n </CSSTransition>\n <ContextActions actions={this.contextActions} />\n </div>\n );\n }\n}\n\nIrisGrid.propTypes = {\n children: PropTypes.node,\n advancedFilters: PropTypes.instanceOf(Map),\n advancedSettings: PropTypes.instanceOf(Map),\n alwaysFetchColumns: PropTypes.arrayOf(PropTypes.string),\n isFilterBarShown: PropTypes.bool,\n applyInputFiltersOnInit: PropTypes.bool,\n customColumnFormatMap: PropTypes.instanceOf(Map),\n movedColumns: PropTypes.arrayOf(\n PropTypes.shape({\n from: PropTypes.number.isRequired,\n to: PropTypes.number.isRequired,\n })\n ),\n movedRows: PropTypes.arrayOf(\n PropTypes.shape({\n from: PropTypes.number.isRequired,\n to: PropTypes.number.isRequired,\n })\n ),\n inputFilters: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ),\n customFilters: PropTypes.arrayOf(PropTypes.shape({})),\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n onCreateChart: PropTypes.func,\n onColumnSelected: PropTypes.func,\n onError: PropTypes.func,\n onDataSelected: PropTypes.func,\n onStateChange: PropTypes.func,\n onPartitionAppend: PropTypes.func,\n onAdvancedSettingsChange: PropTypes.func,\n partition: PropTypes.string,\n partitionColumn: APIPropTypes.Column,\n sorts: PropTypes.arrayOf(PropTypes.shape({})),\n reverseType: PropTypes.string,\n quickFilters: PropTypes.instanceOf(Map),\n customColumns: PropTypes.arrayOf(PropTypes.string),\n selectDistinctColumns: PropTypes.arrayOf(PropTypes.string),\n settings: PropTypes.shape({}).isRequired,\n userColumnWidths: PropTypes.instanceOf(Map),\n userRowHeights: PropTypes.instanceOf(Map),\n onSelectionChanged: PropTypes.func,\n rollupConfig: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.string),\n showConstituents: PropTypes.bool,\n showNonAggregatedColumns: PropTypes.bool,\n includeDescriptions: PropTypes.bool,\n }),\n aggregationSettings: PropTypes.shape({\n aggregations: PropTypes.arrayOf(\n PropTypes.shape({\n operation: PropTypes.string.isRequired,\n selected: PropTypes.arrayOf(PropTypes.string).isRequired,\n invert: PropTypes.bool.isRequired,\n })\n ),\n showOnTop: PropTypes.bool,\n }),\n\n isSelectingColumn: PropTypes.bool,\n isSelectingPartition: PropTypes.bool,\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator: PropTypes.func,\n columnAllowedCursor: PropTypes.string,\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: PropTypes.string,\n name: PropTypes.string,\n onlyFetchVisibleColumns: PropTypes.bool,\n\n showSearchBar: PropTypes.bool,\n searchValue: PropTypes.string,\n selectedSearchColumns: PropTypes.arrayOf(PropTypes.string),\n invertSearchColumns: PropTypes.bool,\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: PropTypes.func,\n\n pendingDataMap: PropTypes.instanceOf(Map),\n getDownloadWorker: PropTypes.func,\n};\n\nIrisGrid.defaultProps = {\n children: null,\n advancedFilters: new Map(),\n advancedSettings: new Map(),\n alwaysFetchColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: [],\n movedRows: [],\n inputFilters: [],\n customFilters: [],\n onCreateChart: () => {},\n onColumnSelected: () => {},\n onDataSelected: () => {},\n onError: () => {},\n onStateChange: () => {},\n onPartitionAppend: () => {},\n onAdvancedSettingsChange: () => {},\n partition: null,\n partitionColumn: null,\n quickFilters: new Map(),\n selectDistinctColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: [],\n aggregationSettings: { aggregations: [], showOnTop: false },\n rollupConfig: null,\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n onSelectionChanged: () => {},\n isSelectingColumn: false,\n isSelectingPartition: false,\n columnSelectionValidator: null,\n columnAllowedCursor: null,\n columnNotAllowedCursor: null,\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: () => [],\n pendingDataMap: new Map(),\n getDownloadWorker: () =>\n Promise.reject(new Error('Download worker not provided')),\n};\n\nconst mapStateToProps = state => ({\n settings: getSettings(state),\n});\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n IrisGrid\n);\n"],"file":"IrisGrid.js"}
1
+ {"version":3,"sources":["../src/IrisGrid.jsx"],"names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","connect","Log","FontAwesomeIcon","ContextActionUtils","ContextActions","DeephavenSpinner","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Grid","GridRange","GridUtils","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsCloudDownload","vsFilter","vsMenu","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","dh","APIPropTypes","getSettings","Pending","PromiseUtils","ValidationError","throttle","debounce","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridSortMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","IrisGridTheme","ColumnStatistics","Formatter","FormatterUtils","TableUtils","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","IrisGridUtils","CrossColumnSearch","IrisGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","log","module","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","isEmptyConfig","advancedFilters","quickFilters","sorts","customColumns","reverseType","searchFilter","size","length","REVERSE_TYPE","NONE","IrisGrid","props","column","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","handleAdvancedFilterChange","handleAdvancedFilterSortChange","handleAdvancedFilterDone","isChartBuilderAvailable","isCustomColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","isFilterBarShown","showSearchBar","optionItems","push","type","CHART_BUILDER","title","icon","VISIBILITY_ORDERING_BUILDER","CUSTOM_COLUMN_BUILDER","ROLLUP_ROWS","AGGREGATIONS","SELECT_DISTINCT","TABLE_EXPORTER","ADVANCED_SETTINGS","QUICK_FILTERS","subtitle","shortcut","getDisplayText","isOn","onChange","action","SEARCH_BAR","hiddenColumns","normalizer","join","columns","aggregations","aggregationMap","forEach","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","name","newOperations","map","o","originalColumns","config","aggregationSettings","getModelRollupConfig","showOnTop","getOperationMap","operationOrder","getOperationOrder","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","rollupConfig","customFilters","partitionFilters","getFiltersFromFilterMap","isEditable","autoSelectRow","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleUpdate","handleTooltipRef","handleViewChanged","handleFormatSelection","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadProgressUpdate","handleDownloadCompleted","handlePartitionAppend","handlePartitionChange","handlePartitionFetchAll","handlePartitionDone","handleColumnVisibilityChanged","handleCrossColumnSearch","handleRollupChange","updateSearchFilter","grid","gridWrapper","lastFocusedFilterBarColumn","lastLoadedConfig","tooltip","pending","globalColumnFormats","dateTimeFormatterOptions","loadingScrimStartTime","loadingScrimFinishTime","loadingTimer","renderer","tableSaver","crossColumnRef","createRef","isAnimating","animationFrame","filterInputRef","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","discardAction","pendingDataMap","discardPending","error","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","keyHandlers","mouseHandlers","customColumnFormatMap","isSelectingPartition","movedColumns","movedRows","partition","partitionColumn","userColumnWidths","userRowHeights","searchValue","selectedSearchColumns","invertSearchColumns","selectDistinctColumns","metricCalculator","Map","searchColumns","createSearchFilter","state","focusedFilterBarColumn","metrics","partitionTable","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","loadingSpinnerShown","shownColumnTooltip","isMenuShown","isTableDownloading","isReady","tableDownloadStatus","tableDownloadProgress","tableDownloadEstimatedTime","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","find","c","isPartitionColumn","isFilterRequired","isValuesTableAvailable","loadPartitionsTable","initState","startListening","prevProps","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","applyInputFilters","resetColumnSelection","updateFormatterSettings","startLoading","window","requestAnimationFrame","now","Date","currentTime","totalTime","Math","min","setState","debug2","sendStateChange","cancel","clearTimeout","cancelAnimationFrame","columnIndex","rowIndex","rawValue","modelColumn","getModelColumn","modelRow","getModelRow","valueForCell","textForCell","modelColumns","modelRows","getCachedTheme","modelIndex","getVisibleIndex","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","value","findIndex","columnName","columnType","applyQuickFilter","trim","quickFilter","text","makeQuickFilter","err","set","options","debug","filterMap","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","setQuickFilter","index","isNull","filterValue","isTextType","FilterValue","ofString","ofNumber","eq","current","setValue","key","makeAdvancedFilter","forceUpdate","getColumnFormats","getDateTimeFormatterOptions","isColumnFormatChanged","isDateFormattingChanged","updateFormatter","rebuildFilters","updatedFormats","update","mergedColumnFormats","values","applyInputFiltersOnInit","inputFiltersWithValues","initFormatter","add","valuesTable","resolved","close","sort","desc","applySort","setViewport","getViewportData","data","rows","row","updatePartition","info","handleTableLoadError","partitionFilter","getValueForCell","copyToClipboard","e","ranges","includeHeaders","formatValues","boundedRanges","columnCount","rowCount","resetRanges","theme","getTheme","clearSelectedRanges","setViewState","top","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","addEventListener","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","removeEventListener","isFilterable","gridX","left","rightVisible","lastLeft","metricState","getMetricState","newLeft","getLastLeft","columnVisibleIndex","setColumnWidth","getModelIndex","modelIndexes","visibilityOption","VISIBILITY_OPTIONS","SHOW","resetColumnWidth","updateCanvasScale","updateCanvas","onPartitionAppend","isCanceled","onError","entries","i","columnWidth","addToExisting","currentSorts","toggleSortForColumn","table","direction","isAbs","sortColumn","isReversible","focusIndex","focusFilterBar","focus","Error","document","activeElement","classList","contains","newPendingSavePromise","then","onColumnSelected","dataMap","onDataSelected","setAdvancedFilter","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","rollback","onCreateChart","warn","setGridFocus","defocusInput","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","newOptions","pop","option","event","detail","stopLoading","canRollback","bottomViewport","selectionEndRow","bottomNonFloating","floatingBottomRowCount","floatingTopRowCount","onSelectionChanged","onChangeApplied","startTimer","oldCustomColumns","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","newMovedColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","aggregation","AGGREGATION_EDIT","resetGridViewState","showAllColumns","columnNames","DOWNLOAD_STATUS","INITIATING","args","startDownload","DOWNLOADING","cancelDownload","FINISHED","CANCELED","columnAllowedCursor","cursor","CURSOR_TYPE_DEFAULT","topOffset","leftOffset","irisGridState","gridState","onStateChange","children","getDownloadWorker","onlyFetchVisibleColumns","alwaysFetchColumns","onAdvancedSettingsChange","getCachedFilter","stateOverride","getCachedStateOverride","bottom","right","isVisible","width","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridY","visibleColumnXs","visibleColumnWidths","columnX","x","y","filterBarHeight","fieldWidth","fieldHeight","style","minWidth","isValid","advancedFilter","isBarFiltered","active","handleContextMenu","loadingElement","loadingStatus","loader","cancelButton","show","columnTooltip","columnHeaderHeight","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","filterBar","visibleColumns","isFilterSet","isFilterVisible","element","hidden","advancedFilterMenus","xColumnHeader","xFilterBar","getAdvancedMenuOpenedHandler","getCachedAdvancedFilterMenuActions","getCachedOptionItems","openOptionsStack","getCachedHiddenColumns","getHiddenColumns","transitionSlowMs","displayString","getModelTotalsConfig","transitionMidMs","propTypes","node","instanceOf","arrayOf","string","bool","shape","from","number","isRequired","to","func","Column","showConstituents","showNonAggregatedColumns","includeDescriptions","columnSelectionValidator","columnNotAllowedCursor","onContextMenu","defaultProps","Promise","reject","mapStateToProps","forwardRef"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'deep-equal';\nimport { connect } from 'react-redux';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActionUtils,\n ContextActions,\n DeephavenSpinner,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n} from '@deephaven/components';\nimport { Grid, GridRange, GridUtils } from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsCloudDownload,\n vsFilter,\n vsMenu,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport dh, { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport { getSettings } from '@deephaven/redux';\nimport { Pending, PromiseUtils, ValidationError } from '@deephaven/utils';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridSortMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport IrisGridTheme from './IrisGridTheme';\nimport ColumnStatistics from './ColumnStatistics';\nimport './IrisGrid.scss';\nimport Formatter from './Formatter';\nimport FormatterUtils from './FormatterUtils';\nimport TableUtils from './TableUtils';\nimport AdvancedFilterCreator from './AdvancedFilterCreator';\nimport {\n Aggregations,\n AggregationEdit,\n AggregationUtils,\n ChartBuilder,\n CustomColumnBuilder,\n OptionType,\n RollupRows,\n TableCsvExporter,\n TableSaver,\n VisibilityOrderingBuilder,\n} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\n\nconst log = Log.module('IrisGrid');\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nfunction isEmptyConfig({\n advancedFilters,\n quickFilters,\n sorts,\n customColumns,\n reverseType,\n searchFilter,\n}) {\n return (\n advancedFilters.size === 0 &&\n quickFilters.size === 0 &&\n sorts.length === 0 &&\n customColumns.length === 0 &&\n reverseType === TableUtils.REVERSE_TYPE.NONE &&\n searchFilter == null\n );\n}\n\nexport class IrisGrid extends Component {\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n constructor(props) {\n super(props);\n\n this.handleAdvancedFilterChange = this.handleAdvancedFilterChange.bind(\n this\n );\n this.handleAdvancedFilterSortChange = this.handleAdvancedFilterSortChange.bind(\n this\n );\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged = this.handleCustomColumnsChanged.bind(\n this\n );\n this.handleSelectDistinctChanged = this.handleSelectDistinctChanged.bind(\n this\n );\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handlePendingCommitClicked = this.handlePendingCommitClicked.bind(\n this\n );\n this.handlePendingDiscardClicked = this.handlePendingDiscardClicked.bind(\n this\n );\n\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadProgressUpdate = throttle(\n this.handleDownloadProgressUpdate.bind(this),\n UPDATE_DOWNLOAD_THROTTLE\n );\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionAppend = this.handlePartitionAppend.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handlePartitionFetchAll = this.handlePartitionFetchAll.bind(this);\n this.handlePartitionDone = this.handlePartitionDone.bind(this);\n this.handleColumnVisibilityChanged = this.handleColumnVisibilityChanged.bind(\n this\n );\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n\n this.updateSearchFilter = debounce(\n this.updateSearchFilter.bind(this),\n SET_FILTER_DEBOUNCE\n );\n\n this.grid = null;\n this.gridWrapper = null;\n this.lastFocusedFilterBarColumn = null;\n this.lastLoadedConfig = null;\n this.tooltip = null;\n this.pending = new Pending();\n this.globalColumnFormats = [];\n this.dateTimeFormatterOptions = {};\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.loadingScrimStartTime = null;\n this.loadingScrimFinishTime = null;\n this.loadingTimer = null;\n this.renderer = new IrisGridRenderer();\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.animationFrame = null;\n this.filterInputRef = React.createRef();\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n this.discardAction = {\n action: () => {\n const { model } = this.props;\n if (model.isEditable && model.pendingDataMap.size > 0) {\n this.discardPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD,\n };\n this.commitAction = {\n action: () => {\n const { model } = this.props;\n if (\n model.isEditable &&\n model.pendingDataMap.size > 0 &&\n model.pendingDataErrors.size === 0\n ) {\n this.commitPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT,\n };\n this.contextActions = [\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const keyHandlers = [\n new CopyKeyHandler(this),\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n const mouseHandlers = [\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n ];\n const {\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n model,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n rollupConfig,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n } = props;\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: null,\n keyHandlers,\n mouseHandlers,\n\n partition,\n partitionColumn,\n partitionTable: null,\n partitionFilters: [],\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: new Map(quickFilters),\n advancedFilters: new Map(advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\n\n filter: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: [],\n selectDistinctColumns,\n\n // selected range in table\n selectedRanges: [],\n\n // Current ongoing copy operation\n copyOperation: null,\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap,\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n\n toastMessage: null,\n };\n }\n\n componentDidMount() {\n const { partitionColumn, model } = this.props;\n const column =\n partitionColumn || model.columns.find(c => c.isPartitionColumn);\n if (\n model.isFilterRequired &&\n model.isValuesTableAvailable &&\n column != null\n ) {\n this.loadPartitionsTable(column);\n } else {\n this.initState();\n }\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps) {\n const {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n } = this.props;\n\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n\n const changedInputFilters =\n inputFilters !== prevProps.inputFilters\n ? inputFilters.filter(\n inputFilter => !prevProps.inputFilters.includes(inputFilter)\n )\n : [];\n if (changedInputFilters.length > 0) {\n const { advancedSettings } = this.props;\n const replaceExistingFilters =\n advancedSettings.get(\n AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', true);\n }\n\n const { loadingScrimStartTime, loadingScrimFinishTime } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n const now = Date.now();\n const currentTime = now - loadingScrimStartTime;\n const totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n const loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = null;\n this.loadingScrimFinishTime = null;\n }\n\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n\n return { loadingScrimProgress };\n });\n });\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount() {\n const { model } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n cancelAnimationFrame(this.animationFrame);\n }\n\n getAdvancedMenuOpenedHandler = memoize(\n column => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (model, column, advancedFilterOptions, sortDirection, formatter) => (\n <AdvancedFilterCreator\n model={model}\n column={column}\n onFilterChange={this.handleAdvancedFilterChange}\n onSortChange={this.handleAdvancedFilterSortChange}\n onDone={this.handleAdvancedFilterDone}\n options={advancedFilterOptions}\n sortDirection={sortDirection}\n formatter={formatter}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable,\n isCustomColumnsAvailable,\n isRollupAvailable,\n isTotalsAvailable,\n isSelectDistinctAvailable,\n isExportAvailable,\n toggleFilterBarAction,\n toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar\n ) => {\n const optionItems = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp,\n });\n }\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Column Visibility & Ordering',\n icon: dhEye,\n });\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Manage Custom Columns',\n icon: vsSplitHorizontal,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n });\n }\n if (isExportAvailable) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n });\n }\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n });\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n });\n\n return optionItems;\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(hiddenColumns => hiddenColumns, {\n max: 1,\n normalizer: ([hiddenColumns]) => hiddenColumns.join(),\n });\n\n getAggregationMap = memoize((columns, aggregations) => {\n const aggregationMap = {};\n aggregations.forEach(({ operation, selected, invert }) => {\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n );\n });\n return aggregationMap;\n });\n\n getOperationMap = memoize((columns, aggregations) => {\n const operationMap = {};\n aggregations\n .filter(a => !AggregationUtils.isRollupOperation(a.operation))\n .forEach(({ operation, selected, invert }) => {\n AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n ).forEach(name => {\n const newOperations = [...(operationMap[name] ?? []), operation];\n operationMap[name] = newOperations;\n });\n });\n return operationMap;\n });\n\n getOperationOrder = memoize(aggregations =>\n aggregations\n .map(a => a.operation)\n .filter(o => !AggregationUtils.isRollupOperation(o))\n );\n\n getModelRollupConfig = memoize(\n (originalColumns, config, aggregationSettings) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n )\n );\n\n getModelTotalsConfig = memoize((columns, config, aggregationSettings) => {\n const { aggregations, showOnTop } = aggregationSettings;\n // If we've got rollups, then aggregations are applied as part of that...\n if (\n (config?.columns?.length ?? 0) > 0 ||\n (aggregations?.length ?? 0) === 0\n ) {\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return { operationMap, operationOrder, showOnTop };\n });\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig\n ) => ({\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n ) => [\n ...customFilters,\n ...partitionFilters,\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter ? [searchFilter] : []), // null check\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n isEditable => ({ ...IrisGridTheme, autoSelectRow: !isEditable }),\n { max: 1 }\n );\n\n getValueForCell(columnIndex, rowIndex, rawValue = false) {\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue) {\n return model.valueForCell(modelColumn, modelRow);\n }\n return model.textForCell(modelColumn, modelRow);\n }\n\n getModelColumn(columnIndex) {\n const { metrics } = this.state;\n const { modelColumns } = metrics;\n if (!modelColumns) {\n return null;\n }\n\n return modelColumns.get(columnIndex);\n }\n\n getModelRow(rowIndex) {\n const { metrics } = this.state;\n const { modelRows } = metrics;\n if (!modelRows) {\n return null;\n }\n\n return modelRows.get(rowIndex);\n }\n\n getTheme() {\n const { model } = this.props;\n return this.getCachedTheme(model.isEditable);\n }\n\n getVisibleColumn(modelIndex) {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param {inputFilter[]} inputFilters Array of input filters to apply\n * @param {boolean} replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(inputFilters, replaceExisting = false) {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const newAdvancedFilters = replaceExisting\n ? new Map()\n : new Map(advancedFilters);\n const newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n\n let isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(({ name, type, value }) => {\n const modelIndex = model.columns.findIndex(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged =\n this.applyQuickFilter(modelIndex, value, newQuickFilters) ||\n isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param {number} modelIndex The index in the model of the column to set\n * @param {string} value The string value to set to the quick filter\n * @param {Map} quickFilters The quick filters map\n * @returns {boolean} True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(modelIndex, value, quickFilters) {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n\n if (value != null && `${value}`.trim().length > 0) {\n const quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n const { text } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n let filter = null;\n try {\n filter = TableUtils.makeQuickFilter(column, value);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n quickFilters.set(modelIndex, { filter, text: value });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilter(modelIndex, filter, options) {\n if (modelIndex == null) {\n log.error('Invalid model index to filter on');\n return;\n }\n\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param {Number} modelIndex The index in the model for the column this filter is applied to\n * @param {dh.FilterCondition} filter A filter to apply to the column, or null if there was an error\n * @param {String} text The original text the filter was created with\n */\n setQuickFilter(modelIndex, filter, text) {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n return { quickFilters: newQuickFilters };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param {Map<string, Object>} filterMap Filter map\n */\n setFilterMap(filterMap) {\n log.debug('setFilterMap', filterMap);\n\n const { advancedSettings } = this.props;\n const clearFiltersOnLinkerFilterUpdate =\n advancedSettings.get(\n AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n\n const { model } = this.props;\n filterMap.forEach(({ columnType, text, value }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n if (value === null) {\n this.setQuickFilter(column.index, column.filter().isNull(), '=null');\n } else {\n const filterValue = TableUtils.isTextType(columnType)\n ? dh.FilterValue.ofString(value)\n : dh.FilterValue.ofNumber(value);\n this.setQuickFilter(\n column.index,\n column.filter().eq(filterValue),\n `${text}`\n );\n }\n });\n }\n\n removeColumnFilter(modelColumn) {\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters, quickFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n newAdvancedFilters.delete(modelColumn);\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n });\n }\n\n clearAllFilters() {\n log.debug('Clearing all filters');\n\n const { advancedFilters, quickFilters, searchFilter } = this.state;\n if (\n quickFilters.size === 0 &&\n advancedFilters.size === 0 &&\n searchFilter === null\n ) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n\n this.startLoading('Clearing Filters...', true);\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: null,\n });\n }\n\n clearCrossColumSearch() {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: null,\n });\n }\n\n clearGridInputField() {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters() {\n log.debug('Rebuilding filters');\n\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns } = model;\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = TableUtils.makeAdvancedFilter(column, options);\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n const filter = TableUtils.makeQuickFilter(column, text);\n newQuickFilters.set(key, {\n text,\n filter,\n });\n });\n\n this.startLoading('Rebuilding filters...', true);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n\n setFilters({ quickFilters, advancedFilters }) {\n this.setState({\n quickFilters,\n advancedFilters,\n });\n }\n\n updateFormatterSettings(settings, forceUpdate = true) {\n const globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n if (isColumnFormatChanged || isDateFormattingChanged) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n updateFormatter(updatedFormats, forceUpdate = true) {\n const { customColumnFormatMap } = this.state;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...this.globalColumnFormats,\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n mergedColumnFormats,\n this.dateTimeFormatterOptions\n );\n\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n\n this.setState({ ...update, formatter }, () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n\n initFormatter() {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState() {\n const {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n } = this.props;\n\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverseType,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(partitionColumn) {\n const { model } = this.props;\n this.setState({ isSelectingPartition: true });\n\n try {\n const partitionTable = await this.pending.add(\n model.valuesTable(partitionColumn),\n resolved => resolved.close()\n );\n\n const column = partitionTable.columns[0];\n const sort = column.sort().desc();\n partitionTable.applySort([sort]);\n partitionTable.setViewport(0, 0, [column]);\n\n const data = await this.pending.add(partitionTable.getViewportData());\n if (data.rows.length > 0) {\n const row = data.rows[0];\n const value = row.get(column);\n\n this.updatePartition(value, partitionColumn);\n\n this.setState({ isSelectingPartition: true });\n } else {\n log.info('Table does not have any data, just fetching all');\n this.setState({ isSelectingPartition: false });\n this.handlePartitionFetchAll();\n }\n this.setState({ partitionTable, partitionColumn }, () => {\n this.initState();\n });\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n updatePartition(partition, partitionColumn) {\n const partitionFilter = partitionColumn\n .filter()\n .eq(dh.FilterValue.ofString(partition));\n const partitionFilters = [partitionFilter];\n this.setState({\n partition,\n partitionFilters,\n });\n }\n\n copyCell(columnIndex, rowIndex, rawValue = false) {\n const value = this.getValueForCell(columnIndex, rowIndex, rawValue);\n ContextActionUtils.copyToClipboard(value).catch(e =>\n log.error('Unable to copy cell', e)\n );\n }\n\n copyRanges(\n ranges,\n includeHeaders = false,\n formatValues = true,\n error = null\n ) {\n const { model } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const { userColumnWidths } = metricCalculator;\n\n const copyOperation = {\n ranges: GridRange.boundedRanges(\n ranges,\n model.columnCount,\n model.rowCount\n ),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error,\n };\n\n this.setState({ copyOperation });\n }\n\n startLoading(loadingText, resetRanges = false) {\n this.setState({ loadingText });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n const height = this.gridWrapper?.getBoundingClientRect().height ?? 0;\n const scrimTransitionTime = Math.max(\n minScrimTransitionTime,\n Math.min(height / 2, maxScrimTransitionTime)\n );\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime =\n this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0,\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true,\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n\n stopLoading() {\n this.loadingScrimStartTime = null;\n this.loadingScrimFinishTime = null;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n });\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = null;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback() {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n const {\n advancedFilters,\n customColumns,\n quickFilters,\n reverseType,\n searchFilter,\n sorts,\n } = this.lastLoadedConfig;\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n customColumns,\n quickFilters,\n reverseType,\n searchFilter,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n quickFilters: new Map(),\n sorts: [],\n customColumns: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns {boolean} true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback() {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n\n startListening(model) {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n stopListening(model) {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n focusFilterBar(column) {\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = this.getModelColumn(column);\n\n if (\n column == null ||\n column < 0 ||\n columnCount <= column ||\n !model.isFilterable(modelColumn)\n ) {\n this.setState({ focusedFilterBarColumn: null });\n return;\n }\n\n const { metricCalculator, metrics } = this.state;\n const { gridX, left, rightVisible, lastLeft } = metrics;\n if (column < left) {\n this.grid.setViewState({ left: column }, true);\n } else if (rightVisible < column) {\n const metricState = this.grid.getMetricState();\n const newLeft = metricCalculator.getLastLeft(metricState, column, gridX);\n this.grid.setViewState({ left: Math.min(newLeft, lastLeft) }, true);\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex) {\n const { metricCalculator, movedColumns } = this.state;\n metricCalculator.setColumnWidth(\n GridUtils.getModelIndex(columnVisibleIndex, movedColumns),\n 0\n );\n\n this.grid.forceUpdate();\n }\n\n handleColumnVisibilityChanged(modelIndexes, visibilityOption) {\n const { metricCalculator } = this.state;\n if (\n visibilityOption === VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n ) {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.resetColumnWidth(modelIndex);\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid.forceUpdate();\n }\n\n handleCrossColumnSearch(\n searchValue,\n selectedSearchColumns,\n invertSearchColumns\n ) {\n const { model } = this.props;\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n ) {\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n }\n\n handleAnimationLoop() {\n this.grid.updateCanvasScale();\n this.grid.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart() {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd() {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionAppend(value) {\n const { onPartitionAppend } = this.props;\n const { partitionColumn } = this.state;\n onPartitionAppend(partitionColumn, value);\n }\n\n handlePartitionChange(partition) {\n const { partitionColumn } = this.state;\n this.updatePartition(partition, partitionColumn);\n }\n\n handlePartitionFetchAll() {\n this.setState({\n partitionFilters: [],\n isSelectingPartition: false,\n });\n }\n\n handlePartitionDone() {\n this.setState({ isSelectingPartition: false });\n }\n\n handleTableLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error(error);\n\n const { onError } = this.props;\n onError(error);\n }\n\n showAllColumns() {\n const { metricCalculator } = this.state;\n const { userColumnWidths } = metricCalculator;\n const entries = [...userColumnWidths.entries()];\n for (let i = 0; i < entries.length; i += 1) {\n const [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n this.grid.forceUpdate();\n }\n\n toggleSort(columnIndex, addToExisting) {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const { sorts: currentSorts } = this.state;\n const modelColumn = this.getModelColumn(columnIndex);\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.table,\n modelColumn,\n addToExisting\n );\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid.forceUpdate();\n }\n\n sortColumn(modelColumn, direction, isAbs = false, addToExisting = false) {\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.table,\n modelColumn,\n direction,\n isAbs,\n addToExisting\n );\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid.forceUpdate();\n }\n\n reverse(reverseType) {\n this.startLoading('Reversing...');\n this.setState({ reverseType });\n this.grid.forceUpdate();\n }\n\n isReversible() {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn) {\n let { isFilterBarShown } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({ isFilterBarShown });\n\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n let columnIndex = 0;\n const { model } = this.props;\n const { columnCount } = model;\n for (let i = 0; i < columnCount; i += 1) {\n const modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column != null && TableUtils.isTextType(column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n this.grid.focus();\n }\n }\n\n toggleSearchBar() {\n const { showSearchBar } = this.state;\n const update = !showSearchBar;\n this.setState(\n {\n showSearchBar: update,\n },\n () => {\n if (update && this.crossColumnRef.current) {\n this.crossColumnRef.current.focus();\n } else {\n this.grid.focus();\n }\n }\n );\n }\n\n async commitPending() {\n const { model } = this.props;\n if (!model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n\n if (document.activeElement.classList.contains('grid-cell-input-field')) {\n if (document.activeElement.classList.contains('error')) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid.focus();\n }\n\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending() {\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n\n this.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map(),\n });\n }\n\n /**\n * Select the passed in column and notify listener\n * @param {dh.Column} column The column in this table to link\n */\n selectColumn(column) {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Select all the data for a given row and notify listener\n */\n selectData(columnIndex, rowIndex) {\n const { model } = this.props;\n const { columns } = model;\n const dataMap = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n dataMap[name] = { value, text, type };\n }\n\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n handleAdvancedFilterChange(column, filter, options) {\n this.setAdvancedFilter(column.index, filter, options);\n }\n\n handleAdvancedFilterSortChange(column, direction, addToExisting = false) {\n const { model } = this.props;\n const columnIndex = column.index;\n const oldSort = TableUtils.getSortForColumn(model.sort, columnIndex);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnIndex,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.startLoading('Sorting...');\n this.setState({ sorts });\n\n this.grid.forceUpdate();\n }\n\n handleAdvancedFilterDone() {\n this.grid.focus();\n }\n\n handleAdvancedMenuOpened(column) {\n this.setState({ shownAdvancedFilter: column });\n }\n\n handleAdvancedMenuClosed(columnIndex) {\n const { focusedFilterBarColumn, isFilterBarShown } = this.state;\n if (\n isFilterBarShown &&\n focusedFilterBarColumn === columnIndex &&\n this.filterInputRef.current !== null\n ) {\n this.filterInputRef.current.focus();\n this.setState({ shownAdvancedFilter: null });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null,\n });\n }\n }\n\n handleCancel() {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange() {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings) {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model.table);\n }\n\n handleGridError(error) {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value) {\n this.startLoading('Filtering...', true);\n\n this.setState(({ focusedFilterBarColumn, quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n return { quickFilters: newQuickFilters };\n });\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true) {\n if (setGridFocus) {\n this.grid.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward) {\n const { focusedFilterBarColumn } = this.state;\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(modelIndex, selectedFormat) {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n const { customColumnFormatMap: prevCustomColumnFormatMap } = this.state;\n const customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n\n if (selectedFormat) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n const columnFormattingRule = Formatter.makeColumnFormattingRule(\n normalizedType,\n column.name,\n selectedFormat\n );\n\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n\n this.updateFormatter({ customColumnFormatMap });\n }\n\n handleMenu() {\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose() {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack() {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option) {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event) {\n log.error('request failed:', event.detail);\n this.stopLoading();\n if (this.canRollback()) {\n this.startLoading('Rolling back changes...', true);\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${event.detail}`));\n }\n }\n\n handleUpdate() {\n this.stopLoading();\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n customColumns,\n quickFilters,\n reverseType,\n searchFilter,\n sorts,\n } = this.state;\n const config = {\n advancedFilters,\n customColumns,\n reverseType,\n quickFilters,\n searchFilter,\n sorts,\n };\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid.forceUpdate();\n }\n\n handleViewChanged(metrics) {\n const { model } = this.props;\n const { bottomViewport } = metrics;\n const { selectionEndRow = 0 } = this.grid?.state ?? {};\n let pendingRowCount = 0;\n if (model.isEditable) {\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n const bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(\n 0,\n bottomViewport -\n (model.rowCount - model.pendingRowCount) -\n model.floatingTopRowCount -\n model.floatingBottomRowCount -\n 1\n );\n }\n }\n\n this.setState({ metrics, pendingRowCount });\n }\n\n handleSelectionChanged(selectedRanges) {\n const { onSelectionChanged } = this.props;\n const { copyOperation } = this.state;\n this.setState({ selectedRanges });\n if (copyOperation != null) {\n this.setState({ copyOperation: null });\n }\n onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(movedColumns, onChangeApplied = () => {}) {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleTooltipRef(tooltip) {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleUpdateCustomColumns(customColumns) {\n log.info(`handleUpdateCustomColumns:`, customColumns);\n\n const { model } = this.props;\n const {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns,\n } = this.state;\n\n const { columns, customColumns: oldCustomColumns } = model;\n\n const removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(\n oldCustomColumns,\n customColumns\n );\n if (removedColumnNames.length > 0) {\n const newSorts = IrisGridUtils.removeSortsInColumns(\n sorts,\n removedColumnNames\n );\n const newQuickFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n quickFilters,\n removedColumnNames\n );\n const newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n advancedFilters,\n removedColumnNames\n );\n const newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n );\n const newSelectDistinctColumns = IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({ sorts: newSorts });\n }\n if (\n newQuickFilters.size !== quickFilters.size ||\n newAdvancedFilters.size !== advancedFilters.size\n ) {\n log.debug(`removing filters from removed custom columns...`);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\n `change moved columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ movedColumns: newMovedColumns });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\n `change selectDistinct columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ selectDistinctColumns: newSelectDistinctColumns });\n }\n }\n\n this.setState({ customColumns, top: 0 });\n this.startLoading('Applying custom columns...');\n }\n\n handleCustomColumnsChanged() {\n log.debug('custom columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.stopLoading();\n this.grid.forceUpdate();\n } else {\n this.initState();\n }\n }\n\n handlePendingCommitClicked() {\n return this.commitPending();\n }\n\n handlePendingDiscardClicked() {\n return this.discardPending();\n }\n\n handlePendingDataUpdated() {\n log.debug('pending data updated');\n const { model } = this.props;\n const { pendingDataMap, pendingDataErrors } = model;\n this.setState({\n pendingDataMap,\n pendingDataErrors,\n pendingSaveError: null,\n });\n this.grid.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param {AggregationSettings} aggregationSettings The new aggregation settings\n */\n handleAggregationsChange(aggregationSettings) {\n log.debug('handleAggregationsChange', aggregationSettings);\n\n this.startLoading(\n `Aggregating ${aggregationSettings.aggregations\n .map(a => a.operation)\n .join(', ')}...`\n );\n this.setState({ aggregationSettings });\n }\n\n /**\n * A specific aggregation has been modified\n * @param {Aggregation} aggregation The new aggregation\n */\n handleAggregationChange(aggregation) {\n log.debug('handleAggregationChange', aggregation);\n\n this.startLoading(`Aggregating ${aggregation.operation}...`);\n this.setState(({ aggregationSettings }) => ({\n selectedAggregation: aggregation,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: aggregationSettings.aggregations.map(a =>\n a.operation === aggregation.operation ? aggregation : a\n ),\n },\n }));\n }\n\n /**\n * An aggregations has been selected for editing\n * @param {Aggregation} aggregation The aggregation to edit\n */\n handleAggregationEdit(aggregation) {\n log.debug('handleAggregationEdit', aggregation);\n\n const { openOptions } = this.state;\n\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.AGGREGATION_EDIT,\n title: `Edit Columns to ${aggregation.operation}`,\n },\n ],\n selectedAggregation: aggregation,\n });\n }\n\n handleRollupChange(rollupConfig) {\n log.info('Rollup change', rollupConfig);\n\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Grouping by columns ${rollupConfig?.columns?.join(', ') ?? ''}...`\n );\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n selectDistinctColumns: [],\n });\n }\n\n handleSelectDistinctChanged(columnNames) {\n log.debug('SelectDistinct change', columnNames);\n\n this.resetGridViewState();\n\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Selecting distinct values in ${\n columnNames.length > 0 ? columnNames.join(', ') : ''\n }...`\n );\n\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n });\n }\n\n handleDownloadTableStart() {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n }\n\n handleDownloadTable(...args) {\n log.info('start table downloading', ...args);\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(...args);\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n };\n });\n }\n\n handleCancelDownloadTable() {\n this.tableSaver.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate(\n tableDownloadProgress,\n tableDownloadEstimatedTime\n ) {\n const { tableDownloadStatus } = this.state;\n if (tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n }\n\n handleDownloadCompleted() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED,\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param {GridRange[]} ranges The ranges to delete\n */\n deleteRanges(ranges) {\n const { model } = this.props;\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection() {\n if (this.grid == null) {\n return;\n }\n const { isSelectingColumn } = this.props;\n if (isSelectingColumn) {\n const { columnAllowedCursor } = this.props;\n this.grid.setState({ cursor: columnAllowedCursor });\n } else {\n this.grid.setState({ cursor: Grid.CURSOR_TYPE_DEFAULT });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true) {\n if (!this.grid) {\n return;\n }\n\n this.grid.clearSelectedRanges();\n this.grid.setViewState(\n { left: 0, top: 0, topOffset: 0, leftOffset: 0 },\n forceUpdate\n );\n }\n\n sendStateChange() {\n if (!this.grid) {\n return;\n }\n const { state: irisGridState } = this;\n const { state: gridState } = this.grid;\n const { onStateChange } = this.props;\n\n onStateChange(irisGridState, gridState);\n }\n\n render() {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n } = this.props;\n const {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n keyHandlers,\n mouseHandlers,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n partition,\n partitionFilters,\n partitionTable,\n partitionColumn,\n searchFilter,\n selectDistinctColumns,\n\n movedColumns,\n movedRows,\n\n formatter,\n\n sorts,\n reverseType,\n customColumns,\n\n selectedRanges,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n );\n\n const { userColumnWidths } = metricCalculator;\n const stateOverride = this.getCachedStateOverride(\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig\n );\n const top = metrics ? metrics.top : 0;\n const bottom = metrics ? metrics.bottomViewport : 0;\n let left = null;\n let right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n const isVisible =\n metrics != null && metrics.width > 0 && metrics.height > 0;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n\n let focusField = null;\n\n const debounceMs = metrics\n ? Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n )\n : IrisGrid.maxDebounce;\n\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n const { gridX, gridY, visibleColumnXs, visibleColumnWidths } = metrics;\n const columnX = visibleColumnXs.get(focusedFilterBarColumn);\n const columnWidth = visibleColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - theme.filterBarHeight;\n const fieldWidth = columnWidth + 1; // cover right border\n const fieldHeight = theme.filterBarHeight - 1; // remove bottom border\n const style = {\n top: y,\n left: x,\n minWidth: fieldWidth,\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n const isBarFiltered =\n quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = (\n <FilterInputField\n ref={this.filterInputRef}\n style={style}\n className={classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered,\n })}\n isAdvancedFilterSet={advancedFilter != null}\n onAdvancedFiltersTriggered={() => {\n this.setState({ shownAdvancedFilter: focusedFilterBarColumn });\n }}\n key={focusedFilterBarColumn}\n onChange={this.handleFilterBarChange}\n onDone={this.handleFilterBarDone}\n onTab={this.handleFilterBarTab}\n onContextMenu={this.grid.handleContextMenu}\n debounceMs={debounceMs}\n value={value}\n />\n );\n }\n }\n\n let loadingElement = null;\n if (loadingText != null) {\n const loadingStatus = (\n <div className=\"iris-grid-loading-status\">{loadingText}</div>\n );\n const loader = <DeephavenSpinner show={loadingSpinnerShown} />;\n const cancelButton = (\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames(\n 'btn btn-secondary btn-cancelable iris-grid-btn-cancel',\n {\n show: loadingSpinnerShown,\n }\n )}\n >\n Cancel\n </button>\n );\n\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div className=\"iris-grid-loading\" style={{ top: gridY }}>\n {loadingStatus}\n {loader}\n {cancelButton}\n </div>\n );\n }\n\n let columnTooltip = null;\n if (shownColumnTooltip != null && metrics) {\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n } = metrics;\n const columnX = visibleColumnXs.get(shownColumnTooltip);\n const columnWidth = visibleColumnWidths.get(shownColumnTooltip);\n const wrapperStyle = {\n position: 'absolute',\n top: 0,\n left: columnX,\n width: columnWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n const popperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(shownColumnTooltip);\n const column = model.columns[modelColumn];\n\n if (column != null) {\n columnTooltip = (\n <div style={wrapperStyle}>\n <Tooltip\n key={column.name}\n timeout={400}\n interactive\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n <ColumnStatistics\n model={model}\n column={column}\n onStatistics={() => {\n if (this.tooltip) this.tooltip.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n }\n\n const filterBar = [];\n if (metrics && isFilterBarShown) {\n const {\n gridX,\n gridY,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths,\n } = metrics;\n const { filterBarHeight } = theme;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n\n const columnX = visibleColumnXs.get(columnIndex);\n const columnWidth = visibleColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n const isFilterable = model.isFilterable(modelColumn);\n if (\n isFilterable &&\n columnX != null &&\n columnWidth != null &&\n columnWidth > 0\n ) {\n const x = gridX + columnX + columnWidth - 24;\n const y = gridY - filterBarHeight + 2; // 2 acts as top margin for the button\n const style = {\n position: 'absolute',\n top: y,\n left: x,\n };\n const advancedFilter = advancedFilters.get(modelColumn);\n const isFilterSet = advancedFilter != null;\n const isFilterVisible =\n columnIndex === hoverAdvancedFilter ||\n columnIndex === focusedFilterBarColumn ||\n isFilterSet;\n const element = (\n <div\n className={classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible,\n })}\n key={columnIndex}\n style={style}\n >\n {isFilterVisible && (\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({ shownAdvancedFilter: columnIndex });\n }}\n onContextMenu={event => {\n this.grid.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon icon={vsFilter} className=\"filter-light\" />\n </div>\n </button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = visibleColumnXs.get(columnIndex);\n const columnWidth = visibleColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style = isFilterBarShown\n ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight,\n }\n : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight,\n };\n const modelColumn = this.getModelColumn(columnIndex);\n const column = model.columns[modelColumn];\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, modelColumn);\n const sortDirection = sort ? sort.direction : null;\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n >\n {this.getCachedAdvancedFilterMenuActions(\n model,\n column,\n advancedFilterOptions,\n sortDirection,\n formatter\n )}\n </Popper>\n </div>\n );\n advancedFilterMenus.push(element);\n }\n }\n }\n\n const optionItems = this.getCachedOptionItems(\n model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar\n );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n userColumnWidths={userColumnWidths}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return (\n <CustomColumnBuilder\n model={model}\n customColumns={customColumns}\n onSave={this.handleUpdateCustomColumns}\n onCancel={this.handleMenuBack}\n key={OptionType.CUSTOM_COLUMN_BUILDER}\n />\n );\n case OptionType.ROLLUP_ROWS:\n return (\n <RollupRows\n metrics={metrics}\n model={model}\n onChange={this.handleRollupChange}\n config={rollupConfig}\n key={OptionType.ROLLUP_ROWS}\n />\n );\n case OptionType.AGGREGATIONS:\n return (\n <Aggregations\n settings={aggregationSettings}\n isRollup={isRollup}\n onChange={this.handleAggregationsChange}\n onEdit={this.handleAggregationEdit}\n />\n );\n case OptionType.AGGREGATION_EDIT:\n return (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={tableDownloadEstimatedTime}\n onDownload={this.handleDownloadTable}\n onDownloadStart={this.handleDownloadTableStart}\n onCancel={this.handleCancelDownloadTable}\n selectedRanges={selectedRanges}\n key={OptionType.TABLE_EXPORTER}\n />\n );\n case OptionType.SELECT_DISTINCT:\n return (\n <SelectDistinctBuilder\n model={model}\n selectDistinctColumns={selectDistinctColumns}\n onChange={this.handleSelectDistinctChanged}\n />\n );\n case OptionType.ADVANCED_SETTINGS:\n return (\n <AdvancedSettingsMenu\n items={advancedSettings}\n onChange={onAdvancedSettingsChange}\n />\n );\n\n default:\n throw Error('Unexpected option type', option.type);\n }\n });\n\n const hiddenColumns = this.getCachedHiddenColumns(\n IrisGridUtils.getHiddenColumns(userColumnWidths)\n );\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\">\n {partitionTable && partitionColumn && (\n <IrisGridPartitionSelector\n table={partitionTable}\n getFormattedString={(...args) => model.displayString(...args)}\n columnName={partitionColumn.name}\n partition={partition}\n onChange={this.handlePartitionChange}\n onFetchAll={this.handlePartitionFetchAll}\n onAppend={this.handlePartitionAppend}\n onDone={this.handlePartitionDone}\n />\n )}\n </div>\n </CSSTransition>\n <CSSTransition\n in={showSearchBar}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-bar\">\n <CrossColumnSearch\n value={searchValue}\n selectedColumns={selectedSearchColumns}\n invertSelection={invertSearchColumns}\n onChange={this.handleCrossColumnSearch}\n columns={model.columns}\n ref={this.crossColumnRef}\n />\n </div>\n </CSSTransition>\n <div\n className=\"grid-wrapper\"\n ref={gridWrapper => {\n this.gridWrapper = gridWrapper;\n }}\n >\n <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!model.isEditable}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={keyHandlers}\n mouseHandlers={mouseHandlers}\n movedColumns={movedColumns}\n movedRows={movedRows}\n onError={this.handleGridError}\n onViewChanged={this.handleViewChanged}\n onSelectionChanged={this.handleSelectionChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n renderer={this.renderer}\n stateOverride={stateOverride}\n theme={theme}\n />\n {isVisible && (\n <IrisGridModelUpdater\n model={model}\n modelColumns={model.columns}\n top={top}\n bottom={bottom}\n left={left}\n right={right}\n filter={filter}\n formatter={formatter}\n sorts={sorts}\n reverseType={reverseType}\n movedColumns={movedColumns}\n customColumns={customColumns}\n hiddenColumns={hiddenColumns}\n alwaysFetchColumns={alwaysFetchColumns}\n rollupConfig={this.getModelRollupConfig(\n model.originalColumns,\n rollupConfig,\n aggregationSettings\n )}\n totalsConfig={this.getModelTotalsConfig(\n model.columns,\n rollupConfig,\n aggregationSettings\n )}\n selectDistinctColumns={selectDistinctColumns}\n pendingRowCount={pendingRowCount}\n pendingDataMap={pendingDataMap}\n />\n )}\n <div\n className={classNames('grid-settings-button', {\n 'is-menu-shown': isMenuShown,\n })}\n >\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon\"\n onClick={this.handleMenu}\n >\n <FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />\n </button>\n </div>\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n </div>\n <PendingDataBottomBar\n error={pendingSaveError}\n isSaving={pendingSavePromise != null}\n saveTooltip={`Commit (${this.commitAction.shortcut.getDisplayText()})`}\n discardTooltip={`Discard (${this.discardAction.shortcut.getDisplayText()})`}\n pendingDataErrors={pendingDataErrors}\n pendingDataMap={pendingDataMap}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n onSave={this.handlePendingCommitClicked}\n onDiscard={this.handlePendingDiscardClicked}\n />\n <ToastBottomBar>{toastMessage}</ToastBottomBar>\n <IrisGridCopyHandler\n model={model}\n copyOperation={copyOperation}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <CSSTransition\n in={isMenuShown}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n <Page title=\"Table Options\" onClose={this.handleMenuClose}>\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>\n {openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n ))}\n </Stack>\n </div>\n </CSSTransition>\n <ContextActions actions={this.contextActions} />\n </div>\n );\n }\n}\n\nIrisGrid.propTypes = {\n children: PropTypes.node,\n advancedFilters: PropTypes.instanceOf(Map),\n advancedSettings: PropTypes.instanceOf(Map),\n alwaysFetchColumns: PropTypes.arrayOf(PropTypes.string),\n isFilterBarShown: PropTypes.bool,\n applyInputFiltersOnInit: PropTypes.bool,\n customColumnFormatMap: PropTypes.instanceOf(Map),\n movedColumns: PropTypes.arrayOf(\n PropTypes.shape({\n from: PropTypes.number.isRequired,\n to: PropTypes.number.isRequired,\n })\n ),\n movedRows: PropTypes.arrayOf(\n PropTypes.shape({\n from: PropTypes.number.isRequired,\n to: PropTypes.number.isRequired,\n })\n ),\n inputFilters: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ),\n customFilters: PropTypes.arrayOf(PropTypes.shape({})),\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n onCreateChart: PropTypes.func,\n onColumnSelected: PropTypes.func,\n onError: PropTypes.func,\n onDataSelected: PropTypes.func,\n onStateChange: PropTypes.func,\n onPartitionAppend: PropTypes.func,\n onAdvancedSettingsChange: PropTypes.func,\n partition: PropTypes.string,\n partitionColumn: APIPropTypes.Column,\n sorts: PropTypes.arrayOf(PropTypes.shape({})),\n reverseType: PropTypes.string,\n quickFilters: PropTypes.instanceOf(Map),\n customColumns: PropTypes.arrayOf(PropTypes.string),\n selectDistinctColumns: PropTypes.arrayOf(PropTypes.string),\n settings: PropTypes.shape({}).isRequired,\n userColumnWidths: PropTypes.instanceOf(Map),\n userRowHeights: PropTypes.instanceOf(Map),\n onSelectionChanged: PropTypes.func,\n rollupConfig: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.string),\n showConstituents: PropTypes.bool,\n showNonAggregatedColumns: PropTypes.bool,\n includeDescriptions: PropTypes.bool,\n }),\n aggregationSettings: PropTypes.shape({\n aggregations: PropTypes.arrayOf(\n PropTypes.shape({\n operation: PropTypes.string.isRequired,\n selected: PropTypes.arrayOf(PropTypes.string).isRequired,\n invert: PropTypes.bool.isRequired,\n })\n ),\n showOnTop: PropTypes.bool,\n }),\n\n isSelectingColumn: PropTypes.bool,\n isSelectingPartition: PropTypes.bool,\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator: PropTypes.func,\n columnAllowedCursor: PropTypes.string,\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: PropTypes.string,\n name: PropTypes.string,\n onlyFetchVisibleColumns: PropTypes.bool,\n\n showSearchBar: PropTypes.bool,\n searchValue: PropTypes.string,\n selectedSearchColumns: PropTypes.arrayOf(PropTypes.string),\n invertSearchColumns: PropTypes.bool,\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: PropTypes.func,\n\n pendingDataMap: PropTypes.instanceOf(Map),\n getDownloadWorker: PropTypes.func,\n};\n\nIrisGrid.defaultProps = {\n children: null,\n advancedFilters: new Map(),\n advancedSettings: new Map(),\n alwaysFetchColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: [],\n movedRows: [],\n inputFilters: [],\n customFilters: [],\n onCreateChart: () => {},\n onColumnSelected: () => {},\n onDataSelected: () => {},\n onError: () => {},\n onStateChange: () => {},\n onPartitionAppend: () => {},\n onAdvancedSettingsChange: () => {},\n partition: null,\n partitionColumn: null,\n quickFilters: new Map(),\n selectDistinctColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: [],\n aggregationSettings: { aggregations: [], showOnTop: false },\n rollupConfig: null,\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n onSelectionChanged: () => {},\n isSelectingColumn: false,\n isSelectingPartition: false,\n columnSelectionValidator: null,\n columnAllowedCursor: null,\n columnNotAllowedCursor: null,\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: () => [],\n pendingDataMap: new Map(),\n getDownloadWorker: () =>\n Promise.reject(new Error('Download worker not provided')),\n};\n\nconst mapStateToProps = state => ({\n settings: getSettings(state),\n});\n\nexport default connect(mapStateToProps, null, null, { forwardRef: true })(\n IrisGrid\n);\n"],"file":"IrisGrid.js"}