@deephaven/iris-grid 0.15.7-beta.3 → 0.16.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IrisGrid.d.ts +1 -15
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +2 -2
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +2 -2
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/package.json +15 -16
package/dist/IrisGrid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGrid.tsx"],"names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","Log","FontAwesomeIcon","ContextActionUtils","ContextActions","DeephavenSpinner","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Grid","GridRange","GridUtils","isEditableGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","dh","DateUtils","Formatter","FormatterUtils","TableUtils","assertNotNull","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","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","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","autoSelectRow","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","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","keyHandlers","mouseHandlers","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","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","valueForCell","textForCell","modelColumns","modelRows","getTheme","getCachedTheme","getVisibleColumn","modelIndex","getVisibleIndex","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","value","findIndex","columnName","columnType","delete","applyQuickFilter","trim","quickFilter","set","setAdvancedFilterMap","setAdvancedFilter","options","setQuickFilter","setFilterMap","filterMap","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","getColumnIndexByName","isNull","filterValue","isTextType","FilterValue","ofString","ofNumber","eq","removeColumnFilter","current","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","forceUpdate","getColumnFormats","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","copyCell","String","copyToClipboard","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","gridX","left","rightVisible","lastLeft","metricState","getMetricState","newLeft","getLastLeft","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","visibilityOption","VISIBILITY_OPTIONS","SHOW","resetColumnWidth","updateCanvasScale","updateCanvas","onPartitionAppend","isCanceled","onError","showAllColumns","entries","columnWidth","toggleSort","addToExisting","currentSorts","toggleSortForColumn","sortColumn","direction","none","isAbs","reverse","isReversible","focusIndex","isTableSearchAvailable","searchDisplayMode","layoutHints","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","Error","document","activeElement","classList","contains","newPendingSavePromise","then","selectColumn","onColumnSelected","selectData","dataMap","onDataSelected","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","floatingBottomRowCount","floatingTopRowCount","onSelectionChanged","onChangeApplied","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","aggregation","AGGREGATION_EDIT","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","gridRanges","startDownload","cancelDownload","FINISHED","CANCELED","deleteRanges","columnAllowedCursor","cursor","topOffset","leftOffset","irisGridState","gridState","onStateChange","gridRect","popperMargin","columnHeaderHeight","visibleColumnXs","visibleColumnWidths","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","isVisible","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridY","filterBarHeight","fieldWidth","fieldHeight","style","minWidth","isValid","advancedFilter","isBarFiltered","active","handleContextMenu","loadingElement","loadingStatus","loader","cancelButton","show","columnTooltip","filterBar","visibleColumns","isFilterSet","isFilterVisible","element","hidden","advancedFilterMenus","xColumnHeader","xFilterBar","getAdvancedMenuOpenedHandler","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"],"mappings":"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","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 ContextActionUtils,\n ContextActions,\n DeephavenSpinner,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n ContextAction,\n PopperOptions,\n ReferenceObject,\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} from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\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 CustomColumn,\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 SortDirection,\n DateTimeColumnFormatterOptions,\n TableColumnFormat,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n Pending,\n PromiseUtils,\n ValidationError,\n} from '@deephaven/utils';\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 { VisibilityOptionType } from './sidebar/VisibilityOrderingBuilder';\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';\n\nconst log = Log.module('IrisGrid');\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: [],\n showOnTop: false,\n});\n\nfunction isEmptyConfig({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n}: {\n 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}\n\ntype Settings = {\n defaultDateTimeFormat?: string;\n defaultDecimalFormatOptions?: {\n defaultFormatString?: string;\n };\n defaultIntegerFormatOptions?: {\n defaultFormatString?: string;\n };\n formatter?: FormattingRule[];\n timeZone?: string;\n showTimeZone?: boolean;\n showTSeparator?: boolean;\n truncateNumbersWithPound?: boolean;\n};\n\nexport type FilterMap = Map<\n ColumnName,\n { columnType: string; text: string; value: unknown }\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: unknown[];\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 // These settings come from the redux store\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 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\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;\n partitionColumn: Column;\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\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: {},\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.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 } = 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 ? movedColumnsProp : model.movedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.movedRows;\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns,\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: 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 };\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) {\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 => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model,\n column,\n advancedFilterOptions,\n sortDirection?: SortDirection,\n 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,\n isCustomColumnsAvailable,\n isFormatColumnsAvailable,\n isRollupAvailable,\n isTotalsAvailable,\n isSelectDistinctAvailable,\n isExportAvailable,\n toggleFilterBarAction,\n toggleSearchBarAction,\n toggleGotoRowAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n canToggleSearch,\n showGotoRow\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: 'Column Visibility & Ordering',\n icon: dhEye,\n });\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Manage Custom Columns',\n icon: vsSplitHorizontal,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n });\n }\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n });\n }\n 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(hiddenColumns => hiddenColumns, {\n max: 1,\n normalizer: ([hiddenColumns]) => hiddenColumns.join(),\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((columns, rules) =>\n getFormatColumns(columns, rules)\n );\n\n // customColumns arg is needed to invalidate the cache\n // eslint-disable-next-line no-unused-vars\n getCachedModelColumns = memoize((model, customColumns) => model.columns);\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param 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 (originalColumns, config, aggregationSettings) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n )\n );\n\n getModelTotalsConfig = memoize(\n (columns, config, aggregationSettings): 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,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown\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,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n ) => [\n ...(customFilters ?? []),\n ...(partitionFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter ?? []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n theme: GridThemeType,\n isEditable: boolean\n ): Partial<IrisGridThemeType> => ({\n ...IrisGridTheme,\n ...theme,\n autoSelectRow: !isEditable,\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 return model.valueForCell(modelColumn, modelRow);\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 );\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,\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, text, value }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n if (value === null) {\n this.setQuickFilter(columnIndex, column.filter().isNull(), '=null');\n } else {\n const filterValue = TableUtils.isTextType(columnType)\n ? dh.FilterValue.ofString(value)\n : dh.FilterValue.ofNumber(value);\n this.setQuickFilter(\n columnIndex,\n column.filter().eq(filterValue),\n `${text}`\n );\n }\n });\n }\n\n removeColumnFilter(modelColumn: 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 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 ContextActionUtils.copyToClipboard(value).catch(e =>\n log.error('Unable to copy cell', e)\n );\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @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 { model } = this.props;\n const { columnCount } = model;\n const modelColumn = this.getModelColumn(column);\n\n if (\n column == null ||\n modelColumn == 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 { gridX, left, rightVisible, lastLeft } = metrics;\n if (column < left) {\n this.grid?.setViewState({ left: column }, true);\n } else if (rightVisible < column) {\n const metricState = this.grid?.getMetricState();\n assertNotNull(metricState);\n const newLeft = metricCalculator.getLastLeft(metricState, column, gridX);\n this.grid?.setViewState({ left: Math.min(newLeft, lastLeft) }, true);\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex: 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 visibilityOption?: VisibilityOptionType\n ): void {\n const { metricCalculator } = this.state;\n if (\n visibilityOption === VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n ) {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.resetColumnWidth(modelIndex);\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleCrossColumnSearch(\n searchValue: 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 onPartitionAppend(partitionColumn, value);\n }\n\n handlePartitionChange(partition: string): void {\n const { partitionColumn } = this.state;\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 if (document?.activeElement?.classList.contains('grid-cell-input-field')) {\n if (document.activeElement.classList.contains('error')) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid?.focus();\n }\n\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending(): 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 } = model;\n const dataMap: Record<\n string,\n { value: unknown; text: string | null; type: string }\n > = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n dataMap[name] = { value, text, type };\n }\n\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n handleAdvancedFilterChange(\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 = () => null\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\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) {\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 this.startLoading('Applying custom columns...');\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 gridRanges: GridRange[]\n ): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info(\n 'start table downloading',\n fileName,\n frozenTable,\n tableSubscription,\n gridRanges\n );\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(\n fileName,\n frozenTable,\n tableSubscription,\n gridRanges\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 visibleColumnXs,\n visibleColumnWidths,\n width,\n columnHeaderMaxDepth,\n } = metrics;\n const columnX = visibleColumnXs.get(shownColumnTooltip);\n const columnWidth = visibleColumnWidths.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 visibleColumnXs,\n visibleColumnWidths,\n width,\n } = metrics;\n const columnX = visibleColumnXs.get(visibleIndex);\n const columnWidth = visibleColumnWidths.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 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, visibleColumnXs, visibleColumnWidths } = metrics;\n const columnX = visibleColumnXs.get(focusedFilterBarColumn);\n const columnWidth = visibleColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - (theme.filterBarHeight ?? 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: fieldWidth,\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\">{loadingText}</div>\n );\n const loader = <DeephavenSpinner show={loadingSpinnerShown} />;\n const cancelButton = (\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames(\n 'btn btn-secondary btn-cancelable iris-grid-btn-cancel',\n {\n show: loadingSpinnerShown,\n }\n )}\n >\n Cancel\n </button>\n );\n\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div className=\"iris-grid-loading\" style={{ top: gridY }}>\n {loadingStatus}\n {loader}\n {cancelButton}\n </div>\n );\n }\n\n let columnTooltip: 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 visibleColumnXs,\n visibleColumnWidths,\n } = metrics;\n const { filterBarHeight } = theme;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n\n const columnX = visibleColumnXs.get(columnIndex);\n const columnWidth = visibleColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n 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 type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({ shownAdvancedFilter: columnIndex });\n }}\n onContextMenu={event => {\n this.grid?.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon\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 visibleColumnXs,\n visibleColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = visibleColumnXs.get(columnIndex);\n const columnWidth = visibleColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style: 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 >\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 );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n userColumnWidths={userColumnWidths}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n 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 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 && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\">\n {partitionTable && partitionColumn && (\n <IrisGridPartitionSelector\n table={partitionTable}\n getFormattedString={(\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 />\n )}\n {!isMenuShown && (\n <div className=\"grid-settings-button\">\n <button\n type=\"button\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\n className=\"btn btn-link btn-link-icon\"\n onClick={this.handleMenu}\n >\n <FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />\n </button>\n </div>\n )}\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"],"file":"IrisGrid.js"}
|
|
1
|
+
{"version":3,"sources":["../src/IrisGrid.tsx"],"names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","Log","FontAwesomeIcon","ContextActionUtils","ContextActions","DeephavenSpinner","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Grid","GridRange","GridUtils","isEditableGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","dh","DateUtils","Formatter","FormatterUtils","TableUtils","assertNotNull","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","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","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","autoSelectRow","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","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","keyHandlers","mouseHandlers","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","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","valueForCell","textForCell","modelColumns","modelRows","getTheme","getCachedTheme","getVisibleColumn","modelIndex","getVisibleIndex","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","value","findIndex","columnName","columnType","delete","applyQuickFilter","trim","quickFilter","set","setAdvancedFilterMap","setAdvancedFilter","options","setQuickFilter","setFilterMap","filterMap","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","getColumnIndexByName","isNull","filterValue","isTextType","FilterValue","ofString","ofNumber","eq","removeColumnFilter","current","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","forceUpdate","getColumnFormats","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","copyCell","String","copyToClipboard","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","gridX","left","rightVisible","lastLeft","metricState","getMetricState","newLeft","getLastLeft","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","visibilityOption","VISIBILITY_OPTIONS","SHOW","resetColumnWidth","updateCanvasScale","updateCanvas","onPartitionAppend","isCanceled","onError","showAllColumns","entries","columnWidth","toggleSort","addToExisting","currentSorts","toggleSortForColumn","sortColumn","direction","none","isAbs","reverse","isReversible","focusIndex","isTableSearchAvailable","searchDisplayMode","layoutHints","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","Error","document","activeElement","classList","contains","newPendingSavePromise","then","selectColumn","onColumnSelected","selectData","dataMap","onDataSelected","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","floatingBottomRowCount","floatingTopRowCount","onSelectionChanged","onChangeApplied","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","aggregation","AGGREGATION_EDIT","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","gridRanges","startDownload","cancelDownload","FINISHED","CANCELED","deleteRanges","columnAllowedCursor","cursor","topOffset","leftOffset","irisGridState","gridState","onStateChange","gridRect","popperMargin","columnHeaderHeight","visibleColumnXs","visibleColumnWidths","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","isVisible","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridY","filterBarHeight","fieldWidth","fieldHeight","style","minWidth","isValid","advancedFilter","isBarFiltered","active","handleContextMenu","loadingElement","loadingStatus","loader","cancelButton","show","columnTooltip","filterBar","visibleColumns","isFilterSet","isFilterVisible","element","hidden","advancedFilterMenus","xColumnHeader","xFilterBar","getAdvancedMenuOpenedHandler","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"],"mappings":"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","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 ContextActionUtils,\n ContextActions,\n DeephavenSpinner,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n ContextAction,\n PopperOptions,\n ReferenceObject,\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} from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\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 CustomColumn,\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 SortDirection,\n DateTimeColumnFormatterOptions,\n TableColumnFormat,\n Settings,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n Pending,\n PromiseUtils,\n ValidationError,\n} from '@deephaven/utils';\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 { VisibilityOptionType } from './sidebar/VisibilityOrderingBuilder';\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';\n\nconst log = Log.module('IrisGrid');\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: [],\n showOnTop: false,\n});\n\nfunction isEmptyConfig({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n}: {\n 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}\n\nexport type FilterMap = Map<\n ColumnName,\n { columnType: string; text: string; value: unknown }\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: unknown[];\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 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\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;\n partitionColumn: Column;\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\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: {},\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.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 } = 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 ? movedColumnsProp : model.movedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.movedRows;\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns,\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: 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 };\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) {\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 => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model,\n column,\n advancedFilterOptions,\n sortDirection?: SortDirection,\n 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,\n isCustomColumnsAvailable,\n isFormatColumnsAvailable,\n isRollupAvailable,\n isTotalsAvailable,\n isSelectDistinctAvailable,\n isExportAvailable,\n toggleFilterBarAction,\n toggleSearchBarAction,\n toggleGotoRowAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n canToggleSearch,\n showGotoRow\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: 'Column Visibility & Ordering',\n icon: dhEye,\n });\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Manage Custom Columns',\n icon: vsSplitHorizontal,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n });\n }\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n });\n }\n 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(hiddenColumns => hiddenColumns, {\n max: 1,\n normalizer: ([hiddenColumns]) => hiddenColumns.join(),\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((columns, rules) =>\n getFormatColumns(columns, rules)\n );\n\n // customColumns arg is needed to invalidate the cache\n // eslint-disable-next-line no-unused-vars\n getCachedModelColumns = memoize((model, customColumns) => model.columns);\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param 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 (originalColumns, config, aggregationSettings) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n )\n );\n\n getModelTotalsConfig = memoize(\n (columns, config, aggregationSettings): 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,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown\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,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n ) => [\n ...(customFilters ?? []),\n ...(partitionFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter ?? []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n theme: GridThemeType,\n isEditable: boolean\n ): Partial<IrisGridThemeType> => ({\n ...IrisGridTheme,\n ...theme,\n autoSelectRow: !isEditable,\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 return model.valueForCell(modelColumn, modelRow);\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 );\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,\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, text, value }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n if (value === null) {\n this.setQuickFilter(columnIndex, column.filter().isNull(), '=null');\n } else {\n const filterValue = TableUtils.isTextType(columnType)\n ? dh.FilterValue.ofString(value)\n : dh.FilterValue.ofNumber(value);\n this.setQuickFilter(\n columnIndex,\n column.filter().eq(filterValue),\n `${text}`\n );\n }\n });\n }\n\n removeColumnFilter(modelColumn: 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 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 ContextActionUtils.copyToClipboard(value).catch(e =>\n log.error('Unable to copy cell', e)\n );\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @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 { model } = this.props;\n const { columnCount } = model;\n const modelColumn = this.getModelColumn(column);\n\n if (\n column == null ||\n modelColumn == 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 { gridX, left, rightVisible, lastLeft } = metrics;\n if (column < left) {\n this.grid?.setViewState({ left: column }, true);\n } else if (rightVisible < column) {\n const metricState = this.grid?.getMetricState();\n assertNotNull(metricState);\n const newLeft = metricCalculator.getLastLeft(metricState, column, gridX);\n this.grid?.setViewState({ left: Math.min(newLeft, lastLeft) }, true);\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex: 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 visibilityOption?: VisibilityOptionType\n ): void {\n const { metricCalculator } = this.state;\n if (\n visibilityOption === VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n ) {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.resetColumnWidth(modelIndex);\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleCrossColumnSearch(\n searchValue: 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 onPartitionAppend(partitionColumn, value);\n }\n\n handlePartitionChange(partition: string): void {\n const { partitionColumn } = this.state;\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 if (document?.activeElement?.classList.contains('grid-cell-input-field')) {\n if (document.activeElement.classList.contains('error')) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid?.focus();\n }\n\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending(): 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 } = model;\n const dataMap: Record<\n string,\n { value: unknown; text: string | null; type: string }\n > = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n dataMap[name] = { value, text, type };\n }\n\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n handleAdvancedFilterChange(\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 = () => null\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\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) {\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 this.startLoading('Applying custom columns...');\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 gridRanges: GridRange[]\n ): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info(\n 'start table downloading',\n fileName,\n frozenTable,\n tableSubscription,\n gridRanges\n );\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(\n fileName,\n frozenTable,\n tableSubscription,\n gridRanges\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 visibleColumnXs,\n visibleColumnWidths,\n width,\n columnHeaderMaxDepth,\n } = metrics;\n const columnX = visibleColumnXs.get(shownColumnTooltip);\n const columnWidth = visibleColumnWidths.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 visibleColumnXs,\n visibleColumnWidths,\n width,\n } = metrics;\n const columnX = visibleColumnXs.get(visibleIndex);\n const columnWidth = visibleColumnWidths.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 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, visibleColumnXs, visibleColumnWidths } = metrics;\n const columnX = visibleColumnXs.get(focusedFilterBarColumn);\n const columnWidth = visibleColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - (theme.filterBarHeight ?? 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: fieldWidth,\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\">{loadingText}</div>\n );\n const loader = <DeephavenSpinner show={loadingSpinnerShown} />;\n const cancelButton = (\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames(\n 'btn btn-secondary btn-cancelable iris-grid-btn-cancel',\n {\n show: loadingSpinnerShown,\n }\n )}\n >\n Cancel\n </button>\n );\n\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div className=\"iris-grid-loading\" style={{ top: gridY }}>\n {loadingStatus}\n {loader}\n {cancelButton}\n </div>\n );\n }\n\n let columnTooltip: 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 visibleColumnXs,\n visibleColumnWidths,\n } = metrics;\n const { filterBarHeight } = theme;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n\n const columnX = visibleColumnXs.get(columnIndex);\n const columnWidth = visibleColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n 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 type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({ shownAdvancedFilter: columnIndex });\n }}\n onContextMenu={event => {\n this.grid?.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon\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 visibleColumnXs,\n visibleColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = visibleColumnXs.get(columnIndex);\n const columnWidth = visibleColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style: 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 >\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 );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n userColumnWidths={userColumnWidths}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n 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 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 && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\">\n {partitionTable && partitionColumn && (\n <IrisGridPartitionSelector\n table={partitionTable}\n getFormattedString={(\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 />\n )}\n {!isMenuShown && (\n <div className=\"grid-settings-button\">\n <button\n type=\"button\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\n className=\"btn btn-link btn-link-icon\"\n onClick={this.handleMenu}\n >\n <FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />\n </button>\n </div>\n )}\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"],"file":"IrisGrid.js"}
|