@deephaven/iris-grid 0.27.0 → 0.27.1-beta.3
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/GotoRow.css +21 -3
- package/dist/GotoRow.css.map +1 -1
- package/dist/GotoRow.d.ts +11 -2
- package/dist/GotoRow.d.ts.map +1 -1
- package/dist/GotoRow.js +186 -18
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.d.ts +12 -2
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +169 -30
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridModel.d.ts +3 -1
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +4 -0
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +3 -1
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +11 -0
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +3 -1
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +9 -0
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +2 -1
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +3 -0
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.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","Grid","GridRange","GridUtils","isEditableGridModel","isExpandableGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsClose","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","dh","DateUtils","Formatter","FormatterUtils","TableUtils","assertNotNull","copyToClipboard","Pending","PromiseUtils","ValidationError","throttle","debounce","clamp","getFormatColumns","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridSortMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","IrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","IrisGridUtils","CrossColumnSearch","IrisGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","log","module","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","UNFORMATTED_DATE_PATTERN","isEmptyConfig","advancedFilters","aggregationSettings","customColumns","quickFilters","reverseType","rollupConfig","searchFilter","selectDistinctColumns","sorts","size","length","REVERSE_TYPE","NONE","IrisGrid","makeQuickFilter","column","text","timeZone","err","error","constructor","props","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","handleAdvancedFilterChange","handleAdvancedFilterSortChange","handleAdvancedFilterDone","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","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","hiddenColumns","normalizer","join","columns","aggregationMap","forEach","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","name","newOperations","map","o","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","getModelRollupConfig","getOperationMap","operationOrder","getOperationOrder","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","partitionFilters","getFiltersFromFilterMap","theme","isEditable","floatingRowCount","autoSelectRow","rowFooterWidth","alwaysFetchColumns","movedColumns","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","i","getModelIndex","columnSet","Set","searchValue","selectedSearchColumns","invertSearchColumns","createSearchFilter","setState","conditionalFormatPreview","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","state","DOWNLOAD_STATUS","DOWNLOADING","overflowButtonTooltipProps","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","Date","now","handleTooltipRef","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","handlePendingCommitClicked","handlePendingDiscardClicked","handleGotoRowSelectedRowNumberSubmit","focusRowInGrid","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadCompleted","handlePartitionAppend","handlePartitionChange","handlePartitionFetchAll","handlePartitionDone","handleColumnVisibilityChanged","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","getColumnBoundingRect","handleGotoRowSelectedRowNumberChanged","grid","gridWrapper","lastLoadedConfig","pending","globalColumnFormats","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","renderer","tableSaver","crossColumnRef","createRef","isAnimating","filterInputRef","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","toggleGotoRow","GOTO_ROW","discardAction","pendingDataMap","discardPending","catch","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","isSelectingPartition","movedColumnsProp","movedRows","movedRowsProp","partition","partitionColumn","userColumnWidths","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","keyHandlers","mouseHandlers","initialMovedColumns","initialMovedRows","metricCalculator","Map","searchColumns","focusedFilterBarColumn","metrics","partitionTable","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","loadingSpinnerShown","shownColumnTooltip","conditionalFormatEditIndex","isTableDownloading","isReady","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","overflowText","isGotoRowShown","gotoRow","gotoRowError","initialColumnHeaderGroups","componentDidMount","find","c","isPartitionColumn","isFilterRequired","isValuesTableAvailable","loadPartitionsTable","initState","startListening","componentDidUpdate","prevProps","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","startLoading","applyInputFilters","resetColumnSelection","updateFormatterSettings","updateSorts","loadingScrimStartTime","loadingScrimFinishTime","window","requestAnimationFrame","currentTime","totalTime","Math","min","debug2","sendStateChange","componentWillUnmount","cancel","updateSearchFilter","loadingTimer","clearTimeout","handleDownloadProgressUpdate","animationFrame","cancelAnimationFrame","getValueForCell","columnIndex","rowIndex","rawValue","modelColumn","getModelColumn","modelRow","getModelRow","value","valueForCell","isDateType","i18n","DateTimeFormat","format","TimeZone","getTimeZone","textForCell","modelColumns","modelRows","getTheme","getCachedTheme","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","findIndex","columnName","columnType","delete","applyQuickFilter","trim","quickFilter","set","setAdvancedFilterMap","setAdvancedFilter","options","setQuickFilter","setFilterMap","filterMap","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","filterList","getColumnIndexByName","combinedText","combineFiltersFromList","removeQuickFilter","removeColumnFilter","current","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","forceUpdate","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","updateFormatter","updatedFormats","update","mergedColumnFormats","values","initFormatter","applyInputFiltersOnInit","inputFiltersWithValues","add","valuesTable","resolved","close","sort","desc","applySort","setViewport","data","getViewportData","rows","row","updatePartition","info","handleTableLoadError","partitionFilter","eq","FilterValue","ofString","copyCell","String","e","copyRanges","ranges","includeHeaders","formatValues","getUserColumnWidths","boundedRanges","columnCount","rowCount","resetRanges","clearSelectedRanges","setViewState","top","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","stopLoading","rollback","canRollback","addEventListener","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","removeEventListener","focus","focusFilterBar","isFilterable","left","rightVisible","lastLeft","metricState","getMetricState","newLeft","getLastLeft","getVisibleWidth","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","isVisible","resetColumnWidth","updateCanvasScale","updateCanvas","onPartitionAppend","isCanceled","onError","showAllColumns","entries","columnWidth","toggleSort","addToExisting","currentSorts","toggleSortForColumn","sortColumn","direction","none","isAbs","reverse","isReversible","focusIndex","isTextType","isTableSearchAvailable","searchDisplayMode","layoutHints","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","Error","containsGridCellInputField","document","activeElement","classList","contains","newPendingSavePromise","then","selectColumn","onColumnSelected","selectData","groupedColumns","dataMap","isExpandable","isRowExpandable","isGrouped","onDataSelected","index","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","onCreateChart","warn","setGridFocus","defocusInput","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","stopPropagation","newOptions","pop","option","event","customEvent","detail","selectionEndRow","bottomViewport","bottomNonFloating","onSelectionChanged","onChangeApplied","parseColumnHeaderGroups","groups","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","aggregation","AGGREGATION_EDIT","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","cancelDownload","FINISHED","CANCELED","deleteRanges","columnAllowedCursor","cursor","topOffset","irisGridState","gridState","onStateChange","gridRect","popperMargin","columnHeaderHeight","allColumnXs","allColumnWidths","width","columnHeaderMaxDepth","columnX","bottom","right","x","y","toJSON","rowNumber","rowInt","parseInt","setFocusRow","target","getColumnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","render","children","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","getCachedFilter","stateOverride","getCachedStateOverride","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridX","gridY","filterBarHeight","fieldWidth","fieldHeight","style","minWidth","isValid","advancedFilter","isBarFiltered","active","handleContextMenu","loadingElement","loadingStatus","show","columnTooltip","filterBar","visibleColumns","isFilterSet","isFilterVisible","element","hidden","advancedFilterMenus","xColumnHeader","xFilterBar","getAdvancedMenuOpenedHandler","positionFixed","getCachedAdvancedFilterMenuActions","getCachedOptionItems","openOptionsStack","handleConditionalFormatEditorUpdate","getCachedHiddenColumns","getHiddenColumns","transitionSlowMs","stringName","displayString","getAlwaysFetchColumns","draggingColumn","range","getCachedPreviewFormatColumns","getCachedModelColumns","getModelTotalsConfig","getOverflowButtonTooltip","transitionMidMs","columnSelectionValidator","columnNotAllowedCursor","onContextMenu","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 '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} 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} 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 dh, {\n Column,\n ColumnGroup,\n CustomColumn,\n DateWrapper,\n FilterCondition,\n Sort,\n Table,\n TableViewportSubscription,\n} from '@deephaven/jsapi-shim';\nimport {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n FormattingRule,\n ReverseType,\n RowDataMap,\n SortDirection,\n DateTimeColumnFormatterOptions,\n TableColumnFormat,\n Settings,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n copyToClipboard,\n Pending,\n PromiseUtils,\n ValidationError,\n} from '@deephaven/utils';\nimport { TypeValue as FilterTypeValue } 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 ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridCellOverflowMouseHandler,\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridSortMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport IrisGridTheme, { 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} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu, {\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 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 AdvancedFilterMap,\n ColumnName,\n QuickFilterMap,\n AggregationMap,\n OperationMap,\n Action,\n OptionItem,\n UITotalsTableConfig,\n InputFilter,\n PendingDataMap,\n AdvancedFilterOptions,\n} from './CommonTypes';\nimport ColumnHeaderGroup from './ColumnHeaderGroup';\n\nconst log = Log.module('IrisGrid');\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: [],\n showOnTop: false,\n});\n\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: AdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n customColumns: ColumnName[];\n quickFilters: QuickFilterMap;\n reverseType: ReverseType;\n rollupConfig?: UIRollupConfig;\n searchFilter?: FilterCondition;\n selectDistinctColumns: ColumnName[];\n sorts: Sort[];\n}) {\n return (\n advancedFilters.size === 0 &&\n aggregationSettings.aggregations.length === 0 &&\n customColumns.length === 0 &&\n quickFilters.size === 0 &&\n reverseType === TableUtils.REVERSE_TYPE.NONE &&\n rollupConfig == null &&\n searchFilter == null &&\n selectDistinctColumns.length === 0 &&\n sorts.length === 0\n );\n}\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>;\nexport interface IrisGridProps {\n children: React.ReactNode;\n advancedFilters: AdvancedFilterMap;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n alwaysFetchColumns: ColumnName[];\n isFilterBarShown: boolean;\n applyInputFiltersOnInit: boolean;\n conditionalFormats: SidebarFormattingRule[];\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n movedColumns: MoveOperation[];\n movedRows: MoveOperation[];\n inputFilters: InputFilter[];\n customFilters: FilterCondition[];\n model: IrisGridModel;\n onCreateChart: (settings: ChartBuilderSettings, model: IrisGridModel) => void;\n onColumnSelected: (column: Column) => void;\n onError: (error: unknown) => void;\n onDataSelected: (index: ModelIndex, map: Record<ColumnName, unknown>) => void;\n onStateChange: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPartitionAppend: (partitionColumn: Column, value: string) => void;\n onAdvancedSettingsChange: AdvancedSettingsMenuCallback;\n partition: string;\n partitionColumn: Column;\n sorts: Sort[];\n reverseType: ReverseType;\n quickFilters: QuickFilterMap | null;\n customColumns: ColumnName[];\n selectDistinctColumns: ColumnName[];\n settings?: Settings;\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n onSelectionChanged: (gridRanges: 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: Column | null) => boolean;\n columnAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: string;\n name: string;\n onlyFetchVisibleColumns: boolean;\n\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns: ColumnName[];\n invertSearchColumns: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: (obj: {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow: GridRangeIndex;\n modelColumn: GridRangeIndex;\n }) => ContextAction;\n\n pendingDataMap?: PendingDataMap;\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n canCopy: boolean;\n canDownloadCsv: boolean;\n frozenColumns: ColumnName[];\n\n // Theme override for IrisGridTheme\n theme: GridThemeType;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: ColumnHeaderGroup[];\n}\n\nexport interface IrisGridState {\n isFilterBarShown: boolean;\n isSelectingPartition: boolean;\n focusedFilterBarColumn: number | null;\n metricCalculator: IrisGridMetricCalculator;\n metrics?: GridMetrics;\n keyHandlers: KeyHandler[];\n mouseHandlers: GridMouseHandler[];\n\n partition: string | null;\n partitionColumn: Column | null;\n partitionTable: Table | null;\n partitionFilters: FilterCondition[];\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: QuickFilterMap;\n advancedFilters: AdvancedFilterMap;\n shownAdvancedFilter: number | null;\n hoverAdvancedFilter: number | null;\n\n sorts: Sort[];\n reverseType: ReverseType;\n customColumns: ColumnName[];\n selectDistinctColumns: ColumnName[];\n\n // selected range in table\n selectedRanges: 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\n movedColumns: MoveOperation[];\n movedRows: MoveOperation[];\n\n shownColumnTooltip: number | null;\n\n formatter: Formatter;\n isMenuShown: boolean;\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n\n conditionalFormats: 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?: FilterCondition;\n searchValue: string;\n selectedSearchColumns: ColumnName[];\n invertSearchColumns: boolean;\n\n rollupConfig?: UIRollupConfig;\n rollupSelectedColumns: [];\n aggregationSettings: AggregationSettings;\n selectedAggregation: Aggregation | null;\n\n openOptions: OptionItem[];\n\n pendingRowCount: number;\n pendingDataMap: PendingDataMap;\n pendingDataErrors: Map<number, Error[]>;\n pendingSavePromise: Promise<void> | null;\n pendingSaveError: string | null;\n\n toastMessage: JSX.Element | null;\n frozenColumns: ColumnName[];\n showOverflowModal: boolean;\n overflowText: string;\n overflowButtonTooltipProps: CSSProperties | null;\n\n gotoRow: string;\n gotoRowError: string;\n isGotoRowShown: boolean;\n\n columnHeaderGroups: ColumnHeaderGroup[];\n}\n\nexport class IrisGrid extends Component<IrisGridProps, IrisGridState> {\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static defaultProps = {\n children: null,\n advancedFilters: new Map(),\n advancedSettings: new Map(),\n alwaysFetchColumns: [],\n conditionalFormats: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: [],\n movedRows: [],\n inputFilters: [],\n customFilters: [],\n onCreateChart: undefined,\n onColumnSelected: (): void => undefined,\n onDataSelected: (): void => undefined,\n onError: (): void => undefined,\n onStateChange: (): void => undefined,\n onPartitionAppend: (): void => undefined,\n onAdvancedSettingsChange: (): void => undefined,\n partition: null,\n partitionColumn: null,\n quickFilters: new Map(),\n selectDistinctColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: [],\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: new Map(),\n userRowHeights: new 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 name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: (): void => undefined,\n pendingDataMap: new Map(),\n getDownloadWorker: undefined,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n formatter: [],\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: IrisGridTheme,\n canToggleSearch: true,\n };\n\n static makeQuickFilter(\n column: Column,\n text: string,\n timeZone: string\n ): FilterCondition | null {\n try {\n return TableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n constructor(props: IrisGridProps) {\n super(props);\n\n this.handleAdvancedFilterChange = this.handleAdvancedFilterChange.bind(\n this\n );\n this.handleAdvancedFilterSortChange = this.handleAdvancedFilterSortChange.bind(\n this\n );\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.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 = this.handleConditionalFormatCreate.bind(\n this\n );\n this.handleConditionalFormatEdit = this.handleConditionalFormatEdit.bind(\n this\n );\n this.handleConditionalFormatsChange = this.handleConditionalFormatsChange.bind(\n this\n );\n this.handleConditionalFormatEditorSave = this.handleConditionalFormatEditorSave.bind(\n this\n );\n this.handleConditionalFormatEditorCancel = this.handleConditionalFormatEditorCancel.bind(\n this\n );\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged = this.handleCustomColumnsChanged.bind(\n this\n );\n this.handleSelectDistinctChanged = this.handleSelectDistinctChanged.bind(\n this\n );\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handlePendingCommitClicked = this.handlePendingCommitClicked.bind(\n this\n );\n this.handlePendingDiscardClicked = this.handlePendingDiscardClicked.bind(\n this\n );\n this.handleGotoRowSelectedRowNumberSubmit = this.handleGotoRowSelectedRowNumberSubmit.bind(\n this\n );\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.handlePartitionAppend = this.handlePartitionAppend.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handlePartitionFetchAll = this.handlePartitionFetchAll.bind(this);\n this.handlePartitionDone = this.handlePartitionDone.bind(this);\n this.handleColumnVisibilityChanged = this.handleColumnVisibilityChanged.bind(\n this\n );\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.bind(this);\n this.handleGotoRowSelectedRowNumberChanged = this.handleGotoRowSelectedRowNumberChanged.bind(\n this\n );\n\n this.grid = null;\n this.gridWrapper = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = [];\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.renderer = new IrisGridRenderer();\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.filterInputRef = React.createRef();\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 model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n partition,\n partitionColumn,\n rollupConfig,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups,\n } = props;\n\n const keyHandlers: KeyHandler[] = [\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n }\n const mouseHandlers = [\n new IrisGridCellOverflowMouseHandler(this),\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n ];\n\n const movedColumns =\n movedColumnsProp.length > 0\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 });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: undefined,\n keyHandlers,\n mouseHandlers,\n\n partition,\n partitionColumn,\n partitionTable: null,\n partitionFilters: [],\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: 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\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n\n conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap: 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 isGotoRowShown: false,\n gotoRow: '',\n gotoRowError: '',\n columnHeaderGroups: columnHeaderGroups ?? model.initialColumnHeaderGroups,\n };\n }\n\n componentDidMount(): void {\n const { partitionColumn, model } = this.props;\n const column =\n partitionColumn ?? model.columns.find(c => c.isPartitionColumn);\n if (\n model.isFilterRequired &&\n model.isValuesTableAvailable &&\n column != null\n ) {\n this.loadPartitionsTable(column);\n } else {\n this.initState();\n }\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps: IrisGridProps): 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...', true);\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', true);\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n 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 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\n grid: Grid | null;\n\n gridWrapper: HTMLDivElement | 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?: FormattingRule[];\n\n dateTimeFormatterOptions?: DateTimeColumnFormatterOptions;\n\n decimalFormatOptions: { defaultFormatString?: string };\n\n integerFormatOptions: { defaultFormatString?: string };\n\n truncateNumbersWithPound: 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 renderer: IrisGridRenderer;\n\n tableSaver: TableSaver | null;\n\n crossColumnRef: React.RefObject<CrossColumnSearch>;\n\n isAnimating: boolean;\n\n filterInputRef: React.RefObject<FilterInputField>;\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 getAdvancedMenuOpenedHandler = memoize(\n (column: ModelIndex) => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model: IrisGridModel,\n column: 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 />\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 ) => {\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: 'Hide, Group, and Order 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 optionItems;\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(\n (hiddenColumns: ModelIndex[]) => hiddenColumns,\n {\n max: 1,\n normalizer: ([hiddenColumns]) => hiddenColumns.join(),\n }\n );\n\n getAggregationMap = memoize(\n (columns: Column[], aggregations: Aggregation[]): AggregationMap => {\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 (columns: Column[], aggregations: Aggregation[]): OperationMap => {\n const operationMap: Record<string, AggregationOperation[]> = {};\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] = newOperations;\n });\n });\n return operationMap;\n }\n );\n\n getOperationOrder = memoize(\n (aggregations: 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 (columns: Column[], rules: SidebarFormattingRule[]) =>\n getFormatColumns(columns, rules)\n );\n\n // customColumns arg is needed to invalidate the cache\n // eslint-disable-next-line no-unused-vars\n getCachedModelColumns = memoize(\n (model: IrisGridModel, customColumns: ColumnName[]) => model.columns\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 columns: Column[],\n rulesParam: SidebarFormattingRule[],\n preview?: SidebarFormattingRule,\n editIndex?: number\n ): 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(columns, rules);\n }\n\n return this.getCachedFormatColumns(columns, rulesParam);\n }\n );\n\n getModelRollupConfig = memoize(\n (\n originalColumns: 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: Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): UITotalsTableConfig | null => {\n const { aggregations, showOnTop } = aggregationSettings;\n // If we've got rollups, then aggregations are applied as part of that...\n if (\n (config?.columns?.length ?? 0) > 0 ||\n (aggregations?.length ?? 0) === 0\n ) {\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return { operationMap, operationOrder, showOnTop };\n }\n );\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: QuickFilterMap,\n advancedFilters: AdvancedFilterMap,\n sorts: 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: FilterCondition[],\n quickFilters: QuickFilterMap,\n advancedFilters: AdvancedFilterMap,\n partitionFilters: FilterCondition[],\n searchFilter: FilterCondition | undefined\n ) => [\n ...(customFilters ?? []),\n ...(partitionFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter !== undefined ? [searchFilter] : []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n theme: GridThemeType,\n isEditable: boolean,\n floatingRowCount: number\n ): Partial<IrisGridThemeType> => ({\n ...IrisGridTheme,\n ...theme,\n autoSelectRow: !isEditable,\n // We only show the row footers when we have floating rows for aggregations\n rowFooterWidth: floatingRowCount > 0 ? theme.rowFooterWidth : 0,\n }),\n { max: 1 }\n );\n\n getValueForCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): string | unknown {\n const { model } = this.props;\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 | 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(): Partial<IrisGridThemeType> {\n const { model, theme } = this.props;\n return this.getCachedTheme(\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 /**\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: IrisGrid.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilterMap(advancedFilters: AdvancedFilterMap): void {\n this.setState({ advancedFilters });\n }\n\n setAdvancedFilter(\n modelIndex: ModelIndex,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param 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: FilterCondition | null,\n text: string\n ): void {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n return { quickFilters: newQuickFilters };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param 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 IrisGrid.makeQuickFilter(column, combinedText, formatter.timeZone),\n `${combinedText}`\n );\n }\n });\n }\n\n removeColumnFilter(modelColumn: ModelIndex): void {\n this.startLoading('Filtering...', true);\n\n this.setState(\n ({ advancedFilters, quickFilters }: Partial<IrisGridState>) => {\n const newAdvancedFilters = advancedFilters\n ? new Map(advancedFilters)\n : new Map();\n const newQuickFilters = quickFilters\n ? new Map(quickFilters)\n : new Map();\n newQuickFilters.delete(modelColumn);\n newAdvancedFilters.delete(modelColumn);\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n }\n );\n }\n\n removeQuickFilter(modelColumn: ModelIndex): void {\n this.startLoading('Clearing Filter...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n\n return { quickFilters: newQuickFilters };\n });\n }\n\n clearAllFilters(): 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...', 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 log.debug('Rebuilding filters');\n\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns, formatter } = model;\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = TableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: IrisGrid.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n\n this.startLoading('Rebuilding filters...', true);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n\n setFilters({\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 = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n\n const defaultDecimalFormatOptions =\n settings?.defaultDecimalFormatOptions ?? {};\n const defaultIntegerFormatOptions =\n settings?.defaultIntegerFormatOptions ?? {};\n const truncateNumbersWithPound =\n settings?.truncateNumbersWithPound ?? false;\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 if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged ||\n isTruncateNumbersChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns: ColumnName[],\n columns: Column[],\n movedColumns: MoveOperation[],\n floatingLeftColumnCount: number,\n floatingRightColumnCount: number,\n draggingRange?: BoundedAxisRange\n ) => {\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 [...columnSet];\n }\n );\n\n updateFormatter(\n updatedFormats: { customColumnFormatMap?: Map<ColumnName, FormattingRule> },\n forceUpdate = true\n ): void {\n const { customColumnFormatMap } = this.state;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...(this.globalColumnFormats ?? []),\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound\n );\n\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n\n this.setState({ ...update, formatter }, () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n\n initFormatter(): void {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState(): 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 searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverseType,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(partitionColumn: Column): Promise<void> {\n const { model } = this.props;\n this.setState({ isSelectingPartition: true });\n\n try {\n const partitionTable = await this.pending.add(\n model.valuesTable(partitionColumn),\n resolved => resolved.close()\n );\n\n const column = partitionTable.columns[0];\n const sort = column.sort().desc();\n partitionTable.applySort([sort]);\n partitionTable.setViewport(0, 0, [column]);\n\n const data = await this.pending.add(partitionTable.getViewportData());\n if (data.rows.length > 0) {\n const row = data.rows[0];\n const value = row.get(column);\n\n this.updatePartition(value, partitionColumn);\n\n this.setState({ isSelectingPartition: true });\n } else {\n log.info('Table does not have any data, just fetching all');\n this.setState({ isSelectingPartition: false });\n this.handlePartitionFetchAll();\n }\n this.setState({ partitionTable, partitionColumn }, () => {\n this.initState();\n });\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n updatePartition(partition: string, partitionColumn: Column): void {\n const partitionFilter = partitionColumn\n .filter()\n .eq(dh.FilterValue.ofString(partition));\n const partitionFilters = [partitionFilter];\n this.setState({\n partition,\n partitionFilters,\n });\n }\n\n copyCell(\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 /**\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: 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(loadingText: string, resetRanges = false): void {\n this.setState({ loadingText });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n 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.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: 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 }\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 }\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: ModelIndex[],\n isVisible: boolean\n ): void {\n const { metricCalculator } = this.state;\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.resetColumnWidth(modelIndex);\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleCrossColumnSearch(\n searchValue: string,\n selectedSearchColumns: ColumnName[],\n invertSearchColumns: boolean\n ): void {\n const { model } = this.props;\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter = debounce(\n (\n searchValue: string,\n selectedSearchColumns: ColumnName[],\n columns: Column[],\n invertSearchColumns: boolean\n ): void => {\n const searchFilter = CrossColumnSearch.createSearchFilter(\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?.updateCanvasScale();\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 handlePartitionAppend(value: string): void {\n const { onPartitionAppend } = this.props;\n const { partitionColumn } = this.state;\n if (!partitionColumn) {\n return;\n }\n onPartitionAppend(partitionColumn, value);\n }\n\n handlePartitionChange(partition: string): void {\n const { partitionColumn } = this.state;\n if (!partitionColumn) {\n return;\n }\n this.updatePartition(partition, partitionColumn);\n }\n\n handlePartitionFetchAll(): void {\n this.setState({\n partitionFilters: [],\n isSelectingPartition: false,\n });\n }\n\n handlePartitionDone(): void {\n this.setState({ isSelectingPartition: false });\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 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 { sorts: currentSorts } = this.state;\n const modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.columns,\n modelColumn,\n addToExisting\n );\n this.updateSorts(sorts);\n }\n\n updateSorts(sorts: 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 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 = ''): void {\n const { isGotoRowShown } = this.state;\n if (row) {\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoRowShown: true,\n gotoRow: row,\n gotoRowError: '',\n });\n return;\n }\n this.setState({\n isGotoRowShown: !isGotoRowShown,\n gotoRow: '',\n gotoRowError: '',\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 = document?.activeElement?.classList.contains(\n 'grid-cell-input-field'\n );\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: Column): void {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Select all the data for a given row and notify listener\n */\n selectData(columnIndex: ModelIndex, rowIndex: ModelIndex): void {\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 const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n handleAdvancedFilterChange(\n column: Column,\n filter: 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: 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 oldSort = TableUtils.getSortForColumn(model.sort, columnIndex);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnIndex,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.startLoading('Sorting...');\n this.setState({ sorts });\n\n this.grid?.forceUpdate();\n }\n\n handleAdvancedFilterDone(): 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({ isGotoRowShown: true });\n }\n\n handleGotoRowClosed(): void {\n this.setState({ isGotoRowShown: 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...', 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 customEvent = event as CustomEvent;\n log.error('request failed:', customEvent.detail);\n this.stopLoading();\n if (this.canRollback()) {\n this.startLoading('Rolling back changes...', true);\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${customEvent.detail}`));\n }\n }\n\n handleUpdate(): void {\n this.stopLoading();\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.state;\n\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 }\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?: 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 onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(\n movedColumns: MoveOperation[],\n onChangeApplied?: (() => void) | undefined\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleHeaderGroupsChanged(columnHeaderGroups: ColumnGroup[]): 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: 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: 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 = 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.initState();\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 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 sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n selectDistinctColumns: [],\n });\n }\n\n handleSelectDistinctChanged(columnNames: 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: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: GridRange[],\n modelRanges: 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 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: GridRange[]): void {\n const { model } = this.props;\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection(): 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 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: '' });\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: '' });\n this.grid?.setFocusRow(0);\n } else if (rowInt < 0) {\n this.setState({ gotoRowError: '' });\n this.grid?.setFocusRow(rowInt + rowCount);\n } else {\n this.grid?.setFocusRow(rowInt - 1);\n this.setState({ gotoRowError: '' });\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 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 keyHandlers,\n mouseHandlers,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n partition,\n partitionFilters,\n partitionTable,\n partitionColumn,\n searchFilter,\n selectDistinctColumns,\n\n movedColumns,\n movedRows,\n\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n\n sorts,\n reverseType,\n customColumns,\n\n selectedRanges,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n frozenColumns,\n columnHeaderGroups,\n showOverflowModal,\n overflowText,\n overflowButtonTooltipProps,\n isGotoRowShown,\n gotoRow,\n gotoRowError,\n } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n );\n\n const userColumnWidths = metricCalculator.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: loadingSpinnerShown,\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 className=\"iris-grid-loading\" style={{ top: gridY }}>\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 {\n gridX,\n gridY,\n visibleColumns,\n allColumnXs,\n 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 const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, modelColumn);\n const sortDirection = sort ? sort.direction : null;\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n 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,\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 isGotoRowShown,\n advancedSettings.size > 0\n );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n userColumnWidths={userColumnWidths}\n columnHeaderGroups={columnHeaderGroups}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\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 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 const hiddenColumns = this.getCachedHiddenColumns(\n IrisGridUtils.getHiddenColumns(userColumnWidths)\n );\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children != 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 {partitionTable && partitionColumn && partition != null && (\n <IrisGridPartitionSelector\n table={partitionTable}\n getFormattedString={(\n value: unknown,\n type: string,\n stringName: string\n ) => model.displayString(value, type, stringName)}\n columnName={partitionColumn.name}\n partition={partition}\n onChange={this.handlePartitionChange}\n onFetchAll={this.handlePartitionFetchAll}\n onAppend={this.handlePartitionAppend}\n onDone={this.handlePartitionDone}\n />\n )}\n </div>\n </CSSTransition>\n <CSSTransition\n in={showSearchBar}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-bar\">\n <CrossColumnSearch\n value={searchValue}\n selectedColumns={selectedSearchColumns}\n invertSelection={invertSearchColumns}\n onChange={this.handleCrossColumnSearch}\n columns={model.columns}\n ref={this.crossColumnRef}\n />\n </div>\n </CSSTransition>\n <div\n className=\"grid-wrapper\"\n ref={gridWrapper => {\n this.gridWrapper = gridWrapper;\n }}\n >\n <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!isEditableGridModel(model) || !model.isEditable}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={keyHandlers}\n mouseHandlers={mouseHandlers}\n movedColumns={movedColumns}\n movedRows={movedRows}\n onError={this.handleGridError}\n onViewChanged={this.handleViewChanged}\n onSelectionChanged={this.handleSelectionChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n renderer={this.renderer}\n stateOverride={stateOverride}\n theme={theme}\n />\n <IrisGridCellOverflowModal\n isOpen={showOverflowModal}\n text={overflowText}\n onClose={this.handleOverflowClose}\n />\n {isVisible && (\n <IrisGridModelUpdater\n model={model}\n modelColumns={model.columns}\n top={top}\n bottom={bottom}\n left={left}\n right={right}\n filter={filter}\n formatter={formatter}\n sorts={sorts}\n reverseType={reverseType}\n movedColumns={movedColumns}\n customColumns={customColumns}\n hiddenColumns={hiddenColumns}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n alwaysFetchColumns,\n model.columns,\n movedColumns,\n model.floatingLeftColumnCount,\n model.floatingRightColumnCount,\n this.grid?.state.draggingColumn?.range\n )}\n formatColumns={this.getCachedPreviewFormatColumns(\n this.getCachedModelColumns(model, customColumns),\n conditionalFormats,\n conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n openOptions[openOptions.length - 1]?.type ===\n OptionType.CONDITIONAL_FORMATTING_EDIT\n ? conditionalFormatEditIndex ?? 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 />\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 </div>\n <GotoRow\n model={model}\n isShown={isGotoRowShown}\n gotoRow={gotoRow}\n gotoRowError={gotoRowError}\n onSubmit={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 />\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 ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <CSSTransition\n in={isMenuShown}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n <Page title=\"Table Options\" onClose={this.handleMenuClose}>\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>\n {openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n ))}\n </Stack>\n </div>\n </CSSTransition>\n <ContextActions actions={this.contextActions} />\n </div>\n );\n }\n}\n\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","Grid","GridRange","GridUtils","isEditableGridModel","isExpandableGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsClose","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","dh","DateUtils","Formatter","FormatterUtils","TableUtils","assertNotNull","copyToClipboard","Pending","PromiseUtils","ValidationError","Type","FilterType","throttle","debounce","clamp","getFormatColumns","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridSortMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","IrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","IrisGridUtils","CrossColumnSearch","IrisGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","log","module","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","UNFORMATTED_DATE_PATTERN","isEmptyConfig","advancedFilters","aggregationSettings","customColumns","quickFilters","reverseType","rollupConfig","searchFilter","selectDistinctColumns","sorts","size","length","REVERSE_TYPE","NONE","IrisGrid","makeQuickFilter","column","text","timeZone","err","error","constructor","props","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","handleAdvancedFilterChange","handleAdvancedFilterSortChange","handleAdvancedFilterDone","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","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","hiddenColumns","normalizer","join","columns","aggregationMap","forEach","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","name","newOperations","map","o","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","getModelRollupConfig","getOperationMap","operationOrder","getOperationOrder","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","partitionFilters","getFiltersFromFilterMap","theme","isEditable","floatingRowCount","autoSelectRow","rowFooterWidth","alwaysFetchColumns","movedColumns","floatingLeftColumnCount","floatingRightColumnCount","draggingRange","floatingColumns","i","getModelIndex","columnSet","Set","searchValue","selectedSearchColumns","invertSearchColumns","createSearchFilter","setState","conditionalFormatPreview","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","state","DOWNLOAD_STATUS","DOWNLOADING","overflowButtonTooltipProps","wrapperStyle","position","pointerEvents","popperOptions","placement","modifiers","flip","behavior","Date","now","handleTooltipRef","input","gotoValue","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","handlePendingCommitClicked","handlePendingDiscardClicked","handleGotoRowSelectedRowNumberSubmit","focusRowInGrid","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadCompleted","handlePartitionAppend","handlePartitionChange","handlePartitionFetchAll","handlePartitionDone","handleColumnVisibilityChanged","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","getColumnBoundingRect","handleGotoRowSelectedRowNumberChanged","handleGotoValueSelectedColumnNameChanged","handleGotoValueSelectedFilterChanged","handleGotoValueChanged","handleGotoValueSubmitted","grid","gridWrapper","lastLoadedConfig","pending","globalColumnFormats","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","renderer","tableSaver","crossColumnRef","createRef","isAnimating","filterInputRef","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","toggleGotoRow","GOTO_ROW","discardAction","pendingDataMap","discardPending","catch","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","isSelectingPartition","movedColumnsProp","movedRows","movedRowsProp","partition","partitionColumn","userColumnWidths","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","keyHandlers","mouseHandlers","initialMovedColumns","initialMovedRows","metricCalculator","Map","searchColumns","focusedFilterBarColumn","metrics","partitionTable","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","loadingSpinnerShown","shownColumnTooltip","conditionalFormatEditIndex","isTableDownloading","isReady","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","overflowText","isGotoShown","gotoRow","gotoRowError","gotoValueError","gotoValueSelectedColumnName","gotoValueSelectedFilter","eq","initialColumnHeaderGroups","componentDidMount","find","c","isPartitionColumn","isFilterRequired","isValuesTableAvailable","loadPartitionsTable","initState","startListening","componentDidUpdate","prevProps","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","startLoading","applyInputFilters","resetColumnSelection","updateFormatterSettings","updateSorts","loadingScrimStartTime","loadingScrimFinishTime","window","requestAnimationFrame","currentTime","totalTime","Math","min","debug2","sendStateChange","componentWillUnmount","cancel","updateSearchFilter","loadingTimer","clearTimeout","handleDownloadProgressUpdate","animationFrame","cancelAnimationFrame","getValueForCell","columnIndex","rowIndex","rawValue","modelColumn","getModelColumn","modelRow","getModelRow","value","valueForCell","isDateType","i18n","DateTimeFormat","format","TimeZone","getTimeZone","textForCell","modelColumns","modelRows","getTheme","getCachedTheme","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","findIndex","columnName","columnType","delete","applyQuickFilter","trim","quickFilter","set","setAdvancedFilterMap","setAdvancedFilter","options","setQuickFilter","setFilterMap","filterMap","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","filterList","getColumnIndexByName","combinedText","combineFiltersFromList","removeQuickFilter","removeColumnFilter","current","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","forceUpdate","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","updateFormatter","updatedFormats","update","mergedColumnFormats","values","initFormatter","applyInputFiltersOnInit","inputFiltersWithValues","add","valuesTable","resolved","close","sort","desc","applySort","setViewport","data","getViewportData","rows","row","updatePartition","info","handleTableLoadError","partitionFilter","FilterValue","ofString","copyCell","String","e","copyRanges","ranges","includeHeaders","formatValues","getUserColumnWidths","boundedRanges","columnCount","rowCount","resetRanges","clearSelectedRanges","setViewState","top","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","stopLoading","rollback","canRollback","addEventListener","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","removeEventListener","focus","focusFilterBar","isFilterable","left","rightVisible","lastLeft","metricState","getMetricState","newLeft","getLastLeft","getVisibleWidth","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","isVisible","resetColumnWidth","updateCanvasScale","updateCanvas","onPartitionAppend","isCanceled","onError","showAllColumns","entries","columnWidth","toggleSort","addToExisting","currentSorts","toggleSortForColumn","sortColumn","direction","none","isAbs","reverse","isReversible","focusIndex","isTextType","isTableSearchAvailable","searchDisplayMode","layoutHints","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","Error","containsGridCellInputField","document","activeElement","classList","contains","newPendingSavePromise","then","selectColumn","onColumnSelected","selectData","groupedColumns","dataMap","isExpandable","isRowExpandable","isGrouped","onDataSelected","index","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","onCreateChart","warn","setGridFocus","defocusInput","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","stopPropagation","newOptions","pop","option","event","customEvent","detail","selectionEndRow","bottomViewport","bottomNonFloating","onSelectionChanged","onChangeApplied","parseColumnHeaderGroups","groups","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","aggregation","AGGREGATION_EDIT","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","inputString","isBackwards","selectedColumnName","isSeekRowAvailable","selectedColumn","searchFromRow","isContains","isEquals","eqIgnoreCase","columnDataType","dataType","STRING","ValueType","DATETIME","startDate","parseDateRange","DECIMAL","INT","isBigDecimalType","isBigIntegerType","inputValue","parseInt","NUMBER","setFocusRow","cancelDownload","FINISHED","CANCELED","deleteRanges","columnAllowedCursor","cursor","topOffset","irisGridState","gridState","onStateChange","gridRect","popperMargin","columnHeaderHeight","allColumnXs","allColumnWidths","width","columnHeaderMaxDepth","columnX","bottom","right","x","y","toJSON","rowNumber","rowInt","target","getColumnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","render","children","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","getCachedFilter","stateOverride","getCachedStateOverride","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridX","gridY","filterBarHeight","fieldWidth","fieldHeight","style","minWidth","isValid","advancedFilter","isBarFiltered","active","handleContextMenu","loadingElement","loadingStatus","show","columnTooltip","filterBar","visibleColumns","isFilterSet","isFilterVisible","element","hidden","advancedFilterMenus","xColumnHeader","xFilterBar","getAdvancedMenuOpenedHandler","positionFixed","getCachedAdvancedFilterMenuActions","getCachedOptionItems","openOptionsStack","handleConditionalFormatEditorUpdate","getCachedHiddenColumns","getHiddenColumns","transitionSlowMs","stringName","displayString","getAlwaysFetchColumns","draggingColumn","range","getCachedPreviewFormatColumns","getCachedModelColumns","getModelTotalsConfig","getOverflowButtonTooltip","transitionMidMs","columnSelectionValidator","columnNotAllowedCursor","onContextMenu","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 '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} 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} 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 dh, {\n Column,\n ColumnGroup,\n CustomColumn,\n DateWrapper,\n FilterCondition,\n Sort,\n Table,\n TableViewportSubscription,\n} from '@deephaven/jsapi-shim';\nimport {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n FormattingRule,\n ReverseType,\n RowDataMap,\n SortDirection,\n DateTimeColumnFormatterOptions,\n TableColumnFormat,\n Settings,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n copyToClipboard,\n Pending,\n PromiseUtils,\n ValidationError,\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 ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridCellOverflowMouseHandler,\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridSortMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport IrisGridTheme, { 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} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu, {\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 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 AdvancedFilterMap,\n ColumnName,\n QuickFilterMap,\n AggregationMap,\n OperationMap,\n Action,\n OptionItem,\n UITotalsTableConfig,\n InputFilter,\n PendingDataMap,\n AdvancedFilterOptions,\n} from './CommonTypes';\nimport ColumnHeaderGroup from './ColumnHeaderGroup';\n\nconst log = Log.module('IrisGrid');\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: [],\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: AdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n customColumns: ColumnName[];\n quickFilters: QuickFilterMap;\n reverseType: ReverseType;\n rollupConfig?: UIRollupConfig;\n searchFilter?: FilterCondition;\n selectDistinctColumns: ColumnName[];\n sorts: Sort[];\n}) {\n return (\n advancedFilters.size === 0 &&\n aggregationSettings.aggregations.length === 0 &&\n customColumns.length === 0 &&\n quickFilters.size === 0 &&\n reverseType === TableUtils.REVERSE_TYPE.NONE &&\n rollupConfig == null &&\n searchFilter == null &&\n selectDistinctColumns.length === 0 &&\n sorts.length === 0\n );\n}\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>;\nexport interface IrisGridProps {\n children: React.ReactNode;\n advancedFilters: AdvancedFilterMap;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n alwaysFetchColumns: ColumnName[];\n isFilterBarShown: boolean;\n applyInputFiltersOnInit: boolean;\n conditionalFormats: SidebarFormattingRule[];\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n movedColumns: MoveOperation[];\n movedRows: MoveOperation[];\n inputFilters: InputFilter[];\n customFilters: FilterCondition[];\n model: IrisGridModel;\n onCreateChart: (settings: ChartBuilderSettings, model: IrisGridModel) => void;\n onColumnSelected: (column: Column) => void;\n onError: (error: unknown) => void;\n onDataSelected: (index: ModelIndex, map: Record<ColumnName, unknown>) => void;\n onStateChange: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPartitionAppend: (partitionColumn: Column, value: string) => void;\n onAdvancedSettingsChange: AdvancedSettingsMenuCallback;\n partition: string;\n partitionColumn: Column;\n sorts: Sort[];\n reverseType: ReverseType;\n quickFilters: QuickFilterMap | null;\n customColumns: ColumnName[];\n selectDistinctColumns: ColumnName[];\n settings?: Settings;\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n onSelectionChanged: (gridRanges: 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: Column | null) => boolean;\n columnAllowedCursor: string;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: string;\n name: string;\n onlyFetchVisibleColumns: boolean;\n\n showSearchBar: boolean;\n searchValue: string;\n selectedSearchColumns: ColumnName[];\n invertSearchColumns: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: (obj: {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow: GridRangeIndex;\n modelColumn: GridRangeIndex;\n }) => ContextAction;\n\n pendingDataMap?: PendingDataMap;\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n canCopy: boolean;\n canDownloadCsv: boolean;\n frozenColumns: ColumnName[];\n\n // Theme override for IrisGridTheme\n theme: GridThemeType;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: ColumnHeaderGroup[];\n}\n\nexport interface IrisGridState {\n isFilterBarShown: boolean;\n isSelectingPartition: boolean;\n focusedFilterBarColumn: number | null;\n metricCalculator: IrisGridMetricCalculator;\n metrics?: GridMetrics;\n keyHandlers: KeyHandler[];\n mouseHandlers: GridMouseHandler[];\n\n partition: string | null;\n partitionColumn: Column | null;\n partitionTable: Table | null;\n partitionFilters: FilterCondition[];\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: QuickFilterMap;\n advancedFilters: AdvancedFilterMap;\n shownAdvancedFilter: number | null;\n hoverAdvancedFilter: number | null;\n\n sorts: Sort[];\n reverseType: ReverseType;\n customColumns: ColumnName[];\n selectDistinctColumns: ColumnName[];\n\n // selected range in table\n selectedRanges: 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\n movedColumns: MoveOperation[];\n movedRows: MoveOperation[];\n\n shownColumnTooltip: number | null;\n\n formatter: Formatter;\n isMenuShown: boolean;\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n\n conditionalFormats: 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?: FilterCondition;\n searchValue: string;\n selectedSearchColumns: ColumnName[];\n invertSearchColumns: boolean;\n\n rollupConfig?: UIRollupConfig;\n rollupSelectedColumns: [];\n aggregationSettings: AggregationSettings;\n selectedAggregation: Aggregation | null;\n\n openOptions: OptionItem[];\n\n pendingRowCount: number;\n pendingDataMap: PendingDataMap;\n pendingDataErrors: Map<number, Error[]>;\n pendingSavePromise: Promise<void> | null;\n pendingSaveError: string | null;\n\n toastMessage: JSX.Element | null;\n frozenColumns: ColumnName[];\n showOverflowModal: boolean;\n overflowText: string;\n overflowButtonTooltipProps: CSSProperties | null;\n\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n isGotoShown: boolean;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValueSelectedFilter: FilterTypeValue;\n gotoValue: string;\n\n columnHeaderGroups: ColumnHeaderGroup[];\n}\n\nexport class IrisGrid extends Component<IrisGridProps, IrisGridState> {\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static defaultProps = {\n children: null,\n advancedFilters: new Map(),\n advancedSettings: new Map(),\n alwaysFetchColumns: [],\n conditionalFormats: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: [],\n movedRows: [],\n inputFilters: [],\n customFilters: [],\n onCreateChart: undefined,\n onColumnSelected: (): void => undefined,\n onDataSelected: (): void => undefined,\n onError: (): void => undefined,\n onStateChange: (): void => undefined,\n onPartitionAppend: (): void => undefined,\n onAdvancedSettingsChange: (): void => undefined,\n partition: null,\n partitionColumn: null,\n quickFilters: new Map(),\n selectDistinctColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: [],\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: new Map(),\n userRowHeights: new 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 name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: (): void => undefined,\n pendingDataMap: new Map(),\n getDownloadWorker: undefined,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n formatter: [],\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: IrisGridTheme,\n canToggleSearch: true,\n };\n\n static makeQuickFilter(\n column: Column,\n text: string,\n timeZone: string\n ): FilterCondition | null {\n try {\n return TableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n constructor(props: IrisGridProps) {\n super(props);\n\n this.handleAdvancedFilterChange = this.handleAdvancedFilterChange.bind(\n this\n );\n this.handleAdvancedFilterSortChange = this.handleAdvancedFilterSortChange.bind(\n this\n );\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.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 = this.handleConditionalFormatCreate.bind(\n this\n );\n this.handleConditionalFormatEdit = this.handleConditionalFormatEdit.bind(\n this\n );\n this.handleConditionalFormatsChange = this.handleConditionalFormatsChange.bind(\n this\n );\n this.handleConditionalFormatEditorSave = this.handleConditionalFormatEditorSave.bind(\n this\n );\n this.handleConditionalFormatEditorCancel = this.handleConditionalFormatEditorCancel.bind(\n this\n );\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged = this.handleCustomColumnsChanged.bind(\n this\n );\n this.handleSelectDistinctChanged = this.handleSelectDistinctChanged.bind(\n this\n );\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handlePendingCommitClicked = this.handlePendingCommitClicked.bind(\n this\n );\n this.handlePendingDiscardClicked = this.handlePendingDiscardClicked.bind(\n this\n );\n this.handleGotoRowSelectedRowNumberSubmit = this.handleGotoRowSelectedRowNumberSubmit.bind(\n this\n );\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.handlePartitionAppend = this.handlePartitionAppend.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handlePartitionFetchAll = this.handlePartitionFetchAll.bind(this);\n this.handlePartitionDone = this.handlePartitionDone.bind(this);\n this.handleColumnVisibilityChanged = this.handleColumnVisibilityChanged.bind(\n this\n );\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.bind(this);\n this.handleGotoRowSelectedRowNumberChanged = this.handleGotoRowSelectedRowNumberChanged.bind(\n this\n );\n this.handleGotoValueSelectedColumnNameChanged = this.handleGotoValueSelectedColumnNameChanged.bind(\n this\n );\n this.handleGotoValueSelectedFilterChanged = this.handleGotoValueSelectedFilterChanged.bind(\n this\n );\n this.handleGotoValueChanged = this.handleGotoValueChanged.bind(this);\n this.handleGotoValueSubmitted = this.handleGotoValueSubmitted.bind(this);\n\n this.grid = null;\n this.gridWrapper = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = [];\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.renderer = new IrisGridRenderer();\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.filterInputRef = React.createRef();\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 model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n partition,\n partitionColumn,\n rollupConfig,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups,\n } = props;\n\n const keyHandlers: KeyHandler[] = [\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n }\n const mouseHandlers = [\n new IrisGridCellOverflowMouseHandler(this),\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n ];\n\n const movedColumns =\n movedColumnsProp.length > 0\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 });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: undefined,\n keyHandlers,\n mouseHandlers,\n\n partition,\n partitionColumn,\n partitionTable: null,\n partitionFilters: [],\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: 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\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n\n conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap: 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 isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n\n gotoValueSelectedColumnName: model.columns[0].name,\n gotoValueSelectedFilter: FilterType.eq,\n gotoValue: '',\n columnHeaderGroups: columnHeaderGroups ?? model.initialColumnHeaderGroups,\n };\n }\n\n componentDidMount(): void {\n const { partitionColumn, model } = this.props;\n const column =\n partitionColumn ?? model.columns.find(c => c.isPartitionColumn);\n if (\n model.isFilterRequired &&\n model.isValuesTableAvailable &&\n column != null\n ) {\n this.loadPartitionsTable(column);\n } else {\n this.initState();\n }\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps: IrisGridProps): 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...', true);\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', true);\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n 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 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\n grid: Grid | null;\n\n gridWrapper: HTMLDivElement | 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?: FormattingRule[];\n\n dateTimeFormatterOptions?: DateTimeColumnFormatterOptions;\n\n decimalFormatOptions: { defaultFormatString?: string };\n\n integerFormatOptions: { defaultFormatString?: string };\n\n truncateNumbersWithPound: 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 renderer: IrisGridRenderer;\n\n tableSaver: TableSaver | null;\n\n crossColumnRef: React.RefObject<CrossColumnSearch>;\n\n isAnimating: boolean;\n\n filterInputRef: React.RefObject<FilterInputField>;\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 getAdvancedMenuOpenedHandler = memoize(\n (column: ModelIndex) => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model: IrisGridModel,\n column: 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 />\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 ) => {\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: 'Hide, Group, and Order 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 optionItems;\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(\n (hiddenColumns: ModelIndex[]) => hiddenColumns,\n {\n max: 1,\n normalizer: ([hiddenColumns]) => hiddenColumns.join(),\n }\n );\n\n getAggregationMap = memoize(\n (columns: Column[], aggregations: Aggregation[]): AggregationMap => {\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 (columns: Column[], aggregations: Aggregation[]): OperationMap => {\n const operationMap: Record<string, AggregationOperation[]> = {};\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] = newOperations;\n });\n });\n return operationMap;\n }\n );\n\n getOperationOrder = memoize(\n (aggregations: 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 (columns: Column[], rules: SidebarFormattingRule[]) =>\n getFormatColumns(columns, rules)\n );\n\n // customColumns arg is needed to invalidate the cache\n // eslint-disable-next-line no-unused-vars\n getCachedModelColumns = memoize(\n (model: IrisGridModel, customColumns: ColumnName[]) => model.columns\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 columns: Column[],\n rulesParam: SidebarFormattingRule[],\n preview?: SidebarFormattingRule,\n editIndex?: number\n ): 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(columns, rules);\n }\n\n return this.getCachedFormatColumns(columns, rulesParam);\n }\n );\n\n getModelRollupConfig = memoize(\n (\n originalColumns: 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: Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): UITotalsTableConfig | null => {\n const { aggregations, showOnTop } = aggregationSettings;\n // If we've got rollups, then aggregations are applied as part of that...\n if (\n (config?.columns?.length ?? 0) > 0 ||\n (aggregations?.length ?? 0) === 0\n ) {\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return { operationMap, operationOrder, showOnTop };\n }\n );\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: QuickFilterMap,\n advancedFilters: AdvancedFilterMap,\n sorts: 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: FilterCondition[],\n quickFilters: QuickFilterMap,\n advancedFilters: AdvancedFilterMap,\n partitionFilters: FilterCondition[],\n searchFilter: FilterCondition | undefined\n ) => [\n ...(customFilters ?? []),\n ...(partitionFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter !== undefined ? [searchFilter] : []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n theme: GridThemeType,\n isEditable: boolean,\n floatingRowCount: number\n ): Partial<IrisGridThemeType> => ({\n ...IrisGridTheme,\n ...theme,\n autoSelectRow: !isEditable,\n // We only show the row footers when we have floating rows for aggregations\n rowFooterWidth: floatingRowCount > 0 ? theme.rowFooterWidth : 0,\n }),\n { max: 1 }\n );\n\n getValueForCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): string | unknown {\n const { model } = this.props;\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 | 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(): Partial<IrisGridThemeType> {\n const { model, theme } = this.props;\n return this.getCachedTheme(\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 /**\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: IrisGrid.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilterMap(advancedFilters: AdvancedFilterMap): void {\n this.setState({ advancedFilters });\n }\n\n setAdvancedFilter(\n modelIndex: ModelIndex,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param 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: FilterCondition | null,\n text: string\n ): void {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n return { quickFilters: newQuickFilters };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param 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 IrisGrid.makeQuickFilter(column, combinedText, formatter.timeZone),\n `${combinedText}`\n );\n }\n });\n }\n\n removeColumnFilter(modelColumn: ModelIndex): void {\n this.startLoading('Filtering...', true);\n\n this.setState(\n ({ advancedFilters, quickFilters }: Partial<IrisGridState>) => {\n const newAdvancedFilters = advancedFilters\n ? new Map(advancedFilters)\n : new Map();\n const newQuickFilters = quickFilters\n ? new Map(quickFilters)\n : new Map();\n newQuickFilters.delete(modelColumn);\n newAdvancedFilters.delete(modelColumn);\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n }\n );\n }\n\n removeQuickFilter(modelColumn: ModelIndex): void {\n this.startLoading('Clearing Filter...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n\n return { quickFilters: newQuickFilters };\n });\n }\n\n clearAllFilters(): 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...', 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 log.debug('Rebuilding filters');\n\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns, formatter } = model;\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = TableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: IrisGrid.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n\n this.startLoading('Rebuilding filters...', true);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n\n setFilters({\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 = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n\n const defaultDecimalFormatOptions =\n settings?.defaultDecimalFormatOptions ?? {};\n const defaultIntegerFormatOptions =\n settings?.defaultIntegerFormatOptions ?? {};\n const truncateNumbersWithPound =\n settings?.truncateNumbersWithPound ?? false;\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 if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged ||\n isTruncateNumbersChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.truncateNumbersWithPound = truncateNumbersWithPound;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns: ColumnName[],\n columns: Column[],\n movedColumns: MoveOperation[],\n floatingLeftColumnCount: number,\n floatingRightColumnCount: number,\n draggingRange?: BoundedAxisRange\n ) => {\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 [...columnSet];\n }\n );\n\n updateFormatter(\n updatedFormats: { customColumnFormatMap?: Map<ColumnName, FormattingRule> },\n forceUpdate = true\n ): void {\n const { customColumnFormatMap } = this.state;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...(this.globalColumnFormats ?? []),\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound\n );\n\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n\n this.setState({ ...update, formatter }, () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n\n initFormatter(): void {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState(): 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 searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverseType,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(partitionColumn: Column): Promise<void> {\n const { model } = this.props;\n this.setState({ isSelectingPartition: true });\n\n try {\n const partitionTable = await this.pending.add(\n model.valuesTable(partitionColumn),\n resolved => resolved.close()\n );\n\n const column = partitionTable.columns[0];\n const sort = column.sort().desc();\n partitionTable.applySort([sort]);\n partitionTable.setViewport(0, 0, [column]);\n\n const data = await this.pending.add(partitionTable.getViewportData());\n if (data.rows.length > 0) {\n const row = data.rows[0];\n const value = row.get(column);\n\n this.updatePartition(value, partitionColumn);\n\n this.setState({ isSelectingPartition: true });\n } else {\n log.info('Table does not have any data, just fetching all');\n this.setState({ isSelectingPartition: false });\n this.handlePartitionFetchAll();\n }\n this.setState({ partitionTable, partitionColumn }, () => {\n this.initState();\n });\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n updatePartition(partition: string, partitionColumn: Column): void {\n const partitionFilter = partitionColumn\n .filter()\n .eq(dh.FilterValue.ofString(partition));\n const partitionFilters = [partitionFilter];\n this.setState({\n partition,\n partitionFilters,\n });\n }\n\n copyCell(\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 /**\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: 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(loadingText: string, resetRanges = false): void {\n this.setState({ loadingText });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n 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.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: 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 }\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 }\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: ModelIndex[],\n isVisible: boolean\n ): void {\n const { metricCalculator } = this.state;\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.resetColumnWidth(modelIndex);\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleCrossColumnSearch(\n searchValue: string,\n selectedSearchColumns: ColumnName[],\n invertSearchColumns: boolean\n ): void {\n const { model } = this.props;\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter = debounce(\n (\n searchValue: string,\n selectedSearchColumns: ColumnName[],\n columns: Column[],\n invertSearchColumns: boolean\n ): void => {\n const searchFilter = CrossColumnSearch.createSearchFilter(\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?.updateCanvasScale();\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 handlePartitionAppend(value: string): void {\n const { onPartitionAppend } = this.props;\n const { partitionColumn } = this.state;\n if (!partitionColumn) {\n return;\n }\n onPartitionAppend(partitionColumn, value);\n }\n\n handlePartitionChange(partition: string): void {\n const { partitionColumn } = this.state;\n if (!partitionColumn) {\n return;\n }\n this.updatePartition(partition, partitionColumn);\n }\n\n handlePartitionFetchAll(): void {\n this.setState({\n partitionFilters: [],\n isSelectingPartition: false,\n });\n }\n\n handlePartitionDone(): void {\n this.setState({ isSelectingPartition: false });\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 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 { sorts: currentSorts } = this.state;\n const modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.columns,\n modelColumn,\n addToExisting\n );\n this.updateSorts(sorts);\n }\n\n updateSorts(sorts: 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 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 gotoRow: row,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n });\n this.focusRowInGrid(row);\n return;\n }\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\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 = document?.activeElement?.classList.contains(\n 'grid-cell-input-field'\n );\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: Column): void {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Select all the data for a given row and notify listener\n */\n selectData(columnIndex: ModelIndex, rowIndex: ModelIndex): void {\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 const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n handleAdvancedFilterChange(\n column: Column,\n filter: 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: 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 oldSort = TableUtils.getSortForColumn(model.sort, columnIndex);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnIndex,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.startLoading('Sorting...');\n this.setState({ sorts });\n\n this.grid?.forceUpdate();\n }\n\n handleAdvancedFilterDone(): 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 });\n }\n\n handleGotoRowClosed(): void {\n this.setState({ isGotoShown: 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...', 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 customEvent = event as CustomEvent;\n log.error('request failed:', customEvent.detail);\n this.stopLoading();\n if (this.canRollback()) {\n this.startLoading('Rolling back changes...', true);\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${customEvent.detail}`));\n }\n }\n\n handleUpdate(): void {\n this.stopLoading();\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.state;\n\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 }\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?: 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 onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(\n movedColumns: MoveOperation[],\n onChangeApplied?: (() => void) | undefined\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleHeaderGroupsChanged(columnHeaderGroups: ColumnGroup[]): 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: 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: 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 = 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.initState();\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 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 sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n selectDistinctColumns: [],\n });\n }\n\n handleSelectDistinctChanged(columnNames: 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: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: GridRange[],\n modelRanges: 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 async seekRow(inputString: string, isBackwards = false): Promise<void> {\n const {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter,\n } = this.state;\n const { model } = this.props;\n if (!model.isSeekRowAvailable) {\n return;\n }\n\n if (inputString === '') {\n return;\n }\n\n const columnIndex = model.getColumnIndexByName(selectedColumnName);\n if (columnIndex === undefined) {\n return;\n }\n\n const selectedColumn = model.columns[columnIndex];\n\n let searchFromRow;\n\n if (this.grid) {\n ({ selectionEndRow: searchFromRow } = this.grid.state);\n }\n\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n\n const isContains = gotoValueSelectedFilter === FilterType.contains;\n const isEquals =\n gotoValueSelectedFilter === FilterType.eq ||\n gotoValueSelectedFilter === FilterType.eqIgnoreCase;\n\n try {\n const columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n\n let rowIndex;\n\n switch (columnDataType) {\n case TableUtils.dataType.STRING: {\n rowIndex = await model.seekRow(\n isBackwards === true ? searchFromRow - 1 : searchFromRow + 1,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n isEquals,\n isContains,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DATETIME: {\n const { formatter } = model;\n const [startDate] = DateUtils.parseDateRange(\n inputString,\n formatter.timeZone\n );\n rowIndex = await model.seekRow(\n isBackwards === true ? searchFromRow - 1 : searchFromRow + 1,\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 const inputValue = parseInt(inputString, 10);\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 inputString,\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: GridRange[]): void {\n const { model } = this.props;\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection(): 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 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 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 });\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 keyHandlers,\n mouseHandlers,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n partition,\n partitionFilters,\n partitionTable,\n partitionColumn,\n searchFilter,\n selectDistinctColumns,\n\n movedColumns,\n movedRows,\n\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n\n sorts,\n reverseType,\n customColumns,\n\n selectedRanges,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n frozenColumns,\n columnHeaderGroups,\n showOverflowModal,\n overflowText,\n overflowButtonTooltipProps,\n isGotoShown,\n gotoRow,\n gotoRowError,\n gotoValueError,\n gotoValueSelectedColumnName,\n gotoValue,\n } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n );\n\n const userColumnWidths = metricCalculator.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: loadingSpinnerShown,\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 className=\"iris-grid-loading\" style={{ top: gridY }}>\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 {\n gridX,\n gridY,\n visibleColumns,\n allColumnXs,\n 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 const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, modelColumn);\n const sortDirection = sort ? sort.direction : null;\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n 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,\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 openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n userColumnWidths={userColumnWidths}\n columnHeaderGroups={columnHeaderGroups}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\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 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 const hiddenColumns = this.getCachedHiddenColumns(\n IrisGridUtils.getHiddenColumns(userColumnWidths)\n );\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children != 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 {partitionTable && partitionColumn && partition != null && (\n <IrisGridPartitionSelector\n table={partitionTable}\n getFormattedString={(\n value: unknown,\n type: string,\n stringName: string\n ) => model.displayString(value, type, stringName)}\n columnName={partitionColumn.name}\n partition={partition}\n onChange={this.handlePartitionChange}\n onFetchAll={this.handlePartitionFetchAll}\n onAppend={this.handlePartitionAppend}\n onDone={this.handlePartitionDone}\n />\n )}\n </div>\n </CSSTransition>\n <CSSTransition\n in={showSearchBar}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-bar\">\n <CrossColumnSearch\n value={searchValue}\n selectedColumns={selectedSearchColumns}\n invertSelection={invertSearchColumns}\n onChange={this.handleCrossColumnSearch}\n columns={model.columns}\n ref={this.crossColumnRef}\n />\n </div>\n </CSSTransition>\n <div\n className=\"grid-wrapper\"\n ref={gridWrapper => {\n this.gridWrapper = gridWrapper;\n }}\n >\n <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!isEditableGridModel(model) || !model.isEditable}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={keyHandlers}\n mouseHandlers={mouseHandlers}\n movedColumns={movedColumns}\n movedRows={movedRows}\n onError={this.handleGridError}\n onViewChanged={this.handleViewChanged}\n onSelectionChanged={this.handleSelectionChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n renderer={this.renderer}\n stateOverride={stateOverride}\n theme={theme}\n />\n <IrisGridCellOverflowModal\n isOpen={showOverflowModal}\n text={overflowText}\n onClose={this.handleOverflowClose}\n />\n {isVisible && (\n <IrisGridModelUpdater\n model={model}\n modelColumns={model.columns}\n top={top}\n bottom={bottom}\n left={left}\n right={right}\n filter={filter}\n formatter={formatter}\n sorts={sorts}\n reverseType={reverseType}\n movedColumns={movedColumns}\n customColumns={customColumns}\n hiddenColumns={hiddenColumns}\n alwaysFetchColumns={this.getAlwaysFetchColumns(\n alwaysFetchColumns,\n model.columns,\n movedColumns,\n model.floatingLeftColumnCount,\n model.floatingRightColumnCount,\n this.grid?.state.draggingColumn?.range\n )}\n formatColumns={this.getCachedPreviewFormatColumns(\n this.getCachedModelColumns(model, customColumns),\n conditionalFormats,\n conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n openOptions[openOptions.length - 1]?.type ===\n OptionType.CONDITIONAL_FORMATTING_EDIT\n ? conditionalFormatEditIndex ?? 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 />\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 </div>\n <GotoRow\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 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 ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <CSSTransition\n in={isMenuShown}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n <Page title=\"Table Options\" onClose={this.handleMenuClose}>\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>\n {openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n ))}\n </Stack>\n </div>\n </CSSTransition>\n <ContextActions actions={this.contextActions} />\n </div>\n );\n }\n}\n\nexport default IrisGrid;\n"],"mappings":"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"}
|