@deephaven/iris-grid 0.7.3-beta.4 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IrisGrid.d.ts +18 -232
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +144 -45
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridModel.d.ts +10 -0
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +18 -0
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js +8 -2
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +12 -1
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +4 -8
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +36 -3
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +100 -45
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +1 -0
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridUtils.d.ts +2 -0
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +8 -4
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.d.ts +2 -1
- package/dist/key-handlers/ClearFilterKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.js +2 -2
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.d.ts +2 -1
- package/dist/key-handlers/CopyKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +2 -2
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.d.ts +2 -1
- package/dist/key-handlers/ReverseKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +2 -2
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +52 -34
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -11
- package/dist/memoizeClear.d.ts +0 -4
- package/dist/memoizeClear.d.ts.map +0 -1
- package/dist/memoizeClear.js +0 -34
- package/dist/memoizeClear.js.map +0 -1
package/dist/IrisGrid.js.map
CHANGED
|
@@ -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","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","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","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","keyHandlers","mouseHandlers","customColumnFormatMap","isSelectingPartition","movedColumns","movedRows","partition","partitionColumn","userColumnWidths","userRowHeights","searchValue","selectedSearchColumns","invertSearchColumns","selectDistinctColumns","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","applyInputFilters","resetColumnSelection","updateFormatterSettings","startLoading","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","isColumnFormatChanged","isDateFormattingChanged","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","theme","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","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","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","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","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","undefined","FULL_DATE_FORMAT"],"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\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 keyHandlers = [\n new CopyKeyHandler(this),\n new ReverseKeyHandler(this),\n new ClearFilterKeyHandler(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 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 } = props;\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 };\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 } = 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.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\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 ) => {\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) {\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 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 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 isEditable => ({ ...IrisGridTheme, autoSelectRow: !isEditable }),\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 } = this.props;\n return this.getCachedTheme(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\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n if (isColumnFormatChanged || isDateFormattingChanged) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\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 );\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 value = this.getValueForCell(columnIndex, rowIndex, rawValue);\n ContextActionUtils.copyToClipboard(value).catch(e =>\n log.error('Unable to copy cell', e)\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 } = this.props;\n const { metricCalculator, movedColumns } = this.state;\n const { userColumnWidths } = metricCalculator;\n\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 }\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 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.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 toggleSearchBar() {\n const { showSearchBar } = this.state;\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 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 this.setState({\n isTableDownloading: true,\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n tableDownloadStatus: TableCsvExporter.DOWNLOAD_STATUS.INITIATING,\n });\n }\n\n handleDownloadTable(...args) {\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 }\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 model,\n name,\n onlyFetchVisibleColumns,\n alwaysFetchColumns,\n advancedSettings,\n onAdvancedSettingsChange,\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 } = 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 >\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.isRollupAvailable,\n model.isTotalsAvailable,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar\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 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 />\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\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\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: () => {},\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 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 },\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","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","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","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","applyInputFilters","resetColumnSelection","updateFormatterSettings","startLoading","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","isColumnFormatChanged","isDateFormattingChanged","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","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","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","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","undefined","FULL_DATE_FORMAT"],"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\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 } = 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.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\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 ) => {\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 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 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\n const isColumnFormatChanged = !deepEqual(\n this.globalColumnFormats,\n globalColumnFormats\n );\n const isDateFormattingChanged = !deepEqual(\n this.dateTimeFormatterOptions,\n dateTimeFormatterOptions\n );\n if (isColumnFormatChanged || isDateFormattingChanged) {\n this.globalColumnFormats = globalColumnFormats;\n this.dateTimeFormatterOptions = dateTimeFormatterOptions;\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 );\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.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 toggleSearchBar() {\n const { showSearchBar } = this.state;\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 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 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\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 >\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.isRollupAvailable,\n model.isTotalsAvailable,\n model.isSelectDistinctAvailable,\n model.isExportAvailable,\n this.toggleFilterBarAction,\n this.toggleSearchBarAction,\n isFilterBarShown,\n showSearchBar,\n canDownloadCsv\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 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\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\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: () => {},\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 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 },\n canCopy: true,\n canDownloadCsv: true,\n frozenColumns: null,\n theme: {},\n};\n\nexport default IrisGrid;\n"],"file":"IrisGrid.js"}
|