@deephaven/iris-grid 0.13.9-uuid-filter.2 → 0.13.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/IrisGrid.jsx"],"names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","Log","FontAwesomeIcon","ContextActionUtils","ContextActions","DeephavenSpinner","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Grid","GridRange","GridUtils","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","dh","APIPropTypes","DateUtils","Formatter","FormatterUtils","TableUtils","Pending","PromiseUtils","ValidationError","throttle","debounce","clamp","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridSortMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","IrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","IrisGridUtils","CrossColumnSearch","IrisGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","getFormatColumns","ConditionalFormatEditor","IrisGridCellOverflowModal","log","module","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","isEmptyConfig","advancedFilters","aggregationSettings","customColumns","quickFilters","reverseType","rollupConfig","searchFilter","selectDistinctColumns","sorts","size","length","REVERSE_TYPE","NONE","IrisGrid","makeQuickFilter","column","text","timeZone","err","error","constructor","props","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","handleAdvancedFilterChange","handleAdvancedFilterSortChange","handleAdvancedFilterDone","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","optionItems","push","type","CHART_BUILDER","title","icon","VISIBILITY_ORDERING_BUILDER","CONDITIONAL_FORMATTING","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","aggregationMap","forEach","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","name","newOperations","map","o","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","getModelRollupConfig","getOperationMap","operationOrder","getOperationOrder","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","customFilters","partitionFilters","getFiltersFromFilterMap","theme","isEditable","autoSelectRow","alwaysFetchColumns","movedColumns","floatingLeftColumnCount","floatingRightColumnCount","floatingColumns","i","getModelIndex","columnSet","Set","overflowButtonTooltipProps","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","Date","now","handleTooltipRef","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleUpdate","handleViewChanged","handleFormatSelection","handleConditionalFormatCreate","handleConditionalFormatEdit","handleConditionalFormatsChange","handleConditionalFormatEditorSave","handleConditionalFormatEditorUpdate","handleConditionalFormatEditorCancel","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadProgressUpdate","handleDownloadCompleted","handlePartitionAppend","handlePartitionChange","handlePartitionFetchAll","handlePartitionDone","handleColumnVisibilityChanged","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","getColumnBoundingRect","updateSearchFilter","grid","gridWrapper","lastFocusedFilterBarColumn","lastLoadedConfig","tooltip","pending","globalColumnFormats","dateTimeFormatterOptions","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","loadingScrimStartTime","loadingScrimFinishTime","loadingTimer","renderer","tableSaver","crossColumnRef","createRef","isAnimating","animationFrame","filterInputRef","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","discardAction","pendingDataMap","discardPending","catch","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","isSelectingPartition","movedColumnsProp","movedRows","movedRowsProp","partition","partitionColumn","userColumnWidths","userRowHeights","searchValue","selectedSearchColumns","invertSearchColumns","canCopy","frozenColumns","keyHandlers","mouseHandlers","metricCalculator","Map","searchColumns","createSearchFilter","state","focusedFilterBarColumn","metrics","partitionTable","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","loadingSpinnerShown","shownColumnTooltip","isMenuShown","conditionalFormatEditIndex","conditionalFormatPreview","isTableDownloading","isReady","tableDownloadStatus","tableDownloadProgress","tableDownloadEstimatedTime","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","overflowText","componentDidMount","find","c","isPartitionColumn","isFilterRequired","isValuesTableAvailable","loadPartitionsTable","initState","startListening","componentDidUpdate","prevProps","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","startLoading","applyInputFilters","resetColumnSelection","updateFormatterSettings","updateSorts","window","requestAnimationFrame","currentTime","totalTime","Math","min","setState","debug2","sendStateChange","componentWillUnmount","cancel","clearTimeout","cancelAnimationFrame","getValueForCell","columnIndex","rowIndex","rawValue","modelColumn","getModelColumn","modelRow","getModelRow","valueForCell","textForCell","modelColumns","modelRows","getTheme","getCachedTheme","getVisibleColumn","modelIndex","getVisibleIndex","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","value","findIndex","columnName","columnType","delete","applyQuickFilter","trim","quickFilter","set","setAdvancedFilter","options","setQuickFilter","setFilterMap","filterMap","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","getColumnIndexByName","isNull","filterValue","isTextType","FilterValue","ofString","ofNumber","eq","removeColumnFilter","current","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","forceUpdate","getColumnFormats","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","updateFormatter","updatedFormats","update","mergedColumnFormats","values","initFormatter","applyInputFiltersOnInit","inputFiltersWithValues","add","valuesTable","resolved","close","sort","desc","applySort","setViewport","data","getViewportData","rows","row","updatePartition","info","handleTableLoadError","partitionFilter","copyCell","copyToClipboard","e","copyRanges","ranges","includeHeaders","formatValues","boundedRanges","columnCount","rowCount","resetRanges","clearSelectedRanges","setViewState","top","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","stopLoading","rollback","canRollback","addEventListener","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","removeEventListener","focus","focusFilterBar","isFilterable","gridX","left","rightVisible","lastLeft","metricState","getMetricState","newLeft","getLastLeft","hideColumnByVisibleIndex","columnVisibleIndex","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","visibilityOption","VISIBILITY_OPTIONS","SHOW","resetColumnWidth","updateCanvasScale","updateCanvas","onPartitionAppend","isCanceled","onError","showAllColumns","entries","columnWidth","toggleSort","addToExisting","currentSorts","toggleSortForColumn","table","sortColumn","direction","isAbs","reverse","isReversible","focusIndex","isTableSearchAvailable","searchDisplayMode","layoutHints","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","Error","document","activeElement","classList","contains","newPendingSavePromise","then","selectColumn","onColumnSelected","selectData","dataMap","onDataSelected","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","onCreateChart","warn","setGridFocus","defocusInput","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","newOptions","pop","option","event","detail","bottomViewport","selectionEndRow","bottomNonFloating","floatingBottomRowCount","floatingTopRowCount","onSelectionChanged","onChangeApplied","startTimer","CONDITIONAL_FORMATTING_EDIT","index","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","aggregation","AGGREGATION_EDIT","resetGridViewState","columnNames","DOWNLOAD_STATUS","INITIATING","args","startDownload","DOWNLOADING","cancelDownload","FINISHED","CANCELED","deleteRanges","columnAllowedCursor","cursor","CURSOR_TYPE_DEFAULT","topOffset","leftOffset","irisGridState","gridState","onStateChange","gridRect","popperMargin","columnHeaderHeight","visibleColumnXs","visibleColumnWidths","width","columnX","bottom","right","render","children","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","getCachedFilter","stateOverride","getCachedStateOverride","isVisible","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridY","x","y","filterBarHeight","fieldWidth","fieldHeight","style","minWidth","isValid","advancedFilter","isBarFiltered","active","handleContextMenu","loadingElement","loadingStatus","loader","cancelButton","show","columnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","filterBar","visibleColumns","isFilterSet","isFilterVisible","element","hidden","advancedFilterMenus","xColumnHeader","xFilterBar","getAdvancedMenuOpenedHandler","getCachedAdvancedFilterMenuActions","getCachedOptionItems","openOptionsStack","getCachedHiddenColumns","getHiddenColumns","transitionSlowMs","displayString","getAlwaysFetchColumns","getCachedPreviewFormatColumns","getCachedModelColumns","getModelTotalsConfig","getOverflowButtonTooltip","transitionMidMs","propTypes","node","instanceOf","arrayOf","string","bool","shape","from","number","isRequired","to","func","Column","defaultDateTimeFormat","showTimeZone","showTSeparator","showConstituents","showNonAggregatedColumns","includeDescriptions","columnSelectionValidator","columnNotAllowedCursor","onContextMenu","defaultProps","FULL_DATE_FORMAT","defaultFormatString"],"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 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 vsEdit,\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 {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport { Pending, PromiseUtils, ValidationError } from '@deephaven/utils';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\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 IrisGridCellOverflowMouseHandler,\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 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';\nimport ConditionalFormattingMenu from './sidebar/conditional-formatting/ConditionalFormattingMenu';\nimport { getFormatColumns } from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport ConditionalFormatEditor from './sidebar/conditional-formatting/ConditionalFormatEditor';\nimport IrisGridCellOverflowModal from './IrisGridCellOverflowModal';\n\nconst log = Log.module('IrisGrid');\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: [],\n showOnTop: false,\n});\n\nfunction isEmptyConfig({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n}) {\n return (\n advancedFilters.size === 0 &&\n aggregationSettings.aggregations.length === 0 &&\n customColumns.length === 0 &&\n quickFilters.size === 0 &&\n reverseType === TableUtils.REVERSE_TYPE.NONE &&\n rollupConfig == null &&\n searchFilter == null &&\n selectDistinctColumns.length === 0 &&\n sorts.length === 0\n );\n}\n\nexport class IrisGrid extends Component {\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static makeQuickFilter(column, text, timeZone) {\n try {\n return TableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\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 this.handleConditionalFormatCreate = this.handleConditionalFormatCreate.bind(\n this\n );\n this.handleConditionalFormatEdit = this.handleConditionalFormatEdit.bind(\n this\n );\n this.handleConditionalFormatsChange = this.handleConditionalFormatsChange.bind(\n this\n );\n this.handleConditionalFormatEditorSave = this.handleConditionalFormatEditorSave.bind(\n this\n );\n this.handleConditionalFormatEditorUpdate = debounce(\n this.handleConditionalFormatEditorUpdate.bind(this),\n SET_CONDITIONAL_FORMAT_DEBOUNCE\n );\n this.handleConditionalFormatEditorCancel = this.handleConditionalFormatEditorCancel.bind(\n 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 this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.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 this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\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 {\n aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\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 canCopy,\n frozenColumns,\n } = props;\n\n const keyHandlers = [\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n }\n const mouseHandlers = [\n new IrisGridCellOverflowMouseHandler(this),\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\n const movedColumns =\n movedColumnsProp.length > 0 ? movedColumnsProp : model.movedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.movedRows;\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns,\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 conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\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 frozenColumns,\n showOverflowModal: false,\n overflowText: '',\n overflowButtonTooltipProps: 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 sorts,\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.startLoading('Filtering...', true);\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 if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\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 isFormatColumnsAvailable,\n isRollupAvailable,\n isTotalsAvailable,\n isSelectDistinctAvailable,\n isExportAvailable,\n toggleFilterBarAction,\n toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n canToggleSearch\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 (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n });\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 && canDownloadCsv) {\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 if (canToggleSearch) {\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\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 getCachedFormatColumns = memoize((columns, rules) =>\n getFormatColumns(columns, rules)\n );\n\n // customColumns arg is needed to invalidate the cache\n // eslint-disable-next-line no-unused-vars\n getCachedModelColumns = memoize((model, customColumns) => model.columns);\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param {Column[]} columns Array of columns\n * @param {FormattingRule[]} rulesParam Array of formatting rules\n * @param {FormattingRule?} preview Optional temporary formatting rule for previewing live changes\n * @param {Number|null} editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns {CustomColumn[]} Format columns array\n */\n getCachedPreviewFormatColumns = memoize(\n (columns, rulesParam, preview, editIndex) => {\n log.debug(\n 'getCachedPreviewFormatColumns',\n rulesParam,\n preview,\n editIndex\n );\n if (preview !== undefined && editIndex !== null) {\n const rules = [...rulesParam];\n rules[editIndex] = preview;\n return this.getCachedFormatColumns(columns, rules);\n }\n\n return this.getCachedFormatColumns(columns, rulesParam);\n }\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 (theme, isEditable) => ({\n ...IrisGridTheme,\n autoSelectRow: !isEditable,\n ...theme,\n }),\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, theme } = this.props;\n return this.getCachedTheme(theme, 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 { formatter } = model;\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 quickFilters.set(modelIndex, {\n text: value,\n filter: IrisGrid.makeQuickFilter(column, value, formatter.timeZone),\n });\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 const columnIndex = model.getColumnIndexByName(column.name);\n if (value === null) {\n this.setQuickFilter(columnIndex, 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 columnIndex,\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, formatter } = 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(\n column,\n options,\n formatter.timeZone\n );\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 newQuickFilters.set(key, {\n text,\n filter: IrisGrid.makeQuickFilter(column, text, formatter.timeZone),\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 const {\n defaultDecimalFormatOptions = {},\n defaultIntegerFormatOptions = {},\n truncateNumbersWithPound = false,\n } = settings;\n\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n const isDecimalFormattingChanged = !deepEqual(\n this.decimalFormatOptions,\n defaultDecimalFormatOptions\n );\n const isIntegerFormattingChanged = !deepEqual(\n this.integerFormatOptions,\n defaultIntegerFormatOptions\n );\n const isTruncateNumbersChanged =\n this.truncateNumbersWithPound !== truncateNumbersWithPound;\n if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged ||\n isTruncateNumbersChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns,\n columns,\n movedColumns,\n floatingLeftColumnCount,\n floatingRightColumnCount\n ) => {\n const floatingColumns = [];\n\n for (let i = 0; i < floatingLeftColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n\n for (let i = 0; i < floatingRightColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(columns.length - 1 - i, movedColumns)]\n .name\n );\n }\n\n const columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);\n\n return [...columnSet];\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 this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound\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 { canCopy } = this.props;\n if (canCopy) {\n const value = this.getValueForCell(columnIndex, rowIndex, rawValue);\n ContextActionUtils.copyToClipboard(value).catch(e =>\n log.error('Unable to copy cell', e)\n );\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @param {GridRange[]} ranges The ranges to copy\n * @param {boolean} includeHeaders Include the headers or not\n * @param {boolean} formatValues Whether to format values or not\n * @param {string|null} error Error message if one occurred\n */\n copyRanges(\n ranges,\n includeHeaders = false,\n formatValues = true,\n error = null\n ) {\n const { model, canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const { userColumnWidths } = metricCalculator;\n\n if (canCopy) {\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 } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\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 aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.lastLoadedConfig;\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n customColumns: [],\n quickFilters: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n rollupConfig: null,\n selectDistinctColumns: [],\n sorts: [],\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 focus() {\n if (this.grid) this.grid.focus();\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 freezeColumnByColumnName(columnName) {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('freezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.add(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size - 1,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n unFreezeColumnByColumnName(columnName) {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('unfreezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.delete(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size + model.frontColumns.length,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\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.updateSorts(sorts);\n }\n\n updateSorts(sorts) {\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 isTableSearchAvailable() {\n const { model, canToggleSearch } = this.props;\n const searchDisplayMode = model?.layoutHints?.searchDisplayMode;\n\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_HIDE) {\n return false;\n }\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_SHOW) {\n return true;\n }\n\n return canToggleSearch;\n }\n\n toggleSearchBar() {\n const { showSearchBar } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n\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 const { model } = this.props;\n this.setAdvancedFilter(\n model.getColumnIndexByName(column.name),\n filter,\n options\n );\n }\n\n handleAdvancedFilterSortChange(column, direction, addToExisting = false) {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\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);\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 aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.state;\n const config = {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\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 handleConditionalFormatsChange(conditionalFormats) {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({ conditionalFormats });\n }\n\n handleConditionalFormatCreate() {\n log.debug('Create new conditional format');\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Create Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined,\n });\n }\n\n handleConditionalFormatEdit(index) {\n log.debug('Edit conditional format', index);\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Edit Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: { ...conditionalFormats[index] },\n });\n }\n\n // Apply live changes\n handleConditionalFormatEditorUpdate(conditionalFormatPreview) {\n this.setState({ conditionalFormatPreview });\n }\n\n handleConditionalFormatEditorSave(config) {\n log.debug('Save conditional format changes', config);\n this.setState(\n state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n const conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return { conditionalFormats };\n },\n () => {\n this.handleMenuBack();\n }\n );\n }\n\n handleConditionalFormatEditorCancel() {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({ conditionalFormatEditIndex: null });\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 } = model;\n const oldCustomColumns = model.customColumns.map(\n customColumn => `${customColumn}`\n );\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 const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTableStart for user without download CSV permission.'\n );\n }\n }\n\n handleDownloadTable(...args) {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\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 } else {\n log.error(\n 'Attempted to handleDownloadTable for user without download CSV permission.'\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 handleOverflowClose() {\n this.setState({\n showOverflowModal: false,\n });\n }\n\n getColumnBoundingRect() {\n const { metrics, shownColumnTooltip } = this.state;\n const gridRect = this.gridWrapper.getBoundingClientRect();\n const popperMargin = 20;\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n width,\n } = metrics;\n const columnX = visibleColumnXs.get(shownColumnTooltip);\n const columnWidth = visibleColumnWidths.get(shownColumnTooltip);\n return {\n top: gridRect.top,\n left:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderHeight,\n right:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n };\n }\n\n getOverflowButtonTooltip = memoize(overflowButtonTooltipProps => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n\n const wrapperStyle = {\n position: 'absolute',\n ...overflowButtonTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right'],\n },\n },\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n View full contents\n </Tooltip>\n </div>\n );\n });\n\n render() {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart,\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 conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\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 frozenColumns,\n showOverflowModal,\n overflowText,\n overflowButtonTooltipProps,\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 && this.gridWrapper) {\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n width,\n } = metrics;\n const columnX = visibleColumnXs.get(shownColumnTooltip);\n const columnWidth = visibleColumnWidths.get(shownColumnTooltip);\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n const boundedLeft = Math.max(0, columnX);\n let boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n\n const wrapperStyle = {\n position: 'absolute',\n top: 0,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n const virtualReference = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect,\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 referenceObject={virtualReference}\n onExited={() => {\n this.setState({ shownColumnTooltip: null });\n }}\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 // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n this.tooltip?.update();\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 onCreateChart !== undefined && model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isFormatColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable()\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.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n columns={model.columns}\n rules={conditionalFormats}\n onChange={this.handleConditionalFormatsChange}\n onCreate={this.handleConditionalFormatCreate}\n onSelect={this.handleConditionalFormatEdit}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n return (\n <ConditionalFormatEditor\n columns={model.columns}\n rule={conditionalFormatPreview}\n onUpdate={this.handleConditionalFormatEditorUpdate}\n onSave={this.handleConditionalFormatEditorSave}\n onCancel={this.handleConditionalFormatEditorCancel}\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 isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\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 <IrisGridCellOverflowModal\n isOpen={showOverflowModal}\n text={overflowText}\n onClose={this.handleOverflowClose}\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={this.getAlwaysFetchColumns(\n alwaysFetchColumns,\n model.columns,\n movedColumns,\n model.floatingLeftColumnCount,\n model.floatingRightColumnCount\n )}\n formatColumns={this.getCachedPreviewFormatColumns(\n this.getCachedModelColumns(model, customColumns),\n conditionalFormats,\n conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n openOptions[openOptions.length - 1]?.type ===\n OptionType.CONDITIONAL_FORMATTING_EDIT\n ? conditionalFormatEditIndex\n : null\n )}\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 frozenColumns={frozenColumns}\n />\n )}\n <div\n className={classNames('grid-settings-button', {\n 'is-menu-shown': isMenuShown,\n })}\n >\n <button\n type=\"button\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\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 {this.getOverflowButtonTooltip(overflowButtonTooltipProps)}\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 conditionalFormats: PropTypes.arrayOf(PropTypes.shape({})),\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 // These settings come from the redux store\n settings: PropTypes.shape({\n timeZone: PropTypes.string.isRequired,\n defaultDateTimeFormat: PropTypes.string.isRequired,\n showTimeZone: PropTypes.bool.isRequired,\n showTSeparator: PropTypes.bool.isRequired,\n truncateNumbersWithPound: PropTypes.bool.isRequired,\n formatter: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n }),\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 isStuckToBottom: PropTypes.bool,\n isStuckToRight: 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 canCopy: PropTypes.bool,\n canDownloadCsv: PropTypes.bool,\n frozenColumns: PropTypes.arrayOf(PropTypes.string),\n\n // Theme override for IrisGridTheme\n theme: PropTypes.shape({}),\n\n canToggleSearch: PropTypes.bool,\n};\n\nIrisGrid.defaultProps = {\n children: null,\n advancedFilters: new Map(),\n advancedSettings: new Map(),\n alwaysFetchColumns: [],\n conditionalFormats: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: [],\n movedRows: [],\n inputFilters: [],\n customFilters: [],\n onCreateChart: undefined,\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: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: null,\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n onSelectionChanged: () => {},\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: 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: undefined,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n formatter: [],\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: {},\n canToggleSearch: true,\n};\n\nexport default IrisGrid;\n"],"file":"IrisGrid.js"}
1
+ {"version":3,"sources":["../src/IrisGrid.jsx"],"names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","Log","FontAwesomeIcon","ContextActionUtils","ContextActions","DeephavenSpinner","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Grid","GridRange","GridUtils","isExpandableGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","dh","APIPropTypes","DateUtils","Formatter","FormatterUtils","TableUtils","Pending","PromiseUtils","ValidationError","throttle","debounce","clamp","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridSortMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","IrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","IrisGridUtils","CrossColumnSearch","IrisGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","getFormatColumns","ConditionalFormatEditor","IrisGridCellOverflowModal","log","module","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","isEmptyConfig","advancedFilters","aggregationSettings","customColumns","quickFilters","reverseType","rollupConfig","searchFilter","selectDistinctColumns","sorts","size","length","REVERSE_TYPE","NONE","IrisGrid","makeQuickFilter","column","text","timeZone","err","error","constructor","props","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","handleAdvancedFilterChange","handleAdvancedFilterSortChange","handleAdvancedFilterDone","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","optionItems","push","type","CHART_BUILDER","title","icon","VISIBILITY_ORDERING_BUILDER","CONDITIONAL_FORMATTING","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","aggregationMap","forEach","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","name","newOperations","map","o","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","getModelRollupConfig","getOperationMap","operationOrder","getOperationOrder","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","customFilters","partitionFilters","getFiltersFromFilterMap","theme","isEditable","autoSelectRow","alwaysFetchColumns","movedColumns","floatingLeftColumnCount","floatingRightColumnCount","floatingColumns","i","getModelIndex","columnSet","Set","overflowButtonTooltipProps","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","Date","now","handleTooltipRef","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleUpdate","handleViewChanged","handleFormatSelection","handleConditionalFormatCreate","handleConditionalFormatEdit","handleConditionalFormatsChange","handleConditionalFormatEditorSave","handleConditionalFormatEditorUpdate","handleConditionalFormatEditorCancel","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadProgressUpdate","handleDownloadCompleted","handlePartitionAppend","handlePartitionChange","handlePartitionFetchAll","handlePartitionDone","handleColumnVisibilityChanged","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","getColumnBoundingRect","updateSearchFilter","grid","gridWrapper","lastFocusedFilterBarColumn","lastLoadedConfig","tooltip","pending","globalColumnFormats","dateTimeFormatterOptions","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","loadingScrimStartTime","loadingScrimFinishTime","loadingTimer","renderer","tableSaver","crossColumnRef","createRef","isAnimating","animationFrame","filterInputRef","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","discardAction","pendingDataMap","discardPending","catch","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","isSelectingPartition","movedColumnsProp","movedRows","movedRowsProp","partition","partitionColumn","userColumnWidths","userRowHeights","searchValue","selectedSearchColumns","invertSearchColumns","canCopy","frozenColumns","keyHandlers","mouseHandlers","metricCalculator","Map","searchColumns","createSearchFilter","state","focusedFilterBarColumn","metrics","partitionTable","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","loadingSpinnerShown","shownColumnTooltip","isMenuShown","conditionalFormatEditIndex","conditionalFormatPreview","isTableDownloading","isReady","tableDownloadStatus","tableDownloadProgress","tableDownloadEstimatedTime","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","overflowText","componentDidMount","find","c","isPartitionColumn","isFilterRequired","isValuesTableAvailable","loadPartitionsTable","initState","startListening","componentDidUpdate","prevProps","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","startLoading","applyInputFilters","resetColumnSelection","updateFormatterSettings","updateSorts","window","requestAnimationFrame","currentTime","totalTime","Math","min","setState","debug2","sendStateChange","componentWillUnmount","cancel","clearTimeout","cancelAnimationFrame","getValueForCell","columnIndex","rowIndex","rawValue","modelColumn","getModelColumn","modelRow","getModelRow","valueForCell","textForCell","modelColumns","modelRows","getTheme","getCachedTheme","getVisibleColumn","modelIndex","getVisibleIndex","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","value","findIndex","columnName","columnType","delete","applyQuickFilter","trim","quickFilter","set","setAdvancedFilter","options","setQuickFilter","setFilterMap","filterMap","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","getColumnIndexByName","removeQuickFilter","isNull","filterValue","isTextType","FilterValue","ofString","ofNumber","eq","removeColumnFilter","current","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","forceUpdate","getColumnFormats","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","updateFormatter","updatedFormats","update","mergedColumnFormats","values","initFormatter","applyInputFiltersOnInit","inputFiltersWithValues","add","valuesTable","resolved","close","sort","desc","applySort","setViewport","data","getViewportData","rows","row","updatePartition","info","handleTableLoadError","partitionFilter","copyCell","copyToClipboard","e","copyRanges","ranges","includeHeaders","formatValues","boundedRanges","columnCount","rowCount","resetRanges","clearSelectedRanges","setViewState","top","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","stopLoading","rollback","canRollback","addEventListener","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","removeEventListener","focus","focusFilterBar","isFilterable","gridX","left","rightVisible","lastLeft","metricState","getMetricState","newLeft","getLastLeft","hideColumnByVisibleIndex","columnVisibleIndex","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","visibilityOption","VISIBILITY_OPTIONS","SHOW","resetColumnWidth","updateCanvasScale","updateCanvas","onPartitionAppend","isCanceled","onError","showAllColumns","entries","columnWidth","toggleSort","addToExisting","currentSorts","toggleSortForColumn","table","sortColumn","direction","isAbs","reverse","isReversible","focusIndex","isTableSearchAvailable","searchDisplayMode","layoutHints","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","Error","document","activeElement","classList","contains","newPendingSavePromise","then","selectColumn","onColumnSelected","selectData","groupedColumns","dataMap","isExpandable","isRowExpandable","isGrouped","onDataSelected","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","onCreateChart","warn","setGridFocus","defocusInput","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","newOptions","pop","option","event","detail","bottomViewport","selectionEndRow","bottomNonFloating","floatingBottomRowCount","floatingTopRowCount","onSelectionChanged","onChangeApplied","startTimer","CONDITIONAL_FORMATTING_EDIT","index","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","aggregation","AGGREGATION_EDIT","resetGridViewState","columnNames","DOWNLOAD_STATUS","INITIATING","args","startDownload","DOWNLOADING","cancelDownload","FINISHED","CANCELED","deleteRanges","columnAllowedCursor","cursor","CURSOR_TYPE_DEFAULT","topOffset","leftOffset","irisGridState","gridState","onStateChange","gridRect","popperMargin","columnHeaderHeight","visibleColumnXs","visibleColumnWidths","width","columnX","bottom","right","render","children","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","getCachedFilter","stateOverride","getCachedStateOverride","isVisible","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridY","x","y","filterBarHeight","fieldWidth","fieldHeight","style","minWidth","isValid","advancedFilter","isBarFiltered","active","handleContextMenu","loadingElement","loadingStatus","loader","cancelButton","show","columnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","filterBar","visibleColumns","isFilterSet","isFilterVisible","element","hidden","advancedFilterMenus","xColumnHeader","xFilterBar","getAdvancedMenuOpenedHandler","getCachedAdvancedFilterMenuActions","getCachedOptionItems","openOptionsStack","getCachedHiddenColumns","getHiddenColumns","transitionSlowMs","displayString","getAlwaysFetchColumns","getCachedPreviewFormatColumns","getCachedModelColumns","getModelTotalsConfig","getOverflowButtonTooltip","transitionMidMs","propTypes","node","instanceOf","arrayOf","string","bool","shape","from","number","isRequired","to","func","Column","defaultDateTimeFormat","showTimeZone","showTSeparator","showConstituents","showNonAggregatedColumns","includeDescriptions","columnSelectionValidator","columnNotAllowedCursor","onContextMenu","defaultProps","FULL_DATE_FORMAT","defaultFormatString"],"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 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 {\n Grid,\n GridRange,\n GridUtils,\n isExpandableGridModel,\n} from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsCloudDownload,\n vsEdit,\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 {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport { Pending, PromiseUtils, ValidationError } from '@deephaven/utils';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\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 IrisGridCellOverflowMouseHandler,\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 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';\nimport ConditionalFormattingMenu from './sidebar/conditional-formatting/ConditionalFormattingMenu';\nimport { getFormatColumns } from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport ConditionalFormatEditor from './sidebar/conditional-formatting/ConditionalFormatEditor';\nimport IrisGridCellOverflowModal from './IrisGridCellOverflowModal';\n\nconst log = Log.module('IrisGrid');\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: [],\n showOnTop: false,\n});\n\nfunction isEmptyConfig({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n}) {\n return (\n advancedFilters.size === 0 &&\n aggregationSettings.aggregations.length === 0 &&\n customColumns.length === 0 &&\n quickFilters.size === 0 &&\n reverseType === TableUtils.REVERSE_TYPE.NONE &&\n rollupConfig == null &&\n searchFilter == null &&\n selectDistinctColumns.length === 0 &&\n sorts.length === 0\n );\n}\n\nexport class IrisGrid extends Component {\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static makeQuickFilter(column, text, timeZone) {\n try {\n return TableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\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 this.handleConditionalFormatCreate = this.handleConditionalFormatCreate.bind(\n this\n );\n this.handleConditionalFormatEdit = this.handleConditionalFormatEdit.bind(\n this\n );\n this.handleConditionalFormatsChange = this.handleConditionalFormatsChange.bind(\n this\n );\n this.handleConditionalFormatEditorSave = this.handleConditionalFormatEditorSave.bind(\n this\n );\n this.handleConditionalFormatEditorUpdate = debounce(\n this.handleConditionalFormatEditorUpdate.bind(this),\n SET_CONDITIONAL_FORMAT_DEBOUNCE\n );\n this.handleConditionalFormatEditorCancel = this.handleConditionalFormatEditorCancel.bind(\n 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 this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.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 this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\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 {\n aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\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 canCopy,\n frozenColumns,\n } = props;\n\n const keyHandlers = [\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n }\n const mouseHandlers = [\n new IrisGridCellOverflowMouseHandler(this),\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\n const movedColumns =\n movedColumnsProp.length > 0 ? movedColumnsProp : model.movedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.movedRows;\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns,\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 conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\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 frozenColumns,\n showOverflowModal: false,\n overflowText: '',\n overflowButtonTooltipProps: 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 sorts,\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.startLoading('Filtering...', true);\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 if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\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 isFormatColumnsAvailable,\n isRollupAvailable,\n isTotalsAvailable,\n isSelectDistinctAvailable,\n isExportAvailable,\n toggleFilterBarAction,\n toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n canToggleSearch\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 (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n });\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 && canDownloadCsv) {\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 if (canToggleSearch) {\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\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 getCachedFormatColumns = memoize((columns, rules) =>\n getFormatColumns(columns, rules)\n );\n\n // customColumns arg is needed to invalidate the cache\n // eslint-disable-next-line no-unused-vars\n getCachedModelColumns = memoize((model, customColumns) => model.columns);\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param {Column[]} columns Array of columns\n * @param {FormattingRule[]} rulesParam Array of formatting rules\n * @param {FormattingRule?} preview Optional temporary formatting rule for previewing live changes\n * @param {Number|null} editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns {CustomColumn[]} Format columns array\n */\n getCachedPreviewFormatColumns = memoize(\n (columns, rulesParam, preview, editIndex) => {\n log.debug(\n 'getCachedPreviewFormatColumns',\n rulesParam,\n preview,\n editIndex\n );\n if (preview !== undefined && editIndex !== null) {\n const rules = [...rulesParam];\n rules[editIndex] = preview;\n return this.getCachedFormatColumns(columns, rules);\n }\n\n return this.getCachedFormatColumns(columns, rulesParam);\n }\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 (theme, isEditable) => ({\n ...IrisGridTheme,\n autoSelectRow: !isEditable,\n ...theme,\n }),\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, theme } = this.props;\n return this.getCachedTheme(theme, 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 { formatter } = model;\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 quickFilters.set(modelIndex, {\n text: value,\n filter: IrisGrid.makeQuickFilter(column, value, formatter.timeZone),\n });\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 const columnIndex = model.getColumnIndexByName(column.name);\n if (value === undefined) {\n this.removeQuickFilter(columnIndex);\n } else if (value === null) {\n this.setQuickFilter(columnIndex, 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 columnIndex,\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 removeQuickFilter(modelColumn) {\n this.startLoading('Clearing Filter...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n\n return { quickFilters: newQuickFilters };\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, formatter } = 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(\n column,\n options,\n formatter.timeZone\n );\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 newQuickFilters.set(key, {\n text,\n filter: IrisGrid.makeQuickFilter(column, text, formatter.timeZone),\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 const {\n defaultDecimalFormatOptions = {},\n defaultIntegerFormatOptions = {},\n truncateNumbersWithPound = false,\n } = settings;\n\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n const isDecimalFormattingChanged = !deepEqual(\n this.decimalFormatOptions,\n defaultDecimalFormatOptions\n );\n const isIntegerFormattingChanged = !deepEqual(\n this.integerFormatOptions,\n defaultIntegerFormatOptions\n );\n const isTruncateNumbersChanged =\n this.truncateNumbersWithPound !== truncateNumbersWithPound;\n if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged ||\n isTruncateNumbersChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns,\n columns,\n movedColumns,\n floatingLeftColumnCount,\n floatingRightColumnCount\n ) => {\n const floatingColumns = [];\n\n for (let i = 0; i < floatingLeftColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n\n for (let i = 0; i < floatingRightColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(columns.length - 1 - i, movedColumns)]\n .name\n );\n }\n\n const columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);\n\n return [...columnSet];\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 this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound\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 { canCopy } = this.props;\n if (canCopy) {\n const value = this.getValueForCell(columnIndex, rowIndex, rawValue);\n ContextActionUtils.copyToClipboard(value).catch(e =>\n log.error('Unable to copy cell', e)\n );\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @param {GridRange[]} ranges The ranges to copy\n * @param {boolean} includeHeaders Include the headers or not\n * @param {boolean} formatValues Whether to format values or not\n * @param {string|null} error Error message if one occurred\n */\n copyRanges(\n ranges,\n includeHeaders = false,\n formatValues = true,\n error = null\n ) {\n const { model, canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const { userColumnWidths } = metricCalculator;\n\n if (canCopy) {\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 } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\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 aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.lastLoadedConfig;\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n customColumns: [],\n quickFilters: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n rollupConfig: null,\n selectDistinctColumns: [],\n sorts: [],\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 focus() {\n if (this.grid) this.grid.focus();\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 freezeColumnByColumnName(columnName) {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('freezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.add(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size - 1,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n unFreezeColumnByColumnName(columnName) {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('unfreezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.delete(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size + model.frontColumns.length,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\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.updateSorts(sorts);\n }\n\n updateSorts(sorts) {\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 isTableSearchAvailable() {\n const { model, canToggleSearch } = this.props;\n const searchDisplayMode = model?.layoutHints?.searchDisplayMode;\n\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_HIDE) {\n return false;\n }\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_SHOW) {\n return true;\n }\n\n return canToggleSearch;\n }\n\n toggleSearchBar() {\n const { showSearchBar } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n\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, groupedColumns } = 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 const isExpandable =\n isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n const isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = { value, text, type, isGrouped, isExpandable };\n }\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n handleAdvancedFilterChange(column, filter, options) {\n const { model } = this.props;\n this.setAdvancedFilter(\n model.getColumnIndexByName(column.name),\n filter,\n options\n );\n }\n\n handleAdvancedFilterSortChange(column, direction, addToExisting = false) {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\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);\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 aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.state;\n const config = {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\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 handleConditionalFormatsChange(conditionalFormats) {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({ conditionalFormats });\n }\n\n handleConditionalFormatCreate() {\n log.debug('Create new conditional format');\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Create Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined,\n });\n }\n\n handleConditionalFormatEdit(index) {\n log.debug('Edit conditional format', index);\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Edit Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: { ...conditionalFormats[index] },\n });\n }\n\n // Apply live changes\n handleConditionalFormatEditorUpdate(conditionalFormatPreview) {\n this.setState({ conditionalFormatPreview });\n }\n\n handleConditionalFormatEditorSave(config) {\n log.debug('Save conditional format changes', config);\n this.setState(\n state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n const conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return { conditionalFormats };\n },\n () => {\n this.handleMenuBack();\n }\n );\n }\n\n handleConditionalFormatEditorCancel() {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({ conditionalFormatEditIndex: null });\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 } = model;\n const oldCustomColumns = model.customColumns.map(\n customColumn => `${customColumn}`\n );\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 const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTableStart for user without download CSV permission.'\n );\n }\n }\n\n handleDownloadTable(...args) {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\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 } else {\n log.error(\n 'Attempted to handleDownloadTable for user without download CSV permission.'\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 handleOverflowClose() {\n this.setState({\n showOverflowModal: false,\n });\n }\n\n getColumnBoundingRect() {\n const { metrics, shownColumnTooltip } = this.state;\n const gridRect = this.gridWrapper.getBoundingClientRect();\n const popperMargin = 20;\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n width,\n } = metrics;\n const columnX = visibleColumnXs.get(shownColumnTooltip);\n const columnWidth = visibleColumnWidths.get(shownColumnTooltip);\n return {\n top: gridRect.top,\n left:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderHeight,\n right:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n };\n }\n\n getOverflowButtonTooltip = memoize(overflowButtonTooltipProps => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n\n const wrapperStyle = {\n position: 'absolute',\n ...overflowButtonTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right'],\n },\n },\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n View full contents\n </Tooltip>\n </div>\n );\n });\n\n render() {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart,\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 conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\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 frozenColumns,\n showOverflowModal,\n overflowText,\n overflowButtonTooltipProps,\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 && this.gridWrapper) {\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n width,\n } = metrics;\n const columnX = visibleColumnXs.get(shownColumnTooltip);\n const columnWidth = visibleColumnWidths.get(shownColumnTooltip);\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n const boundedLeft = Math.max(0, columnX);\n let boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n\n const wrapperStyle = {\n position: 'absolute',\n top: 0,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n const virtualReference = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect,\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 referenceObject={virtualReference}\n onExited={() => {\n this.setState({ shownColumnTooltip: null });\n }}\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 // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n this.tooltip?.update();\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 onCreateChart !== undefined && model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isFormatColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable()\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.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n columns={model.columns}\n rules={conditionalFormats}\n onChange={this.handleConditionalFormatsChange}\n onCreate={this.handleConditionalFormatCreate}\n onSelect={this.handleConditionalFormatEdit}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n return (\n <ConditionalFormatEditor\n columns={model.columns}\n rule={conditionalFormatPreview}\n onUpdate={this.handleConditionalFormatEditorUpdate}\n onSave={this.handleConditionalFormatEditorSave}\n onCancel={this.handleConditionalFormatEditorCancel}\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 isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\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 <IrisGridCellOverflowModal\n isOpen={showOverflowModal}\n text={overflowText}\n onClose={this.handleOverflowClose}\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={this.getAlwaysFetchColumns(\n alwaysFetchColumns,\n model.columns,\n movedColumns,\n model.floatingLeftColumnCount,\n model.floatingRightColumnCount\n )}\n formatColumns={this.getCachedPreviewFormatColumns(\n this.getCachedModelColumns(model, customColumns),\n conditionalFormats,\n conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n openOptions[openOptions.length - 1]?.type ===\n OptionType.CONDITIONAL_FORMATTING_EDIT\n ? conditionalFormatEditIndex\n : null\n )}\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 frozenColumns={frozenColumns}\n />\n )}\n <div\n className={classNames('grid-settings-button', {\n 'is-menu-shown': isMenuShown,\n })}\n >\n <button\n type=\"button\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\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 {this.getOverflowButtonTooltip(overflowButtonTooltipProps)}\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 conditionalFormats: PropTypes.arrayOf(PropTypes.shape({})),\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 // These settings come from the redux store\n settings: PropTypes.shape({\n timeZone: PropTypes.string.isRequired,\n defaultDateTimeFormat: PropTypes.string.isRequired,\n showTimeZone: PropTypes.bool.isRequired,\n showTSeparator: PropTypes.bool.isRequired,\n truncateNumbersWithPound: PropTypes.bool.isRequired,\n formatter: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n }),\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 isStuckToBottom: PropTypes.bool,\n isStuckToRight: 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 canCopy: PropTypes.bool,\n canDownloadCsv: PropTypes.bool,\n frozenColumns: PropTypes.arrayOf(PropTypes.string),\n\n // Theme override for IrisGridTheme\n theme: PropTypes.shape({}),\n\n canToggleSearch: PropTypes.bool,\n};\n\nIrisGrid.defaultProps = {\n children: null,\n advancedFilters: new Map(),\n advancedSettings: new Map(),\n alwaysFetchColumns: [],\n conditionalFormats: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: [],\n movedRows: [],\n inputFilters: [],\n customFilters: [],\n onCreateChart: undefined,\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: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: null,\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n onSelectionChanged: () => {},\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: 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: undefined,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n formatter: [],\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: {},\n canToggleSearch: true,\n};\n\nexport default IrisGrid;\n"],"file":"IrisGrid.js"}