@deephaven/iris-grid 0.9.4-plugins.9 → 0.10.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/IrisGrid.d.ts +23 -3
  2. package/dist/IrisGrid.d.ts.map +1 -1
  3. package/dist/IrisGrid.js +146 -8
  4. package/dist/IrisGrid.js.map +1 -1
  5. package/dist/IrisGridModel.d.ts +14 -2
  6. package/dist/IrisGridModel.d.ts.map +1 -1
  7. package/dist/IrisGridModel.js +8 -0
  8. package/dist/IrisGridModel.js.map +1 -1
  9. package/dist/IrisGridModelFactory.d.ts +1 -1
  10. package/dist/IrisGridModelFactory.d.ts.map +1 -1
  11. package/dist/IrisGridModelFactory.js +8 -1
  12. package/dist/IrisGridModelFactory.js.map +1 -1
  13. package/dist/IrisGridModelUpdater.d.ts +3 -2
  14. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  15. package/dist/IrisGridModelUpdater.js +7 -1
  16. package/dist/IrisGridModelUpdater.js.map +1 -1
  17. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  18. package/dist/IrisGridProxyModel.js +12 -0
  19. package/dist/IrisGridProxyModel.js.map +1 -1
  20. package/dist/IrisGridTableModel.d.ts +2 -0
  21. package/dist/IrisGridTableModel.d.ts.map +1 -1
  22. package/dist/IrisGridTableModel.js +47 -5
  23. package/dist/IrisGridTableModel.js.map +1 -1
  24. package/dist/IrisGridUtils.d.ts +2 -0
  25. package/dist/IrisGridUtils.d.ts.map +1 -1
  26. package/dist/IrisGridUtils.js +4 -0
  27. package/dist/IrisGridUtils.js.map +1 -1
  28. package/dist/TableUtils.d.ts.map +1 -1
  29. package/dist/TableUtils.js +2 -0
  30. package/dist/TableUtils.js.map +1 -1
  31. package/dist/sidebar/ChartBuilder.js +1 -1
  32. package/dist/sidebar/ChartBuilder.js.map +1 -1
  33. package/dist/sidebar/OptionType.d.ts +3 -1
  34. package/dist/sidebar/OptionType.d.ts.map +1 -1
  35. package/dist/sidebar/OptionType.js +2 -0
  36. package/dist/sidebar/OptionType.js.map +1 -1
  37. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +9 -0
  38. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -0
  39. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +132 -0
  40. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -0
  41. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +9 -0
  42. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -0
  43. package/dist/sidebar/conditional-formatting/ConditionEditor.js +273 -0
  44. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -0
  45. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css +21 -0
  46. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css.map +1 -0
  47. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +15 -0
  48. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -0
  49. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +115 -0
  50. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -0
  51. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts +6 -0
  52. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts.map +1 -0
  53. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +21 -0
  54. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -0
  55. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css +56 -0
  56. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css.map +1 -0
  57. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +15 -0
  58. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -0
  59. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +160 -0
  60. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -0
  61. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +119 -0
  62. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -0
  63. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +748 -0
  64. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -0
  65. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +9 -0
  66. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -0
  67. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +132 -0
  68. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -0
  69. package/dist/sidebar/conditional-formatting/StyleEditor.css +54 -0
  70. package/dist/sidebar/conditional-formatting/StyleEditor.css.map +1 -0
  71. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +9 -0
  72. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -0
  73. package/dist/sidebar/conditional-formatting/StyleEditor.js +160 -0
  74. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -0
  75. package/dist/sidebar/icons/FormatColumnWhereIcon.d.ts +4 -0
  76. package/dist/sidebar/icons/FormatColumnWhereIcon.d.ts.map +1 -0
  77. package/dist/sidebar/icons/FormatColumnWhereIcon.js +45 -0
  78. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -0
  79. package/dist/sidebar/icons/FormatRowWhereIcon.d.ts +4 -0
  80. package/dist/sidebar/icons/FormatRowWhereIcon.d.ts.map +1 -0
  81. package/dist/sidebar/icons/FormatRowWhereIcon.js +39 -0
  82. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -0
  83. package/dist/sidebar/icons/index.d.ts +2 -0
  84. package/dist/sidebar/icons/index.js +2 -0
  85. package/dist/sidebar/icons/index.js.map +1 -1
  86. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/IrisGrid.jsx"],"names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","Log","FontAwesomeIcon","ContextActionUtils","ContextActions","DeephavenSpinner","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Grid","GridRange","GridUtils","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsCloudDownload","vsFilter","vsMenu","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","dh","APIPropTypes","Pending","PromiseUtils","ValidationError","throttle","debounce","clamp","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridSortMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","IrisGridTheme","ColumnStatistics","Formatter","FormatterUtils","TableUtils","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","IrisGridUtils","CrossColumnSearch","IrisGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","DateUtils","log","module","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","isEmptyConfig","advancedFilters","quickFilters","sorts","customColumns","reverseType","searchFilter","size","length","REVERSE_TYPE","NONE","IrisGrid","makeQuickFilter","column","text","timeZone","err","error","constructor","props","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","handleAdvancedFilterChange","handleAdvancedFilterSortChange","handleAdvancedFilterDone","isChartBuilderAvailable","isCustomColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","optionItems","push","type","CHART_BUILDER","title","icon","VISIBILITY_ORDERING_BUILDER","CUSTOM_COLUMN_BUILDER","ROLLUP_ROWS","AGGREGATIONS","SELECT_DISTINCT","TABLE_EXPORTER","ADVANCED_SETTINGS","QUICK_FILTERS","subtitle","shortcut","getDisplayText","isOn","onChange","action","SEARCH_BAR","hiddenColumns","normalizer","join","columns","aggregations","aggregationMap","forEach","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","name","newOperations","map","o","originalColumns","config","aggregationSettings","getModelRollupConfig","showOnTop","getOperationMap","operationOrder","getOperationOrder","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","rollupConfig","customFilters","partitionFilters","getFiltersFromFilterMap","theme","isEditable","autoSelectRow","alwaysFetchColumns","floatingLeftColumnCount","floatingRightColumnCount","floatingLeftColumns","floatingRightColumns","slice","col","columnSet","Set","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleUpdate","handleTooltipRef","handleViewChanged","handleFormatSelection","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadProgressUpdate","handleDownloadCompleted","handlePartitionAppend","handlePartitionChange","handlePartitionFetchAll","handlePartitionDone","handleColumnVisibilityChanged","handleCrossColumnSearch","handleRollupChange","updateSearchFilter","grid","gridWrapper","lastFocusedFilterBarColumn","lastLoadedConfig","tooltip","pending","globalColumnFormats","dateTimeFormatterOptions","decimalFormatOptions","integerFormatOptions","loadingScrimStartTime","loadingScrimFinishTime","loadingTimer","renderer","tableSaver","crossColumnRef","createRef","isAnimating","animationFrame","filterInputRef","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","discardAction","pendingDataMap","discardPending","catch","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","customColumnFormatMap","isSelectingPartition","movedColumns","movedRows","partition","partitionColumn","userColumnWidths","userRowHeights","searchValue","selectedSearchColumns","invertSearchColumns","selectDistinctColumns","canCopy","frozenColumns","keyHandlers","mouseHandlers","metricCalculator","Map","searchColumns","createSearchFilter","state","focusedFilterBarColumn","metrics","partitionTable","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","loadingSpinnerShown","shownColumnTooltip","isMenuShown","isTableDownloading","isReady","tableDownloadStatus","tableDownloadProgress","tableDownloadEstimatedTime","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","componentDidMount","find","c","isPartitionColumn","isFilterRequired","isValuesTableAvailable","loadPartitionsTable","initState","startListening","componentDidUpdate","prevProps","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","startLoading","applyInputFilters","resetColumnSelection","updateFormatterSettings","updateSorts","window","requestAnimationFrame","now","Date","currentTime","totalTime","Math","min","setState","debug2","sendStateChange","componentWillUnmount","cancel","clearTimeout","cancelAnimationFrame","getValueForCell","columnIndex","rowIndex","rawValue","modelColumn","getModelColumn","modelRow","getModelRow","valueForCell","textForCell","modelColumns","modelRows","getTheme","getCachedTheme","getVisibleColumn","modelIndex","getVisibleIndex","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","value","findIndex","columnName","columnType","delete","applyQuickFilter","trim","quickFilter","set","setAdvancedFilter","options","debug","setQuickFilter","setFilterMap","filterMap","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","getColumnIndexByName","isNull","filterValue","isTextType","FilterValue","ofString","ofNumber","eq","removeColumnFilter","current","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","forceUpdate","getColumnFormats","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","updateFormatter","updatedFormats","update","mergedColumnFormats","values","initFormatter","applyInputFiltersOnInit","inputFiltersWithValues","add","valuesTable","resolved","close","sort","desc","applySort","setViewport","data","getViewportData","rows","row","updatePartition","info","handleTableLoadError","partitionFilter","copyCell","copyToClipboard","e","copyRanges","ranges","includeHeaders","formatValues","boundedRanges","columnCount","rowCount","resetRanges","clearSelectedRanges","setViewState","top","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","stopLoading","rollback","canRollback","addEventListener","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","removeEventListener","focusFilterBar","isFilterable","gridX","left","rightVisible","lastLeft","metricState","getMetricState","newLeft","getLastLeft","hideColumnByVisibleIndex","columnVisibleIndex","setColumnWidth","getModelIndex","freezeColumnByColumnName","allFrozenColumns","layoutHints","unFreezeColumnByColumnName","modelIndexes","visibilityOption","VISIBILITY_OPTIONS","SHOW","resetColumnWidth","updateCanvasScale","updateCanvas","onPartitionAppend","isCanceled","onError","showAllColumns","entries","i","columnWidth","toggleSort","addToExisting","currentSorts","toggleSortForColumn","table","sortColumn","direction","isAbs","reverse","isReversible","focusIndex","focus","isTableSearchAvailable","searchDisplayMode","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","Error","document","activeElement","classList","contains","newPendingSavePromise","then","selectColumn","onColumnSelected","selectData","dataMap","onDataSelected","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","onCreateChart","warn","setGridFocus","defocusInput","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","newOptions","pop","option","event","detail","bottomViewport","selectionEndRow","bottomNonFloating","floatingBottomRowCount","floatingTopRowCount","onSelectionChanged","onChangeApplied","startTimer","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","newMovedColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","aggregation","AGGREGATION_EDIT","resetGridViewState","columnNames","DOWNLOAD_STATUS","INITIATING","args","startDownload","DOWNLOADING","cancelDownload","FINISHED","CANCELED","deleteRanges","columnAllowedCursor","cursor","CURSOR_TYPE_DEFAULT","topOffset","leftOffset","irisGridState","gridState","onStateChange","render","children","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","getCachedFilter","stateOverride","getCachedStateOverride","bottom","right","isVisible","width","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridY","visibleColumnXs","visibleColumnWidths","columnX","x","y","filterBarHeight","fieldWidth","fieldHeight","style","minWidth","isValid","advancedFilter","isBarFiltered","active","handleContextMenu","loadingElement","loadingStatus","loader","cancelButton","show","columnTooltip","columnHeaderHeight","boundedLeft","boundedWidth","abs","wrapperStyle","position","pointerEvents","gridRect","popperMargin","virtualReference","clientWidth","clientHeight","popperOptions","placement","modifiers","flip","behavior","filterBar","visibleColumns","isFilterSet","isFilterVisible","element","hidden","advancedFilterMenus","xColumnHeader","xFilterBar","getAdvancedMenuOpenedHandler","getCachedAdvancedFilterMenuActions","getCachedOptionItems","undefined","openOptionsStack","getCachedHiddenColumns","getHiddenColumns","transitionSlowMs","displayString","getAlwaysFetchColumns","getModelTotalsConfig","transitionMidMs","propTypes","node","instanceOf","arrayOf","string","bool","shape","from","number","isRequired","to","func","Column","defaultDateTimeFormat","showTimeZone","showTSeparator","showConstituents","showNonAggregatedColumns","includeDescriptions","columnSelectionValidator","columnNotAllowedCursor","onContextMenu","defaultProps","FULL_DATE_FORMAT","defaultFormatString"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActionUtils,\n ContextActions,\n DeephavenSpinner,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n} from '@deephaven/components';\nimport { Grid, GridRange, GridUtils } from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsCloudDownload,\n vsFilter,\n vsMenu,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport dh, { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport { Pending, PromiseUtils, ValidationError } from '@deephaven/utils';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridSortMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport IrisGridTheme from './IrisGridTheme';\nimport ColumnStatistics from './ColumnStatistics';\nimport './IrisGrid.scss';\nimport Formatter from './Formatter';\nimport FormatterUtils from './FormatterUtils';\nimport TableUtils from './TableUtils';\nimport AdvancedFilterCreator from './AdvancedFilterCreator';\nimport {\n Aggregations,\n AggregationEdit,\n AggregationUtils,\n ChartBuilder,\n CustomColumnBuilder,\n OptionType,\n RollupRows,\n TableCsvExporter,\n TableSaver,\n VisibilityOrderingBuilder,\n} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\nimport DateUtils from './DateUtils';\n\nconst log = Log.module('IrisGrid');\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nfunction isEmptyConfig({\n advancedFilters,\n quickFilters,\n sorts,\n customColumns,\n reverseType,\n searchFilter,\n}) {\n return (\n advancedFilters.size === 0 &&\n quickFilters.size === 0 &&\n sorts.length === 0 &&\n customColumns.length === 0 &&\n reverseType === TableUtils.REVERSE_TYPE.NONE &&\n searchFilter == null\n );\n}\n\nexport class IrisGrid extends Component {\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static makeQuickFilter(column, text, timeZone) {\n try {\n return TableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n constructor(props) {\n super(props);\n\n this.handleAdvancedFilterChange = this.handleAdvancedFilterChange.bind(\n this\n );\n this.handleAdvancedFilterSortChange = this.handleAdvancedFilterSortChange.bind(\n this\n );\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged = this.handleCustomColumnsChanged.bind(\n this\n );\n this.handleSelectDistinctChanged = this.handleSelectDistinctChanged.bind(\n this\n );\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handlePendingCommitClicked = this.handlePendingCommitClicked.bind(\n this\n );\n this.handlePendingDiscardClicked = this.handlePendingDiscardClicked.bind(\n this\n );\n\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadProgressUpdate = throttle(\n this.handleDownloadProgressUpdate.bind(this),\n UPDATE_DOWNLOAD_THROTTLE\n );\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionAppend = this.handlePartitionAppend.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handlePartitionFetchAll = this.handlePartitionFetchAll.bind(this);\n this.handlePartitionDone = this.handlePartitionDone.bind(this);\n this.handleColumnVisibilityChanged = this.handleColumnVisibilityChanged.bind(\n this\n );\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n\n this.updateSearchFilter = debounce(\n this.updateSearchFilter.bind(this),\n SET_FILTER_DEBOUNCE\n );\n\n this.grid = null;\n this.gridWrapper = null;\n this.lastFocusedFilterBarColumn = null;\n this.lastLoadedConfig = null;\n this.tooltip = null;\n this.pending = new Pending();\n this.globalColumnFormats = [];\n this.dateTimeFormatterOptions = {};\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.loadingScrimStartTime = null;\n this.loadingScrimFinishTime = null;\n this.loadingTimer = null;\n this.renderer = new IrisGridRenderer();\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.animationFrame = null;\n this.filterInputRef = React.createRef();\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n this.discardAction = {\n action: () => {\n const { model } = this.props;\n if (model.isEditable && model.pendingDataMap.size > 0) {\n this.discardPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD,\n };\n this.commitAction = {\n action: () => {\n const { model } = this.props;\n if (\n model.isEditable &&\n model.pendingDataMap.size > 0 &&\n model.pendingDataErrors.size === 0\n ) {\n this.commitPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT,\n };\n this.contextActions = [\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const {\n aggregationSettings,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n model,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n rollupConfig,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n } = props;\n\n const keyHandlers = [\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n }\n const mouseHandlers = [\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n ];\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: null,\n keyHandlers,\n mouseHandlers,\n\n partition,\n partitionColumn,\n partitionTable: null,\n partitionFilters: [],\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: new Map(quickFilters),\n advancedFilters: new Map(advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\n\n filter: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: [],\n selectDistinctColumns,\n\n // selected range in table\n selectedRanges: [],\n\n // Current ongoing copy operation\n copyOperation: null,\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap,\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n\n toastMessage: null,\n frozenColumns,\n };\n }\n\n componentDidMount() {\n const { partitionColumn, model } = this.props;\n const column =\n partitionColumn || model.columns.find(c => c.isPartitionColumn);\n if (\n model.isFilterRequired &&\n model.isValuesTableAvailable &&\n column != null\n ) {\n this.loadPartitionsTable(column);\n } else {\n this.initState();\n }\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps) {\n const {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n sorts,\n } = this.props;\n\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n\n const changedInputFilters =\n inputFilters !== prevProps.inputFilters\n ? inputFilters.filter(\n inputFilter => !prevProps.inputFilters.includes(inputFilter)\n )\n : [];\n if (changedInputFilters.length > 0) {\n const { advancedSettings } = this.props;\n const replaceExistingFilters =\n advancedSettings.get(\n AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.startLoading('Filtering...', true);\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', true);\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n\n const { loadingScrimStartTime, loadingScrimFinishTime } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n const now = Date.now();\n const currentTime = now - loadingScrimStartTime;\n const totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n const loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = null;\n this.loadingScrimFinishTime = null;\n }\n\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n\n return { loadingScrimProgress };\n });\n });\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount() {\n const { model } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n cancelAnimationFrame(this.animationFrame);\n }\n\n getAdvancedMenuOpenedHandler = memoize(\n column => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (model, column, advancedFilterOptions, sortDirection, formatter) => (\n <AdvancedFilterCreator\n model={model}\n column={column}\n onFilterChange={this.handleAdvancedFilterChange}\n onSortChange={this.handleAdvancedFilterSortChange}\n onDone={this.handleAdvancedFilterDone}\n options={advancedFilterOptions}\n sortDirection={sortDirection}\n formatter={formatter}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable,\n isCustomColumnsAvailable,\n isRollupAvailable,\n isTotalsAvailable,\n isSelectDistinctAvailable,\n isExportAvailable,\n toggleFilterBarAction,\n toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n canToggleSearch\n ) => {\n const optionItems = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp,\n });\n }\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Column Visibility & Ordering',\n icon: dhEye,\n });\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Manage Custom Columns',\n icon: vsSplitHorizontal,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n });\n }\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n });\n }\n\n return optionItems;\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(hiddenColumns => hiddenColumns, {\n max: 1,\n normalizer: ([hiddenColumns]) => hiddenColumns.join(),\n });\n\n getAggregationMap = memoize((columns, aggregations) => {\n const aggregationMap = {};\n aggregations.forEach(({ operation, selected, invert }) => {\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n );\n });\n return aggregationMap;\n });\n\n getOperationMap = memoize((columns, aggregations) => {\n const operationMap = {};\n aggregations\n .filter(a => !AggregationUtils.isRollupOperation(a.operation))\n .forEach(({ operation, selected, invert }) => {\n AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n ).forEach(name => {\n const newOperations = [...(operationMap[name] ?? []), operation];\n operationMap[name] = newOperations;\n });\n });\n return operationMap;\n });\n\n getOperationOrder = memoize(aggregations =>\n aggregations\n .map(a => a.operation)\n .filter(o => !AggregationUtils.isRollupOperation(o))\n );\n\n getModelRollupConfig = memoize(\n (originalColumns, config, aggregationSettings) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n )\n );\n\n getModelTotalsConfig = memoize((columns, config, aggregationSettings) => {\n const { aggregations, showOnTop } = aggregationSettings;\n // If we've got rollups, then aggregations are applied as part of that...\n if (\n (config?.columns?.length ?? 0) > 0 ||\n (aggregations?.length ?? 0) === 0\n ) {\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return { operationMap, operationOrder, showOnTop };\n });\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig\n ) => ({\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n ) => [\n ...customFilters,\n ...partitionFilters,\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter ? [searchFilter] : []), // null check\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (theme, isEditable) => ({\n ...IrisGridTheme,\n autoSelectRow: !isEditable,\n ...theme,\n }),\n { max: 1 }\n );\n\n getValueForCell(columnIndex, rowIndex, rawValue = false) {\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue) {\n return model.valueForCell(modelColumn, modelRow);\n }\n return model.textForCell(modelColumn, modelRow);\n }\n\n getModelColumn(columnIndex) {\n const { metrics } = this.state;\n const { modelColumns } = metrics;\n if (!modelColumns) {\n return null;\n }\n\n return modelColumns.get(columnIndex);\n }\n\n getModelRow(rowIndex) {\n const { metrics } = this.state;\n const { modelRows } = metrics;\n if (!modelRows) {\n return null;\n }\n\n return modelRows.get(rowIndex);\n }\n\n getTheme() {\n const { model, theme } = this.props;\n return this.getCachedTheme(theme, model.isEditable);\n }\n\n getVisibleColumn(modelIndex) {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param {inputFilter[]} inputFilters Array of input filters to apply\n * @param {boolean} replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(inputFilters, replaceExisting = false) {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const newAdvancedFilters = replaceExisting\n ? new Map()\n : new Map(advancedFilters);\n const newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n\n let isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(({ name, type, value }) => {\n const modelIndex = model.columns.findIndex(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged =\n this.applyQuickFilter(modelIndex, value, newQuickFilters) ||\n isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param {number} modelIndex The index in the model of the column to set\n * @param {string} value The string value to set to the quick filter\n * @param {Map} quickFilters The quick filters map\n * @returns {boolean} True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(modelIndex, value, quickFilters) {\n const { model } = this.props;\n const { formatter } = model;\n const column = model.columns[modelIndex];\n\n if (value != null && `${value}`.trim().length > 0) {\n const quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n const { text } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: IrisGrid.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilter(modelIndex, filter, options) {\n if (modelIndex == null) {\n log.error('Invalid model index to filter on');\n return;\n }\n\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param {Number} modelIndex The index in the model for the column this filter is applied to\n * @param {dh.FilterCondition} filter A filter to apply to the column, or null if there was an error\n * @param {String} text The original text the filter was created with\n */\n setQuickFilter(modelIndex, filter, text) {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n return { quickFilters: newQuickFilters };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param {Map<string, Object>} filterMap Filter map\n */\n setFilterMap(filterMap) {\n log.debug('setFilterMap', filterMap);\n\n const { advancedSettings } = this.props;\n const clearFiltersOnLinkerFilterUpdate =\n advancedSettings.get(\n AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n\n const { model } = this.props;\n filterMap.forEach(({ columnType, text, value }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n const columnIndex = model.getColumnIndexByName(column.name);\n if (value === null) {\n this.setQuickFilter(columnIndex, column.filter().isNull(), '=null');\n } else {\n const filterValue = TableUtils.isTextType(columnType)\n ? dh.FilterValue.ofString(value)\n : dh.FilterValue.ofNumber(value);\n this.setQuickFilter(\n columnIndex,\n column.filter().eq(filterValue),\n `${text}`\n );\n }\n });\n }\n\n removeColumnFilter(modelColumn) {\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters, quickFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n newAdvancedFilters.delete(modelColumn);\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n });\n }\n\n clearAllFilters() {\n log.debug('Clearing all filters');\n\n const { advancedFilters, quickFilters, searchFilter } = this.state;\n if (\n quickFilters.size === 0 &&\n advancedFilters.size === 0 &&\n searchFilter === null\n ) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n\n this.startLoading('Clearing Filters...', true);\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: null,\n });\n }\n\n clearCrossColumSearch() {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: null,\n });\n }\n\n clearGridInputField() {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters() {\n log.debug('Rebuilding filters');\n\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns, formatter } = model;\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = TableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: IrisGrid.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n\n this.startLoading('Rebuilding filters...', true);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n\n setFilters({ quickFilters, advancedFilters }) {\n this.setState({\n quickFilters,\n advancedFilters,\n });\n }\n\n updateFormatterSettings(settings, forceUpdate = true) {\n const globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n const {\n defaultDecimalFormatOptions = {},\n defaultIntegerFormatOptions = {},\n } = settings;\n\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n const isDecimalFormattingChanged = !deepEqual(\n this.decimalFormatOptions,\n defaultDecimalFormatOptions\n );\n const isIntegerFormattingChanged = !deepEqual(\n this.integerFormatOptions,\n defaultIntegerFormatOptions\n );\n if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns,\n columns,\n floatingLeftColumnCount,\n floatingRightColumnCount\n ) => {\n let floatingLeftColumns = [];\n let floatingRightColumns = [];\n\n if (floatingLeftColumnCount) {\n floatingLeftColumns = columns\n .slice(0, floatingLeftColumnCount)\n .map(col => col.name);\n }\n\n if (floatingRightColumnCount) {\n floatingRightColumns = columns\n .slice(-floatingRightColumnCount)\n .map(col => col.name);\n }\n\n const columnSet = new Set([\n ...alwaysFetchColumns,\n ...floatingLeftColumns,\n ...floatingRightColumns,\n ]);\n\n return [...columnSet];\n }\n );\n\n updateFormatter(updatedFormats, forceUpdate = true) {\n const { customColumnFormatMap } = this.state;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...this.globalColumnFormats,\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions\n );\n\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n\n this.setState({ ...update, formatter }, () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n\n initFormatter() {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState() {\n const {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n } = this.props;\n\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverseType,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(partitionColumn) {\n const { model } = this.props;\n this.setState({ isSelectingPartition: true });\n\n try {\n const partitionTable = await this.pending.add(\n model.valuesTable(partitionColumn),\n resolved => resolved.close()\n );\n\n const column = partitionTable.columns[0];\n const sort = column.sort().desc();\n partitionTable.applySort([sort]);\n partitionTable.setViewport(0, 0, [column]);\n\n const data = await this.pending.add(partitionTable.getViewportData());\n if (data.rows.length > 0) {\n const row = data.rows[0];\n const value = row.get(column);\n\n this.updatePartition(value, partitionColumn);\n\n this.setState({ isSelectingPartition: true });\n } else {\n log.info('Table does not have any data, just fetching all');\n this.setState({ isSelectingPartition: false });\n this.handlePartitionFetchAll();\n }\n this.setState({ partitionTable, partitionColumn }, () => {\n this.initState();\n });\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n updatePartition(partition, partitionColumn) {\n const partitionFilter = partitionColumn\n .filter()\n .eq(dh.FilterValue.ofString(partition));\n const partitionFilters = [partitionFilter];\n this.setState({\n partition,\n partitionFilters,\n });\n }\n\n copyCell(columnIndex, rowIndex, rawValue = false) {\n const { canCopy } = this.props;\n if (canCopy) {\n const value = this.getValueForCell(columnIndex, rowIndex, rawValue);\n ContextActionUtils.copyToClipboard(value).catch(e =>\n log.error('Unable to copy cell', e)\n );\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @param {GridRange[]} ranges The ranges to copy\n * @param {boolean} includeHeaders Include the headers or not\n * @param {boolean} formatValues Whether to format values or not\n * @param {string|null} error Error message if one occurred\n */\n copyRanges(\n ranges,\n includeHeaders = false,\n formatValues = true,\n error = null\n ) {\n const { model, canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const { userColumnWidths } = metricCalculator;\n\n if (canCopy) {\n const copyOperation = {\n ranges: GridRange.boundedRanges(\n ranges,\n model.columnCount,\n model.rowCount\n ),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error,\n };\n\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\n }\n\n startLoading(loadingText, resetRanges = false) {\n this.setState({ loadingText });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n const height = this.gridWrapper?.getBoundingClientRect().height ?? 0;\n const scrimTransitionTime = Math.max(\n minScrimTransitionTime,\n Math.min(height / 2, maxScrimTransitionTime)\n );\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime =\n this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0,\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true,\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n\n stopLoading() {\n this.loadingScrimStartTime = null;\n this.loadingScrimFinishTime = null;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n });\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = null;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback() {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n const {\n advancedFilters,\n customColumns,\n quickFilters,\n reverseType,\n searchFilter,\n sorts,\n } = this.lastLoadedConfig;\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n customColumns,\n quickFilters,\n reverseType,\n searchFilter,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n quickFilters: new Map(),\n sorts: [],\n customColumns: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns {boolean} true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback() {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n\n startListening(model) {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n stopListening(model) {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n focusFilterBar(column) {\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = this.getModelColumn(column);\n\n if (\n column == null ||\n column < 0 ||\n columnCount <= column ||\n !model.isFilterable(modelColumn)\n ) {\n this.setState({ focusedFilterBarColumn: null });\n return;\n }\n\n const { metricCalculator, metrics } = this.state;\n const { gridX, left, rightVisible, lastLeft } = metrics;\n if (column < left) {\n this.grid.setViewState({ left: column }, true);\n } else if (rightVisible < column) {\n const metricState = this.grid.getMetricState();\n const newLeft = metricCalculator.getLastLeft(metricState, column, gridX);\n this.grid.setViewState({ left: Math.min(newLeft, lastLeft) }, true);\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex) {\n const { metricCalculator, movedColumns } = this.state;\n metricCalculator.setColumnWidth(\n GridUtils.getModelIndex(columnVisibleIndex, movedColumns),\n 0\n );\n\n this.grid.forceUpdate();\n }\n\n freezeColumnByColumnName(columnName) {\n const { frozenColumns } = this.state;\n const { model } = this.props;\n log.debug2('freezing column', columnName);\n\n let allFrozenColumns;\n\n if (frozenColumns == null) {\n allFrozenColumns = new Set(model.layoutHints?.frozenColumns ?? []);\n allFrozenColumns.add(columnName);\n } else {\n allFrozenColumns = new Set([...frozenColumns, columnName]);\n }\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n });\n }\n\n unFreezeColumnByColumnName(columnName) {\n const { frozenColumns } = this.state;\n const { model } = this.props;\n log.debug2('unfreezing column', columnName);\n\n let allFrozenColumns;\n\n if (frozenColumns == null) {\n allFrozenColumns = new Set(model.layoutHints?.frozenColumns ?? []);\n allFrozenColumns.delete(columnName);\n } else {\n allFrozenColumns = new Set(\n frozenColumns.filter(col => col !== columnName)\n );\n }\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n });\n }\n\n handleColumnVisibilityChanged(modelIndexes, visibilityOption) {\n const { metricCalculator } = this.state;\n if (\n visibilityOption === VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n ) {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.resetColumnWidth(modelIndex);\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid.forceUpdate();\n }\n\n handleCrossColumnSearch(\n searchValue,\n selectedSearchColumns,\n invertSearchColumns\n ) {\n const { model } = this.props;\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n ) {\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n }\n\n handleAnimationLoop() {\n this.grid.updateCanvasScale();\n this.grid.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart() {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd() {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionAppend(value) {\n const { onPartitionAppend } = this.props;\n const { partitionColumn } = this.state;\n onPartitionAppend(partitionColumn, value);\n }\n\n handlePartitionChange(partition) {\n const { partitionColumn } = this.state;\n this.updatePartition(partition, partitionColumn);\n }\n\n handlePartitionFetchAll() {\n this.setState({\n partitionFilters: [],\n isSelectingPartition: false,\n });\n }\n\n handlePartitionDone() {\n this.setState({ isSelectingPartition: false });\n }\n\n handleTableLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error(error);\n\n const { onError } = this.props;\n onError(error);\n }\n\n showAllColumns() {\n const { metricCalculator } = this.state;\n const { userColumnWidths } = metricCalculator;\n const entries = [...userColumnWidths.entries()];\n for (let i = 0; i < entries.length; i += 1) {\n const [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n this.grid.forceUpdate();\n }\n\n toggleSort(columnIndex, addToExisting) {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const { sorts: currentSorts } = this.state;\n const modelColumn = this.getModelColumn(columnIndex);\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.table,\n modelColumn,\n addToExisting\n );\n this.updateSorts(sorts);\n }\n\n updateSorts(sorts) {\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid.forceUpdate();\n }\n\n sortColumn(modelColumn, direction, isAbs = false, addToExisting = false) {\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.table,\n modelColumn,\n direction,\n isAbs,\n addToExisting\n );\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid.forceUpdate();\n }\n\n reverse(reverseType) {\n this.startLoading('Reversing...');\n this.setState({ reverseType });\n this.grid.forceUpdate();\n }\n\n isReversible() {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn) {\n let { isFilterBarShown } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({ isFilterBarShown });\n\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n let columnIndex = 0;\n const { model } = this.props;\n const { columnCount } = model;\n for (let i = 0; i < columnCount; i += 1) {\n const modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column != null && TableUtils.isTextType(column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n this.grid.focus();\n }\n }\n\n isTableSearchAvailable() {\n const { model, canToggleSearch } = this.props;\n const searchDisplayMode = model?.layoutHints?.searchDisplayMode;\n\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_HIDE) {\n return false;\n }\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_SHOW) {\n return true;\n }\n\n return canToggleSearch;\n }\n\n toggleSearchBar() {\n const { showSearchBar } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n\n const update = !showSearchBar;\n this.setState(\n {\n showSearchBar: update,\n },\n () => {\n if (update && this.crossColumnRef.current) {\n this.crossColumnRef.current.focus();\n } else {\n this.grid.focus();\n }\n }\n );\n }\n\n async commitPending() {\n const { model } = this.props;\n if (!model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n\n if (document.activeElement.classList.contains('grid-cell-input-field')) {\n if (document.activeElement.classList.contains('error')) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid.focus();\n }\n\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending() {\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n\n this.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map(),\n });\n }\n\n /**\n * Select the passed in column and notify listener\n * @param {dh.Column} column The column in this table to link\n */\n selectColumn(column) {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Select all the data for a given row and notify listener\n */\n selectData(columnIndex, rowIndex) {\n const { model } = this.props;\n const { columns } = model;\n const dataMap = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n dataMap[name] = { value, text, type };\n }\n\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n handleAdvancedFilterChange(column, filter, options) {\n const { model } = this.props;\n this.setAdvancedFilter(\n model.getColumnIndexByName(column.name),\n filter,\n options\n );\n }\n\n handleAdvancedFilterSortChange(column, direction, addToExisting = false) {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n const oldSort = TableUtils.getSortForColumn(model.sort, columnIndex);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnIndex,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.startLoading('Sorting...');\n this.setState({ sorts });\n\n this.grid.forceUpdate();\n }\n\n handleAdvancedFilterDone() {\n this.grid.focus();\n }\n\n handleAdvancedMenuOpened(column) {\n this.setState({ shownAdvancedFilter: column });\n }\n\n handleAdvancedMenuClosed(columnIndex) {\n const { focusedFilterBarColumn, isFilterBarShown } = this.state;\n if (\n isFilterBarShown &&\n focusedFilterBarColumn === columnIndex &&\n this.filterInputRef.current !== null\n ) {\n this.filterInputRef.current.focus();\n this.setState({ shownAdvancedFilter: null });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null,\n });\n }\n }\n\n handleCancel() {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange() {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings) {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model);\n }\n\n handleGridError(error) {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value) {\n this.startLoading('Filtering...', true);\n\n this.setState(({ focusedFilterBarColumn, quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n return { quickFilters: newQuickFilters };\n });\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true) {\n if (setGridFocus) {\n this.grid.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward) {\n const { focusedFilterBarColumn } = this.state;\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(modelIndex, selectedFormat) {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n const { customColumnFormatMap: prevCustomColumnFormatMap } = this.state;\n const customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n\n if (selectedFormat) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n const columnFormattingRule = Formatter.makeColumnFormattingRule(\n normalizedType,\n column.name,\n selectedFormat\n );\n\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n\n this.updateFormatter({ customColumnFormatMap });\n }\n\n handleMenu() {\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose() {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack() {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option) {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event) {\n log.error('request failed:', event.detail);\n this.stopLoading();\n if (this.canRollback()) {\n this.startLoading('Rolling back changes...', true);\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${event.detail}`));\n }\n }\n\n handleUpdate() {\n this.stopLoading();\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n customColumns,\n quickFilters,\n reverseType,\n searchFilter,\n sorts,\n } = this.state;\n const config = {\n advancedFilters,\n customColumns,\n reverseType,\n quickFilters,\n searchFilter,\n sorts,\n };\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid.forceUpdate();\n }\n\n handleViewChanged(metrics) {\n const { model } = this.props;\n const { bottomViewport } = metrics;\n const { selectionEndRow = 0 } = this.grid?.state ?? {};\n let pendingRowCount = 0;\n if (model.isEditable) {\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n const bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(\n 0,\n bottomViewport -\n (model.rowCount - model.pendingRowCount) -\n model.floatingTopRowCount -\n model.floatingBottomRowCount -\n 1\n );\n }\n }\n\n this.setState({ metrics, pendingRowCount });\n }\n\n handleSelectionChanged(selectedRanges) {\n const { onSelectionChanged } = this.props;\n const { copyOperation } = this.state;\n this.setState({ selectedRanges });\n if (copyOperation != null) {\n this.setState({ copyOperation: null });\n }\n onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(movedColumns, onChangeApplied = () => {}) {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleTooltipRef(tooltip) {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleUpdateCustomColumns(customColumns) {\n log.info(`handleUpdateCustomColumns:`, customColumns);\n\n const { model } = this.props;\n const {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns,\n } = this.state;\n\n const { columns } = model;\n const oldCustomColumns = model.customColumns.map(\n customColumn => `${customColumn}`\n );\n\n const removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(\n oldCustomColumns,\n customColumns\n );\n if (removedColumnNames.length > 0) {\n const newSorts = IrisGridUtils.removeSortsInColumns(\n sorts,\n removedColumnNames\n );\n const newQuickFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n quickFilters,\n removedColumnNames\n );\n const newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n advancedFilters,\n removedColumnNames\n );\n const newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n );\n const newSelectDistinctColumns = IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({ sorts: newSorts });\n }\n if (\n newQuickFilters.size !== quickFilters.size ||\n newAdvancedFilters.size !== advancedFilters.size\n ) {\n log.debug(`removing filters from removed custom columns...`);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\n `change moved columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ movedColumns: newMovedColumns });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\n `change selectDistinct columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ selectDistinctColumns: newSelectDistinctColumns });\n }\n }\n\n this.setState({ customColumns, top: 0 });\n this.startLoading('Applying custom columns...');\n }\n\n handleCustomColumnsChanged() {\n log.debug('custom columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.stopLoading();\n this.grid.forceUpdate();\n } else {\n this.initState();\n }\n }\n\n handlePendingCommitClicked() {\n return this.commitPending();\n }\n\n handlePendingDiscardClicked() {\n return this.discardPending();\n }\n\n handlePendingDataUpdated() {\n log.debug('pending data updated');\n const { model } = this.props;\n const { pendingDataMap, pendingDataErrors } = model;\n this.setState({\n pendingDataMap,\n pendingDataErrors,\n pendingSaveError: null,\n });\n this.grid.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param {AggregationSettings} aggregationSettings The new aggregation settings\n */\n handleAggregationsChange(aggregationSettings) {\n log.debug('handleAggregationsChange', aggregationSettings);\n\n this.startLoading(\n `Aggregating ${aggregationSettings.aggregations\n .map(a => a.operation)\n .join(', ')}...`\n );\n this.setState({ aggregationSettings });\n }\n\n /**\n * A specific aggregation has been modified\n * @param {Aggregation} aggregation The new aggregation\n */\n handleAggregationChange(aggregation) {\n log.debug('handleAggregationChange', aggregation);\n\n this.startLoading(`Aggregating ${aggregation.operation}...`);\n this.setState(({ aggregationSettings }) => ({\n selectedAggregation: aggregation,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: aggregationSettings.aggregations.map(a =>\n a.operation === aggregation.operation ? aggregation : a\n ),\n },\n }));\n }\n\n /**\n * An aggregations has been selected for editing\n * @param {Aggregation} aggregation The aggregation to edit\n */\n handleAggregationEdit(aggregation) {\n log.debug('handleAggregationEdit', aggregation);\n\n const { openOptions } = this.state;\n\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.AGGREGATION_EDIT,\n title: `Edit Columns to ${aggregation.operation}`,\n },\n ],\n selectedAggregation: aggregation,\n });\n }\n\n handleRollupChange(rollupConfig) {\n log.info('Rollup change', rollupConfig);\n\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Grouping by columns ${rollupConfig?.columns?.join(', ') ?? ''}...`\n );\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n selectDistinctColumns: [],\n });\n }\n\n handleSelectDistinctChanged(columnNames) {\n log.debug('SelectDistinct change', columnNames);\n\n this.resetGridViewState();\n\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Selecting distinct values in ${\n columnNames.length > 0 ? columnNames.join(', ') : ''\n }...`\n );\n\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n });\n }\n\n handleDownloadTableStart() {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTableStart for user without download CSV permission.'\n );\n }\n }\n\n handleDownloadTable(...args) {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info('start table downloading', ...args);\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(...args);\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n };\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTable for user without download CSV permission.'\n );\n }\n }\n\n handleCancelDownloadTable() {\n this.tableSaver.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate(\n tableDownloadProgress,\n tableDownloadEstimatedTime\n ) {\n const { tableDownloadStatus } = this.state;\n if (tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n }\n\n handleDownloadCompleted() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED,\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param {GridRange[]} ranges The ranges to delete\n */\n deleteRanges(ranges) {\n const { model } = this.props;\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection() {\n if (this.grid == null) {\n return;\n }\n const { isSelectingColumn } = this.props;\n if (isSelectingColumn) {\n const { columnAllowedCursor } = this.props;\n this.grid.setState({ cursor: columnAllowedCursor });\n } else {\n this.grid.setState({ cursor: Grid.CURSOR_TYPE_DEFAULT });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true) {\n if (!this.grid) {\n return;\n }\n\n this.grid.clearSelectedRanges();\n this.grid.setViewState(\n { left: 0, top: 0, topOffset: 0, leftOffset: 0 },\n forceUpdate\n );\n }\n\n sendStateChange() {\n if (!this.grid) {\n return;\n }\n const { state: irisGridState } = this;\n const { state: gridState } = this.grid;\n const { onStateChange } = this.props;\n\n onStateChange(irisGridState, gridState);\n }\n\n render() {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n onCreateChart,\n } = this.props;\n const {\n metricCalculator,\n metrics,\n isFilterBarShown,\n isSelectingPartition,\n isMenuShown,\n isReady,\n copyOperation,\n focusedFilterBarColumn,\n loadingText,\n loadingScrimProgress,\n loadingSpinnerShown,\n keyHandlers,\n mouseHandlers,\n shownColumnTooltip,\n hoverAdvancedFilter,\n shownAdvancedFilter,\n hoverSelectColumn,\n quickFilters,\n advancedFilters,\n partition,\n partitionFilters,\n partitionTable,\n partitionColumn,\n searchFilter,\n selectDistinctColumns,\n\n movedColumns,\n movedRows,\n\n formatter,\n\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 } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n );\n\n const { userColumnWidths } = metricCalculator;\n const stateOverride = this.getCachedStateOverride(\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig\n );\n const top = metrics ? metrics.top : 0;\n const bottom = metrics ? metrics.bottomViewport : 0;\n let left = null;\n let right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n const isVisible =\n metrics != null && metrics.width > 0 && metrics.height > 0;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n\n let focusField = null;\n\n const debounceMs = metrics\n ? Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n )\n : IrisGrid.maxDebounce;\n\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n const { gridX, gridY, visibleColumnXs, visibleColumnWidths } = metrics;\n const columnX = visibleColumnXs.get(focusedFilterBarColumn);\n const columnWidth = visibleColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - theme.filterBarHeight;\n const fieldWidth = columnWidth + 1; // cover right border\n const fieldHeight = theme.filterBarHeight - 1; // remove bottom border\n const style = {\n top: y,\n left: x,\n minWidth: fieldWidth,\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n const isBarFiltered =\n quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = (\n <FilterInputField\n ref={this.filterInputRef}\n style={style}\n className={classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered,\n })}\n isAdvancedFilterSet={advancedFilter != null}\n onAdvancedFiltersTriggered={() => {\n this.setState({ shownAdvancedFilter: focusedFilterBarColumn });\n }}\n key={focusedFilterBarColumn}\n onChange={this.handleFilterBarChange}\n onDone={this.handleFilterBarDone}\n onTab={this.handleFilterBarTab}\n onContextMenu={this.grid.handleContextMenu}\n debounceMs={debounceMs}\n value={value}\n />\n );\n }\n }\n\n let loadingElement = null;\n if (loadingText != null) {\n const loadingStatus = (\n <div className=\"iris-grid-loading-status\">{loadingText}</div>\n );\n const loader = <DeephavenSpinner show={loadingSpinnerShown} />;\n const cancelButton = (\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames(\n 'btn btn-secondary btn-cancelable iris-grid-btn-cancel',\n {\n show: loadingSpinnerShown,\n }\n )}\n >\n Cancel\n </button>\n );\n\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div className=\"iris-grid-loading\" style={{ top: gridY }}>\n {loadingStatus}\n {loader}\n {cancelButton}\n </div>\n );\n }\n\n let columnTooltip = null;\n if (shownColumnTooltip != null && metrics && this.gridWrapper) {\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n width,\n } = metrics;\n const columnX = visibleColumnXs.get(shownColumnTooltip);\n const columnWidth = visibleColumnWidths.get(shownColumnTooltip);\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n const boundedLeft = Math.max(0, columnX);\n let boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n\n const wrapperStyle = {\n position: 'absolute',\n top: 0,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n const gridRect = this.gridWrapper.getBoundingClientRect();\n const popperMargin = 20;\n const virtualReference = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect() {\n return {\n top: gridRect.top,\n left:\n gridRect.left +\n clamp(\n columnX + columnWidth / 2,\n popperMargin,\n width - popperMargin\n ),\n bottom: gridRect.top + columnHeaderHeight,\n right:\n gridRect.left +\n clamp(\n columnX + columnWidth / 2,\n popperMargin,\n width - popperMargin\n ) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n };\n },\n };\n\n const popperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(shownColumnTooltip);\n const column = model.columns[modelColumn];\n\n if (column != null) {\n columnTooltip = (\n <div style={wrapperStyle}>\n <Tooltip\n key={column.name}\n timeout={400}\n interactive\n options={popperOptions}\n ref={this.handleTooltipRef}\n referenceObject={virtualReference}\n onExited={() => {\n this.setState({ shownColumnTooltip: null });\n }}\n >\n <ColumnStatistics\n model={model}\n column={column}\n onStatistics={() => {\n if (this.tooltip) this.tooltip.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n }\n\n const filterBar = [];\n if (metrics && isFilterBarShown) {\n const {\n gridX,\n gridY,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths,\n } = metrics;\n const { filterBarHeight } = theme;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n\n const columnX = visibleColumnXs.get(columnIndex);\n const columnWidth = visibleColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n const isFilterable = model.isFilterable(modelColumn);\n if (\n isFilterable &&\n columnX != null &&\n columnWidth != null &&\n columnWidth > 0\n ) {\n const x = gridX + columnX + columnWidth - 24;\n const y = gridY - filterBarHeight + 2; // 2 acts as top margin for the button\n const style = {\n position: 'absolute',\n top: y,\n left: x,\n };\n const advancedFilter = advancedFilters.get(modelColumn);\n const isFilterSet = advancedFilter != null;\n const isFilterVisible =\n columnIndex === hoverAdvancedFilter ||\n columnIndex === focusedFilterBarColumn ||\n isFilterSet;\n const element = (\n <div\n className={classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible,\n })}\n key={columnIndex}\n style={style}\n >\n {isFilterVisible && (\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({ shownAdvancedFilter: columnIndex });\n }}\n onContextMenu={event => {\n this.grid.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon icon={vsFilter} className=\"filter-light\" />\n </div>\n </button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = visibleColumnXs.get(columnIndex);\n const columnWidth = visibleColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style = isFilterBarShown\n ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight,\n }\n : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight,\n };\n const modelColumn = this.getModelColumn(columnIndex);\n const column = model.columns[modelColumn];\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, modelColumn);\n const sortDirection = sort ? sort.direction : null;\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n >\n {this.getCachedAdvancedFilterMenuActions(\n model,\n column,\n advancedFilterOptions,\n sortDirection,\n formatter\n )}\n </Popper>\n </div>\n );\n advancedFilterMenus.push(element);\n }\n }\n }\n\n const optionItems = this.getCachedOptionItems(\n onCreateChart !== undefined && model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable()\n );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n userColumnWidths={userColumnWidths}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return (\n <CustomColumnBuilder\n model={model}\n customColumns={customColumns}\n onSave={this.handleUpdateCustomColumns}\n onCancel={this.handleMenuBack}\n key={OptionType.CUSTOM_COLUMN_BUILDER}\n />\n );\n case OptionType.ROLLUP_ROWS:\n return (\n <RollupRows\n metrics={metrics}\n model={model}\n onChange={this.handleRollupChange}\n config={rollupConfig}\n key={OptionType.ROLLUP_ROWS}\n />\n );\n case OptionType.AGGREGATIONS:\n return (\n <Aggregations\n settings={aggregationSettings}\n isRollup={isRollup}\n onChange={this.handleAggregationsChange}\n onEdit={this.handleAggregationEdit}\n />\n );\n case OptionType.AGGREGATION_EDIT:\n return (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={tableDownloadEstimatedTime}\n onDownload={this.handleDownloadTable}\n onDownloadStart={this.handleDownloadTableStart}\n onCancel={this.handleCancelDownloadTable}\n selectedRanges={selectedRanges}\n key={OptionType.TABLE_EXPORTER}\n />\n );\n case OptionType.SELECT_DISTINCT:\n return (\n <SelectDistinctBuilder\n model={model}\n selectDistinctColumns={selectDistinctColumns}\n onChange={this.handleSelectDistinctChanged}\n />\n );\n case OptionType.ADVANCED_SETTINGS:\n return (\n <AdvancedSettingsMenu\n items={advancedSettings}\n onChange={onAdvancedSettingsChange}\n />\n );\n\n default:\n throw Error('Unexpected option type', option.type);\n }\n });\n\n const hiddenColumns = this.getCachedHiddenColumns(\n IrisGridUtils.getHiddenColumns(userColumnWidths)\n );\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\">\n {partitionTable && partitionColumn && (\n <IrisGridPartitionSelector\n table={partitionTable}\n getFormattedString={(...args) => model.displayString(...args)}\n columnName={partitionColumn.name}\n partition={partition}\n onChange={this.handlePartitionChange}\n onFetchAll={this.handlePartitionFetchAll}\n onAppend={this.handlePartitionAppend}\n onDone={this.handlePartitionDone}\n />\n )}\n </div>\n </CSSTransition>\n <CSSTransition\n in={showSearchBar}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-bar\">\n <CrossColumnSearch\n value={searchValue}\n selectedColumns={selectedSearchColumns}\n invertSelection={invertSearchColumns}\n onChange={this.handleCrossColumnSearch}\n columns={model.columns}\n ref={this.crossColumnRef}\n />\n </div>\n </CSSTransition>\n <div\n className=\"grid-wrapper\"\n ref={gridWrapper => {\n this.gridWrapper = gridWrapper;\n }}\n >\n <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!model.isEditable}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={keyHandlers}\n mouseHandlers={mouseHandlers}\n movedColumns={movedColumns}\n movedRows={movedRows}\n onError={this.handleGridError}\n onViewChanged={this.handleViewChanged}\n onSelectionChanged={this.handleSelectionChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n renderer={this.renderer}\n stateOverride={stateOverride}\n theme={theme}\n />\n {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 model.floatingLeftColumnCount,\n model.floatingRightColumnCount\n )}\n rollupConfig={this.getModelRollupConfig(\n model.originalColumns,\n rollupConfig,\n aggregationSettings\n )}\n totalsConfig={this.getModelTotalsConfig(\n model.columns,\n rollupConfig,\n aggregationSettings\n )}\n selectDistinctColumns={selectDistinctColumns}\n pendingRowCount={pendingRowCount}\n pendingDataMap={pendingDataMap}\n frozenColumns={frozenColumns}\n />\n )}\n <div\n className={classNames('grid-settings-button', {\n 'is-menu-shown': isMenuShown,\n })}\n >\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon\"\n onClick={this.handleMenu}\n >\n <FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />\n </button>\n </div>\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n </div>\n <PendingDataBottomBar\n error={pendingSaveError}\n isSaving={pendingSavePromise != null}\n saveTooltip={`Commit (${this.commitAction.shortcut.getDisplayText()})`}\n discardTooltip={`Discard (${this.discardAction.shortcut.getDisplayText()})`}\n pendingDataErrors={pendingDataErrors}\n pendingDataMap={pendingDataMap}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n onSave={this.handlePendingCommitClicked}\n onDiscard={this.handlePendingDiscardClicked}\n />\n <ToastBottomBar>{toastMessage}</ToastBottomBar>\n <IrisGridCopyHandler\n model={model}\n copyOperation={copyOperation}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <CSSTransition\n in={isMenuShown}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n <Page title=\"Table Options\" onClose={this.handleMenuClose}>\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>\n {openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n ))}\n </Stack>\n </div>\n </CSSTransition>\n <ContextActions actions={this.contextActions} />\n </div>\n );\n }\n}\n\nIrisGrid.propTypes = {\n children: PropTypes.node,\n advancedFilters: PropTypes.instanceOf(Map),\n advancedSettings: PropTypes.instanceOf(Map),\n alwaysFetchColumns: PropTypes.arrayOf(PropTypes.string),\n isFilterBarShown: PropTypes.bool,\n applyInputFiltersOnInit: PropTypes.bool,\n customColumnFormatMap: PropTypes.instanceOf(Map),\n movedColumns: PropTypes.arrayOf(\n PropTypes.shape({\n from: PropTypes.number.isRequired,\n to: PropTypes.number.isRequired,\n })\n ),\n movedRows: PropTypes.arrayOf(\n PropTypes.shape({\n from: PropTypes.number.isRequired,\n to: PropTypes.number.isRequired,\n })\n ),\n inputFilters: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ),\n customFilters: PropTypes.arrayOf(PropTypes.shape({})),\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n onCreateChart: PropTypes.func,\n onColumnSelected: PropTypes.func,\n onError: PropTypes.func,\n onDataSelected: PropTypes.func,\n onStateChange: PropTypes.func,\n onPartitionAppend: PropTypes.func,\n onAdvancedSettingsChange: PropTypes.func,\n partition: PropTypes.string,\n partitionColumn: APIPropTypes.Column,\n sorts: PropTypes.arrayOf(PropTypes.shape({})),\n reverseType: PropTypes.string,\n quickFilters: PropTypes.instanceOf(Map),\n customColumns: PropTypes.arrayOf(PropTypes.string),\n selectDistinctColumns: PropTypes.arrayOf(PropTypes.string),\n // These settings come from the redux store\n settings: PropTypes.shape({\n timeZone: PropTypes.string.isRequired,\n defaultDateTimeFormat: PropTypes.string.isRequired,\n showTimeZone: PropTypes.bool.isRequired,\n showTSeparator: PropTypes.bool.isRequired,\n formatter: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n }),\n userColumnWidths: PropTypes.instanceOf(Map),\n userRowHeights: PropTypes.instanceOf(Map),\n onSelectionChanged: PropTypes.func,\n rollupConfig: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.string),\n showConstituents: PropTypes.bool,\n showNonAggregatedColumns: PropTypes.bool,\n includeDescriptions: PropTypes.bool,\n }),\n aggregationSettings: PropTypes.shape({\n aggregations: PropTypes.arrayOf(\n PropTypes.shape({\n operation: PropTypes.string.isRequired,\n selected: PropTypes.arrayOf(PropTypes.string).isRequired,\n invert: PropTypes.bool.isRequired,\n })\n ),\n showOnTop: PropTypes.bool,\n }),\n\n isSelectingColumn: PropTypes.bool,\n isSelectingPartition: PropTypes.bool,\n isStuckToBottom: PropTypes.bool,\n isStuckToRight: PropTypes.bool,\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator: PropTypes.func,\n columnAllowedCursor: PropTypes.string,\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: PropTypes.string,\n name: PropTypes.string,\n onlyFetchVisibleColumns: PropTypes.bool,\n\n showSearchBar: PropTypes.bool,\n searchValue: PropTypes.string,\n selectedSearchColumns: PropTypes.arrayOf(PropTypes.string),\n invertSearchColumns: PropTypes.bool,\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: PropTypes.func,\n\n pendingDataMap: PropTypes.instanceOf(Map),\n getDownloadWorker: PropTypes.func,\n\n canCopy: PropTypes.bool,\n canDownloadCsv: PropTypes.bool,\n frozenColumns: PropTypes.arrayOf(PropTypes.string),\n\n // Theme override for IrisGridTheme\n theme: PropTypes.shape({}),\n\n canToggleSearch: PropTypes.bool,\n};\n\nIrisGrid.defaultProps = {\n children: null,\n advancedFilters: new Map(),\n advancedSettings: new Map(),\n alwaysFetchColumns: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: [],\n movedRows: [],\n inputFilters: [],\n customFilters: [],\n onCreateChart: undefined,\n onColumnSelected: () => {},\n onDataSelected: () => {},\n onError: () => {},\n onStateChange: () => {},\n onPartitionAppend: () => {},\n onAdvancedSettingsChange: () => {},\n partition: null,\n partitionColumn: null,\n quickFilters: new Map(),\n selectDistinctColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: [],\n aggregationSettings: { aggregations: [], showOnTop: false },\n rollupConfig: null,\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n onSelectionChanged: () => {},\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnSelectionValidator: null,\n columnAllowedCursor: null,\n columnNotAllowedCursor: null,\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: () => [],\n pendingDataMap: new Map(),\n getDownloadWorker: undefined,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n formatter: [],\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: {},\n canToggleSearch: true,\n};\n\nexport default IrisGrid;\n"],"file":"IrisGrid.js"}
