@deephaven/iris-grid 0.86.1-beta.0 → 0.87.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IrisGrid.d.ts +9 -2
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +36 -7
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +7 -3
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +1 -1
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTheme.d.ts +8 -2
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js +22 -4
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridThemeProvider.d.ts +6 -2
- package/dist/IrisGridThemeProvider.d.ts.map +1 -1
- package/dist/IrisGridThemeProvider.js +15 -4
- package/dist/IrisGridThemeProvider.js.map +1 -1
- package/dist/LazyIrisGrid.d.ts +2 -1
- package/dist/LazyIrisGrid.d.ts.map +1 -1
- package/package.json +15 -15
package/dist/IrisGrid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGrid.js","names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","Log","FontAwesomeIcon","ContextActions","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Button","ContextActionUtils","SlideTransition","Grid","GridRange","GridUtils","isEditableGridModel","isExpandableGridModel","isDeletableGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsClose","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","DateUtils","Formatter","FormatterUtils","TableUtils","isSortDirection","assertNotNull","copyToClipboard","EMPTY_ARRAY","EMPTY_MAP","Pending","PromiseUtils","ValidationError","getOrThrow","Type","FilterType","throttle","debounce","clamp","getFormatColumns","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","CopyCellKeyHandler","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridCopyCellMouseHandler","IrisGridDataSelectMouseHandler","IrisGridPartitionedTableMouseHandler","IrisGridFilterMouseHandler","IrisGridRowTreeMouseHandler","IrisGridSortMouseHandler","IrisGridTokenMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","createDefaultIrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","DownloadServiceWorkerUtils","IrisGridUtils","CrossColumnSearch","IrisGridModel","isPartitionedGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","AggregationOperation","IrisGridThemeContext","isMissingPartitionError","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","VIEWPORT_LOADING_DELAY","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","UNFORMATTED_DATE_PATTERN","isEmptyConfig","_ref","advancedFilters","aggregationSettings","customColumns","quickFilters","reverseType","rollupConfig","searchFilter","selectDistinctColumns","sorts","size","length","REVERSE_TYPE","NONE","IrisGrid","constructor","props","_model$layoutHints","_model$layoutHints$hi","_model$columns$0$name","_model$columns$","_defineProperty","column","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","onFilterChange","handleAdvancedFilterChange","onSortChange","handleAdvancedFilterSortChange","onDone","handleAdvancedFilterDone","options","tableUtils","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","toggleGotoRowAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","showGotoRow","hasAdvancedSettings","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","GOTO","metricCalculator","userColumnWidths","getHiddenColumns","Map","initialColumnWidths","columns","aggregationMap","forEach","_ref2","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","_ref3","name","_operationMap$name","newOperations","map","o","dh","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","getModelRollupConfig","_config$columns$lengt","_config$columns","agg","getOperationMap","operationOrder","getOperationOrder","defaultOperation","SKIP","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","getFiltersFromFilterMap","contextTheme","theme","isEditable","floatingRowCount","_theme$rowFooterWidth","defaultTheme","rowFooterWidth","_objectSpread","autoSelectRow","keyHandlers","sort","b","order","mouseHandlers","rendererProp","alwaysFetchColumns","movedColumns","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","i","getModelIndex","columnSet","Set","searchValue","selectedSearchColumns","invertSearchColumns","createSearchFilter","setState","loadingSpinnerShown","state","isViewportPending","startLoading","loadingCancelShown","loadingBlocksGrid","leading","trailing","conditionalFormatPreview","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","DOWNLOAD_STATUS","DOWNLOADING","overflowButtonTooltipProps","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","style","children","ref","handleTooltipRef","Date","now","expandCellTooltipProps","expandTooltipDisplayValue","isExpandAllAvailable","textAlign","isMacPlatform","linkHoverTooltipProps","linkHoverDisplayValue","className","input","gotoValue","gotoValueManuallyChanged","debouncedSeekRow","seekRow","handleGotoRowOpened","handleGotoRowClosed","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleHeaderGroupsChanged","handleUpdate","handleViewChanged","handleFormatSelection","handleConditionalFormatCreate","handleConditionalFormatEdit","handleConditionalFormatsChange","handleConditionalFormatEditorSave","handleConditionalFormatEditorCancel","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handleViewportUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleGotoRowSelectedRowNumberSubmit","focusRowInGrid","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadCompleted","handlePartitionChange","handleColumnVisibilityChanged","handleColumnVisibilityReset","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","getColumnBoundingRect","handleGotoRowSelectedRowNumberChanged","handleGotoValueSelectedColumnNameChanged","handleGotoValueSelectedFilterChanged","handleGotoValueChanged","handleGotoValueSubmitted","makeQuickFilter","grid","lastLoadedConfig","pending","globalColumnFormats","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","tableSaver","crossColumnRef","createRef","isAnimating","filterInputRef","gotoRowRef","isCopying","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","toggleGotoRow","GOTO_ROW","discardAction","pendingDataMap","discardPending","catch","error","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","isSelectingPartition","partitions","partitionConfig","movedColumnsProp","movedRows","movedRowsProp","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","initialMovedColumns","initialMovedRows","layoutHints","hiddenColumns","getColumnIndexByName","searchColumns","focusedFilterBarColumn","metrics","mode","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","shownColumnTooltip","conditionalFormatEditIndex","isTableDownloading","isReady","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","overflowText","isGotoShown","gotoRow","gotoRowError","gotoValueError","gotoValueSelectedColumnName","gotoValueSelectedFilter","eqIgnoreCase","initialColumnHeaderGroups","componentDidMount","initState","startListening","componentDidUpdate","prevProps","prevState","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","_advancedSettings$get","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","resetRanges","applyInputFilters","resetColumnSelection","updateFormatterSettings","updateSorts","loadingScrimStartTime","loadingScrimFinishTime","window","requestAnimationFrame","currentTime","totalTime","Math","min","debug2","isAggEditType","option","AGGREGATION_EDIT","some","removeEmptyAggregations","sendStateChange","componentWillUnmount","cancel","updateSearchFilter","loadingTimer","clearTimeout","handleDownloadProgressUpdate","animationFrame","cancelAnimationFrame","showViewportLoading","gridWrapper","_this$grid$canvasWrap","_this$grid","canvasWrapper","current","getKeyHandlers","getCachedKeyHandlers","renderer","getCachedRenderer","getMouseHandlers","getCachedMouseHandlers","getValueForCell","columnIndex","rowIndex","rawValue","arguments","modelColumn","getModelColumn","modelRow","getModelRow","value","valueForCell","isDateType","i18n","DateTimeFormat","format","TimeZone","getTimeZone","timeZone","textForCell","modelColumns","modelRows","getTheme","_ref4","getCachedTheme","context","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","text","err","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","_ref5","findIndex","_ref6","columnName","columnType","delete","applyQuickFilter","concat","trim","quickFilter","set","setAdvancedFilterMap","setAdvancedFilter","_ref7","setQuickFilter","_ref8","setFilterMap","filterMap","_advancedSettings$get2","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","_ref9","filterList","find","c","combinedText","combineFiltersFromList","removeQuickFilter","removeColumnFilter","modelRange","clearRange","Array","isArray","_ref10","_","_ref11","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","_ref12","_settings$defaultDeci","_settings$defaultInte","_settings$truncateNum","_settings$showEmptySt","_settings$showNullStr","forceUpdate","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","isShowEmptyStringsChanged","isShowNullStringsChanged","updateFormatter","updatedFormats","_this$globalColumnFor","update","mergedColumnFormats","values","initFormatter","isPartitionRequired","loadPartitionsTable","loadTableState","handleTableLoadError","applyInputFiltersOnInit","inputFiltersWithValues","_this","_asyncToGenerator","initializePartitionConfig","isCanceled","_this2","keyTable","add","partitionKeysTable","resolved","close","desc","applySort","setViewport","addEventListener","Table","EVENT_UPDATED","event","detail","data","rows","stopLoading","row","newPartition","isPartitionAwareSourceTable","e","selectPartitionKeyFromTable","getRowDataMap","partitionColumnSet","partitionColumns","entries","_ref13","has","_ref14","columnData","copyCell","String","copyColumnHeader","columnDepth","copyRanges","ranges","includeHeaders","formatValues","getUserColumnWidths","boundedRanges","columnCount","rowCount","clearSelectedRanges","setViewState","top","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","rollback","canRollback","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","VIEWPORT_UPDATED","removeEventListener","focus","_this$grid2","focusFilterBar","isFilterable","left","rightVisible","lastLeft","_this$grid3","_this$grid4","_this$grid5","metricState","getMetricState","newLeft","getLastLeft","getVisibleWidth","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","_this$grid6","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","isVisible","_this$grid7","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","_model$layoutHints$fr","_model$layoutHints2","_this$grid8","updateCanvas","prevConfig","onError","loadingMessage","showAllColumns","_this$grid9","columnWidth","toggleSort","addToExisting","info","isColumnSortable","currentSorts","toggleSortForColumn","_this$grid10","sortColumn","_this$grid11","direction","none","isAbs","reverse","_this$grid12","isReversible","focusIndex","isTextType","_this$grid13","isTableSearchAvailable","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","searchDisplayMode","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","_this$crossColumnRef","_this$crossColumnRef2","_this$grid14","_this$grid15","_this$grid16","_this$gotoRowRef$curr","cursorRow","cursorColumn","cellValue","convertValueToText","_this3","_document","_document$activeEleme","Error","containsGridCellInputField","document","activeElement","classList","contains","_this3$grid","newPendingSavePromise","then","_this4","selectColumn","onColumnSelected","selectData","dataMap","onDataSelected","_this5","groupedColumns","_loop","isExpandable","isRowExpandable","isGrouped","index","_this$grid17","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","_this$grid18","_this$filterInputRef","_this$filterInputRef2","onCreateChart","warn","_ref15","setGridFocus","defocusInput","_this$grid19","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","stopPropagation","_ref16","newOptions","pop","_ref17","_this$grid20","_this$grid$state","_this$grid21","selectionEndRow","bottomViewport","bottomNonFloating","_this$grid22","onSelectionChanged","onChangeApplied","parseColumnHeaderGroups","groups","_this$grid23","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","_this$grid24","_this$grid25","join","aggregation","_ref18","_rollupConfig$columns","_rollupConfig$columns2","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","_ref19","newAggregations","inputString","_arguments","_this6","_this6$grid","isBackwards","selectedColumnName","isSeekRowAvailable","selectedColumn","getColumnByName","searchFromRow","isContains","containsIgnoreCase","isIgnoreCase","_this6$grid2","columnDataType","dataType","CHAR","STRING","ValueType","DATETIME","startDate","parseDateRange","DECIMAL","INT","isBigDecimalType","isBigIntegerType","inputValue","parseInt","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","NUMBER","makeValue","setFocusRow","_this$tableSaver","cancelDownload","FINISHED","CANCELED","deleteRanges","isDeletable","columnAllowedCursor","cursor","topOffset","irisGridState","gridState","onStateChange","_this$gridWrapper2","gridRect","popperMargin","columnHeaderHeight","allColumnXs","allColumnWidths","width","columnHeaderMaxDepth","columnX","bottom","right","x","y","toJSON","rowNumber","rowInt","_this$grid26","_this$grid27","_this$grid28","target","getColumnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","timeout","interactive","referenceObject","onExited","onStatistics","_this$tooltip","_this$grid29","prevColumnName","prevColumn","render","_rollupConfig$columns3","_rollupConfig$columns4","_this7","_this$grid31","_this$grid31$state$dr","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","getCachedFilter","stateOverride","getCachedStateOverride","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridX","gridY","_theme$filterBarHeigh","_theme$filterBarHeigh2","_this$grid30","filterBarHeight","fieldWidth","fieldHeight","minWidth","isValid","advancedFilter","isBarFiltered","active","isAdvancedFilterSet","onAdvancedFiltersTriggered","onTab","onContextMenu","handleContextMenu","loadingElement","loadingStatus","show","onClick","transform","columnTooltip","_this$tooltip2","filterBar","visibleColumns","_loop2","isFilterSet","isFilterVisible","element","hidden","kind","_this7$grid","onMouseEnter","onMouseLeave","advancedFilterMenus","_loop3","xColumnHeader","xFilterBar","onEntered","getAdvancedMenuOpenedHandler","isShown","closeOnBlur","positionFixed","getCachedAdvancedFilterMenuActions","_ret","getCachedOptionItems","getCachedHiddenColumns","openOptionsStack","onSubmit","onColumnVisibilityChanged","onReset","onMovedColumnsChanged","onColumnHeaderGroupChanged","onCreate","onSelect","handleConditionalFormatEditorUpdate","rule","onUpdate","onSave","onCancel","onEdit","isDownloading","onDownload","onDownloadStart","items","role","in","transitionSlowMs","onEnter","onExit","mountOnEnter","unmountOnExit","selectedColumns","invertSelection","isStickyBottom","onViewChanged","isOpen","onClose","getAlwaysFetchColumns","draggingColumn","range","formatColumns","getCachedPreviewFormatColumns","totalsConfig","getModelTotalsConfig","getOverflowButtonTooltip","getExpandCellTooltip","getLinkHoverTooltip","onGotoRowSubmit","onGotoRowNumberChanged","onEntering","onExiting","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","isSaving","saveTooltip","discardTooltip","onDiscard","onDownloadCompleted","onDownloadCanceled","onDownloadProgressUpdate","onBack","actions","columnSelectionValidator","columnNotAllowedCursor","copyCursor","getServiceWorker","defaultDateTimeFormat","FULL_DATE_FORMAT","showTimeZone","showTSeparator","shape","defaultFormatString","string"],"sources":["../src/IrisGrid.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n Component,\n CSSProperties,\n ReactElement,\n ReactNode,\n} from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'fast-deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActions,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n ContextAction,\n PopperOptions,\n ReferenceObject,\n Button,\n ContextActionUtils,\n ResolvableContextAction,\n SlideTransition,\n} from '@deephaven/components';\nimport {\n Grid,\n GridMetrics,\n GridMouseHandler,\n GridRange,\n GridRangeIndex,\n GridThemeType,\n GridUtils,\n KeyHandler,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n VisibleIndex,\n GridState,\n isEditableGridModel,\n BoundedAxisRange,\n isExpandableGridModel,\n isDeletableGridModel,\n} from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsClose,\n vsCloudDownload,\n vsEdit,\n vsFilter,\n vsMenu,\n vsReply,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n FormattingRule,\n ReverseType,\n RowDataMap,\n SortDirection,\n DateTimeColumnFormatterOptions,\n TableColumnFormat,\n Settings,\n isSortDirection,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n copyToClipboard,\n EMPTY_ARRAY,\n EMPTY_MAP,\n Pending,\n PromiseUtils,\n ValidationError,\n getOrThrow,\n} from '@deephaven/utils';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport {\n FormattingRule as SidebarFormattingRule,\n getFormatColumns,\n} from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler, { CopyOperation } from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n CopyCellKeyHandler,\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridCellOverflowMouseHandler,\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridCopyCellMouseHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridPartitionedTableMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridRowTreeMouseHandler,\n IrisGridSortMouseHandler,\n IrisGridTokenMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport { createDefaultIrisGridTheme, IrisGridThemeType } 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 DownloadServiceWorkerUtils,\n} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport {\n isPartitionedGridModel,\n PartitionConfig,\n PartitionedGridModel,\n} from './PartitionedGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu, {\n AdvancedSettingsMenuCallback,\n} from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\nimport ConditionalFormattingMenu from './sidebar/conditional-formatting/ConditionalFormattingMenu';\n\nimport ConditionalFormatEditor from './sidebar/conditional-formatting/ConditionalFormatEditor';\nimport IrisGridCellOverflowModal from './IrisGridCellOverflowModal';\nimport GotoRow, { GotoRowElement } from './GotoRow';\nimport {\n Aggregation,\n AggregationSettings,\n} from './sidebar/aggregations/Aggregations';\nimport { ChartBuilderSettings } from './sidebar/ChartBuilder';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { UIRollupConfig } from './sidebar/RollupRows';\nimport {\n Action,\n AdvancedFilterMap,\n AdvancedFilterOptions,\n ColumnName,\n InputFilter,\n OperationMap,\n OptionItem,\n PendingDataErrorMap,\n PendingDataMap,\n QuickFilterMap,\n ReadonlyAdvancedFilterMap,\n ReadonlyAggregationMap,\n ReadonlyQuickFilterMap,\n UITotalsTableConfig,\n} from './CommonTypes';\nimport ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { IrisGridThemeContext } from './IrisGridThemeProvider';\nimport { isMissingPartitionError } from './MissingPartitionError';\n\nconst log = Log.module('IrisGrid');\n\nconst VIEWPORT_LOADING_DELAY = 500;\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SEEK_ROW_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false,\n});\n\nconst UNFORMATTED_DATE_PATTERN = `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z`;\n\nfunction isEmptyConfig({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n}: {\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n customColumns: readonly ColumnName[];\n quickFilters: ReadonlyQuickFilterMap;\n reverseType: ReverseType;\n rollupConfig?: UIRollupConfig;\n searchFilter?: DhType.FilterCondition;\n selectDistinctColumns: readonly ColumnName[];\n sorts: readonly DhType.Sort[];\n}): boolean {\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 type FilterData = {\n operator: FilterTypeValue;\n text: string;\n value: unknown;\n startColumnIndex: number;\n};\n\nexport type FilterMap = Map<\n ColumnName,\n {\n columnType: string;\n filterList: FilterData[];\n }\n>;\n\nexport interface IrisGridContextMenuData {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: DhType.Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow: GridRangeIndex;\n modelColumn: GridRangeIndex;\n}\n\nexport interface IrisGridProps {\n children: React.ReactNode;\n advancedFilters: ReadonlyAdvancedFilterMap;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n alwaysFetchColumns: readonly ColumnName[];\n isFilterBarShown: boolean;\n applyInputFiltersOnInit: boolean;\n conditionalFormats: readonly SidebarFormattingRule[];\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n inputFilters: readonly InputFilter[];\n customFilters: readonly DhType.FilterCondition[];\n model: IrisGridModel;\n onCreateChart: (settings: ChartBuilderSettings, model: IrisGridModel) => void;\n onColumnSelected: (column: DhType.Column) => void;\n onError: (error: unknown) => void;\n onDataSelected: (index: ModelIndex, map: RowDataMap) => void;\n onStateChange: (irisGridState: IrisGridState, gridState: GridState) => void;\n onAdvancedSettingsChange: AdvancedSettingsMenuCallback;\n\n /** @deprecated use `partitionConfig` instead */\n partitions?: (string | null)[];\n partitionConfig?: PartitionConfig;\n sorts: readonly DhType.Sort[];\n reverseType: ReverseType;\n quickFilters: ReadonlyQuickFilterMap | null;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n settings?: Settings;\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n onSelectionChanged: (gridRanges: readonly GridRange[]) => void;\n rollupConfig?: UIRollupConfig;\n aggregationSettings: AggregationSettings;\n\n isSelectingColumn: boolean;\n isSelectingPartition: boolean;\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator: (value: DhType.Column | null) => boolean;\n columnAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n copyCursor: string;\n name: string;\n onlyFetchVisibleColumns: boolean;\n\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: (\n data: IrisGridContextMenuData\n ) => readonly ResolvableContextAction[];\n\n pendingDataMap?: PendingDataMap;\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n canCopy: boolean;\n canDownloadCsv: boolean;\n frozenColumns: readonly ColumnName[];\n\n // Theme override for IrisGridTheme\n theme: GridThemeType;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // Optional key and mouse handlers\n keyHandlers: readonly KeyHandler[];\n mouseHandlers: readonly GridMouseHandler[];\n\n // Pass in a custom renderer to the grid for advanced use cases\n renderer?: IrisGridRenderer;\n}\n\nexport interface IrisGridState {\n isFilterBarShown: boolean;\n isSelectingPartition: boolean;\n focusedFilterBarColumn: number | null;\n metricCalculator: IrisGridMetricCalculator;\n metrics?: GridMetrics;\n\n partitionConfig?: PartitionConfig;\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: ReadonlyQuickFilterMap;\n advancedFilters: ReadonlyAdvancedFilterMap;\n shownAdvancedFilter: number | null;\n hoverAdvancedFilter: number | null;\n\n sorts: readonly DhType.Sort[];\n reverseType: ReverseType;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n\n // selected range in table\n selectedRanges: readonly GridRange[];\n\n // Current ongoing copy operation\n copyOperation: CopyOperation | null;\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: string | null;\n loadingScrimProgress: number | null;\n loadingSpinnerShown: boolean;\n loadingCancelShown: boolean;\n loadingBlocksGrid: boolean;\n\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n\n shownColumnTooltip: number | null;\n\n formatter: Formatter;\n isMenuShown: boolean;\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n\n conditionalFormats: readonly SidebarFormattingRule[];\n conditionalFormatEditIndex: number | null;\n conditionalFormatPreview?: SidebarFormattingRule;\n\n // Column user is hovering over for selection\n hoverSelectColumn: GridRangeIndex;\n\n isTableDownloading: boolean;\n isReady: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number | null;\n\n showSearchBar: boolean;\n searchFilter?: DhType.FilterCondition;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n rollupConfig?: UIRollupConfig;\n rollupSelectedColumns: readonly ColumnName[];\n aggregationSettings: AggregationSettings;\n selectedAggregation: Aggregation | null;\n\n openOptions: readonly OptionItem[];\n\n pendingRowCount: number;\n pendingDataMap: PendingDataMap;\n pendingDataErrors: PendingDataErrorMap;\n pendingSavePromise: Promise<void> | null;\n pendingSaveError: string | null;\n\n toastMessage: JSX.Element | null;\n frozenColumns: readonly ColumnName[];\n showOverflowModal: boolean;\n overflowText: string;\n overflowButtonTooltipProps: CSSProperties | null;\n expandCellTooltipProps: CSSProperties | null;\n expandTooltipDisplayValue: string;\n linkHoverTooltipProps: CSSProperties | null;\n linkHoverDisplayValue: string;\n\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n isGotoShown: boolean;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValueSelectedFilter: FilterTypeValue;\n gotoValueManuallyChanged: boolean;\n gotoValue: string;\n\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n}\n\nclass IrisGrid extends Component<IrisGridProps, IrisGridState> {\n static contextType = IrisGridThemeContext;\n\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static defaultProps = {\n children: null,\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: (): void => undefined,\n onDataSelected: (): void => undefined,\n onError: (): void => undefined,\n onStateChange: (): void => undefined,\n onAdvancedSettingsChange: (): void => undefined,\n partitions: undefined,\n partitionConfig: undefined,\n quickFilters: EMPTY_MAP,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: (): void => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnSelectionValidator: null,\n columnAllowedCursor: null,\n columnNotAllowedCursor: null,\n copyCursor: 'copy',\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: (): readonly ResolvableContextAction[] => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n showEmptyStrings: true,\n showNullStrings: true,\n formatter: EMPTY_ARRAY,\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: null,\n canToggleSearch: true,\n mouseHandlers: EMPTY_ARRAY,\n keyHandlers: EMPTY_ARRAY,\n };\n\n constructor(props: IrisGridProps) {\n super(props);\n\n this.handleAdvancedFilterChange =\n this.handleAdvancedFilterChange.bind(this);\n this.handleAdvancedFilterSortChange =\n this.handleAdvancedFilterSortChange.bind(this);\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleGotoRowOpened = this.handleGotoRowOpened.bind(this);\n this.handleGotoRowClosed = this.handleGotoRowClosed.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.handleHeaderGroupsChanged = this.handleHeaderGroupsChanged.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 =\n this.handleConditionalFormatCreate.bind(this);\n this.handleConditionalFormatEdit =\n this.handleConditionalFormatEdit.bind(this);\n this.handleConditionalFormatsChange =\n this.handleConditionalFormatsChange.bind(this);\n this.handleConditionalFormatEditorSave =\n this.handleConditionalFormatEditorSave.bind(this);\n this.handleConditionalFormatEditorCancel =\n this.handleConditionalFormatEditorCancel.bind(this);\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged =\n this.handleCustomColumnsChanged.bind(this);\n this.handleSelectDistinctChanged =\n this.handleSelectDistinctChanged.bind(this);\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.handlePendingCommitClicked =\n this.handlePendingCommitClicked.bind(this);\n this.handlePendingDiscardClicked =\n this.handlePendingDiscardClicked.bind(this);\n this.handleGotoRowSelectedRowNumberSubmit =\n this.handleGotoRowSelectedRowNumberSubmit.bind(this);\n this.focusRowInGrid = this.focusRowInGrid.bind(this);\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.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handleColumnVisibilityChanged =\n this.handleColumnVisibilityChanged.bind(this);\n this.handleColumnVisibilityReset =\n this.handleColumnVisibilityReset.bind(this);\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 this.handleGotoRowSelectedRowNumberChanged =\n this.handleGotoRowSelectedRowNumberChanged.bind(this);\n this.handleGotoValueSelectedColumnNameChanged =\n this.handleGotoValueSelectedColumnNameChanged.bind(this);\n this.handleGotoValueSelectedFilterChanged =\n this.handleGotoValueSelectedFilterChanged.bind(this);\n this.handleGotoValueChanged = this.handleGotoValueChanged.bind(this);\n this.handleGotoValueSubmitted = this.handleGotoValueSubmitted.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.makeQuickFilter = this.makeQuickFilter.bind(this);\n\n this.grid = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = EMPTY_ARRAY;\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n this.showEmptyStrings = true;\n this.showNullStrings = true;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.filterInputRef = React.createRef();\n\n this.gotoRowRef = React.createRef();\n\n this.isCopying = false;\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n\n this.toggleGotoRowAction = {\n action: () => this.toggleGotoRow(),\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n };\n\n this.discardAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0\n ) {\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 isEditableGridModel(model) &&\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.toggleGotoRowAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const {\n aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n partitions,\n partitionConfig,\n model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\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 columnHeaderGroups,\n } = props;\n\n const { dh } = model;\n const keyHandlers: KeyHandler[] = [\n new CopyCellKeyHandler(this),\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n const mouseHandlers: GridMouseHandler[] = [\n new IrisGridCellOverflowMouseHandler(this),\n new IrisGridRowTreeMouseHandler(this),\n new IrisGridTokenMouseHandler(this),\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this, dh),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n new IrisGridPartitionedTableMouseHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n mouseHandlers.push(new IrisGridCopyCellMouseHandler(this));\n }\n const movedColumns =\n movedColumnsProp.length > 0\n ? movedColumnsProp\n : model.initialMovedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.initialMovedRows;\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns,\n initialColumnWidths: new Map(\n model?.layoutHints?.hiddenColumns?.map(name => [\n model.getColumnIndexByName(name),\n 0,\n ])\n ),\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.tableUtils = new TableUtils(dh);\n\n this.mouseHandlers = mouseHandlers;\n this.keyHandlers = keyHandlers;\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: undefined,\n\n partitionConfig:\n partitionConfig ??\n (partitions && partitions.length\n ? { partitions, mode: 'partition' }\n : undefined),\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: quickFilters ? new Map(quickFilters) : new Map(),\n advancedFilters: new Map(advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\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 loadingCancelShown: false,\n loadingBlocksGrid: false,\n\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(dh),\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: pendingDataMap ?? new Map(),\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 expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n linkHoverTooltipProps: null,\n linkHoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n\n gotoValueSelectedColumnName: model.columns[0]?.name ?? '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n gotoValueManuallyChanged: false,\n columnHeaderGroups: columnHeaderGroups ?? model.initialColumnHeaderGroups,\n };\n }\n\n componentDidMount(): void {\n const { model } = this.props;\n this.initState();\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps: IrisGridProps, prevState: IrisGridState): void {\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...', { resetRanges: 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...', { resetRanges: true });\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\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 = undefined;\n this.loadingScrimFinishTime = undefined;\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 const { openOptions } = this.state;\n if (openOptions !== prevState.openOptions) {\n const isAggEditType = (option: OptionItem): boolean =>\n option.type === OptionType.AGGREGATION_EDIT;\n if (\n !openOptions.some(isAggEditType) &&\n prevState.openOptions.some(isAggEditType)\n ) {\n this.removeEmptyAggregations();\n }\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount(): void {\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 if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n\n this.showViewportLoading.cancel();\n }\n\n grid: Grid | null;\n\n lastFocusedFilterBarColumn?: number;\n\n lastLoadedConfig: Pick<\n IrisGridState,\n | 'advancedFilters'\n | 'aggregationSettings'\n | 'customColumns'\n | 'quickFilters'\n | 'reverseType'\n | 'rollupConfig'\n | 'searchFilter'\n | 'selectDistinctColumns'\n | 'sorts'\n > | null;\n\n tooltip?: Tooltip;\n\n pending: Pending;\n\n globalColumnFormats?: readonly FormattingRule[];\n\n dateTimeFormatterOptions?: DateTimeColumnFormatterOptions;\n\n decimalFormatOptions: { defaultFormatString?: string };\n\n integerFormatOptions: { defaultFormatString?: string };\n\n truncateNumbersWithPound: boolean;\n\n showEmptyStrings: boolean;\n\n showNullStrings: boolean;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n loadingScrimStartTime?: number;\n\n loadingScrimFinishTime?: number;\n\n animationFrame?: number;\n\n loadingTimer?: ReturnType<typeof setTimeout>;\n\n tableSaver: TableSaver | null;\n\n crossColumnRef: React.RefObject<CrossColumnSearch>;\n\n isAnimating: boolean;\n\n filterInputRef: React.RefObject<FilterInputField>;\n\n gotoRowRef: React.RefObject<GotoRowElement>;\n\n isCopying: boolean;\n\n toggleFilterBarAction: Action;\n\n toggleSearchBarAction: Action;\n\n toggleGotoRowAction: Action;\n\n discardAction: Action;\n\n commitAction: Action;\n\n contextActions: ContextAction[];\n\n tableUtils: TableUtils;\n\n keyHandlers: readonly KeyHandler[];\n\n mouseHandlers: readonly GridMouseHandler[];\n\n get gridWrapper(): HTMLDivElement | null {\n return this.grid?.canvasWrapper.current ?? null;\n }\n\n getAdvancedMenuOpenedHandler = memoize(\n (column: ModelIndex) => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model: IrisGridModel,\n column: DhType.Column,\n advancedFilterOptions: AdvancedFilterOptions | undefined,\n sortDirection: SortDirection | undefined,\n formatter: Formatter\n ) => (\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 tableUtils={this.tableUtils}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable: boolean,\n isCustomColumnsAvailable: boolean,\n isFormatColumnsAvailable: boolean,\n isRollupAvailable: boolean,\n isTotalsAvailable: boolean,\n isSelectDistinctAvailable: boolean,\n isExportAvailable: boolean,\n toggleFilterBarAction: Action,\n toggleSearchBarAction: Action,\n toggleGotoRowAction: Action,\n isFilterBarShown: boolean,\n showSearchBar: boolean,\n canDownloadCsv: boolean,\n canToggleSearch: boolean,\n showGotoRow: boolean,\n hasAdvancedSettings: boolean\n ): readonly OptionItem[] => {\n const optionItems: OptionItem[] = [];\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: 'Organize Columns',\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: '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 if (hasAdvancedSettings) {\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\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 optionItems.push({\n type: OptionType.GOTO,\n title: 'Go to',\n subtitle: toggleGotoRowAction.shortcut.getDisplayText(),\n icon: vsReply,\n isOn: showGotoRow,\n onChange: toggleGotoRowAction.action,\n });\n\n return Object.freeze(optionItems);\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(\n (\n metricCalculator: IrisGridMetricCalculator,\n userColumnWidths: ModelSizeMap\n ): readonly ModelIndex[] =>\n IrisGridUtils.getHiddenColumns(\n new Map([...metricCalculator.initialColumnWidths, ...userColumnWidths])\n ),\n { max: 1 }\n );\n\n getAggregationMap = memoize(\n (\n columns: readonly DhType.Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyAggregationMap => {\n const aggregationMap = {} as Record<AggregationOperation, string[]>;\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\n getOperationMap = memoize(\n (\n columns: readonly DhType.Column[],\n aggregations: readonly Aggregation[]\n ): OperationMap => {\n const operationMap: OperationMap = {};\n aggregations\n .filter(\n (a: Aggregation) => !AggregationUtils.isRollupOperation(a.operation)\n )\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] = Object.freeze(newOperations);\n });\n });\n return operationMap;\n }\n );\n\n getOperationOrder = memoize(\n (aggregations: readonly Aggregation[]): AggregationOperation[] =>\n aggregations\n .map((a: Aggregation) => a.operation)\n .filter(\n (o: AggregationOperation) => !AggregationUtils.isRollupOperation(o)\n )\n );\n\n getCachedFormatColumns = memoize(\n (\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rules: readonly SidebarFormattingRule[]\n ) => getFormatColumns(dh, columns, rules)\n );\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n getCachedPreviewFormatColumns = memoize(\n (\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rulesParam: readonly SidebarFormattingRule[],\n preview?: SidebarFormattingRule,\n editIndex?: number\n ): DhType.CustomColumn[] => {\n log.debug(\n 'getCachedPreviewFormatColumns',\n rulesParam,\n preview,\n editIndex\n );\n if (preview !== undefined && editIndex !== undefined) {\n const rules = [...rulesParam];\n rules[editIndex] = preview;\n return this.getCachedFormatColumns(dh, columns, rules);\n }\n\n return this.getCachedFormatColumns(dh, columns, rulesParam);\n }\n );\n\n getModelRollupConfig = memoize(\n (\n originalColumns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n )\n );\n\n getModelTotalsConfig = memoize(\n (\n columns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): UITotalsTableConfig | null => {\n if ((config?.columns?.length ?? 0) > 0) {\n // If we've got rollups, then aggregations are applied as part of that...\n return null;\n }\n\n // Filter out aggregations without any columns actually selected\n const aggregations = aggregationSettings.aggregations.filter(\n agg => agg.selected.length > 0 || agg.invert\n );\n if (aggregations.length === 0) {\n // We don't actually have any aggregations set, don't bother\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return {\n operationMap,\n operationOrder,\n showOnTop: aggregationSettings.showOnTop,\n defaultOperation: AggregationOperation.SKIP,\n } as UITotalsTableConfig;\n }\n );\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n sorts: readonly DhType.Sort[],\n reverseType: ReverseType,\n rollupConfig: UIRollupConfig | undefined,\n isMenuShown: boolean\n ) => ({\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters: readonly DhType.FilterCondition[],\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n searchFilter: DhType.FilterCondition | undefined\n ) => [\n ...(customFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter !== undefined ? [searchFilter] : []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n contextTheme: IrisGridThemeType | null,\n theme: Partial<IrisGridThemeType> | null,\n isEditable: boolean,\n floatingRowCount: number\n ): IrisGridThemeType => {\n // If a theme is available via context, use that as the base theme.\n // If iris-grid is standalone without a context, initialize a default theme.\n const defaultTheme = contextTheme ?? createDefaultIrisGridTheme();\n\n // We only show the row footers when we have floating rows for aggregations\n const rowFooterWidth =\n floatingRowCount > 0\n ? theme?.rowFooterWidth ?? defaultTheme.rowFooterWidth\n : 0;\n\n return {\n ...defaultTheme,\n ...theme,\n autoSelectRow: !isEditable,\n rowFooterWidth,\n };\n },\n { max: 1 }\n );\n\n getCachedKeyHandlers = memoize((keyHandlers: readonly KeyHandler[]) =>\n [...keyHandlers, ...this.keyHandlers].sort((a, b) => a.order - b.order)\n );\n\n getKeyHandlers(): readonly KeyHandler[] {\n const { keyHandlers } = this.props;\n return this.getCachedKeyHandlers(keyHandlers);\n }\n\n getCachedMouseHandlers = memoize(\n (\n mouseHandlers: readonly GridMouseHandler[]\n ): readonly GridMouseHandler[] => [...mouseHandlers, ...this.mouseHandlers]\n );\n\n getCachedRenderer = memoize(\n (rendererProp?: IrisGridRenderer) => rendererProp ?? new IrisGridRenderer(),\n { max: 1 }\n );\n\n get renderer(): IrisGridRenderer {\n const { renderer } = this.props;\n return this.getCachedRenderer(renderer);\n }\n\n getMouseHandlers(): readonly GridMouseHandler[] {\n const { mouseHandlers } = this.props;\n return this.getCachedMouseHandlers(mouseHandlers);\n }\n\n getValueForCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): string | unknown {\n const { model } = this.props;\n const { dh } = model;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n const { formatter } = model;\n return dh.i18n.DateTimeFormat.format(\n UNFORMATTED_DATE_PATTERN,\n value as number | Date | DhType.DateWrapper,\n dh.i18n.TimeZone.getTimeZone(formatter.timeZone)\n );\n }\n return value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n\n getModelColumn(columnIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelColumns } = metrics;\n if (modelColumns == null) {\n return null;\n }\n\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n\n getModelRow(rowIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelRows } = metrics;\n if (modelRows == null) {\n return null;\n }\n\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n\n getTheme(): IrisGridThemeType {\n const { model, theme } = this.props;\n\n return this.getCachedTheme(\n this.context,\n theme,\n (isEditableGridModel(model) && model.isEditable) ?? false,\n model.floatingTopRowCount + model.floatingBottomRowCount\n );\n }\n\n getVisibleColumn(modelIndex: ModelIndex): VisibleIndex {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n makeQuickFilter(\n column: DhType.Column,\n text: string,\n timeZone: string\n ): DhType.FilterCondition | null {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\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 inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(\n inputFilters: InputFilter[],\n replaceExisting = false\n ): void {\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 modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(\n modelIndex: ModelIndex,\n value: string | null,\n quickFilters: QuickFilterMap\n ): boolean {\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: this.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilterMap(advancedFilters: ReadonlyAdvancedFilterMap): void {\n this.setState({ advancedFilters });\n }\n\n setAdvancedFilter(\n modelIndex: ModelIndex,\n filter: DhType.FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', { resetRanges: 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 modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(\n modelIndex: ModelIndex,\n filter: DhType.FilterCondition | null,\n text: string\n ): void {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', { resetRanges: 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 filterMap Filter map\n */\n setFilterMap(filterMap: FilterMap): void {\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, filterList }, 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 assertNotNull(columnIndex);\n const combinedText = IrisGridUtils.combineFiltersFromList(\n columnType,\n filterList\n );\n if (combinedText.length === 0) {\n this.removeQuickFilter(columnIndex);\n } else {\n const { formatter } = model;\n this.setQuickFilter(\n columnIndex,\n this.makeQuickFilter(column, combinedText, formatter.timeZone),\n `${combinedText}`\n );\n }\n });\n }\n\n removeColumnFilter(modelRange: ModelIndex | BoundedAxisRange): void {\n this.startLoading('Filtering...', { resetRanges: true });\n\n const clearRange: BoundedAxisRange = Array.isArray(modelRange)\n ? modelRange\n : [modelRange, modelRange];\n\n this.setState(\n ({ advancedFilters, quickFilters }: Partial<IrisGridState>) => {\n const newAdvancedFilters: AdvancedFilterMap = advancedFilters\n ? new Map(advancedFilters)\n : new Map();\n const newQuickFilters: QuickFilterMap = quickFilters\n ? new Map(quickFilters)\n : new Map();\n newAdvancedFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newAdvancedFilters.delete(column);\n }\n });\n newQuickFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newQuickFilters.delete(column);\n }\n });\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n }\n );\n }\n\n removeQuickFilter(modelColumn: ModelIndex): void {\n this.startLoading('Clearing Filter...', { resetRanges: 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(): void {\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...', { resetRanges: true });\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearCrossColumSearch(): void {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearGridInputField(): void {\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(): void {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns, formatter } = model;\n\n log.debug('Rebuilding filters');\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 = this.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: this.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n this.startLoading('Rebuilding filters...', { resetRanges: true });\n\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: Pick<IrisGridState, 'quickFilters' | 'advancedFilters'>): void {\n this.setState({\n quickFilters,\n advancedFilters,\n });\n }\n\n updateFormatterSettings(settings?: Settings, forceUpdate = true): void {\n const globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions =\n FormatterUtils.getDateTimeFormatterOptions(settings);\n\n const defaultDecimalFormatOptions =\n settings?.defaultDecimalFormatOptions ?? {};\n const defaultIntegerFormatOptions =\n settings?.defaultIntegerFormatOptions ?? {};\n const truncateNumbersWithPound =\n settings?.truncateNumbersWithPound ?? false;\n\n const showEmptyStrings = settings?.showEmptyStrings ?? true;\n const showNullStrings = settings?.showNullStrings ?? true;\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 settings?.defaultDecimalFormatOptions\n );\n const isIntegerFormattingChanged = !deepEqual(\n this.integerFormatOptions,\n defaultIntegerFormatOptions\n );\n const isTruncateNumbersChanged =\n this.truncateNumbersWithPound !== truncateNumbersWithPound;\n const isShowEmptyStringsChanged =\n this.showEmptyStrings !== showEmptyStrings;\n const isShowNullStringsChanged = this.showNullStrings !== showNullStrings;\n\n if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged ||\n isTruncateNumbersChanged ||\n isShowEmptyStringsChanged ||\n isShowNullStringsChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.showEmptyStrings = showEmptyStrings;\n this.showNullStrings = showNullStrings;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n movedColumns: readonly MoveOperation[],\n floatingLeftColumnCount: number,\n floatingRightColumnCount: number,\n draggingRange?: BoundedAxisRange\n ): readonly ColumnName[] => {\n const floatingColumns: ColumnName[] = [];\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 if (draggingRange) {\n for (let i = draggingRange[0]; i <= draggingRange[1]; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n }\n\n const columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);\n\n return Object.freeze([...columnSet]);\n }\n );\n\n updateFormatter(\n updatedFormats: { customColumnFormatMap?: Map<ColumnName, FormattingRule> },\n forceUpdate = true\n ): void {\n const { customColumnFormatMap } = this.state;\n const { model } = this.props;\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 model.dh,\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound,\n this.showEmptyStrings,\n this.showNullStrings\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(): void {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState(): void {\n const { model } = this.props;\n try {\n if (isPartitionedGridModel(model) && model.isPartitionRequired) {\n this.loadPartitionsTable(model);\n } else {\n this.loadTableState();\n }\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n loadTableState(): void {\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 model.dh,\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(model: PartitionedGridModel): Promise<void> {\n try {\n const { partitionConfig } = this.state;\n if (!partitionConfig) {\n this.startLoading('Loading partitions...', {\n loadingCancelShown: false,\n resetRanges: true,\n });\n this.initializePartitionConfig(model);\n }\n this.setState({ isSelectingPartition: true }, this.loadTableState);\n } catch (error) {\n if (!PromiseUtils.isCanceled(error)) {\n this.handleTableLoadError(error);\n }\n }\n }\n\n /**\n * Initialize the partition config to the default partition.\n */\n async initializePartitionConfig(model: PartitionedGridModel): Promise<void> {\n const keyTable = await this.pending.add(\n model.partitionKeysTable(),\n resolved => resolved.close()\n );\n const { dh } = model;\n\n const sorts = keyTable.columns.map(column => column.sort().desc());\n keyTable.applySort(sorts);\n keyTable.setViewport(0, 0);\n\n // We want to wait for the first UPDATED event instead of just getting viewport data here\n // It's possible that the key table does not have any rows of data yet, so just wait until it does have one\n keyTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n (event: CustomEvent<DhType.ViewportData>) => {\n try {\n const { detail: data } = event;\n if (data.rows.length === 0) {\n // We received an update and the table is still empty. Stop showing the loading spinner so we know\n this.stopLoading();\n return;\n }\n const row = data.rows[0];\n const values = keyTable.columns.map(column => row.get(column));\n const newPartition: PartitionConfig = {\n partitions: values,\n mode: model.isPartitionAwareSourceTable ? 'partition' : 'keys',\n };\n keyTable.close();\n this.setState({\n loadingSpinnerShown: false,\n partitionConfig: newPartition,\n });\n } catch (e) {\n keyTable.close();\n log.error('Error getting initial partition config', e);\n }\n }\n );\n }\n\n /**\n * Selects a partition key from the table based on the provided row index.\n *\n * @param rowIndex The index of the row from which the partition will be selected.\n * @returns A promise that resolves when the partition key has been successfully selected.\n */\n selectPartitionKeyFromTable(rowIndex: GridRangeIndex): void {\n const { model } = this.props;\n assertNotNull(rowIndex);\n if (isPartitionedGridModel(model)) {\n const data = this.getRowDataMap(rowIndex);\n const partitionColumnSet = new Set(\n model.partitionColumns.map(column => column.name)\n );\n const values = Object.entries(data)\n .filter(([key, _]) => partitionColumnSet.has(key))\n .map(([key, columnData]) => columnData.value);\n const newPartition: PartitionConfig = {\n partitions: values,\n mode: 'partition',\n };\n this.setState({\n isSelectingPartition: true,\n partitionConfig: newPartition,\n });\n }\n }\n\n copyCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): void {\n const { canCopy } = this.props;\n if (canCopy) {\n const value = String(\n this.getValueForCell(columnIndex, rowIndex, rawValue)\n );\n copyToClipboard(value).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n copyColumnHeader(columnIndex: GridRangeIndex, columnDepth = 0): void {\n if (columnIndex === null) {\n return;\n }\n const { canCopy } = this.props;\n const { movedColumns } = this.state;\n\n if (canCopy) {\n const copyOperation = {\n columnIndex,\n columnDepth,\n movedColumns,\n };\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyColumnHeader for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(\n ranges: readonly GridRange[],\n includeHeaders = false,\n formatValues = true,\n error?: string\n ): void {\n const { model, canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\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(\n loadingText: string,\n {\n resetRanges = false,\n loadingCancelShown = true,\n loadingBlocksGrid = true,\n } = {}\n ): void {\n this.setState({ loadingText, loadingCancelShown, loadingBlocksGrid });\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 assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\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(): void {\n this.showViewportLoading.cancel();\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n });\n\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\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(): void {\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\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: undefined,\n selectDistinctColumns: [],\n sorts: [],\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback(): boolean {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n\n startListening(model: IrisGridModel): void {\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 model.addEventListener(\n IrisGridModel.EVENT.VIEWPORT_UPDATED,\n this.handleViewportUpdated\n );\n }\n\n stopListening(model: IrisGridModel): void {\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 model.removeEventListener(\n IrisGridModel.EVENT.VIEWPORT_UPDATED,\n this.handleViewportUpdated\n );\n }\n\n focus(): void {\n this.grid?.focus();\n }\n\n focusFilterBar(column: VisibleIndex): void {\n const { movedColumns } = this.state;\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = GridUtils.getModelIndex(column, movedColumns);\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 assertNotNull(metrics);\n const { 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 assertNotNull(metricState);\n const newLeft = metricCalculator.getLastLeft(\n metricState,\n column,\n metricCalculator.getVisibleWidth(metricState)\n );\n this.grid?.setViewState(\n { left: Math.min(newLeft, lastLeft), leftOffset: 0 },\n true\n );\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex: VisibleIndex): void {\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: ColumnName): void {\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 assertNotNull(modelIndex);\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: ColumnName): void {\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 assertNotNull(modelIndex);\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(\n modelIndexes: readonly ModelIndex[],\n isVisible: boolean\n ): void {\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n const defaultWidth =\n metricCalculator.initialColumnWidths.get(modelIndex);\n const calculatedWidth = getOrThrow(\n metrics.calculatedColumnWidths,\n modelIndex\n );\n\n if (defaultWidth !== calculatedWidth) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleColumnVisibilityReset(): void {\n const { metricCalculator, metrics } = this.state;\n const { model } = this.props;\n assertNotNull(metrics);\n for (let i = 0; i < metrics.columnCount; i += 1) {\n metricCalculator.resetColumnWidth(i);\n }\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: model.layoutHints?.frozenColumns ?? [],\n });\n }\n\n handleCrossColumnSearch(\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean\n ): void {\n const { model } = this.props;\n this.startLoading('Searching...');\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 = debounce(\n (\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n invertSearchColumns: boolean\n ): void => {\n const { model } = this.props;\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n },\n SET_FILTER_DEBOUNCE\n );\n\n handleAnimationLoop(): void {\n this.grid?.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart(): void {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd(): void {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionChange(partitionConfig: PartitionConfig): void {\n this.startLoading('Partitioning...');\n const { partitionConfig: prevConfig } = this.state;\n if (prevConfig !== partitionConfig) {\n this.setState({ partitionConfig });\n }\n }\n\n handleTableLoadError(error: unknown): void {\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 handleViewportUpdated(): void {\n const { model } = this.props;\n const { loadingText, loadingSpinnerShown } = this.state;\n const loadingMessage = 'Waiting for viewport...';\n\n // pending and no timer already exists\n if (model.isViewportPending && !loadingSpinnerShown) {\n this.showViewportLoading();\n } else if (loadingText === loadingMessage && !model.isViewportPending) {\n // extra conditions because timeout might get cleared by update\n this.stopLoading();\n }\n }\n\n showViewportLoading = throttle(\n (): void => {\n const { model } = this.props;\n const { loadingSpinnerShown } = this.state;\n if (model.isViewportPending && !loadingSpinnerShown) {\n // We only want to show the viewport loading if the viewport is still loading\n // and we're not already showing a loader for something else\n this.startLoading('Waiting for viewport...', {\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n });\n }\n },\n VIEWPORT_LOADING_DELAY,\n { leading: false, trailing: true }\n );\n\n showAllColumns(): void {\n const { metricCalculator } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\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: VisibleIndex, addToExisting: boolean): void {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n if (model.isColumnSortable(columnIndex)) {\n const { sorts: currentSorts } = this.state;\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.columns,\n modelColumn,\n addToExisting\n );\n\n this.updateSorts(sorts);\n } else {\n log.debug('Column type was not sortable', model.columns[columnIndex]);\n }\n }\n\n updateSorts(sorts: readonly DhType.Sort[]): void {\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n sortColumn(\n modelColumn: ModelIndex,\n direction: SortDirection = TableUtils.sortDirection.none,\n isAbs = false,\n addToExisting = false\n ): void {\n assertNotNull(modelColumn);\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.sort,\n model.columns,\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: ReverseType): void {\n this.startLoading('Reversing...');\n this.setState({ reverseType });\n this.grid?.forceUpdate();\n }\n\n isReversible(): boolean {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn): void {\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(): boolean {\n const { model, canToggleSearch } = this.props;\n const { dh } = model;\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(): void {\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 toggleGotoRow(row = '', value = '', columnName = ''): void {\n const { isGotoShown } = this.state;\n if (row || value) {\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n this.focusRowInGrid(row);\n this.gotoRowRef.current?.focus();\n return;\n }\n\n const cursorRow = this.grid?.state.cursorRow;\n const cursorColumn = this.grid?.state.cursorColumn;\n\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n return;\n }\n // if a row is selected\n const { model } = this.props;\n const { name, type } = model.columns[cursorColumn];\n\n const cellValue = model.valueForCell(cursorColumn, cursorRow);\n const text = IrisGridUtils.convertValueToText(cellValue, type);\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: `${cursorRow + 1}`,\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n }\n\n async commitPending(): Promise<void> {\n const { model } = this.props;\n if (!isEditableGridModel(model) || !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 const containsGridCellInputField =\n document?.activeElement?.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n if (\n document.activeElement != null &&\n document.activeElement.classList.contains('error')\n ) {\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(): Promise<void> {\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 column The column in this table to link\n */\n selectColumn(column: DhType.Column): void {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Get the row data map for a given row and notifies the listener\n */\n selectData(columnIndex: ModelIndex, rowIndex: ModelIndex): void {\n const dataMap = this.getRowDataMap(rowIndex);\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n /**\n * Get the data map for the given row\n * @param rowIndex Row to get the data map for\n * @returns Data map for the row\n */\n getRowDataMap(rowIndex: ModelIndex): RowDataMap {\n const { model } = this.props;\n const { columns, groupedColumns } = model;\n const dataMap: RowDataMap = {};\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 visibleIndex = this.getVisibleColumn(i);\n const isExpandable =\n isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n const isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex,\n };\n }\n return dataMap;\n }\n\n handleAdvancedFilterChange(\n column: DhType.Column,\n filter: DhType.FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n const { model } = this.props;\n const index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n\n handleAdvancedFilterSortChange(\n column: DhType.Column,\n direction: SortDirection,\n addToExisting = false\n ): void {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const columnName = model.columns[columnIndex].name;\n const oldSort = TableUtils.getSortForColumn(model.sort, columnName);\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 columnName,\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(): void {\n this.grid?.focus();\n }\n\n handleAdvancedMenuOpened(column: GridRangeIndex): void {\n this.setState({ shownAdvancedFilter: column });\n }\n\n handleGotoRowOpened(): void {\n this.setState({ isGotoShown: true, gotoValueManuallyChanged: false });\n }\n\n handleGotoRowClosed(): void {\n this.setState({ isGotoShown: false, gotoValueManuallyChanged: false });\n }\n\n handleAdvancedMenuClosed(columnIndex: number): void {\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(): void {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange(): void {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings: ChartBuilderSettings): void {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model);\n }\n\n handleGridError(error?: Error): void {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value: string): void {\n this.startLoading('Filtering...', { resetRanges: true });\n\n this.setState(({ focusedFilterBarColumn, quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n return { quickFilters: newQuickFilters };\n });\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true): void {\n if (setGridFocus) {\n this.grid?.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward: boolean): void {\n const { focusedFilterBarColumn } = this.state;\n assertNotNull(focusedFilterBarColumn);\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(\n modelIndex: ModelIndex,\n selectedFormat: TableColumnFormat | null\n ): void {\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 != null) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n assertNotNull(normalizedType);\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(e: React.MouseEvent<HTMLButtonElement>): void {\n e.stopPropagation();\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose(): void {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack(): void {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option: OptionItem): void {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event: Event): void {\n const { detail: error } = event as CustomEvent;\n log.error('request failed:', error);\n this.stopLoading();\n const { partitionConfig } = this.state;\n if (isMissingPartitionError(error) && partitionConfig != null) {\n // We'll try loading the initial partition again\n this.startLoading('Reloading partition...', { resetRanges: true });\n this.setState({ partitionConfig: undefined }, () => {\n this.initState();\n });\n } else if (this.canRollback()) {\n this.startLoading('Rolling back changes...', { resetRanges: 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: ${error}`));\n }\n }\n\n handleUpdate(): void {\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\n const config = {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n };\n\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid?.forceUpdate();\n this.stopLoading();\n }\n\n handleViewChanged(metrics?: GridMetrics): void {\n const { model } = this.props;\n const { selectionEndRow = 0 } = this.grid?.state ?? {};\n let pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n const { bottomViewport } = metrics;\n\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?: readonly GridRange[]): void {\n assertNotNull(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 if (this.grid?.state.cursorRow != null) {\n this.setState({ gotoRow: `${this.grid.state.cursorRow + 1}` });\n }\n onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(\n movedColumns: readonly MoveOperation[],\n onChangeApplied?: () => void\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleHeaderGroupsChanged(\n columnHeaderGroups: readonly (DhType.ColumnGroup | ColumnHeaderGroup)[]\n ): void {\n const { model } = this.props;\n this.setState(\n {\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(\n model,\n columnHeaderGroups\n ).groups,\n },\n () => this.grid?.forceUpdate()\n );\n }\n\n handleTooltipRef(tooltip: Tooltip): void {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleConditionalFormatsChange(\n conditionalFormats: readonly SidebarFormattingRule[]\n ): void {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({ conditionalFormats });\n }\n\n handleConditionalFormatCreate(): void {\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: number): void {\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 = debounce(\n (conditionalFormatPreview?: SidebarFormattingRule): void => {\n this.setState({ conditionalFormatPreview });\n },\n SET_CONDITIONAL_FORMAT_DEBOUNCE\n );\n\n handleConditionalFormatEditorSave(config: SidebarFormattingRule): void {\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(): void {\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: readonly string[]): void {\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 =\n IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts.length) {\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 });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n\n handleCustomColumnsChanged(): void {\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.loadTableState();\n }\n }\n\n handlePendingCommitClicked(): Promise<void> {\n return this.commitPending();\n }\n\n handlePendingDiscardClicked(): Promise<void> {\n return this.discardPending();\n }\n\n handlePendingDataUpdated(): void {\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 The new aggregation settings\n */\n handleAggregationsChange(aggregationSettings: AggregationSettings): void {\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 The new aggregation\n */\n handleAggregationChange(aggregation: Aggregation): void {\n log.debug('handleAggregationChange', aggregation);\n\n this.startLoading(`Aggregating ${aggregation.operation}...`);\n\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 The aggregation to edit\n */\n handleAggregationEdit(aggregation: Aggregation): void {\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: UIRollupConfig): void {\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 frozenColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n selectDistinctColumns: [],\n });\n }\n\n handleSelectDistinctChanged(columnNames: readonly ColumnName[]): void {\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(): void {\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(\n fileName: string,\n frozenTable: DhType.Table,\n tableSubscription: DhType.TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info(\n 'start table downloading',\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\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 /**\n * Aggregation editing has completed. Need to filter out any aggregations that have no columns selected\n */\n removeEmptyAggregations(): void {\n log.debug('removeEmptyAggregations');\n\n this.setState(({ aggregationSettings }) => {\n const { aggregations } = aggregationSettings;\n const newAggregations = aggregations.filter(\n a => a.selected.length > 0 || a.invert\n );\n if (newAggregations.length !== aggregations.length) {\n return {\n selectedAggregation: null,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: newAggregations,\n },\n };\n }\n return { selectedAggregation: null, aggregationSettings };\n });\n }\n\n async seekRow(inputString: string, isBackwards = false): Promise<void> {\n const {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter,\n } = this.state;\n const { model } = this.props;\n const { dh } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n\n if (inputString === '') {\n return;\n }\n const selectedColumn = IrisGridUtils.getColumnByName(\n model.columns,\n selectedColumnName\n );\n\n if (selectedColumn === undefined) {\n return;\n }\n\n let searchFromRow = this.grid?.state.cursorRow;\n\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n\n const isContains =\n gotoValueSelectedFilter === FilterType.contains ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n const isIgnoreCase =\n gotoValueSelectedFilter === FilterType.eqIgnoreCase ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n\n try {\n const { formatter } = model;\n const columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n\n let rowIndex;\n\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n isIgnoreCase,\n isContains,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DATETIME: {\n const [startDate] = DateUtils.parseDateRange(\n dh,\n inputString,\n formatter.timeZone\n );\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.DATETIME,\n startDate,\n undefined,\n undefined,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT: {\n if (\n !TableUtils.isBigDecimalType(selectedColumn.type) &&\n !TableUtils.isBigIntegerType(selectedColumn.type)\n ) {\n let inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.NUMBER,\n inputValue,\n undefined,\n undefined,\n isBackwards ?? false\n );\n } else {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n break;\n }\n default: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n this.tableUtils.makeValue(\n selectedColumn.type,\n inputString,\n formatter.timeZone\n ),\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n }\n\n this.grid?.setFocusRow(rowIndex);\n this.setState({ gotoValueError: '' });\n } catch (e: unknown) {\n this.setState({ gotoValueError: 'invalid input' });\n }\n }\n\n handleCancelDownloadTable(): void {\n this.tableSaver?.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate = throttle(\n (\n tableDownloadProgress: number,\n tableDownloadEstimatedTime: number | null\n ) => {\n const { tableDownloadStatus } = this.state;\n if (\n tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n ) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n },\n UPDATE_DOWNLOAD_THROTTLE\n );\n\n handleDownloadCompleted(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled(): void {\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 ranges The ranges to delete\n */\n deleteRanges(ranges: readonly GridRange[]): void {\n const { model } = this.props;\n if (!isDeletableGridModel(model) || !model.isDeletable) {\n throw new Error('Model does not support deleting ranges');\n }\n\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(): void {\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: null });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true): void {\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(): void {\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(): void {\n this.setState({\n showOverflowModal: false,\n });\n }\n\n getColumnBoundingRect(): DOMRect {\n const { metrics, shownColumnTooltip } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n const gridRect = this.gridWrapper?.getBoundingClientRect();\n const popperMargin = 20;\n assertNotNull(gridRect);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth,\n } = metrics;\n const columnX = allColumnXs.get(shownColumnTooltip);\n const columnWidth = allColumnWidths.get(shownColumnTooltip);\n\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n\n const left =\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n },\n };\n }\n\n getOverflowButtonTooltip = memoize(\n (overflowButtonTooltipProps: CSSProperties): ReactNode => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...overflowButtonTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: 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\n getExpandCellTooltip = memoize(\n (expandCellTooltipProps: CSSProperties): ReactNode => {\n if (expandCellTooltipProps == null) {\n return null;\n }\n\n const { expandTooltipDisplayValue } = this.state;\n const { model } = this.props;\n const isExpandAllAvailable =\n isExpandableGridModel(model) && model.isExpandAllAvailable;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...expandCellTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom-start',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n <div style={{ textAlign: 'left' }}>\n Click to {expandTooltipDisplayValue} row\n {isExpandAllAvailable && (\n <>\n <br />\n {ContextActionUtils.isMacPlatform() ? '⌘' : 'Ctrl+'}Click to\n expand row and all children\n </>\n )}\n </div>\n </Tooltip>\n </div>\n );\n }\n );\n\n getLinkHoverTooltip = memoize(\n (linkHoverTooltipProps: CSSProperties): ReactNode => {\n if (linkHoverTooltipProps == null) {\n return null;\n }\n\n const { linkHoverDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...linkHoverTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip options={popperOptions} ref={this.handleTooltipRef}>\n <div className=\"link-hover-tooltip\">\n {linkHoverDisplayValue} - Click once to follow.\n <br />\n Click and hold to select this cell.\n </div>\n </Tooltip>\n </div>\n );\n }\n );\n\n handleGotoRowSelectedRowNumberSubmit(): void {\n const { gotoRow: rowNumber } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n\n focusRowInGrid(rowNumber: string): void {\n const { model } = this.props;\n const { rowCount } = model;\n this.setState({ gotoRow: rowNumber });\n if (rowNumber === '') {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n return;\n }\n const rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({ gotoRowError: 'Invalid row index' });\n } else if (rowInt === 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(0);\n } else if (rowInt < 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(rowInt + rowCount);\n } else {\n this.grid?.setFocusRow(rowInt - 1);\n this.setState({ gotoRowError: '', gotoValueError: '' });\n }\n }\n\n handleGotoRowSelectedRowNumberChanged(\n event: ChangeEvent<HTMLInputElement>\n ): void {\n const rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n\n getColumnTooltip(\n visibleIndex: VisibleIndex,\n metrics: GridMetrics,\n model: IrisGridModel\n ): ReactNode {\n const {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width,\n } = metrics;\n const columnX = allColumnXs.get(visibleIndex);\n const columnWidth = allColumnWidths.get(visibleIndex);\n\n if (columnX == null || columnWidth == null) {\n return null;\n }\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: CSSProperties = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\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: ReferenceObject = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect,\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n\n const column = model.columns[modelColumn];\n if (column == null) return null;\n\n return (\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 this.tooltip?.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n\n handleGotoValueSelectedColumnNameChanged(columnName: ColumnName): void {\n const { model } = this.props;\n const cursorRow = this.grid?.state.cursorRow;\n const {\n gotoValueSelectedColumnName: prevColumnName,\n gotoValueManuallyChanged,\n } = this.state;\n\n if (cursorRow != null) {\n const index = model.getColumnIndexByName(columnName);\n const column = IrisGridUtils.getColumnByName(model.columns, columnName);\n const prevColumn = IrisGridUtils.getColumnByName(\n model.columns,\n prevColumnName\n );\n if (index == null || column == null) {\n return;\n }\n const value = model.valueForCell(index, cursorRow);\n const text = IrisGridUtils.convertValueToText(value, column.type);\n\n // do NOT update value if user manually changed value AND column type remains the same\n if (gotoValueManuallyChanged && column.type === prevColumn?.type) {\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n } else {\n // do update, and set goToValueManuallyChanged to false because value was automatically changed\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n }\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n }\n\n handleGotoValueSelectedFilterChanged(value: FilterTypeValue): void {\n this.setState({ gotoValueSelectedFilter: value, gotoValueError: '' });\n }\n\n handleGotoValueChanged = (input: string): void => {\n this.setState({ gotoValue: input, gotoValueManuallyChanged: true });\n this.debouncedSeekRow(input);\n };\n\n debouncedSeekRow = debounce((input: string): void => {\n this.seekRow(input);\n }, SEEK_ROW_DEBOUNCE);\n\n handleGotoValueSubmitted(isBackwards?: boolean): void {\n const { gotoValue } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n\n render(): ReactElement | null {\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 loadingCancelShown,\n loadingBlocksGrid,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\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 columnHeaderGroups,\n showOverflowModal,\n overflowText,\n overflowButtonTooltipProps,\n expandCellTooltipProps,\n linkHoverTooltipProps,\n isGotoShown,\n gotoRow,\n gotoRowError,\n gotoValueError,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueSelectedFilter,\n partitionConfig,\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 searchFilter\n );\n\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const stateOverride = this.getCachedStateOverride(\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown\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, allColumnXs, allColumnWidths, width } = metrics;\n const columnX = allColumnXs.get(focusedFilterBarColumn);\n const columnWidth = allColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - (theme.filterBarHeight ?? 0);\n const fieldWidth = columnWidth + 1; // cover right border\n const fieldHeight = (theme.filterBarHeight ?? 0) - 1; // remove bottom border\n const style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x), // Don't cause overflow\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\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\">\n <div\n className={classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown,\n })}\n >\n {loadingText}\n </div>\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames('iris-grid-btn-cancel', {\n show: loadingCancelShown,\n })}\n >\n <FontAwesomeIcon icon={vsClose} transform=\"down-1\" />\n Cancel\n </button>\n </div>\n );\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div\n className=\"iris-grid-loading\"\n style={loadingBlocksGrid ? { top: gridY } : {}}\n >\n {loadingStatus}\n </div>\n );\n }\n\n let columnTooltip: React.ReactNode = null;\n if (shownColumnTooltip != null && metrics) {\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\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 const filterBar = [];\n if (metrics && isFilterBarShown) {\n const { gridX, gridY, visibleColumns, allColumnXs, allColumnWidths } =\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 = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\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 ?? 0) + 2; // 2 acts as top margin for the button\n const style: CSSProperties = {\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 kind=\"ghost\"\n className={classNames(\n '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\n icon={vsFilter}\n className=\"filter-light\"\n />\n </div>\n </Button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n allColumnXs,\n allColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.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: CSSProperties = 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 if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\n `Column does not exist at index ${modelColumn} for column array of length ${model.columns.length}`\n );\n // eslint-disable-next-line no-continue\n continue;\n }\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, column.name);\n\n const sortDirection = sort ? sort.direction : null;\n if (!isSortDirection(sortDirection)) {\n throw new Error(`Invalid sort direction: ${sortDirection}`);\n }\n\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 options={{\n positionFixed: true,\n }}\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\n const optionItems = this.getCachedOptionItems(\n onCreateChart !== undefined && model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isFormatColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable || isRollup,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable(),\n isGotoShown,\n advancedSettings.size > 0\n );\n\n const hiddenColumns = this.getCachedHiddenColumns(\n metricCalculator,\n userColumnWidths\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 hiddenColumns={hiddenColumns}\n columnHeaderGroups={columnHeaderGroups}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onReset={this.handleColumnVisibilityReset}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n onColumnHeaderGroupChanged={this.handleHeaderGroupsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n rules={conditionalFormats}\n onChange={this.handleConditionalFormatsChange}\n onCreate={this.handleConditionalFormatCreate}\n onSelect={this.handleConditionalFormatEdit}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return (\n <ConditionalFormatEditor\n dh={model.dh}\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 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 selectedAggregation && (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n )\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n userColumnWidths={userColumnWidths}\n movedColumns={movedColumns}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={\n tableDownloadEstimatedTime ?? undefined\n }\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 return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children != null && <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 {isPartitionedGridModel(model) && model.isPartitionRequired && (\n <IrisGridPartitionSelector\n model={model}\n partitionConfig={partitionConfig}\n onChange={this.handlePartitionChange}\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 <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!isEditableGridModel(model) || !model.isEditable}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={this.getKeyHandlers()}\n mouseHandlers={this.getMouseHandlers()}\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 this.grid?.state.draggingColumn?.range\n )}\n formatColumns={this.getCachedPreviewFormatColumns(\n model.dh,\n model.columns,\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 ?? undefined\n : undefined\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 columnHeaderGroups={columnHeaderGroups}\n partitionConfig={partitionConfig}\n />\n )}\n {!isMenuShown && (\n <div className=\"grid-settings-button\">\n <Button\n kind=\"ghost\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\n onClick={this.handleMenu}\n icon={<FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />}\n tooltip=\"Table Options\"\n />\n </div>\n )}\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n {overflowButtonTooltipProps &&\n this.getOverflowButtonTooltip(overflowButtonTooltipProps)}\n {expandCellTooltipProps &&\n this.getExpandCellTooltip(expandCellTooltipProps)}\n {linkHoverTooltipProps &&\n this.getLinkHoverTooltip(linkHoverTooltipProps)}\n </Grid>\n <GotoRow\n ref={this.gotoRowRef}\n model={model}\n isShown={isGotoShown}\n gotoRow={gotoRow}\n gotoRowError={gotoRowError}\n gotoValueError={gotoValueError}\n onGotoRowSubmit={this.handleGotoRowSelectedRowNumberSubmit}\n onGotoRowNumberChanged={this.handleGotoRowSelectedRowNumberChanged}\n onClose={this.handleGotoRowClosed}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={() => {\n this.handleAnimationStart();\n this.focus();\n }}\n onExited={this.handleAnimationEnd}\n gotoValueSelectedColumnName={gotoValueSelectedColumnName}\n gotoValue={gotoValue}\n gotoValueFilter={gotoValueSelectedFilter}\n onGotoValueSelectedColumnNameChanged={\n this.handleGotoValueSelectedColumnNameChanged\n }\n onGotoValueSelectedFilterChanged={\n this.handleGotoValueSelectedFilterChanged\n }\n onGotoValueChanged={this.handleGotoValueChanged}\n onGotoValueSubmit={this.handleGotoValueSubmitted}\n />\n\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 ?? undefined}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n dh={model.dh}\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 <SlideTransition\n in={isMenuShown}\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 </SlideTransition>\n <ContextActions actions={this.contextActions} />\n </div>\n );\n }\n}\n\nexport default IrisGrid;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGrid.js","names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","Log","FontAwesomeIcon","ContextActions","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Button","ContextActionUtils","SlideTransition","Grid","GridRange","GridUtils","isEditableGridModel","isExpandableGridModel","isDeletableGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsClose","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","DateUtils","Formatter","FormatterUtils","TableUtils","isSortDirection","assertNotNull","copyToClipboard","EMPTY_ARRAY","EMPTY_MAP","Pending","PromiseUtils","ValidationError","getOrThrow","Type","FilterType","throttle","debounce","clamp","getFormatColumns","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","CopyCellKeyHandler","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridCopyCellMouseHandler","IrisGridDataSelectMouseHandler","IrisGridPartitionedTableMouseHandler","IrisGridFilterMouseHandler","IrisGridRowTreeMouseHandler","IrisGridSortMouseHandler","IrisGridTokenMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","createDefaultIrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","DownloadServiceWorkerUtils","IrisGridUtils","CrossColumnSearch","IrisGridModel","isPartitionedGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","AggregationOperation","IrisGridThemeContext","isMissingPartitionError","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","log","module","VIEWPORT_LOADING_DELAY","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","UNFORMATTED_DATE_PATTERN","isEmptyConfig","_ref","advancedFilters","aggregationSettings","customColumns","quickFilters","reverseType","rollupConfig","searchFilter","selectDistinctColumns","sorts","size","length","REVERSE_TYPE","NONE","IrisGrid","constructor","props","_model$layoutHints","_model$layoutHints$hi","_model$columns$0$name","_model$columns$","_defineProperty","column","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","onFilterChange","handleAdvancedFilterChange","onSortChange","handleAdvancedFilterSortChange","onDone","handleAdvancedFilterDone","options","tableUtils","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","toggleGotoRowAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","showGotoRow","hasAdvancedSettings","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","GOTO","metricCalculator","userColumnWidths","getHiddenColumns","Map","initialColumnWidths","columns","aggregationMap","forEach","_ref2","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","_ref3","name","_operationMap$name","newOperations","map","o","dh","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","getModelRollupConfig","_config$columns$lengt","_config$columns","agg","getOperationMap","operationOrder","getOperationOrder","defaultOperation","SKIP","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","getFiltersFromFilterMap","contextTheme","theme","isEditable","floatingRowCount","density","_theme$rowFooterWidth","baseTheme","rowFooterWidth","state","resetCalculatedColumnWidths","resetCalculatedRowHeights","densityTheme","compact","spacious","_objectSpread","autoSelectRow","keyHandlers","sort","b","order","mouseHandlers","rendererProp","alwaysFetchColumns","movedColumns","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","i","getModelIndex","columnSet","Set","searchValue","selectedSearchColumns","invertSearchColumns","createSearchFilter","setState","loadingSpinnerShown","isViewportPending","startLoading","loadingCancelShown","loadingBlocksGrid","leading","trailing","conditionalFormatPreview","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","DOWNLOAD_STATUS","DOWNLOADING","overflowButtonTooltipProps","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","style","children","ref","handleTooltipRef","Date","now","expandCellTooltipProps","expandTooltipDisplayValue","isExpandAllAvailable","textAlign","isMacPlatform","linkHoverTooltipProps","linkHoverDisplayValue","className","input","gotoValue","gotoValueManuallyChanged","debouncedSeekRow","seekRow","handleGotoRowOpened","handleGotoRowClosed","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleHeaderGroupsChanged","handleUpdate","handleViewChanged","handleFormatSelection","handleConditionalFormatCreate","handleConditionalFormatEdit","handleConditionalFormatsChange","handleConditionalFormatEditorSave","handleConditionalFormatEditorCancel","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handleViewportUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleGotoRowSelectedRowNumberSubmit","focusRowInGrid","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadCompleted","handlePartitionChange","handleColumnVisibilityChanged","handleColumnVisibilityReset","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","getColumnBoundingRect","handleGotoRowSelectedRowNumberChanged","handleGotoValueSelectedColumnNameChanged","handleGotoValueSelectedFilterChanged","handleGotoValueChanged","handleGotoValueSubmitted","makeQuickFilter","grid","lastLoadedConfig","pending","globalColumnFormats","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","showEmptyStrings","showNullStrings","tableSaver","crossColumnRef","createRef","isAnimating","filterInputRef","gotoRowRef","isCopying","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","toggleGotoRow","GOTO_ROW","discardAction","pendingDataMap","discardPending","catch","error","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","isSelectingPartition","partitions","partitionConfig","movedColumnsProp","movedRows","movedRowsProp","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","initialMovedColumns","initialMovedRows","layoutHints","hiddenColumns","getColumnIndexByName","searchColumns","focusedFilterBarColumn","metrics","mode","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","shownColumnTooltip","conditionalFormatEditIndex","isTableDownloading","isReady","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","overflowText","isGotoShown","gotoRow","gotoRowError","gotoValueError","gotoValueSelectedColumnName","gotoValueSelectedFilter","eqIgnoreCase","initialColumnHeaderGroups","componentDidMount","initState","startListening","componentDidUpdate","prevProps","prevState","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","_advancedSettings$get","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","resetRanges","applyInputFilters","resetColumnSelection","updateFormatterSettings","updateSorts","loadingScrimStartTime","loadingScrimFinishTime","window","requestAnimationFrame","currentTime","totalTime","Math","min","debug2","isAggEditType","option","AGGREGATION_EDIT","some","removeEmptyAggregations","sendStateChange","componentWillUnmount","cancel","updateSearchFilter","loadingTimer","clearTimeout","handleDownloadProgressUpdate","animationFrame","cancelAnimationFrame","showViewportLoading","gridWrapper","_this$grid$canvasWrap","_this$grid","canvasWrapper","current","getKeyHandlers","getCachedKeyHandlers","renderer","getCachedRenderer","getMouseHandlers","getCachedMouseHandlers","getValueForCell","columnIndex","rowIndex","rawValue","arguments","modelColumn","getModelColumn","modelRow","getModelRow","value","valueForCell","isDateType","i18n","DateTimeFormat","format","TimeZone","getTimeZone","timeZone","textForCell","modelColumns","modelRows","getTheme","_ref4","contextDensity","context","getCachedTheme","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","text","err","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","_ref5","findIndex","_ref6","columnName","columnType","delete","applyQuickFilter","concat","trim","quickFilter","set","setAdvancedFilterMap","setAdvancedFilter","_ref7","setQuickFilter","_ref8","setFilterMap","filterMap","_advancedSettings$get2","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","_ref9","filterList","find","c","combinedText","combineFiltersFromList","removeQuickFilter","removeColumnFilter","modelRange","clearRange","Array","isArray","_ref10","_","_ref11","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","_ref12","_settings$defaultDeci","_settings$defaultInte","_settings$truncateNum","_settings$showEmptySt","_settings$showNullStr","forceUpdate","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","isShowEmptyStringsChanged","isShowNullStringsChanged","updateFormatter","updatedFormats","_this$globalColumnFor","update","mergedColumnFormats","values","initFormatter","isPartitionRequired","loadPartitionsTable","loadTableState","handleTableLoadError","applyInputFiltersOnInit","inputFiltersWithValues","_this","_asyncToGenerator","initializePartitionConfig","isCanceled","_this2","keyTable","add","partitionKeysTable","resolved","close","desc","applySort","setViewport","addEventListener","Table","EVENT_UPDATED","event","detail","data","rows","stopLoading","row","newPartition","isPartitionAwareSourceTable","e","selectPartitionKeyFromTable","getRowDataMap","partitionColumnSet","partitionColumns","entries","_ref13","has","_ref14","columnData","copyCell","String","copyColumnHeader","columnDepth","copyRanges","ranges","includeHeaders","formatValues","getUserColumnWidths","boundedRanges","columnCount","rowCount","clearSelectedRanges","setViewState","top","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","rollback","canRollback","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","VIEWPORT_UPDATED","removeEventListener","focus","_this$grid2","focusFilterBar","isFilterable","left","rightVisible","lastLeft","_this$grid3","_this$grid4","_this$grid5","metricState","getMetricState","newLeft","getLastLeft","getVisibleWidth","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","_this$grid6","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","isVisible","_this$grid7","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","_model$layoutHints$fr","_model$layoutHints2","_this$grid8","updateCanvas","prevConfig","onError","loadingMessage","showAllColumns","_this$grid9","columnWidth","toggleSort","addToExisting","info","isColumnSortable","currentSorts","toggleSortForColumn","_this$grid10","sortColumn","_this$grid11","direction","none","isAbs","reverse","_this$grid12","isReversible","focusIndex","isTextType","_this$grid13","isTableSearchAvailable","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","searchDisplayMode","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","_this$crossColumnRef","_this$crossColumnRef2","_this$grid14","_this$grid15","_this$grid16","_this$gotoRowRef$curr","cursorRow","cursorColumn","cellValue","convertValueToText","_this3","_document","_document$activeEleme","Error","containsGridCellInputField","document","activeElement","classList","contains","_this3$grid","newPendingSavePromise","then","_this4","selectColumn","onColumnSelected","selectData","dataMap","onDataSelected","_this5","groupedColumns","_loop","isExpandable","isRowExpandable","isGrouped","index","_this$grid17","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","_this$grid18","_this$filterInputRef","_this$filterInputRef2","onCreateChart","warn","_ref15","setGridFocus","defocusInput","_this$grid19","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","stopPropagation","_ref16","newOptions","pop","_ref17","_this$grid20","_this$grid$state","_this$grid21","selectionEndRow","bottomViewport","bottomNonFloating","_this$grid22","onSelectionChanged","onChangeApplied","parseColumnHeaderGroups","groups","_this$grid23","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","_this$grid24","_this$grid25","join","aggregation","_ref18","_rollupConfig$columns","_rollupConfig$columns2","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","_ref19","newAggregations","inputString","_arguments","_this6","_this6$grid","isBackwards","selectedColumnName","isSeekRowAvailable","selectedColumn","getColumnByName","searchFromRow","isContains","containsIgnoreCase","isIgnoreCase","_this6$grid2","columnDataType","dataType","CHAR","STRING","ValueType","DATETIME","startDate","parseDateRange","DECIMAL","INT","isBigDecimalType","isBigIntegerType","inputValue","parseInt","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","NUMBER","makeValue","setFocusRow","_this$tableSaver","cancelDownload","FINISHED","CANCELED","deleteRanges","isDeletable","columnAllowedCursor","cursor","topOffset","irisGridState","gridState","onStateChange","_this$gridWrapper2","gridRect","popperMargin","columnHeaderHeight","allColumnXs","allColumnWidths","width","columnHeaderMaxDepth","columnX","bottom","right","x","y","toJSON","rowNumber","rowInt","_this$grid26","_this$grid27","_this$grid28","target","getColumnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","timeout","interactive","referenceObject","onExited","onStatistics","_this$tooltip","_this$grid29","prevColumnName","prevColumn","render","_rollupConfig$columns3","_rollupConfig$columns4","_this7","_this$grid31","_this$grid31$state$dr","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","singleColumnHeaderHeight","getCachedFilter","stateOverride","getCachedStateOverride","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridX","gridY","_theme$filterBarHeigh","_theme$filterBarHeigh2","_this$grid30","filterBarHeight","fieldWidth","fieldHeight","minWidth","isValid","advancedFilter","isBarFiltered","active","isAdvancedFilterSet","onAdvancedFiltersTriggered","onTab","onContextMenu","handleContextMenu","loadingElement","loadingStatus","show","onClick","transform","columnTooltip","_this$tooltip2","filterBar","visibleColumns","_loop2","isFilterSet","isFilterVisible","element","hidden","kind","_this7$grid","onMouseEnter","onMouseLeave","advancedFilterMenus","_loop3","xColumnHeader","xFilterBar","onEntered","getAdvancedMenuOpenedHandler","isShown","closeOnBlur","positionFixed","getCachedAdvancedFilterMenuActions","_ret","getCachedOptionItems","getCachedHiddenColumns","openOptionsStack","onSubmit","onColumnVisibilityChanged","onReset","onMovedColumnsChanged","onColumnHeaderGroupChanged","onCreate","onSelect","handleConditionalFormatEditorUpdate","rule","onUpdate","onSave","onCancel","onEdit","isDownloading","onDownload","onDownloadStart","items","role","in","transitionSlowMs","onEnter","onExit","mountOnEnter","unmountOnExit","selectedColumns","invertSelection","isStickyBottom","onViewChanged","isOpen","onClose","getAlwaysFetchColumns","draggingColumn","range","formatColumns","getCachedPreviewFormatColumns","totalsConfig","getModelTotalsConfig","getOverflowButtonTooltip","getExpandCellTooltip","getLinkHoverTooltip","onGotoRowSubmit","onGotoRowNumberChanged","onEntering","onExiting","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","isSaving","saveTooltip","discardTooltip","onDiscard","onDownloadCompleted","onDownloadCanceled","onDownloadProgressUpdate","onBack","actions","columnSelectionValidator","columnNotAllowedCursor","copyCursor","getServiceWorker","defaultDateTimeFormat","FULL_DATE_FORMAT","showTimeZone","showTSeparator","shape","defaultFormatString","string"],"sources":["../src/IrisGrid.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n Component,\n CSSProperties,\n ReactElement,\n ReactNode,\n} from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'fast-deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActions,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n ContextAction,\n PopperOptions,\n ReferenceObject,\n Button,\n ContextActionUtils,\n ResolvableContextAction,\n SlideTransition,\n} from '@deephaven/components';\nimport {\n Grid,\n GridMetrics,\n GridMouseHandler,\n GridRange,\n GridRangeIndex,\n GridThemeType,\n GridUtils,\n KeyHandler,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n VisibleIndex,\n GridState,\n isEditableGridModel,\n BoundedAxisRange,\n isExpandableGridModel,\n isDeletableGridModel,\n} from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsClose,\n vsCloudDownload,\n vsEdit,\n vsFilter,\n vsMenu,\n vsReply,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n FormattingRule,\n ReverseType,\n RowDataMap,\n SortDirection,\n DateTimeColumnFormatterOptions,\n TableColumnFormat,\n Settings,\n isSortDirection,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n copyToClipboard,\n EMPTY_ARRAY,\n EMPTY_MAP,\n Pending,\n PromiseUtils,\n ValidationError,\n getOrThrow,\n} from '@deephaven/utils';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport {\n FormattingRule as SidebarFormattingRule,\n getFormatColumns,\n} from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler, { CopyOperation } from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n CopyCellKeyHandler,\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridCellOverflowMouseHandler,\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridCopyCellMouseHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridPartitionedTableMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridRowTreeMouseHandler,\n IrisGridSortMouseHandler,\n IrisGridTokenMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport { createDefaultIrisGridTheme, IrisGridThemeType } 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 DownloadServiceWorkerUtils,\n} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport {\n isPartitionedGridModel,\n PartitionConfig,\n PartitionedGridModel,\n} from './PartitionedGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu, {\n AdvancedSettingsMenuCallback,\n} from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\nimport ConditionalFormattingMenu from './sidebar/conditional-formatting/ConditionalFormattingMenu';\n\nimport ConditionalFormatEditor from './sidebar/conditional-formatting/ConditionalFormatEditor';\nimport IrisGridCellOverflowModal from './IrisGridCellOverflowModal';\nimport GotoRow, { GotoRowElement } from './GotoRow';\nimport {\n Aggregation,\n AggregationSettings,\n} from './sidebar/aggregations/Aggregations';\nimport { ChartBuilderSettings } from './sidebar/ChartBuilder';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { UIRollupConfig } from './sidebar/RollupRows';\nimport {\n Action,\n AdvancedFilterMap,\n AdvancedFilterOptions,\n ColumnName,\n InputFilter,\n OperationMap,\n OptionItem,\n PendingDataErrorMap,\n PendingDataMap,\n QuickFilterMap,\n ReadonlyAdvancedFilterMap,\n ReadonlyAggregationMap,\n ReadonlyQuickFilterMap,\n UITotalsTableConfig,\n} from './CommonTypes';\nimport ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { IrisGridThemeContext } from './IrisGridThemeProvider';\nimport { isMissingPartitionError } from './MissingPartitionError';\n\nconst log = Log.module('IrisGrid');\n\nconst VIEWPORT_LOADING_DELAY = 500;\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SEEK_ROW_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false,\n});\n\nconst UNFORMATTED_DATE_PATTERN = `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z`;\n\nfunction isEmptyConfig({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n}: {\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n customColumns: readonly ColumnName[];\n quickFilters: ReadonlyQuickFilterMap;\n reverseType: ReverseType;\n rollupConfig?: UIRollupConfig;\n searchFilter?: DhType.FilterCondition;\n selectDistinctColumns: readonly ColumnName[];\n sorts: readonly DhType.Sort[];\n}): boolean {\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 type FilterData = {\n operator: FilterTypeValue;\n text: string;\n value: unknown;\n startColumnIndex: number;\n};\n\nexport type FilterMap = Map<\n ColumnName,\n {\n columnType: string;\n filterList: FilterData[];\n }\n>;\n\nexport interface IrisGridContextMenuData {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: DhType.Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow: GridRangeIndex;\n modelColumn: GridRangeIndex;\n}\n\nexport interface IrisGridProps {\n children: React.ReactNode;\n advancedFilters: ReadonlyAdvancedFilterMap;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n alwaysFetchColumns: readonly ColumnName[];\n isFilterBarShown: boolean;\n applyInputFiltersOnInit: boolean;\n conditionalFormats: readonly SidebarFormattingRule[];\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n inputFilters: readonly InputFilter[];\n customFilters: readonly DhType.FilterCondition[];\n model: IrisGridModel;\n onCreateChart: (settings: ChartBuilderSettings, model: IrisGridModel) => void;\n onColumnSelected: (column: DhType.Column) => void;\n onError: (error: unknown) => void;\n onDataSelected: (index: ModelIndex, map: RowDataMap) => void;\n onStateChange: (irisGridState: IrisGridState, gridState: GridState) => void;\n onAdvancedSettingsChange: AdvancedSettingsMenuCallback;\n\n /** @deprecated use `partitionConfig` instead */\n partitions?: (string | null)[];\n partitionConfig?: PartitionConfig;\n sorts: readonly DhType.Sort[];\n reverseType: ReverseType;\n quickFilters: ReadonlyQuickFilterMap | null;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n settings?: Settings;\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n onSelectionChanged: (gridRanges: readonly GridRange[]) => void;\n rollupConfig?: UIRollupConfig;\n aggregationSettings: AggregationSettings;\n\n isSelectingColumn: boolean;\n isSelectingPartition: boolean;\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator: (value: DhType.Column | null) => boolean;\n columnAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n copyCursor: string;\n name: string;\n onlyFetchVisibleColumns: boolean;\n\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: (\n data: IrisGridContextMenuData\n ) => readonly ResolvableContextAction[];\n\n pendingDataMap?: PendingDataMap;\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n canCopy: boolean;\n canDownloadCsv: boolean;\n frozenColumns: readonly ColumnName[];\n\n // Theme override for IrisGridTheme\n theme: GridThemeType;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n\n // Optional key and mouse handlers\n keyHandlers: readonly KeyHandler[];\n mouseHandlers: readonly GridMouseHandler[];\n\n // Pass in a custom renderer to the grid for advanced use cases\n renderer?: IrisGridRenderer;\n\n density?: 'compact' | 'regular' | 'spacious';\n}\n\nexport interface IrisGridState {\n isFilterBarShown: boolean;\n isSelectingPartition: boolean;\n focusedFilterBarColumn: number | null;\n metricCalculator: IrisGridMetricCalculator;\n metrics?: GridMetrics;\n\n partitionConfig?: PartitionConfig;\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: ReadonlyQuickFilterMap;\n advancedFilters: ReadonlyAdvancedFilterMap;\n shownAdvancedFilter: number | null;\n hoverAdvancedFilter: number | null;\n\n sorts: readonly DhType.Sort[];\n reverseType: ReverseType;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n\n // selected range in table\n selectedRanges: readonly GridRange[];\n\n // Current ongoing copy operation\n copyOperation: CopyOperation | null;\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: string | null;\n loadingScrimProgress: number | null;\n loadingSpinnerShown: boolean;\n loadingCancelShown: boolean;\n loadingBlocksGrid: boolean;\n\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n\n shownColumnTooltip: number | null;\n\n formatter: Formatter;\n isMenuShown: boolean;\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n\n conditionalFormats: readonly SidebarFormattingRule[];\n conditionalFormatEditIndex: number | null;\n conditionalFormatPreview?: SidebarFormattingRule;\n\n // Column user is hovering over for selection\n hoverSelectColumn: GridRangeIndex;\n\n isTableDownloading: boolean;\n isReady: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number | null;\n\n showSearchBar: boolean;\n searchFilter?: DhType.FilterCondition;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n rollupConfig?: UIRollupConfig;\n rollupSelectedColumns: readonly ColumnName[];\n aggregationSettings: AggregationSettings;\n selectedAggregation: Aggregation | null;\n\n openOptions: readonly OptionItem[];\n\n pendingRowCount: number;\n pendingDataMap: PendingDataMap;\n pendingDataErrors: PendingDataErrorMap;\n pendingSavePromise: Promise<void> | null;\n pendingSaveError: string | null;\n\n toastMessage: JSX.Element | null;\n frozenColumns: readonly ColumnName[];\n showOverflowModal: boolean;\n overflowText: string;\n overflowButtonTooltipProps: CSSProperties | null;\n expandCellTooltipProps: CSSProperties | null;\n expandTooltipDisplayValue: string;\n linkHoverTooltipProps: CSSProperties | null;\n linkHoverDisplayValue: string;\n\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n isGotoShown: boolean;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValueSelectedFilter: FilterTypeValue;\n gotoValueManuallyChanged: boolean;\n gotoValue: string;\n\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n}\n\nclass IrisGrid extends Component<IrisGridProps, IrisGridState> {\n static contextType = IrisGridThemeContext;\n\n // eslint-disable-next-line react/static-property-placement, react/sort-comp\n declare context: React.ContextType<typeof IrisGridThemeContext>;\n\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static defaultProps = {\n children: null,\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: (): void => undefined,\n onDataSelected: (): void => undefined,\n onError: (): void => undefined,\n onStateChange: (): void => undefined,\n onAdvancedSettingsChange: (): void => undefined,\n partitions: undefined,\n partitionConfig: undefined,\n quickFilters: EMPTY_MAP,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: (): void => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnSelectionValidator: null,\n columnAllowedCursor: null,\n columnNotAllowedCursor: null,\n copyCursor: 'copy',\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: (): readonly ResolvableContextAction[] => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n showEmptyStrings: true,\n showNullStrings: true,\n formatter: EMPTY_ARRAY,\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: null,\n // Do not set a default density prop since we need to know if it overrides the global density setting\n density: undefined,\n canToggleSearch: true,\n mouseHandlers: EMPTY_ARRAY,\n keyHandlers: EMPTY_ARRAY,\n };\n\n constructor(props: IrisGridProps) {\n super(props);\n\n this.handleAdvancedFilterChange =\n this.handleAdvancedFilterChange.bind(this);\n this.handleAdvancedFilterSortChange =\n this.handleAdvancedFilterSortChange.bind(this);\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleGotoRowOpened = this.handleGotoRowOpened.bind(this);\n this.handleGotoRowClosed = this.handleGotoRowClosed.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.handleHeaderGroupsChanged = this.handleHeaderGroupsChanged.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 =\n this.handleConditionalFormatCreate.bind(this);\n this.handleConditionalFormatEdit =\n this.handleConditionalFormatEdit.bind(this);\n this.handleConditionalFormatsChange =\n this.handleConditionalFormatsChange.bind(this);\n this.handleConditionalFormatEditorSave =\n this.handleConditionalFormatEditorSave.bind(this);\n this.handleConditionalFormatEditorCancel =\n this.handleConditionalFormatEditorCancel.bind(this);\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged =\n this.handleCustomColumnsChanged.bind(this);\n this.handleSelectDistinctChanged =\n this.handleSelectDistinctChanged.bind(this);\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.handlePendingCommitClicked =\n this.handlePendingCommitClicked.bind(this);\n this.handlePendingDiscardClicked =\n this.handlePendingDiscardClicked.bind(this);\n this.handleGotoRowSelectedRowNumberSubmit =\n this.handleGotoRowSelectedRowNumberSubmit.bind(this);\n this.focusRowInGrid = this.focusRowInGrid.bind(this);\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.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handleColumnVisibilityChanged =\n this.handleColumnVisibilityChanged.bind(this);\n this.handleColumnVisibilityReset =\n this.handleColumnVisibilityReset.bind(this);\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 this.handleGotoRowSelectedRowNumberChanged =\n this.handleGotoRowSelectedRowNumberChanged.bind(this);\n this.handleGotoValueSelectedColumnNameChanged =\n this.handleGotoValueSelectedColumnNameChanged.bind(this);\n this.handleGotoValueSelectedFilterChanged =\n this.handleGotoValueSelectedFilterChanged.bind(this);\n this.handleGotoValueChanged = this.handleGotoValueChanged.bind(this);\n this.handleGotoValueSubmitted = this.handleGotoValueSubmitted.bind(this);\n this.handleViewportUpdated = this.handleViewportUpdated.bind(this);\n this.makeQuickFilter = this.makeQuickFilter.bind(this);\n\n this.grid = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = EMPTY_ARRAY;\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n this.showEmptyStrings = true;\n this.showNullStrings = true;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.filterInputRef = React.createRef();\n\n this.gotoRowRef = React.createRef();\n\n this.isCopying = false;\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n\n this.toggleGotoRowAction = {\n action: () => this.toggleGotoRow(),\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n };\n\n this.discardAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0\n ) {\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 isEditableGridModel(model) &&\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.toggleGotoRowAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const {\n aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n partitions,\n partitionConfig,\n model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\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 columnHeaderGroups,\n } = props;\n\n const { dh } = model;\n const keyHandlers: KeyHandler[] = [\n new CopyCellKeyHandler(this),\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n const mouseHandlers: GridMouseHandler[] = [\n new IrisGridCellOverflowMouseHandler(this),\n new IrisGridRowTreeMouseHandler(this),\n new IrisGridTokenMouseHandler(this),\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this, dh),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n new IrisGridPartitionedTableMouseHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n mouseHandlers.push(new IrisGridCopyCellMouseHandler(this));\n }\n const movedColumns =\n movedColumnsProp.length > 0\n ? movedColumnsProp\n : model.initialMovedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.initialMovedRows;\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns,\n initialColumnWidths: new Map(\n model?.layoutHints?.hiddenColumns?.map(name => [\n model.getColumnIndexByName(name),\n 0,\n ])\n ),\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.tableUtils = new TableUtils(dh);\n\n this.mouseHandlers = mouseHandlers;\n this.keyHandlers = keyHandlers;\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: undefined,\n\n partitionConfig:\n partitionConfig ??\n (partitions && partitions.length\n ? { partitions, mode: 'partition' }\n : undefined),\n\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: quickFilters ? new Map(quickFilters) : new Map(),\n advancedFilters: new Map(advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\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 loadingCancelShown: false,\n loadingBlocksGrid: false,\n\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(dh),\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: pendingDataMap ?? new Map(),\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 expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n linkHoverTooltipProps: null,\n linkHoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n\n gotoValueSelectedColumnName: model.columns[0]?.name ?? '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n gotoValueManuallyChanged: false,\n columnHeaderGroups: columnHeaderGroups ?? model.initialColumnHeaderGroups,\n };\n }\n\n componentDidMount(): void {\n const { model } = this.props;\n this.initState();\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps: IrisGridProps, prevState: IrisGridState): void {\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...', { resetRanges: 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...', { resetRanges: true });\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\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 = undefined;\n this.loadingScrimFinishTime = undefined;\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 const { openOptions } = this.state;\n if (openOptions !== prevState.openOptions) {\n const isAggEditType = (option: OptionItem): boolean =>\n option.type === OptionType.AGGREGATION_EDIT;\n if (\n !openOptions.some(isAggEditType) &&\n prevState.openOptions.some(isAggEditType)\n ) {\n this.removeEmptyAggregations();\n }\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount(): void {\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 if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n\n this.showViewportLoading.cancel();\n }\n\n grid: Grid | null;\n\n lastFocusedFilterBarColumn?: number;\n\n lastLoadedConfig: Pick<\n IrisGridState,\n | 'advancedFilters'\n | 'aggregationSettings'\n | 'customColumns'\n | 'quickFilters'\n | 'reverseType'\n | 'rollupConfig'\n | 'searchFilter'\n | 'selectDistinctColumns'\n | 'sorts'\n > | null;\n\n tooltip?: Tooltip;\n\n pending: Pending;\n\n globalColumnFormats?: readonly FormattingRule[];\n\n dateTimeFormatterOptions?: DateTimeColumnFormatterOptions;\n\n decimalFormatOptions: { defaultFormatString?: string };\n\n integerFormatOptions: { defaultFormatString?: string };\n\n truncateNumbersWithPound: boolean;\n\n showEmptyStrings: boolean;\n\n showNullStrings: boolean;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n loadingScrimStartTime?: number;\n\n loadingScrimFinishTime?: number;\n\n animationFrame?: number;\n\n loadingTimer?: ReturnType<typeof setTimeout>;\n\n tableSaver: TableSaver | null;\n\n crossColumnRef: React.RefObject<CrossColumnSearch>;\n\n isAnimating: boolean;\n\n filterInputRef: React.RefObject<FilterInputField>;\n\n gotoRowRef: React.RefObject<GotoRowElement>;\n\n isCopying: boolean;\n\n toggleFilterBarAction: Action;\n\n toggleSearchBarAction: Action;\n\n toggleGotoRowAction: Action;\n\n discardAction: Action;\n\n commitAction: Action;\n\n contextActions: ContextAction[];\n\n tableUtils: TableUtils;\n\n keyHandlers: readonly KeyHandler[];\n\n mouseHandlers: readonly GridMouseHandler[];\n\n get gridWrapper(): HTMLDivElement | null {\n return this.grid?.canvasWrapper.current ?? null;\n }\n\n getAdvancedMenuOpenedHandler = memoize(\n (column: ModelIndex) => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model: IrisGridModel,\n column: DhType.Column,\n advancedFilterOptions: AdvancedFilterOptions | undefined,\n sortDirection: SortDirection | undefined,\n formatter: Formatter\n ) => (\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 tableUtils={this.tableUtils}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable: boolean,\n isCustomColumnsAvailable: boolean,\n isFormatColumnsAvailable: boolean,\n isRollupAvailable: boolean,\n isTotalsAvailable: boolean,\n isSelectDistinctAvailable: boolean,\n isExportAvailable: boolean,\n toggleFilterBarAction: Action,\n toggleSearchBarAction: Action,\n toggleGotoRowAction: Action,\n isFilterBarShown: boolean,\n showSearchBar: boolean,\n canDownloadCsv: boolean,\n canToggleSearch: boolean,\n showGotoRow: boolean,\n hasAdvancedSettings: boolean\n ): readonly OptionItem[] => {\n const optionItems: OptionItem[] = [];\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: 'Organize Columns',\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: '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 if (hasAdvancedSettings) {\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\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 optionItems.push({\n type: OptionType.GOTO,\n title: 'Go to',\n subtitle: toggleGotoRowAction.shortcut.getDisplayText(),\n icon: vsReply,\n isOn: showGotoRow,\n onChange: toggleGotoRowAction.action,\n });\n\n return Object.freeze(optionItems);\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(\n (\n metricCalculator: IrisGridMetricCalculator,\n userColumnWidths: ModelSizeMap\n ): readonly ModelIndex[] =>\n IrisGridUtils.getHiddenColumns(\n new Map([...metricCalculator.initialColumnWidths, ...userColumnWidths])\n ),\n { max: 1 }\n );\n\n getAggregationMap = memoize(\n (\n columns: readonly DhType.Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyAggregationMap => {\n const aggregationMap = {} as Record<AggregationOperation, string[]>;\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\n getOperationMap = memoize(\n (\n columns: readonly DhType.Column[],\n aggregations: readonly Aggregation[]\n ): OperationMap => {\n const operationMap: OperationMap = {};\n aggregations\n .filter(\n (a: Aggregation) => !AggregationUtils.isRollupOperation(a.operation)\n )\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] = Object.freeze(newOperations);\n });\n });\n return operationMap;\n }\n );\n\n getOperationOrder = memoize(\n (aggregations: readonly Aggregation[]): AggregationOperation[] =>\n aggregations\n .map((a: Aggregation) => a.operation)\n .filter(\n (o: AggregationOperation) => !AggregationUtils.isRollupOperation(o)\n )\n );\n\n getCachedFormatColumns = memoize(\n (\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rules: readonly SidebarFormattingRule[]\n ) => getFormatColumns(dh, columns, rules)\n );\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n getCachedPreviewFormatColumns = memoize(\n (\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rulesParam: readonly SidebarFormattingRule[],\n preview?: SidebarFormattingRule,\n editIndex?: number\n ): DhType.CustomColumn[] => {\n log.debug(\n 'getCachedPreviewFormatColumns',\n rulesParam,\n preview,\n editIndex\n );\n if (preview !== undefined && editIndex !== undefined) {\n const rules = [...rulesParam];\n rules[editIndex] = preview;\n return this.getCachedFormatColumns(dh, columns, rules);\n }\n\n return this.getCachedFormatColumns(dh, columns, rulesParam);\n }\n );\n\n getModelRollupConfig = memoize(\n (\n originalColumns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n )\n );\n\n getModelTotalsConfig = memoize(\n (\n columns: readonly DhType.Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): UITotalsTableConfig | null => {\n if ((config?.columns?.length ?? 0) > 0) {\n // If we've got rollups, then aggregations are applied as part of that...\n return null;\n }\n\n // Filter out aggregations without any columns actually selected\n const aggregations = aggregationSettings.aggregations.filter(\n agg => agg.selected.length > 0 || agg.invert\n );\n if (aggregations.length === 0) {\n // We don't actually have any aggregations set, don't bother\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return {\n operationMap,\n operationOrder,\n showOnTop: aggregationSettings.showOnTop,\n defaultOperation: AggregationOperation.SKIP,\n } as UITotalsTableConfig;\n }\n );\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n sorts: readonly DhType.Sort[],\n reverseType: ReverseType,\n rollupConfig: UIRollupConfig | undefined,\n isMenuShown: boolean\n ) => ({\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters: readonly DhType.FilterCondition[],\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n searchFilter: DhType.FilterCondition | undefined\n ) => [\n ...(customFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter !== undefined ? [searchFilter] : []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n contextTheme: IrisGridThemeType | null,\n theme: Partial<IrisGridThemeType> | null,\n isEditable: boolean,\n floatingRowCount: number,\n density: 'compact' | 'regular' | 'spacious'\n ): IrisGridThemeType => {\n // If a theme is available via context, use that as the base theme.\n // If iris-grid is standalone without a context, use the default theme.\n const baseTheme = contextTheme ?? createDefaultIrisGridTheme();\n\n // We only show the row footers when we have floating rows for aggregations\n const rowFooterWidth =\n floatingRowCount > 0\n ? theme?.rowFooterWidth ?? baseTheme.rowFooterWidth\n : 0;\n\n const { metricCalculator } = this.state;\n if (metricCalculator != null) {\n metricCalculator.resetCalculatedColumnWidths();\n metricCalculator.resetCalculatedRowHeights();\n }\n\n let densityTheme = {};\n if (density === 'compact') {\n densityTheme = baseTheme.density.compact;\n } else if (density === 'spacious') {\n densityTheme = baseTheme.density.spacious;\n }\n\n return {\n ...baseTheme,\n ...densityTheme,\n ...theme,\n autoSelectRow: !isEditable,\n rowFooterWidth,\n };\n },\n { max: 1 }\n );\n\n getCachedKeyHandlers = memoize((keyHandlers: readonly KeyHandler[]) =>\n [...keyHandlers, ...this.keyHandlers].sort((a, b) => a.order - b.order)\n );\n\n getKeyHandlers(): readonly KeyHandler[] {\n const { keyHandlers } = this.props;\n return this.getCachedKeyHandlers(keyHandlers);\n }\n\n getCachedMouseHandlers = memoize(\n (\n mouseHandlers: readonly GridMouseHandler[]\n ): readonly GridMouseHandler[] => [...mouseHandlers, ...this.mouseHandlers]\n );\n\n getCachedRenderer = memoize(\n (rendererProp?: IrisGridRenderer) => rendererProp ?? new IrisGridRenderer(),\n { max: 1 }\n );\n\n get renderer(): IrisGridRenderer {\n const { renderer } = this.props;\n return this.getCachedRenderer(renderer);\n }\n\n getMouseHandlers(): readonly GridMouseHandler[] {\n const { mouseHandlers } = this.props;\n return this.getCachedMouseHandlers(mouseHandlers);\n }\n\n getValueForCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): string | unknown {\n const { model } = this.props;\n const { dh } = model;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n const { formatter } = model;\n return dh.i18n.DateTimeFormat.format(\n UNFORMATTED_DATE_PATTERN,\n value as number | Date | DhType.DateWrapper,\n dh.i18n.TimeZone.getTimeZone(formatter.timeZone)\n );\n }\n return value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n\n getModelColumn(columnIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelColumns } = metrics;\n if (modelColumns == null) {\n return null;\n }\n\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n\n getModelRow(rowIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelRows } = metrics;\n if (modelRows == null) {\n return null;\n }\n\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n\n getTheme(): IrisGridThemeType {\n const { model, theme, density } = this.props;\n const { theme: contextTheme, density: contextDensity } = this.context;\n\n return this.getCachedTheme(\n contextTheme,\n theme,\n (isEditableGridModel(model) && model.isEditable) ?? false,\n model.floatingTopRowCount + model.floatingBottomRowCount,\n density ?? contextDensity\n );\n }\n\n getVisibleColumn(modelIndex: ModelIndex): VisibleIndex {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n makeQuickFilter(\n column: DhType.Column,\n text: string,\n timeZone: string\n ): DhType.FilterCondition | null {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\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 inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(\n inputFilters: InputFilter[],\n replaceExisting = false\n ): void {\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 modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(\n modelIndex: ModelIndex,\n value: string | null,\n quickFilters: QuickFilterMap\n ): boolean {\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: this.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilterMap(advancedFilters: ReadonlyAdvancedFilterMap): void {\n this.setState({ advancedFilters });\n }\n\n setAdvancedFilter(\n modelIndex: ModelIndex,\n filter: DhType.FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', { resetRanges: 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 modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(\n modelIndex: ModelIndex,\n filter: DhType.FilterCondition | null,\n text: string\n ): void {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', { resetRanges: 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 filterMap Filter map\n */\n setFilterMap(filterMap: FilterMap): void {\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, filterList }, 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 assertNotNull(columnIndex);\n const combinedText = IrisGridUtils.combineFiltersFromList(\n columnType,\n filterList\n );\n if (combinedText.length === 0) {\n this.removeQuickFilter(columnIndex);\n } else {\n const { formatter } = model;\n this.setQuickFilter(\n columnIndex,\n this.makeQuickFilter(column, combinedText, formatter.timeZone),\n `${combinedText}`\n );\n }\n });\n }\n\n removeColumnFilter(modelRange: ModelIndex | BoundedAxisRange): void {\n this.startLoading('Filtering...', { resetRanges: true });\n\n const clearRange: BoundedAxisRange = Array.isArray(modelRange)\n ? modelRange\n : [modelRange, modelRange];\n\n this.setState(\n ({ advancedFilters, quickFilters }: Partial<IrisGridState>) => {\n const newAdvancedFilters: AdvancedFilterMap = advancedFilters\n ? new Map(advancedFilters)\n : new Map();\n const newQuickFilters: QuickFilterMap = quickFilters\n ? new Map(quickFilters)\n : new Map();\n newAdvancedFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newAdvancedFilters.delete(column);\n }\n });\n newQuickFilters.forEach((_, column) => {\n if (column >= clearRange[0] && column <= clearRange[1]) {\n newQuickFilters.delete(column);\n }\n });\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n }\n );\n }\n\n removeQuickFilter(modelColumn: ModelIndex): void {\n this.startLoading('Clearing Filter...', { resetRanges: 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(): void {\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...', { resetRanges: true });\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearCrossColumSearch(): void {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearGridInputField(): void {\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(): void {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns, formatter } = model;\n\n log.debug('Rebuilding filters');\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 = this.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: this.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n this.startLoading('Rebuilding filters...', { resetRanges: true });\n\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n\n setFilters({\n quickFilters,\n advancedFilters,\n }: Pick<IrisGridState, 'quickFilters' | 'advancedFilters'>): void {\n this.setState({\n quickFilters,\n advancedFilters,\n });\n }\n\n updateFormatterSettings(settings?: Settings, forceUpdate = true): void {\n const globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions =\n FormatterUtils.getDateTimeFormatterOptions(settings);\n\n const defaultDecimalFormatOptions =\n settings?.defaultDecimalFormatOptions ?? {};\n const defaultIntegerFormatOptions =\n settings?.defaultIntegerFormatOptions ?? {};\n const truncateNumbersWithPound =\n settings?.truncateNumbersWithPound ?? false;\n\n const showEmptyStrings = settings?.showEmptyStrings ?? true;\n const showNullStrings = settings?.showNullStrings ?? true;\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 settings?.defaultDecimalFormatOptions\n );\n const isIntegerFormattingChanged = !deepEqual(\n this.integerFormatOptions,\n defaultIntegerFormatOptions\n );\n const isTruncateNumbersChanged =\n this.truncateNumbersWithPound !== truncateNumbersWithPound;\n const isShowEmptyStringsChanged =\n this.showEmptyStrings !== showEmptyStrings;\n const isShowNullStringsChanged = this.showNullStrings !== showNullStrings;\n\n if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged ||\n isTruncateNumbersChanged ||\n isShowEmptyStringsChanged ||\n isShowNullStringsChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.showEmptyStrings = showEmptyStrings;\n this.showNullStrings = showNullStrings;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n movedColumns: readonly MoveOperation[],\n floatingLeftColumnCount: number,\n floatingRightColumnCount: number,\n draggingRange?: BoundedAxisRange\n ): readonly ColumnName[] => {\n const floatingColumns: ColumnName[] = [];\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 if (draggingRange) {\n for (let i = draggingRange[0]; i <= draggingRange[1]; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n }\n\n const columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);\n\n return Object.freeze([...columnSet]);\n }\n );\n\n updateFormatter(\n updatedFormats: { customColumnFormatMap?: Map<ColumnName, FormattingRule> },\n forceUpdate = true\n ): void {\n const { customColumnFormatMap } = this.state;\n const { model } = this.props;\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 model.dh,\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound,\n this.showEmptyStrings,\n this.showNullStrings\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(): void {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState(): void {\n const { model } = this.props;\n try {\n if (isPartitionedGridModel(model) && model.isPartitionRequired) {\n this.loadPartitionsTable(model);\n } else {\n this.loadTableState();\n }\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n loadTableState(): void {\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 model.dh,\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(model: PartitionedGridModel): Promise<void> {\n try {\n const { partitionConfig } = this.state;\n if (!partitionConfig) {\n this.startLoading('Loading partitions...', {\n loadingCancelShown: false,\n resetRanges: true,\n });\n this.initializePartitionConfig(model);\n }\n this.setState({ isSelectingPartition: true }, this.loadTableState);\n } catch (error) {\n if (!PromiseUtils.isCanceled(error)) {\n this.handleTableLoadError(error);\n }\n }\n }\n\n /**\n * Initialize the partition config to the default partition.\n */\n async initializePartitionConfig(model: PartitionedGridModel): Promise<void> {\n const keyTable = await this.pending.add(\n model.partitionKeysTable(),\n resolved => resolved.close()\n );\n const { dh } = model;\n\n const sorts = keyTable.columns.map(column => column.sort().desc());\n keyTable.applySort(sorts);\n keyTable.setViewport(0, 0);\n\n // We want to wait for the first UPDATED event instead of just getting viewport data here\n // It's possible that the key table does not have any rows of data yet, so just wait until it does have one\n keyTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n (event: CustomEvent<DhType.ViewportData>) => {\n try {\n const { detail: data } = event;\n if (data.rows.length === 0) {\n // We received an update and the table is still empty. Stop showing the loading spinner so we know\n this.stopLoading();\n return;\n }\n const row = data.rows[0];\n const values = keyTable.columns.map(column => row.get(column));\n const newPartition: PartitionConfig = {\n partitions: values,\n mode: model.isPartitionAwareSourceTable ? 'partition' : 'keys',\n };\n keyTable.close();\n this.setState({\n loadingSpinnerShown: false,\n partitionConfig: newPartition,\n });\n } catch (e) {\n keyTable.close();\n log.error('Error getting initial partition config', e);\n }\n }\n );\n }\n\n /**\n * Selects a partition key from the table based on the provided row index.\n *\n * @param rowIndex The index of the row from which the partition will be selected.\n * @returns A promise that resolves when the partition key has been successfully selected.\n */\n selectPartitionKeyFromTable(rowIndex: GridRangeIndex): void {\n const { model } = this.props;\n assertNotNull(rowIndex);\n if (isPartitionedGridModel(model)) {\n const data = this.getRowDataMap(rowIndex);\n const partitionColumnSet = new Set(\n model.partitionColumns.map(column => column.name)\n );\n const values = Object.entries(data)\n .filter(([key, _]) => partitionColumnSet.has(key))\n .map(([key, columnData]) => columnData.value);\n const newPartition: PartitionConfig = {\n partitions: values,\n mode: 'partition',\n };\n this.setState({\n isSelectingPartition: true,\n partitionConfig: newPartition,\n });\n }\n }\n\n copyCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): void {\n const { canCopy } = this.props;\n if (canCopy) {\n const value = String(\n this.getValueForCell(columnIndex, rowIndex, rawValue)\n );\n copyToClipboard(value).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n copyColumnHeader(columnIndex: GridRangeIndex, columnDepth = 0): void {\n if (columnIndex === null) {\n return;\n }\n const { canCopy } = this.props;\n const { movedColumns } = this.state;\n\n if (canCopy) {\n const copyOperation = {\n columnIndex,\n columnDepth,\n movedColumns,\n };\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyColumnHeader for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(\n ranges: readonly GridRange[],\n includeHeaders = false,\n formatValues = true,\n error?: string\n ): void {\n const { model, canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\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(\n loadingText: string,\n {\n resetRanges = false,\n loadingCancelShown = true,\n loadingBlocksGrid = true,\n } = {}\n ): void {\n this.setState({ loadingText, loadingCancelShown, loadingBlocksGrid });\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 assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\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(): void {\n this.showViewportLoading.cancel();\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n loadingCancelShown: false,\n });\n\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\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(): void {\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\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: undefined,\n selectDistinctColumns: [],\n sorts: [],\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback(): boolean {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n\n startListening(model: IrisGridModel): void {\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 model.addEventListener(\n IrisGridModel.EVENT.VIEWPORT_UPDATED,\n this.handleViewportUpdated\n );\n }\n\n stopListening(model: IrisGridModel): void {\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 model.removeEventListener(\n IrisGridModel.EVENT.VIEWPORT_UPDATED,\n this.handleViewportUpdated\n );\n }\n\n focus(): void {\n this.grid?.focus();\n }\n\n focusFilterBar(column: VisibleIndex): void {\n const { movedColumns } = this.state;\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = GridUtils.getModelIndex(column, movedColumns);\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 assertNotNull(metrics);\n const { 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 assertNotNull(metricState);\n const newLeft = metricCalculator.getLastLeft(\n metricState,\n column,\n metricCalculator.getVisibleWidth(metricState)\n );\n this.grid?.setViewState(\n { left: Math.min(newLeft, lastLeft), leftOffset: 0 },\n true\n );\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex: VisibleIndex): void {\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: ColumnName): void {\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 assertNotNull(modelIndex);\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: ColumnName): void {\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 assertNotNull(modelIndex);\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(\n modelIndexes: readonly ModelIndex[],\n isVisible: boolean\n ): void {\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n const defaultWidth =\n metricCalculator.initialColumnWidths.get(modelIndex);\n const calculatedWidth = getOrThrow(\n metrics.calculatedColumnWidths,\n modelIndex\n );\n\n if (defaultWidth !== calculatedWidth) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleColumnVisibilityReset(): void {\n const { metricCalculator, metrics } = this.state;\n const { model } = this.props;\n assertNotNull(metrics);\n for (let i = 0; i < metrics.columnCount; i += 1) {\n metricCalculator.resetColumnWidth(i);\n }\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: model.layoutHints?.frozenColumns ?? [],\n });\n }\n\n handleCrossColumnSearch(\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean\n ): void {\n const { model } = this.props;\n this.startLoading('Searching...');\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 = debounce(\n (\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n columns: readonly DhType.Column[],\n invertSearchColumns: boolean\n ): void => {\n const { model } = this.props;\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n },\n SET_FILTER_DEBOUNCE\n );\n\n handleAnimationLoop(): void {\n this.grid?.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart(): void {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd(): void {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionChange(partitionConfig: PartitionConfig): void {\n this.startLoading('Partitioning...');\n const { partitionConfig: prevConfig } = this.state;\n if (prevConfig !== partitionConfig) {\n this.setState({ partitionConfig });\n }\n }\n\n handleTableLoadError(error: unknown): void {\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 handleViewportUpdated(): void {\n const { model } = this.props;\n const { loadingText, loadingSpinnerShown } = this.state;\n const loadingMessage = 'Waiting for viewport...';\n\n // pending and no timer already exists\n if (model.isViewportPending && !loadingSpinnerShown) {\n this.showViewportLoading();\n } else if (loadingText === loadingMessage && !model.isViewportPending) {\n // extra conditions because timeout might get cleared by update\n this.stopLoading();\n }\n }\n\n showViewportLoading = throttle(\n (): void => {\n const { model } = this.props;\n const { loadingSpinnerShown } = this.state;\n if (model.isViewportPending && !loadingSpinnerShown) {\n // We only want to show the viewport loading if the viewport is still loading\n // and we're not already showing a loader for something else\n this.startLoading('Waiting for viewport...', {\n loadingCancelShown: false,\n loadingBlocksGrid: false,\n });\n }\n },\n VIEWPORT_LOADING_DELAY,\n { leading: false, trailing: true }\n );\n\n showAllColumns(): void {\n const { metricCalculator } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\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: VisibleIndex, addToExisting: boolean): void {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n if (model.isColumnSortable(columnIndex)) {\n const { sorts: currentSorts } = this.state;\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.columns,\n modelColumn,\n addToExisting\n );\n\n this.updateSorts(sorts);\n } else {\n log.debug('Column type was not sortable', model.columns[columnIndex]);\n }\n }\n\n updateSorts(sorts: readonly DhType.Sort[]): void {\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n sortColumn(\n modelColumn: ModelIndex,\n direction: SortDirection = TableUtils.sortDirection.none,\n isAbs = false,\n addToExisting = false\n ): void {\n assertNotNull(modelColumn);\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.sort,\n model.columns,\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: ReverseType): void {\n this.startLoading('Reversing...');\n this.setState({ reverseType });\n this.grid?.forceUpdate();\n }\n\n isReversible(): boolean {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn): void {\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(): boolean {\n const { model, canToggleSearch } = this.props;\n const { dh } = model;\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(): void {\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 toggleGotoRow(row = '', value = '', columnName = ''): void {\n const { isGotoShown } = this.state;\n if (row || value) {\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n this.focusRowInGrid(row);\n this.gotoRowRef.current?.focus();\n return;\n }\n\n const cursorRow = this.grid?.state.cursorRow;\n const cursorColumn = this.grid?.state.cursorColumn;\n\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n return;\n }\n // if a row is selected\n const { model } = this.props;\n const { name, type } = model.columns[cursorColumn];\n\n const cellValue = model.valueForCell(cursorColumn, cursorRow);\n const text = IrisGridUtils.convertValueToText(cellValue, type);\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: `${cursorRow + 1}`,\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n }\n\n async commitPending(): Promise<void> {\n const { model } = this.props;\n if (!isEditableGridModel(model) || !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 const containsGridCellInputField =\n document?.activeElement?.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n if (\n document.activeElement != null &&\n document.activeElement.classList.contains('error')\n ) {\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(): Promise<void> {\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 column The column in this table to link\n */\n selectColumn(column: DhType.Column): void {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Get the row data map for a given row and notifies the listener\n */\n selectData(columnIndex: ModelIndex, rowIndex: ModelIndex): void {\n const dataMap = this.getRowDataMap(rowIndex);\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n /**\n * Get the data map for the given row\n * @param rowIndex Row to get the data map for\n * @returns Data map for the row\n */\n getRowDataMap(rowIndex: ModelIndex): RowDataMap {\n const { model } = this.props;\n const { columns, groupedColumns } = model;\n const dataMap: RowDataMap = {};\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 visibleIndex = this.getVisibleColumn(i);\n const isExpandable =\n isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n const isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex,\n };\n }\n return dataMap;\n }\n\n handleAdvancedFilterChange(\n column: DhType.Column,\n filter: DhType.FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n const { model } = this.props;\n const index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n\n handleAdvancedFilterSortChange(\n column: DhType.Column,\n direction: SortDirection,\n addToExisting = false\n ): void {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const columnName = model.columns[columnIndex].name;\n const oldSort = TableUtils.getSortForColumn(model.sort, columnName);\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 columnName,\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(): void {\n this.grid?.focus();\n }\n\n handleAdvancedMenuOpened(column: GridRangeIndex): void {\n this.setState({ shownAdvancedFilter: column });\n }\n\n handleGotoRowOpened(): void {\n this.setState({ isGotoShown: true, gotoValueManuallyChanged: false });\n }\n\n handleGotoRowClosed(): void {\n this.setState({ isGotoShown: false, gotoValueManuallyChanged: false });\n }\n\n handleAdvancedMenuClosed(columnIndex: number): void {\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(): void {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange(): void {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings: ChartBuilderSettings): void {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model);\n }\n\n handleGridError(error?: Error): void {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value: string): void {\n this.startLoading('Filtering...', { resetRanges: true });\n\n this.setState(({ focusedFilterBarColumn, quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n return { quickFilters: newQuickFilters };\n });\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true): void {\n if (setGridFocus) {\n this.grid?.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward: boolean): void {\n const { focusedFilterBarColumn } = this.state;\n assertNotNull(focusedFilterBarColumn);\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(\n modelIndex: ModelIndex,\n selectedFormat: TableColumnFormat | null\n ): void {\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 != null) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n assertNotNull(normalizedType);\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(e: React.MouseEvent<HTMLButtonElement>): void {\n e.stopPropagation();\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose(): void {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack(): void {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option: OptionItem): void {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event: Event): void {\n const { detail: error } = event as CustomEvent;\n log.error('request failed:', error);\n this.stopLoading();\n const { partitionConfig } = this.state;\n if (isMissingPartitionError(error) && partitionConfig != null) {\n // We'll try loading the initial partition again\n this.startLoading('Reloading partition...', { resetRanges: true });\n this.setState({ partitionConfig: undefined }, () => {\n this.initState();\n });\n } else if (this.canRollback()) {\n this.startLoading('Rolling back changes...', { resetRanges: 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: ${error}`));\n }\n }\n\n handleUpdate(): void {\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\n const config = {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n };\n\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid?.forceUpdate();\n this.stopLoading();\n }\n\n handleViewChanged(metrics?: GridMetrics): void {\n const { model } = this.props;\n const { selectionEndRow = 0 } = this.grid?.state ?? {};\n let pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n const { bottomViewport } = metrics;\n\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?: readonly GridRange[]): void {\n assertNotNull(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 if (this.grid?.state.cursorRow != null) {\n this.setState({ gotoRow: `${this.grid.state.cursorRow + 1}` });\n }\n onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(\n movedColumns: readonly MoveOperation[],\n onChangeApplied?: () => void\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleHeaderGroupsChanged(\n columnHeaderGroups: readonly (DhType.ColumnGroup | ColumnHeaderGroup)[]\n ): void {\n const { model } = this.props;\n this.setState(\n {\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(\n model,\n columnHeaderGroups\n ).groups,\n },\n () => this.grid?.forceUpdate()\n );\n }\n\n handleTooltipRef(tooltip: Tooltip): void {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleConditionalFormatsChange(\n conditionalFormats: readonly SidebarFormattingRule[]\n ): void {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({ conditionalFormats });\n }\n\n handleConditionalFormatCreate(): void {\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: number): void {\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 = debounce(\n (conditionalFormatPreview?: SidebarFormattingRule): void => {\n this.setState({ conditionalFormatPreview });\n },\n SET_CONDITIONAL_FORMAT_DEBOUNCE\n );\n\n handleConditionalFormatEditorSave(config: SidebarFormattingRule): void {\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(): void {\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: readonly string[]): void {\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 =\n IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts.length) {\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 });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n\n handleCustomColumnsChanged(): void {\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.loadTableState();\n }\n }\n\n handlePendingCommitClicked(): Promise<void> {\n return this.commitPending();\n }\n\n handlePendingDiscardClicked(): Promise<void> {\n return this.discardPending();\n }\n\n handlePendingDataUpdated(): void {\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 The new aggregation settings\n */\n handleAggregationsChange(aggregationSettings: AggregationSettings): void {\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 The new aggregation\n */\n handleAggregationChange(aggregation: Aggregation): void {\n log.debug('handleAggregationChange', aggregation);\n\n this.startLoading(`Aggregating ${aggregation.operation}...`);\n\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 The aggregation to edit\n */\n handleAggregationEdit(aggregation: Aggregation): void {\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: UIRollupConfig): void {\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 frozenColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n selectDistinctColumns: [],\n });\n }\n\n handleSelectDistinctChanged(columnNames: readonly ColumnName[]): void {\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(): void {\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(\n fileName: string,\n frozenTable: DhType.Table,\n tableSubscription: DhType.TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info(\n 'start table downloading',\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\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 /**\n * Aggregation editing has completed. Need to filter out any aggregations that have no columns selected\n */\n removeEmptyAggregations(): void {\n log.debug('removeEmptyAggregations');\n\n this.setState(({ aggregationSettings }) => {\n const { aggregations } = aggregationSettings;\n const newAggregations = aggregations.filter(\n a => a.selected.length > 0 || a.invert\n );\n if (newAggregations.length !== aggregations.length) {\n return {\n selectedAggregation: null,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: newAggregations,\n },\n };\n }\n return { selectedAggregation: null, aggregationSettings };\n });\n }\n\n async seekRow(inputString: string, isBackwards = false): Promise<void> {\n const {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter,\n } = this.state;\n const { model } = this.props;\n const { dh } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n\n if (inputString === '') {\n return;\n }\n const selectedColumn = IrisGridUtils.getColumnByName(\n model.columns,\n selectedColumnName\n );\n\n if (selectedColumn === undefined) {\n return;\n }\n\n let searchFromRow = this.grid?.state.cursorRow;\n\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n\n const isContains =\n gotoValueSelectedFilter === FilterType.contains ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n const isIgnoreCase =\n gotoValueSelectedFilter === FilterType.eqIgnoreCase ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n\n try {\n const { formatter } = model;\n const columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n\n let rowIndex;\n\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n isIgnoreCase,\n isContains,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DATETIME: {\n const [startDate] = DateUtils.parseDateRange(\n dh,\n inputString,\n formatter.timeZone\n );\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.DATETIME,\n startDate,\n undefined,\n undefined,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT: {\n if (\n !TableUtils.isBigDecimalType(selectedColumn.type) &&\n !TableUtils.isBigIntegerType(selectedColumn.type)\n ) {\n let inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.NUMBER,\n inputValue,\n undefined,\n undefined,\n isBackwards ?? false\n );\n } else {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n break;\n }\n default: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n this.tableUtils.makeValue(\n selectedColumn.type,\n inputString,\n formatter.timeZone\n ),\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n }\n\n this.grid?.setFocusRow(rowIndex);\n this.setState({ gotoValueError: '' });\n } catch (e: unknown) {\n this.setState({ gotoValueError: 'invalid input' });\n }\n }\n\n handleCancelDownloadTable(): void {\n this.tableSaver?.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate = throttle(\n (\n tableDownloadProgress: number,\n tableDownloadEstimatedTime: number | null\n ) => {\n const { tableDownloadStatus } = this.state;\n if (\n tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n ) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n },\n UPDATE_DOWNLOAD_THROTTLE\n );\n\n handleDownloadCompleted(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled(): void {\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 ranges The ranges to delete\n */\n deleteRanges(ranges: readonly GridRange[]): void {\n const { model } = this.props;\n if (!isDeletableGridModel(model) || !model.isDeletable) {\n throw new Error('Model does not support deleting ranges');\n }\n\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(): void {\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: null });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true): void {\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(): void {\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(): void {\n this.setState({\n showOverflowModal: false,\n });\n }\n\n getColumnBoundingRect(): DOMRect {\n const { metrics, shownColumnTooltip } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n const gridRect = this.gridWrapper?.getBoundingClientRect();\n const popperMargin = 20;\n assertNotNull(gridRect);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth,\n } = metrics;\n const columnX = allColumnXs.get(shownColumnTooltip);\n const columnWidth = allColumnWidths.get(shownColumnTooltip);\n\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n\n const left =\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n },\n };\n }\n\n getOverflowButtonTooltip = memoize(\n (overflowButtonTooltipProps: CSSProperties): ReactNode => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...overflowButtonTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: 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\n getExpandCellTooltip = memoize(\n (expandCellTooltipProps: CSSProperties): ReactNode => {\n if (expandCellTooltipProps == null) {\n return null;\n }\n\n const { expandTooltipDisplayValue } = this.state;\n const { model } = this.props;\n const isExpandAllAvailable =\n isExpandableGridModel(model) && model.isExpandAllAvailable;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...expandCellTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom-start',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n <div style={{ textAlign: 'left' }}>\n Click to {expandTooltipDisplayValue} row\n {isExpandAllAvailable && (\n <>\n <br />\n {ContextActionUtils.isMacPlatform() ? '⌘' : 'Ctrl+'}Click to\n expand row and all children\n </>\n )}\n </div>\n </Tooltip>\n </div>\n );\n }\n );\n\n getLinkHoverTooltip = memoize(\n (linkHoverTooltipProps: CSSProperties): ReactNode => {\n if (linkHoverTooltipProps == null) {\n return null;\n }\n\n const { linkHoverDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...linkHoverTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip options={popperOptions} ref={this.handleTooltipRef}>\n <div className=\"link-hover-tooltip\">\n {linkHoverDisplayValue} - Click once to follow.\n <br />\n Click and hold to select this cell.\n </div>\n </Tooltip>\n </div>\n );\n }\n );\n\n handleGotoRowSelectedRowNumberSubmit(): void {\n const { gotoRow: rowNumber } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n\n focusRowInGrid(rowNumber: string): void {\n const { model } = this.props;\n const { rowCount } = model;\n this.setState({ gotoRow: rowNumber });\n if (rowNumber === '') {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n return;\n }\n const rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({ gotoRowError: 'Invalid row index' });\n } else if (rowInt === 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(0);\n } else if (rowInt < 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(rowInt + rowCount);\n } else {\n this.grid?.setFocusRow(rowInt - 1);\n this.setState({ gotoRowError: '', gotoValueError: '' });\n }\n }\n\n handleGotoRowSelectedRowNumberChanged(\n event: ChangeEvent<HTMLInputElement>\n ): void {\n const rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n\n getColumnTooltip(\n visibleIndex: VisibleIndex,\n metrics: GridMetrics,\n model: IrisGridModel\n ): ReactNode {\n const {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width,\n } = metrics;\n const columnX = allColumnXs.get(visibleIndex);\n const columnWidth = allColumnWidths.get(visibleIndex);\n\n if (columnX == null || columnWidth == null) {\n return null;\n }\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: CSSProperties = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\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: ReferenceObject = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect,\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n\n const column = model.columns[modelColumn];\n if (column == null) return null;\n\n return (\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 this.tooltip?.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n\n handleGotoValueSelectedColumnNameChanged(columnName: ColumnName): void {\n const { model } = this.props;\n const cursorRow = this.grid?.state.cursorRow;\n const {\n gotoValueSelectedColumnName: prevColumnName,\n gotoValueManuallyChanged,\n } = this.state;\n\n if (cursorRow != null) {\n const index = model.getColumnIndexByName(columnName);\n const column = IrisGridUtils.getColumnByName(model.columns, columnName);\n const prevColumn = IrisGridUtils.getColumnByName(\n model.columns,\n prevColumnName\n );\n if (index == null || column == null) {\n return;\n }\n const value = model.valueForCell(index, cursorRow);\n const text = IrisGridUtils.convertValueToText(value, column.type);\n\n // do NOT update value if user manually changed value AND column type remains the same\n if (gotoValueManuallyChanged && column.type === prevColumn?.type) {\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n } else {\n // do update, and set goToValueManuallyChanged to false because value was automatically changed\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n gotoValueManuallyChanged: false,\n });\n }\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n }\n\n handleGotoValueSelectedFilterChanged(value: FilterTypeValue): void {\n this.setState({ gotoValueSelectedFilter: value, gotoValueError: '' });\n }\n\n handleGotoValueChanged = (input: string): void => {\n this.setState({ gotoValue: input, gotoValueManuallyChanged: true });\n this.debouncedSeekRow(input);\n };\n\n debouncedSeekRow = debounce((input: string): void => {\n this.seekRow(input);\n }, SEEK_ROW_DEBOUNCE);\n\n handleGotoValueSubmitted(isBackwards?: boolean): void {\n const { gotoValue } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n\n render(): ReactElement | null {\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 loadingCancelShown,\n loadingBlocksGrid,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\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 columnHeaderGroups,\n showOverflowModal,\n overflowText,\n overflowButtonTooltipProps,\n expandCellTooltipProps,\n linkHoverTooltipProps,\n isGotoShown,\n gotoRow,\n gotoRowError,\n gotoValueError,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueSelectedFilter,\n partitionConfig,\n } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n const { columnHeaderHeight: singleColumnHeaderHeight } = theme;\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n searchFilter\n );\n\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const stateOverride = this.getCachedStateOverride(\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown\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, allColumnXs, allColumnWidths, width } = metrics;\n const columnX = allColumnXs.get(focusedFilterBarColumn);\n const columnWidth = allColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - (theme.filterBarHeight ?? 0);\n const fieldWidth = columnWidth + 1; // cover right border\n const fieldHeight = (theme.filterBarHeight ?? 0) - 1; // remove bottom border\n const style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x), // Don't cause overflow\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\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\">\n <div\n className={classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown,\n })}\n >\n {loadingText}\n </div>\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames('iris-grid-btn-cancel', {\n show: loadingCancelShown,\n })}\n >\n <FontAwesomeIcon icon={vsClose} transform=\"down-1\" />\n Cancel\n </button>\n </div>\n );\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div\n className=\"iris-grid-loading\"\n style={loadingBlocksGrid ? { top: gridY } : {}}\n >\n {loadingStatus}\n </div>\n );\n }\n\n let columnTooltip: React.ReactNode = null;\n if (shownColumnTooltip != null && metrics) {\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\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 const filterBar = [];\n if (metrics && isFilterBarShown) {\n const { gridX, gridY, visibleColumns, allColumnXs, allColumnWidths } =\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 = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\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 ?? 0) + 2; // 2 acts as top margin for the button\n const style: CSSProperties = {\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 kind=\"ghost\"\n className={classNames(\n '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\n icon={vsFilter}\n className=\"filter-light\"\n />\n </div>\n </Button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n allColumnXs,\n allColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.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: CSSProperties = 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 if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\n `Column does not exist at index ${modelColumn} for column array of length ${model.columns.length}`\n );\n // eslint-disable-next-line no-continue\n continue;\n }\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, column.name);\n\n const sortDirection = sort ? sort.direction : null;\n if (!isSortDirection(sortDirection)) {\n throw new Error(`Invalid sort direction: ${sortDirection}`);\n }\n\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 options={{\n positionFixed: true,\n }}\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\n const optionItems = this.getCachedOptionItems(\n onCreateChart !== undefined && model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isFormatColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable || isRollup,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable(),\n isGotoShown,\n advancedSettings.size > 0\n );\n\n const hiddenColumns = this.getCachedHiddenColumns(\n metricCalculator,\n userColumnWidths\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 hiddenColumns={hiddenColumns}\n columnHeaderGroups={columnHeaderGroups}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onReset={this.handleColumnVisibilityReset}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n onColumnHeaderGroupChanged={this.handleHeaderGroupsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n rules={conditionalFormats}\n onChange={this.handleConditionalFormatsChange}\n onCreate={this.handleConditionalFormatCreate}\n onSelect={this.handleConditionalFormatEdit}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return (\n <ConditionalFormatEditor\n dh={model.dh}\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 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 selectedAggregation && (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n )\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n userColumnWidths={userColumnWidths}\n movedColumns={movedColumns}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={\n tableDownloadEstimatedTime ?? undefined\n }\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 return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children != null && <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 {isPartitionedGridModel(model) && model.isPartitionRequired && (\n <IrisGridPartitionSelector\n model={model}\n partitionConfig={partitionConfig}\n onChange={this.handlePartitionChange}\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 <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!isEditableGridModel(model) || !model.isEditable}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={this.getKeyHandlers()}\n mouseHandlers={this.getMouseHandlers()}\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 this.grid?.state.draggingColumn?.range\n )}\n formatColumns={this.getCachedPreviewFormatColumns(\n model.dh,\n model.columns,\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 ?? undefined\n : undefined\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 columnHeaderGroups={columnHeaderGroups}\n partitionConfig={partitionConfig}\n />\n )}\n {!isMenuShown && (\n <div\n className=\"grid-settings-button\"\n style={{\n height: `${singleColumnHeaderHeight}px`,\n width: `${singleColumnHeaderHeight}px`,\n }}\n >\n <Button\n kind=\"ghost\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\n onClick={this.handleMenu}\n icon={<FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />}\n tooltip=\"Table Options\"\n />\n </div>\n )}\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n {overflowButtonTooltipProps &&\n this.getOverflowButtonTooltip(overflowButtonTooltipProps)}\n {expandCellTooltipProps &&\n this.getExpandCellTooltip(expandCellTooltipProps)}\n {linkHoverTooltipProps &&\n this.getLinkHoverTooltip(linkHoverTooltipProps)}\n </Grid>\n <GotoRow\n ref={this.gotoRowRef}\n model={model}\n isShown={isGotoShown}\n gotoRow={gotoRow}\n gotoRowError={gotoRowError}\n gotoValueError={gotoValueError}\n onGotoRowSubmit={this.handleGotoRowSelectedRowNumberSubmit}\n onGotoRowNumberChanged={this.handleGotoRowSelectedRowNumberChanged}\n onClose={this.handleGotoRowClosed}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={() => {\n this.handleAnimationStart();\n this.focus();\n }}\n onExited={this.handleAnimationEnd}\n gotoValueSelectedColumnName={gotoValueSelectedColumnName}\n gotoValue={gotoValue}\n gotoValueFilter={gotoValueSelectedFilter}\n onGotoValueSelectedColumnNameChanged={\n this.handleGotoValueSelectedColumnNameChanged\n }\n onGotoValueSelectedFilterChanged={\n this.handleGotoValueSelectedFilterChanged\n }\n onGotoValueChanged={this.handleGotoValueChanged}\n onGotoValueSubmit={this.handleGotoValueSubmitted}\n />\n\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 ?? undefined}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n dh={model.dh}\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 <SlideTransition\n in={isMenuShown}\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 </SlideTransition>\n <ContextActions actions={this.contextActions} />\n </div>\n );\n }\n}\n\nexport default IrisGrid;\n"],"mappings":"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"}
|