@deephaven/iris-grid 0.13.3-treemap.2 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AdvancedFilterCreator.d.ts +69 -63
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +79 -73
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts +45 -45
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +32 -36
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +47 -52
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +24 -39
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnStatistics.d.ts +34 -22
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js +8 -12
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.d.ts +58 -0
- package/dist/CommonTypes.d.ts.map +1 -0
- package/dist/CommonTypes.js +2 -0
- package/dist/CommonTypes.js.map +1 -0
- package/dist/CrossColumnSearch.d.ts +26 -24
- package/dist/CrossColumnSearch.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js +9 -13
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.d.ts +48 -51
- package/dist/FilterInputField.d.ts.map +1 -1
- package/dist/FilterInputField.js +30 -27
- package/dist/FilterInputField.js.map +1 -1
- package/dist/IrisGrid.d.ts +409 -453
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +514 -449
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.d.ts +1 -1
- package/dist/IrisGridCellOverflowModal.d.ts.map +1 -1
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts +52 -46
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +22 -38
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +5 -4
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js +5 -1
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +37 -35
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +19 -3
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.d.ts +7 -5
- package/dist/IrisGridModelFactory.d.ts.map +1 -1
- package/dist/IrisGridModelFactory.js +5 -5
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +13 -11
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.d.ts +38 -39
- package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
- package/dist/IrisGridPartitionSelector.js +18 -24
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +111 -32
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +212 -170
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +59 -31
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +92 -46
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +48 -147
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +58 -1381
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +219 -0
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -0
- package/dist/IrisGridTableModelTemplate.js +1623 -0
- package/dist/IrisGridTableModelTemplate.js.map +1 -0
- package/dist/IrisGridTestUtils.d.ts +18 -14
- package/dist/IrisGridTestUtils.d.ts.map +1 -1
- package/dist/IrisGridTestUtils.js +29 -1
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.d.ts +35 -3
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +26 -7
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridTreeTableModel.js +24 -14
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +257 -162
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +132 -95
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.d.ts +5 -3
- package/dist/MissingKeyError.d.ts.map +1 -1
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.d.ts +61 -40
- package/dist/PartitionSelectorSearch.d.ts.map +1 -1
- package/dist/PartitionSelectorSearch.js +25 -15
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +3 -6
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +39 -55
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js +42 -64
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/TreeTableViewportUpdater.d.ts +29 -37
- package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
- package/dist/TreeTableViewportUpdater.js +39 -50
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +2 -0
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +41 -130
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +426 -317
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +2 -2
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.d.ts +8 -4
- package/dist/mousehandlers/PendingMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +4 -5
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +48 -33
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +28 -27
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +51 -41
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +22 -18
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.d.ts +26 -36
- package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +11 -20
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.d.ts +34 -35
- package/dist/sidebar/InputEditor.d.ts.map +1 -1
- package/dist/sidebar/InputEditor.js +43 -24
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +67 -52
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +51 -53
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts +27 -21
- package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +6 -10
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +42 -39
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +12 -20
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +59 -60
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +154 -68
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +56 -45
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +34 -29
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +2 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +6 -5
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +5 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/icons/index.d.ts +7 -7
- package/dist/sidebar/icons/index.d.ts.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.d.ts +12 -12
- package/dist/sidebar/index.d.ts.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +17 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/PartitionSelectorSearch.jsx"],"names":["React","Component","PropTypes","debounce","dh","ItemList","LoadingSpinner","Log","CanceledPromiseError","log","module","DEBOUNCE_UPDATE_FILTER","PartitionSelectorSearch","handleError","error","constructor","props","debounceUpdateFilter","bind","handleFilterChange","handleInputFocus","handleKeyDown","handleListKeydown","handleSelect","handleTableUpdate","handleTextChange","handleViewportChange","itemList","searchInput","timer","state","offset","itemCount","items","text","isLoading","componentDidMount","startListening","componentDidUpdate","prevProps","prevState","onListResized","componentWillUnmount","cancel","stopListening","event","key","selectedValue","length","value","trim","onSelect","stopPropagation","preventDefault","focusItem","focus","debug2","table","size","setState","itemIndex","offsetIndex","data","detail","getFormattedString","column","columns","r","rows","row","get","displayValue","type","name","push","target","topRow","bottomRow","delta","Math","max","top","bottom","setViewport","updateFilter","initialPageSize","addEventListener","Table","EVENT_UPDATED","EVENT_FILTERCHANGED","removeEventListener","filterText","filters","filter","invoke","FilterValue","ofString","applyFilter","render","listHeight","min","MAX_VISIBLE_ITEMS","DEFAULT_ROW_HEIGHT","height","propTypes","func","isRequired","shape","arrayOf","string","number","defaultProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport dh from '@deephaven/jsapi-shim';\nimport { ItemList, LoadingSpinner } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { CanceledPromiseError } from '@deephaven/utils';\nimport './PartitionSelectorSearch.scss';\n\nconst log = Log.module('PartitionSelectorSearch');\nconst DEBOUNCE_UPDATE_FILTER = 150;\n\nclass PartitionSelectorSearch extends Component {\n static MAX_VISIBLE_ITEMS = 12;\n\n static handleError(error) {\n if (!(error instanceof CanceledPromiseError)) {\n log.error(error);\n }\n }\n\n constructor(props) {\n super(props);\n\n this.debounceUpdateFilter = debounce(\n this.debounceUpdateFilter.bind(this),\n DEBOUNCE_UPDATE_FILTER\n );\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleInputFocus = this.handleInputFocus.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleListKeydown = this.handleListKeydown.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n this.handleTextChange = this.handleTextChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n\n this.itemList = null;\n this.searchInput = null;\n this.timer = null;\n\n this.state = {\n offset: 0,\n itemCount: 0,\n items: [],\n text: '',\n isLoading: true,\n };\n }\n\n componentDidMount() {\n this.startListening();\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { isLoading, itemCount } = this.state;\n const { onListResized } = this.props;\n if (\n itemCount !== prevState.itemCount ||\n isLoading !== prevState.isLoading\n ) {\n onListResized();\n }\n }\n\n componentWillUnmount() {\n this.debounceUpdateFilter.cancel();\n\n this.stopListening();\n }\n\n handleKeyDown(event) {\n if (this.itemList == null) {\n return false;\n }\n\n const { items, itemCount } = this.state;\n switch (event.key) {\n case 'Enter': {\n let selectedValue = null;\n if (items.length > 0) {\n selectedValue = items[0].value;\n } else {\n const { text } = this.state;\n selectedValue = text.trim();\n }\n\n if (selectedValue.length > 0) {\n const { onSelect } = this.props;\n onSelect(selectedValue);\n }\n\n event.stopPropagation();\n event.preventDefault();\n return true;\n }\n case 'ArrowDown':\n if (itemCount > 0) {\n this.itemList.focusItem(1);\n }\n event.stopPropagation();\n event.preventDefault();\n return true;\n default:\n return false;\n }\n }\n\n handleListKeydown(event) {\n switch (event.key) {\n case 'Escape':\n // Do nothing\n break;\n default:\n this.focus();\n break;\n }\n }\n\n handleFilterChange() {\n log.debug2('handleFilterChange');\n\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ itemCount, isLoading: true });\n }\n\n handleInputFocus() {\n if (this.itemList) {\n this.itemList.focusItem(0);\n }\n }\n\n handleSelect(itemIndex) {\n log.debug2('handleSelect', itemIndex);\n\n const { onSelect } = this.props;\n const { offset, items } = this.state;\n const offsetIndex = itemIndex - offset;\n if (offsetIndex < 0 || items.length <= offsetIndex) {\n log.error('No data for item', itemIndex);\n return;\n }\n\n const { value } = items[offsetIndex];\n onSelect(value);\n }\n\n handleTableUpdate(event) {\n const data = event.detail;\n const { offset } = data;\n\n const items = [];\n const { getFormattedString, table } = this.props;\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n const displayValue = getFormattedString(value, column.type, column.name);\n items.push({\n displayValue,\n value,\n });\n }\n\n const itemCount = table.size;\n log.debug2('handleTableUpdate', itemCount, offset, items.length);\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n handleTextChange(event) {\n log.debug2('handleTextChange');\n\n const { value: text } = event.target;\n\n this.setState({ text });\n\n this.debounceUpdateFilter();\n }\n\n handleViewportChange(topRow, bottomRow) {\n log.debug2('handleViewportChange', topRow, bottomRow);\n\n const delta = Math.max(1, bottomRow - topRow);\n const top = Math.max(0, topRow - delta);\n const bottom = bottomRow + delta;\n\n const { table } = this.props;\n table.setViewport(top, bottom);\n }\n\n debounceUpdateFilter() {\n this.updateFilter();\n }\n\n focus() {\n if (this.searchInput) {\n this.searchInput.focus();\n }\n }\n\n startListening() {\n const { initialPageSize, table } = this.props;\n table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n table.setViewport(0, initialPageSize);\n }\n\n stopListening() {\n const { table } = this.props;\n table.removeEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n }\n\n updateFilter() {\n const { initialPageSize, table } = this.props;\n const { text } = this.state;\n const filterText = text.trim();\n const filters = [];\n if (filterText.length > 0) {\n const column = table.columns[0];\n const filter = column\n .filter()\n .invoke(\n 'matches',\n dh.FilterValue.ofString(`(?s)(?i).*\\\\Q${filterText}\\\\E.*`)\n );\n filters.push(filter);\n }\n\n log.debug2('updateFilter', filters);\n\n table.applyFilter(filters);\n table.setViewport(0, initialPageSize);\n }\n\n render() {\n const { isLoading, itemCount, items, offset, text } = this.state;\n const listHeight =\n Math.min(itemCount, PartitionSelectorSearch.MAX_VISIBLE_ITEMS) *\n ItemList.DEFAULT_ROW_HEIGHT +\n // Adjust for ListItem vertical padding - .375rem ~ 5.25px\n 11;\n return (\n <div className=\"iris-grid-partition-selector-search\">\n <div className=\"search-container\">\n <input\n type=\"text\"\n ref={searchInput => {\n this.searchInput = searchInput;\n }}\n value={text}\n placeholder=\"Available Partitions\"\n onChange={this.handleTextChange}\n onFocus={this.handleInputFocus}\n onKeyDown={this.handleKeyDown}\n className=\"form-control input-partition\"\n />\n </div>\n {!isLoading && itemCount > 0 && (\n <div\n className=\"iris-grid-partition-selector-search-list\"\n onKeyDown={this.handleListKeydown}\n role=\"presentation\"\n style={{ height: listHeight }}\n >\n <ItemList\n ref={itemList => {\n this.itemList = itemList;\n }}\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n />\n </div>\n )}\n {!isLoading && itemCount === 0 && (\n <div className=\"iris-grid-partition-selector-search-empty\">\n No results\n </div>\n )}\n {isLoading && (\n <div className=\"iris-grid-partition-selector-loading\">\n <LoadingSpinner />\n Loading...\n </div>\n )}\n </div>\n );\n }\n}\n\nPartitionSelectorSearch.propTypes = {\n getFormattedString: PropTypes.func.isRequired,\n table: PropTypes.shape({\n addEventListener: PropTypes.func.isRequired,\n removeEventListener: PropTypes.func.isRequired,\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n filter: PropTypes.func.isRequired,\n })\n ),\n size: PropTypes.number.isRequired,\n applyFilter: PropTypes.func.isRequired,\n setViewport: PropTypes.func.isRequired,\n }).isRequired,\n initialPageSize: PropTypes.number,\n onSelect: PropTypes.func,\n onListResized: PropTypes.func,\n};\n\nPartitionSelectorSearch.defaultProps = {\n initialPageSize: 100,\n onSelect: () => {},\n onListResized: () => {},\n};\n\nexport default PartitionSelectorSearch;\n"],"file":"PartitionSelectorSearch.js"}
|
|
1
|
+
{"version":3,"sources":["../src/PartitionSelectorSearch.tsx"],"names":["React","Component","PropTypes","debounce","dh","ItemList","LoadingSpinner","Log","CanceledPromiseError","log","module","DEBOUNCE_UPDATE_FILTER","PartitionSelectorSearch","handleError","error","constructor","props","updateFilter","handleFilterChange","bind","handleInputFocus","handleKeyDown","handleListKeydown","handleSelect","handleTableUpdate","handleTextChange","handleViewportChange","itemList","searchInput","timer","state","offset","itemCount","items","text","isLoading","componentDidMount","startListening","componentDidUpdate","prevProps","prevState","onListResized","componentWillUnmount","debounceUpdateFilter","cancel","stopListening","event","key","selectedValue","length","value","trim","onSelect","stopPropagation","preventDefault","focusItem","focus","debug2","table","size","setState","itemIndex","offsetIndex","data","detail","getFormattedString","column","columns","r","rows","row","get","displayValue","type","name","push","target","topRow","bottomRow","delta","Math","max","top","bottom","setViewport","initialPageSize","addEventListener","Table","EVENT_UPDATED","EVENT_FILTERCHANGED","removeEventListener","filterText","filters","filter","invoke","FilterValue","ofString","applyFilter","render","listHeight","min","MAX_VISIBLE_ITEMS","DEFAULT_ROW_HEIGHT","height","undefined","func","isRequired","shape","arrayOf","string","number"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport dh, { Table } from '@deephaven/jsapi-shim';\nimport { ItemList, LoadingSpinner } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { CanceledPromiseError } from '@deephaven/utils';\nimport './PartitionSelectorSearch.scss';\nimport { ModelIndex } from '@deephaven/grid';\n\nconst log = Log.module('PartitionSelectorSearch');\nconst DEBOUNCE_UPDATE_FILTER = 150;\n\ninterface Item {\n value: string;\n displayValue: string;\n}\n\ninterface PartitionSelectorSearchProps<T> {\n getFormattedString: (value: T, type: string, name: string) => string;\n table: Table;\n initialPageSize: number;\n onSelect: (value: string) => void;\n onListResized: () => void;\n}\ninterface PartitionSelectorSearchState {\n offset: number;\n itemCount: number;\n items: Item[];\n text: string;\n isLoading: boolean;\n}\nclass PartitionSelectorSearch<T> extends Component<\n PartitionSelectorSearchProps<T>,\n PartitionSelectorSearchState\n> {\n static MAX_VISIBLE_ITEMS = 12;\n\n static defaultProps = {\n initialPageSize: 100,\n onSelect: (): void => undefined,\n onListResized: (): void => undefined,\n };\n\n static propTypes = {\n getFormattedString: PropTypes.func.isRequired,\n table: PropTypes.shape({\n addEventListener: PropTypes.func.isRequired,\n removeEventListener: PropTypes.func.isRequired,\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n filter: PropTypes.func.isRequired,\n })\n ),\n size: PropTypes.number.isRequired,\n applyFilter: PropTypes.func.isRequired,\n setViewport: PropTypes.func.isRequired,\n }).isRequired,\n initialPageSize: PropTypes.number,\n onSelect: PropTypes.func,\n onListResized: PropTypes.func,\n };\n\n static handleError(error: unknown): void {\n if (!(error instanceof CanceledPromiseError)) {\n log.error(error);\n }\n }\n\n constructor(props: PartitionSelectorSearchProps<T>) {\n super(props);\n\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleInputFocus = this.handleInputFocus.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleListKeydown = this.handleListKeydown.bind(this);\n this.handleSelect = this.handleSelect.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n this.handleTextChange = this.handleTextChange.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n\n this.itemList = null;\n this.searchInput = null;\n this.timer = null;\n\n this.state = {\n offset: 0,\n itemCount: 0,\n items: [],\n text: '',\n isLoading: true,\n };\n }\n\n componentDidMount(): void {\n this.startListening();\n }\n\n componentDidUpdate(\n prevProps: PartitionSelectorSearchProps<T>,\n prevState: PartitionSelectorSearchState\n ): void {\n const { isLoading, itemCount } = this.state;\n const { onListResized } = this.props;\n if (\n itemCount !== prevState.itemCount ||\n isLoading !== prevState.isLoading\n ) {\n onListResized();\n }\n }\n\n componentWillUnmount(): void {\n this.debounceUpdateFilter.cancel();\n\n this.stopListening();\n }\n\n itemList: ItemList<Item> | null;\n\n searchInput: HTMLInputElement | null;\n\n timer: null;\n\n handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>): boolean {\n if (this.itemList == null) {\n return false;\n }\n\n const { items, itemCount } = this.state;\n switch (event.key) {\n case 'Enter': {\n let selectedValue = null;\n if (items.length > 0) {\n selectedValue = items[0].value;\n } else {\n const { text } = this.state;\n selectedValue = text.trim();\n }\n\n if (selectedValue.length > 0) {\n const { onSelect } = this.props;\n onSelect(selectedValue);\n }\n\n event.stopPropagation();\n event.preventDefault();\n return true;\n }\n case 'ArrowDown':\n if (itemCount > 0) {\n this.itemList.focusItem(1);\n }\n event.stopPropagation();\n event.preventDefault();\n return true;\n default:\n return false;\n }\n }\n\n handleListKeydown(event: React.KeyboardEvent<HTMLDivElement>): void {\n switch (event.key) {\n case 'Escape':\n // Do nothing\n break;\n default:\n this.focus();\n break;\n }\n }\n\n handleFilterChange(): void {\n log.debug2('handleFilterChange');\n\n const { table } = this.props;\n const itemCount = table.size;\n this.setState({ itemCount, isLoading: true });\n }\n\n handleInputFocus(): void {\n if (this.itemList) {\n this.itemList.focusItem(0);\n }\n }\n\n handleSelect(itemIndex: ModelIndex): void {\n log.debug2('handleSelect', itemIndex);\n\n const { onSelect } = this.props;\n const { offset, items } = this.state;\n const offsetIndex = itemIndex - offset;\n if (offsetIndex < 0 || items.length <= offsetIndex) {\n log.error('No data for item', itemIndex);\n return;\n }\n\n const { value } = items[offsetIndex];\n onSelect(value);\n }\n\n handleTableUpdate(event: CustomEvent): void {\n const data = event.detail;\n const { offset } = data;\n\n const items = [] as Item[];\n const { getFormattedString, table } = this.props;\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n const displayValue = getFormattedString(value, column.type, column.name);\n items.push({\n displayValue,\n value,\n });\n }\n\n const itemCount = table.size;\n log.debug2('handleTableUpdate', itemCount, offset, items.length);\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n handleTextChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('handleTextChange');\n\n const { value: text } = event.target;\n\n this.setState({ text });\n\n this.debounceUpdateFilter();\n }\n\n handleViewportChange(topRow: number, bottomRow: number): void {\n log.debug2('handleViewportChange', topRow, bottomRow);\n\n const delta = Math.max(1, bottomRow - topRow);\n const top = Math.max(0, topRow - delta);\n const bottom = bottomRow + delta;\n\n const { table } = this.props;\n table.setViewport(top, bottom);\n }\n\n debounceUpdateFilter = debounce((): void => {\n this.updateFilter();\n }, DEBOUNCE_UPDATE_FILTER);\n\n focus(): void {\n if (this.searchInput) {\n this.searchInput.focus();\n }\n }\n\n startListening(): void {\n const { initialPageSize, table } = this.props;\n table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.addEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n table.setViewport(0, initialPageSize);\n }\n\n stopListening(): void {\n const { table } = this.props;\n table.removeEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n table.removeEventListener(\n dh.Table.EVENT_FILTERCHANGED,\n this.handleFilterChange\n );\n }\n\n updateFilter(): void {\n const { initialPageSize, table } = this.props;\n const { text } = this.state;\n const filterText = text.trim();\n const filters = [];\n if (filterText.length > 0) {\n const column = table.columns[0];\n const filter = column\n .filter()\n .invoke(\n 'matches',\n dh.FilterValue.ofString(`(?s)(?i).*\\\\Q${filterText}\\\\E.*`)\n );\n filters.push(filter);\n }\n\n log.debug2('updateFilter', filters);\n\n table.applyFilter(filters);\n table.setViewport(0, initialPageSize);\n }\n\n render(): JSX.Element {\n const { isLoading, itemCount, items, offset, text } = this.state;\n const listHeight =\n Math.min(itemCount, PartitionSelectorSearch.MAX_VISIBLE_ITEMS) *\n ItemList.DEFAULT_ROW_HEIGHT +\n // Adjust for ListItem vertical padding - .375rem ~ 5.25px\n 11;\n return (\n <div className=\"iris-grid-partition-selector-search\">\n <div className=\"search-container\">\n <input\n type=\"text\"\n ref={searchInput => {\n this.searchInput = searchInput;\n }}\n value={text}\n placeholder=\"Available Partitions\"\n onChange={this.handleTextChange}\n onFocus={this.handleInputFocus}\n onKeyDown={this.handleKeyDown}\n className=\"form-control input-partition\"\n />\n </div>\n {!isLoading && itemCount > 0 && (\n <div\n className=\"iris-grid-partition-selector-search-list\"\n onKeyDown={this.handleListKeydown}\n role=\"presentation\"\n style={{ height: listHeight }}\n >\n <ItemList\n ref={itemList => {\n this.itemList = itemList;\n }}\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n />\n </div>\n )}\n {!isLoading && itemCount === 0 && (\n <div className=\"iris-grid-partition-selector-search-empty\">\n No results\n </div>\n )}\n {isLoading && (\n <div className=\"iris-grid-partition-selector-loading\">\n <LoadingSpinner />\n Loading...\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default PartitionSelectorSearch;\n"],"file":"PartitionSelectorSearch.js"}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import './PendingDataBottomBar.scss';
|
|
3
|
+
import { PendingDataMap } from './CommonTypes';
|
|
3
4
|
export declare type PendingDataBottomBarProps = {
|
|
4
5
|
onSave: () => Promise<void>;
|
|
5
6
|
onDiscard: () => Promise<void>;
|
|
6
7
|
discardTooltip?: string;
|
|
7
8
|
saveTooltip?: string;
|
|
8
9
|
isSaving?: boolean;
|
|
9
|
-
error?: string;
|
|
10
|
+
error?: string | null;
|
|
10
11
|
pendingDataErrors: Map<number, Error[]>;
|
|
11
|
-
pendingDataMap:
|
|
12
|
-
data: Map<number, {
|
|
13
|
-
value: unknown;
|
|
14
|
-
}>;
|
|
15
|
-
}>;
|
|
12
|
+
pendingDataMap: PendingDataMap;
|
|
16
13
|
onEntering?: () => void;
|
|
17
14
|
onEntered?: () => void;
|
|
18
15
|
onExiting?: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PendingDataBottomBar.d.ts","sourceRoot":"","sources":["../src/PendingDataBottomBar.tsx"],"names":[],"mappings":";AAMA,OAAO,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"PendingDataBottomBar.d.ts","sourceRoot":"","sources":["../src/PendingDataBottomBar.tsx"],"names":[],"mappings":";AAMA,OAAO,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAM/C,oBAAY,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,oBAAoB,wJAa9B,yBAAyB,KAAG,WAwG9B,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/PendingDataBottomBar.tsx"],"names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","isSuccessShown","setIsSuccessShown","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","Array","from","keys","join","trim","showSuccessMessage","current","setTimeout","hideSuccessMessage","clearTimeout","cleanupTimeout","undefined","pendingRowCount","commitIcon"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,OAA3B,EAAoCC,MAApC,EAA4CC,QAA5C,QAA4D,OAA5D;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,MAAT,EAAiBC,SAAjB,QAAkC,kBAAlC;AACA,SAASC,MAAT,EAAiBC,cAAjB,QAAuC,uBAAvC;AACA,SAASC,WAAT,QAA4B,wBAA5B;OACOC,iB;;
|
|
1
|
+
{"version":3,"sources":["../src/PendingDataBottomBar.tsx"],"names":["React","useEffect","useMemo","useRef","useState","FontAwesomeIcon","vsPass","vsWarning","Button","LoadingSpinner","usePrevious","IrisGridBottomBar","HIDE_TIMEOUT","MAX_NUMBER_ROWS_SHOWN","PendingDataBottomBar","isSaving","onSave","onDiscard","discardTooltip","saveTooltip","error","pendingDataErrors","pendingDataMap","onEntering","onEntered","onExiting","onExited","isSuccessShown","setIsSuccessShown","wasSuccessShown","setWasSuccessShown","successTimeout","prevIsSaving","errorMessage","size","Array","from","keys","join","trim","showSuccessMessage","current","setTimeout","hideSuccessMessage","clearTimeout","cleanupTimeout","undefined","pendingRowCount","commitIcon"],"mappings":"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","sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsPass, vsWarning } from '@deephaven/icons';\nimport { Button, LoadingSpinner } from '@deephaven/components';\nimport { usePrevious } from '@deephaven/react-hooks';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport './PendingDataBottomBar.scss';\nimport { PendingDataMap } from './CommonTypes';\n\nconst HIDE_TIMEOUT = 3000;\n\nconst MAX_NUMBER_ROWS_SHOWN = 5;\n\nexport type PendingDataBottomBarProps = {\n onSave: () => Promise<void>;\n onDiscard: () => Promise<void>;\n discardTooltip?: string;\n saveTooltip?: string;\n isSaving?: boolean;\n error?: string | null;\n pendingDataErrors: Map<number, Error[]>;\n pendingDataMap: PendingDataMap;\n onEntering?: () => void;\n onEntered?: () => void;\n onExiting?: () => void;\n onExited?: () => void;\n};\n\nexport const PendingDataBottomBar = ({\n isSaving = false,\n onSave,\n onDiscard,\n discardTooltip,\n saveTooltip,\n error,\n pendingDataErrors,\n pendingDataMap,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n}: PendingDataBottomBarProps): JSX.Element => {\n const [isSuccessShown, setIsSuccessShown] = useState(false);\n const [wasSuccessShown, setWasSuccessShown] = useState(false);\n const successTimeout = useRef<ReturnType<typeof setTimeout>>();\n const prevIsSaving = usePrevious(isSaving);\n const errorMessage = useMemo(() => {\n if (pendingDataErrors.size === 0) {\n return error;\n }\n if (pendingDataErrors.size <= MAX_NUMBER_ROWS_SHOWN) {\n return `Key can't be empty (on pending row${\n pendingDataErrors.size > 1 ? 's' : ''\n } ${Array.from(pendingDataErrors.keys()).join(', ').trim()})`;\n }\n return `Key can't be empty (on ${pendingDataErrors.size} rows)`;\n }, [error, pendingDataErrors]);\n\n useEffect(\n function showSuccessMessage() {\n if (prevIsSaving && !isSaving && errorMessage == null) {\n setIsSuccessShown(true);\n setWasSuccessShown(true);\n successTimeout.current = setTimeout(() => {\n setIsSuccessShown(false);\n }, HIDE_TIMEOUT);\n }\n },\n [errorMessage, isSaving, prevIsSaving]\n );\n\n useEffect(\n function hideSuccessMessage() {\n if (successTimeout.current && pendingDataMap.size > 0) {\n // A change just occurred while the success message was still being shown, just hide the success message\n clearTimeout(successTimeout.current);\n setIsSuccessShown(false);\n setWasSuccessShown(false);\n }\n },\n [pendingDataMap]\n );\n\n useEffect(function cleanupTimeout() {\n return () =>\n successTimeout.current ? clearTimeout(successTimeout.current) : undefined;\n }, []);\n\n const pendingRowCount = pendingDataMap.size;\n let commitIcon;\n if (isSaving) {\n commitIcon = <LoadingSpinner />;\n } else if (wasSuccessShown) {\n commitIcon = vsPass;\n }\n\n return (\n <IrisGridBottomBar\n className=\"pending-data-bottom-bar\"\n isShown={pendingRowCount > 0 || isSuccessShown || errorMessage != null}\n onEntering={onEntering}\n onEntered={onEntered}\n onExiting={onExiting}\n onExited={() => {\n setWasSuccessShown(false);\n if (onExited) {\n onExited();\n }\n }}\n >\n {errorMessage && (\n <div className=\"error-message\">\n <FontAwesomeIcon icon={vsWarning} />\n <span>{`${errorMessage}`}</span>\n </div>\n )}\n {!errorMessage && (\n <div className=\"status-message\">\n {pendingRowCount > 0 && (\n <span>{`${pendingRowCount} row${\n pendingRowCount > 1 ? 's' : ''\n } pending`}</span>\n )}\n </div>\n )}\n <div className=\"buttons-container\">\n {!isSaving && !wasSuccessShown && (\n <Button kind=\"secondary\" onClick={onDiscard} tooltip={discardTooltip}>\n Discard\n </Button>\n )}\n <Button\n kind={wasSuccessShown ? 'success' : 'primary'}\n onClick={onSave}\n icon={commitIcon}\n disabled={isSaving || wasSuccessShown || errorMessage != null}\n tooltip={saveTooltip}\n >\n {isSaving && `Committing...`}\n {!isSaving && wasSuccessShown && `Success`}\n {!isSaving && !wasSuccessShown && `Commit`}\n </Button>\n </div>\n </IrisGridBottomBar>\n );\n};\n\nexport default PendingDataBottomBar;\n"],"file":"PendingDataBottomBar.js"}
|
|
@@ -1,65 +1,49 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="lodash" />
|
|
2
|
+
import { PureComponent } from 'react';
|
|
3
|
+
import { MoveOperation } from '@deephaven/grid';
|
|
4
|
+
import { Column, FilterCondition, Sort, Table, TableViewportSubscription } from '@deephaven/jsapi-shim';
|
|
5
|
+
import { ColumnName } from './CommonTypes';
|
|
2
6
|
/**
|
|
3
7
|
* Updates the viewport for an Iris table, for use in a scroll pane.
|
|
4
8
|
* Automatically throttles the viewport requests and buffers above and below.
|
|
5
9
|
*/
|
|
6
|
-
|
|
10
|
+
interface TableViewportUpdaterProps {
|
|
11
|
+
table: Table;
|
|
12
|
+
top: number;
|
|
13
|
+
bottom: number;
|
|
14
|
+
left: number;
|
|
15
|
+
right: number;
|
|
16
|
+
columns: Column[];
|
|
17
|
+
filters: FilterCondition[];
|
|
18
|
+
sorts: Sort[];
|
|
19
|
+
customColumns: ColumnName[];
|
|
20
|
+
movedColumns: MoveOperation[];
|
|
21
|
+
onSubscription: (subscription?: TableViewportSubscription) => void;
|
|
22
|
+
}
|
|
23
|
+
declare class TableViewportUpdater extends PureComponent<TableViewportUpdaterProps, Record<string, never>> {
|
|
7
24
|
static ROW_BUFFER_PAGES: number;
|
|
8
25
|
static COLUMN_BUFFER_PAGES: number;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
26
|
+
static defaultProps: {
|
|
27
|
+
top: number;
|
|
28
|
+
bottom: number;
|
|
29
|
+
left: null;
|
|
30
|
+
right: null;
|
|
31
|
+
columns: null;
|
|
32
|
+
onSubscription: () => void;
|
|
33
|
+
filters: never[];
|
|
34
|
+
sorts: never[];
|
|
35
|
+
customColumns: never[];
|
|
36
|
+
movedColumns: never[];
|
|
37
|
+
};
|
|
38
|
+
componentDidMount(): void;
|
|
39
|
+
componentDidUpdate(prevProps: TableViewportUpdaterProps): void;
|
|
40
|
+
componentWillUnmount(): void;
|
|
41
|
+
subscription?: TableViewportSubscription;
|
|
12
42
|
getViewportRowRange: (this: any, table: any, top: any, bottom: any) => any[];
|
|
13
|
-
getViewportColumns: (this: any, table: any, left: any, right: any, movedColumns:
|
|
43
|
+
getViewportColumns: (this: any, table: any, left: any, right: any, movedColumns: MoveOperation[]) => any[] | null;
|
|
14
44
|
closeSubscription(): void;
|
|
45
|
+
updateViewport: import("lodash").DebouncedFunc<(top: number, bottom: number, left: number, right: number, viewColumns: Column[]) => void>;
|
|
46
|
+
render(): null;
|
|
15
47
|
}
|
|
16
|
-
|
|
17
|
-
namespace propTypes {
|
|
18
|
-
const table: PropTypes.Validator<PropTypes.InferProps<{
|
|
19
|
-
applyFilter: PropTypes.Validator<(...args: any[]) => any>;
|
|
20
|
-
applySort: PropTypes.Validator<(...args: any[]) => any>;
|
|
21
|
-
applyCustomColumns: PropTypes.Validator<(...args: any[]) => any>;
|
|
22
|
-
setViewport: PropTypes.Validator<(...args: any[]) => any>;
|
|
23
|
-
}>>;
|
|
24
|
-
const top: PropTypes.Requireable<number>;
|
|
25
|
-
const bottom: PropTypes.Requireable<number>;
|
|
26
|
-
const left: PropTypes.Requireable<number>;
|
|
27
|
-
const right: PropTypes.Requireable<number>;
|
|
28
|
-
const columns: PropTypes.Requireable<(PropTypes.InferProps<{
|
|
29
|
-
name: PropTypes.Validator<string>;
|
|
30
|
-
type: PropTypes.Validator<string>;
|
|
31
|
-
description: PropTypes.Requireable<string>;
|
|
32
|
-
constituentType: PropTypes.Requireable<string>;
|
|
33
|
-
}> | null | undefined)[]>;
|
|
34
|
-
const filters: PropTypes.Requireable<(PropTypes.InferProps<{}> | null | undefined)[]>;
|
|
35
|
-
const sorts: PropTypes.Requireable<(PropTypes.InferProps<{}> | null | undefined)[]>;
|
|
36
|
-
const customColumns: PropTypes.Requireable<(string | null | undefined)[]>;
|
|
37
|
-
const movedColumns: PropTypes.Requireable<(PropTypes.InferProps<{}> | null | undefined)[]>;
|
|
38
|
-
const onSubscription: PropTypes.Requireable<(...args: any[]) => any>;
|
|
39
|
-
}
|
|
40
|
-
namespace defaultProps {
|
|
41
|
-
const top_1: number;
|
|
42
|
-
export { top_1 as top };
|
|
43
|
-
const bottom_1: number;
|
|
44
|
-
export { bottom_1 as bottom };
|
|
45
|
-
const left_1: null;
|
|
46
|
-
export { left_1 as left };
|
|
47
|
-
const right_1: null;
|
|
48
|
-
export { right_1 as right };
|
|
49
|
-
const columns_1: null;
|
|
50
|
-
export { columns_1 as columns };
|
|
51
|
-
export function onSubscription_1(): void;
|
|
52
|
-
export { onSubscription_1 as onSubscription };
|
|
53
|
-
const filters_1: never[];
|
|
54
|
-
export { filters_1 as filters };
|
|
55
|
-
const sorts_1: never[];
|
|
56
|
-
export { sorts_1 as sorts };
|
|
57
|
-
const customColumns_1: never[];
|
|
58
|
-
export { customColumns_1 as customColumns };
|
|
59
|
-
const movedColumns_1: never[];
|
|
60
|
-
export { movedColumns_1 as movedColumns };
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
import { PureComponent } from "react";
|
|
64
|
-
import PropTypes from "prop-types";
|
|
48
|
+
export default TableViewportUpdater;
|
|
65
49
|
//# sourceMappingURL=TableViewportUpdater.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableViewportUpdater.d.ts","sourceRoot":"","sources":["../src/TableViewportUpdater.
|
|
1
|
+
{"version":3,"file":"TableViewportUpdater.d.ts","sourceRoot":"","sources":["../src/TableViewportUpdater.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAa,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EACL,MAAM,EACN,eAAe,EACf,IAAI,EACJ,KAAK,EACL,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAM3C;;;GAGG;AAEH,UAAU,yBAAyB;IACjC,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,cAAc,EAAE,CAAC,YAAY,CAAC,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACpE;AAED,cAAM,oBAAqB,SAAQ,aAAa,CAC9C,yBAAyB,EACzB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;IAEC,MAAM,CAAC,gBAAgB,SAAK;IAE5B,MAAM,CAAC,mBAAmB,SAAK;IAE/B,MAAM,CAAC,YAAY;;;;;;8BAMG,IAAI;;;;;MAKxB;IAEF,iBAAiB,IAAI,IAAI;IAkBzB,kBAAkB,CAAC,SAAS,EAAE,yBAAyB,GAAG,IAAI;IA2C9D,oBAAoB,IAAI,IAAI;IAI5B,YAAY,CAAC,EAAE,yBAAyB,CAAC;IAGzC,mBAAmB,0DAShB;IAGH,kBAAkB,+DACmB,aAAa,EAAE,kBAwBlD;IAEF,iBAAiB,IAAI,IAAI;IAazB,cAAc,uCAEL,MAAM,UACH,MAAM,QACR,MAAM,SACL,MAAM,eACA,MAAM,EAAE,KACpB,IAAI,EA4CP;IAEF,MAAM,IAAI,IAAI;CAGf;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -2,10 +2,8 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
2
2
|
|
|
3
3
|
import { PureComponent } from 'react';
|
|
4
4
|
import memoize from 'memoize-one';
|
|
5
|
-
import PropTypes from 'prop-types';
|
|
6
5
|
import throttle from 'lodash.throttle';
|
|
7
6
|
import { GridUtils } from '@deephaven/grid';
|
|
8
|
-
import { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';
|
|
9
7
|
import Log from '@deephaven/log';
|
|
10
8
|
var log = Log.module('TableViewportUpdater');
|
|
11
9
|
var UPDATE_THROTTLE = 150;
|
|
@@ -15,9 +13,10 @@ var UPDATE_THROTTLE = 150;
|
|
|
15
13
|
*/
|
|
16
14
|
|
|
17
15
|
class TableViewportUpdater extends PureComponent {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
|
|
19
|
+
_defineProperty(this, "subscription", void 0);
|
|
21
20
|
|
|
22
21
|
_defineProperty(this, "getViewportRowRange", memoize((table, top, bottom) => {
|
|
23
22
|
var viewHeight = bottom - top;
|
|
@@ -45,8 +44,37 @@ class TableViewportUpdater extends PureComponent {
|
|
|
45
44
|
return columns;
|
|
46
45
|
}));
|
|
47
46
|
|
|
48
|
-
this
|
|
49
|
-
|
|
47
|
+
_defineProperty(this, "updateViewport", throttle((top, bottom, left, right, viewColumns) => {
|
|
48
|
+
if (bottom < top) {
|
|
49
|
+
log.error('Invalid viewport', top, bottom);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (top === 0 && bottom === 0) {
|
|
54
|
+
log.debug2('Ignoring 0-0 viewport');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
var {
|
|
59
|
+
movedColumns,
|
|
60
|
+
table
|
|
61
|
+
} = this.props;
|
|
62
|
+
var [viewportTop, viewportBottom] = this.getViewportRowRange(table, top, bottom);
|
|
63
|
+
var columns = viewColumns !== null && viewColumns !== void 0 ? viewColumns : this.getViewportColumns(table, left, right, movedColumns);
|
|
64
|
+
log.debug2('Setting Viewport Top:', viewportTop, 'Bottom:', viewportBottom, 'Columns:', columns);
|
|
65
|
+
|
|
66
|
+
if (this.subscription == null) {
|
|
67
|
+
log.debug2('updateViewport creating new subscription');
|
|
68
|
+
this.subscription = table.setViewport(viewportTop, viewportBottom, columns);
|
|
69
|
+
var {
|
|
70
|
+
onSubscription
|
|
71
|
+
} = this.props;
|
|
72
|
+
onSubscription(this.subscription);
|
|
73
|
+
} else {
|
|
74
|
+
log.debug2('updateViewport using existing subscription');
|
|
75
|
+
this.subscription.setViewport(viewportTop, viewportBottom, columns);
|
|
76
|
+
}
|
|
77
|
+
}, UPDATE_THROTTLE));
|
|
50
78
|
}
|
|
51
79
|
|
|
52
80
|
componentDidMount() {
|
|
@@ -108,56 +136,23 @@ class TableViewportUpdater extends PureComponent {
|
|
|
108
136
|
|
|
109
137
|
componentWillUnmount() {
|
|
110
138
|
this.closeSubscription();
|
|
111
|
-
}
|
|
112
|
-
|
|
139
|
+
}
|
|
113
140
|
|
|
114
141
|
closeSubscription() {
|
|
115
142
|
log.debug2('closeSubscription', this.subscription);
|
|
116
143
|
|
|
117
144
|
if (this.subscription) {
|
|
118
145
|
this.subscription.close();
|
|
119
|
-
this.subscription =
|
|
146
|
+
this.subscription = undefined;
|
|
120
147
|
var {
|
|
121
148
|
onSubscription
|
|
122
149
|
} = this.props;
|
|
123
|
-
onSubscription(
|
|
150
|
+
onSubscription();
|
|
124
151
|
}
|
|
125
152
|
|
|
126
153
|
this.updateViewport.cancel();
|
|
127
154
|
}
|
|
128
155
|
|
|
129
|
-
updateViewport(top, bottom, left, right, viewColumns) {
|
|
130
|
-
if (bottom < top) {
|
|
131
|
-
log.error('Invalid viewport', top, bottom);
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
if (top === 0 && bottom === 0) {
|
|
136
|
-
log.debug2('Ignoring 0-0 viewport');
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
var {
|
|
141
|
-
movedColumns,
|
|
142
|
-
table
|
|
143
|
-
} = this.props;
|
|
144
|
-
var [viewportTop, viewportBottom] = this.getViewportRowRange(table, top, bottom);
|
|
145
|
-
var columns = viewColumns !== null && viewColumns !== void 0 ? viewColumns : this.getViewportColumns(table, left, right, movedColumns);
|
|
146
|
-
log.debug2('Setting Viewport Top:', viewportTop, 'Bottom:', viewportBottom, 'Columns:', columns);
|
|
147
|
-
|
|
148
|
-
if (this.subscription == null) {
|
|
149
|
-
log.debug2('updateViewport creating new subscription');
|
|
150
|
-
this.subscription = table.setViewport(viewportTop, viewportBottom, columns);
|
|
151
|
-
var {
|
|
152
|
-
onSubscription
|
|
153
|
-
} = this.props;
|
|
154
|
-
onSubscription(this.subscription);
|
|
155
|
-
} else {
|
|
156
|
-
log.debug2('updateViewport using existing subscription');
|
|
157
|
-
this.subscription.setViewport(viewportTop, viewportBottom, columns);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
156
|
render() {
|
|
162
157
|
return null;
|
|
163
158
|
}
|
|
@@ -168,35 +163,18 @@ _defineProperty(TableViewportUpdater, "ROW_BUFFER_PAGES", 3);
|
|
|
168
163
|
|
|
169
164
|
_defineProperty(TableViewportUpdater, "COLUMN_BUFFER_PAGES", 1);
|
|
170
165
|
|
|
171
|
-
TableViewportUpdater
|
|
172
|
-
table: PropTypes.shape({
|
|
173
|
-
applyFilter: PropTypes.func.isRequired,
|
|
174
|
-
applySort: PropTypes.func.isRequired,
|
|
175
|
-
applyCustomColumns: PropTypes.func.isRequired,
|
|
176
|
-
setViewport: PropTypes.func.isRequired
|
|
177
|
-
}).isRequired,
|
|
178
|
-
top: PropTypes.number,
|
|
179
|
-
bottom: PropTypes.number,
|
|
180
|
-
left: PropTypes.number,
|
|
181
|
-
right: PropTypes.number,
|
|
182
|
-
columns: PropTypes.arrayOf(APIPropTypes.Column),
|
|
183
|
-
filters: PropTypes.arrayOf(PropTypes.shape({})),
|
|
184
|
-
sorts: PropTypes.arrayOf(PropTypes.shape({})),
|
|
185
|
-
customColumns: PropTypes.arrayOf(PropTypes.string),
|
|
186
|
-
movedColumns: PropTypes.arrayOf(PropTypes.shape({})),
|
|
187
|
-
onSubscription: PropTypes.func
|
|
188
|
-
};
|
|
189
|
-
TableViewportUpdater.defaultProps = {
|
|
166
|
+
_defineProperty(TableViewportUpdater, "defaultProps", {
|
|
190
167
|
top: 0,
|
|
191
168
|
bottom: 0,
|
|
192
169
|
left: null,
|
|
193
170
|
right: null,
|
|
194
171
|
columns: null,
|
|
195
|
-
onSubscription: () =>
|
|
172
|
+
onSubscription: () => undefined,
|
|
196
173
|
filters: [],
|
|
197
174
|
sorts: [],
|
|
198
175
|
customColumns: [],
|
|
199
176
|
movedColumns: []
|
|
200
|
-
};
|
|
177
|
+
});
|
|
178
|
+
|
|
201
179
|
export default TableViewportUpdater;
|
|
202
180
|
//# sourceMappingURL=TableViewportUpdater.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/TableViewportUpdater.jsx"],"names":["PureComponent","memoize","PropTypes","throttle","GridUtils","APIPropTypes","Log","log","module","UPDATE_THROTTLE","TableViewportUpdater","constructor","props","table","top","bottom","viewHeight","viewportTop","Math","max","ROW_BUFFER_PAGES","viewportBottom","left","right","movedColumns","viewWidth","viewportLeft","COLUMN_BUFFER_PAGES","viewportRight","min","columns","length","i","modelIndex","getModelIndex","push","updateViewport","bind","subscription","componentDidMount","filters","sorts","customColumns","applyFilter","applySort","applyCustomColumns","componentDidUpdate","prevProps","isFilterChanged","isSortChanged","isCustomColumnsChanged","isTableChanged","closeSubscription","debug","componentWillUnmount","debug2","close","onSubscription","cancel","viewColumns","error","getViewportRowRange","getViewportColumns","setViewport","render","propTypes","shape","func","isRequired","number","arrayOf","Column","string","defaultProps"],"mappings":"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","sourcesContent":["import { PureComponent } from 'react';\nimport memoize from 'memoize-one';\nimport PropTypes from 'prop-types';\nimport throttle from 'lodash.throttle';\nimport { GridUtils } from '@deephaven/grid';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('TableViewportUpdater');\n\nconst UPDATE_THROTTLE = 150;\n\n/**\n * Updates the viewport for an Iris table, for use in a scroll pane.\n * Automatically throttles the viewport requests and buffers above and below.\n */\nclass TableViewportUpdater extends PureComponent {\n // Number of pages to buffer for rows/columns\n static ROW_BUFFER_PAGES = 3;\n\n static COLUMN_BUFFER_PAGES = 1;\n\n constructor(props) {\n super(props);\n\n this.updateViewport = throttle(\n this.updateViewport.bind(this),\n UPDATE_THROTTLE\n );\n\n this.subscription = null;\n }\n\n componentDidMount() {\n const {\n top,\n bottom,\n left,\n right,\n table,\n filters,\n sorts,\n columns,\n customColumns,\n } = this.props;\n table.applyFilter(filters);\n table.applySort(sorts);\n table.applyCustomColumns(customColumns);\n this.updateViewport(top, bottom, left, right, columns);\n }\n\n componentDidUpdate(prevProps) {\n const {\n top,\n bottom,\n left,\n right,\n table,\n filters,\n sorts,\n customColumns,\n columns,\n } = this.props;\n const isFilterChanged = filters !== prevProps.filters;\n const isSortChanged = sorts !== prevProps.sorts;\n const isCustomColumnsChanged = customColumns !== prevProps.customColumns;\n const isTableChanged = table !== prevProps.table;\n if (\n isFilterChanged ||\n isSortChanged ||\n isCustomColumnsChanged ||\n isTableChanged\n ) {\n this.closeSubscription();\n }\n\n if (isFilterChanged || isTableChanged) {\n log.debug('update table filter', filters);\n table.applyFilter(filters);\n }\n\n if (isSortChanged || isTableChanged) {\n log.debug('update table sort', sorts);\n table.applySort(sorts);\n }\n\n if (isCustomColumnsChanged || isTableChanged) {\n log.debug('update table custom columns', customColumns);\n table.applyCustomColumns(customColumns);\n }\n\n this.updateViewport(top, bottom, left, right, columns);\n }\n\n componentWillUnmount() {\n this.closeSubscription();\n }\n\n // eslint-disable-next-line class-methods-use-this\n getViewportRowRange = memoize((table, top, bottom) => {\n const viewHeight = bottom - top;\n const viewportTop = Math.max(\n 0,\n top - viewHeight * TableViewportUpdater.ROW_BUFFER_PAGES\n );\n const viewportBottom =\n bottom + viewHeight * TableViewportUpdater.ROW_BUFFER_PAGES;\n return [viewportTop, viewportBottom];\n });\n\n // eslint-disable-next-line class-methods-use-this\n getViewportColumns = memoize((table, left, right, movedColumns) => {\n if (left == null || right == null) {\n return null;\n }\n\n const viewWidth = right - left;\n const viewportLeft = Math.max(\n 0,\n left - viewWidth * TableViewportUpdater.COLUMN_BUFFER_PAGES\n );\n const viewportRight = Math.min(\n right + viewWidth * TableViewportUpdater.COLUMN_BUFFER_PAGES,\n table.columns.length - 1\n );\n\n // Need to get all the columns from the table model now\n const columns = [];\n for (let i = viewportLeft; i <= viewportRight; i += 1) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n columns.push(table.columns[modelIndex]);\n }\n\n return columns;\n });\n\n closeSubscription() {\n log.debug2('closeSubscription', this.subscription);\n if (this.subscription) {\n this.subscription.close();\n this.subscription = null;\n\n const { onSubscription } = this.props;\n onSubscription(null);\n }\n\n this.updateViewport.cancel();\n }\n\n updateViewport(top, bottom, left, right, viewColumns) {\n if (bottom < top) {\n log.error('Invalid viewport', top, bottom);\n return;\n }\n\n if (top === 0 && bottom === 0) {\n log.debug2('Ignoring 0-0 viewport');\n return;\n }\n\n const { movedColumns, table } = this.props;\n const [viewportTop, viewportBottom] = this.getViewportRowRange(\n table,\n top,\n bottom\n );\n const columns =\n viewColumns ?? this.getViewportColumns(table, left, right, movedColumns);\n log.debug2(\n 'Setting Viewport Top:',\n viewportTop,\n 'Bottom:',\n viewportBottom,\n 'Columns:',\n columns\n );\n if (this.subscription == null) {\n log.debug2('updateViewport creating new subscription');\n this.subscription = table.setViewport(\n viewportTop,\n viewportBottom,\n columns\n );\n\n const { onSubscription } = this.props;\n onSubscription(this.subscription);\n } else {\n log.debug2('updateViewport using existing subscription');\n this.subscription.setViewport(viewportTop, viewportBottom, columns);\n }\n }\n\n render() {\n return null;\n }\n}\n\nTableViewportUpdater.propTypes = {\n table: PropTypes.shape({\n applyFilter: PropTypes.func.isRequired,\n applySort: PropTypes.func.isRequired,\n applyCustomColumns: PropTypes.func.isRequired,\n setViewport: PropTypes.func.isRequired,\n }).isRequired,\n top: PropTypes.number,\n bottom: PropTypes.number,\n left: PropTypes.number,\n right: PropTypes.number,\n columns: PropTypes.arrayOf(APIPropTypes.Column),\n filters: PropTypes.arrayOf(PropTypes.shape({})),\n sorts: PropTypes.arrayOf(PropTypes.shape({})),\n customColumns: PropTypes.arrayOf(PropTypes.string),\n movedColumns: PropTypes.arrayOf(PropTypes.shape({})),\n onSubscription: PropTypes.func,\n};\n\nTableViewportUpdater.defaultProps = {\n top: 0,\n bottom: 0,\n left: null,\n right: null,\n columns: null,\n onSubscription: () => {},\n filters: [],\n sorts: [],\n customColumns: [],\n movedColumns: [],\n};\n\nexport default TableViewportUpdater;\n"],"file":"TableViewportUpdater.js"}
|
|
1
|
+
{"version":3,"sources":["../src/TableViewportUpdater.tsx"],"names":["PureComponent","memoize","throttle","GridUtils","Log","log","module","UPDATE_THROTTLE","TableViewportUpdater","table","top","bottom","viewHeight","viewportTop","Math","max","ROW_BUFFER_PAGES","viewportBottom","left","right","movedColumns","viewWidth","viewportLeft","COLUMN_BUFFER_PAGES","viewportRight","min","columns","length","i","modelIndex","getModelIndex","push","viewColumns","error","debug2","props","getViewportRowRange","getViewportColumns","subscription","setViewport","onSubscription","componentDidMount","filters","sorts","customColumns","applyFilter","applySort","applyCustomColumns","updateViewport","componentDidUpdate","prevProps","isFilterChanged","isSortChanged","isCustomColumnsChanged","isTableChanged","closeSubscription","debug","componentWillUnmount","close","undefined","cancel","render"],"mappings":"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","sourcesContent":["import { PureComponent } from 'react';\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport { GridUtils, MoveOperation } from '@deephaven/grid';\nimport {\n Column,\n FilterCondition,\n Sort,\n Table,\n TableViewportSubscription,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { ColumnName } from './CommonTypes';\n\nconst log = Log.module('TableViewportUpdater');\n\nconst UPDATE_THROTTLE = 150;\n\n/**\n * Updates the viewport for an Iris table, for use in a scroll pane.\n * Automatically throttles the viewport requests and buffers above and below.\n */\n\ninterface TableViewportUpdaterProps {\n table: Table;\n top: number;\n bottom: number;\n left: number;\n right: number;\n columns: Column[];\n filters: FilterCondition[];\n sorts: Sort[];\n customColumns: ColumnName[];\n movedColumns: MoveOperation[];\n onSubscription: (subscription?: TableViewportSubscription) => void;\n}\n\nclass TableViewportUpdater extends PureComponent<\n TableViewportUpdaterProps,\n Record<string, never>\n> {\n // Number of pages to buffer for rows/columns\n static ROW_BUFFER_PAGES = 3;\n\n static COLUMN_BUFFER_PAGES = 1;\n\n static defaultProps = {\n top: 0,\n bottom: 0,\n left: null,\n right: null,\n columns: null,\n onSubscription: (): void => undefined,\n filters: [],\n sorts: [],\n customColumns: [],\n movedColumns: [],\n };\n\n componentDidMount(): void {\n const {\n top,\n bottom,\n left,\n right,\n table,\n filters,\n sorts,\n columns,\n customColumns,\n } = this.props;\n table.applyFilter(filters);\n table.applySort(sorts);\n table.applyCustomColumns(customColumns);\n this.updateViewport(top, bottom, left, right, columns);\n }\n\n componentDidUpdate(prevProps: TableViewportUpdaterProps): void {\n const {\n top,\n bottom,\n left,\n right,\n table,\n filters,\n sorts,\n customColumns,\n columns,\n } = this.props;\n const isFilterChanged = filters !== prevProps.filters;\n const isSortChanged = sorts !== prevProps.sorts;\n const isCustomColumnsChanged = customColumns !== prevProps.customColumns;\n const isTableChanged = table !== prevProps.table;\n if (\n isFilterChanged ||\n isSortChanged ||\n isCustomColumnsChanged ||\n isTableChanged\n ) {\n this.closeSubscription();\n }\n\n if (isFilterChanged || isTableChanged) {\n log.debug('update table filter', filters);\n table.applyFilter(filters);\n }\n\n if (isSortChanged || isTableChanged) {\n log.debug('update table sort', sorts);\n table.applySort(sorts);\n }\n\n if (isCustomColumnsChanged || isTableChanged) {\n log.debug('update table custom columns', customColumns);\n table.applyCustomColumns(customColumns);\n }\n\n this.updateViewport(top, bottom, left, right, columns);\n }\n\n componentWillUnmount(): void {\n this.closeSubscription();\n }\n\n subscription?: TableViewportSubscription;\n\n // eslint-disable-next-line class-methods-use-this\n getViewportRowRange = memoize((table, top, bottom) => {\n const viewHeight = bottom - top;\n const viewportTop = Math.max(\n 0,\n top - viewHeight * TableViewportUpdater.ROW_BUFFER_PAGES\n );\n const viewportBottom =\n bottom + viewHeight * TableViewportUpdater.ROW_BUFFER_PAGES;\n return [viewportTop, viewportBottom];\n });\n\n // eslint-disable-next-line class-methods-use-this\n getViewportColumns = memoize(\n (table, left, right, movedColumns: MoveOperation[]) => {\n if (left == null || right == null) {\n return null;\n }\n\n const viewWidth = right - left;\n const viewportLeft = Math.max(\n 0,\n left - viewWidth * TableViewportUpdater.COLUMN_BUFFER_PAGES\n );\n const viewportRight = Math.min(\n right + viewWidth * TableViewportUpdater.COLUMN_BUFFER_PAGES,\n table.columns.length - 1\n );\n\n // Need to get all the columns from the table model now\n const columns = [];\n for (let i = viewportLeft; i <= viewportRight; i += 1) {\n const modelIndex = GridUtils.getModelIndex(i, movedColumns);\n columns.push(table.columns[modelIndex]);\n }\n\n return columns;\n }\n );\n\n closeSubscription(): void {\n log.debug2('closeSubscription', this.subscription);\n if (this.subscription) {\n this.subscription.close();\n this.subscription = undefined;\n\n const { onSubscription } = this.props;\n onSubscription();\n }\n\n this.updateViewport.cancel();\n }\n\n updateViewport = throttle(\n (\n top: number,\n bottom: number,\n left: number,\n right: number,\n viewColumns: Column[]\n ): void => {\n if (bottom < top) {\n log.error('Invalid viewport', top, bottom);\n return;\n }\n\n if (top === 0 && bottom === 0) {\n log.debug2('Ignoring 0-0 viewport');\n return;\n }\n\n const { movedColumns, table } = this.props;\n const [viewportTop, viewportBottom] = this.getViewportRowRange(\n table,\n top,\n bottom\n );\n const columns =\n viewColumns ??\n this.getViewportColumns(table, left, right, movedColumns);\n log.debug2(\n 'Setting Viewport Top:',\n viewportTop,\n 'Bottom:',\n viewportBottom,\n 'Columns:',\n columns\n );\n if (this.subscription == null) {\n log.debug2('updateViewport creating new subscription');\n this.subscription = table.setViewport(\n viewportTop,\n viewportBottom,\n columns\n );\n\n const { onSubscription } = this.props;\n onSubscription(this.subscription);\n } else {\n log.debug2('updateViewport using existing subscription');\n this.subscription.setViewport(viewportTop, viewportBottom, columns);\n }\n },\n UPDATE_THROTTLE\n );\n\n render(): null {\n return null;\n }\n}\n\nexport default TableViewportUpdater;\n"],"file":"TableViewportUpdater.js"}
|
|
@@ -1,44 +1,36 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="lodash" />
|
|
2
|
+
import { PureComponent } from 'react';
|
|
3
|
+
import { EventListener, FilterCondition, RemoverFn, Sort, Table } from '@deephaven/jsapi-shim';
|
|
4
|
+
interface TreeTableViewportUpdaterProps {
|
|
5
|
+
table: Table;
|
|
6
|
+
top: number;
|
|
7
|
+
bottom: number;
|
|
8
|
+
filters: FilterCondition[];
|
|
9
|
+
sorts: Sort[];
|
|
10
|
+
updateInterval: number;
|
|
11
|
+
onViewportUpdate: EventListener;
|
|
12
|
+
}
|
|
2
13
|
/**
|
|
3
14
|
* Updates the viewport of a TreeTable for use in a scroll pane.
|
|
4
15
|
* Automatically throttles the viewport requests and buffers above and below.
|
|
5
16
|
*/
|
|
6
|
-
declare class TreeTableViewportUpdater extends PureComponent<
|
|
17
|
+
declare class TreeTableViewportUpdater extends PureComponent<TreeTableViewportUpdaterProps, Record<string, never>> {
|
|
7
18
|
static UPDATE_INTERVAL: number;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
19
|
+
static defaultProps: {
|
|
20
|
+
top: number;
|
|
21
|
+
bottom: number;
|
|
22
|
+
onViewportUpdate: () => void;
|
|
23
|
+
filters: never[];
|
|
24
|
+
sorts: never[];
|
|
25
|
+
updateInterval: number;
|
|
26
|
+
};
|
|
27
|
+
constructor(props: TreeTableViewportUpdaterProps);
|
|
28
|
+
componentDidMount(): void;
|
|
29
|
+
componentDidUpdate(prevProps: TreeTableViewportUpdaterProps): void;
|
|
30
|
+
componentWillUnmount(): void;
|
|
31
|
+
listenerCleanup: RemoverFn | null;
|
|
32
|
+
updateViewport: import("lodash").DebouncedFunc<(top: number, bottom: number) => void>;
|
|
33
|
+
render(): null;
|
|
11
34
|
}
|
|
12
|
-
|
|
13
|
-
namespace propTypes {
|
|
14
|
-
const table: PropTypes.Validator<PropTypes.InferProps<{
|
|
15
|
-
addEventListener: PropTypes.Validator<(...args: any[]) => any>;
|
|
16
|
-
applyFilter: PropTypes.Validator<(...args: any[]) => any>;
|
|
17
|
-
applySort: PropTypes.Validator<(...args: any[]) => any>;
|
|
18
|
-
setViewport: PropTypes.Validator<(...args: any[]) => any>;
|
|
19
|
-
}>>;
|
|
20
|
-
const top: PropTypes.Requireable<number>;
|
|
21
|
-
const bottom: PropTypes.Requireable<number>;
|
|
22
|
-
const filters: PropTypes.Requireable<(PropTypes.InferProps<{}> | null | undefined)[]>;
|
|
23
|
-
const sorts: PropTypes.Requireable<(PropTypes.InferProps<{}> | null | undefined)[]>;
|
|
24
|
-
const updateInterval: PropTypes.Requireable<number>;
|
|
25
|
-
const onViewportUpdate: PropTypes.Requireable<(...args: any[]) => any>;
|
|
26
|
-
}
|
|
27
|
-
namespace defaultProps {
|
|
28
|
-
const top_1: number;
|
|
29
|
-
export { top_1 as top };
|
|
30
|
-
const bottom_1: number;
|
|
31
|
-
export { bottom_1 as bottom };
|
|
32
|
-
export function onViewportUpdate_1(): void;
|
|
33
|
-
export { onViewportUpdate_1 as onViewportUpdate };
|
|
34
|
-
const filters_1: never[];
|
|
35
|
-
export { filters_1 as filters };
|
|
36
|
-
const sorts_1: never[];
|
|
37
|
-
export { sorts_1 as sorts };
|
|
38
|
-
import updateInterval_1 = TreeTableViewportUpdater.UPDATE_INTERVAL;
|
|
39
|
-
export { updateInterval_1 as updateInterval };
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
import { PureComponent } from "react";
|
|
43
|
-
import PropTypes from "prop-types";
|
|
35
|
+
export default TreeTableViewportUpdater;
|
|
44
36
|
//# sourceMappingURL=TreeTableViewportUpdater.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeTableViewportUpdater.d.ts","sourceRoot":"","sources":["../src/TreeTableViewportUpdater.
|
|
1
|
+
{"version":3,"file":"TreeTableViewportUpdater.d.ts","sourceRoot":"","sources":["../src/TreeTableViewportUpdater.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAW,EACT,aAAa,EACb,eAAe,EACf,SAAS,EACT,IAAI,EACJ,KAAK,EACN,MAAM,uBAAuB,CAAC;AAO/B,UAAU,6BAA6B;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,aAAa,CAAC;CACjC;AAED;;;GAGG;AACH,cAAM,wBAAyB,SAAQ,aAAa,CAClD,6BAA6B,EAC7B,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CACtB;IACC,MAAM,CAAC,eAAe,SAAQ;IAE9B,MAAM,CAAC,YAAY;;;gCAGK,IAAI;;;;MAI1B;gBAEU,KAAK,EAAE,6BAA6B;IAOhD,iBAAiB,IAAI,IAAI;IAQzB,kBAAkB,CAAC,SAAS,EAAE,6BAA6B,GAAG,IAAI;IAelE,oBAAoB,IAAI,IAAI;IAO5B,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC;IAElC,cAAc,uCAAkB,MAAM,UAAU,MAAM,KAAG,IAAI,EAgCzC;IAEpB,MAAM,IAAI,IAAI;CAGf;AAED,eAAe,wBAAwB,CAAC"}
|