1
+ {"version":3,"sources":["../src/IrisGrid.jsx"],"names":["React","Component","memoize","classNames","CSSTransition","PropTypes","deepEqual","Log","FontAwesomeIcon","ContextActionUtils","ContextActions","DeephavenSpinner","Stack","Menu","Page","Popper","ThemeExport","Tooltip","Grid","GridRange","GridUtils","dhEye","dhFilterFilled","dhGraphLineUp","dhTriangleDownSquare","vsCloudDownload","vsEdit","vsFilter","vsMenu","vsRuby","vsSearch","vsSplitHorizontal","vsSymbolOperator","vsTools","dh","APIPropTypes","Pending","PromiseUtils","ValidationError","throttle","debounce","clamp","PendingDataBottomBar","IrisGridCopyHandler","FilterInputField","ClearFilterKeyHandler","CopyKeyHandler","ReverseKeyHandler","IrisGridColumnSelectMouseHandler","IrisGridColumnTooltipMouseHandler","IrisGridContextMenuHandler","IrisGridDataSelectMouseHandler","IrisGridFilterMouseHandler","IrisGridSortMouseHandler","PendingMouseHandler","ToastBottomBar","IrisGridMetricCalculator","IrisGridModelUpdater","IrisGridRenderer","IrisGridTheme","ColumnStatistics","Formatter","FormatterUtils","TableUtils","AdvancedFilterCreator","Aggregations","AggregationEdit","AggregationUtils","ChartBuilder","CustomColumnBuilder","OptionType","RollupRows","TableCsvExporter","TableSaver","VisibilityOrderingBuilder","IrisGridUtils","CrossColumnSearch","IrisGridModel","IrisGridPartitionSelector","SelectDistinctBuilder","AdvancedSettingsType","AdvancedSettingsMenu","SHORTCUTS","DateUtils","ConditionalFormattingMenu","getFormatColumns","ConditionalFormatEditor","log","module","UPDATE_DOWNLOAD_THROTTLE","SET_FILTER_DEBOUNCE","SET_CONDITIONAL_FORMAT_DEBOUNCE","isEmptyConfig","advancedFilters","quickFilters","sorts","customColumns","reverseType","searchFilter","size","length","REVERSE_TYPE","NONE","IrisGrid","makeQuickFilter","column","text","timeZone","err","error","constructor","props","handleAdvancedMenuOpened","bind","max","model","advancedFilterOptions","sortDirection","formatter","handleAdvancedFilterChange","handleAdvancedFilterSortChange","handleAdvancedFilterDone","isChartBuilderAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isRollupAvailable","isTotalsAvailable","isSelectDistinctAvailable","isExportAvailable","toggleFilterBarAction","toggleSearchBarAction","isFilterBarShown","showSearchBar","canDownloadCsv","canToggleSearch","optionItems","push","type","CHART_BUILDER","title","icon","VISIBILITY_ORDERING_BUILDER","CONDITIONAL_FORMATTING","CUSTOM_COLUMN_BUILDER","ROLLUP_ROWS","AGGREGATIONS","SELECT_DISTINCT","TABLE_EXPORTER","ADVANCED_SETTINGS","QUICK_FILTERS","subtitle","shortcut","getDisplayText","isOn","onChange","action","SEARCH_BAR","hiddenColumns","normalizer","join","columns","aggregations","aggregationMap","forEach","operation","selected","invert","getOperationColumnNames","operationMap","filter","a","isRollupOperation","name","newOperations","map","o","rules","rulesParam","preview","editIndex","debug","undefined","getCachedFormatColumns","originalColumns","config","aggregationSettings","getModelRollupConfig","showOnTop","getOperationMap","operationOrder","getOperationOrder","hoverSelectColumn","isSelectingColumn","loadingScrimProgress","rollupConfig","customFilters","partitionFilters","getFiltersFromFilterMap","theme","isEditable","autoSelectRow","alwaysFetchColumns","floatingLeftColumnCount","floatingRightColumnCount","floatingLeftColumns","floatingRightColumns","slice","col","columnSet","Set","handleAdvancedMenuClosed","handleAggregationChange","handleAggregationsChange","handleAggregationEdit","handleAnimationLoop","handleAnimationStart","handleAnimationEnd","handleChartChange","handleChartCreate","handleGridError","handleFilterBarChange","handleFilterBarDone","handleFilterBarTab","handleCancel","handleMenu","handleMenuClose","handleMenuSelect","handleMenuBack","handleRequestFailed","handleSelectionChanged","handleMovedColumnsChanged","handleUpdate","handleTooltipRef","handleViewChanged","handleFormatSelection","handleConditionalFormatCreate","handleConditionalFormatEdit","handleConditionalFormatsChange","handleConditionalFormatEditorSave","handleConditionalFormatEditorUpdate","handleConditionalFormatEditorCancel","handleUpdateCustomColumns","handleCustomColumnsChanged","handleSelectDistinctChanged","handlePendingDataUpdated","handlePendingCommitClicked","handlePendingDiscardClicked","handleDownloadTable","handleDownloadTableStart","handleCancelDownloadTable","handleDownloadCanceled","handleDownloadProgressUpdate","handleDownloadCompleted","handlePartitionAppend","handlePartitionChange","handlePartitionFetchAll","handlePartitionDone","handleColumnVisibilityChanged","handleCrossColumnSearch","handleRollupChange","updateSearchFilter","grid","gridWrapper","lastFocusedFilterBarColumn","lastLoadedConfig","tooltip","pending","globalColumnFormats","dateTimeFormatterOptions","decimalFormatOptions","integerFormatOptions","loadingScrimStartTime","loadingScrimFinishTime","loadingTimer","renderer","tableSaver","crossColumnRef","createRef","isAnimating","animationFrame","filterInputRef","toggleFilterBar","TABLE","TOGGLE_QUICK_FILTER","toggleSearchBar","TOGGLE_SEARCH","discardAction","pendingDataMap","discardPending","catch","INPUT_TABLE","DISCARD","commitAction","pendingDataErrors","commitPending","COMMIT","contextActions","conditionalFormats","customColumnFormatMap","isSelectingPartition","movedColumns","movedRows","partition","partitionColumn","userColumnWidths","userRowHeights","searchValue","selectedSearchColumns","invertSearchColumns","selectDistinctColumns","canCopy","frozenColumns","keyHandlers","mouseHandlers","metricCalculator","Map","searchColumns","createSearchFilter","state","focusedFilterBarColumn","metrics","partitionTable","shownAdvancedFilter","hoverAdvancedFilter","selectedRanges","copyOperation","loadingText","loadingSpinnerShown","shownColumnTooltip","isMenuShown","conditionalFormatEditIndex","conditionalFormatPreview","isTableDownloading","isReady","tableDownloadStatus","tableDownloadProgress","tableDownloadEstimatedTime","rollupSelectedColumns","selectedAggregation","openOptions","pendingRowCount","pendingSavePromise","pendingSaveError","toastMessage","componentDidMount","find","c","isPartitionColumn","isFilterRequired","isValuesTableAvailable","loadPartitionsTable","initState","startListening","componentDidUpdate","prevProps","inputFilters","settings","stopListening","changedInputFilters","inputFilter","includes","advancedSettings","replaceExistingFilters","get","FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS","clearGridInputField","clearCrossColumSearch","startLoading","applyInputFilters","resetColumnSelection","updateFormatterSettings","updateSorts","window","requestAnimationFrame","now","Date","currentTime","totalTime","Math","min","setState","debug2","sendStateChange","componentWillUnmount","cancel","clearTimeout","cancelAnimationFrame","getValueForCell","columnIndex","rowIndex","rawValue","modelColumn","getModelColumn","modelRow","getModelRow","valueForCell","textForCell","modelColumns","modelRows","getTheme","getCachedTheme","getVisibleColumn","modelIndex","getVisibleIndex","replaceExisting","newAdvancedFilters","newQuickFilters","isChanged","value","findIndex","columnName","columnType","delete","applyQuickFilter","trim","quickFilter","set","setAdvancedFilter","options","setQuickFilter","setFilterMap","filterMap","clearFiltersOnLinkerFilterUpdate","LINK_CHANGE_CLEARS_ALL_FILTERS","clearAllFilters","getColumnIndexByName","isNull","filterValue","isTextType","FilterValue","ofString","ofNumber","eq","removeColumnFilter","current","setValue","rebuildFilters","key","makeAdvancedFilter","setFilters","forceUpdate","getColumnFormats","getDateTimeFormatterOptions","defaultDecimalFormatOptions","defaultIntegerFormatOptions","isColumnFormatChanged","isDateFormattingChanged","isDecimalFormattingChanged","isIntegerFormattingChanged","updateFormatter","updatedFormats","update","mergedColumnFormats","values","initFormatter","applyInputFiltersOnInit","inputFiltersWithValues","add","valuesTable","resolved","close","sort","desc","applySort","setViewport","data","getViewportData","rows","row","updatePartition","info","handleTableLoadError","partitionFilter","copyCell","copyToClipboard","e","copyRanges","ranges","includeHeaders","formatValues","boundedRanges","columnCount","rowCount","resetRanges","clearSelectedRanges","setViewState","top","minScrimTransitionTime","maxScrimTransitionTime","height","getBoundingClientRect","scrimTransitionTime","setTimeout","loadingSpinnerDelay","stopLoading","rollback","canRollback","addEventListener","EVENT","UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","PENDING_DATA_UPDATED","removeEventListener","focusFilterBar","isFilterable","gridX","left","rightVisible","lastLeft","metricState","getMetricState","newLeft","getLastLeft","hideColumnByVisibleIndex","columnVisibleIndex","setColumnWidth","getModelIndex","freezeColumnByColumnName","allFrozenColumns","layoutHints","unFreezeColumnByColumnName","modelIndexes","visibilityOption","VISIBILITY_OPTIONS","SHOW","resetColumnWidth","updateCanvasScale","updateCanvas","onPartitionAppend","isCanceled","onError","showAllColumns","entries","i","columnWidth","toggleSort","addToExisting","currentSorts","toggleSortForColumn","table","sortColumn","direction","isAbs","reverse","isReversible","focusIndex","focus","isTableSearchAvailable","searchDisplayMode","SearchDisplayMode","SEARCH_DISPLAY_HIDE","SEARCH_DISPLAY_SHOW","Error","document","activeElement","classList","contains","newPendingSavePromise","then","selectColumn","onColumnSelected","selectData","dataMap","onDataSelected","oldSort","getSortForColumn","newSort","descending","asc","setSortForColumn","onCreateChart","warn","setGridFocus","defocusInput","backward","selectedFormat","prevCustomColumnFormatMap","normalizedType","getNormalizedType","columnFormattingRule","makeColumnFormattingRule","newOptions","pop","option","event","detail","bottomViewport","selectionEndRow","bottomNonFloating","floatingBottomRowCount","floatingTopRowCount","onSelectionChanged","onChangeApplied","startTimer","CONDITIONAL_FORMATTING_EDIT","index","oldCustomColumns","customColumn","removedColumnNames","getRemovedCustomColumnNames","newSorts","removeSortsInColumns","removeFiltersInColumns","newMovedColumns","removeColumnFromMovedColumns","newSelectDistinctColumns","removeColumnsFromSelectDistinctColumns","aggregation","AGGREGATION_EDIT","resetGridViewState","columnNames","DOWNLOAD_STATUS","INITIATING","args","startDownload","DOWNLOADING","cancelDownload","FINISHED","CANCELED","deleteRanges","columnAllowedCursor","cursor","CURSOR_TYPE_DEFAULT","topOffset","leftOffset","irisGridState","gridState","onStateChange","render","children","getDownloadWorker","isStuckToBottom","isStuckToRight","onlyFetchVisibleColumns","onAdvancedSettingsChange","getCachedFilter","stateOverride","getCachedStateOverride","bottom","right","isVisible","width","isRollup","focusField","debounceMs","minDebounce","round","maxDebounce","gridY","visibleColumnXs","visibleColumnWidths","columnX","x","y","filterBarHeight","fieldWidth","fieldHeight","style","minWidth","isValid","advancedFilter","isBarFiltered","active","handleContextMenu","loadingElement","loadingStatus","loader","cancelButton","show","columnTooltip","columnHeaderHeight","boundedLeft","boundedWidth","abs","wrapperStyle","position","pointerEvents","gridRect","popperMargin","virtualReference","clientWidth","clientHeight","popperOptions","placement","modifiers","flip","behavior","filterBar","visibleColumns","isFilterSet","isFilterVisible","element","hidden","advancedFilterMenus","xColumnHeader","xFilterBar","getAdvancedMenuOpenedHandler","getCachedAdvancedFilterMenuActions","getCachedOptionItems","openOptionsStack","getCachedHiddenColumns","getHiddenColumns","transitionSlowMs","displayString","getAlwaysFetchColumns","getCachedPreviewFormatColumns","getCachedModelColumns","getModelTotalsConfig","transitionMidMs","propTypes","node","instanceOf","arrayOf","string","bool","shape","from","number","isRequired","to","func","Column","defaultDateTimeFormat","showTimeZone","showTSeparator","showConstituents","showNonAggregatedColumns","includeDescriptions","columnSelectionValidator","columnNotAllowedCursor","onContextMenu","defaultProps","FULL_DATE_FORMAT","defaultFormatString"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport memoize from 'memoizee';\nimport classNames from 'classnames';\nimport { CSSTransition } from 'react-transition-group';\nimport PropTypes from 'prop-types';\nimport deepEqual from 'deep-equal';\nimport Log from '@deephaven/log';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ContextActionUtils,\n ContextActions,\n DeephavenSpinner,\n Stack,\n Menu,\n Page,\n Popper,\n ThemeExport,\n Tooltip,\n} from '@deephaven/components';\nimport { Grid, GridRange, GridUtils } from '@deephaven/grid';\nimport {\n dhEye,\n dhFilterFilled,\n dhGraphLineUp,\n dhTriangleDownSquare,\n vsCloudDownload,\n vsEdit,\n vsFilter,\n vsMenu,\n vsRuby,\n vsSearch,\n vsSplitHorizontal,\n vsSymbolOperator,\n vsTools,\n} from '@deephaven/icons';\nimport dh, { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport { Pending, PromiseUtils, ValidationError } from '@deephaven/utils';\nimport throttle from 'lodash.throttle';\nimport debounce from 'lodash.debounce';\nimport clamp from 'lodash.clamp';\nimport PendingDataBottomBar from './PendingDataBottomBar';\nimport IrisGridCopyHandler from './IrisGridCopyHandler';\nimport FilterInputField from './FilterInputField';\nimport {\n ClearFilterKeyHandler,\n CopyKeyHandler,\n ReverseKeyHandler,\n} from './key-handlers';\nimport {\n IrisGridColumnSelectMouseHandler,\n IrisGridColumnTooltipMouseHandler,\n IrisGridContextMenuHandler,\n IrisGridDataSelectMouseHandler,\n IrisGridFilterMouseHandler,\n IrisGridSortMouseHandler,\n PendingMouseHandler,\n} from './mousehandlers';\nimport ToastBottomBar from './ToastBottomBar';\nimport IrisGridMetricCalculator from './IrisGridMetricCalculator';\nimport IrisGridModelUpdater from './IrisGridModelUpdater';\nimport IrisGridRenderer from './IrisGridRenderer';\nimport IrisGridTheme from './IrisGridTheme';\nimport ColumnStatistics from './ColumnStatistics';\nimport './IrisGrid.scss';\nimport Formatter from './Formatter';\nimport FormatterUtils from './FormatterUtils';\nimport TableUtils from './TableUtils';\nimport AdvancedFilterCreator from './AdvancedFilterCreator';\nimport {\n Aggregations,\n AggregationEdit,\n AggregationUtils,\n ChartBuilder,\n CustomColumnBuilder,\n OptionType,\n RollupRows,\n TableCsvExporter,\n TableSaver,\n VisibilityOrderingBuilder,\n} from './sidebar';\nimport IrisGridUtils from './IrisGridUtils';\nimport CrossColumnSearch from './CrossColumnSearch';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridPartitionSelector from './IrisGridPartitionSelector';\nimport SelectDistinctBuilder from './sidebar/SelectDistinctBuilder';\nimport AdvancedSettingsType from './sidebar/AdvancedSettingsType';\nimport AdvancedSettingsMenu from './sidebar/AdvancedSettingsMenu';\nimport SHORTCUTS from './IrisGridShortcuts';\nimport DateUtils from './DateUtils';\nimport ConditionalFormattingMenu from './sidebar/conditional-formatting/ConditionalFormattingMenu';\nimport { getFormatColumns } from './sidebar/conditional-formatting/ConditionalFormattingUtils';\nimport ConditionalFormatEditor from './sidebar/conditional-formatting/ConditionalFormatEditor';\n\nconst log = Log.module('IrisGrid');\n\nconst UPDATE_DOWNLOAD_THROTTLE = 500;\n\nconst SET_FILTER_DEBOUNCE = 250;\n\nconst SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;\n\nfunction isEmptyConfig({\n advancedFilters,\n quickFilters,\n sorts,\n customColumns,\n reverseType,\n searchFilter,\n}) {\n return (\n advancedFilters.size === 0 &&\n quickFilters.size === 0 &&\n sorts.length === 0 &&\n customColumns.length === 0 &&\n reverseType === TableUtils.REVERSE_TYPE.NONE &&\n searchFilter == null\n );\n}\n\nexport class IrisGrid extends Component {\n static minDebounce = 150;\n\n static maxDebounce = 500;\n\n static loadingSpinnerDelay = 800;\n\n static makeQuickFilter(column, text, timeZone) {\n try {\n return TableUtils.makeQuickFilter(column, text, timeZone);\n } catch (err) {\n log.error('Error creating quick filter', err);\n }\n return null;\n }\n\n constructor(props) {\n super(props);\n\n this.handleAdvancedFilterChange = this.handleAdvancedFilterChange.bind(\n this\n );\n this.handleAdvancedFilterSortChange = this.handleAdvancedFilterSortChange.bind(\n this\n );\n this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);\n this.handleAdvancedMenuOpened = this.handleAdvancedMenuOpened.bind(this);\n this.handleAdvancedMenuClosed = this.handleAdvancedMenuClosed.bind(this);\n this.handleAggregationChange = this.handleAggregationChange.bind(this);\n this.handleAggregationsChange = this.handleAggregationsChange.bind(this);\n this.handleAggregationEdit = this.handleAggregationEdit.bind(this);\n this.handleAnimationLoop = this.handleAnimationLoop.bind(this);\n this.handleAnimationStart = this.handleAnimationStart.bind(this);\n this.handleAnimationEnd = this.handleAnimationEnd.bind(this);\n this.handleChartChange = this.handleChartChange.bind(this);\n this.handleChartCreate = this.handleChartCreate.bind(this);\n this.handleGridError = this.handleGridError.bind(this);\n this.handleFilterBarChange = this.handleFilterBarChange.bind(this);\n this.handleFilterBarDone = this.handleFilterBarDone.bind(this);\n this.handleFilterBarTab = this.handleFilterBarTab.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n this.handleMenu = this.handleMenu.bind(this);\n this.handleMenuClose = this.handleMenuClose.bind(this);\n this.handleMenuSelect = this.handleMenuSelect.bind(this);\n this.handleMenuBack = this.handleMenuBack.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleSelectionChanged = this.handleSelectionChanged.bind(this);\n this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);\n this.handleUpdate = this.handleUpdate.bind(this);\n this.handleTooltipRef = this.handleTooltipRef.bind(this);\n this.handleViewChanged = this.handleViewChanged.bind(this);\n this.handleFormatSelection = this.handleFormatSelection.bind(this);\n this.handleConditionalFormatCreate = this.handleConditionalFormatCreate.bind(\n this\n );\n this.handleConditionalFormatEdit = this.handleConditionalFormatEdit.bind(\n this\n );\n this.handleConditionalFormatsChange = this.handleConditionalFormatsChange.bind(\n this\n );\n this.handleConditionalFormatEditorSave = this.handleConditionalFormatEditorSave.bind(\n this\n );\n this.handleConditionalFormatEditorUpdate = debounce(\n this.handleConditionalFormatEditorUpdate.bind(this),\n SET_CONDITIONAL_FORMAT_DEBOUNCE\n );\n this.handleConditionalFormatEditorCancel = this.handleConditionalFormatEditorCancel.bind(\n this\n );\n this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);\n this.handleCustomColumnsChanged = this.handleCustomColumnsChanged.bind(\n this\n );\n this.handleSelectDistinctChanged = this.handleSelectDistinctChanged.bind(\n this\n );\n this.handlePendingDataUpdated = this.handlePendingDataUpdated.bind(this);\n this.handlePendingCommitClicked = this.handlePendingCommitClicked.bind(\n this\n );\n this.handlePendingDiscardClicked = this.handlePendingDiscardClicked.bind(\n this\n );\n\n this.handleDownloadTable = this.handleDownloadTable.bind(this);\n this.handleDownloadTableStart = this.handleDownloadTableStart.bind(this);\n this.handleCancelDownloadTable = this.handleCancelDownloadTable.bind(this);\n this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);\n this.handleDownloadProgressUpdate = throttle(\n this.handleDownloadProgressUpdate.bind(this),\n UPDATE_DOWNLOAD_THROTTLE\n );\n this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);\n this.handlePartitionAppend = this.handlePartitionAppend.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handlePartitionFetchAll = this.handlePartitionFetchAll.bind(this);\n this.handlePartitionDone = this.handlePartitionDone.bind(this);\n this.handleColumnVisibilityChanged = this.handleColumnVisibilityChanged.bind(\n this\n );\n this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);\n this.handleRollupChange = this.handleRollupChange.bind(this);\n\n this.updateSearchFilter = debounce(\n this.updateSearchFilter.bind(this),\n SET_FILTER_DEBOUNCE\n );\n\n this.grid = null;\n this.gridWrapper = null;\n this.lastFocusedFilterBarColumn = null;\n this.lastLoadedConfig = null;\n this.tooltip = null;\n this.pending = new Pending();\n this.globalColumnFormats = [];\n this.dateTimeFormatterOptions = {};\n this.decimalFormatOptions = {};\n this.integerFormatOptions = {};\n\n // When the loading scrim started/when it should extend to the end of the screen.\n this.loadingScrimStartTime = null;\n this.loadingScrimFinishTime = null;\n this.loadingTimer = null;\n this.renderer = new IrisGridRenderer();\n this.tableSaver = null;\n this.crossColumnRef = React.createRef();\n this.isAnimating = false;\n this.animationFrame = null;\n this.filterInputRef = React.createRef();\n\n this.toggleFilterBarAction = {\n action: () => this.toggleFilterBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_QUICK_FILTER,\n };\n this.toggleSearchBarAction = {\n action: () => this.toggleSearchBar(),\n shortcut: SHORTCUTS.TABLE.TOGGLE_SEARCH,\n };\n this.discardAction = {\n action: () => {\n const { model } = this.props;\n if (model.isEditable && model.pendingDataMap.size > 0) {\n this.discardPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.DISCARD,\n };\n this.commitAction = {\n action: () => {\n const { model } = this.props;\n if (\n model.isEditable &&\n model.pendingDataMap.size > 0 &&\n model.pendingDataErrors.size === 0\n ) {\n this.commitPending().catch(log.error);\n }\n },\n shortcut: SHORTCUTS.INPUT_TABLE.COMMIT,\n };\n this.contextActions = [\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n this.discardAction,\n this.commitAction,\n ];\n\n const {\n aggregationSettings,\n conditionalFormats,\n customColumnFormatMap,\n isFilterBarShown,\n isSelectingPartition,\n model,\n movedColumns,\n movedRows,\n partition,\n partitionColumn,\n rollupConfig,\n userColumnWidths,\n userRowHeights,\n showSearchBar,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n advancedFilters,\n quickFilters,\n selectDistinctColumns,\n pendingDataMap,\n canCopy,\n frozenColumns,\n } = props;\n\n const keyHandlers = [\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(this),\n ];\n if (canCopy) {\n keyHandlers.push(new CopyKeyHandler(this));\n }\n const mouseHandlers = [\n new IrisGridColumnSelectMouseHandler(this),\n new IrisGridColumnTooltipMouseHandler(this),\n new IrisGridSortMouseHandler(this),\n new IrisGridFilterMouseHandler(this),\n new IrisGridContextMenuHandler(this),\n new IrisGridDataSelectMouseHandler(this),\n new PendingMouseHandler(this),\n ];\n\n const metricCalculator = new IrisGridMetricCalculator({\n userColumnWidths: new Map(userColumnWidths),\n userRowHeights: new Map(userRowHeights),\n });\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.state = {\n isFilterBarShown,\n isSelectingPartition,\n focusedFilterBarColumn: null,\n metricCalculator,\n metrics: null,\n keyHandlers,\n mouseHandlers,\n\n partition,\n partitionColumn,\n partitionTable: null,\n partitionFilters: [],\n // setAdvancedFilter and setQuickFilter mutate the arguments\n // so we want to always use map copies from the state instead of props\n quickFilters: new Map(quickFilters),\n advancedFilters: new Map(advancedFilters),\n shownAdvancedFilter: null,\n hoverAdvancedFilter: null,\n\n filter: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: [],\n selectDistinctColumns,\n\n // selected range in table\n selectedRanges: [],\n\n // Current ongoing copy operation\n copyOperation: null,\n\n // The filter that is currently being applied. Reset after update is received\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n\n movedColumns,\n movedRows,\n\n shownColumnTooltip: null,\n\n formatter: new Formatter(),\n isMenuShown: false,\n customColumnFormatMap: new Map(customColumnFormatMap),\n\n conditionalFormats,\n conditionalFormatEditIndex: null,\n conditionalFormatPreview: undefined,\n\n // Column user is hovering over for selection\n hoverSelectColumn: null,\n\n isTableDownloading: false,\n isReady: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: 0,\n\n showSearchBar,\n searchFilter,\n searchValue,\n selectedSearchColumns: searchColumns,\n invertSearchColumns,\n\n rollupConfig,\n rollupSelectedColumns: [],\n aggregationSettings,\n selectedAggregation: null,\n\n openOptions: [],\n\n pendingRowCount: 0,\n pendingDataMap,\n pendingDataErrors: new Map(),\n pendingSavePromise: null,\n pendingSaveError: null,\n\n toastMessage: null,\n frozenColumns,\n };\n }\n\n componentDidMount() {\n const { partitionColumn, model } = this.props;\n const column =\n partitionColumn || model.columns.find(c => c.isPartitionColumn);\n if (\n model.isFilterRequired &&\n model.isValuesTableAvailable &&\n column != null\n ) {\n this.loadPartitionsTable(column);\n } else {\n this.initState();\n }\n this.startListening(model);\n }\n\n componentDidUpdate(prevProps) {\n const {\n inputFilters,\n isSelectingColumn,\n settings,\n model,\n customFilters,\n sorts,\n } = this.props;\n\n if (model !== prevProps.model) {\n this.stopListening(prevProps.model);\n this.startListening(model);\n }\n\n const changedInputFilters =\n inputFilters !== prevProps.inputFilters\n ? inputFilters.filter(\n inputFilter => !prevProps.inputFilters.includes(inputFilter)\n )\n : [];\n if (changedInputFilters.length > 0) {\n const { advancedSettings } = this.props;\n const replaceExistingFilters =\n advancedSettings.get(\n AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (replaceExistingFilters) {\n this.clearGridInputField();\n this.clearCrossColumSearch();\n }\n this.startLoading('Filtering...', true);\n this.applyInputFilters(changedInputFilters, replaceExistingFilters);\n }\n\n if (isSelectingColumn !== prevProps.isSelectingColumn) {\n this.resetColumnSelection();\n }\n if (settings !== prevProps.settings) {\n this.updateFormatterSettings(settings);\n }\n if (customFilters !== prevProps.customFilters) {\n this.startLoading('Filtering...', true);\n }\n if (sorts !== prevProps.sorts) {\n this.updateSorts(sorts);\n }\n\n const { loadingScrimStartTime, loadingScrimFinishTime } = this;\n if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {\n window.requestAnimationFrame(() => {\n const now = Date.now();\n const currentTime = now - loadingScrimStartTime;\n const totalTime = loadingScrimFinishTime - loadingScrimStartTime;\n const loadingScrimProgress = Math.min(currentTime / totalTime, 1);\n if (loadingScrimFinishTime < now) {\n this.loadingScrimStartTime = null;\n this.loadingScrimFinishTime = null;\n }\n\n this.setState(state => {\n if (state.loadingScrimProgress == null) {\n log.debug2('Ignoring scrim update because loading cancelled.');\n return null;\n }\n\n return { loadingScrimProgress };\n });\n });\n }\n\n this.sendStateChange();\n }\n\n componentWillUnmount() {\n const { model } = this.props;\n this.stopListening(model);\n this.pending.cancel();\n this.updateSearchFilter.cancel();\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n }\n this.handleDownloadProgressUpdate.cancel();\n cancelAnimationFrame(this.animationFrame);\n }\n\n getAdvancedMenuOpenedHandler = memoize(\n column => this.handleAdvancedMenuOpened.bind(this, column),\n { max: 100 }\n );\n\n getCachedAdvancedFilterMenuActions = memoize(\n (model, column, advancedFilterOptions, sortDirection, formatter) => (\n <AdvancedFilterCreator\n model={model}\n column={column}\n onFilterChange={this.handleAdvancedFilterChange}\n onSortChange={this.handleAdvancedFilterSortChange}\n onDone={this.handleAdvancedFilterDone}\n options={advancedFilterOptions}\n sortDirection={sortDirection}\n formatter={formatter}\n />\n ),\n { max: 50 }\n );\n\n getCachedOptionItems = memoize(\n (\n isChartBuilderAvailable,\n isCustomColumnsAvailable,\n isFormatColumnsAvailable,\n isRollupAvailable,\n isTotalsAvailable,\n isSelectDistinctAvailable,\n isExportAvailable,\n toggleFilterBarAction,\n toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n canToggleSearch\n ) => {\n const optionItems = [];\n if (isChartBuilderAvailable) {\n optionItems.push({\n type: OptionType.CHART_BUILDER,\n title: 'Chart Builder',\n icon: dhGraphLineUp,\n });\n }\n optionItems.push({\n type: OptionType.VISIBILITY_ORDERING_BUILDER,\n title: 'Column Visibility & Ordering',\n icon: dhEye,\n });\n if (isFormatColumnsAvailable) {\n optionItems.push({\n type: OptionType.CONDITIONAL_FORMATTING,\n title: 'Conditional Formatting',\n icon: vsEdit,\n });\n }\n if (isCustomColumnsAvailable) {\n optionItems.push({\n type: OptionType.CUSTOM_COLUMN_BUILDER,\n title: 'Manage Custom Columns',\n icon: vsSplitHorizontal,\n });\n }\n if (isRollupAvailable) {\n optionItems.push({\n type: OptionType.ROLLUP_ROWS,\n title: 'Rollup Rows',\n icon: dhTriangleDownSquare,\n });\n }\n if (isTotalsAvailable) {\n optionItems.push({\n type: OptionType.AGGREGATIONS,\n title: 'Aggregate Columns',\n icon: vsSymbolOperator,\n });\n }\n if (isSelectDistinctAvailable) {\n optionItems.push({\n type: OptionType.SELECT_DISTINCT,\n title: 'Select Distinct Values',\n icon: vsRuby,\n });\n }\n if (isExportAvailable && canDownloadCsv) {\n optionItems.push({\n type: OptionType.TABLE_EXPORTER,\n title: 'Download CSV',\n icon: vsCloudDownload,\n });\n }\n optionItems.push({\n type: OptionType.ADVANCED_SETTINGS,\n title: 'Advanced Settings',\n icon: vsTools,\n });\n optionItems.push({\n type: OptionType.QUICK_FILTERS,\n title: 'Quick Filters',\n subtitle: toggleFilterBarAction.shortcut.getDisplayText(),\n icon: vsFilter,\n isOn: isFilterBarShown,\n onChange: toggleFilterBarAction.action,\n });\n if (canToggleSearch) {\n optionItems.push({\n type: OptionType.SEARCH_BAR,\n title: 'Search Bar',\n subtitle: toggleSearchBarAction.shortcut.getDisplayText(),\n icon: vsSearch,\n isOn: showSearchBar,\n onChange: toggleSearchBarAction.action,\n });\n }\n\n return optionItems;\n },\n { max: 1 }\n );\n\n getCachedHiddenColumns = memoize(hiddenColumns => hiddenColumns, {\n max: 1,\n normalizer: ([hiddenColumns]) => hiddenColumns.join(),\n });\n\n getAggregationMap = memoize((columns, aggregations) => {\n const aggregationMap = {};\n aggregations.forEach(({ operation, selected, invert }) => {\n aggregationMap[operation] = AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n );\n });\n return aggregationMap;\n });\n\n getOperationMap = memoize((columns, aggregations) => {\n const operationMap = {};\n aggregations\n .filter(a => !AggregationUtils.isRollupOperation(a.operation))\n .forEach(({ operation, selected, invert }) => {\n AggregationUtils.getOperationColumnNames(\n columns,\n operation,\n selected,\n invert\n ).forEach(name => {\n const newOperations = [...(operationMap[name] ?? []), operation];\n operationMap[name] = newOperations;\n });\n });\n return operationMap;\n });\n\n getOperationOrder = memoize(aggregations =>\n aggregations\n .map(a => a.operation)\n .filter(o => !AggregationUtils.isRollupOperation(o))\n );\n\n getCachedFormatColumns = memoize((columns, rules) =>\n getFormatColumns(columns, rules)\n );\n\n // customColumns arg is needed to invalidate the cache\n // eslint-disable-next-line no-unused-vars\n getCachedModelColumns = memoize((model, customColumns) => model.columns);\n\n /**\n * Builds formatColumns array based on the provided formatting rules with optional preview\n * @param {Column[]} columns Array of columns\n * @param {FormattingRule[]} rulesParam Array of formatting rules\n * @param {FormattingRule?} preview Optional temporary formatting rule for previewing live changes\n * @param {Number|null} editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable\n * @returns {CustomColumn[]} Format columns array\n */\n getCachedPreviewFormatColumns = memoize(\n (columns, rulesParam, preview, editIndex) => {\n log.debug(\n 'getCachedPreviewFormatColumns',\n rulesParam,\n preview,\n editIndex\n );\n if (preview !== undefined && editIndex !== null) {\n const rules = [...rulesParam];\n rules[editIndex] = preview;\n return this.getCachedFormatColumns(columns, rules);\n }\n\n return this.getCachedFormatColumns(columns, rulesParam);\n }\n );\n\n getModelRollupConfig = memoize(\n (originalColumns, config, aggregationSettings) =>\n IrisGridUtils.getModelRollupConfig(\n originalColumns,\n config,\n aggregationSettings\n )\n );\n\n getModelTotalsConfig = memoize((columns, config, aggregationSettings) => {\n const { aggregations, showOnTop } = aggregationSettings;\n // If we've got rollups, then aggregations are applied as part of that...\n if (\n (config?.columns?.length ?? 0) > 0 ||\n (aggregations?.length ?? 0) === 0\n ) {\n return null;\n }\n\n const operationMap = this.getOperationMap(columns, aggregations);\n const operationOrder = this.getOperationOrder(aggregations);\n\n return { operationMap, operationOrder, showOnTop };\n });\n\n getCachedStateOverride = memoize(\n (\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig\n ) => ({\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig,\n }),\n { max: 1 }\n );\n\n getCachedFilter = memoize(\n (\n customFilters,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n ) => [\n ...customFilters,\n ...partitionFilters,\n ...IrisGridUtils.getFiltersFromFilterMap(quickFilters),\n ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters),\n ...(searchFilter ? [searchFilter] : []), // null check\n ],\n { max: 1 }\n );\n\n getCachedTheme = memoize(\n (theme, isEditable) => ({\n ...IrisGridTheme,\n autoSelectRow: !isEditable,\n ...theme,\n }),\n { max: 1 }\n );\n\n getValueForCell(columnIndex, rowIndex, rawValue = false) {\n const { model } = this.props;\n const modelColumn = this.getModelColumn(columnIndex);\n const modelRow = this.getModelRow(rowIndex);\n if (rawValue) {\n return model.valueForCell(modelColumn, modelRow);\n }\n return model.textForCell(modelColumn, modelRow);\n }\n\n getModelColumn(columnIndex) {\n const { metrics } = this.state;\n const { modelColumns } = metrics;\n if (!modelColumns) {\n return null;\n }\n\n return modelColumns.get(columnIndex);\n }\n\n getModelRow(rowIndex) {\n const { metrics } = this.state;\n const { modelRows } = metrics;\n if (!modelRows) {\n return null;\n }\n\n return modelRows.get(rowIndex);\n }\n\n getTheme() {\n const { model, theme } = this.props;\n return this.getCachedTheme(theme, model.isEditable);\n }\n\n getVisibleColumn(modelIndex) {\n const { movedColumns } = this.state;\n return GridUtils.getVisibleIndex(modelIndex, movedColumns);\n }\n\n /**\n * Applies the provided input filters as quick filters,\n * and clears any existing quickFilters or advancedFilters on that column\n * @param {inputFilter[]} inputFilters Array of input filters to apply\n * @param {boolean} replaceExisting If true, new filters will replace the existing ones, instead of merging\n */\n applyInputFilters(inputFilters, replaceExisting = false) {\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const newAdvancedFilters = replaceExisting\n ? new Map()\n : new Map(advancedFilters);\n const newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);\n\n let isChanged = replaceExisting && advancedFilters.size > 0;\n inputFilters.forEach(({ name, type, value }) => {\n const modelIndex = model.columns.findIndex(\n ({ name: columnName, type: columnType }) =>\n columnName === name && columnType === type\n );\n if (modelIndex >= 0) {\n isChanged = newAdvancedFilters.delete(modelIndex) || isChanged;\n isChanged =\n this.applyQuickFilter(modelIndex, value, newQuickFilters) ||\n isChanged;\n } else {\n log.error('Unable to find column for inputFilter', name, type, value);\n }\n });\n if (isChanged) {\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n }\n\n /**\n * Applies a quick filter\n * @param {number} modelIndex The index in the model of the column to set\n * @param {string} value The string value to set to the quick filter\n * @param {Map} quickFilters The quick filters map\n * @returns {boolean} True if the filters have changed because this quick filter was applied\n */\n applyQuickFilter(modelIndex, value, quickFilters) {\n const { model } = this.props;\n const { formatter } = model;\n const column = model.columns[modelIndex];\n\n if (value != null && `${value}`.trim().length > 0) {\n const quickFilter = quickFilters.get(modelIndex);\n if (quickFilter != null) {\n const { text } = quickFilter;\n if (text === value) {\n log.debug2('Ignoring change to existing filter');\n return false;\n }\n }\n quickFilters.set(modelIndex, {\n text: value,\n filter: IrisGrid.makeQuickFilter(column, value, formatter.timeZone),\n });\n return true;\n }\n return quickFilters.delete(modelIndex);\n }\n\n setAdvancedFilter(modelIndex, filter, options) {\n if (modelIndex == null) {\n log.error('Invalid model index to filter on');\n return;\n }\n\n log.debug('Setting advanced filter', modelIndex, filter);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n if (filter == null) {\n newAdvancedFilters.delete(modelIndex);\n } else {\n newAdvancedFilters.set(modelIndex, {\n filter,\n options,\n });\n }\n return { advancedFilters: newAdvancedFilters };\n });\n }\n\n /**\n * Sets a quick filter against the provided column\n * @param {Number} modelIndex The index in the model for the column this filter is applied to\n * @param {dh.FilterCondition} filter A filter to apply to the column, or null if there was an error\n * @param {String} text The original text the filter was created with\n */\n setQuickFilter(modelIndex, filter, text) {\n log.debug('Setting quick filter', modelIndex, filter, text);\n\n this.startLoading('Filtering...', true);\n\n this.setState(({ quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.set(modelIndex, { filter, text });\n return { quickFilters: newQuickFilters };\n });\n }\n\n /**\n * Set grid filters based on the filter map\n * @param {Map<string, Object>} filterMap Filter map\n */\n setFilterMap(filterMap) {\n log.debug('setFilterMap', filterMap);\n\n const { advancedSettings } = this.props;\n const clearFiltersOnLinkerFilterUpdate =\n advancedSettings.get(\n AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS\n ) ?? false;\n if (clearFiltersOnLinkerFilterUpdate) {\n this.clearAllFilters();\n }\n\n const { model } = this.props;\n filterMap.forEach(({ columnType, text, value }, columnName) => {\n const column = model.columns.find(\n c => c.name === columnName && c.type === columnType\n );\n if (column == null) {\n return;\n }\n const columnIndex = model.getColumnIndexByName(column.name);\n if (value === null) {\n this.setQuickFilter(columnIndex, column.filter().isNull(), '=null');\n } else {\n const filterValue = TableUtils.isTextType(columnType)\n ? dh.FilterValue.ofString(value)\n : dh.FilterValue.ofNumber(value);\n this.setQuickFilter(\n columnIndex,\n column.filter().eq(filterValue),\n `${text}`\n );\n }\n });\n }\n\n removeColumnFilter(modelColumn) {\n this.startLoading('Filtering...', true);\n\n this.setState(({ advancedFilters, quickFilters }) => {\n const newAdvancedFilters = new Map(advancedFilters);\n const newQuickFilters = new Map(quickFilters);\n newQuickFilters.delete(modelColumn);\n newAdvancedFilters.delete(modelColumn);\n\n return {\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n };\n });\n }\n\n clearAllFilters() {\n log.debug('Clearing all filters');\n\n const { advancedFilters, quickFilters, searchFilter } = this.state;\n if (\n quickFilters.size === 0 &&\n advancedFilters.size === 0 &&\n searchFilter === null\n ) {\n return;\n }\n\n // if there is an active quick filter input field, reset it as well\n this.clearGridInputField();\n\n this.startLoading('Clearing Filters...', true);\n this.setState({\n quickFilters: new Map(),\n advancedFilters: new Map(),\n searchValue: '',\n searchFilter: null,\n });\n }\n\n clearCrossColumSearch() {\n log.debug('Clearing cross-column search');\n\n this.setState({\n searchValue: '',\n searchFilter: null,\n });\n }\n\n clearGridInputField() {\n if (this.filterInputRef.current != null) {\n this.filterInputRef.current.setValue('');\n }\n }\n\n /**\n * Rebuilds all the current filters. Necessary if something like the time zone has changed.\n */\n rebuildFilters() {\n log.debug('Rebuilding filters');\n\n const { model } = this.props;\n const { advancedFilters, quickFilters } = this.state;\n const { columns, formatter } = model;\n\n const newAdvancedFilters = new Map();\n const newQuickFilters = new Map();\n\n advancedFilters.forEach((value, key) => {\n const { options } = value;\n const column = columns[key];\n const filter = TableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n newAdvancedFilters.set(key, {\n options,\n filter,\n });\n });\n\n quickFilters.forEach((value, key) => {\n const { text } = value;\n const column = columns[key];\n newQuickFilters.set(key, {\n text,\n filter: IrisGrid.makeQuickFilter(column, text, formatter.timeZone),\n });\n });\n\n this.startLoading('Rebuilding filters...', true);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n\n setFilters({ quickFilters, advancedFilters }) {\n this.setState({\n quickFilters,\n advancedFilters,\n });\n }\n\n updateFormatterSettings(settings, forceUpdate = true) {\n const globalColumnFormats = FormatterUtils.getColumnFormats(settings);\n const dateTimeFormatterOptions = FormatterUtils.getDateTimeFormatterOptions(\n settings\n );\n const {\n defaultDecimalFormatOptions = {},\n defaultIntegerFormatOptions = {},\n } = settings;\n\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n const isDecimalFormattingChanged = !deepEqual(\n this.decimalFormatOptions,\n defaultDecimalFormatOptions\n );\n const isIntegerFormattingChanged = !deepEqual(\n this.integerFormatOptions,\n defaultIntegerFormatOptions\n );\n if (\n isColumnFormatChanged ||\n isDateFormattingChanged ||\n isDecimalFormattingChanged ||\n isIntegerFormattingChanged\n ) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\n this.decimalFormatOptions = defaultDecimalFormatOptions;\n this.integerFormatOptions = defaultIntegerFormatOptions;\n this.updateFormatter({}, forceUpdate);\n\n if (isDateFormattingChanged && forceUpdate) {\n this.rebuildFilters();\n }\n }\n }\n\n getAlwaysFetchColumns = memoize(\n (\n alwaysFetchColumns,\n columns,\n floatingLeftColumnCount,\n floatingRightColumnCount\n ) => {\n let floatingLeftColumns = [];\n let floatingRightColumns = [];\n\n if (floatingLeftColumnCount) {\n floatingLeftColumns = columns\n .slice(0, floatingLeftColumnCount)\n .map(col => col.name);\n }\n\n if (floatingRightColumnCount) {\n floatingRightColumns = columns\n .slice(-floatingRightColumnCount)\n .map(col => col.name);\n }\n\n const columnSet = new Set([\n ...alwaysFetchColumns,\n ...floatingLeftColumns,\n ...floatingRightColumns,\n ]);\n\n return [...columnSet];\n }\n );\n\n updateFormatter(updatedFormats, forceUpdate = true) {\n const { customColumnFormatMap } = this.state;\n const update = {\n customColumnFormatMap,\n ...updatedFormats,\n };\n const mergedColumnFormats = [\n ...this.globalColumnFormats,\n ...update.customColumnFormatMap.values(),\n ];\n const formatter = new Formatter(\n mergedColumnFormats,\n this.dateTimeFormatterOptions,\n this.decimalFormatOptions,\n this.integerFormatOptions\n );\n\n log.debug('updateFormatter', this.globalColumnFormats, mergedColumnFormats);\n\n this.setState({ ...update, formatter }, () => {\n if (forceUpdate && this.grid) {\n this.grid.forceUpdate();\n }\n });\n }\n\n initFormatter() {\n const { settings } = this.props;\n this.updateFormatterSettings(settings);\n }\n\n initState() {\n const {\n applyInputFiltersOnInit,\n inputFilters,\n sorts,\n model,\n reverseType,\n customColumns,\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n } = this.props;\n\n const searchColumns = selectedSearchColumns ?? [];\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n searchColumns,\n model.columns,\n invertSearchColumns\n );\n\n if (applyInputFiltersOnInit) {\n // There may be more than one input filter on the same column with value === '' applied last\n // We don't want to skip it here, so only excluding the ones that were never applied (null)\n const inputFiltersWithValues = inputFilters.filter(\n inputFilter => inputFilter.value != null\n );\n this.applyInputFilters(inputFiltersWithValues);\n }\n\n this.setState({\n sorts,\n reverseType,\n customColumns,\n isReady: true,\n searchFilter,\n });\n this.initFormatter();\n }\n\n async loadPartitionsTable(partitionColumn) {\n const { model } = this.props;\n this.setState({ isSelectingPartition: true });\n\n try {\n const partitionTable = await this.pending.add(\n model.valuesTable(partitionColumn),\n resolved => resolved.close()\n );\n\n const column = partitionTable.columns[0];\n const sort = column.sort().desc();\n partitionTable.applySort([sort]);\n partitionTable.setViewport(0, 0, [column]);\n\n const data = await this.pending.add(partitionTable.getViewportData());\n if (data.rows.length > 0) {\n const row = data.rows[0];\n const value = row.get(column);\n\n this.updatePartition(value, partitionColumn);\n\n this.setState({ isSelectingPartition: true });\n } else {\n log.info('Table does not have any data, just fetching all');\n this.setState({ isSelectingPartition: false });\n this.handlePartitionFetchAll();\n }\n this.setState({ partitionTable, partitionColumn }, () => {\n this.initState();\n });\n } catch (error) {\n this.handleTableLoadError(error);\n }\n }\n\n updatePartition(partition, partitionColumn) {\n const partitionFilter = partitionColumn\n .filter()\n .eq(dh.FilterValue.ofString(partition));\n const partitionFilters = [partitionFilter];\n this.setState({\n partition,\n partitionFilters,\n });\n }\n\n copyCell(columnIndex, rowIndex, rawValue = false) {\n const { canCopy } = this.props;\n if (canCopy) {\n const value = this.getValueForCell(columnIndex, rowIndex, rawValue);\n ContextActionUtils.copyToClipboard(value).catch(e =>\n log.error('Unable to copy cell', e)\n );\n } else {\n log.error('Attempted to copyCell for user without copy permission.');\n }\n }\n\n /**\n * Copy the provided ranges to the clipboard\n * @param {GridRange[]} ranges The ranges to copy\n * @param {boolean} includeHeaders Include the headers or not\n * @param {boolean} formatValues Whether to format values or not\n * @param {string|null} error Error message if one occurred\n */\n copyRanges(\n ranges,\n includeHeaders = false,\n formatValues = true,\n error = null\n ) {\n const { model, canCopy } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const { userColumnWidths } = metricCalculator;\n\n if (canCopy) {\n const copyOperation = {\n ranges: GridRange.boundedRanges(\n ranges,\n model.columnCount,\n model.rowCount\n ),\n includeHeaders,\n formatValues,\n movedColumns,\n userColumnWidths,\n error,\n };\n\n this.setState({ copyOperation });\n } else {\n log.error('Attempted copyRanges for user without copy permission.');\n }\n }\n\n startLoading(loadingText, resetRanges = false) {\n this.setState({ loadingText });\n\n const theme = this.getTheme();\n\n if (resetRanges && this.grid) {\n this.grid.clearSelectedRanges();\n this.grid.setViewState({ top: 0 }, true);\n }\n\n if (this.loadingScrimStartTime == null) {\n const { minScrimTransitionTime, maxScrimTransitionTime } = theme;\n const height = this.gridWrapper?.getBoundingClientRect().height ?? 0;\n const scrimTransitionTime = Math.max(\n minScrimTransitionTime,\n Math.min(height / 2, maxScrimTransitionTime)\n );\n this.loadingScrimStartTime = Date.now();\n this.loadingScrimFinishTime =\n this.loadingScrimStartTime + scrimTransitionTime;\n this.setState({\n loadingScrimProgress: 0,\n });\n this.loadingTimer = setTimeout(() => {\n this.setState({\n loadingSpinnerShown: true,\n });\n }, IrisGrid.loadingSpinnerDelay);\n }\n }\n\n stopLoading() {\n this.loadingScrimStartTime = null;\n this.loadingScrimFinishTime = null;\n this.setState({\n loadingText: null,\n loadingScrimProgress: null,\n loadingSpinnerShown: false,\n });\n\n if (this.loadingTimer) {\n clearTimeout(this.loadingTimer);\n this.loadingTimer = null;\n }\n }\n\n /**\n * Rolls back the table state to the last known safe state, or if that's not available then clears all sorts/filters/custom columns.\n */\n rollback() {\n if (this.lastLoadedConfig) {\n log.debug('loading last loading config', this.lastLoadedConfig);\n const {\n advancedFilters,\n customColumns,\n quickFilters,\n reverseType,\n searchFilter,\n sorts,\n } = this.lastLoadedConfig;\n this.lastLoadedConfig = null;\n this.setState({\n advancedFilters,\n customColumns,\n quickFilters,\n reverseType,\n searchFilter,\n sorts,\n });\n } else {\n log.debug('remove all sorts, filters, and custom columns');\n this.setState({\n advancedFilters: new Map(),\n quickFilters: new Map(),\n sorts: [],\n customColumns: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n });\n }\n }\n\n /**\n * Check if we can rollback the current state to a safe state.\n * @returns {boolean} true if there's a previously known safe state or if some of the current state isn't empty.\n */\n canRollback() {\n return this.lastLoadedConfig != null || !isEmptyConfig(this.state);\n }\n\n startListening(model) {\n model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.addEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.addEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.addEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n stopListening(model) {\n model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);\n model.removeEventListener(\n IrisGridModel.EVENT.REQUEST_FAILED,\n this.handleRequestFailed\n );\n model.removeEventListener(\n IrisGridModel.EVENT.COLUMNS_CHANGED,\n this.handleCustomColumnsChanged\n );\n model.removeEventListener(\n IrisGridModel.EVENT.PENDING_DATA_UPDATED,\n this.handlePendingDataUpdated\n );\n }\n\n focusFilterBar(column) {\n const { model } = this.props;\n const { columnCount } = model;\n const modelColumn = this.getModelColumn(column);\n\n if (\n column == null ||\n column < 0 ||\n columnCount <= column ||\n !model.isFilterable(modelColumn)\n ) {\n this.setState({ focusedFilterBarColumn: null });\n return;\n }\n\n const { metricCalculator, metrics } = this.state;\n const { gridX, left, rightVisible, lastLeft } = metrics;\n if (column < left) {\n this.grid.setViewState({ left: column }, true);\n } else if (rightVisible < column) {\n const metricState = this.grid.getMetricState();\n const newLeft = metricCalculator.getLastLeft(metricState, column, gridX);\n this.grid.setViewState({ left: Math.min(newLeft, lastLeft) }, true);\n }\n this.lastFocusedFilterBarColumn = column;\n this.setState({ focusedFilterBarColumn: column, isFilterBarShown: true });\n }\n\n hideColumnByVisibleIndex(columnVisibleIndex) {\n const { metricCalculator, movedColumns } = this.state;\n metricCalculator.setColumnWidth(\n GridUtils.getModelIndex(columnVisibleIndex, movedColumns),\n 0\n );\n\n this.grid.forceUpdate();\n }\n\n freezeColumnByColumnName(columnName) {\n const { frozenColumns } = this.state;\n const { model } = this.props;\n log.debug2('freezing column', columnName);\n\n let allFrozenColumns;\n\n if (frozenColumns == null) {\n allFrozenColumns = new Set(model.layoutHints?.frozenColumns ?? []);\n allFrozenColumns.add(columnName);\n } else {\n allFrozenColumns = new Set([...frozenColumns, columnName]);\n }\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n });\n }\n\n unFreezeColumnByColumnName(columnName) {\n const { frozenColumns } = this.state;\n const { model } = this.props;\n log.debug2('unfreezing column', columnName);\n\n let allFrozenColumns;\n\n if (frozenColumns == null) {\n allFrozenColumns = new Set(model.layoutHints?.frozenColumns ?? []);\n allFrozenColumns.delete(columnName);\n } else {\n allFrozenColumns = new Set(\n frozenColumns.filter(col => col !== columnName)\n );\n }\n\n this.setState({\n frozenColumns: [...allFrozenColumns],\n });\n }\n\n handleColumnVisibilityChanged(modelIndexes, visibilityOption) {\n const { metricCalculator } = this.state;\n if (\n visibilityOption === VisibilityOrderingBuilder.VISIBILITY_OPTIONS.SHOW\n ) {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.resetColumnWidth(modelIndex);\n });\n } else {\n modelIndexes.forEach(modelIndex => {\n metricCalculator.setColumnWidth(modelIndex, 0);\n });\n }\n this.grid.forceUpdate();\n }\n\n handleCrossColumnSearch(\n searchValue,\n selectedSearchColumns,\n invertSearchColumns\n ) {\n const { model } = this.props;\n\n this.updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n model.columns,\n invertSearchColumns\n );\n\n this.setState({\n searchValue,\n selectedSearchColumns,\n invertSearchColumns,\n });\n }\n\n updateSearchFilter(\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n ) {\n const searchFilter = CrossColumnSearch.createSearchFilter(\n searchValue,\n selectedSearchColumns,\n columns,\n invertSearchColumns\n );\n this.setState({ searchFilter });\n }\n\n handleAnimationLoop() {\n this.grid.updateCanvasScale();\n this.grid.updateCanvas();\n\n if (this.isAnimating) {\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n }\n\n handleAnimationStart() {\n log.debug2('handleAnimationStart');\n\n this.isAnimating = true;\n\n this.animationFrame = requestAnimationFrame(this.handleAnimationLoop);\n }\n\n handleAnimationEnd() {\n log.debug2('handleAnimationEnd');\n\n this.isAnimating = false;\n }\n\n handlePartitionAppend(value) {\n const { onPartitionAppend } = this.props;\n const { partitionColumn } = this.state;\n onPartitionAppend(partitionColumn, value);\n }\n\n handlePartitionChange(partition) {\n const { partitionColumn } = this.state;\n this.updatePartition(partition, partitionColumn);\n }\n\n handlePartitionFetchAll() {\n this.setState({\n partitionFilters: [],\n isSelectingPartition: false,\n });\n }\n\n handlePartitionDone() {\n this.setState({ isSelectingPartition: false });\n }\n\n handleTableLoadError(error) {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error(error);\n\n const { onError } = this.props;\n onError(error);\n }\n\n showAllColumns() {\n const { metricCalculator } = this.state;\n const { userColumnWidths } = metricCalculator;\n const entries = [...userColumnWidths.entries()];\n for (let i = 0; i < entries.length; i += 1) {\n const [modelIndex, columnWidth] = entries[i];\n if (columnWidth === 0) {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n }\n this.grid.forceUpdate();\n }\n\n toggleSort(columnIndex, addToExisting) {\n log.info('Toggling sort for column', columnIndex);\n\n const { model } = this.props;\n const { sorts: currentSorts } = this.state;\n const modelColumn = this.getModelColumn(columnIndex);\n const sorts = TableUtils.toggleSortForColumn(\n currentSorts,\n model.table,\n modelColumn,\n addToExisting\n );\n this.updateSorts(sorts);\n }\n\n updateSorts(sorts) {\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid.forceUpdate();\n }\n\n sortColumn(modelColumn, direction, isAbs = false, addToExisting = false) {\n const { model } = this.props;\n const sorts = TableUtils.sortColumn(\n model.table,\n modelColumn,\n direction,\n isAbs,\n addToExisting\n );\n this.startLoading('Sorting...');\n this.setState({ sorts });\n this.grid.forceUpdate();\n }\n\n reverse(reverseType) {\n this.startLoading('Reversing...');\n this.setState({ reverseType });\n this.grid.forceUpdate();\n }\n\n isReversible() {\n const { model } = this.props;\n return model.isReversible;\n }\n\n toggleFilterBar(focusIndex = this.lastFocusedFilterBarColumn) {\n let { isFilterBarShown } = this.state;\n isFilterBarShown = !isFilterBarShown;\n this.setState({ isFilterBarShown });\n\n if (isFilterBarShown) {\n if (focusIndex != null) {\n this.focusFilterBar(focusIndex);\n } else {\n let columnIndex = 0;\n const { model } = this.props;\n const { columnCount } = model;\n for (let i = 0; i < columnCount; i += 1) {\n const modelColumn = this.getModelColumn(i);\n if (modelColumn != null) {\n const column = model.columns[modelColumn];\n if (column != null && TableUtils.isTextType(column.type)) {\n columnIndex = i;\n break;\n }\n }\n }\n this.focusFilterBar(columnIndex);\n }\n } else {\n this.grid.focus();\n }\n }\n\n isTableSearchAvailable() {\n const { model, canToggleSearch } = this.props;\n const searchDisplayMode = model?.layoutHints?.searchDisplayMode;\n\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_HIDE) {\n return false;\n }\n if (searchDisplayMode === dh.SearchDisplayMode?.SEARCH_DISPLAY_SHOW) {\n return true;\n }\n\n return canToggleSearch;\n }\n\n toggleSearchBar() {\n const { showSearchBar } = this.state;\n if (!this.isTableSearchAvailable()) {\n return;\n }\n\n const update = !showSearchBar;\n this.setState(\n {\n showSearchBar: update,\n },\n () => {\n if (update && this.crossColumnRef.current) {\n this.crossColumnRef.current.focus();\n } else {\n this.grid.focus();\n }\n }\n );\n }\n\n async commitPending() {\n const { model } = this.props;\n if (!model.isEditable) {\n throw new Error('Cannot save, table is not editable');\n }\n\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Save already in progress');\n }\n\n if (document.activeElement.classList.contains('grid-cell-input-field')) {\n if (document.activeElement.classList.contains('error')) {\n throw new ValidationError('Current input is invalid');\n }\n\n // Focus the grid again to commit any pending input changes\n this.grid.focus();\n }\n\n const newPendingSavePromise = this.pending\n .add(model.commitPending())\n .then(() => {\n this.setState({ pendingSaveError: null, pendingSavePromise: null });\n })\n .catch(err => {\n if (!PromiseUtils.isCanceled(err)) {\n this.setState({ pendingSaveError: err, pendingSavePromise: null });\n }\n });\n this.setState({ pendingSavePromise: newPendingSavePromise });\n return newPendingSavePromise;\n }\n\n async discardPending() {\n const { pendingSavePromise } = this.state;\n if (pendingSavePromise != null) {\n throw new Error('Cannot cancel a save in progress');\n }\n\n this.setState({\n pendingSavePromise: null,\n pendingSaveError: null,\n pendingDataMap: new Map(),\n pendingDataErrors: new Map(),\n });\n }\n\n /**\n * Select the passed in column and notify listener\n * @param {dh.Column} column The column in this table to link\n */\n selectColumn(column) {\n const { onColumnSelected } = this.props;\n onColumnSelected(column);\n }\n\n /**\n * Select all the data for a given row and notify listener\n */\n selectData(columnIndex, rowIndex) {\n const { model } = this.props;\n const { columns } = model;\n const dataMap = {};\n for (let i = 0; i < columns.length; i += 1) {\n const column = columns[i];\n const { name, type } = column;\n const value = model.valueForCell(i, rowIndex);\n const text = model.textForCell(i, rowIndex);\n dataMap[name] = { value, text, type };\n }\n\n const { onDataSelected } = this.props;\n onDataSelected(rowIndex, dataMap);\n }\n\n handleAdvancedFilterChange(column, filter, options) {\n const { model } = this.props;\n this.setAdvancedFilter(\n model.getColumnIndexByName(column.name),\n filter,\n options\n );\n }\n\n handleAdvancedFilterSortChange(column, direction, addToExisting = false) {\n const { model } = this.props;\n const columnIndex = model.getColumnIndexByName(column.name);\n const oldSort = TableUtils.getSortForColumn(model.sort, columnIndex);\n let newSort = null;\n\n if (oldSort == null || oldSort.direction !== direction) {\n if (direction === TableUtils.sortDirection.descending) {\n newSort = column.sort().desc();\n } else {\n newSort = column.sort().asc();\n }\n }\n\n const sorts = TableUtils.setSortForColumn(\n model.sort,\n columnIndex,\n newSort,\n addToExisting\n );\n log.info('Setting table sorts', sorts);\n\n this.startLoading('Sorting...');\n this.setState({ sorts });\n\n this.grid.forceUpdate();\n }\n\n handleAdvancedFilterDone() {\n this.grid.focus();\n }\n\n handleAdvancedMenuOpened(column) {\n this.setState({ shownAdvancedFilter: column });\n }\n\n handleAdvancedMenuClosed(columnIndex) {\n const { focusedFilterBarColumn, isFilterBarShown } = this.state;\n if (\n isFilterBarShown &&\n focusedFilterBarColumn === columnIndex &&\n this.filterInputRef.current !== null\n ) {\n this.filterInputRef.current.focus();\n this.setState({ shownAdvancedFilter: null });\n } else {\n this.setState({\n focusedFilterBarColumn: null,\n shownAdvancedFilter: null,\n });\n }\n }\n\n handleCancel() {\n this.rollback();\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleChartChange() {\n // TODO: IDS-4242 Update Chart Preview\n }\n\n handleChartCreate(settings) {\n const { model, onCreateChart } = this.props;\n onCreateChart(settings, model.table);\n }\n\n handleGridError(error) {\n log.warn('Grid Error', error);\n this.setState({\n toastMessage: <div className=\"error-message\">{`${error}`}</div>,\n });\n }\n\n handleFilterBarChange(value) {\n this.startLoading('Filtering...', true);\n\n this.setState(({ focusedFilterBarColumn, quickFilters }) => {\n const newQuickFilters = new Map(quickFilters);\n const modelIndex = this.getModelColumn(focusedFilterBarColumn);\n this.applyQuickFilter(modelIndex, value, newQuickFilters);\n return { quickFilters: newQuickFilters };\n });\n }\n\n handleFilterBarDone(setGridFocus = true, defocusInput = true) {\n if (setGridFocus) {\n this.grid.focus();\n }\n if (defocusInput) {\n this.setState({ focusedFilterBarColumn: null });\n }\n }\n\n handleFilterBarTab(backward) {\n const { focusedFilterBarColumn } = this.state;\n if (backward) {\n this.focusFilterBar(focusedFilterBarColumn - 1);\n } else {\n this.focusFilterBar(focusedFilterBarColumn + 1);\n }\n }\n\n handleFormatSelection(modelIndex, selectedFormat) {\n const { model } = this.props;\n const column = model.columns[modelIndex];\n const { customColumnFormatMap: prevCustomColumnFormatMap } = this.state;\n const customColumnFormatMap = new Map(prevCustomColumnFormatMap);\n\n if (selectedFormat) {\n const normalizedType = TableUtils.getNormalizedType(column.type);\n const columnFormattingRule = Formatter.makeColumnFormattingRule(\n normalizedType,\n column.name,\n selectedFormat\n );\n\n customColumnFormatMap.set(column.name, columnFormattingRule);\n } else {\n customColumnFormatMap.delete(column.name);\n }\n\n this.updateFormatter({ customColumnFormatMap });\n }\n\n handleMenu() {\n this.setState({ isMenuShown: true });\n }\n\n handleMenuClose() {\n this.setState({ isMenuShown: false, openOptions: [] });\n }\n\n handleMenuBack() {\n this.setState(({ openOptions }) => {\n const newOptions = [...openOptions];\n newOptions.pop();\n return { openOptions: newOptions };\n });\n }\n\n handleMenuSelect(option) {\n this.setState(({ openOptions }) => ({\n openOptions: [...openOptions, option],\n }));\n }\n\n handleRequestFailed(event) {\n log.error('request failed:', event.detail);\n this.stopLoading();\n if (this.canRollback()) {\n this.startLoading('Rolling back changes...', true);\n this.rollback();\n } else {\n log.error('Table failed and unable to rollback');\n const { onError } = this.props;\n onError(new Error(`Error displaying table: ${event.detail}`));\n }\n }\n\n handleUpdate() {\n this.stopLoading();\n log.debug2('Received model update');\n\n const {\n advancedFilters,\n customColumns,\n quickFilters,\n reverseType,\n searchFilter,\n sorts,\n } = this.state;\n const config = {\n advancedFilters,\n customColumns,\n reverseType,\n quickFilters,\n searchFilter,\n sorts,\n };\n if (!isEmptyConfig(config)) {\n this.lastLoadedConfig = config;\n } else {\n this.lastLoadedConfig = null;\n }\n\n this.grid.forceUpdate();\n }\n\n handleViewChanged(metrics) {\n const { model } = this.props;\n const { bottomViewport } = metrics;\n const { selectionEndRow = 0 } = this.grid?.state ?? {};\n let pendingRowCount = 0;\n if (model.isEditable) {\n // We have an editable table that we can add new rows to\n // Display empty rows beneath the table rows that user can fill in\n const bottomNonFloating = model.rowCount - model.floatingBottomRowCount;\n if (selectionEndRow === bottomNonFloating - 1) {\n // Selection is in the last row, add another blank row\n pendingRowCount = model.pendingRowCount + 1;\n } else if (selectionEndRow === bottomNonFloating - 2) {\n // We may have just added a row based on selection moving, so just leave it as is\n pendingRowCount = model.pendingRowCount;\n } else {\n // Otherwise fill up the viewport with empty cells\n pendingRowCount = Math.max(\n 0,\n bottomViewport -\n (model.rowCount - model.pendingRowCount) -\n model.floatingTopRowCount -\n model.floatingBottomRowCount -\n 1\n );\n }\n }\n\n this.setState({ metrics, pendingRowCount });\n }\n\n handleSelectionChanged(selectedRanges) {\n const { onSelectionChanged } = this.props;\n const { copyOperation } = this.state;\n this.setState({ selectedRanges });\n if (copyOperation != null) {\n this.setState({ copyOperation: null });\n }\n onSelectionChanged(selectedRanges);\n }\n\n handleMovedColumnsChanged(movedColumns, onChangeApplied = () => {}) {\n this.setState({ movedColumns }, onChangeApplied);\n }\n\n handleTooltipRef(tooltip) {\n // Need to start the timer right away, since we're creating the tooltip when we want the timer to start\n if (tooltip) {\n tooltip.startTimer();\n }\n\n this.tooltip = tooltip;\n }\n\n handleConditionalFormatsChange(conditionalFormats) {\n log.debug('Updated conditional formats', conditionalFormats);\n this.setState({ conditionalFormats });\n }\n\n handleConditionalFormatCreate() {\n log.debug('Create new conditional format');\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Create Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: conditionalFormats.length,\n // Start with a blank rule\n conditionalFormatPreview: undefined,\n });\n }\n\n handleConditionalFormatEdit(index) {\n log.debug('Edit conditional format', index);\n const { openOptions, conditionalFormats } = this.state;\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.CONDITIONAL_FORMATTING_EDIT,\n title: `Edit Formatting Rule`,\n },\n ],\n conditionalFormatEditIndex: index,\n // Clone rule to preview temporary changes\n conditionalFormatPreview: { ...conditionalFormats[index] },\n });\n }\n\n // Apply live changes\n handleConditionalFormatEditorUpdate(conditionalFormatPreview) {\n this.setState({ conditionalFormatPreview });\n }\n\n handleConditionalFormatEditorSave(config) {\n log.debug('Save conditional format changes', config);\n this.setState(\n state => {\n if (state.conditionalFormatEditIndex === null) {\n log.debug('Invalid format index');\n return null;\n }\n const conditionalFormats = [...state.conditionalFormats];\n conditionalFormats[state.conditionalFormatEditIndex] = config;\n return { conditionalFormats };\n },\n () => {\n this.handleMenuBack();\n }\n );\n }\n\n handleConditionalFormatEditorCancel() {\n this.handleMenuBack();\n // Not resetting conditionalFormatPreview here\n // to prevent editor fields change during the menu transition\n this.setState({ conditionalFormatEditIndex: null });\n }\n\n handleUpdateCustomColumns(customColumns) {\n log.info(`handleUpdateCustomColumns:`, customColumns);\n\n const { model } = this.props;\n const {\n movedColumns,\n sorts,\n quickFilters,\n advancedFilters,\n selectDistinctColumns,\n } = this.state;\n\n const { columns } = model;\n const oldCustomColumns = model.customColumns.map(\n customColumn => `${customColumn}`\n );\n\n const removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(\n oldCustomColumns,\n customColumns\n );\n if (removedColumnNames.length > 0) {\n const newSorts = IrisGridUtils.removeSortsInColumns(\n sorts,\n removedColumnNames\n );\n const newQuickFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n quickFilters,\n removedColumnNames\n );\n const newAdvancedFilters = IrisGridUtils.removeFiltersInColumns(\n columns,\n advancedFilters,\n removedColumnNames\n );\n const newMovedColumns = IrisGridUtils.removeColumnFromMovedColumns(\n columns,\n movedColumns,\n removedColumnNames\n );\n const newSelectDistinctColumns = IrisGridUtils.removeColumnsFromSelectDistinctColumns(\n selectDistinctColumns,\n removedColumnNames\n );\n if (newSorts.length !== sorts) {\n log.debug('removing sorts from removed custom columns...');\n this.setState({ sorts: newSorts });\n }\n if (\n newQuickFilters.size !== quickFilters.size ||\n newAdvancedFilters.size !== advancedFilters.size\n ) {\n log.debug(`removing filters from removed custom columns...`);\n this.setState({\n quickFilters: newQuickFilters,\n advancedFilters: newAdvancedFilters,\n });\n }\n if (!deepEqual(movedColumns, newMovedColumns)) {\n log.debug(\n `change moved columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ movedColumns: newMovedColumns });\n }\n if (!deepEqual(selectDistinctColumns, newSelectDistinctColumns)) {\n log.debug(\n `change selectDistinct columns for removed custom columns`,\n newMovedColumns\n );\n this.setState({ selectDistinctColumns: newSelectDistinctColumns });\n }\n }\n\n this.setState({ customColumns, top: 0 });\n this.startLoading('Applying custom columns...');\n }\n\n handleCustomColumnsChanged() {\n log.debug('custom columns changed');\n const { isReady } = this.state;\n if (isReady) {\n this.stopLoading();\n this.grid.forceUpdate();\n } else {\n this.initState();\n }\n }\n\n handlePendingCommitClicked() {\n return this.commitPending();\n }\n\n handlePendingDiscardClicked() {\n return this.discardPending();\n }\n\n handlePendingDataUpdated() {\n log.debug('pending data updated');\n const { model } = this.props;\n const { pendingDataMap, pendingDataErrors } = model;\n this.setState({\n pendingDataMap,\n pendingDataErrors,\n pendingSaveError: null,\n });\n this.grid.forceUpdate();\n }\n\n /**\n * User added, removed, or changed the order of aggregations, or position\n * @param {AggregationSettings} aggregationSettings The new aggregation settings\n */\n handleAggregationsChange(aggregationSettings) {\n log.debug('handleAggregationsChange', aggregationSettings);\n\n this.startLoading(\n `Aggregating ${aggregationSettings.aggregations\n .map(a => a.operation)\n .join(', ')}...`\n );\n this.setState({ aggregationSettings });\n }\n\n /**\n * A specific aggregation has been modified\n * @param {Aggregation} aggregation The new aggregation\n */\n handleAggregationChange(aggregation) {\n log.debug('handleAggregationChange', aggregation);\n\n this.startLoading(`Aggregating ${aggregation.operation}...`);\n this.setState(({ aggregationSettings }) => ({\n selectedAggregation: aggregation,\n aggregationSettings: {\n ...aggregationSettings,\n aggregations: aggregationSettings.aggregations.map(a =>\n a.operation === aggregation.operation ? aggregation : a\n ),\n },\n }));\n }\n\n /**\n * An aggregations has been selected for editing\n * @param {Aggregation} aggregation The aggregation to edit\n */\n handleAggregationEdit(aggregation) {\n log.debug('handleAggregationEdit', aggregation);\n\n const { openOptions } = this.state;\n\n this.setState({\n openOptions: [\n ...openOptions,\n {\n type: OptionType.AGGREGATION_EDIT,\n title: `Edit Columns to ${aggregation.operation}`,\n },\n ],\n selectedAggregation: aggregation,\n });\n }\n\n handleRollupChange(rollupConfig) {\n log.info('Rollup change', rollupConfig);\n\n this.resetGridViewState();\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Grouping by columns ${rollupConfig?.columns?.join(', ') ?? ''}...`\n );\n\n // Have to clear select distinct since rollup uses the original columns, not the current ones.\n // IrisGridProxyModel has a check to prevent model update\n // when selectDistinctModel is cleared and the rollupConfig is set on the model.\n this.setState({\n rollupConfig,\n movedColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n selectDistinctColumns: [],\n });\n }\n\n handleSelectDistinctChanged(columnNames) {\n log.debug('SelectDistinct change', columnNames);\n\n this.resetGridViewState();\n\n this.showAllColumns();\n this.clearAllFilters();\n\n this.startLoading(\n `Selecting distinct values in ${\n columnNames.length > 0 ? columnNames.join(', ') : ''\n }...`\n );\n\n this.setState({\n selectDistinctColumns: columnNames,\n movedColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n });\n }\n\n handleDownloadTableStart() {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTableStart for user without download CSV permission.'\n );\n }\n }\n\n handleDownloadTable(...args) {\n const { canDownloadCsv } = this.props;\n if (canDownloadCsv) {\n log.info('start table downloading', ...args);\n this.setState(() => {\n if (this.tableSaver) {\n this.tableSaver.startDownload(...args);\n }\n return {\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING,\n };\n });\n } else {\n log.error(\n 'Attempted to handleDownloadTable for user without download CSV permission.'\n );\n }\n }\n\n handleCancelDownloadTable() {\n this.tableSaver.cancelDownload();\n this.setState({ isTableDownloading: false });\n }\n\n handleDownloadProgressUpdate(\n tableDownloadProgress,\n tableDownloadEstimatedTime\n ) {\n const { tableDownloadStatus } = this.state;\n if (tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING) {\n this.setState({\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n });\n }\n }\n\n handleDownloadCompleted() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 100,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.FINISHED,\n });\n }\n\n handleDownloadCanceled() {\n this.setState({\n isTableDownloading: false,\n tableDownloadProgress: 0,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.CANCELED,\n });\n }\n\n /**\n * Delete the specified ranges from the table.\n * @param {GridRange[]} ranges The ranges to delete\n */\n deleteRanges(ranges) {\n const { model } = this.props;\n this.pending.add(model.delete(ranges)).catch(e => {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to delete ranges', ranges, e);\n }\n });\n }\n\n resetColumnSelection() {\n if (this.grid == null) {\n return;\n }\n const { isSelectingColumn } = this.props;\n if (isSelectingColumn) {\n const { columnAllowedCursor } = this.props;\n this.grid.setState({ cursor: columnAllowedCursor });\n } else {\n this.grid.setState({ cursor: Grid.CURSOR_TYPE_DEFAULT });\n this.setState({ hoverSelectColumn: null });\n }\n }\n\n resetGridViewState(forceUpdate = true) {\n if (!this.grid) {\n return;\n }\n\n this.grid.clearSelectedRanges();\n this.grid.setViewState(\n { left: 0, top: 0, topOffset: 0, leftOffset: 0 },\n forceUpdate\n );\n }\n\n sendStateChange() {\n if (!this.grid) {\n return;\n }\n const { state: irisGridState } = this;\n const { state: gridState } = this.grid;\n const { onStateChange } = this.props;\n\n onStateChange(irisGridState, gridState);\n }\n\n render() {\n const {\n children,\n customFilters,\n getDownloadWorker,\n isSelectingColumn,\n isStuckToBottom,\n isStuckToRight,\n model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\n canDownloadCsv,\n } = 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 } = this.state;\n if (!isReady) {\n return null;\n }\n\n const theme = this.getTheme();\n\n const filter = this.getCachedFilter(\n customFilters,\n quickFilters,\n advancedFilters,\n partitionFilters,\n searchFilter\n );\n\n const { userColumnWidths } = metricCalculator;\n const stateOverride = this.getCachedStateOverride(\n hoverSelectColumn,\n isFilterBarShown,\n isSelectingColumn,\n loadingScrimProgress,\n quickFilters,\n advancedFilters,\n sorts,\n reverseType,\n rollupConfig\n );\n const top = metrics ? metrics.top : 0;\n const bottom = metrics ? metrics.bottomViewport : 0;\n let left = null;\n let right = null;\n if (onlyFetchVisibleColumns) {\n left = metrics ? metrics.left : 0;\n right = metrics ? metrics.right : 0;\n }\n const isVisible =\n metrics != null && metrics.width > 0 && metrics.height > 0;\n const isRollup = (rollupConfig?.columns?.length ?? 0) > 0;\n\n let focusField = null;\n\n const debounceMs = metrics\n ? Math.min(\n Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)),\n IrisGrid.maxDebounce\n )\n : IrisGrid.maxDebounce;\n\n if (isFilterBarShown && focusedFilterBarColumn != null && metrics != null) {\n const { gridX, gridY, visibleColumnXs, visibleColumnWidths } = metrics;\n const columnX = visibleColumnXs.get(focusedFilterBarColumn);\n const columnWidth = visibleColumnWidths.get(focusedFilterBarColumn);\n if (columnX != null && columnWidth != null) {\n const x = gridX + columnX;\n const y = gridY - theme.filterBarHeight;\n const fieldWidth = columnWidth + 1; // cover right border\n const fieldHeight = theme.filterBarHeight - 1; // remove bottom border\n const style = {\n top: y,\n left: x,\n minWidth: fieldWidth,\n height: fieldHeight,\n };\n let value = '';\n let isValid = true;\n const modelColumn = this.getModelColumn(focusedFilterBarColumn);\n const quickFilter = quickFilters.get(modelColumn);\n const advancedFilter = advancedFilters.get(modelColumn);\n if (quickFilter != null) {\n value = quickFilter.text;\n isValid = quickFilter.filter != null;\n }\n const isBarFiltered =\n quickFilters.size !== 0 || advancedFilters.size !== 0;\n focusField = (\n <FilterInputField\n ref={this.filterInputRef}\n style={style}\n className={classNames({\n error: !isValid,\n active: value !== '' || advancedFilter != null,\n 'iris-grid-has-filter': isBarFiltered,\n })}\n isAdvancedFilterSet={advancedFilter != null}\n onAdvancedFiltersTriggered={() => {\n this.setState({ shownAdvancedFilter: focusedFilterBarColumn });\n }}\n key={focusedFilterBarColumn}\n onChange={this.handleFilterBarChange}\n onDone={this.handleFilterBarDone}\n onTab={this.handleFilterBarTab}\n onContextMenu={this.grid.handleContextMenu}\n debounceMs={debounceMs}\n value={value}\n />\n );\n }\n }\n\n let loadingElement = null;\n if (loadingText != null) {\n const loadingStatus = (\n <div className=\"iris-grid-loading-status\">{loadingText}</div>\n );\n const loader = <DeephavenSpinner show={loadingSpinnerShown} />;\n const cancelButton = (\n <button\n type=\"button\"\n onClick={this.handleCancel}\n className={classNames(\n 'btn btn-secondary btn-cancelable iris-grid-btn-cancel',\n {\n show: loadingSpinnerShown,\n }\n )}\n >\n Cancel\n </button>\n );\n\n const gridY = metrics ? metrics.gridY : 0;\n loadingElement = (\n <div className=\"iris-grid-loading\" style={{ top: gridY }}>\n {loadingStatus}\n {loader}\n {cancelButton}\n </div>\n );\n }\n\n let columnTooltip = null;\n if (shownColumnTooltip != null && metrics && this.gridWrapper) {\n const {\n columnHeaderHeight,\n visibleColumnXs,\n visibleColumnWidths,\n width,\n } = metrics;\n const columnX = visibleColumnXs.get(shownColumnTooltip);\n const columnWidth = visibleColumnWidths.get(shownColumnTooltip);\n\n /**\n * Create a wrapper dom element, the size of the column header.\n * The wrapper acts as tooltip parent, the tooltip component\n * will trigger hide on mouseleave of wrapper or tooltip.\n * The wrapper should be bound to within the grid dimensions,\n * so popper only remains triggered while mouse is inside the panel.\n */\n const boundedLeft = Math.max(0, columnX);\n let boundedWidth = columnWidth;\n if (columnX + columnWidth > width) {\n // column is extending past right edge\n boundedWidth = width - columnX;\n } else if (columnX < 0) {\n // column is extending past left edge\n boundedWidth = columnWidth - Math.abs(columnX);\n }\n\n const wrapperStyle = {\n position: 'absolute',\n top: 0,\n left: boundedLeft,\n width: boundedWidth,\n height: columnHeaderHeight,\n pointerEvents: 'none',\n };\n\n /**\n * Because the popper parent wrapper center is no longer the same as\n * the column label center, we create a popper virtual ref, to handle\n * positioning and keep the popper centered on the label. Creates a\n * 1px x headerHeight virtual object, placed centered on the column\n * label, clamped to 0 + margin to width - margin. We add a margin,\n * otherwise the arrow wants to escape the boundary.\n */\n const gridRect = this.gridWrapper.getBoundingClientRect();\n const popperMargin = 20;\n const virtualReference = {\n clientWidth: 1,\n clientHeight: columnHeaderHeight,\n getBoundingClientRect() {\n return {\n top: gridRect.top,\n left:\n gridRect.left +\n clamp(\n columnX + columnWidth / 2,\n popperMargin,\n width - popperMargin\n ),\n bottom: gridRect.top + columnHeaderHeight,\n right:\n gridRect.left +\n clamp(\n columnX + columnWidth / 2,\n popperMargin,\n width - popperMargin\n ) +\n 1,\n width: 1,\n height: columnHeaderHeight,\n };\n },\n };\n\n const popperOptions = {\n placement: 'bottom',\n modifiers: {\n flip: {\n behavior: ['bottom', 'top'],\n },\n },\n };\n\n const modelColumn = this.getModelColumn(shownColumnTooltip);\n const column = model.columns[modelColumn];\n\n if (column != null) {\n columnTooltip = (\n <div style={wrapperStyle}>\n <Tooltip\n key={column.name}\n timeout={400}\n interactive\n options={popperOptions}\n ref={this.handleTooltipRef}\n referenceObject={virtualReference}\n onExited={() => {\n this.setState({ shownColumnTooltip: null });\n }}\n >\n <ColumnStatistics\n model={model}\n column={column}\n onStatistics={() => {\n if (this.tooltip) this.tooltip.update();\n }}\n />\n </Tooltip>\n </div>\n );\n }\n }\n\n const filterBar = [];\n if (metrics && isFilterBarShown) {\n const {\n gridX,\n gridY,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths,\n } = metrics;\n const { filterBarHeight } = theme;\n\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n\n const columnX = visibleColumnXs.get(columnIndex);\n const columnWidth = visibleColumnWidths.get(columnIndex);\n const modelColumn = this.getModelColumn(columnIndex);\n const isFilterable = model.isFilterable(modelColumn);\n if (\n isFilterable &&\n columnX != null &&\n columnWidth != null &&\n columnWidth > 0\n ) {\n const x = gridX + columnX + columnWidth - 24;\n const y = gridY - filterBarHeight + 2; // 2 acts as top margin for the button\n const style = {\n position: 'absolute',\n top: y,\n left: x,\n };\n const advancedFilter = advancedFilters.get(modelColumn);\n const isFilterSet = advancedFilter != null;\n const isFilterVisible =\n columnIndex === hoverAdvancedFilter ||\n columnIndex === focusedFilterBarColumn ||\n isFilterSet;\n const element = (\n <div\n className={classNames('advanced-filter-button-container', {\n hidden: !isFilterVisible,\n })}\n key={columnIndex}\n style={style}\n >\n {isFilterVisible && (\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon advanced-filter-button',\n {\n 'filter-set': isFilterSet,\n }\n )}\n onClick={() => {\n this.setState({ shownAdvancedFilter: columnIndex });\n }}\n onContextMenu={event => {\n this.grid.handleContextMenu(event);\n }}\n onMouseEnter={() => {\n this.setState({ hoverAdvancedFilter: columnIndex });\n }}\n onMouseLeave={() => {\n this.setState({ hoverAdvancedFilter: null });\n }}\n >\n <div className=\"fa-layers\">\n <FontAwesomeIcon\n icon={dhFilterFilled}\n className=\"filter-solid\"\n />\n <FontAwesomeIcon icon={vsFilter} className=\"filter-light\" />\n </div>\n </button>\n )}\n </div>\n );\n filterBar.push(element);\n }\n }\n }\n const advancedFilterMenus = [];\n if (metrics) {\n const {\n gridX,\n visibleColumns,\n visibleColumnXs,\n visibleColumnWidths,\n columnHeaderHeight,\n } = metrics;\n for (let i = 0; i < visibleColumns.length; i += 1) {\n const columnIndex = visibleColumns[i];\n const columnX = visibleColumnXs.get(columnIndex);\n const columnWidth = visibleColumnWidths.get(columnIndex);\n if (columnX != null && columnWidth != null && columnWidth > 0) {\n const xColumnHeader = gridX + columnX;\n const xFilterBar = gridX + columnX + columnWidth - 20;\n const style = isFilterBarShown\n ? {\n position: 'absolute',\n top: columnHeaderHeight,\n left: xFilterBar,\n width: 20,\n height: theme.filterBarHeight,\n }\n : {\n position: 'absolute',\n top: 0,\n left: xColumnHeader,\n width: columnWidth,\n height: columnHeaderHeight,\n };\n const modelColumn = this.getModelColumn(columnIndex);\n const column = model.columns[modelColumn];\n const advancedFilter = advancedFilters.get(modelColumn);\n const { options: advancedFilterOptions } = advancedFilter || {};\n const sort = TableUtils.getSortForColumn(model.sort, modelColumn);\n const sortDirection = sort ? sort.direction : null;\n const element = (\n <div\n key={columnIndex}\n className=\"advanced-filter-menu-container\"\n style={style}\n >\n <Popper\n className=\"advanced-filter-menu-popper\"\n onEntered={this.getAdvancedMenuOpenedHandler(columnIndex)}\n onExited={() => {\n this.handleAdvancedMenuClosed(columnIndex);\n }}\n isShown={shownAdvancedFilter === columnIndex}\n interactive\n closeOnBlur\n >\n {this.getCachedAdvancedFilterMenuActions(\n model,\n column,\n advancedFilterOptions,\n sortDirection,\n formatter\n )}\n </Popper>\n </div>\n );\n advancedFilterMenus.push(element);\n }\n }\n }\n\n const optionItems = this.getCachedOptionItems(\n model.isChartBuilderAvailable,\n model.isCustomColumnsAvailable,\n model.isFormatColumnsAvailable,\n model.isRollupAvailable,\n model.isTotalsAvailable,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv,\n this.isTableSearchAvailable()\n );\n\n const openOptionsStack = openOptions.map(option => {\n switch (option.type) {\n case OptionType.CHART_BUILDER:\n return (\n <ChartBuilder\n model={model}\n onChange={this.handleChartChange}\n onSubmit={this.handleChartCreate}\n key={OptionType.CHART_BUILDER}\n />\n );\n case OptionType.VISIBILITY_ORDERING_BUILDER:\n return (\n <VisibilityOrderingBuilder\n model={model}\n movedColumns={movedColumns}\n userColumnWidths={userColumnWidths}\n onColumnVisibilityChanged={this.handleColumnVisibilityChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n key={OptionType.VISIBILITY_ORDERING_BUILDER}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING:\n return (\n <ConditionalFormattingMenu\n columns={model.columns}\n rules={conditionalFormats}\n onChange={this.handleConditionalFormatsChange}\n onCreate={this.handleConditionalFormatCreate}\n onSelect={this.handleConditionalFormatEdit}\n />\n );\n case OptionType.CONDITIONAL_FORMATTING_EDIT:\n return (\n <ConditionalFormatEditor\n columns={model.columns}\n rule={conditionalFormatPreview}\n onUpdate={this.handleConditionalFormatEditorUpdate}\n onSave={this.handleConditionalFormatEditorSave}\n onCancel={this.handleConditionalFormatEditorCancel}\n />\n );\n case OptionType.CUSTOM_COLUMN_BUILDER:\n return (\n <CustomColumnBuilder\n model={model}\n customColumns={customColumns}\n onSave={this.handleUpdateCustomColumns}\n onCancel={this.handleMenuBack}\n key={OptionType.CUSTOM_COLUMN_BUILDER}\n />\n );\n case OptionType.ROLLUP_ROWS:\n return (\n <RollupRows\n metrics={metrics}\n model={model}\n onChange={this.handleRollupChange}\n config={rollupConfig}\n key={OptionType.ROLLUP_ROWS}\n />\n );\n case OptionType.AGGREGATIONS:\n return (\n <Aggregations\n settings={aggregationSettings}\n isRollup={isRollup}\n onChange={this.handleAggregationsChange}\n onEdit={this.handleAggregationEdit}\n />\n );\n case OptionType.AGGREGATION_EDIT:\n return (\n <AggregationEdit\n aggregation={selectedAggregation}\n columns={model.originalColumns}\n onChange={this.handleAggregationChange}\n />\n );\n case OptionType.TABLE_EXPORTER:\n return (\n <TableCsvExporter\n model={model}\n name={name}\n isDownloading={isTableDownloading}\n tableDownloadStatus={tableDownloadStatus}\n tableDownloadProgress={tableDownloadProgress}\n tableDownloadEstimatedTime={tableDownloadEstimatedTime}\n onDownload={this.handleDownloadTable}\n onDownloadStart={this.handleDownloadTableStart}\n onCancel={this.handleCancelDownloadTable}\n selectedRanges={selectedRanges}\n key={OptionType.TABLE_EXPORTER}\n />\n );\n case OptionType.SELECT_DISTINCT:\n return (\n <SelectDistinctBuilder\n model={model}\n selectDistinctColumns={selectDistinctColumns}\n onChange={this.handleSelectDistinctChanged}\n />\n );\n case OptionType.ADVANCED_SETTINGS:\n return (\n <AdvancedSettingsMenu\n items={advancedSettings}\n onChange={onAdvancedSettingsChange}\n />\n );\n\n default:\n throw Error('Unexpected option type', option.type);\n }\n });\n\n const hiddenColumns = this.getCachedHiddenColumns(\n IrisGridUtils.getHiddenColumns(userColumnWidths)\n );\n\n return (\n <div className=\"iris-grid\" role=\"presentation\">\n <div className=\"iris-grid-column\">\n {children && <div className=\"iris-grid-bar\">{children}</div>}\n <CSSTransition\n in={isSelectingPartition}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary\">\n {partitionTable && partitionColumn && (\n <IrisGridPartitionSelector\n table={partitionTable}\n getFormattedString={(...args) => model.displayString(...args)}\n columnName={partitionColumn.name}\n partition={partition}\n onChange={this.handlePartitionChange}\n onFetchAll={this.handlePartitionFetchAll}\n onAppend={this.handlePartitionAppend}\n onDone={this.handlePartitionDone}\n />\n )}\n </div>\n </CSSTransition>\n <CSSTransition\n in={showSearchBar}\n timeout={ThemeExport.transitionSlowMs}\n classNames=\"iris-grid-bar-horizontal\"\n onEnter={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExit={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"iris-grid-bar\">\n <CrossColumnSearch\n value={searchValue}\n selectedColumns={selectedSearchColumns}\n invertSelection={invertSearchColumns}\n onChange={this.handleCrossColumnSearch}\n columns={model.columns}\n ref={this.crossColumnRef}\n />\n </div>\n </CSSTransition>\n <div\n className=\"grid-wrapper\"\n ref={gridWrapper => {\n this.gridWrapper = gridWrapper;\n }}\n >\n <Grid\n ref={grid => {\n this.grid = grid;\n }}\n isStickyBottom={!model.isEditable}\n isStuckToBottom={isStuckToBottom}\n isStuckToRight={isStuckToRight}\n metricCalculator={metricCalculator}\n model={model}\n keyHandlers={keyHandlers}\n mouseHandlers={mouseHandlers}\n movedColumns={movedColumns}\n movedRows={movedRows}\n onError={this.handleGridError}\n onViewChanged={this.handleViewChanged}\n onSelectionChanged={this.handleSelectionChanged}\n onMovedColumnsChanged={this.handleMovedColumnsChanged}\n renderer={this.renderer}\n stateOverride={stateOverride}\n theme={theme}\n />\n {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 model.floatingLeftColumnCount,\n model.floatingRightColumnCount\n )}\n formatColumns={this.getCachedPreviewFormatColumns(\n this.getCachedModelColumns(model, customColumns),\n conditionalFormats,\n conditionalFormatPreview,\n // Disable the preview format when we press Back on the format edit page\n openOptions[openOptions.length - 1]?.type ===\n OptionType.CONDITIONAL_FORMATTING_EDIT\n ? conditionalFormatEditIndex\n : null\n )}\n rollupConfig={this.getModelRollupConfig(\n model.originalColumns,\n rollupConfig,\n aggregationSettings\n )}\n totalsConfig={this.getModelTotalsConfig(\n model.columns,\n rollupConfig,\n aggregationSettings\n )}\n selectDistinctColumns={selectDistinctColumns}\n pendingRowCount={pendingRowCount}\n pendingDataMap={pendingDataMap}\n frozenColumns={frozenColumns}\n />\n )}\n <div\n className={classNames('grid-settings-button', {\n 'is-menu-shown': isMenuShown,\n })}\n >\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon\"\n onClick={this.handleMenu}\n >\n <FontAwesomeIcon icon={vsMenu} transform=\"up-1\" />\n </button>\n </div>\n {focusField}\n {loadingElement}\n {filterBar}\n {columnTooltip}\n {advancedFilterMenus}\n </div>\n <PendingDataBottomBar\n error={pendingSaveError}\n isSaving={pendingSavePromise != null}\n saveTooltip={`Commit (${this.commitAction.shortcut.getDisplayText()})`}\n discardTooltip={`Discard (${this.discardAction.shortcut.getDisplayText()})`}\n pendingDataErrors={pendingDataErrors}\n pendingDataMap={pendingDataMap}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n onSave={this.handlePendingCommitClicked}\n onDiscard={this.handlePendingDiscardClicked}\n />\n <ToastBottomBar>{toastMessage}</ToastBottomBar>\n <IrisGridCopyHandler\n model={model}\n copyOperation={copyOperation}\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n />\n <TableSaver\n ref={tableSaver => {\n this.tableSaver = tableSaver;\n }}\n getDownloadWorker={getDownloadWorker}\n onDownloadCompleted={this.handleDownloadCompleted}\n onDownloadCanceled={this.handleDownloadCanceled}\n onDownloadProgressUpdate={this.handleDownloadProgressUpdate}\n isDownloading={\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING\n }\n formatter={formatter}\n />\n </div>\n <CSSTransition\n in={isMenuShown}\n timeout={ThemeExport.transitionMidMs}\n classNames=\"slide-left\"\n onEntering={this.handleAnimationStart}\n onEntered={this.handleAnimationEnd}\n onExiting={this.handleAnimationStart}\n onExited={this.handleAnimationEnd}\n mountOnEnter\n unmountOnExit\n >\n <div className=\"table-sidebar\">\n <Stack>\n <Page title=\"Table Options\" onClose={this.handleMenuClose}>\n <Menu\n onSelect={i => this.handleMenuSelect(optionItems[i])}\n items={optionItems}\n />\n </Page>\n {openOptionsStack.map((option, i) => (\n <Page\n title={openOptions[i].title}\n onBack={this.handleMenuBack}\n onClose={this.handleMenuClose}\n key={openOptions[i].type}\n >\n {option}\n </Page>\n ))}\n </Stack>\n </div>\n </CSSTransition>\n <ContextActions actions={this.contextActions} />\n </div>\n );\n }\n}\n\nIrisGrid.propTypes = {\n children: PropTypes.node,\n advancedFilters: PropTypes.instanceOf(Map),\n advancedSettings: PropTypes.instanceOf(Map),\n alwaysFetchColumns: PropTypes.arrayOf(PropTypes.string),\n isFilterBarShown: PropTypes.bool,\n applyInputFiltersOnInit: PropTypes.bool,\n conditionalFormats: PropTypes.arrayOf(PropTypes.shape({})),\n customColumnFormatMap: PropTypes.instanceOf(Map),\n movedColumns: PropTypes.arrayOf(\n PropTypes.shape({\n from: PropTypes.number.isRequired,\n to: PropTypes.number.isRequired,\n })\n ),\n movedRows: PropTypes.arrayOf(\n PropTypes.shape({\n from: PropTypes.number.isRequired,\n to: PropTypes.number.isRequired,\n })\n ),\n inputFilters: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n })\n ),\n customFilters: PropTypes.arrayOf(PropTypes.shape({})),\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n onCreateChart: PropTypes.func,\n onColumnSelected: PropTypes.func,\n onError: PropTypes.func,\n onDataSelected: PropTypes.func,\n onStateChange: PropTypes.func,\n onPartitionAppend: PropTypes.func,\n onAdvancedSettingsChange: PropTypes.func,\n partition: PropTypes.string,\n partitionColumn: APIPropTypes.Column,\n sorts: PropTypes.arrayOf(PropTypes.shape({})),\n reverseType: PropTypes.string,\n quickFilters: PropTypes.instanceOf(Map),\n customColumns: PropTypes.arrayOf(PropTypes.string),\n selectDistinctColumns: PropTypes.arrayOf(PropTypes.string),\n // These settings come from the redux store\n settings: PropTypes.shape({\n timeZone: PropTypes.string.isRequired,\n defaultDateTimeFormat: PropTypes.string.isRequired,\n showTimeZone: PropTypes.bool.isRequired,\n showTSeparator: PropTypes.bool.isRequired,\n formatter: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n }),\n userColumnWidths: PropTypes.instanceOf(Map),\n userRowHeights: PropTypes.instanceOf(Map),\n onSelectionChanged: PropTypes.func,\n rollupConfig: PropTypes.shape({\n columns: PropTypes.arrayOf(PropTypes.string),\n showConstituents: PropTypes.bool,\n showNonAggregatedColumns: PropTypes.bool,\n includeDescriptions: PropTypes.bool,\n }),\n aggregationSettings: PropTypes.shape({\n aggregations: PropTypes.arrayOf(\n PropTypes.shape({\n operation: PropTypes.string.isRequired,\n selected: PropTypes.arrayOf(PropTypes.string).isRequired,\n invert: PropTypes.bool.isRequired,\n })\n ),\n showOnTop: PropTypes.bool,\n }),\n\n isSelectingColumn: PropTypes.bool,\n isSelectingPartition: PropTypes.bool,\n isStuckToBottom: PropTypes.bool,\n isStuckToRight: PropTypes.bool,\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnSelectionValidator: PropTypes.func,\n columnAllowedCursor: PropTypes.string,\n\n // eslint-disable-next-line react/no-unused-prop-types\n columnNotAllowedCursor: PropTypes.string,\n name: PropTypes.string,\n onlyFetchVisibleColumns: PropTypes.bool,\n\n showSearchBar: PropTypes.bool,\n searchValue: PropTypes.string,\n selectedSearchColumns: PropTypes.arrayOf(PropTypes.string),\n invertSearchColumns: PropTypes.bool,\n\n // eslint-disable-next-line react/no-unused-prop-types\n onContextMenu: PropTypes.func,\n\n pendingDataMap: PropTypes.instanceOf(Map),\n getDownloadWorker: PropTypes.func,\n\n canCopy: PropTypes.bool,\n canDownloadCsv: PropTypes.bool,\n frozenColumns: PropTypes.arrayOf(PropTypes.string),\n\n // Theme override for IrisGridTheme\n theme: PropTypes.shape({}),\n\n canToggleSearch: PropTypes.bool,\n};\n\nIrisGrid.defaultProps = {\n children: null,\n advancedFilters: new Map(),\n advancedSettings: new Map(),\n alwaysFetchColumns: [],\n conditionalFormats: [],\n customColumnFormatMap: new Map(),\n isFilterBarShown: false,\n applyInputFiltersOnInit: false,\n movedColumns: [],\n movedRows: [],\n inputFilters: [],\n customFilters: [],\n onCreateChart: () => {},\n onColumnSelected: () => {},\n onDataSelected: () => {},\n onError: () => {},\n onStateChange: () => {},\n onPartitionAppend: () => {},\n onAdvancedSettingsChange: () => {},\n partition: null,\n partitionColumn: null,\n quickFilters: new Map(),\n selectDistinctColumns: [],\n sorts: [],\n reverseType: TableUtils.REVERSE_TYPE.NONE,\n customColumns: [],\n aggregationSettings: { aggregations: [], showOnTop: false },\n rollupConfig: null,\n userColumnWidths: new Map(),\n userRowHeights: new Map(),\n onSelectionChanged: () => {},\n isSelectingColumn: false,\n isSelectingPartition: false,\n isStuckToBottom: false,\n isStuckToRight: false,\n columnSelectionValidator: null,\n columnAllowedCursor: null,\n columnNotAllowedCursor: null,\n name: 'table',\n onlyFetchVisibleColumns: true,\n showSearchBar: false,\n searchValue: '',\n selectedSearchColumns: null,\n invertSearchColumns: true,\n onContextMenu: () => [],\n pendingDataMap: new Map(),\n getDownloadWorker: undefined,\n settings: {\n timeZone: 'America/New_York',\n defaultDateTimeFormat: DateUtils.FULL_DATE_FORMAT,\n showTimeZone: false,\n showTSeparator: true,\n formatter: [],\n decimalFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n integerFormatOptions: PropTypes.shape({\n defaultFormatString: PropTypes.string,\n }),\n },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: {},\n canToggleSearch: true,\n};\n\nexport default IrisGrid;\n"],"file":"IrisGrid.js"}