@deephaven/iris-grid 0.50.1-beta.5 → 0.51.1-alpha-theme-fix.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.
Files changed (123) hide show
  1. package/dist/AdvancedFilterCreator.js.map +1 -1
  2. package/dist/AdvancedFilterCreatorFilterItem.d.ts +2 -2
  3. package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.d.ts +4 -4
  6. package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  8. package/dist/AdvancedFilterCreatorSelectValueList.d.ts +4 -4
  9. package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
  10. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  11. package/dist/ColumnHeaderGroup.js.map +1 -1
  12. package/dist/ColumnStatistics.js.map +1 -1
  13. package/dist/CrossColumnSearch.js.map +1 -1
  14. package/dist/FilterInputField.js.map +1 -1
  15. package/dist/GotoRow.js.map +1 -1
  16. package/dist/IrisGrid.js +12 -0
  17. package/dist/IrisGrid.js.map +1 -1
  18. package/dist/IrisGridBottomBar.js.map +1 -1
  19. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  20. package/dist/IrisGridCellRendererUtils.js.map +1 -1
  21. package/dist/IrisGridCopyHandler.js.map +1 -1
  22. package/dist/IrisGridDataBarCellRenderer.js.map +1 -1
  23. package/dist/IrisGridIcons.js.map +1 -1
  24. package/dist/IrisGridMetricCalculator.js.map +1 -1
  25. package/dist/IrisGridModel.d.ts +2 -3
  26. package/dist/IrisGridModel.d.ts.map +1 -1
  27. package/dist/IrisGridModel.js +138 -0
  28. package/dist/IrisGridModel.js.map +1 -1
  29. package/dist/IrisGridModelFactory.js.map +1 -1
  30. package/dist/IrisGridModelUpdater.js.map +1 -1
  31. package/dist/IrisGridPartitionSelector.js.map +1 -1
  32. package/dist/IrisGridProxyModel.js.map +1 -1
  33. package/dist/IrisGridRenderer.js.map +1 -1
  34. package/dist/IrisGridTableModel.js.map +1 -1
  35. package/dist/IrisGridTableModelTemplate.js +9 -0
  36. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  37. package/dist/IrisGridTestUtils.js.map +1 -1
  38. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  39. package/dist/IrisGridTheme.js.map +1 -1
  40. package/dist/IrisGridTreeTableModel.js.map +1 -1
  41. package/dist/IrisGridUtils.js +3 -0
  42. package/dist/IrisGridUtils.js.map +1 -1
  43. package/dist/MissingKeyError.js.map +1 -1
  44. package/dist/PartitionSelectorSearch.js.map +1 -1
  45. package/dist/PendingDataBottomBar.js.map +1 -1
  46. package/dist/TableViewportUpdater.js +6 -1
  47. package/dist/TableViewportUpdater.js.map +1 -1
  48. package/dist/ToastBottomBar.js.map +1 -1
  49. package/dist/TreeTableViewportUpdater.js.map +1 -1
  50. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  51. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  52. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  53. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  54. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  55. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  56. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  57. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  58. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  59. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  60. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  61. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  62. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  63. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  64. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  65. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  66. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  67. package/dist/mousehandlers/PendingMouseHandler.js +5 -0
  68. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  69. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  70. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  71. package/dist/sidebar/ChartBuilder.js.map +1 -1
  72. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  73. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  74. package/dist/sidebar/DownloadServiceWorkerUtils.js.map +1 -1
  75. package/dist/sidebar/InputEditor.js.map +1 -1
  76. package/dist/sidebar/RollupRows.d.ts +4 -4
  77. package/dist/sidebar/RollupRows.d.ts.map +1 -1
  78. package/dist/sidebar/RollupRows.js.map +1 -1
  79. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  80. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  81. package/dist/sidebar/TableSaver.js +5 -0
  82. package/dist/sidebar/TableSaver.js.map +1 -1
  83. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  84. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  85. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  86. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  87. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  88. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  89. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  90. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  91. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  92. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  93. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  94. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  95. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  96. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  97. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  98. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  99. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  100. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  101. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  102. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  103. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.d.ts +4 -4
  104. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.d.ts.map +1 -1
  105. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  106. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts +7 -7
  107. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
  108. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  109. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
  110. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts +7 -5
  111. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts.map +1 -1
  112. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  113. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.d.ts +5 -3
  114. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.d.ts.map +1 -1
  115. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
  116. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  117. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts +5 -5
  118. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts.map +1 -1
  119. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  120. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  121. package/dist/sidebar/visibility-ordering-builder/sortable-tree/types.js.map +1 -1
  122. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  123. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGrid.js","names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","Log","FontAwesomeIcon","ContextActions","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Button","ContextActionUtils","Grid","GridRange","GridUtils","isEditableGridModel","isExpandableGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsClose","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","DateUtils","Formatter","FormatterUtils","TableUtils","assertNotNull","copyToClipboard","EMPTY_ARRAY","EMPTY_MAP","Pending","PromiseUtils","ValidationError","getOrThrow","Type","FilterType","throttle","debounce","clamp","getFormatColumns","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridRowTreeMouseHandler","IrisGridSortMouseHandler","IrisGridTokenMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","createDefaultIrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","DownloadServiceWorkerUtils","IrisGridUtils","CrossColumnSearch","IrisGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","log","module","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","UNFORMATTED_DATE_PATTERN","isEmptyConfig","advancedFilters","aggregationSettings","customColumns","quickFilters","reverseType","rollupConfig","searchFilter","selectDistinctColumns","sorts","size","length","REVERSE_TYPE","NONE","IrisGrid","constructor","props","column","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","handleAdvancedFilterChange","handleAdvancedFilterSortChange","handleAdvancedFilterDone","tableUtils","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","toggleGotoRowAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","showGotoRow","hasAdvancedSettings","optionItems","push","type","CHART_BUILDER","title","icon","VISIBILITY_ORDERING_BUILDER","CONDITIONAL_FORMATTING","CUSTOM_COLUMN_BUILDER","ROLLUP_ROWS","AGGREGATIONS","SELECT_DISTINCT","TABLE_EXPORTER","ADVANCED_SETTINGS","QUICK_FILTERS","subtitle","shortcut","getDisplayText","isOn","onChange","action","SEARCH_BAR","GOTO","metricCalculator","userColumnWidths","getHiddenColumns","Map","initialColumnWidths","columns","aggregationMap","forEach","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","name","newOperations","map","o","dh","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","getModelRollupConfig","getOperationMap","operationOrder","getOperationOrder","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","partitionFilters","getFiltersFromFilterMap","theme","isEditable","floatingRowCount","defaultTheme","rowFooterWidth","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","handleTooltipRef","Date","now","expandCellTooltipProps","expandTooltipDisplayValue","textAlign","isMacPlatform","linkHoverTooltipProps","linkHoverDisplayValue","input","gotoValue","debouncedSeekRow","seekRow","handleGotoRowOpened","handleGotoRowClosed","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleHeaderGroupsChanged","handleUpdate","handleViewChanged","handleFormatSelection","handleConditionalFormatCreate","handleConditionalFormatEdit","handleConditionalFormatsChange","handleConditionalFormatEditorSave","handleConditionalFormatEditorCancel","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleGotoRowSelectedRowNumberSubmit","focusRowInGrid","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadCompleted","handlePartitionAppend","handlePartitionChange","handlePartitionFetchAll","handlePartitionDone","handleColumnVisibilityChanged","handleColumnVisibilityReset","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","getColumnBoundingRect","handleGotoRowSelectedRowNumberChanged","handleGotoValueSelectedColumnNameChanged","handleGotoValueSelectedFilterChanged","handleGotoValueChanged","handleGotoValueSubmitted","grid","gridWrapper","lastLoadedConfig","pending","globalColumnFormats","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","renderer","tableSaver","crossColumnRef","createRef","isAnimating","filterInputRef","gotoRowRef","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","toggleGotoRow","GOTO_ROW","discardAction","pendingDataMap","discardPending","catch","error","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","isSelectingPartition","movedColumnsProp","movedRows","movedRowsProp","partition","partitionColumn","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","keyHandlers","mouseHandlers","initialMovedColumns","initialMovedRows","layoutHints","hiddenColumns","getColumnIndexByName","searchColumns","focusedFilterBarColumn","metrics","partitionTable","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","loadingSpinnerShown","shownColumnTooltip","conditionalFormatEditIndex","isTableDownloading","isReady","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","overflowText","isGotoShown","gotoRow","gotoRowError","gotoValueError","gotoValueSelectedColumnName","gotoValueSelectedFilter","eqIgnoreCase","initialColumnHeaderGroups","componentDidMount","find","c","isPartitionColumn","isFilterRequired","isValuesTableAvailable","loadPartitionsTable","initState","startListening","componentDidUpdate","prevProps","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","startLoading","applyInputFilters","resetColumnSelection","updateFormatterSettings","updateSorts","loadingScrimStartTime","loadingScrimFinishTime","window","requestAnimationFrame","currentTime","totalTime","Math","min","debug2","sendStateChange","componentWillUnmount","cancel","updateSearchFilter","loadingTimer","clearTimeout","handleDownloadProgressUpdate","animationFrame","cancelAnimationFrame","getValueForCell","columnIndex","rowIndex","rawValue","modelColumn","getModelColumn","modelRow","getModelRow","value","valueForCell","isDateType","i18n","DateTimeFormat","format","TimeZone","getTimeZone","timeZone","textForCell","modelColumns","modelRows","getTheme","getCachedTheme","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","makeQuickFilter","text","err","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","findIndex","columnName","columnType","delete","applyQuickFilter","trim","quickFilter","set","setAdvancedFilterMap","setAdvancedFilter","options","setQuickFilter","setFilterMap","filterMap","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","filterList","combinedText","combineFiltersFromList","removeQuickFilter","removeColumnFilter","current","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","forceUpdate","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","updateFormatter","updatedFormats","update","mergedColumnFormats","values","initFormatter","applyInputFiltersOnInit","inputFiltersWithValues","add","valuesTable","resolved","close","sort","desc","applySort","setViewport","data","getViewportData","rows","row","updatePartition","info","handleTableLoadError","isCharType","partitionText","displayString","partitionFilter","makeQuickFilterFromComponent","copyCell","String","e","copyRanges","ranges","includeHeaders","formatValues","getUserColumnWidths","boundedRanges","columnCount","rowCount","resetRanges","clearSelectedRanges","setViewState","top","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","stopLoading","rollback","canRollback","addEventListener","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","removeEventListener","focus","focusFilterBar","isFilterable","left","rightVisible","lastLeft","metricState","getMetricState","newLeft","getLastLeft","getVisibleWidth","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","isVisible","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","updateCanvas","onPartitionAppend","isCanceled","onError","showAllColumns","entries","columnWidth","toggleSort","addToExisting","isColumnSortable","currentSorts","toggleSortForColumn","sortColumn","direction","none","isAbs","reverse","isReversible","focusIndex","isTextType","isTableSearchAvailable","searchDisplayMode","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","cursorRow","cursorColumn","cellValue","convertValueToText","Error","containsGridCellInputField","document","activeElement","classList","contains","newPendingSavePromise","then","selectColumn","onColumnSelected","selectData","groupedColumns","dataMap","isExpandable","isRowExpandable","isGrouped","onDataSelected","index","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","onCreateChart","warn","setGridFocus","defocusInput","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","stopPropagation","newOptions","pop","option","event","customEvent","detail","selectionEndRow","bottomViewport","bottomNonFloating","onSelectionChanged","onChangeApplied","parseColumnHeaderGroups","groups","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","join","aggregation","AGGREGATION_EDIT","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","inputString","isBackwards","selectedColumnName","isSeekRowAvailable","selectedColumn","getColumnByName","searchFromRow","isContains","containsIgnoreCase","isIgnoreCase","columnDataType","dataType","CHAR","STRING","ValueType","DATETIME","startDate","parseDateRange","DECIMAL","INT","isBigDecimalType","isBigIntegerType","inputValue","parseInt","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","NUMBER","makeValue","setFocusRow","cancelDownload","FINISHED","CANCELED","deleteRanges","columnAllowedCursor","cursor","topOffset","irisGridState","gridState","onStateChange","gridRect","popperMargin","columnHeaderHeight","allColumnXs","allColumnWidths","width","columnHeaderMaxDepth","columnX","bottom","right","x","y","toJSON","rowNumber","rowInt","target","getColumnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","render","children","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","getCachedFilter","stateOverride","getCachedStateOverride","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridX","gridY","filterBarHeight","fieldWidth","fieldHeight","style","minWidth","isValid","advancedFilter","isBarFiltered","active","handleContextMenu","loadingElement","loadingStatus","show","columnTooltip","filterBar","visibleColumns","isFilterSet","isFilterVisible","element","hidden","advancedFilterMenus","xColumnHeader","xFilterBar","getAdvancedMenuOpenedHandler","positionFixed","getCachedAdvancedFilterMenuActions","getCachedOptionItems","getCachedHiddenColumns","openOptionsStack","handleConditionalFormatEditorUpdate","transitionSlowMs","stringName","getAlwaysFetchColumns","draggingColumn","range","getCachedPreviewFormatColumns","getModelTotalsConfig","getOverflowButtonTooltip","getExpandCellTooltip","getLinkHoverTooltip","transitionMidMs","columnSelectionValidator","columnNotAllowedCursor","onContextMenu","getServiceWorker","defaultDateTimeFormat","FULL_DATE_FORMAT","showTimeZone","showTSeparator","shape","defaultFormatString","string"],"sources":["../src/IrisGrid.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n Component,\n CSSProperties,\n ReactElement,\n ReactNode,\n} from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActions,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n ContextAction,\n PopperOptions,\n ReferenceObject,\n Button,\n ContextActionUtils,\n ResolvableContextAction,\n} from '@deephaven/components';\nimport {\n Grid,\n GridMetrics,\n GridMouseHandler,\n GridRange,\n GridRangeIndex,\n GridThemeType,\n GridUtils,\n KeyHandler,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n VisibleIndex,\n GridState,\n isEditableGridModel,\n BoundedAxisRange,\n isExpandableGridModel,\n} from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsClose,\n vsCloudDownload,\n vsEdit,\n vsFilter,\n vsMenu,\n vsReply,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport type {\n Column,\n ColumnGroup,\n CustomColumn,\n DateWrapper,\n dh as DhType,\n FilterCondition,\n Sort,\n Table,\n TableViewportSubscription,\n} from '@deephaven/jsapi-types';\nimport {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n FormattingRule,\n ReverseType,\n RowDataMap,\n SortDirection,\n DateTimeColumnFormatterOptions,\n TableColumnFormat,\n Settings,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n copyToClipboard,\n EMPTY_ARRAY,\n EMPTY_MAP,\n Pending,\n PromiseUtils,\n ValidationError,\n getOrThrow,\n} from '@deephaven/utils';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport {\n FormattingRule as SidebarFormattingRule,\n getFormatColumns,\n} from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler, { CopyOperation } from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridCellOverflowMouseHandler,\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridRowTreeMouseHandler,\n IrisGridSortMouseHandler,\n IrisGridTokenMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport { createDefaultIrisGridTheme, IrisGridThemeType } from './IrisGridTheme';\nimport ColumnStatistics from './ColumnStatistics';\nimport './IrisGrid.scss';\nimport AdvancedFilterCreator from './AdvancedFilterCreator';\nimport {\n Aggregations,\n AggregationEdit,\n AggregationUtils,\n ChartBuilder,\n CustomColumnBuilder,\n OptionType,\n RollupRows,\n TableCsvExporter,\n TableSaver,\n VisibilityOrderingBuilder,\n DownloadServiceWorkerUtils,\n} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu, {\n AdvancedSettingsMenuCallback,\n} from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\nimport ConditionalFormattingMenu from './sidebar/conditional-formatting/ConditionalFormattingMenu';\n\nimport ConditionalFormatEditor from './sidebar/conditional-formatting/ConditionalFormatEditor';\nimport IrisGridCellOverflowModal from './IrisGridCellOverflowModal';\nimport GotoRow, { GotoRowElement } from './GotoRow';\nimport {\n Aggregation,\n AggregationSettings,\n} from './sidebar/aggregations/Aggregations';\nimport { ChartBuilderSettings } from './sidebar/ChartBuilder';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { UIRollupConfig } from './sidebar/RollupRows';\nimport {\n ReadonlyAdvancedFilterMap,\n ColumnName,\n ReadonlyQuickFilterMap,\n ReadonlyAggregationMap,\n ReadonlyOperationMap,\n Action,\n OptionItem,\n UITotalsTableConfig,\n InputFilter,\n PendingDataMap,\n AdvancedFilterOptions,\n PendingDataErrorMap,\n QuickFilterMap,\n OperationMap,\n} from './CommonTypes';\nimport ColumnHeaderGroup from './ColumnHeaderGroup';\n\nconst log = Log.module('IrisGrid');\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SEEK_ROW_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false,\n});\n\nconst UNFORMATTED_DATE_PATTERN = `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z`;\n\nfunction isEmptyConfig({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n}: {\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n customColumns: readonly ColumnName[];\n quickFilters: ReadonlyQuickFilterMap;\n reverseType: ReverseType;\n rollupConfig?: UIRollupConfig;\n searchFilter?: FilterCondition;\n selectDistinctColumns: readonly ColumnName[];\n sorts: readonly Sort[];\n}): boolean {\n return (\n advancedFilters.size === 0 &&\n aggregationSettings.aggregations.length === 0 &&\n customColumns.length === 0 &&\n quickFilters.size === 0 &&\n reverseType === TableUtils.REVERSE_TYPE.NONE &&\n rollupConfig == null &&\n searchFilter == null &&\n selectDistinctColumns.length === 0 &&\n sorts.length === 0\n );\n}\nexport type FilterData = {\n operator: FilterTypeValue;\n text: string;\n value: unknown;\n startColumnIndex: number;\n};\n\nexport type FilterMap = Map<\n ColumnName,\n {\n columnType: string;\n filterList: FilterData[];\n }\n>;\n\nexport interface IrisGridContextMenuData {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow: GridRangeIndex;\n modelColumn: GridRangeIndex;\n}\n\nexport interface IrisGridProps {\n children: React.ReactNode;\n advancedFilters: ReadonlyAdvancedFilterMap;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n alwaysFetchColumns: readonly ColumnName[];\n isFilterBarShown: boolean;\n applyInputFiltersOnInit: boolean;\n conditionalFormats: readonly SidebarFormattingRule[];\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n inputFilters: readonly InputFilter[];\n customFilters: readonly FilterCondition[];\n model: IrisGridModel;\n onCreateChart: (settings: ChartBuilderSettings, model: IrisGridModel) => void;\n onColumnSelected: (column: Column) => void;\n onError: (error: unknown) => void;\n onDataSelected: (index: ModelIndex, map: Record<ColumnName, unknown>) => void;\n onStateChange: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPartitionAppend?: (partitionColumn: Column, value: string) => void;\n onAdvancedSettingsChange: AdvancedSettingsMenuCallback;\n partition: string | null;\n partitionColumn: Column | null;\n sorts: readonly Sort[];\n reverseType: ReverseType;\n quickFilters: ReadonlyQuickFilterMap | null;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n settings?: Settings;\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n onSelectionChanged: (gridRanges: readonly GridRange[]) => void;\n rollupConfig?: UIRollupConfig;\n aggregationSettings: AggregationSettings;\n\n isSelectingColumn: boolean;\n isSelectingPartition: boolean;\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator: (value: 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: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: (\n data: IrisGridContextMenuData\n ) => readonly ResolvableContextAction[];\n\n pendingDataMap?: PendingDataMap;\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n canCopy: boolean;\n canDownloadCsv: boolean;\n frozenColumns: readonly ColumnName[];\n\n // Theme override for IrisGridTheme\n theme: GridThemeType;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n}\n\nexport interface IrisGridState {\n isFilterBarShown: boolean;\n isSelectingPartition: boolean;\n focusedFilterBarColumn: number | null;\n metricCalculator: IrisGridMetricCalculator;\n metrics?: GridMetrics;\n keyHandlers: readonly KeyHandler[];\n mouseHandlers: readonly GridMouseHandler[];\n\n partition: string | null;\n partitionColumn: Column | null;\n partitionTable: Table | null;\n partitionFilters: readonly 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: ReadonlyQuickFilterMap;\n advancedFilters: ReadonlyAdvancedFilterMap;\n shownAdvancedFilter: number | null;\n hoverAdvancedFilter: number | null;\n\n sorts: readonly Sort[];\n reverseType: ReverseType;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n\n // selected range in table\n selectedRanges: readonly GridRange[];\n\n // Current ongoing copy operation\n copyOperation: CopyOperation | null;\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: string | null;\n loadingScrimProgress: number | null;\n loadingSpinnerShown: boolean;\n\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n\n shownColumnTooltip: number | null;\n\n formatter: Formatter;\n isMenuShown: boolean;\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n\n conditionalFormats: readonly SidebarFormattingRule[];\n conditionalFormatEditIndex: number | null;\n conditionalFormatPreview?: SidebarFormattingRule;\n\n // Column user is hovering over for selection\n hoverSelectColumn: GridRangeIndex;\n\n isTableDownloading: boolean;\n isReady: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number | null;\n\n showSearchBar: boolean;\n searchFilter?: FilterCondition;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n rollupConfig?: UIRollupConfig;\n rollupSelectedColumns: readonly ColumnName[];\n aggregationSettings: AggregationSettings;\n selectedAggregation: Aggregation | null;\n\n openOptions: readonly OptionItem[];\n\n pendingRowCount: number;\n pendingDataMap: PendingDataMap;\n pendingDataErrors: PendingDataErrorMap;\n pendingSavePromise: Promise<void> | null;\n pendingSaveError: string | null;\n\n toastMessage: JSX.Element | null;\n frozenColumns: readonly ColumnName[];\n showOverflowModal: boolean;\n overflowText: string;\n overflowButtonTooltipProps: CSSProperties | null;\n expandCellTooltipProps: CSSProperties | null;\n expandTooltipDisplayValue: string;\n linkHoverTooltipProps: CSSProperties | null;\n linkHoverDisplayValue: string;\n\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n isGotoShown: boolean;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValueSelectedFilter: FilterTypeValue;\n gotoValue: string;\n\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n}\n\nexport class IrisGrid extends Component<IrisGridProps, IrisGridState> {\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static defaultProps = {\n children: null,\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: (): void => undefined,\n onDataSelected: (): void => undefined,\n onError: (): void => undefined,\n onStateChange: (): void => undefined,\n onAdvancedSettingsChange: (): void => undefined,\n partition: null,\n partitionColumn: null,\n quickFilters: EMPTY_MAP,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: (): void => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnSelectionValidator: null,\n columnAllowedCursor: null,\n columnNotAllowedCursor: null,\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: (): readonly ResolvableContextAction[] => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n formatter: EMPTY_ARRAY,\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: null,\n canToggleSearch: true,\n };\n\n constructor(props: IrisGridProps) {\n super(props);\n\n this.handleAdvancedFilterChange =\n this.handleAdvancedFilterChange.bind(this);\n this.handleAdvancedFilterSortChange =\n this.handleAdvancedFilterSortChange.bind(this);\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleGotoRowOpened = this.handleGotoRowOpened.bind(this);\n this.handleGotoRowClosed = this.handleGotoRowClosed.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleHeaderGroupsChanged = this.handleHeaderGroupsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n this.handleConditionalFormatCreate =\n this.handleConditionalFormatCreate.bind(this);\n this.handleConditionalFormatEdit =\n this.handleConditionalFormatEdit.bind(this);\n this.handleConditionalFormatsChange =\n this.handleConditionalFormatsChange.bind(this);\n this.handleConditionalFormatEditorSave =\n this.handleConditionalFormatEditorSave.bind(this);\n this.handleConditionalFormatEditorCancel =\n this.handleConditionalFormatEditorCancel.bind(this);\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged =\n this.handleCustomColumnsChanged.bind(this);\n this.handleSelectDistinctChanged =\n this.handleSelectDistinctChanged.bind(this);\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handlePendingCommitClicked =\n this.handlePendingCommitClicked.bind(this);\n this.handlePendingDiscardClicked =\n this.handlePendingDiscardClicked.bind(this);\n this.handleGotoRowSelectedRowNumberSubmit =\n this.handleGotoRowSelectedRowNumberSubmit.bind(this);\n this.focusRowInGrid = this.focusRowInGrid.bind(this);\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.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 =\n this.handleColumnVisibilityChanged.bind(this);\n this.handleColumnVisibilityReset =\n this.handleColumnVisibilityReset.bind(this);\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.bind(this);\n this.handleGotoRowSelectedRowNumberChanged =\n this.handleGotoRowSelectedRowNumberChanged.bind(this);\n this.handleGotoValueSelectedColumnNameChanged =\n this.handleGotoValueSelectedColumnNameChanged.bind(this);\n this.handleGotoValueSelectedFilterChanged =\n this.handleGotoValueSelectedFilterChanged.bind(this);\n this.handleGotoValueChanged = this.handleGotoValueChanged.bind(this);\n this.handleGotoValueSubmitted = this.handleGotoValueSubmitted.bind(this);\n\n this.grid = null;\n this.gridWrapper = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = EMPTY_ARRAY;\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n\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.gotoRowRef = React.createRef();\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n\n this.toggleGotoRowAction = {\n action: () => this.toggleGotoRow(),\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n };\n\n this.discardAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0\n ) {\n this.discardPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD,\n };\n this.commitAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0 &&\n model.pendingDataErrors.size === 0\n ) {\n this.commitPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT,\n };\n this.contextActions = [\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const {\n aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n partition,\n partitionColumn,\n rollupConfig,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups,\n } = props;\n\n const keyHandlers: KeyHandler[] = [\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n }\n const { dh } = model;\n const mouseHandlers = [\n new IrisGridCellOverflowMouseHandler(this),\n new IrisGridRowTreeMouseHandler(this),\n new IrisGridTokenMouseHandler(this),\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this, dh),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n ];\n\n const movedColumns =\n movedColumnsProp.length > 0\n ? movedColumnsProp\n : model.initialMovedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.initialMovedRows;\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns,\n initialColumnWidths: new Map(\n model?.layoutHints?.hiddenColumns?.map(name => [\n model.getColumnIndexByName(name),\n 0,\n ])\n ),\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.tableUtils = new TableUtils(dh);\n\n this.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(dh),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n\n conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap: pendingDataMap ?? new Map(),\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n\n toastMessage: null,\n frozenColumns,\n showOverflowModal: false,\n overflowText: '',\n overflowButtonTooltipProps: null,\n expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n linkHoverTooltipProps: null,\n linkHoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n\n gotoValueSelectedColumnName: model.columns[0]?.name ?? '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n columnHeaderGroups: columnHeaderGroups ?? model.initialColumnHeaderGroups,\n };\n }\n\n componentDidMount(): void {\n const { partitionColumn, model } = this.props;\n const column =\n partitionColumn ?? model.columns.find(c => c.isPartitionColumn);\n if (\n model.isFilterRequired &&\n model.isValuesTableAvailable &&\n column != null\n ) {\n this.loadPartitionsTable(column);\n } else {\n this.initState();\n }\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps: IrisGridProps): void {\n const {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n sorts,\n } = this.props;\n\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n\n const changedInputFilters =\n inputFilters !== prevProps.inputFilters\n ? inputFilters.filter(\n inputFilter => !prevProps.inputFilters.includes(inputFilter)\n )\n : [];\n if (changedInputFilters.length > 0) {\n const { advancedSettings } = this.props;\n const replaceExistingFilters =\n advancedSettings.get(\n AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.startLoading('Filtering...', true);\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', true);\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n const { loadingScrimStartTime, loadingScrimFinishTime } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n const now = Date.now();\n const currentTime = now - loadingScrimStartTime;\n const totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n const loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n }\n\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n\n return { loadingScrimProgress };\n });\n });\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount(): void {\n const { model } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n }\n\n grid: Grid | null;\n\n gridWrapper: HTMLDivElement | null;\n\n lastFocusedFilterBarColumn?: number;\n\n lastLoadedConfig: Pick<\n IrisGridState,\n | 'advancedFilters'\n | 'aggregationSettings'\n | 'customColumns'\n | 'quickFilters'\n | 'reverseType'\n | 'rollupConfig'\n | 'searchFilter'\n | 'selectDistinctColumns'\n | 'sorts'\n > | null;\n\n tooltip?: Tooltip;\n\n pending: Pending;\n\n globalColumnFormats?: readonly 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 gotoRowRef: React.RefObject<GotoRowElement>;\n\n toggleFilterBarAction: Action;\n\n toggleSearchBarAction: Action;\n\n toggleGotoRowAction: Action;\n\n discardAction: Action;\n\n commitAction: Action;\n\n contextActions: ContextAction[];\n\n tableUtils: TableUtils;\n\n getAdvancedMenuOpenedHandler = memoize(\n (column: ModelIndex) => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model: IrisGridModel,\n column: Column,\n advancedFilterOptions: AdvancedFilterOptions | undefined,\n sortDirection: SortDirection | undefined,\n formatter: Formatter\n ) => (\n <AdvancedFilterCreator\n model={model}\n column={column}\n onFilterChange={this.handleAdvancedFilterChange}\n onSortChange={this.handleAdvancedFilterSortChange}\n onDone={this.handleAdvancedFilterDone}\n options={advancedFilterOptions}\n sortDirection={sortDirection}\n formatter={formatter}\n tableUtils={this.tableUtils}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable: boolean,\n isCustomColumnsAvailable: boolean,\n isFormatColumnsAvailable: boolean,\n isRollupAvailable: boolean,\n isTotalsAvailable: boolean,\n isSelectDistinctAvailable: boolean,\n isExportAvailable: boolean,\n toggleFilterBarAction: Action,\n toggleSearchBarAction: Action,\n toggleGotoRowAction: Action,\n isFilterBarShown: boolean,\n showSearchBar: boolean,\n canDownloadCsv: boolean,\n canToggleSearch: boolean,\n showGotoRow: boolean,\n hasAdvancedSettings: boolean\n ): readonly OptionItem[] => {\n const optionItems: OptionItem[] = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp,\n });\n }\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Organize Columns',\n icon: dhEye,\n });\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Custom Columns',\n icon: vsSplitHorizontal,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n });\n }\n if (hasAdvancedSettings) {\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\n }\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n });\n }\n optionItems.push({\n type: OptionType.GOTO,\n title: 'Go to',\n subtitle: toggleGotoRowAction.shortcut.getDisplayText(),\n icon: vsReply,\n isOn: showGotoRow,\n onChange: toggleGotoRowAction.action,\n });\n\n return Object.freeze(optionItems);\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(\n (\n metricCalculator: IrisGridMetricCalculator,\n userColumnWidths: ModelSizeMap\n ): readonly ModelIndex[] =>\n IrisGridUtils.getHiddenColumns(\n new Map([...metricCalculator.initialColumnWidths, ...userColumnWidths])\n ),\n { max: 1 }\n );\n\n getAggregationMap = memoize(\n (\n columns: readonly Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyAggregationMap => {\n const aggregationMap = {} as Record<AggregationOperation, string[]>;\n aggregations.forEach(({ operation, selected, invert }) => {\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n );\n });\n return aggregationMap;\n }\n );\n\n getOperationMap = memoize(\n (\n columns: readonly Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyOperationMap => {\n const operationMap: OperationMap = {};\n aggregations\n .filter(\n (a: Aggregation) => !AggregationUtils.isRollupOperation(a.operation)\n )\n .forEach(({ operation, selected, invert }) => {\n AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n ).forEach(name => {\n const newOperations = [...(operationMap[name] ?? []), operation];\n operationMap[name] = Object.freeze(newOperations);\n });\n });\n return operationMap;\n }\n );\n\n getOperationOrder = memoize(\n (aggregations: readonly Aggregation[]): AggregationOperation[] =>\n aggregations\n .map((a: Aggregation) => a.operation)\n .filter(\n (o: AggregationOperation) => !AggregationUtils.isRollupOperation(o)\n )\n );\n\n getCachedFormatColumns = memoize(\n (\n dh: DhType,\n columns: readonly Column[],\n rules: readonly SidebarFormattingRule[]\n ) => getFormatColumns(dh, columns, rules)\n );\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n getCachedPreviewFormatColumns = memoize(\n (\n dh: DhType,\n columns: readonly Column[],\n rulesParam: readonly 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(dh, columns, rules);\n }\n\n return this.getCachedFormatColumns(dh, columns, rulesParam);\n }\n );\n\n getModelRollupConfig = memoize(\n (\n originalColumns: readonly Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n )\n );\n\n getModelTotalsConfig = memoize(\n (\n columns: readonly Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): UITotalsTableConfig | null => {\n const { aggregations, showOnTop } = aggregationSettings;\n // If we've got rollups, then aggregations are applied as part of that...\n if (\n (config?.columns?.length ?? 0) > 0 ||\n (aggregations?.length ?? 0) === 0\n ) {\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return { operationMap, operationOrder, showOnTop };\n }\n );\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n sorts: readonly Sort[],\n reverseType: ReverseType,\n rollupConfig: UIRollupConfig | undefined,\n isMenuShown: boolean\n ) => ({\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters: readonly FilterCondition[],\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n partitionFilters: readonly FilterCondition[],\n searchFilter: FilterCondition | undefined\n ) => [\n ...(customFilters ?? []),\n ...(partitionFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter !== undefined ? [searchFilter] : []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n theme: GridThemeType | null,\n isEditable: boolean,\n floatingRowCount: number\n ): Partial<IrisGridThemeType> => {\n const defaultTheme = createDefaultIrisGridTheme();\n\n // We only show the row footers when we have floating rows for aggregations\n const rowFooterWidth =\n floatingRowCount > 0\n ? theme?.rowFooterWidth ?? defaultTheme.rowFooterWidth\n : 0;\n\n return {\n ...defaultTheme,\n ...theme,\n autoSelectRow: !isEditable,\n rowFooterWidth,\n };\n },\n { max: 1 }\n );\n\n getValueForCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): string | unknown {\n const { model } = this.props;\n const { dh } = model;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n const { formatter } = model;\n return dh.i18n.DateTimeFormat.format(\n UNFORMATTED_DATE_PATTERN,\n value as number | Date | DateWrapper,\n dh.i18n.TimeZone.getTimeZone(formatter.timeZone)\n );\n }\n return value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n\n getModelColumn(columnIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelColumns } = metrics;\n if (modelColumns == null) {\n return null;\n }\n\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n\n getModelRow(rowIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelRows } = metrics;\n if (modelRows == null) {\n return null;\n }\n\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n\n getTheme(): Partial<IrisGridThemeType> {\n const { model, theme } = this.props;\n return this.getCachedTheme(\n theme,\n (isEditableGridModel(model) && model.isEditable) ?? false,\n model.floatingTopRowCount + model.floatingBottomRowCount\n );\n }\n\n getVisibleColumn(modelIndex: ModelIndex): VisibleIndex {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n makeQuickFilter(\n column: Column,\n text: string,\n timeZone: string\n ): FilterCondition | null {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(\n inputFilters: InputFilter[],\n replaceExisting = false\n ): void {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const newAdvancedFilters = replaceExisting\n ? new Map()\n : new Map(advancedFilters);\n const newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n\n let isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(({ name, type, value }) => {\n const modelIndex = model.columns.findIndex(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged =\n this.applyQuickFilter(modelIndex, value, newQuickFilters) ||\n isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(\n modelIndex: ModelIndex,\n value: string | null,\n quickFilters: QuickFilterMap\n ): boolean {\n const { model } = this.props;\n const { formatter } = model;\n const column = model.columns[modelIndex];\n\n if (value != null && `${value}`.trim().length > 0) {\n const quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n const { text } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: this.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilterMap(advancedFilters: ReadonlyAdvancedFilterMap): void {\n this.setState({ advancedFilters });\n }\n\n setAdvancedFilter(\n modelIndex: ModelIndex,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(\n modelIndex: ModelIndex,\n filter: FilterCondition | null,\n text: string\n ): void {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n return { quickFilters: newQuickFilters };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param filterMap Filter map\n */\n setFilterMap(filterMap: FilterMap): void {\n log.debug('setFilterMap', filterMap);\n\n const { advancedSettings } = this.props;\n const clearFiltersOnLinkerFilterUpdate =\n advancedSettings.get(\n AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n\n const { model } = this.props;\n filterMap.forEach(({ columnType, filterList }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const combinedText = IrisGridUtils.combineFiltersFromList(\n columnType,\n filterList\n );\n if (combinedText.length === 0) {\n this.removeQuickFilter(columnIndex);\n } else {\n const { formatter } = model;\n this.setQuickFilter(\n columnIndex,\n this.makeQuickFilter(column, combinedText, formatter.timeZone),\n `${combinedText}`\n );\n }\n });\n }\n\n removeColumnFilter(modelColumn: ModelIndex): void {\n this.startLoading('Filtering...', true);\n\n this.setState(\n ({ advancedFilters, quickFilters }: Partial<IrisGridState>) => {\n const newAdvancedFilters = advancedFilters\n ? new Map(advancedFilters)\n : new Map();\n const newQuickFilters = quickFilters\n ? new Map(quickFilters)\n : new Map();\n newQuickFilters.delete(modelColumn);\n newAdvancedFilters.delete(modelColumn);\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n }\n );\n }\n\n removeQuickFilter(modelColumn: ModelIndex): void {\n this.startLoading('Clearing Filter...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n\n return { quickFilters: newQuickFilters };\n });\n }\n\n clearAllFilters(): void {\n log.debug('Clearing all filters');\n\n const { advancedFilters, quickFilters, searchFilter } = this.state;\n if (\n quickFilters.size === 0 &&\n advancedFilters.size === 0 &&\n searchFilter === null\n ) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n\n this.startLoading('Clearing Filters...', true);\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearCrossColumSearch(): void {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearGridInputField(): void {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters(): void {\n log.debug('Rebuilding filters');\n\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns, formatter } = model;\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = this.tableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: this.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n\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 =\n FormatterUtils.getDateTimeFormatterOptions(settings);\n\n const defaultDecimalFormatOptions =\n settings?.defaultDecimalFormatOptions ?? {};\n const defaultIntegerFormatOptions =\n settings?.defaultIntegerFormatOptions ?? {};\n const truncateNumbersWithPound =\n settings?.truncateNumbersWithPound ?? false;\n\n const 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: readonly ColumnName[],\n columns: readonly Column[],\n movedColumns: readonly MoveOperation[],\n floatingLeftColumnCount: number,\n floatingRightColumnCount: number,\n draggingRange?: BoundedAxisRange\n ): readonly ColumnName[] => {\n const floatingColumns: ColumnName[] = [];\n\n for (let i = 0; i < floatingLeftColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n\n for (let i = 0; i < floatingRightColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(columns.length - 1 - i, movedColumns)]\n .name\n );\n }\n\n if (draggingRange) {\n for (let i = draggingRange[0]; i <= draggingRange[1]; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n }\n\n const columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);\n\n return Object.freeze([...columnSet]);\n }\n );\n\n updateFormatter(\n updatedFormats: { customColumnFormatMap?: Map<ColumnName, FormattingRule> },\n forceUpdate = true\n ): void {\n const { customColumnFormatMap } = this.state;\n const { model } = this.props;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...(this.globalColumnFormats ?? []),\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n model.dh,\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound\n );\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 model.dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverseType,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(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 if (TableUtils.isCharType(partitionColumn.type) && partition === '') {\n return;\n }\n\n const { model } = this.props;\n\n const partitionText = TableUtils.isCharType(partitionColumn.type)\n ? model.displayString(\n partition,\n partitionColumn.type,\n partitionColumn.name\n )\n : partition;\n const partitionFilter = this.tableUtils.makeQuickFilterFromComponent(\n partitionColumn,\n partitionText\n );\n if (partitionFilter === null) {\n return;\n }\n\n const partitionFilters = [partitionFilter];\n this.setState({\n partition,\n partitionFilters,\n });\n }\n\n copyCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): void {\n const { canCopy } = this.props;\n if (canCopy) {\n const value = String(\n this.getValueForCell(columnIndex, rowIndex, rawValue)\n );\n copyToClipboard(value).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(\n ranges: readonly GridRange[],\n includeHeaders = false,\n formatValues = true,\n error?: string\n ): void {\n const { model, canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n\n if (canCopy) {\n const copyOperation = {\n ranges: GridRange.boundedRanges(\n ranges,\n model.columnCount,\n model.rowCount\n ),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error,\n };\n\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\n }\n\n startLoading(loadingText: string, resetRanges = false): void {\n this.setState({ loadingText });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\n const height = this.gridWrapper?.getBoundingClientRect().height ?? 0;\n const scrimTransitionTime = Math.max(\n minScrimTransitionTime,\n Math.min(height / 2, maxScrimTransitionTime)\n );\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime =\n this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0,\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true,\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n\n stopLoading(): void {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n });\n\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback(): void {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.lastLoadedConfig;\n\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n customColumns: [],\n quickFilters: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n rollupConfig: undefined,\n selectDistinctColumns: [],\n sorts: [],\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback(): boolean {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n\n startListening(model: IrisGridModel): void {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n stopListening(model: IrisGridModel): void {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n focus(): void {\n this.grid?.focus();\n }\n\n focusFilterBar(column: VisibleIndex): void {\n const { movedColumns } = this.state;\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = GridUtils.getModelIndex(column, movedColumns);\n\n if (\n column == null ||\n column < 0 ||\n columnCount <= column ||\n !model.isFilterable(modelColumn)\n ) {\n this.setState({ focusedFilterBarColumn: null });\n return;\n }\n\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n const { left, rightVisible, lastLeft } = metrics;\n if (column < left) {\n this.grid?.setViewState({ left: column }, true);\n } else if (rightVisible < column) {\n const metricState = this.grid?.getMetricState();\n assertNotNull(metricState);\n const newLeft = metricCalculator.getLastLeft(\n metricState,\n column,\n metricCalculator.getVisibleWidth(metricState)\n );\n this.grid?.setViewState(\n { left: Math.min(newLeft, lastLeft), leftOffset: 0 },\n true\n );\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex: VisibleIndex): void {\n const { metricCalculator, movedColumns } = this.state;\n metricCalculator.setColumnWidth(\n GridUtils.getModelIndex(columnVisibleIndex, movedColumns),\n 0\n );\n\n this.grid?.forceUpdate();\n }\n\n freezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('freezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.add(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size - 1,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n unFreezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('unfreezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.delete(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size + model.frontColumns.length,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n handleColumnVisibilityChanged(\n modelIndexes: readonly ModelIndex[],\n isVisible: boolean\n ): void {\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n const defaultWidth =\n metricCalculator.initialColumnWidths.get(modelIndex);\n const calculatedWidth = getOrThrow(\n metrics.calculatedColumnWidths,\n modelIndex\n );\n\n if (defaultWidth !== calculatedWidth) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleColumnVisibilityReset(): void {\n const { metricCalculator, metrics } = this.state;\n const { model } = this.props;\n assertNotNull(metrics);\n for (let i = 0; i < metrics.columnCount; i += 1) {\n metricCalculator.resetColumnWidth(i);\n }\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: model.layoutHints?.frozenColumns ?? [],\n });\n }\n\n handleCrossColumnSearch(\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean\n ): void {\n const { model } = this.props;\n this.startLoading('Searching...');\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter = debounce(\n (\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n columns: readonly Column[],\n invertSearchColumns: boolean\n ): void => {\n const { model } = this.props;\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n },\n SET_FILTER_DEBOUNCE\n );\n\n handleAnimationLoop(): void {\n this.grid?.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart(): void {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd(): void {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionAppend(value: string): void {\n const { onPartitionAppend } = this.props;\n const { partitionColumn } = this.state;\n if (partitionColumn == null) {\n return;\n }\n onPartitionAppend?.(partitionColumn, value);\n }\n\n handlePartitionChange(partition: string): void {\n const { partitionColumn } = this.state;\n if (partitionColumn == null) {\n return;\n }\n this.updatePartition(partition, partitionColumn);\n }\n\n handlePartitionFetchAll(): void {\n this.setState({\n partitionFilters: [],\n isSelectingPartition: false,\n });\n }\n\n handlePartitionDone(): void {\n this.setState({ isSelectingPartition: false });\n }\n\n handleTableLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error(error);\n\n const { onError } = this.props;\n onError(error);\n }\n\n showAllColumns(): void {\n const { metricCalculator } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const entries = [...userColumnWidths.entries()];\n for (let i = 0; i < entries.length; i += 1) {\n const [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n this.grid?.forceUpdate();\n }\n\n toggleSort(columnIndex: VisibleIndex, addToExisting: boolean): void {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n if (model.isColumnSortable(columnIndex)) {\n const { sorts: currentSorts } = this.state;\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.columns,\n modelColumn,\n addToExisting\n );\n\n this.updateSorts(sorts);\n } else {\n log.debug('Column type was not sortable', model.columns[columnIndex]);\n }\n }\n\n updateSorts(sorts: readonly Sort[]): void {\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n sortColumn(\n modelColumn: ModelIndex,\n direction: SortDirection = TableUtils.sortDirection.none,\n isAbs = false,\n addToExisting = false\n ): void {\n assertNotNull(modelColumn);\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.sort,\n model.columns,\n modelColumn,\n direction,\n isAbs,\n addToExisting\n );\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n reverse(reverseType: ReverseType): void {\n this.startLoading('Reversing...');\n this.setState({ reverseType });\n this.grid?.forceUpdate();\n }\n\n isReversible(): boolean {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn): void {\n let { isFilterBarShown } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({ isFilterBarShown });\n\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n let columnIndex = 0;\n const { model } = this.props;\n const { columnCount } = model;\n for (let i = 0; i < columnCount; i += 1) {\n const modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column != null && TableUtils.isTextType(column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n this.grid?.focus();\n }\n }\n\n isTableSearchAvailable(): boolean {\n const { model, canToggleSearch } = this.props;\n const { dh } = model;\n const searchDisplayMode = model?.layoutHints?.searchDisplayMode;\n\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_HIDE) {\n return false;\n }\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_SHOW) {\n return true;\n }\n\n return canToggleSearch;\n }\n\n toggleSearchBar(): void {\n const { showSearchBar } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n\n const update = !showSearchBar;\n this.setState(\n {\n showSearchBar: update,\n },\n () => {\n if (update && this.crossColumnRef?.current) {\n this.crossColumnRef?.current.focus();\n } else {\n this.grid?.focus();\n }\n }\n );\n }\n\n toggleGotoRow(row = '', value = '', columnName = ''): void {\n const { isGotoShown } = this.state;\n if (row || value) {\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n });\n this.focusRowInGrid(row);\n this.gotoRowRef.current?.focus();\n return;\n }\n\n const cursorRow = this.grid?.state.cursorRow;\n const cursorColumn = this.grid?.state.cursorColumn;\n\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n });\n return;\n }\n // if a row is selected\n const { model } = this.props;\n const { name, type } = model.columns[cursorColumn];\n\n const cellValue = model.valueForCell(cursorColumn, cursorRow);\n const text = IrisGridUtils.convertValueToText(cellValue, type);\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: `${cursorRow + 1}`,\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n });\n }\n\n async commitPending(): Promise<void> {\n const { model } = this.props;\n if (!isEditableGridModel(model) || !model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n\n const containsGridCellInputField =\n document?.activeElement?.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n if (\n document.activeElement != null &&\n document.activeElement.classList.contains('error')\n ) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid?.focus();\n }\n\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending(): Promise<void> {\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n\n this.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map(),\n });\n }\n\n /**\n * Select the passed in column and notify listener\n * @param column The column in this table to link\n */\n selectColumn(column: Column): void {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Select all the data for a given row and notify listener\n */\n selectData(columnIndex: ModelIndex, rowIndex: ModelIndex): void {\n const { model } = this.props;\n const { columns, groupedColumns } = model;\n const dataMap: RowDataMap = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n const visibleIndex = this.getVisibleColumn(i);\n const isExpandable =\n isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n const isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex,\n };\n }\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n handleAdvancedFilterChange(\n column: Column,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n const { model } = this.props;\n const index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n\n handleAdvancedFilterSortChange(\n column: Column,\n direction: SortDirection,\n addToExisting = false\n ): void {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const columnName = model.columns[columnIndex].name;\n const oldSort = TableUtils.getSortForColumn(model.sort, columnName);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnName,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.startLoading('Sorting...');\n this.setState({ sorts });\n\n this.grid?.forceUpdate();\n }\n\n handleAdvancedFilterDone(): void {\n this.grid?.focus();\n }\n\n handleAdvancedMenuOpened(column: GridRangeIndex): void {\n this.setState({ shownAdvancedFilter: column });\n }\n\n handleGotoRowOpened(): void {\n this.setState({ isGotoShown: true });\n }\n\n handleGotoRowClosed(): void {\n this.setState({ isGotoShown: false });\n }\n\n handleAdvancedMenuClosed(columnIndex: number): void {\n const { focusedFilterBarColumn, isFilterBarShown } = this.state;\n if (\n isFilterBarShown &&\n focusedFilterBarColumn === columnIndex &&\n this.filterInputRef?.current !== null\n ) {\n this.filterInputRef?.current.focus();\n this.setState({ shownAdvancedFilter: null });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null,\n });\n }\n }\n\n handleCancel(): void {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange(): void {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings: ChartBuilderSettings): void {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model);\n }\n\n handleGridError(error?: Error): void {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value: string): void {\n this.startLoading('Filtering...', true);\n\n this.setState(({ focusedFilterBarColumn, quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n return { quickFilters: newQuickFilters };\n });\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true): void {\n if (setGridFocus) {\n this.grid?.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward: boolean): void {\n const { focusedFilterBarColumn } = this.state;\n assertNotNull(focusedFilterBarColumn);\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(\n modelIndex: ModelIndex,\n selectedFormat: TableColumnFormat | null\n ): void {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n const { customColumnFormatMap: prevCustomColumnFormatMap } = this.state;\n const customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n\n if (selectedFormat != null) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n assertNotNull(normalizedType);\n const columnFormattingRule = Formatter.makeColumnFormattingRule(\n normalizedType,\n column.name,\n selectedFormat\n );\n\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n\n this.updateFormatter({ customColumnFormatMap });\n }\n\n handleMenu(e: React.MouseEvent<HTMLButtonElement>): void {\n e.stopPropagation();\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose(): void {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack(): void {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option: OptionItem): void {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event: Event): void {\n const customEvent = event as CustomEvent;\n log.error('request failed:', customEvent.detail);\n this.stopLoading();\n if (this.canRollback()) {\n this.startLoading('Rolling back changes...', true);\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${customEvent.detail}`));\n }\n }\n\n handleUpdate(): void {\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.state;\n\n const config = {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n };\n\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid?.forceUpdate();\n this.stopLoading();\n }\n\n handleViewChanged(metrics?: GridMetrics): void {\n const { model } = this.props;\n const { selectionEndRow = 0 } = this.grid?.state ?? {};\n let pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n const { bottomViewport } = metrics;\n\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n const bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(\n 0,\n bottomViewport -\n (model.rowCount - model.pendingRowCount) -\n model.floatingTopRowCount -\n model.floatingBottomRowCount -\n 1\n );\n }\n }\n\n this.setState({ metrics, pendingRowCount });\n }\n\n handleSelectionChanged(selectedRanges?: readonly GridRange[]): void {\n assertNotNull(selectedRanges);\n const { onSelectionChanged } = this.props;\n const { copyOperation } = this.state;\n this.setState({ selectedRanges });\n if (copyOperation != null) {\n this.setState({ copyOperation: null });\n }\n if (this.grid?.state.cursorRow != null) {\n this.setState({ gotoRow: `${this.grid.state.cursorRow + 1}` });\n }\n onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(\n movedColumns: readonly MoveOperation[],\n onChangeApplied?: () => void\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleHeaderGroupsChanged(columnHeaderGroups: readonly ColumnGroup[]): void {\n const { model } = this.props;\n this.setState(\n {\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(\n model,\n columnHeaderGroups\n ).groups,\n },\n () => this.grid?.forceUpdate()\n );\n }\n\n handleTooltipRef(tooltip: Tooltip): void {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleConditionalFormatsChange(\n conditionalFormats: readonly SidebarFormattingRule[]\n ): void {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({ conditionalFormats });\n }\n\n handleConditionalFormatCreate(): void {\n log.debug('Create new conditional format');\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Create Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined,\n });\n }\n\n handleConditionalFormatEdit(index: number): void {\n log.debug('Edit conditional format', index);\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Edit Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: { ...conditionalFormats[index] },\n });\n }\n\n // Apply live changes\n handleConditionalFormatEditorUpdate = debounce(\n (conditionalFormatPreview?: SidebarFormattingRule): void => {\n this.setState({ conditionalFormatPreview });\n },\n SET_CONDITIONAL_FORMAT_DEBOUNCE\n );\n\n handleConditionalFormatEditorSave(config: SidebarFormattingRule): void {\n log.debug('Save conditional format changes', config);\n this.setState(\n state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n const conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return { conditionalFormats };\n },\n () => {\n this.handleMenuBack();\n }\n );\n }\n\n handleConditionalFormatEditorCancel(): void {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({ conditionalFormatEditIndex: null });\n }\n\n handleUpdateCustomColumns(customColumns: readonly string[]): void {\n log.info(`handleUpdateCustomColumns:`, customColumns);\n\n const { model } = this.props;\n const {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns,\n } = this.state;\n\n const { columns } = model;\n const oldCustomColumns = model.customColumns.map(\n customColumn => `${customColumn}`\n );\n\n const removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(\n oldCustomColumns,\n customColumns\n );\n if (removedColumnNames.length > 0) {\n const newSorts = IrisGridUtils.removeSortsInColumns(\n sorts,\n removedColumnNames\n );\n const newQuickFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n quickFilters,\n removedColumnNames\n );\n const newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n advancedFilters,\n removedColumnNames\n );\n const newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n );\n const newSelectDistinctColumns =\n IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts.length) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({ sorts: newSorts });\n }\n if (\n newQuickFilters.size !== quickFilters.size ||\n newAdvancedFilters.size !== advancedFilters.size\n ) {\n log.debug(`removing filters from removed custom columns...`);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\n `change moved columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ movedColumns: newMovedColumns });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\n `change selectDistinct columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ selectDistinctColumns: newSelectDistinctColumns });\n }\n }\n\n this.setState({ customColumns });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n\n handleCustomColumnsChanged(): void {\n log.debug('custom columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.stopLoading();\n this.grid?.forceUpdate();\n } else {\n this.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 frozenColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n selectDistinctColumns: [],\n });\n }\n\n handleSelectDistinctChanged(columnNames: readonly ColumnName[]): void {\n log.debug('SelectDistinct change', columnNames);\n\n this.resetGridViewState();\n\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Selecting distinct values in ${\n columnNames.length > 0 ? columnNames.join(', ') : ''\n }...`\n );\n\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n });\n }\n\n handleDownloadTableStart(): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTableStart for user without download CSV permission.'\n );\n }\n }\n\n handleDownloadTable(\n fileName: string,\n frozenTable: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info(\n 'start table downloading',\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n };\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTable for user without download CSV permission.'\n );\n }\n }\n\n async seekRow(inputString: string, isBackwards = false): Promise<void> {\n const {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter,\n } = this.state;\n const { model } = this.props;\n const { dh } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n\n if (inputString === '') {\n return;\n }\n const selectedColumn = IrisGridUtils.getColumnByName(\n model.columns,\n selectedColumnName\n );\n\n if (selectedColumn === undefined) {\n return;\n }\n\n let searchFromRow = this.grid?.state.cursorRow;\n\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n\n const isContains =\n gotoValueSelectedFilter === FilterType.contains ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n const isIgnoreCase =\n gotoValueSelectedFilter === FilterType.eqIgnoreCase ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n\n try {\n const { formatter } = model;\n const columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n\n let rowIndex;\n\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n isIgnoreCase,\n isContains,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DATETIME: {\n const [startDate] = DateUtils.parseDateRange(\n dh,\n inputString,\n formatter.timeZone\n );\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.DATETIME,\n startDate,\n undefined,\n undefined,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT: {\n if (\n !TableUtils.isBigDecimalType(selectedColumn.type) &&\n !TableUtils.isBigIntegerType(selectedColumn.type)\n ) {\n let inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.NUMBER,\n inputValue,\n undefined,\n undefined,\n isBackwards ?? false\n );\n } else {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n break;\n }\n default: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n this.tableUtils.makeValue(\n selectedColumn.type,\n inputString,\n formatter.timeZone\n ),\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n }\n\n this.grid?.setFocusRow(rowIndex);\n this.setState({ gotoValueError: '' });\n } catch (e: unknown) {\n this.setState({ gotoValueError: 'invalid input' });\n }\n }\n\n handleCancelDownloadTable(): void {\n this.tableSaver?.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate = throttle(\n (\n tableDownloadProgress: number,\n tableDownloadEstimatedTime: number | null\n ) => {\n const { tableDownloadStatus } = this.state;\n if (\n tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n ) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n },\n UPDATE_DOWNLOAD_THROTTLE\n );\n\n handleDownloadCompleted(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED,\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param ranges The ranges to delete\n */\n deleteRanges(ranges: readonly GridRange[]): void {\n const { model } = this.props;\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection(): void {\n if (this.grid == null) {\n return;\n }\n const { isSelectingColumn } = this.props;\n if (isSelectingColumn) {\n const { columnAllowedCursor } = this.props;\n this.grid.setState({ cursor: columnAllowedCursor });\n } else {\n this.grid.setState({ cursor: null });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true): void {\n if (!this.grid) {\n return;\n }\n\n this.grid.clearSelectedRanges();\n this.grid.setViewState(\n { left: 0, top: 0, topOffset: 0, leftOffset: 0 },\n forceUpdate\n );\n }\n\n sendStateChange(): void {\n if (!this.grid) {\n return;\n }\n const { state: irisGridState } = this;\n const { state: gridState } = this.grid;\n const { onStateChange } = this.props;\n\n onStateChange(irisGridState, gridState);\n }\n\n handleOverflowClose(): void {\n this.setState({\n showOverflowModal: false,\n });\n }\n\n getColumnBoundingRect(): DOMRect {\n const { metrics, shownColumnTooltip } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n const gridRect = this.gridWrapper?.getBoundingClientRect();\n const popperMargin = 20;\n assertNotNull(gridRect);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth,\n } = metrics;\n const columnX = allColumnXs.get(shownColumnTooltip);\n const columnWidth = allColumnWidths.get(shownColumnTooltip);\n\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n\n const left =\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n },\n };\n }\n\n getOverflowButtonTooltip = memoize(\n (overflowButtonTooltipProps: CSSProperties): ReactNode => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...overflowButtonTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right'],\n },\n },\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n View full contents\n </Tooltip>\n </div>\n );\n }\n );\n\n getExpandCellTooltip = memoize(\n (expandCellTooltipProps: CSSProperties): ReactNode => {\n if (expandCellTooltipProps == null) {\n return null;\n }\n\n const { expandTooltipDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...expandCellTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom-start',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n <div style={{ textAlign: 'left' }}>\n Click to {expandTooltipDisplayValue} row\n <br />\n {ContextActionUtils.isMacPlatform() ? '⌘' : 'Ctrl+'}Click to\n expand row and all children\n </div>\n </Tooltip>\n </div>\n );\n }\n );\n\n getLinkHoverTooltip = memoize(\n (linkHoverTooltipProps: CSSProperties): ReactNode => {\n if (linkHoverTooltipProps == null) {\n return null;\n }\n\n const { linkHoverDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...linkHoverTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip options={popperOptions} ref={this.handleTooltipRef}>\n <div className=\"link-hover-tooltip\">\n {linkHoverDisplayValue} - Click once to follow.\n <br />\n Click and hold to select this cell.\n </div>\n </Tooltip>\n </div>\n );\n }\n );\n\n handleGotoRowSelectedRowNumberSubmit(): void {\n const { gotoRow: rowNumber } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n\n focusRowInGrid(rowNumber: string): void {\n const { model } = this.props;\n const { rowCount } = model;\n this.setState({ gotoRow: rowNumber });\n if (rowNumber === '') {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n return;\n }\n const rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({ gotoRowError: 'Invalid row index' });\n } else if (rowInt === 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(0);\n } else if (rowInt < 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(rowInt + rowCount);\n } else {\n this.grid?.setFocusRow(rowInt - 1);\n this.setState({ gotoRowError: '', gotoValueError: '' });\n }\n }\n\n handleGotoRowSelectedRowNumberChanged(\n event: ChangeEvent<HTMLInputElement>\n ): void {\n const rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n\n getColumnTooltip(\n visibleIndex: VisibleIndex,\n metrics: GridMetrics,\n model: IrisGridModel\n ): ReactNode {\n const {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width,\n } = metrics;\n const columnX = allColumnXs.get(visibleIndex);\n const columnWidth = allColumnWidths.get(visibleIndex);\n\n if (columnX == null || columnWidth == null) {\n return null;\n }\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n const boundedLeft = Math.max(0, columnX);\n let boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n const virtualReference: ReferenceObject = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect,\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n\n const column = model.columns[modelColumn];\n if (column == null) return null;\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={column.name}\n timeout={400}\n interactive\n options={popperOptions}\n ref={this.handleTooltipRef}\n referenceObject={virtualReference}\n onExited={() => {\n this.setState({ shownColumnTooltip: null });\n }}\n >\n <ColumnStatistics\n model={model}\n column={column}\n onStatistics={() => {\n this.tooltip?.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n\n handleGotoValueSelectedColumnNameChanged(columnName: ColumnName): void {\n const { model } = this.props;\n const cursorRow = this.grid?.state.cursorRow;\n\n if (cursorRow != null) {\n const index = model.getColumnIndexByName(columnName);\n const column = IrisGridUtils.getColumnByName(model.columns, columnName);\n if (index == null || column == null) {\n return;\n }\n const value = model.valueForCell(index, cursorRow);\n const text = IrisGridUtils.convertValueToText(value, column.type);\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n });\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n }\n\n handleGotoValueSelectedFilterChanged(value: FilterTypeValue): void {\n this.setState({ gotoValueSelectedFilter: value, gotoValueError: '' });\n }\n\n handleGotoValueChanged = (input: string): void => {\n this.setState({ gotoValue: input });\n this.debouncedSeekRow(input);\n };\n\n debouncedSeekRow = debounce((input: string): void => {\n this.seekRow(input);\n }, SEEK_ROW_DEBOUNCE);\n\n handleGotoValueSubmitted(isBackwards?: boolean): void {\n const { gotoValue } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n\n render(): ReactElement | null {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart,\n onPartitionAppend,\n } = this.props;\n const {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n keyHandlers,\n mouseHandlers,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n partition,\n partitionFilters,\n partitionTable,\n partitionColumn,\n searchFilter,\n selectDistinctColumns,\n\n movedColumns,\n movedRows,\n\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n\n sorts,\n reverseType,\n customColumns,\n\n selectedRanges,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n frozenColumns,\n columnHeaderGroups,\n showOverflowModal,\n overflowText,\n overflowButtonTooltipProps,\n expandCellTooltipProps,\n linkHoverTooltipProps,\n isGotoShown,\n gotoRow,\n gotoRowError,\n gotoValueError,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueSelectedFilter,\n } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n );\n\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const stateOverride = this.getCachedStateOverride(\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown\n );\n const top = metrics ? metrics.top : 0;\n const bottom = metrics ? metrics.bottomViewport : 0;\n let left = null;\n let right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n const isVisible =\n metrics != null && metrics.width > 0 && metrics.height > 0;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n\n let focusField = null;\n\n const debounceMs = metrics\n ? Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n )\n : IrisGrid.maxDebounce;\n\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n const { gridX, gridY, allColumnXs, allColumnWidths, width } = metrics;\n const columnX = allColumnXs.get(focusedFilterBarColumn);\n const columnWidth = allColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - (theme.filterBarHeight ?? 0);\n const fieldWidth = columnWidth + 1; // cover right border\n const fieldHeight = (theme.filterBarHeight ?? 0) - 1; // remove bottom border\n const style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x), // Don't cause overflow\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n const isBarFiltered =\n quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = (\n <FilterInputField\n ref={this.filterInputRef}\n style={style}\n className={classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered,\n })}\n isAdvancedFilterSet={advancedFilter != null}\n onAdvancedFiltersTriggered={() => {\n this.setState({ shownAdvancedFilter: focusedFilterBarColumn });\n }}\n key={focusedFilterBarColumn}\n onChange={this.handleFilterBarChange}\n onDone={this.handleFilterBarDone}\n onTab={this.handleFilterBarTab}\n onContextMenu={this.grid?.handleContextMenu}\n debounceMs={debounceMs}\n value={value}\n />\n );\n }\n }\n\n let loadingElement = null;\n if (loadingText != null) {\n const loadingStatus = (\n <div className=\"iris-grid-loading-status\">\n <div\n className={classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown,\n })}\n >\n {loadingText}\n </div>\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames('iris-grid-btn-cancel', {\n show: loadingSpinnerShown,\n })}\n >\n <FontAwesomeIcon icon={vsClose} transform=\"down-1\" />\n Cancel\n </button>\n </div>\n );\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div className=\"iris-grid-loading\" style={{ top: gridY }}>\n {loadingStatus}\n </div>\n );\n }\n\n let columnTooltip: React.ReactNode = null;\n if (shownColumnTooltip != null && metrics) {\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\n // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n this.tooltip?.update();\n }\n\n const filterBar = [];\n if (metrics && isFilterBarShown) {\n const { gridX, gridY, visibleColumns, allColumnXs, allColumnWidths } =\n metrics;\n const { filterBarHeight } = theme;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const isFilterable = model.isFilterable(modelColumn);\n if (\n isFilterable &&\n columnX != null &&\n columnWidth != null &&\n columnWidth > 0\n ) {\n const x = gridX + columnX + columnWidth - 24;\n const y = gridY - (filterBarHeight ?? 0) + 2; // 2 acts as top margin for the button\n const style: CSSProperties = {\n position: 'absolute',\n top: y,\n left: x,\n };\n const advancedFilter = advancedFilters.get(modelColumn);\n const isFilterSet = advancedFilter != null;\n const isFilterVisible =\n columnIndex === hoverAdvancedFilter ||\n columnIndex === focusedFilterBarColumn ||\n isFilterSet;\n const element = (\n <div\n className={classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible,\n })}\n key={columnIndex}\n style={style}\n >\n {isFilterVisible && (\n <Button\n kind=\"ghost\"\n className={classNames(\n 'btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({ shownAdvancedFilter: columnIndex });\n }}\n onContextMenu={event => {\n this.grid?.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon\n icon={vsFilter}\n className=\"filter-light\"\n />\n </div>\n </Button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n allColumnXs,\n allColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style: CSSProperties = isFilterBarShown\n ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight,\n }\n : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight,\n };\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\n `Column does not exist at index ${modelColumn} for column array of length ${model.columns.length}`\n );\n // eslint-disable-next-line no-continue\n continue;\n }\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, column.name);\n const sortDirection = sort ? sort.direction : null;\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n options={{\n positionFixed: true,\n }}\n >\n {this.getCachedAdvancedFilterMenuActions(\n model,\n column,\n advancedFilterOptions,\n sortDirection,\n formatter\n )}\n </Popper>\n </div>\n );\n advancedFilterMenus.push(element);\n }\n }\n }\n }\n\n const optionItems = this.getCachedOptionItems(\n onCreateChart !== undefined && model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isFormatColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable || isRollup,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable(),\n isGotoShown,\n advancedSettings.size > 0\n );\n\n const hiddenColumns = this.getCachedHiddenColumns(\n metricCalculator,\n userColumnWidths\n );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n hiddenColumns={hiddenColumns}\n columnHeaderGroups={columnHeaderGroups}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onReset={this.handleColumnVisibilityReset}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n onColumnHeaderGroupChanged={this.handleHeaderGroupsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n rules={conditionalFormats}\n onChange={this.handleConditionalFormatsChange}\n onCreate={this.handleConditionalFormatCreate}\n onSelect={this.handleConditionalFormatEdit}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return (\n <ConditionalFormatEditor\n dh={model.dh}\n columns={model.columns}\n rule={conditionalFormatPreview}\n onUpdate={this.handleConditionalFormatEditorUpdate}\n onSave={this.handleConditionalFormatEditorSave}\n onCancel={this.handleConditionalFormatEditorCancel}\n />\n );\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return (\n <CustomColumnBuilder\n model={model}\n customColumns={customColumns}\n onSave={this.handleUpdateCustomColumns}\n onCancel={this.handleMenuBack}\n key={OptionType.CUSTOM_COLUMN_BUILDER}\n />\n );\n case OptionType.ROLLUP_ROWS:\n return (\n <RollupRows\n model={model}\n onChange={this.handleRollupChange}\n config={rollupConfig}\n key={OptionType.ROLLUP_ROWS}\n />\n );\n case OptionType.AGGREGATIONS:\n return (\n <Aggregations\n settings={aggregationSettings}\n isRollup={isRollup}\n onChange={this.handleAggregationsChange}\n onEdit={this.handleAggregationEdit}\n />\n );\n case OptionType.AGGREGATION_EDIT:\n return (\n selectedAggregation && (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n )\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n userColumnWidths={userColumnWidths}\n movedColumns={movedColumns}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={\n tableDownloadEstimatedTime ?? undefined\n }\n onDownload={this.handleDownloadTable}\n onDownloadStart={this.handleDownloadTableStart}\n onCancel={this.handleCancelDownloadTable}\n selectedRanges={selectedRanges}\n key={OptionType.TABLE_EXPORTER}\n />\n );\n case OptionType.SELECT_DISTINCT:\n return (\n <SelectDistinctBuilder\n model={model}\n selectDistinctColumns={selectDistinctColumns}\n onChange={this.handleSelectDistinctChanged}\n />\n );\n case OptionType.ADVANCED_SETTINGS:\n return (\n <AdvancedSettingsMenu\n items={advancedSettings}\n onChange={onAdvancedSettingsChange}\n />\n );\n\n default:\n throw Error(`Unexpected option type ${option.type}`);\n }\n });\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children != null && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\">\n {partitionTable && partitionColumn && partition != null && (\n <IrisGridPartitionSelector\n dh={model.dh}\n table={partitionTable}\n getFormattedString={(\n value: unknown,\n type: string,\n stringName: string\n ) => model.displayString(value, type, stringName)}\n column={partitionColumn}\n partition={partition}\n onChange={this.handlePartitionChange}\n onFetchAll={this.handlePartitionFetchAll}\n onAppend={\n onPartitionAppend !== undefined\n ? this.handlePartitionAppend\n : undefined\n }\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 model.dh,\n model.columns,\n conditionalFormats,\n conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n openOptions[openOptions.length - 1]?.type ===\n OptionType.CONDITIONAL_FORMATTING_EDIT\n ? conditionalFormatEditIndex ?? undefined\n : undefined\n )}\n rollupConfig={this.getModelRollupConfig(\n model.originalColumns,\n rollupConfig,\n aggregationSettings\n )}\n totalsConfig={this.getModelTotalsConfig(\n model.columns,\n rollupConfig,\n aggregationSettings\n )}\n selectDistinctColumns={selectDistinctColumns}\n pendingRowCount={pendingRowCount}\n pendingDataMap={pendingDataMap}\n frozenColumns={frozenColumns}\n columnHeaderGroups={columnHeaderGroups}\n />\n )}\n {!isMenuShown && (\n <div className=\"grid-settings-button\">\n <Button\n kind=\"ghost\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\n onClick={this.handleMenu}\n icon={<FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />}\n tooltip=\"Table Options\"\n />\n </div>\n )}\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n {overflowButtonTooltipProps &&\n this.getOverflowButtonTooltip(overflowButtonTooltipProps)}\n {expandCellTooltipProps &&\n this.getExpandCellTooltip(expandCellTooltipProps)}\n {linkHoverTooltipProps &&\n this.getLinkHoverTooltip(linkHoverTooltipProps)}\n </div>\n <GotoRow\n ref={this.gotoRowRef}\n model={model}\n isShown={isGotoShown}\n gotoRow={gotoRow}\n gotoRowError={gotoRowError}\n gotoValueError={gotoValueError}\n onGotoRowSubmit={this.handleGotoRowSelectedRowNumberSubmit}\n onGotoRowNumberChanged={this.handleGotoRowSelectedRowNumberChanged}\n onClose={this.handleGotoRowClosed}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={() => {\n this.handleAnimationStart();\n this.focus();\n }}\n onExited={this.handleAnimationEnd}\n gotoValueSelectedColumnName={gotoValueSelectedColumnName}\n gotoValue={gotoValue}\n gotoValueFilter={gotoValueSelectedFilter}\n onGotoValueSelectedColumnNameChanged={\n this.handleGotoValueSelectedColumnNameChanged\n }\n onGotoValueSelectedFilterChanged={\n this.handleGotoValueSelectedFilterChanged\n }\n onGotoValueChanged={this.handleGotoValueChanged}\n onGotoValueSubmit={this.handleGotoValueSubmitted}\n />\n\n <PendingDataBottomBar\n error={pendingSaveError}\n isSaving={pendingSavePromise != null}\n saveTooltip={`Commit (${this.commitAction.shortcut.getDisplayText()})`}\n discardTooltip={`Discard (${this.discardAction.shortcut.getDisplayText()})`}\n pendingDataErrors={pendingDataErrors}\n pendingDataMap={pendingDataMap}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n onSave={this.handlePendingCommitClicked}\n onDiscard={this.handlePendingDiscardClicked}\n />\n <ToastBottomBar>{toastMessage}</ToastBottomBar>\n <IrisGridCopyHandler\n model={model}\n copyOperation={copyOperation ?? undefined}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n dh={model.dh}\n ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <CSSTransition\n in={isMenuShown}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n <Page title=\"Table Options\" onClose={this.handleMenuClose}>\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>\n {openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n ))}\n </Stack>\n </div>\n </CSSTransition>\n <ContextActions actions={this.contextActions} />\n </div>\n );\n }\n}\n\nexport default IrisGrid;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGrid.js","names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","Log","FontAwesomeIcon","ContextActions","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Button","ContextActionUtils","Grid","GridRange","GridUtils","isEditableGridModel","isExpandableGridModel","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsClose","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsReply","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","DateUtils","Formatter","FormatterUtils","TableUtils","assertNotNull","copyToClipboard","EMPTY_ARRAY","EMPTY_MAP","Pending","PromiseUtils","ValidationError","getOrThrow","Type","FilterType","throttle","debounce","clamp","getFormatColumns","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridCellOverflowMouseHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridRowTreeMouseHandler","IrisGridSortMouseHandler","IrisGridTokenMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","createDefaultIrisGridTheme","ColumnStatistics","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","DownloadServiceWorkerUtils","IrisGridUtils","CrossColumnSearch","IrisGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","ConditionalFormattingMenu","ConditionalFormatEditor","IrisGridCellOverflowModal","GotoRow","jsx","_jsx","jsxs","_jsxs","log","module","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SEEK_ROW_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","DEFAULT_AGGREGATION_SETTINGS","Object","freeze","aggregations","showOnTop","UNFORMATTED_DATE_PATTERN","isEmptyConfig","_ref","advancedFilters","aggregationSettings","customColumns","quickFilters","reverseType","rollupConfig","searchFilter","selectDistinctColumns","sorts","size","length","REVERSE_TYPE","NONE","IrisGrid","constructor","props","_model$layoutHints","_model$layoutHints$hi","_model$columns$0$name","_model$columns$","_defineProperty","column","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","onFilterChange","handleAdvancedFilterChange","onSortChange","handleAdvancedFilterSortChange","onDone","handleAdvancedFilterDone","options","tableUtils","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","toggleGotoRowAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","showGotoRow","hasAdvancedSettings","optionItems","push","type","CHART_BUILDER","title","icon","VISIBILITY_ORDERING_BUILDER","CONDITIONAL_FORMATTING","CUSTOM_COLUMN_BUILDER","ROLLUP_ROWS","AGGREGATIONS","SELECT_DISTINCT","TABLE_EXPORTER","ADVANCED_SETTINGS","QUICK_FILTERS","subtitle","shortcut","getDisplayText","isOn","onChange","action","SEARCH_BAR","GOTO","metricCalculator","userColumnWidths","getHiddenColumns","Map","initialColumnWidths","columns","aggregationMap","forEach","_ref2","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","_ref3","name","_operationMap$name","newOperations","map","o","dh","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","getModelRollupConfig","_config$columns$lengt","_config$columns","_aggregations$length","getOperationMap","operationOrder","getOperationOrder","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","isMenuShown","customFilters","partitionFilters","getFiltersFromFilterMap","theme","isEditable","floatingRowCount","_theme$rowFooterWidth","defaultTheme","rowFooterWidth","_objectSpread","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","style","children","ref","handleTooltipRef","Date","now","expandCellTooltipProps","expandTooltipDisplayValue","textAlign","isMacPlatform","linkHoverTooltipProps","linkHoverDisplayValue","className","input","gotoValue","debouncedSeekRow","seekRow","handleGotoRowOpened","handleGotoRowClosed","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleHeaderGroupsChanged","handleUpdate","handleViewChanged","handleFormatSelection","handleConditionalFormatCreate","handleConditionalFormatEdit","handleConditionalFormatsChange","handleConditionalFormatEditorSave","handleConditionalFormatEditorCancel","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleGotoRowSelectedRowNumberSubmit","focusRowInGrid","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadCompleted","handlePartitionAppend","handlePartitionChange","handlePartitionFetchAll","handlePartitionDone","handleColumnVisibilityChanged","handleColumnVisibilityReset","handleCrossColumnSearch","handleRollupChange","handleOverflowClose","getColumnBoundingRect","handleGotoRowSelectedRowNumberChanged","handleGotoValueSelectedColumnNameChanged","handleGotoValueSelectedFilterChanged","handleGotoValueChanged","handleGotoValueSubmitted","grid","gridWrapper","lastLoadedConfig","pending","globalColumnFormats","decimalFormatOptions","integerFormatOptions","truncateNumbersWithPound","renderer","tableSaver","crossColumnRef","createRef","isAnimating","filterInputRef","gotoRowRef","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","toggleGotoRow","GOTO_ROW","discardAction","pendingDataMap","discardPending","catch","error","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","isSelectingPartition","movedColumnsProp","movedRows","movedRowsProp","partition","partitionColumn","userRowHeights","canCopy","frozenColumns","columnHeaderGroups","keyHandlers","mouseHandlers","initialMovedColumns","initialMovedRows","layoutHints","hiddenColumns","getColumnIndexByName","searchColumns","focusedFilterBarColumn","metrics","partitionTable","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","loadingSpinnerShown","shownColumnTooltip","conditionalFormatEditIndex","isTableDownloading","isReady","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","showOverflowModal","overflowText","isGotoShown","gotoRow","gotoRowError","gotoValueError","gotoValueSelectedColumnName","gotoValueSelectedFilter","eqIgnoreCase","initialColumnHeaderGroups","componentDidMount","find","c","isPartitionColumn","isFilterRequired","isValuesTableAvailable","loadPartitionsTable","initState","startListening","componentDidUpdate","prevProps","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","_advancedSettings$get","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","arguments","modelColumn","getModelColumn","modelRow","getModelRow","value","valueForCell","isDateType","i18n","DateTimeFormat","format","TimeZone","getTimeZone","timeZone","textForCell","modelColumns","modelRows","getTheme","_ref4","getCachedTheme","floatingTopRowCount","floatingBottomRowCount","getVisibleColumn","modelIndex","getVisibleIndex","makeQuickFilter","text","err","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","_ref5","findIndex","_ref6","columnName","columnType","delete","applyQuickFilter","concat","trim","quickFilter","set","setAdvancedFilterMap","setAdvancedFilter","_ref7","setQuickFilter","_ref8","setFilterMap","filterMap","_advancedSettings$get2","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","_ref9","filterList","combinedText","combineFiltersFromList","removeQuickFilter","removeColumnFilter","_ref10","_ref11","current","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","_ref12","_settings$defaultDeci","_settings$defaultInte","_settings$truncateNum","forceUpdate","getColumnFormats","dateTimeFormatterOptions","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","isTruncateNumbersChanged","updateFormatter","updatedFormats","_this$globalColumnFor","update","mergedColumnFormats","values","initFormatter","applyInputFiltersOnInit","inputFiltersWithValues","_this","_asyncToGenerator","add","valuesTable","resolved","close","sort","desc","applySort","setViewport","data","getViewportData","rows","row","updatePartition","info","handleTableLoadError","isCharType","partitionText","displayString","partitionFilter","makeQuickFilterFromComponent","copyCell","String","e","copyRanges","ranges","includeHeaders","formatValues","getUserColumnWidths","boundedRanges","columnCount","rowCount","resetRanges","clearSelectedRanges","setViewState","top","_this$gridWrapper$get","_this$gridWrapper","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","stopLoading","rollback","canRollback","addEventListener","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","removeEventListener","focus","_this$grid","focusFilterBar","isFilterable","left","rightVisible","lastLeft","_this$grid2","_this$grid3","_this$grid4","metricState","getMetricState","newLeft","getLastLeft","getVisibleWidth","leftOffset","lastFocusedFilterBarColumn","hideColumnByVisibleIndex","columnVisibleIndex","_this$grid5","setColumnWidth","freezeColumnByColumnName","allFrozenColumns","visibleIndex","newMovedColumns","moveItem","unFreezeColumnByColumnName","frontColumns","modelIndexes","isVisible","_this$grid6","defaultWidth","calculatedWidth","calculatedColumnWidths","resetColumnWidth","_model$layoutHints$fr","_model$layoutHints2","_this$grid7","updateCanvas","onPartitionAppend","isCanceled","onError","showAllColumns","_this$grid8","entries","columnWidth","toggleSort","addToExisting","isColumnSortable","currentSorts","toggleSortForColumn","_this$grid9","sortColumn","_this$grid10","direction","none","isAbs","reverse","_this$grid11","isReversible","focusIndex","isTextType","_this$grid12","isTableSearchAvailable","_model$layoutHints3","_dh$SearchDisplayMode","_dh$SearchDisplayMode2","searchDisplayMode","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","_this$crossColumnRef","_this$crossColumnRef2","_this$grid13","_this$grid14","_this$grid15","_this$gotoRowRef$curr","cursorRow","cursorColumn","cellValue","convertValueToText","_this2","_document","_document$activeEleme","Error","containsGridCellInputField","document","activeElement","classList","contains","_this2$grid","newPendingSavePromise","then","_this3","selectColumn","onColumnSelected","selectData","_this4","groupedColumns","dataMap","_loop","isExpandable","isRowExpandable","isGrouped","onDataSelected","index","_this$grid16","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","_this$grid17","_this$filterInputRef","_this$filterInputRef2","onCreateChart","warn","_ref13","setGridFocus","defocusInput","_this$grid18","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","stopPropagation","_ref14","newOptions","pop","option","_ref15","event","customEvent","detail","_this$grid19","_this$grid$state","_this$grid20","selectionEndRow","bottomViewport","bottomNonFloating","_this$grid21","onSelectionChanged","onChangeApplied","parseColumnHeaderGroups","groups","_this$grid22","tooltip","startTimer","CONDITIONAL_FORMATTING_EDIT","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","_this$grid23","_this$grid24","join","aggregation","_ref16","AGGREGATION_EDIT","_rollupConfig$columns","_rollupConfig$columns2","resetGridViewState","columnNames","INITIATING","fileName","frozenTable","tableSubscription","snapshotRanges","modelRanges","includeColumnHeaders","useUnformattedValues","startDownload","inputString","_arguments","_this5","_this5$grid","isBackwards","selectedColumnName","isSeekRowAvailable","selectedColumn","getColumnByName","searchFromRow","isContains","containsIgnoreCase","isIgnoreCase","_this5$grid2","columnDataType","dataType","CHAR","STRING","ValueType","DATETIME","startDate","parseDateRange","DECIMAL","INT","isBigDecimalType","isBigIntegerType","inputValue","parseInt","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","NUMBER","makeValue","setFocusRow","_this$tableSaver","cancelDownload","FINISHED","CANCELED","deleteRanges","columnAllowedCursor","cursor","topOffset","irisGridState","gridState","onStateChange","_this$gridWrapper2","gridRect","popperMargin","columnHeaderHeight","allColumnXs","allColumnWidths","width","columnHeaderMaxDepth","columnX","bottom","right","x","y","toJSON","rowNumber","rowInt","_this$grid25","_this$grid26","_this$grid27","target","getColumnTooltip","boundedLeft","boundedWidth","abs","virtualReference","clientWidth","clientHeight","timeout","interactive","referenceObject","onExited","onStatistics","_this$tooltip","_this$grid28","render","_rollupConfig$columns3","_rollupConfig$columns4","_this6","_this$grid30","_this$grid30$state$dr","_openOptions","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","getCachedFilter","stateOverride","getCachedStateOverride","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridX","gridY","_theme$filterBarHeigh","_theme$filterBarHeigh2","_this$grid29","filterBarHeight","fieldWidth","fieldHeight","minWidth","isValid","advancedFilter","isBarFiltered","active","isAdvancedFilterSet","onAdvancedFiltersTriggered","onTab","onContextMenu","handleContextMenu","loadingElement","loadingStatus","show","onClick","transform","columnTooltip","_this$tooltip2","filterBar","visibleColumns","_loop2","isFilterSet","isFilterVisible","element","hidden","kind","_this6$grid","onMouseEnter","onMouseLeave","advancedFilterMenus","_loop3","xColumnHeader","xFilterBar","onEntered","getAdvancedMenuOpenedHandler","isShown","closeOnBlur","positionFixed","getCachedAdvancedFilterMenuActions","_ret","getCachedOptionItems","getCachedHiddenColumns","openOptionsStack","onSubmit","onColumnVisibilityChanged","onReset","onMovedColumnsChanged","onColumnHeaderGroupChanged","onCreate","onSelect","handleConditionalFormatEditorUpdate","rule","onUpdate","onSave","onCancel","onEdit","isDownloading","onDownload","onDownloadStart","items","role","in","transitionSlowMs","onEnter","onExit","mountOnEnter","unmountOnExit","table","getFormattedString","stringName","onFetchAll","onAppend","selectedColumns","invertSelection","isStickyBottom","onViewChanged","isOpen","onClose","getAlwaysFetchColumns","draggingColumn","range","formatColumns","getCachedPreviewFormatColumns","totalsConfig","getModelTotalsConfig","getOverflowButtonTooltip","getExpandCellTooltip","getLinkHoverTooltip","onGotoRowSubmit","onGotoRowNumberChanged","onEntering","onExiting","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","isSaving","saveTooltip","discardTooltip","onDiscard","onDownloadCompleted","onDownloadCanceled","onDownloadProgressUpdate","transitionMidMs","onBack","actions","columnSelectionValidator","columnNotAllowedCursor","getServiceWorker","defaultDateTimeFormat","FULL_DATE_FORMAT","showTimeZone","showTSeparator","shape","defaultFormatString","string"],"sources":["../src/IrisGrid.tsx"],"sourcesContent":["import React, {\n ChangeEvent,\n Component,\n CSSProperties,\n ReactElement,\n ReactNode,\n} from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActions,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n ContextAction,\n PopperOptions,\n ReferenceObject,\n Button,\n ContextActionUtils,\n ResolvableContextAction,\n} from '@deephaven/components';\nimport {\n Grid,\n GridMetrics,\n GridMouseHandler,\n GridRange,\n GridRangeIndex,\n GridThemeType,\n GridUtils,\n KeyHandler,\n ModelIndex,\n ModelSizeMap,\n MoveOperation,\n VisibleIndex,\n GridState,\n isEditableGridModel,\n BoundedAxisRange,\n isExpandableGridModel,\n} from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsClose,\n vsCloudDownload,\n vsEdit,\n vsFilter,\n vsMenu,\n vsReply,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport type {\n Column,\n ColumnGroup,\n CustomColumn,\n DateWrapper,\n dh as DhType,\n FilterCondition,\n Sort,\n Table,\n TableViewportSubscription,\n} from '@deephaven/jsapi-types';\nimport {\n DateUtils,\n Formatter,\n FormatterUtils,\n TableUtils,\n FormattingRule,\n ReverseType,\n RowDataMap,\n SortDirection,\n DateTimeColumnFormatterOptions,\n TableColumnFormat,\n Settings,\n} from '@deephaven/jsapi-utils';\nimport {\n assertNotNull,\n copyToClipboard,\n EMPTY_ARRAY,\n EMPTY_MAP,\n Pending,\n PromiseUtils,\n ValidationError,\n getOrThrow,\n} from '@deephaven/utils';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport {\n FormattingRule as SidebarFormattingRule,\n getFormatColumns,\n} from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler, { CopyOperation } from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridCellOverflowMouseHandler,\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridRowTreeMouseHandler,\n IrisGridSortMouseHandler,\n IrisGridTokenMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport { createDefaultIrisGridTheme, IrisGridThemeType } from './IrisGridTheme';\nimport ColumnStatistics from './ColumnStatistics';\nimport './IrisGrid.scss';\nimport AdvancedFilterCreator from './AdvancedFilterCreator';\nimport {\n Aggregations,\n AggregationEdit,\n AggregationUtils,\n ChartBuilder,\n CustomColumnBuilder,\n OptionType,\n RollupRows,\n TableCsvExporter,\n TableSaver,\n VisibilityOrderingBuilder,\n DownloadServiceWorkerUtils,\n} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu, {\n AdvancedSettingsMenuCallback,\n} from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\nimport ConditionalFormattingMenu from './sidebar/conditional-formatting/ConditionalFormattingMenu';\n\nimport ConditionalFormatEditor from './sidebar/conditional-formatting/ConditionalFormatEditor';\nimport IrisGridCellOverflowModal from './IrisGridCellOverflowModal';\nimport GotoRow, { GotoRowElement } from './GotoRow';\nimport {\n Aggregation,\n AggregationSettings,\n} from './sidebar/aggregations/Aggregations';\nimport { ChartBuilderSettings } from './sidebar/ChartBuilder';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport { UIRollupConfig } from './sidebar/RollupRows';\nimport {\n ReadonlyAdvancedFilterMap,\n ColumnName,\n ReadonlyQuickFilterMap,\n ReadonlyAggregationMap,\n ReadonlyOperationMap,\n Action,\n OptionItem,\n UITotalsTableConfig,\n InputFilter,\n PendingDataMap,\n AdvancedFilterOptions,\n PendingDataErrorMap,\n QuickFilterMap,\n OperationMap,\n} from './CommonTypes';\nimport ColumnHeaderGroup from './ColumnHeaderGroup';\n\nconst log = Log.module('IrisGrid');\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SEEK_ROW_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nconst DEFAULT_AGGREGATION_SETTINGS = Object.freeze({\n aggregations: EMPTY_ARRAY,\n showOnTop: false,\n});\n\nconst UNFORMATTED_DATE_PATTERN = `yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z`;\n\nfunction isEmptyConfig({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n}: {\n advancedFilters: ReadonlyAdvancedFilterMap;\n aggregationSettings: AggregationSettings;\n customColumns: readonly ColumnName[];\n quickFilters: ReadonlyQuickFilterMap;\n reverseType: ReverseType;\n rollupConfig?: UIRollupConfig;\n searchFilter?: FilterCondition;\n selectDistinctColumns: readonly ColumnName[];\n sorts: readonly Sort[];\n}): boolean {\n return (\n advancedFilters.size === 0 &&\n aggregationSettings.aggregations.length === 0 &&\n customColumns.length === 0 &&\n quickFilters.size === 0 &&\n reverseType === TableUtils.REVERSE_TYPE.NONE &&\n rollupConfig == null &&\n searchFilter == null &&\n selectDistinctColumns.length === 0 &&\n sorts.length === 0\n );\n}\nexport type FilterData = {\n operator: FilterTypeValue;\n text: string;\n value: unknown;\n startColumnIndex: number;\n};\n\nexport type FilterMap = Map<\n ColumnName,\n {\n columnType: string;\n filterList: FilterData[];\n }\n>;\n\nexport interface IrisGridContextMenuData {\n model: IrisGridModel;\n value: unknown;\n valueText: string | null;\n column: Column;\n rowIndex: GridRangeIndex;\n columnIndex: GridRangeIndex;\n modelRow: GridRangeIndex;\n modelColumn: GridRangeIndex;\n}\n\nexport interface IrisGridProps {\n children: React.ReactNode;\n advancedFilters: ReadonlyAdvancedFilterMap;\n advancedSettings: Map<AdvancedSettingsType, boolean>;\n alwaysFetchColumns: readonly ColumnName[];\n isFilterBarShown: boolean;\n applyInputFiltersOnInit: boolean;\n conditionalFormats: readonly SidebarFormattingRule[];\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n inputFilters: readonly InputFilter[];\n customFilters: readonly FilterCondition[];\n model: IrisGridModel;\n onCreateChart: (settings: ChartBuilderSettings, model: IrisGridModel) => void;\n onColumnSelected: (column: Column) => void;\n onError: (error: unknown) => void;\n onDataSelected: (index: ModelIndex, map: Record<ColumnName, unknown>) => void;\n onStateChange: (irisGridState: IrisGridState, gridState: GridState) => void;\n onPartitionAppend?: (partitionColumn: Column, value: string) => void;\n onAdvancedSettingsChange: AdvancedSettingsMenuCallback;\n partition: string | null;\n partitionColumn: Column | null;\n sorts: readonly Sort[];\n reverseType: ReverseType;\n quickFilters: ReadonlyQuickFilterMap | null;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n settings?: Settings;\n userColumnWidths: ModelSizeMap;\n userRowHeights: ModelSizeMap;\n onSelectionChanged: (gridRanges: readonly GridRange[]) => void;\n rollupConfig?: UIRollupConfig;\n aggregationSettings: AggregationSettings;\n\n isSelectingColumn: boolean;\n isSelectingPartition: boolean;\n isStuckToBottom: boolean;\n isStuckToRight: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator: (value: 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: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: (\n data: IrisGridContextMenuData\n ) => readonly ResolvableContextAction[];\n\n pendingDataMap?: PendingDataMap;\n getDownloadWorker: () => Promise<ServiceWorker>;\n\n canCopy: boolean;\n canDownloadCsv: boolean;\n frozenColumns: readonly ColumnName[];\n\n // Theme override for IrisGridTheme\n theme: GridThemeType;\n\n canToggleSearch: boolean;\n\n columnHeaderGroups?: readonly ColumnHeaderGroup[];\n}\n\nexport interface IrisGridState {\n isFilterBarShown: boolean;\n isSelectingPartition: boolean;\n focusedFilterBarColumn: number | null;\n metricCalculator: IrisGridMetricCalculator;\n metrics?: GridMetrics;\n keyHandlers: readonly KeyHandler[];\n mouseHandlers: readonly GridMouseHandler[];\n\n partition: string | null;\n partitionColumn: Column | null;\n partitionTable: Table | null;\n partitionFilters: readonly 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: ReadonlyQuickFilterMap;\n advancedFilters: ReadonlyAdvancedFilterMap;\n shownAdvancedFilter: number | null;\n hoverAdvancedFilter: number | null;\n\n sorts: readonly Sort[];\n reverseType: ReverseType;\n customColumns: readonly ColumnName[];\n selectDistinctColumns: readonly ColumnName[];\n\n // selected range in table\n selectedRanges: readonly GridRange[];\n\n // Current ongoing copy operation\n copyOperation: CopyOperation | null;\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: string | null;\n loadingScrimProgress: number | null;\n loadingSpinnerShown: boolean;\n\n movedColumns: readonly MoveOperation[];\n movedRows: readonly MoveOperation[];\n\n shownColumnTooltip: number | null;\n\n formatter: Formatter;\n isMenuShown: boolean;\n customColumnFormatMap: Map<ColumnName, FormattingRule>;\n\n conditionalFormats: readonly SidebarFormattingRule[];\n conditionalFormatEditIndex: number | null;\n conditionalFormatPreview?: SidebarFormattingRule;\n\n // Column user is hovering over for selection\n hoverSelectColumn: GridRangeIndex;\n\n isTableDownloading: boolean;\n isReady: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number | null;\n\n showSearchBar: boolean;\n searchFilter?: FilterCondition;\n searchValue: string;\n selectedSearchColumns: readonly ColumnName[];\n invertSearchColumns: boolean;\n\n rollupConfig?: UIRollupConfig;\n rollupSelectedColumns: readonly ColumnName[];\n aggregationSettings: AggregationSettings;\n selectedAggregation: Aggregation | null;\n\n openOptions: readonly OptionItem[];\n\n pendingRowCount: number;\n pendingDataMap: PendingDataMap;\n pendingDataErrors: PendingDataErrorMap;\n pendingSavePromise: Promise<void> | null;\n pendingSaveError: string | null;\n\n toastMessage: JSX.Element | null;\n frozenColumns: readonly ColumnName[];\n showOverflowModal: boolean;\n overflowText: string;\n overflowButtonTooltipProps: CSSProperties | null;\n expandCellTooltipProps: CSSProperties | null;\n expandTooltipDisplayValue: string;\n linkHoverTooltipProps: CSSProperties | null;\n linkHoverDisplayValue: string;\n\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n isGotoShown: boolean;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValueSelectedFilter: FilterTypeValue;\n gotoValue: string;\n\n columnHeaderGroups: readonly ColumnHeaderGroup[];\n}\n\nexport class IrisGrid extends Component<IrisGridProps, IrisGridState> {\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static defaultProps = {\n children: null,\n advancedFilters: EMPTY_MAP,\n advancedSettings: EMPTY_MAP,\n alwaysFetchColumns: EMPTY_ARRAY,\n conditionalFormats: EMPTY_ARRAY,\n customColumnFormatMap: EMPTY_MAP,\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: EMPTY_ARRAY,\n movedRows: EMPTY_ARRAY,\n inputFilters: EMPTY_ARRAY,\n customFilters: EMPTY_ARRAY,\n onCreateChart: undefined,\n onColumnSelected: (): void => undefined,\n onDataSelected: (): void => undefined,\n onError: (): void => undefined,\n onStateChange: (): void => undefined,\n onAdvancedSettingsChange: (): void => undefined,\n partition: null,\n partitionColumn: null,\n quickFilters: EMPTY_MAP,\n selectDistinctColumns: EMPTY_ARRAY,\n sorts: EMPTY_ARRAY,\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: EMPTY_ARRAY,\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n rollupConfig: undefined,\n userColumnWidths: EMPTY_MAP,\n userRowHeights: EMPTY_MAP,\n onSelectionChanged: (): void => undefined,\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnSelectionValidator: null,\n columnAllowedCursor: null,\n columnNotAllowedCursor: null,\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: (): readonly ResolvableContextAction[] => EMPTY_ARRAY,\n pendingDataMap: EMPTY_MAP,\n getDownloadWorker: DownloadServiceWorkerUtils.getServiceWorker,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n truncateNumbersWithPound: false,\n formatter: EMPTY_ARRAY,\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: null,\n canToggleSearch: true,\n };\n\n constructor(props: IrisGridProps) {\n super(props);\n\n this.handleAdvancedFilterChange =\n this.handleAdvancedFilterChange.bind(this);\n this.handleAdvancedFilterSortChange =\n this.handleAdvancedFilterSortChange.bind(this);\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleGotoRowOpened = this.handleGotoRowOpened.bind(this);\n this.handleGotoRowClosed = this.handleGotoRowClosed.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleHeaderGroupsChanged = this.handleHeaderGroupsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n this.handleConditionalFormatCreate =\n this.handleConditionalFormatCreate.bind(this);\n this.handleConditionalFormatEdit =\n this.handleConditionalFormatEdit.bind(this);\n this.handleConditionalFormatsChange =\n this.handleConditionalFormatsChange.bind(this);\n this.handleConditionalFormatEditorSave =\n this.handleConditionalFormatEditorSave.bind(this);\n this.handleConditionalFormatEditorCancel =\n this.handleConditionalFormatEditorCancel.bind(this);\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged =\n this.handleCustomColumnsChanged.bind(this);\n this.handleSelectDistinctChanged =\n this.handleSelectDistinctChanged.bind(this);\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handlePendingCommitClicked =\n this.handlePendingCommitClicked.bind(this);\n this.handlePendingDiscardClicked =\n this.handlePendingDiscardClicked.bind(this);\n this.handleGotoRowSelectedRowNumberSubmit =\n this.handleGotoRowSelectedRowNumberSubmit.bind(this);\n this.focusRowInGrid = this.focusRowInGrid.bind(this);\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.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 =\n this.handleColumnVisibilityChanged.bind(this);\n this.handleColumnVisibilityReset =\n this.handleColumnVisibilityReset.bind(this);\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n this.handleOverflowClose = this.handleOverflowClose.bind(this);\n this.getColumnBoundingRect = this.getColumnBoundingRect.bind(this);\n this.handleGotoRowSelectedRowNumberChanged =\n this.handleGotoRowSelectedRowNumberChanged.bind(this);\n this.handleGotoValueSelectedColumnNameChanged =\n this.handleGotoValueSelectedColumnNameChanged.bind(this);\n this.handleGotoValueSelectedFilterChanged =\n this.handleGotoValueSelectedFilterChanged.bind(this);\n this.handleGotoValueChanged = this.handleGotoValueChanged.bind(this);\n this.handleGotoValueSubmitted = this.handleGotoValueSubmitted.bind(this);\n\n this.grid = null;\n this.gridWrapper = null;\n this.lastLoadedConfig = null;\n this.pending = new Pending();\n this.globalColumnFormats = EMPTY_ARRAY;\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n this.truncateNumbersWithPound = false;\n\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.gotoRowRef = React.createRef();\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n\n this.toggleGotoRowAction = {\n action: () => this.toggleGotoRow(),\n shortcut: SHORTCUTS.TABLE.GOTO_ROW,\n };\n\n this.discardAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0\n ) {\n this.discardPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD,\n };\n this.commitAction = {\n action: () => {\n const { model } = this.props;\n if (\n isEditableGridModel(model) &&\n model.isEditable &&\n model.pendingDataMap.size > 0 &&\n model.pendingDataErrors.size === 0\n ) {\n this.commitPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT,\n };\n this.contextActions = [\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const {\n aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n model,\n movedColumns: movedColumnsProp,\n movedRows: movedRowsProp,\n partition,\n partitionColumn,\n rollupConfig,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n columnHeaderGroups,\n } = props;\n\n const keyHandlers: KeyHandler[] = [\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n }\n const { dh } = model;\n const mouseHandlers = [\n new IrisGridCellOverflowMouseHandler(this),\n new IrisGridRowTreeMouseHandler(this),\n new IrisGridTokenMouseHandler(this),\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this, dh),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n ];\n\n const movedColumns =\n movedColumnsProp.length > 0\n ? movedColumnsProp\n : model.initialMovedColumns;\n const movedRows =\n movedRowsProp.length > 0 ? movedRowsProp : model.initialMovedRows;\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n movedColumns,\n initialColumnWidths: new Map(\n model?.layoutHints?.hiddenColumns?.map(name => [\n model.getColumnIndexByName(name),\n 0,\n ])\n ),\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.tableUtils = new TableUtils(dh);\n\n this.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(dh),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n\n conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap: pendingDataMap ?? new Map(),\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n\n toastMessage: null,\n frozenColumns,\n showOverflowModal: false,\n overflowText: '',\n overflowButtonTooltipProps: null,\n expandCellTooltipProps: null,\n expandTooltipDisplayValue: 'expand',\n linkHoverTooltipProps: null,\n linkHoverDisplayValue: '',\n isGotoShown: false,\n gotoRow: '',\n gotoRowError: '',\n gotoValueError: '',\n\n gotoValueSelectedColumnName: model.columns[0]?.name ?? '',\n gotoValueSelectedFilter: FilterType.eqIgnoreCase,\n gotoValue: '',\n columnHeaderGroups: columnHeaderGroups ?? model.initialColumnHeaderGroups,\n };\n }\n\n componentDidMount(): void {\n const { partitionColumn, model } = this.props;\n const column =\n partitionColumn ?? model.columns.find(c => c.isPartitionColumn);\n if (\n model.isFilterRequired &&\n model.isValuesTableAvailable &&\n column != null\n ) {\n this.loadPartitionsTable(column);\n } else {\n this.initState();\n }\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps: IrisGridProps): void {\n const {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n sorts,\n } = this.props;\n\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n\n const changedInputFilters =\n inputFilters !== prevProps.inputFilters\n ? inputFilters.filter(\n inputFilter => !prevProps.inputFilters.includes(inputFilter)\n )\n : [];\n if (changedInputFilters.length > 0) {\n const { advancedSettings } = this.props;\n const replaceExistingFilters =\n advancedSettings.get(\n AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.startLoading('Filtering...', true);\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', true);\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n const { loadingScrimStartTime, loadingScrimFinishTime } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n const now = Date.now();\n const currentTime = now - loadingScrimStartTime;\n const totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n const loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n }\n\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n\n return { loadingScrimProgress };\n });\n });\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount(): void {\n const { model } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n if (this.animationFrame !== undefined) {\n cancelAnimationFrame(this.animationFrame);\n }\n }\n\n grid: Grid | null;\n\n gridWrapper: HTMLDivElement | null;\n\n lastFocusedFilterBarColumn?: number;\n\n lastLoadedConfig: Pick<\n IrisGridState,\n | 'advancedFilters'\n | 'aggregationSettings'\n | 'customColumns'\n | 'quickFilters'\n | 'reverseType'\n | 'rollupConfig'\n | 'searchFilter'\n | 'selectDistinctColumns'\n | 'sorts'\n > | null;\n\n tooltip?: Tooltip;\n\n pending: Pending;\n\n globalColumnFormats?: readonly 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 gotoRowRef: React.RefObject<GotoRowElement>;\n\n toggleFilterBarAction: Action;\n\n toggleSearchBarAction: Action;\n\n toggleGotoRowAction: Action;\n\n discardAction: Action;\n\n commitAction: Action;\n\n contextActions: ContextAction[];\n\n tableUtils: TableUtils;\n\n getAdvancedMenuOpenedHandler = memoize(\n (column: ModelIndex) => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (\n model: IrisGridModel,\n column: Column,\n advancedFilterOptions: AdvancedFilterOptions | undefined,\n sortDirection: SortDirection | undefined,\n formatter: Formatter\n ) => (\n <AdvancedFilterCreator\n model={model}\n column={column}\n onFilterChange={this.handleAdvancedFilterChange}\n onSortChange={this.handleAdvancedFilterSortChange}\n onDone={this.handleAdvancedFilterDone}\n options={advancedFilterOptions}\n sortDirection={sortDirection}\n formatter={formatter}\n tableUtils={this.tableUtils}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable: boolean,\n isCustomColumnsAvailable: boolean,\n isFormatColumnsAvailable: boolean,\n isRollupAvailable: boolean,\n isTotalsAvailable: boolean,\n isSelectDistinctAvailable: boolean,\n isExportAvailable: boolean,\n toggleFilterBarAction: Action,\n toggleSearchBarAction: Action,\n toggleGotoRowAction: Action,\n isFilterBarShown: boolean,\n showSearchBar: boolean,\n canDownloadCsv: boolean,\n canToggleSearch: boolean,\n showGotoRow: boolean,\n hasAdvancedSettings: boolean\n ): readonly OptionItem[] => {\n const optionItems: OptionItem[] = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp,\n });\n }\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Organize Columns',\n icon: dhEye,\n });\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Custom Columns',\n icon: vsSplitHorizontal,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n });\n }\n if (hasAdvancedSettings) {\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\n }\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n });\n }\n optionItems.push({\n type: OptionType.GOTO,\n title: 'Go to',\n subtitle: toggleGotoRowAction.shortcut.getDisplayText(),\n icon: vsReply,\n isOn: showGotoRow,\n onChange: toggleGotoRowAction.action,\n });\n\n return Object.freeze(optionItems);\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(\n (\n metricCalculator: IrisGridMetricCalculator,\n userColumnWidths: ModelSizeMap\n ): readonly ModelIndex[] =>\n IrisGridUtils.getHiddenColumns(\n new Map([...metricCalculator.initialColumnWidths, ...userColumnWidths])\n ),\n { max: 1 }\n );\n\n getAggregationMap = memoize(\n (\n columns: readonly Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyAggregationMap => {\n const aggregationMap = {} as Record<AggregationOperation, string[]>;\n aggregations.forEach(({ operation, selected, invert }) => {\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n );\n });\n return aggregationMap;\n }\n );\n\n getOperationMap = memoize(\n (\n columns: readonly Column[],\n aggregations: readonly Aggregation[]\n ): ReadonlyOperationMap => {\n const operationMap: OperationMap = {};\n aggregations\n .filter(\n (a: Aggregation) => !AggregationUtils.isRollupOperation(a.operation)\n )\n .forEach(({ operation, selected, invert }) => {\n AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n ).forEach(name => {\n const newOperations = [...(operationMap[name] ?? []), operation];\n operationMap[name] = Object.freeze(newOperations);\n });\n });\n return operationMap;\n }\n );\n\n getOperationOrder = memoize(\n (aggregations: readonly Aggregation[]): AggregationOperation[] =>\n aggregations\n .map((a: Aggregation) => a.operation)\n .filter(\n (o: AggregationOperation) => !AggregationUtils.isRollupOperation(o)\n )\n );\n\n getCachedFormatColumns = memoize(\n (\n dh: DhType,\n columns: readonly Column[],\n rules: readonly SidebarFormattingRule[]\n ) => getFormatColumns(dh, columns, rules)\n );\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param columns Array of columns\n * @param rulesParam Array of formatting rules\n * @param preview Optional temporary formatting rule for previewing live changes\n * @param editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns Format columns array\n */\n getCachedPreviewFormatColumns = memoize(\n (\n dh: DhType,\n columns: readonly Column[],\n rulesParam: readonly 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(dh, columns, rules);\n }\n\n return this.getCachedFormatColumns(dh, columns, rulesParam);\n }\n );\n\n getModelRollupConfig = memoize(\n (\n originalColumns: readonly Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n )\n );\n\n getModelTotalsConfig = memoize(\n (\n columns: readonly Column[],\n config: UIRollupConfig | undefined,\n aggregationSettings: AggregationSettings\n ): UITotalsTableConfig | null => {\n const { aggregations, showOnTop } = aggregationSettings;\n // If we've got rollups, then aggregations are applied as part of that...\n if (\n (config?.columns?.length ?? 0) > 0 ||\n (aggregations?.length ?? 0) === 0\n ) {\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return { operationMap, operationOrder, showOnTop };\n }\n );\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn: GridRangeIndex,\n isFilterBarShown: boolean,\n isSelectingColumn: boolean,\n loadingScrimProgress: number | null,\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n sorts: readonly Sort[],\n reverseType: ReverseType,\n rollupConfig: UIRollupConfig | undefined,\n isMenuShown: boolean\n ) => ({\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters: readonly FilterCondition[],\n quickFilters: ReadonlyQuickFilterMap,\n advancedFilters: ReadonlyAdvancedFilterMap,\n partitionFilters: readonly FilterCondition[],\n searchFilter: FilterCondition | undefined\n ) => [\n ...(customFilters ?? []),\n ...(partitionFilters ?? []),\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter !== undefined ? [searchFilter] : []),\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (\n theme: GridThemeType | null,\n isEditable: boolean,\n floatingRowCount: number\n ): Partial<IrisGridThemeType> => {\n const defaultTheme = createDefaultIrisGridTheme();\n\n // We only show the row footers when we have floating rows for aggregations\n const rowFooterWidth =\n floatingRowCount > 0\n ? theme?.rowFooterWidth ?? defaultTheme.rowFooterWidth\n : 0;\n\n return {\n ...defaultTheme,\n ...theme,\n autoSelectRow: !isEditable,\n rowFooterWidth,\n };\n },\n { max: 1 }\n );\n\n getValueForCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): string | unknown {\n const { model } = this.props;\n const { dh } = model;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue && modelColumn != null && modelRow != null) {\n const value = model.valueForCell(modelColumn, modelRow);\n if (TableUtils.isDateType(model.columns[modelColumn].type)) {\n // The returned value is just a long value, we should return the value formatted as a full date string\n const { formatter } = model;\n return dh.i18n.DateTimeFormat.format(\n UNFORMATTED_DATE_PATTERN,\n value as number | Date | DateWrapper,\n dh.i18n.TimeZone.getTimeZone(formatter.timeZone)\n );\n }\n return value;\n }\n if (rawValue) {\n return null;\n }\n if (modelColumn != null && modelRow != null) {\n return model.textForCell(modelColumn, modelRow);\n }\n return '';\n }\n\n getModelColumn(columnIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelColumns } = metrics;\n if (modelColumns == null) {\n return null;\n }\n\n return columnIndex != null ? modelColumns.get(columnIndex) : null;\n }\n\n getModelRow(rowIndex: GridRangeIndex): ModelIndex | null | undefined {\n const { metrics } = this.state;\n assertNotNull(metrics);\n const { modelRows } = metrics;\n if (modelRows == null) {\n return null;\n }\n\n return rowIndex != null ? modelRows.get(rowIndex) : null;\n }\n\n getTheme(): Partial<IrisGridThemeType> {\n const { model, theme } = this.props;\n return this.getCachedTheme(\n theme,\n (isEditableGridModel(model) && model.isEditable) ?? false,\n model.floatingTopRowCount + model.floatingBottomRowCount\n );\n }\n\n getVisibleColumn(modelIndex: ModelIndex): VisibleIndex {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n makeQuickFilter(\n column: Column,\n text: string,\n timeZone: string\n ): FilterCondition | null {\n try {\n return this.tableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param inputFilters Array of input filters to apply\n * @param replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(\n inputFilters: InputFilter[],\n replaceExisting = false\n ): void {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const newAdvancedFilters = replaceExisting\n ? new Map()\n : new Map(advancedFilters);\n const newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n\n let isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(({ name, type, value }) => {\n const modelIndex = model.columns.findIndex(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged =\n this.applyQuickFilter(modelIndex, value, newQuickFilters) ||\n isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param modelIndex The index in the model of the column to set\n * @param value The string value to set to the quick filter\n * @param quickFilters The quick filters map\n * @returns True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(\n modelIndex: ModelIndex,\n value: string | null,\n quickFilters: QuickFilterMap\n ): boolean {\n const { model } = this.props;\n const { formatter } = model;\n const column = model.columns[modelIndex];\n\n if (value != null && `${value}`.trim().length > 0) {\n const quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n const { text } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: this.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilterMap(advancedFilters: ReadonlyAdvancedFilterMap): void {\n this.setState({ advancedFilters });\n }\n\n setAdvancedFilter(\n modelIndex: ModelIndex,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param modelIndex The index in the model for the column this filter is applied to\n * @param filter A filter to apply to the column, or null if there was an error\n * @param text The original text the filter was created with\n */\n setQuickFilter(\n modelIndex: ModelIndex,\n filter: FilterCondition | null,\n text: string\n ): void {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n return { quickFilters: newQuickFilters };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param filterMap Filter map\n */\n setFilterMap(filterMap: FilterMap): void {\n log.debug('setFilterMap', filterMap);\n\n const { advancedSettings } = this.props;\n const clearFiltersOnLinkerFilterUpdate =\n advancedSettings.get(\n AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n\n const { model } = this.props;\n filterMap.forEach(({ columnType, filterList }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const combinedText = IrisGridUtils.combineFiltersFromList(\n columnType,\n filterList\n );\n if (combinedText.length === 0) {\n this.removeQuickFilter(columnIndex);\n } else {\n const { formatter } = model;\n this.setQuickFilter(\n columnIndex,\n this.makeQuickFilter(column, combinedText, formatter.timeZone),\n `${combinedText}`\n );\n }\n });\n }\n\n removeColumnFilter(modelColumn: ModelIndex): void {\n this.startLoading('Filtering...', true);\n\n this.setState(\n ({ advancedFilters, quickFilters }: Partial<IrisGridState>) => {\n const newAdvancedFilters = advancedFilters\n ? new Map(advancedFilters)\n : new Map();\n const newQuickFilters = quickFilters\n ? new Map(quickFilters)\n : new Map();\n newQuickFilters.delete(modelColumn);\n newAdvancedFilters.delete(modelColumn);\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n }\n );\n }\n\n removeQuickFilter(modelColumn: ModelIndex): void {\n this.startLoading('Clearing Filter...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n\n return { quickFilters: newQuickFilters };\n });\n }\n\n clearAllFilters(): void {\n log.debug('Clearing all filters');\n\n const { advancedFilters, quickFilters, searchFilter } = this.state;\n if (\n quickFilters.size === 0 &&\n advancedFilters.size === 0 &&\n searchFilter === null\n ) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n\n this.startLoading('Clearing Filters...', true);\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearCrossColumSearch(): void {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: undefined,\n });\n }\n\n clearGridInputField(): void {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters(): void {\n log.debug('Rebuilding filters');\n\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns, formatter } = model;\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = this.tableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: this.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n\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 =\n FormatterUtils.getDateTimeFormatterOptions(settings);\n\n const defaultDecimalFormatOptions =\n settings?.defaultDecimalFormatOptions ?? {};\n const defaultIntegerFormatOptions =\n settings?.defaultIntegerFormatOptions ?? {};\n const truncateNumbersWithPound =\n settings?.truncateNumbersWithPound ?? false;\n\n const 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: readonly ColumnName[],\n columns: readonly Column[],\n movedColumns: readonly MoveOperation[],\n floatingLeftColumnCount: number,\n floatingRightColumnCount: number,\n draggingRange?: BoundedAxisRange\n ): readonly ColumnName[] => {\n const floatingColumns: ColumnName[] = [];\n\n for (let i = 0; i < floatingLeftColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n\n for (let i = 0; i < floatingRightColumnCount; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(columns.length - 1 - i, movedColumns)]\n .name\n );\n }\n\n if (draggingRange) {\n for (let i = draggingRange[0]; i <= draggingRange[1]; i += 1) {\n floatingColumns.push(\n columns[GridUtils.getModelIndex(i, movedColumns)].name\n );\n }\n }\n\n const columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);\n\n return Object.freeze([...columnSet]);\n }\n );\n\n updateFormatter(\n updatedFormats: { customColumnFormatMap?: Map<ColumnName, FormattingRule> },\n forceUpdate = true\n ): void {\n const { customColumnFormatMap } = this.state;\n const { model } = this.props;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...(this.globalColumnFormats ?? []),\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n model.dh,\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions,\n this.truncateNumbersWithPound\n );\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 model.dh,\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverseType,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(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 if (TableUtils.isCharType(partitionColumn.type) && partition === '') {\n return;\n }\n\n const { model } = this.props;\n\n const partitionText = TableUtils.isCharType(partitionColumn.type)\n ? model.displayString(\n partition,\n partitionColumn.type,\n partitionColumn.name\n )\n : partition;\n const partitionFilter = this.tableUtils.makeQuickFilterFromComponent(\n partitionColumn,\n partitionText\n );\n if (partitionFilter === null) {\n return;\n }\n\n const partitionFilters = [partitionFilter];\n this.setState({\n partition,\n partitionFilters,\n });\n }\n\n copyCell(\n columnIndex: GridRangeIndex,\n rowIndex: GridRangeIndex,\n rawValue = false\n ): void {\n const { canCopy } = this.props;\n if (canCopy) {\n const value = String(\n this.getValueForCell(columnIndex, rowIndex, rawValue)\n );\n copyToClipboard(value).catch(e => log.error('Unable to copy cell', e));\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @paramranges The ranges to copy\n * @param includeHeaders Include the headers or not\n * @param formatValues Whether to format values or not\n * @param error Error message if one occurred\n */\n copyRanges(\n ranges: readonly GridRange[],\n includeHeaders = false,\n formatValues = true,\n error?: string\n ): void {\n const { model, canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n\n if (canCopy) {\n const copyOperation = {\n ranges: GridRange.boundedRanges(\n ranges,\n model.columnCount,\n model.rowCount\n ),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error,\n };\n\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\n }\n\n startLoading(loadingText: string, resetRanges = false): void {\n this.setState({ loadingText });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n assertNotNull(minScrimTransitionTime);\n assertNotNull(maxScrimTransitionTime);\n const height = this.gridWrapper?.getBoundingClientRect().height ?? 0;\n const scrimTransitionTime = Math.max(\n minScrimTransitionTime,\n Math.min(height / 2, maxScrimTransitionTime)\n );\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime =\n this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0,\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true,\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n\n stopLoading(): void {\n this.loadingScrimStartTime = undefined;\n this.loadingScrimFinishTime = undefined;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n });\n\n if (this.loadingTimer != null) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = undefined;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback(): void {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.lastLoadedConfig;\n\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n aggregationSettings: DEFAULT_AGGREGATION_SETTINGS,\n customColumns: [],\n quickFilters: new Map(),\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n rollupConfig: undefined,\n selectDistinctColumns: [],\n sorts: [],\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback(): boolean {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n\n startListening(model: IrisGridModel): void {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n stopListening(model: IrisGridModel): void {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n focus(): void {\n this.grid?.focus();\n }\n\n focusFilterBar(column: VisibleIndex): void {\n const { movedColumns } = this.state;\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = GridUtils.getModelIndex(column, movedColumns);\n\n if (\n column == null ||\n column < 0 ||\n columnCount <= column ||\n !model.isFilterable(modelColumn)\n ) {\n this.setState({ focusedFilterBarColumn: null });\n return;\n }\n\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n const { left, rightVisible, lastLeft } = metrics;\n if (column < left) {\n this.grid?.setViewState({ left: column }, true);\n } else if (rightVisible < column) {\n const metricState = this.grid?.getMetricState();\n assertNotNull(metricState);\n const newLeft = metricCalculator.getLastLeft(\n metricState,\n column,\n metricCalculator.getVisibleWidth(metricState)\n );\n this.grid?.setViewState(\n { left: Math.min(newLeft, lastLeft), leftOffset: 0 },\n true\n );\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex: VisibleIndex): void {\n const { metricCalculator, movedColumns } = this.state;\n metricCalculator.setColumnWidth(\n GridUtils.getModelIndex(columnVisibleIndex, movedColumns),\n 0\n );\n\n this.grid?.forceUpdate();\n }\n\n freezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('freezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.add(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size - 1,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n unFreezeColumnByColumnName(columnName: ColumnName): void {\n const { frozenColumns, movedColumns } = this.state;\n const { model } = this.props;\n log.debug2('unfreezing column', columnName);\n\n const allFrozenColumns =\n frozenColumns == null\n ? new Set(model.frozenColumns)\n : new Set(frozenColumns);\n\n allFrozenColumns.delete(columnName);\n\n const modelIndex = model.getColumnIndexByName(columnName);\n assertNotNull(modelIndex);\n const visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);\n\n // Move to after remaining frozen columns and front columns\n const newMovedColumns = GridUtils.moveItem(\n visibleIndex,\n allFrozenColumns.size + model.frontColumns.length,\n movedColumns\n );\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n movedColumns: newMovedColumns,\n });\n }\n\n handleColumnVisibilityChanged(\n modelIndexes: readonly ModelIndex[],\n isVisible: boolean\n ): void {\n const { metricCalculator, metrics } = this.state;\n assertNotNull(metrics);\n if (isVisible) {\n modelIndexes.forEach(modelIndex => {\n const defaultWidth =\n metricCalculator.initialColumnWidths.get(modelIndex);\n const calculatedWidth = getOrThrow(\n metrics.calculatedColumnWidths,\n modelIndex\n );\n\n if (defaultWidth !== calculatedWidth) {\n metricCalculator.setColumnWidth(modelIndex, calculatedWidth);\n } else {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid?.forceUpdate();\n }\n\n handleColumnVisibilityReset(): void {\n const { metricCalculator, metrics } = this.state;\n const { model } = this.props;\n assertNotNull(metrics);\n for (let i = 0; i < metrics.columnCount; i += 1) {\n metricCalculator.resetColumnWidth(i);\n }\n this.handleMovedColumnsChanged(model.initialMovedColumns);\n this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);\n this.setState({\n frozenColumns: model.layoutHints?.frozenColumns ?? [],\n });\n }\n\n handleCrossColumnSearch(\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n invertSearchColumns: boolean\n ): void {\n const { model } = this.props;\n this.startLoading('Searching...');\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter = debounce(\n (\n searchValue: string,\n selectedSearchColumns: readonly ColumnName[],\n columns: readonly Column[],\n invertSearchColumns: boolean\n ): void => {\n const { model } = this.props;\n const searchFilter = CrossColumnSearch.createSearchFilter(\n model.dh,\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n },\n SET_FILTER_DEBOUNCE\n );\n\n handleAnimationLoop(): void {\n this.grid?.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart(): void {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd(): void {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionAppend(value: string): void {\n const { onPartitionAppend } = this.props;\n const { partitionColumn } = this.state;\n if (partitionColumn == null) {\n return;\n }\n onPartitionAppend?.(partitionColumn, value);\n }\n\n handlePartitionChange(partition: string): void {\n const { partitionColumn } = this.state;\n if (partitionColumn == null) {\n return;\n }\n this.updatePartition(partition, partitionColumn);\n }\n\n handlePartitionFetchAll(): void {\n this.setState({\n partitionFilters: [],\n isSelectingPartition: false,\n });\n }\n\n handlePartitionDone(): void {\n this.setState({ isSelectingPartition: false });\n }\n\n handleTableLoadError(error: unknown): void {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error(error);\n\n const { onError } = this.props;\n onError(error);\n }\n\n showAllColumns(): void {\n const { metricCalculator } = this.state;\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const entries = [...userColumnWidths.entries()];\n for (let i = 0; i < entries.length; i += 1) {\n const [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n this.grid?.forceUpdate();\n }\n\n toggleSort(columnIndex: VisibleIndex, addToExisting: boolean): void {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n assertNotNull(modelColumn);\n if (model.isColumnSortable(columnIndex)) {\n const { sorts: currentSorts } = this.state;\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.columns,\n modelColumn,\n addToExisting\n );\n\n this.updateSorts(sorts);\n } else {\n log.debug('Column type was not sortable', model.columns[columnIndex]);\n }\n }\n\n updateSorts(sorts: readonly Sort[]): void {\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n sortColumn(\n modelColumn: ModelIndex,\n direction: SortDirection = TableUtils.sortDirection.none,\n isAbs = false,\n addToExisting = false\n ): void {\n assertNotNull(modelColumn);\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.sort,\n model.columns,\n modelColumn,\n direction,\n isAbs,\n addToExisting\n );\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid?.forceUpdate();\n }\n\n reverse(reverseType: ReverseType): void {\n this.startLoading('Reversing...');\n this.setState({ reverseType });\n this.grid?.forceUpdate();\n }\n\n isReversible(): boolean {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn): void {\n let { isFilterBarShown } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({ isFilterBarShown });\n\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n let columnIndex = 0;\n const { model } = this.props;\n const { columnCount } = model;\n for (let i = 0; i < columnCount; i += 1) {\n const modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column != null && TableUtils.isTextType(column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n this.grid?.focus();\n }\n }\n\n isTableSearchAvailable(): boolean {\n const { model, canToggleSearch } = this.props;\n const { dh } = model;\n const searchDisplayMode = model?.layoutHints?.searchDisplayMode;\n\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_HIDE) {\n return false;\n }\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_SHOW) {\n return true;\n }\n\n return canToggleSearch;\n }\n\n toggleSearchBar(): void {\n const { showSearchBar } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n\n const update = !showSearchBar;\n this.setState(\n {\n showSearchBar: update,\n },\n () => {\n if (update && this.crossColumnRef?.current) {\n this.crossColumnRef?.current.focus();\n } else {\n this.grid?.focus();\n }\n }\n );\n }\n\n toggleGotoRow(row = '', value = '', columnName = ''): void {\n const { isGotoShown } = this.state;\n if (row || value) {\n // if invoked with a row, keep open instead of toggle\n this.setState({\n isGotoShown: true,\n gotoValue: value,\n gotoValueSelectedColumnName: columnName,\n gotoRowError: '',\n gotoValueError: '',\n });\n this.focusRowInGrid(row);\n this.gotoRowRef.current?.focus();\n return;\n }\n\n const cursorRow = this.grid?.state.cursorRow;\n const cursorColumn = this.grid?.state.cursorColumn;\n\n if (cursorRow == null || cursorColumn == null) {\n // if a cell is not selected / grid is not rendered\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: '',\n gotoValue: '',\n gotoRowError: '',\n gotoValueError: '',\n });\n return;\n }\n // if a row is selected\n const { model } = this.props;\n const { name, type } = model.columns[cursorColumn];\n\n const cellValue = model.valueForCell(cursorColumn, cursorRow);\n const text = IrisGridUtils.convertValueToText(cellValue, type);\n this.setState({\n isGotoShown: !isGotoShown,\n gotoRow: `${cursorRow + 1}`,\n gotoValue: text,\n gotoValueSelectedColumnName: name,\n gotoRowError: '',\n gotoValueError: '',\n });\n }\n\n async commitPending(): Promise<void> {\n const { model } = this.props;\n if (!isEditableGridModel(model) || !model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n\n const containsGridCellInputField =\n document?.activeElement?.classList.contains('grid-cell-input-field');\n if (containsGridCellInputField != null && containsGridCellInputField) {\n if (\n document.activeElement != null &&\n document.activeElement.classList.contains('error')\n ) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid?.focus();\n }\n\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending(): Promise<void> {\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n\n this.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map(),\n });\n }\n\n /**\n * Select the passed in column and notify listener\n * @param column The column in this table to link\n */\n selectColumn(column: Column): void {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Select all the data for a given row and notify listener\n */\n selectData(columnIndex: ModelIndex, rowIndex: ModelIndex): void {\n const { model } = this.props;\n const { columns, groupedColumns } = model;\n const dataMap: RowDataMap = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n const visibleIndex = this.getVisibleColumn(i);\n const isExpandable =\n isExpandableGridModel(model) && model.isRowExpandable(rowIndex);\n const isGrouped = groupedColumns.find(c => c.name === name) != null;\n dataMap[name] = {\n value,\n text,\n type,\n isGrouped,\n isExpandable,\n visibleIndex,\n };\n }\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n handleAdvancedFilterChange(\n column: Column,\n filter: FilterCondition | null,\n options: AdvancedFilterOptions\n ): void {\n const { model } = this.props;\n const index = model.getColumnIndexByName(column.name);\n assertNotNull(index);\n this.setAdvancedFilter(index, filter, options);\n }\n\n handleAdvancedFilterSortChange(\n column: Column,\n direction: SortDirection,\n addToExisting = false\n ): void {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n assertNotNull(columnIndex);\n const columnName = model.columns[columnIndex].name;\n const oldSort = TableUtils.getSortForColumn(model.sort, columnName);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnName,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.startLoading('Sorting...');\n this.setState({ sorts });\n\n this.grid?.forceUpdate();\n }\n\n handleAdvancedFilterDone(): void {\n this.grid?.focus();\n }\n\n handleAdvancedMenuOpened(column: GridRangeIndex): void {\n this.setState({ shownAdvancedFilter: column });\n }\n\n handleGotoRowOpened(): void {\n this.setState({ isGotoShown: true });\n }\n\n handleGotoRowClosed(): void {\n this.setState({ isGotoShown: false });\n }\n\n handleAdvancedMenuClosed(columnIndex: number): void {\n const { focusedFilterBarColumn, isFilterBarShown } = this.state;\n if (\n isFilterBarShown &&\n focusedFilterBarColumn === columnIndex &&\n this.filterInputRef?.current !== null\n ) {\n this.filterInputRef?.current.focus();\n this.setState({ shownAdvancedFilter: null });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null,\n });\n }\n }\n\n handleCancel(): void {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange(): void {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings: ChartBuilderSettings): void {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model);\n }\n\n handleGridError(error?: Error): void {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value: string): void {\n this.startLoading('Filtering...', true);\n\n this.setState(({ focusedFilterBarColumn, quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n if (focusedFilterBarColumn != null) {\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelIndex);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n }\n return { quickFilters: newQuickFilters };\n });\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true): void {\n if (setGridFocus) {\n this.grid?.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward: boolean): void {\n const { focusedFilterBarColumn } = this.state;\n assertNotNull(focusedFilterBarColumn);\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(\n modelIndex: ModelIndex,\n selectedFormat: TableColumnFormat | null\n ): void {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n const { customColumnFormatMap: prevCustomColumnFormatMap } = this.state;\n const customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n\n if (selectedFormat != null) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n assertNotNull(normalizedType);\n const columnFormattingRule = Formatter.makeColumnFormattingRule(\n normalizedType,\n column.name,\n selectedFormat\n );\n\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n\n this.updateFormatter({ customColumnFormatMap });\n }\n\n handleMenu(e: React.MouseEvent<HTMLButtonElement>): void {\n e.stopPropagation();\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose(): void {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack(): void {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option: OptionItem): void {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event: Event): void {\n const customEvent = event as CustomEvent;\n log.error('request failed:', customEvent.detail);\n this.stopLoading();\n if (this.canRollback()) {\n this.startLoading('Rolling back changes...', true);\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${customEvent.detail}`));\n }\n }\n\n handleUpdate(): void {\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n } = this.state;\n\n const config = {\n advancedFilters,\n aggregationSettings,\n customColumns,\n quickFilters,\n reverseType,\n rollupConfig,\n searchFilter,\n selectDistinctColumns,\n sorts,\n };\n\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid?.forceUpdate();\n this.stopLoading();\n }\n\n handleViewChanged(metrics?: GridMetrics): void {\n const { model } = this.props;\n const { selectionEndRow = 0 } = this.grid?.state ?? {};\n let pendingRowCount = 0;\n if (isEditableGridModel(model) && model.isEditable) {\n assertNotNull(metrics);\n const { bottomViewport } = metrics;\n\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n const bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(\n 0,\n bottomViewport -\n (model.rowCount - model.pendingRowCount) -\n model.floatingTopRowCount -\n model.floatingBottomRowCount -\n 1\n );\n }\n }\n\n this.setState({ metrics, pendingRowCount });\n }\n\n handleSelectionChanged(selectedRanges?: readonly GridRange[]): void {\n assertNotNull(selectedRanges);\n const { onSelectionChanged } = this.props;\n const { copyOperation } = this.state;\n this.setState({ selectedRanges });\n if (copyOperation != null) {\n this.setState({ copyOperation: null });\n }\n if (this.grid?.state.cursorRow != null) {\n this.setState({ gotoRow: `${this.grid.state.cursorRow + 1}` });\n }\n onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(\n movedColumns: readonly MoveOperation[],\n onChangeApplied?: () => void\n ): void {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleHeaderGroupsChanged(columnHeaderGroups: readonly ColumnGroup[]): void {\n const { model } = this.props;\n this.setState(\n {\n columnHeaderGroups: IrisGridUtils.parseColumnHeaderGroups(\n model,\n columnHeaderGroups\n ).groups,\n },\n () => this.grid?.forceUpdate()\n );\n }\n\n handleTooltipRef(tooltip: Tooltip): void {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip != null) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleConditionalFormatsChange(\n conditionalFormats: readonly SidebarFormattingRule[]\n ): void {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({ conditionalFormats });\n }\n\n handleConditionalFormatCreate(): void {\n log.debug('Create new conditional format');\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Create Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined,\n });\n }\n\n handleConditionalFormatEdit(index: number): void {\n log.debug('Edit conditional format', index);\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Edit Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: { ...conditionalFormats[index] },\n });\n }\n\n // Apply live changes\n handleConditionalFormatEditorUpdate = debounce(\n (conditionalFormatPreview?: SidebarFormattingRule): void => {\n this.setState({ conditionalFormatPreview });\n },\n SET_CONDITIONAL_FORMAT_DEBOUNCE\n );\n\n handleConditionalFormatEditorSave(config: SidebarFormattingRule): void {\n log.debug('Save conditional format changes', config);\n this.setState(\n state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n const conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return { conditionalFormats };\n },\n () => {\n this.handleMenuBack();\n }\n );\n }\n\n handleConditionalFormatEditorCancel(): void {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({ conditionalFormatEditIndex: null });\n }\n\n handleUpdateCustomColumns(customColumns: readonly string[]): void {\n log.info(`handleUpdateCustomColumns:`, customColumns);\n\n const { model } = this.props;\n const {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns,\n } = this.state;\n\n const { columns } = model;\n const oldCustomColumns = model.customColumns.map(\n customColumn => `${customColumn}`\n );\n\n const removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(\n oldCustomColumns,\n customColumns\n );\n if (removedColumnNames.length > 0) {\n const newSorts = IrisGridUtils.removeSortsInColumns(\n sorts,\n removedColumnNames\n );\n const newQuickFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n quickFilters,\n removedColumnNames\n );\n const newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n advancedFilters,\n removedColumnNames\n );\n const newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n );\n const newSelectDistinctColumns =\n IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts.length) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({ sorts: newSorts });\n }\n if (\n newQuickFilters.size !== quickFilters.size ||\n newAdvancedFilters.size !== advancedFilters.size\n ) {\n log.debug(`removing filters from removed custom columns...`);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\n `change moved columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ movedColumns: newMovedColumns });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\n `change selectDistinct columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ selectDistinctColumns: newSelectDistinctColumns });\n }\n }\n\n this.setState({ customColumns });\n if (customColumns.length > 0) {\n // If there are no custom columns, the change handler never fires\n // This causes the loader to stay until canceled by the user\n this.startLoading('Applying custom columns...');\n }\n }\n\n handleCustomColumnsChanged(): void {\n log.debug('custom columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.stopLoading();\n this.grid?.forceUpdate();\n } else {\n this.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 frozenColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n selectDistinctColumns: [],\n });\n }\n\n handleSelectDistinctChanged(columnNames: readonly ColumnName[]): void {\n log.debug('SelectDistinct change', columnNames);\n\n this.resetGridViewState();\n\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Selecting distinct values in ${\n columnNames.length > 0 ? columnNames.join(', ') : ''\n }...`\n );\n\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n });\n }\n\n handleDownloadTableStart(): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTableStart for user without download CSV permission.'\n );\n }\n }\n\n handleDownloadTable(\n fileName: string,\n frozenTable: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ): void {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info(\n 'start table downloading',\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n };\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTable for user without download CSV permission.'\n );\n }\n }\n\n async seekRow(inputString: string, isBackwards = false): Promise<void> {\n const {\n gotoValueSelectedColumnName: selectedColumnName,\n gotoValueSelectedFilter,\n } = this.state;\n const { model } = this.props;\n const { dh } = model;\n if (!model.isSeekRowAvailable) {\n return;\n }\n\n if (inputString === '') {\n return;\n }\n const selectedColumn = IrisGridUtils.getColumnByName(\n model.columns,\n selectedColumnName\n );\n\n if (selectedColumn === undefined) {\n return;\n }\n\n let searchFromRow = this.grid?.state.cursorRow;\n\n if (searchFromRow == null) {\n searchFromRow = 0;\n }\n\n const isContains =\n gotoValueSelectedFilter === FilterType.contains ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n const isIgnoreCase =\n gotoValueSelectedFilter === FilterType.eqIgnoreCase ||\n gotoValueSelectedFilter === FilterType.containsIgnoreCase;\n\n try {\n const { formatter } = model;\n const columnDataType = TableUtils.getNormalizedType(selectedColumn.type);\n\n let rowIndex;\n\n switch (columnDataType) {\n case TableUtils.dataType.CHAR:\n case TableUtils.dataType.STRING: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n isIgnoreCase,\n isContains,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DATETIME: {\n const [startDate] = DateUtils.parseDateRange(\n dh,\n inputString,\n formatter.timeZone\n );\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.DATETIME,\n startDate,\n undefined,\n undefined,\n isBackwards ?? false\n );\n break;\n }\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT: {\n if (\n !TableUtils.isBigDecimalType(selectedColumn.type) &&\n !TableUtils.isBigIntegerType(selectedColumn.type)\n ) {\n let inputValue = parseInt(inputString, 10);\n if (inputString === '-Infinity') {\n inputValue = Number.NEGATIVE_INFINITY;\n } else if (inputString === 'Infinity') {\n inputValue = Number.POSITIVE_INFINITY;\n }\n\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.NUMBER,\n inputValue,\n undefined,\n undefined,\n isBackwards ?? false\n );\n } else {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n inputString,\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n break;\n }\n default: {\n rowIndex = await model.seekRow(\n searchFromRow,\n selectedColumn,\n dh.ValueType.STRING,\n this.tableUtils.makeValue(\n selectedColumn.type,\n inputString,\n formatter.timeZone\n ),\n undefined,\n undefined,\n isBackwards ?? false\n );\n }\n }\n\n this.grid?.setFocusRow(rowIndex);\n this.setState({ gotoValueError: '' });\n } catch (e: unknown) {\n this.setState({ gotoValueError: 'invalid input' });\n }\n }\n\n handleCancelDownloadTable(): void {\n this.tableSaver?.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate = throttle(\n (\n tableDownloadProgress: number,\n tableDownloadEstimatedTime: number | null\n ) => {\n const { tableDownloadStatus } = this.state;\n if (\n tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n ) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n },\n UPDATE_DOWNLOAD_THROTTLE\n );\n\n handleDownloadCompleted(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled(): void {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED,\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param ranges The ranges to delete\n */\n deleteRanges(ranges: readonly GridRange[]): void {\n const { model } = this.props;\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection(): void {\n if (this.grid == null) {\n return;\n }\n const { isSelectingColumn } = this.props;\n if (isSelectingColumn) {\n const { columnAllowedCursor } = this.props;\n this.grid.setState({ cursor: columnAllowedCursor });\n } else {\n this.grid.setState({ cursor: null });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true): void {\n if (!this.grid) {\n return;\n }\n\n this.grid.clearSelectedRanges();\n this.grid.setViewState(\n { left: 0, top: 0, topOffset: 0, leftOffset: 0 },\n forceUpdate\n );\n }\n\n sendStateChange(): void {\n if (!this.grid) {\n return;\n }\n const { state: irisGridState } = this;\n const { state: gridState } = this.grid;\n const { onStateChange } = this.props;\n\n onStateChange(irisGridState, gridState);\n }\n\n handleOverflowClose(): void {\n this.setState({\n showOverflowModal: false,\n });\n }\n\n getColumnBoundingRect(): DOMRect {\n const { metrics, shownColumnTooltip } = this.state;\n assertNotNull(metrics);\n assertNotNull(shownColumnTooltip);\n const gridRect = this.gridWrapper?.getBoundingClientRect();\n const popperMargin = 20;\n assertNotNull(gridRect);\n const {\n columnHeaderHeight,\n allColumnXs,\n allColumnWidths,\n width,\n columnHeaderMaxDepth,\n } = metrics;\n const columnX = allColumnXs.get(shownColumnTooltip);\n const columnWidth = allColumnWidths.get(shownColumnTooltip);\n\n assertNotNull(columnX);\n assertNotNull(columnWidth);\n\n const left =\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin);\n\n return {\n top: gridRect.top + (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin),\n bottom: gridRect.top + columnHeaderMaxDepth * columnHeaderHeight,\n right:\n gridRect.left +\n clamp(columnX + columnWidth / 2, popperMargin, width - popperMargin) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n x: left,\n y: gridRect.top,\n toJSON: () => {\n throw new Error('not implemented');\n },\n };\n }\n\n getOverflowButtonTooltip = memoize(\n (overflowButtonTooltipProps: CSSProperties): ReactNode => {\n if (overflowButtonTooltipProps == null) {\n return null;\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...overflowButtonTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'left',\n modifiers: {\n flip: {\n behavior: ['left', 'right'],\n },\n },\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n View full contents\n </Tooltip>\n </div>\n );\n }\n );\n\n getExpandCellTooltip = memoize(\n (expandCellTooltipProps: CSSProperties): ReactNode => {\n if (expandCellTooltipProps == null) {\n return null;\n }\n\n const { expandTooltipDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...expandCellTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom-start',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={Date.now()}\n options={popperOptions}\n ref={this.handleTooltipRef}\n >\n <div style={{ textAlign: 'left' }}>\n Click to {expandTooltipDisplayValue} row\n <br />\n {ContextActionUtils.isMacPlatform() ? '⌘' : 'Ctrl+'}Click to\n expand row and all children\n </div>\n </Tooltip>\n </div>\n );\n }\n );\n\n getLinkHoverTooltip = memoize(\n (linkHoverTooltipProps: CSSProperties): ReactNode => {\n if (linkHoverTooltipProps == null) {\n return null;\n }\n\n const { linkHoverDisplayValue } = this.state;\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n ...linkHoverTooltipProps,\n pointerEvents: 'none',\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n };\n\n return (\n <div style={wrapperStyle}>\n <Tooltip options={popperOptions} ref={this.handleTooltipRef}>\n <div className=\"link-hover-tooltip\">\n {linkHoverDisplayValue} - Click once to follow.\n <br />\n Click and hold to select this cell.\n </div>\n </Tooltip>\n </div>\n );\n }\n );\n\n handleGotoRowSelectedRowNumberSubmit(): void {\n const { gotoRow: rowNumber } = this.state;\n this.focusRowInGrid(rowNumber);\n }\n\n focusRowInGrid(rowNumber: string): void {\n const { model } = this.props;\n const { rowCount } = model;\n this.setState({ gotoRow: rowNumber });\n if (rowNumber === '') {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n return;\n }\n const rowInt = parseInt(rowNumber, 10);\n if (rowInt > rowCount || rowInt < -rowCount) {\n this.setState({ gotoRowError: 'Invalid row index' });\n } else if (rowInt === 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(0);\n } else if (rowInt < 0) {\n this.setState({ gotoRowError: '', gotoValueError: '' });\n this.grid?.setFocusRow(rowInt + rowCount);\n } else {\n this.grid?.setFocusRow(rowInt - 1);\n this.setState({ gotoRowError: '', gotoValueError: '' });\n }\n }\n\n handleGotoRowSelectedRowNumberChanged(\n event: ChangeEvent<HTMLInputElement>\n ): void {\n const rowNumber = event.target.value;\n this.focusRowInGrid(rowNumber);\n }\n\n getColumnTooltip(\n visibleIndex: VisibleIndex,\n metrics: GridMetrics,\n model: IrisGridModel\n ): ReactNode {\n const {\n columnHeaderHeight,\n columnHeaderMaxDepth,\n allColumnXs,\n allColumnWidths,\n width,\n } = metrics;\n const columnX = allColumnXs.get(visibleIndex);\n const columnWidth = allColumnWidths.get(visibleIndex);\n\n if (columnX == null || columnWidth == null) {\n return null;\n }\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n const boundedLeft = Math.max(0, columnX);\n let boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n\n const wrapperStyle: CSSProperties = {\n position: 'absolute',\n top: (columnHeaderMaxDepth - 1) * columnHeaderHeight,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n const virtualReference: ReferenceObject = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect: this.getColumnBoundingRect,\n };\n\n const popperOptions: PopperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(visibleIndex);\n if (modelColumn == null) return null;\n\n const column = model.columns[modelColumn];\n if (column == null) return null;\n\n return (\n <div style={wrapperStyle}>\n <Tooltip\n key={column.name}\n timeout={400}\n interactive\n options={popperOptions}\n ref={this.handleTooltipRef}\n referenceObject={virtualReference}\n onExited={() => {\n this.setState({ shownColumnTooltip: null });\n }}\n >\n <ColumnStatistics\n model={model}\n column={column}\n onStatistics={() => {\n this.tooltip?.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n\n handleGotoValueSelectedColumnNameChanged(columnName: ColumnName): void {\n const { model } = this.props;\n const cursorRow = this.grid?.state.cursorRow;\n\n if (cursorRow != null) {\n const index = model.getColumnIndexByName(columnName);\n const column = IrisGridUtils.getColumnByName(model.columns, columnName);\n if (index == null || column == null) {\n return;\n }\n const value = model.valueForCell(index, cursorRow);\n const text = IrisGridUtils.convertValueToText(value, column.type);\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValue: text,\n gotoValueError: '',\n });\n }\n this.setState({\n gotoValueSelectedColumnName: columnName,\n gotoValueError: '',\n });\n }\n\n handleGotoValueSelectedFilterChanged(value: FilterTypeValue): void {\n this.setState({ gotoValueSelectedFilter: value, gotoValueError: '' });\n }\n\n handleGotoValueChanged = (input: string): void => {\n this.setState({ gotoValue: input });\n this.debouncedSeekRow(input);\n };\n\n debouncedSeekRow = debounce((input: string): void => {\n this.seekRow(input);\n }, SEEK_ROW_DEBOUNCE);\n\n handleGotoValueSubmitted(isBackwards?: boolean): void {\n const { gotoValue } = this.state;\n this.seekRow(gotoValue, isBackwards);\n }\n\n render(): ReactElement | null {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart,\n onPartitionAppend,\n } = this.props;\n const {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n keyHandlers,\n mouseHandlers,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n partition,\n partitionFilters,\n partitionTable,\n partitionColumn,\n searchFilter,\n selectDistinctColumns,\n\n movedColumns,\n movedRows,\n\n formatter,\n conditionalFormats,\n conditionalFormatPreview,\n conditionalFormatEditIndex,\n\n sorts,\n reverseType,\n customColumns,\n\n selectedRanges,\n isTableDownloading,\n tableDownloadStatus,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n\n aggregationSettings,\n selectedAggregation,\n rollupConfig,\n openOptions,\n pendingSavePromise,\n pendingSaveError,\n pendingRowCount,\n pendingDataErrors,\n pendingDataMap,\n toastMessage,\n frozenColumns,\n columnHeaderGroups,\n showOverflowModal,\n overflowText,\n overflowButtonTooltipProps,\n expandCellTooltipProps,\n linkHoverTooltipProps,\n isGotoShown,\n gotoRow,\n gotoRowError,\n gotoValueError,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueSelectedFilter,\n } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n );\n\n const userColumnWidths = metricCalculator.getUserColumnWidths();\n const stateOverride = this.getCachedStateOverride(\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n isMenuShown\n );\n const top = metrics ? metrics.top : 0;\n const bottom = metrics ? metrics.bottomViewport : 0;\n let left = null;\n let right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n const isVisible =\n metrics != null && metrics.width > 0 && metrics.height > 0;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n\n let focusField = null;\n\n const debounceMs = metrics\n ? Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n )\n : IrisGrid.maxDebounce;\n\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n const { gridX, gridY, allColumnXs, allColumnWidths, width } = metrics;\n const columnX = allColumnXs.get(focusedFilterBarColumn);\n const columnWidth = allColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - (theme.filterBarHeight ?? 0);\n const fieldWidth = columnWidth + 1; // cover right border\n const fieldHeight = (theme.filterBarHeight ?? 0) - 1; // remove bottom border\n const style = {\n top: y,\n left: x,\n minWidth: Math.min(fieldWidth, width - x), // Don't cause overflow\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n assertNotNull(modelColumn);\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n const isBarFiltered =\n quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = (\n <FilterInputField\n ref={this.filterInputRef}\n style={style}\n className={classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered,\n })}\n isAdvancedFilterSet={advancedFilter != null}\n onAdvancedFiltersTriggered={() => {\n this.setState({ shownAdvancedFilter: focusedFilterBarColumn });\n }}\n key={focusedFilterBarColumn}\n onChange={this.handleFilterBarChange}\n onDone={this.handleFilterBarDone}\n onTab={this.handleFilterBarTab}\n onContextMenu={this.grid?.handleContextMenu}\n debounceMs={debounceMs}\n value={value}\n />\n );\n }\n }\n\n let loadingElement = null;\n if (loadingText != null) {\n const loadingStatus = (\n <div className=\"iris-grid-loading-status\">\n <div\n className={classNames('iris-grid-loading-status-bar', {\n show: loadingSpinnerShown,\n })}\n >\n {loadingText}\n </div>\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames('iris-grid-btn-cancel', {\n show: loadingSpinnerShown,\n })}\n >\n <FontAwesomeIcon icon={vsClose} transform=\"down-1\" />\n Cancel\n </button>\n </div>\n );\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div className=\"iris-grid-loading\" style={{ top: gridY }}>\n {loadingStatus}\n </div>\n );\n }\n\n let columnTooltip: React.ReactNode = null;\n if (shownColumnTooltip != null && metrics) {\n columnTooltip = this.getColumnTooltip(shownColumnTooltip, metrics, model);\n // #510 We may need to update the position of the tooltip if it's already opened and columns are resized\n this.tooltip?.update();\n }\n\n const filterBar = [];\n if (metrics && isFilterBarShown) {\n const { gridX, gridY, visibleColumns, allColumnXs, allColumnWidths } =\n metrics;\n const { filterBarHeight } = theme;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const isFilterable = model.isFilterable(modelColumn);\n if (\n isFilterable &&\n columnX != null &&\n columnWidth != null &&\n columnWidth > 0\n ) {\n const x = gridX + columnX + columnWidth - 24;\n const y = gridY - (filterBarHeight ?? 0) + 2; // 2 acts as top margin for the button\n const style: CSSProperties = {\n position: 'absolute',\n top: y,\n left: x,\n };\n const advancedFilter = advancedFilters.get(modelColumn);\n const isFilterSet = advancedFilter != null;\n const isFilterVisible =\n columnIndex === hoverAdvancedFilter ||\n columnIndex === focusedFilterBarColumn ||\n isFilterSet;\n const element = (\n <div\n className={classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible,\n })}\n key={columnIndex}\n style={style}\n >\n {isFilterVisible && (\n <Button\n kind=\"ghost\"\n className={classNames(\n 'btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({ shownAdvancedFilter: columnIndex });\n }}\n onContextMenu={event => {\n this.grid?.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon\n icon={vsFilter}\n className=\"filter-light\"\n />\n </div>\n </Button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n allColumnXs,\n allColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = allColumnXs.get(columnIndex);\n const columnWidth = allColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style: CSSProperties = isFilterBarShown\n ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight,\n }\n : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight,\n };\n const modelColumn = this.getModelColumn(columnIndex);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column == null) {\n // Grid metrics is likely out of sync with model\n log.warn(\n `Column does not exist at index ${modelColumn} for column array of length ${model.columns.length}`\n );\n // eslint-disable-next-line no-continue\n continue;\n }\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, column.name);\n const sortDirection = sort ? sort.direction : null;\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n options={{\n positionFixed: true,\n }}\n >\n {this.getCachedAdvancedFilterMenuActions(\n model,\n column,\n advancedFilterOptions,\n sortDirection,\n formatter\n )}\n </Popper>\n </div>\n );\n advancedFilterMenus.push(element);\n }\n }\n }\n }\n\n const optionItems = this.getCachedOptionItems(\n onCreateChart !== undefined && model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isFormatColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable || isRollup,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.toggleGotoRowAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable(),\n isGotoShown,\n advancedSettings.size > 0\n );\n\n const hiddenColumns = this.getCachedHiddenColumns(\n metricCalculator,\n userColumnWidths\n );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n hiddenColumns={hiddenColumns}\n columnHeaderGroups={columnHeaderGroups}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onReset={this.handleColumnVisibilityReset}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n onColumnHeaderGroupChanged={this.handleHeaderGroupsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n rules={conditionalFormats}\n onChange={this.handleConditionalFormatsChange}\n onCreate={this.handleConditionalFormatCreate}\n onSelect={this.handleConditionalFormatEdit}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n assertNotNull(model.columns);\n assertNotNull(this.handleConditionalFormatEditorUpdate);\n return (\n <ConditionalFormatEditor\n dh={model.dh}\n columns={model.columns}\n rule={conditionalFormatPreview}\n onUpdate={this.handleConditionalFormatEditorUpdate}\n onSave={this.handleConditionalFormatEditorSave}\n onCancel={this.handleConditionalFormatEditorCancel}\n />\n );\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return (\n <CustomColumnBuilder\n model={model}\n customColumns={customColumns}\n onSave={this.handleUpdateCustomColumns}\n onCancel={this.handleMenuBack}\n key={OptionType.CUSTOM_COLUMN_BUILDER}\n />\n );\n case OptionType.ROLLUP_ROWS:\n return (\n <RollupRows\n model={model}\n onChange={this.handleRollupChange}\n config={rollupConfig}\n key={OptionType.ROLLUP_ROWS}\n />\n );\n case OptionType.AGGREGATIONS:\n return (\n <Aggregations\n settings={aggregationSettings}\n isRollup={isRollup}\n onChange={this.handleAggregationsChange}\n onEdit={this.handleAggregationEdit}\n />\n );\n case OptionType.AGGREGATION_EDIT:\n return (\n selectedAggregation && (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n )\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n userColumnWidths={userColumnWidths}\n movedColumns={movedColumns}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={\n tableDownloadEstimatedTime ?? undefined\n }\n onDownload={this.handleDownloadTable}\n onDownloadStart={this.handleDownloadTableStart}\n onCancel={this.handleCancelDownloadTable}\n selectedRanges={selectedRanges}\n key={OptionType.TABLE_EXPORTER}\n />\n );\n case OptionType.SELECT_DISTINCT:\n return (\n <SelectDistinctBuilder\n model={model}\n selectDistinctColumns={selectDistinctColumns}\n onChange={this.handleSelectDistinctChanged}\n />\n );\n case OptionType.ADVANCED_SETTINGS:\n return (\n <AdvancedSettingsMenu\n items={advancedSettings}\n onChange={onAdvancedSettingsChange}\n />\n );\n\n default:\n throw Error(`Unexpected option type ${option.type}`);\n }\n });\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children != null && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\">\n {partitionTable && partitionColumn && partition != null && (\n <IrisGridPartitionSelector\n dh={model.dh}\n table={partitionTable}\n getFormattedString={(\n value: unknown,\n type: string,\n stringName: string\n ) => model.displayString(value, type, stringName)}\n column={partitionColumn}\n partition={partition}\n onChange={this.handlePartitionChange}\n onFetchAll={this.handlePartitionFetchAll}\n onAppend={\n onPartitionAppend !== undefined\n ? this.handlePartitionAppend\n : undefined\n }\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 model.dh,\n model.columns,\n conditionalFormats,\n conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n openOptions[openOptions.length - 1]?.type ===\n OptionType.CONDITIONAL_FORMATTING_EDIT\n ? conditionalFormatEditIndex ?? undefined\n : undefined\n )}\n rollupConfig={this.getModelRollupConfig(\n model.originalColumns,\n rollupConfig,\n aggregationSettings\n )}\n totalsConfig={this.getModelTotalsConfig(\n model.columns,\n rollupConfig,\n aggregationSettings\n )}\n selectDistinctColumns={selectDistinctColumns}\n pendingRowCount={pendingRowCount}\n pendingDataMap={pendingDataMap}\n frozenColumns={frozenColumns}\n columnHeaderGroups={columnHeaderGroups}\n />\n )}\n {!isMenuShown && (\n <div className=\"grid-settings-button\">\n <Button\n kind=\"ghost\"\n data-testid={`btn-iris-grid-settings-button-${name}`}\n onClick={this.handleMenu}\n icon={<FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />}\n tooltip=\"Table Options\"\n />\n </div>\n )}\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n {overflowButtonTooltipProps &&\n this.getOverflowButtonTooltip(overflowButtonTooltipProps)}\n {expandCellTooltipProps &&\n this.getExpandCellTooltip(expandCellTooltipProps)}\n {linkHoverTooltipProps &&\n this.getLinkHoverTooltip(linkHoverTooltipProps)}\n </div>\n <GotoRow\n ref={this.gotoRowRef}\n model={model}\n isShown={isGotoShown}\n gotoRow={gotoRow}\n gotoRowError={gotoRowError}\n gotoValueError={gotoValueError}\n onGotoRowSubmit={this.handleGotoRowSelectedRowNumberSubmit}\n onGotoRowNumberChanged={this.handleGotoRowSelectedRowNumberChanged}\n onClose={this.handleGotoRowClosed}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={() => {\n this.handleAnimationStart();\n this.focus();\n }}\n onExited={this.handleAnimationEnd}\n gotoValueSelectedColumnName={gotoValueSelectedColumnName}\n gotoValue={gotoValue}\n gotoValueFilter={gotoValueSelectedFilter}\n onGotoValueSelectedColumnNameChanged={\n this.handleGotoValueSelectedColumnNameChanged\n }\n onGotoValueSelectedFilterChanged={\n this.handleGotoValueSelectedFilterChanged\n }\n onGotoValueChanged={this.handleGotoValueChanged}\n onGotoValueSubmit={this.handleGotoValueSubmitted}\n />\n\n <PendingDataBottomBar\n error={pendingSaveError}\n isSaving={pendingSavePromise != null}\n saveTooltip={`Commit (${this.commitAction.shortcut.getDisplayText()})`}\n discardTooltip={`Discard (${this.discardAction.shortcut.getDisplayText()})`}\n pendingDataErrors={pendingDataErrors}\n pendingDataMap={pendingDataMap}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n onSave={this.handlePendingCommitClicked}\n onDiscard={this.handlePendingDiscardClicked}\n />\n <ToastBottomBar>{toastMessage}</ToastBottomBar>\n <IrisGridCopyHandler\n model={model}\n copyOperation={copyOperation ?? undefined}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n dh={model.dh}\n ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <CSSTransition\n in={isMenuShown}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n <Page title=\"Table Options\" onClose={this.handleMenuClose}>\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>\n {openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n ))}\n </Stack>\n </div>\n </CSSTransition>\n <ContextActions actions={this.contextActions} />\n </div>\n );\n }\n}\n\nexport default IrisGrid;\n"],"mappings":"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"}