@deephaven/iris-grid 0.59.0 → 0.59.1-beta.3
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/EmptyIrisGridModel.d.ts +62 -0
- package/dist/EmptyIrisGridModel.d.ts.map +1 -0
- package/dist/EmptyIrisGridModel.js +168 -0
- package/dist/EmptyIrisGridModel.js.map +1 -0
- package/dist/IrisGrid.d.ts +17 -14
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +151 -146
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridModel.d.ts +5 -4
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +2 -1
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.d.ts +2 -2
- package/dist/IrisGridModelFactory.d.ts.map +1 -1
- package/dist/IrisGridModelFactory.js +1 -1
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +3 -1
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js +8 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.css +14 -36
- package/dist/IrisGridPartitionSelector.css.map +1 -1
- package/dist/IrisGridPartitionSelector.d.ts +39 -38
- package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
- package/dist/IrisGridPartitionSelector.js +253 -227
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridPartitionedTableModel.d.ts +25 -0
- package/dist/IrisGridPartitionedTableModel.d.ts.map +1 -0
- package/dist/IrisGridPartitionedTableModel.js +74 -0
- package/dist/IrisGridPartitionedTableModel.js.map +1 -0
- package/dist/IrisGridProxyModel.d.ts +18 -4
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +84 -5
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +14 -4
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +96 -21
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +7 -7
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +1 -1
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +2 -4
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +7 -7
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +33 -34
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingPartitionError.d.ts +6 -0
- package/dist/MissingPartitionError.d.ts.map +1 -0
- package/dist/MissingPartitionError.js +14 -0
- package/dist/MissingPartitionError.js.map +1 -0
- package/dist/PartitionedGridModel.d.ts +38 -0
- package/dist/PartitionedGridModel.d.ts.map +1 -0
- package/dist/PartitionedGridModel.js +15 -0
- package/dist/PartitionedGridModel.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +16 -15
- package/dist/PartitionSelectorSearch.css +0 -23
- package/dist/PartitionSelectorSearch.css.map +0 -1
- package/dist/PartitionSelectorSearch.d.ts +0 -78
- package/dist/PartitionSelectorSearch.d.ts.map +0 -1
- package/dist/PartitionSelectorSearch.js +0 -343
- package/dist/PartitionSelectorSearch.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridPartitionSelector.js","names":["React","Component","FontAwesomeIcon","DropdownMenu","Tooltip","vsTriangleDown","vsClose","Log","debounce","TableUtils","PartitionSelectorSearch","IrisGridUtils","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","PARTITION_CHANGE_DEBOUNCE_MS","IrisGridPartitionSelector","constructor","props","_defineProperty","sendUpdate","handleCloseClick","bind","handleIgnoreClick","handlePartitionChange","handlePartitionSelect","handlePartitionListResized","handleSearchOpened","handleSearchClosed","dh","columns","partitions","tableUtils","searchMenu","map","selectorSearch","state","partitionTables","componentDidMount","_this","_asyncToGenerator","table","Promise","all","_ref","_","i","selectDistinct","slice","_x","_x2","apply","arguments","updatePartitionFilters","componentWillUnmount","forEach","close","debounceUpdate","cancel","debug2","sendDone","sendFetchAll","index","event","value","partition","target","newPartitions","isCharType","type","length","charCodeAt","toString","setState","selectedMenu","closeMenu","scheduleUpdate","applyFilter","selectedSearch","focus","flush","onDone","onChange","onFetchAll","getDisplayValue","column","String","fromCharCode","parseInt","convertValueToText","_this2","_partitionTables","getFormattedString","partitionFilters","_partitionTables$i","partitionColumn","partitionText","name","partitionFilter","makeQuickFilterFromComponent","push","render","partitionSelectorSearch","onSelect","onListResized","ref","concat","partitionSelectors","_partitionSelectorSea","children","className","e","icon","actions","menuElement","undefined","onMenuOpened","onMenuClosed","onClick"],"sources":["../src/IrisGridPartitionSelector.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { DropdownMenu, Tooltip } from '@deephaven/components';\nimport { vsTriangleDown, vsClose } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport debounce from 'lodash.debounce';\nimport type { Column, dh as DhType, Table } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport PartitionSelectorSearch from './PartitionSelectorSearch';\nimport './IrisGridPartitionSelector.scss';\nimport IrisGridUtils from './IrisGridUtils';\n\nconst log = Log.module('IrisGridPartitionSelector');\n\nconst PARTITION_CHANGE_DEBOUNCE_MS = 250;\ninterface IrisGridPartitionSelectorProps<T> {\n dh: DhType;\n getFormattedString: (value: T, type: string, name: string) => string;\n table: Table;\n columns: Column[];\n partitions: (string | null)[];\n onFetchAll: () => void;\n onDone: (event?: React.MouseEvent<HTMLButtonElement>) => void;\n onChange: (partitions: (string | null)[]) => void;\n}\ninterface IrisGridPartitionSelectorState {\n partitions: (string | null)[];\n partitionTables: Table[] | null;\n}\nclass IrisGridPartitionSelector<T> extends Component<\n IrisGridPartitionSelectorProps<T>,\n IrisGridPartitionSelectorState\n> {\n static defaultProps = {\n onChange: (): void => undefined,\n onFetchAll: (): void => undefined,\n onDone: (): void => undefined,\n partitions: [],\n };\n\n constructor(props: IrisGridPartitionSelectorProps<T>) {\n super(props);\n\n this.handleCloseClick = this.handleCloseClick.bind(this);\n this.handleIgnoreClick = this.handleIgnoreClick.bind(this);\n this.handlePartitionChange = this.handlePartitionChange.bind(this);\n this.handlePartitionSelect = this.handlePartitionSelect.bind(this);\n this.handlePartitionListResized =\n this.handlePartitionListResized.bind(this);\n this.handleSearchOpened = this.handleSearchOpened.bind(this);\n this.handleSearchClosed = this.handleSearchClosed.bind(this);\n\n const { dh, columns, partitions } = props;\n this.tableUtils = new TableUtils(dh);\n this.searchMenu = columns.map(() => null);\n this.selectorSearch = columns.map(() => null);\n\n this.state = {\n partitions,\n partitionTables: null,\n };\n }\n\n async componentDidMount(): Promise<void> {\n const { columns, table } = this.props;\n const { partitions } = this.state;\n\n const partitionTables = await Promise.all(\n columns.map(async (_, i) => table.selectDistinct(columns.slice(0, i + 1)))\n );\n this.updatePartitionFilters(partitions, partitionTables);\n }\n\n componentWillUnmount(): void {\n const { partitionTables } = this.state;\n partitionTables?.forEach(table => table.close());\n this.debounceUpdate.cancel();\n }\n\n tableUtils: TableUtils;\n\n searchMenu: (DropdownMenu | null)[];\n\n selectorSearch: (PartitionSelectorSearch<T> | null)[];\n\n handleCloseClick(): void {\n log.debug2('handleCloseClick');\n\n this.sendDone();\n }\n\n handleIgnoreClick(): void {\n log.debug2('handleIgnoreClick');\n\n this.sendFetchAll();\n }\n\n handlePartitionChange(\n index: number,\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n log.debug2('handlePartitionChange');\n\n const { columns } = this.props;\n const { partitions, partitionTables } = this.state;\n const { value: partition } = event.target;\n\n const newPartitions = [...partitions];\n newPartitions[index] =\n TableUtils.isCharType(columns[index].type) && partition.length > 0\n ? partition.charCodeAt(0).toString()\n : partition;\n if (partitionTables) {\n this.updatePartitionFilters(newPartitions, partitionTables);\n }\n\n this.setState({\n partitions: newPartitions,\n });\n\n this.debounceUpdate();\n }\n\n handlePartitionSelect(index: number, partition: string): void {\n const { partitions, partitionTables } = this.state;\n const selectedMenu = this.searchMenu[index];\n if (selectedMenu) {\n selectedMenu.closeMenu();\n }\n\n const newPartitions = [...partitions];\n newPartitions[index] = partition;\n if (partitionTables) {\n this.updatePartitionFilters(newPartitions, partitionTables);\n }\n\n this.setState({ partitions: newPartitions }, () => {\n this.sendUpdate();\n });\n }\n\n handlePartitionListResized(index: number): void {\n const selectedMenu = this.searchMenu[index];\n if (selectedMenu) {\n selectedMenu.scheduleUpdate();\n }\n }\n\n handleSearchClosed(): void {\n // Reset the table filter so it's ready next time user opens search\n const { table } = this.props;\n table.applyFilter([]);\n }\n\n handleSearchOpened(index: number): void {\n const selectedSearch = this.selectorSearch[index];\n if (selectedSearch) {\n selectedSearch.focus();\n }\n }\n\n debounceUpdate = debounce((): void => {\n this.sendUpdate();\n }, PARTITION_CHANGE_DEBOUNCE_MS);\n\n sendDone(): void {\n this.debounceUpdate.flush();\n\n const { onDone } = this.props;\n onDone();\n }\n\n sendUpdate(): void {\n log.debug2('sendUpdate');\n\n const { onChange } = this.props;\n const { partitions } = this.state;\n onChange(partitions);\n }\n\n sendFetchAll(): void {\n log.debug2('sendFetchAll');\n\n this.debounceUpdate.cancel();\n\n const { onFetchAll } = this.props;\n onFetchAll();\n }\n\n getDisplayValue(column: Column, index: number): string {\n const { partitions } = this.state;\n const partition = partitions[index];\n if (partition == null) {\n return '';\n }\n if (TableUtils.isCharType(column.type) && partition.toString().length > 0) {\n return String.fromCharCode(parseInt(partition, 10));\n }\n return IrisGridUtils.convertValueToText(partition, column.type);\n }\n\n async updatePartitionFilters(\n partitions: (string | null)[],\n partitionTables: Table[]\n ): Promise<void> {\n const { columns, getFormattedString } = this.props;\n\n const partitionFilters = [];\n for (let i = 0; i < columns.length - 1; i += 1) {\n const partition = partitions[i];\n const partitionColumn = columns[i];\n\n partitionTables[i]?.applyFilter(partitionFilters);\n if (\n partition !== null &&\n !(TableUtils.isCharType(partitionColumn.type) && partition === '')\n ) {\n const partitionText = TableUtils.isCharType(partitionColumn.type)\n ? getFormattedString(\n partition as T,\n partitionColumn.type,\n partitionColumn.name\n )\n : partition;\n const partitionFilter = this.tableUtils.makeQuickFilterFromComponent(\n partitionColumn,\n partitionText\n );\n if (partitionFilter !== null) {\n partitionFilters.push(partitionFilter);\n }\n }\n }\n partitionTables[partitionTables.length - 1]?.applyFilter(partitionFilters);\n this.setState({ partitionTables });\n }\n\n render(): JSX.Element {\n const { columns, dh, getFormattedString, onDone } = this.props;\n const { partitionTables } = this.state;\n\n const partitionSelectorSearch = columns.map(\n (column, index) =>\n partitionTables && (\n <PartitionSelectorSearch\n dh={dh}\n key={`search-${column.name}`}\n column={column}\n getFormattedString={getFormattedString}\n table={partitionTables[index]}\n onSelect={(partition: string) =>\n this.handlePartitionSelect(index, partition)\n }\n onListResized={() => this.handlePartitionListResized(index)}\n ref={selectorSearch => {\n this.selectorSearch[index] = selectorSearch;\n }}\n />\n )\n );\n const partitionSelectors = columns.map((column, index) => (\n <>\n <div className=\"status-message\">\n <span>{column.name}: </span>\n </div>\n <div className=\"input-group\">\n <input\n type=\"text\"\n value={this.getDisplayValue(column, index)}\n onChange={e => {\n this.handlePartitionChange(index, e);\n }}\n className=\"form-control input-partition\"\n />\n <div className=\"input-group-append\">\n <button type=\"button\" className=\"btn btn-outline-primary\">\n <FontAwesomeIcon icon={vsTriangleDown} />\n <Tooltip>Partitions</Tooltip>\n <DropdownMenu\n ref={searchMenu => {\n this.searchMenu[index] = searchMenu;\n }}\n actions={[\n { menuElement: partitionSelectorSearch[index] ?? undefined },\n ]}\n onMenuOpened={() => {\n this.handleSearchOpened(index);\n }}\n onMenuClosed={this.handleSearchClosed}\n />\n </button>\n </div>\n </div>\n <div className=\"iris-grid-partition-selector-spacer\" />\n </>\n ));\n return (\n <div className=\"iris-grid-partition-selector\">\n {partitionSelectors}\n <button\n type=\"button\"\n className=\"btn btn-outline-primary btn-ignore\"\n onClick={this.handleIgnoreClick}\n >\n Ignore & Fetch All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon btn-close\"\n onClick={onDone}\n >\n <FontAwesomeIcon icon={vsClose} />\n </button>\n </div>\n );\n }\n}\n\nexport default IrisGridPartitionSelector;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGridPartitionSelector.js","names":["React","Component","memoizee","FontAwesomeIcon","Button","vsChevronRight","vsMerge","vsKey","Log","TableDropdown","TableUtils","assertNotNull","Pending","PromiseUtils","jsx","_jsx","jsxs","_jsxs","log","module","IrisGridPartitionSelector","constructor","props","_defineProperty","index","value","handlePartitionSelect","getDisplayValue","handleKeyTableClick","bind","handleMergeClick","model","tableUtils","dh","pending","state","isLoading","keysTable","partitionFilters","partitionTables","componentDidMount","_this","_asyncToGenerator","add","partitionKeysTable","then","keyTable","sorts","partitionColumns","map","column","sort","desc","applySort","t","close","Promise","all","_ref","_","i","selectDistinct","slice","_x","_x2","apply","arguments","getPartitionFilters","setState","e","isCanceled","componentDidUpdate","prevProps","partitionConfig","prevConfig","updatePartitionFilters","componentWillUnmount","cancel","forEach","table","debug2","newPartitionConfig","_objectSpread","mode","sendUpdate","selectedValue","_this2","debug","newPartitions","partitions","length","copy","tCopy","partition","partitionColumn","columns","filter","eq","makeFilterRawValue","type","applyFilter","setViewport","data","getViewportData","newConfig","rows","get","error","onChange","isCharType","toString","String","fromCharCode","parseInt","displayString","name","Error","concat","push","previousFilter","previousPartition","previousColumn","partitionFilter","render","partitionSelectors","_partitionTables$inde","className","children","getCachedChangeCallback","undefined","disabled","formatValue","getCachedFormatValueCallback","icon","onClick","kind","tooltip","active","rotation"],"sources":["../src/IrisGridPartitionSelector.tsx"],"sourcesContent":["import React, { Component } from 'react';\nimport memoizee from 'memoizee';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button } from '@deephaven/components';\nimport { vsChevronRight, vsMerge, vsKey } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport { TableDropdown } from '@deephaven/jsapi-components';\nimport type { FilterCondition, Table } from '@deephaven/jsapi-types';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport { assertNotNull, Pending, PromiseUtils } from '@deephaven/utils';\nimport './IrisGridPartitionSelector.scss';\nimport { PartitionConfig, PartitionedGridModel } from './PartitionedGridModel';\n\nconst log = Log.module('IrisGridPartitionSelector');\n\ninterface IrisGridPartitionSelectorProps {\n model: PartitionedGridModel;\n partitionConfig: PartitionConfig;\n onChange: (partitionConfig: PartitionConfig) => void;\n}\ninterface IrisGridPartitionSelectorState {\n isLoading: boolean;\n\n keysTable: Table | null;\n\n partitionTables: Table[] | null;\n\n /** The filters to apply to each partition table */\n partitionFilters: FilterCondition[][] | null;\n}\nclass IrisGridPartitionSelector extends Component<\n IrisGridPartitionSelectorProps,\n IrisGridPartitionSelectorState\n> {\n constructor(props: IrisGridPartitionSelectorProps) {\n super(props);\n\n this.handleKeyTableClick = this.handleKeyTableClick.bind(this);\n this.handleMergeClick = this.handleMergeClick.bind(this);\n this.handlePartitionSelect = this.handlePartitionSelect.bind(this);\n\n const { model } = props;\n this.tableUtils = new TableUtils(model.dh);\n this.pending = new Pending();\n\n this.state = {\n // We start be loading the partition tables, so we should be in a loading state\n isLoading: true,\n\n keysTable: null,\n partitionFilters: null,\n partitionTables: null,\n };\n }\n\n async componentDidMount(): Promise<void> {\n const { model } = this.props;\n\n try {\n const keysTable = await this.pending.add(\n model.partitionKeysTable().then(keyTable => {\n const sorts = model.partitionColumns.map(column =>\n column.sort().desc()\n );\n keyTable.applySort(sorts);\n return keyTable;\n }),\n t => t.close()\n );\n\n const partitionTables = await Promise.all(\n model.partitionColumns.map(async (_, i) =>\n this.pending.add(\n keysTable.selectDistinct(model.partitionColumns.slice(0, i + 1)),\n t => t.close()\n )\n )\n );\n\n const partitionFilters = this.getPartitionFilters(partitionTables);\n this.setState({\n isLoading: false,\n keysTable,\n partitionFilters,\n partitionTables,\n });\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n // Just re-throw the error if it's not a cancel\n throw e;\n }\n }\n }\n\n componentDidUpdate(prevProps: IrisGridPartitionSelectorProps): void {\n const { partitionConfig: prevConfig } = prevProps;\n\n const { partitionConfig } = this.props;\n\n if (prevConfig !== partitionConfig) {\n this.updatePartitionFilters();\n }\n }\n\n componentWillUnmount(): void {\n this.pending.cancel();\n\n const { keysTable, partitionTables } = this.state;\n keysTable?.close();\n partitionTables?.forEach(table => table.close());\n }\n\n pending: Pending;\n\n tableUtils: TableUtils;\n\n handleKeyTableClick(): void {\n log.debug2('handleKeyTableClick');\n\n const { partitionConfig } = this.props;\n const newPartitionConfig = { ...partitionConfig };\n // Toggle between Keys and Partition mode\n newPartitionConfig.mode =\n partitionConfig.mode === 'keys' ? 'partition' : 'keys';\n this.sendUpdate(newPartitionConfig);\n }\n\n handleMergeClick(): void {\n log.debug2('handleMergeClick');\n\n const { partitionConfig } = this.props;\n const newPartitionConfig = { ...partitionConfig };\n // Toggle between Merged and Partition mode\n newPartitionConfig.mode =\n partitionConfig.mode === 'merged' ? 'partition' : 'merged';\n this.sendUpdate(newPartitionConfig);\n }\n\n /**\n * Handles when a partition dropdown selection is changed. Will send an update with the new partition config\n * @param index Index of the partition column that was changed\n * @param selectedValue Selected value of the partition column\n */\n async handlePartitionSelect(\n index: number,\n selectedValue: unknown\n ): Promise<void> {\n const { model, partitionConfig: prevConfig } = this.props;\n\n log.debug('handlePartitionSelect', index, selectedValue, prevConfig);\n\n const newPartitions = [...prevConfig.partitions];\n newPartitions[index] = selectedValue;\n\n // If it's the last partition changed, we know it's already a valid value, just emit it\n if (index === model.partitionColumns.length - 1) {\n this.sendUpdate({ partitions: newPartitions, mode: 'partition' });\n return;\n }\n\n const { keysTable } = this.state;\n // Otherwise, we need to get the value from a filtered key table\n assertNotNull(keysTable);\n try {\n this.setState({ isLoading: true });\n const t = await this.pending.add(keysTable.copy(), tCopy =>\n tCopy.close()\n );\n\n // Apply our partition filters, and just get the first value\n const partitionFilters = newPartitions\n .slice(0, index + 1)\n .map((partition, i) => {\n const partitionColumn = t.columns[i];\n return partitionColumn\n .filter()\n .eq(\n this.tableUtils.makeFilterRawValue(\n partitionColumn.type,\n partition\n )\n );\n });\n t.applyFilter(partitionFilters);\n t.setViewport(0, 0, t.columns);\n const data = await this.pending.add(t.getViewportData());\n const newConfig: PartitionConfig = {\n partitions: t.columns.map(column => data.rows[0].get(column)),\n mode: 'partition',\n };\n t.close();\n this.sendUpdate(newConfig);\n } catch (e) {\n if (!PromiseUtils.isCanceled(e)) {\n log.error('Unable to get partition tables', e);\n }\n } finally {\n this.setState({ isLoading: false });\n }\n }\n\n sendUpdate(partitionConfig: PartitionConfig): void {\n log.debug2('sendUpdate', partitionConfig);\n\n const { onChange } = this.props;\n onChange(partitionConfig);\n }\n\n /**\n * Calls model.displayString with a special character case\n * @param index The index of the partition column to get the display value for\n * @param value The partition value to get the display value for\n */\n getDisplayValue(index: number, value: unknown): string {\n const { model } = this.props;\n\n if (value == null || value === '') {\n return '';\n }\n const column = model.partitionColumns[index];\n if (TableUtils.isCharType(column.type) && value.toString().length > 0) {\n return String.fromCharCode(parseInt(value.toString(), 10));\n }\n return model.displayString(value, column.type, column.name);\n }\n\n /**\n * Update the filters on the partition dropdown tables\n */\n updatePartitionFilters(): void {\n const { partitionTables } = this.state;\n assertNotNull(partitionTables);\n\n const { partitionConfig } = this.props;\n const { mode } = partitionConfig;\n log.debug('updatePartitionFilters', partitionConfig);\n if (mode !== 'partition') {\n // We only need to update the filters if the mode is `partitions`\n // In the other modes, we disable the dropdowns anyway\n return;\n }\n\n const partitionFilters = this.getPartitionFilters(partitionTables);\n this.setState({ partitionFilters });\n }\n\n getPartitionFilters(partitionTables: Table[]): FilterCondition[][] {\n const { model, partitionConfig } = this.props;\n const { partitions } = partitionConfig;\n log.debug('getPartitionFilters', partitionConfig);\n\n if (partitions.length !== partitionTables.length) {\n throw new Error(\n `Invalid partition config set. Expected ${partitionTables.length} partitions, but got ${partitions.length}`\n );\n }\n\n // The filters are applied in order, so we need to build up the filters for each partition\n const partitionFilters: FilterCondition[][] = [];\n for (let i = 0; i < partitions.length; i += 1) {\n if (i === 0) {\n // There's no reason to ever filter the first table\n partitionFilters.push([]);\n } else {\n const previousFilter = partitionFilters[i - 1];\n const previousPartition = partitions[i - 1];\n const previousColumn = model.partitionColumns[i - 1];\n const partitionFilter = [\n ...previousFilter,\n previousColumn\n .filter()\n .eq(\n this.tableUtils.makeFilterRawValue(\n previousColumn.type,\n previousPartition\n )\n ),\n ];\n partitionFilters.push(partitionFilter);\n }\n }\n return partitionFilters;\n }\n\n getCachedChangeCallback = memoizee(\n (index: number) => (value: unknown) =>\n this.handlePartitionSelect(index, value)\n );\n\n getCachedFormatValueCallback = memoizee(\n (index: number) => (value: unknown) => this.getDisplayValue(index, value)\n );\n\n render(): JSX.Element {\n const { model, partitionConfig } = this.props;\n const { isLoading, partitionFilters, partitionTables } = this.state;\n\n const { mode, partitions } = partitionConfig;\n\n const partitionSelectors = model.partitionColumns.map((column, index) => (\n <div key={`selector-${column.name}`} className=\"column-selector\">\n <div className=\"column-name\">{column.name}</div>\n <TableDropdown\n className=\"custom-select-sm\"\n table={partitionTables?.[index]}\n column={partitionTables?.[index]?.columns[index]}\n filter={partitionFilters?.[index]}\n onChange={this.getCachedChangeCallback(index)}\n selectedValue={mode === 'partition' ? partitions[index] : undefined}\n disabled={\n (index > 0 && partitionConfig.mode !== 'partition') || isLoading\n }\n formatValue={this.getCachedFormatValueCallback(index)}\n />\n {model.partitionColumns.length - 1 === index || (\n <FontAwesomeIcon icon={vsChevronRight} />\n )}\n </div>\n ));\n return (\n <div className=\"iris-grid-partition-selector\">\n <div className=\"table-name\">Partitioned Table</div>\n <div className=\"partition-button-group\">\n <Button\n className=\"btn-sm\"\n onClick={this.handleKeyTableClick}\n kind=\"inline\"\n tooltip=\"View keys as table\"\n icon={vsKey}\n active={partitionConfig.mode === 'keys'}\n disabled={isLoading}\n >\n Keys\n </Button>\n <Button\n className=\"btn-sm\"\n onClick={this.handleMergeClick}\n kind=\"inline\"\n tooltip=\"View all partitions as one merged table\"\n icon={<FontAwesomeIcon icon={vsMerge} rotation={90} />}\n active={partitionConfig.mode === 'merged'}\n disabled={isLoading}\n >\n Merge\n </Button>\n </div>\n {partitionSelectors}\n </div>\n );\n }\n}\n\nexport default IrisGridPartitionSelector;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Column, dh as DhType, PartitionedTable, Table } from '@deephaven/jsapi-types';
|
|
2
|
+
import { Formatter } from '@deephaven/jsapi-utils';
|
|
3
|
+
import { ColumnName } from './CommonTypes';
|
|
4
|
+
import EmptyIrisGridModel from './EmptyIrisGridModel';
|
|
5
|
+
import { PartitionedGridModelProvider } from './PartitionedGridModel';
|
|
6
|
+
declare class IrisGridPartitionedTableModel extends EmptyIrisGridModel implements PartitionedGridModelProvider {
|
|
7
|
+
readonly partitionedTable: PartitionedTable;
|
|
8
|
+
/**
|
|
9
|
+
* @param dh JSAPI instance
|
|
10
|
+
* @param table Partitioned table to be used in the model
|
|
11
|
+
* @param formatter The formatter to use when getting formats
|
|
12
|
+
*/
|
|
13
|
+
constructor(dh: DhType, partitionedTable: PartitionedTable, formatter?: Formatter);
|
|
14
|
+
get isPartitionRequired(): boolean;
|
|
15
|
+
get isReversible(): boolean;
|
|
16
|
+
displayString(value: unknown, columnType: string, columnName?: ColumnName): string;
|
|
17
|
+
close(): void;
|
|
18
|
+
get columns(): readonly Column[];
|
|
19
|
+
get partitionColumns(): readonly Column[];
|
|
20
|
+
partitionKeysTable(): Promise<Table>;
|
|
21
|
+
partitionMergedTable(): Promise<Table>;
|
|
22
|
+
partitionTable(partitions: unknown[]): Promise<Table>;
|
|
23
|
+
}
|
|
24
|
+
export default IrisGridPartitionedTableModel;
|
|
25
|
+
//# sourceMappingURL=IrisGridPartitionedTableModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IrisGridPartitionedTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridPartitionedTableModel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,MAAM,EACN,EAAE,IAAI,MAAM,EACZ,gBAAgB,EAChB,KAAK,EACN,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAItD,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAEtE,cAAM,6BACJ,SAAQ,kBACR,YAAW,4BAA4B;IAEvC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAE5C;;;;OAIG;gBAED,EAAE,EAAE,MAAM,EACV,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,YAAoB;IAM/B,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,aAAa,CACX,KAAK,EAAE,OAAO,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,UAAU,GACtB,MAAM;IAIT,KAAK,IAAI,IAAI;IAIb,IAAI,OAAO,IAAI,SAAS,MAAM,EAAE,CAE/B;IAED,IAAI,gBAAgB,IAAI,SAAS,MAAM,EAAE,CAExC;IAEK,kBAAkB,IAAI,OAAO,CAAC,KAAK,CAAC;IAIpC,oBAAoB,IAAI,OAAO,CAAC,KAAK,CAAC;IAItC,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC;CAgB5D;AAED,eAAe,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
2
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
3
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
5
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
6
|
+
/* eslint class-methods-use-this: "off" */
|
|
7
|
+
|
|
8
|
+
import { Formatter } from '@deephaven/jsapi-utils';
|
|
9
|
+
import EmptyIrisGridModel from "./EmptyIrisGridModel.js";
|
|
10
|
+
import MissingPartitionError, { isMissingPartitionError } from "./MissingPartitionError.js";
|
|
11
|
+
class IrisGridPartitionedTableModel extends EmptyIrisGridModel {
|
|
12
|
+
/**
|
|
13
|
+
* @param dh JSAPI instance
|
|
14
|
+
* @param table Partitioned table to be used in the model
|
|
15
|
+
* @param formatter The formatter to use when getting formats
|
|
16
|
+
*/
|
|
17
|
+
constructor(dh, partitionedTable) {
|
|
18
|
+
var formatter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Formatter(dh);
|
|
19
|
+
super(dh, formatter);
|
|
20
|
+
_defineProperty(this, "partitionedTable", void 0);
|
|
21
|
+
this.partitionedTable = partitionedTable;
|
|
22
|
+
}
|
|
23
|
+
get isPartitionRequired() {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
get isReversible() {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
displayString(value, columnType, columnName) {
|
|
30
|
+
return '';
|
|
31
|
+
}
|
|
32
|
+
close() {
|
|
33
|
+
this.partitionedTable.close();
|
|
34
|
+
}
|
|
35
|
+
get columns() {
|
|
36
|
+
return this.partitionedTable.columns;
|
|
37
|
+
}
|
|
38
|
+
get partitionColumns() {
|
|
39
|
+
return this.partitionedTable.keyColumns;
|
|
40
|
+
}
|
|
41
|
+
partitionKeysTable() {
|
|
42
|
+
var _this = this;
|
|
43
|
+
return _asyncToGenerator(function* () {
|
|
44
|
+
return _this.partitionedTable.getKeyTable();
|
|
45
|
+
})();
|
|
46
|
+
}
|
|
47
|
+
partitionMergedTable() {
|
|
48
|
+
var _this2 = this;
|
|
49
|
+
return _asyncToGenerator(function* () {
|
|
50
|
+
return _this2.partitionedTable.getMergedTable();
|
|
51
|
+
})();
|
|
52
|
+
}
|
|
53
|
+
partitionTable(partitions) {
|
|
54
|
+
var _this3 = this;
|
|
55
|
+
return _asyncToGenerator(function* () {
|
|
56
|
+
try {
|
|
57
|
+
var table = yield _this3.partitionedTable.getTable(partitions);
|
|
58
|
+
if (table == null) {
|
|
59
|
+
// TODO: Will be unnecessary with https://github.com/deephaven/deephaven-core/pull/5050
|
|
60
|
+
throw new MissingPartitionError('Partition not found');
|
|
61
|
+
}
|
|
62
|
+
return table;
|
|
63
|
+
} catch (e) {
|
|
64
|
+
if (!isMissingPartitionError(e)) {
|
|
65
|
+
throw new MissingPartitionError('Unable to retrieve partition');
|
|
66
|
+
} else {
|
|
67
|
+
throw e;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
})();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export default IrisGridPartitionedTableModel;
|
|
74
|
+
//# sourceMappingURL=IrisGridPartitionedTableModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IrisGridPartitionedTableModel.js","names":["Formatter","EmptyIrisGridModel","MissingPartitionError","isMissingPartitionError","IrisGridPartitionedTableModel","constructor","dh","partitionedTable","formatter","arguments","length","undefined","_defineProperty","isPartitionRequired","isReversible","displayString","value","columnType","columnName","close","columns","partitionColumns","keyColumns","partitionKeysTable","_this","_asyncToGenerator","getKeyTable","partitionMergedTable","_this2","getMergedTable","partitionTable","partitions","_this3","table","getTable","e"],"sources":["../src/IrisGridPartitionedTableModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport type {\n Column,\n dh as DhType,\n PartitionedTable,\n Table,\n} from '@deephaven/jsapi-types';\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport { ColumnName } from './CommonTypes';\nimport EmptyIrisGridModel from './EmptyIrisGridModel';\nimport MissingPartitionError, {\n isMissingPartitionError,\n} from './MissingPartitionError';\nimport { PartitionedGridModelProvider } from './PartitionedGridModel';\n\nclass IrisGridPartitionedTableModel\n extends EmptyIrisGridModel\n implements PartitionedGridModelProvider\n{\n readonly partitionedTable: PartitionedTable;\n\n /**\n * @param dh JSAPI instance\n * @param table Partitioned table to be used in the model\n * @param formatter The formatter to use when getting formats\n */\n constructor(\n dh: DhType,\n partitionedTable: PartitionedTable,\n formatter = new Formatter(dh)\n ) {\n super(dh, formatter);\n this.partitionedTable = partitionedTable;\n }\n\n get isPartitionRequired(): boolean {\n return true;\n }\n\n get isReversible(): boolean {\n return false;\n }\n\n displayString(\n value: unknown,\n columnType: string,\n columnName?: ColumnName\n ): string {\n return '';\n }\n\n close(): void {\n this.partitionedTable.close();\n }\n\n get columns(): readonly Column[] {\n return this.partitionedTable.columns;\n }\n\n get partitionColumns(): readonly Column[] {\n return this.partitionedTable.keyColumns;\n }\n\n async partitionKeysTable(): Promise<Table> {\n return this.partitionedTable.getKeyTable();\n }\n\n async partitionMergedTable(): Promise<Table> {\n return this.partitionedTable.getMergedTable();\n }\n\n async partitionTable(partitions: unknown[]): Promise<Table> {\n try {\n const table = await this.partitionedTable.getTable(partitions);\n if (table == null) {\n // TODO: Will be unnecessary with https://github.com/deephaven/deephaven-core/pull/5050\n throw new MissingPartitionError('Partition not found');\n }\n return table;\n } catch (e) {\n if (!isMissingPartitionError(e)) {\n throw new MissingPartitionError('Unable to retrieve partition');\n } else {\n throw e;\n }\n }\n }\n}\n\nexport default IrisGridPartitionedTableModel;\n"],"mappings":";;;;;AAAA;;AAOA,SAASA,SAAS,QAAQ,wBAAwB;AAAC,OAE5CC,kBAAkB;AAAA,OAClBC,qBAAqB,IAC1BC,uBAAuB;AAIzB,MAAMC,6BAA6B,SACzBH,kBAAkB,CAE5B;EAGE;AACF;AACA;AACA;AACA;EACEI,WAAWA,CACTC,EAAU,EACVC,gBAAkC,EAElC;IAAA,IADAC,SAAS,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAIT,SAAS,CAACM,EAAE,CAAC;IAE7B,KAAK,CAACA,EAAE,EAAEE,SAAS,CAAC;IAACI,eAAA;IACrB,IAAI,CAACL,gBAAgB,GAAGA,gBAAgB;EAC1C;EAEA,IAAIM,mBAAmBA,CAAA,EAAY;IACjC,OAAO,IAAI;EACb;EAEA,IAAIC,YAAYA,CAAA,EAAY;IAC1B,OAAO,KAAK;EACd;EAEAC,aAAaA,CACXC,KAAc,EACdC,UAAkB,EAClBC,UAAuB,EACf;IACR,OAAO,EAAE;EACX;EAEAC,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACZ,gBAAgB,CAACY,KAAK,CAAC,CAAC;EAC/B;EAEA,IAAIC,OAAOA,CAAA,EAAsB;IAC/B,OAAO,IAAI,CAACb,gBAAgB,CAACa,OAAO;EACtC;EAEA,IAAIC,gBAAgBA,CAAA,EAAsB;IACxC,OAAO,IAAI,CAACd,gBAAgB,CAACe,UAAU;EACzC;EAEMC,kBAAkBA,CAAA,EAAmB;IAAA,IAAAC,KAAA;IAAA,OAAAC,iBAAA;MACzC,OAAOD,KAAI,CAACjB,gBAAgB,CAACmB,WAAW,CAAC,CAAC;IAAC;EAC7C;EAEMC,oBAAoBA,CAAA,EAAmB;IAAA,IAAAC,MAAA;IAAA,OAAAH,iBAAA;MAC3C,OAAOG,MAAI,CAACrB,gBAAgB,CAACsB,cAAc,CAAC,CAAC;IAAC;EAChD;EAEMC,cAAcA,CAACC,UAAqB,EAAkB;IAAA,IAAAC,MAAA;IAAA,OAAAP,iBAAA;MAC1D,IAAI;QACF,IAAMQ,KAAK,SAASD,MAAI,CAACzB,gBAAgB,CAAC2B,QAAQ,CAACH,UAAU,CAAC;QAC9D,IAAIE,KAAK,IAAI,IAAI,EAAE;UACjB;UACA,MAAM,IAAI/B,qBAAqB,CAAC,qBAAqB,CAAC;QACxD;QACA,OAAO+B,KAAK;MACd,CAAC,CAAC,OAAOE,CAAC,EAAE;QACV,IAAI,CAAChC,uBAAuB,CAACgC,CAAC,CAAC,EAAE;UAC/B,MAAM,IAAIjC,qBAAqB,CAAC,8BAA8B,CAAC;QACjE,CAAC,MAAM;UACL,MAAMiC,CAAC;QACT;MACF;IAAC;EACH;AACF;AAEA,eAAe/B,6BAA6B"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { Formatter } from '@deephaven/jsapi-utils';
|
|
2
2
|
import { CancelablePromise } from '@deephaven/utils';
|
|
3
|
-
import type { Column, ColumnStatistics, CustomColumn, dh as DhType, FilterCondition, InputTable, LayoutHints, RollupConfig, Sort, Table, TreeTable, ValueTypeUnion } from '@deephaven/jsapi-types';
|
|
3
|
+
import type { Column, ColumnStatistics, CustomColumn, dh as DhType, FilterCondition, InputTable, LayoutHints, RollupConfig, Sort, Table, TreeTable, PartitionedTable, ValueTypeUnion } from '@deephaven/jsapi-types';
|
|
4
4
|
import { EditableGridModel, ModelIndex, MoveOperation } from '@deephaven/grid';
|
|
5
5
|
import IrisGridTableModel from './IrisGridTableModel';
|
|
6
6
|
import IrisGridTreeTableModel from './IrisGridTreeTableModel';
|
|
7
7
|
import IrisGridModel from './IrisGridModel';
|
|
8
8
|
import { ColumnName, UITotalsTableConfig, PendingDataMap, UIRow, PendingDataErrorMap } from './CommonTypes';
|
|
9
9
|
import type ColumnHeaderGroup from './ColumnHeaderGroup';
|
|
10
|
+
import { PartitionConfig, PartitionedGridModel } from './PartitionedGridModel';
|
|
10
11
|
/**
|
|
11
12
|
* Model which proxies calls to other IrisGridModels.
|
|
12
13
|
* This allows for operations that generate new tables, like rollups.
|
|
13
14
|
*/
|
|
14
|
-
declare class IrisGridProxyModel extends IrisGridModel {
|
|
15
|
+
declare class IrisGridProxyModel extends IrisGridModel implements PartitionedGridModel {
|
|
15
16
|
/**
|
|
16
17
|
* @param dh JSAPI instance
|
|
17
18
|
* @param table Iris data table to be used in the model
|
|
@@ -23,8 +24,14 @@ declare class IrisGridProxyModel extends IrisGridModel {
|
|
|
23
24
|
model: IrisGridModel;
|
|
24
25
|
modelPromise: CancelablePromise<IrisGridModel> | null;
|
|
25
26
|
rollup: RollupConfig | null;
|
|
27
|
+
partition: PartitionConfig | null;
|
|
26
28
|
selectDistinct: ColumnName[];
|
|
27
|
-
|
|
29
|
+
currentViewport?: {
|
|
30
|
+
top: number;
|
|
31
|
+
bottom: number;
|
|
32
|
+
columns?: Column[];
|
|
33
|
+
};
|
|
34
|
+
constructor(dh: DhType, table: Table | TreeTable | PartitionedTable, formatter?: Formatter, inputTable?: InputTable | null);
|
|
28
35
|
close(): void;
|
|
29
36
|
handleModelEvent(event: CustomEvent): void;
|
|
30
37
|
setModel(model: IrisGridModel): void;
|
|
@@ -87,6 +94,7 @@ declare class IrisGridProxyModel extends IrisGridModel {
|
|
|
87
94
|
updateFrozenColumns(columns: readonly ColumnName[]): void;
|
|
88
95
|
get originalColumns(): readonly Column[];
|
|
89
96
|
get groupedColumns(): readonly Column[];
|
|
97
|
+
get partitionColumns(): readonly Column[];
|
|
90
98
|
sourceForCell: IrisGridModel['sourceForCell'];
|
|
91
99
|
getClearFilterRange: IrisGridModel['getClearFilterRange'];
|
|
92
100
|
get description(): string;
|
|
@@ -96,6 +104,11 @@ declare class IrisGridProxyModel extends IrisGridModel {
|
|
|
96
104
|
dataBarOptionsForCell: IrisGridModel['dataBarOptionsForCell'];
|
|
97
105
|
get filter(): readonly FilterCondition[];
|
|
98
106
|
set filter(filter: readonly FilterCondition[]);
|
|
107
|
+
get partitionConfig(): PartitionConfig | null;
|
|
108
|
+
set partitionConfig(partitionConfig: PartitionConfig | null);
|
|
109
|
+
partitionKeysTable(): Promise<Table>;
|
|
110
|
+
partitionMergedTable(): Promise<Table>;
|
|
111
|
+
partitionTable(partitions: unknown[]): Promise<Table>;
|
|
99
112
|
get formatter(): Formatter;
|
|
100
113
|
set formatter(formatter: Formatter);
|
|
101
114
|
displayString: IrisGridModel['displayString'];
|
|
@@ -113,10 +126,11 @@ declare class IrisGridProxyModel extends IrisGridModel {
|
|
|
113
126
|
get totalsConfig(): UITotalsTableConfig | null;
|
|
114
127
|
set totalsConfig(totalsConfig: UITotalsTableConfig | null);
|
|
115
128
|
get isFilterRequired(): boolean;
|
|
129
|
+
get isPartitionRequired(): boolean;
|
|
116
130
|
get isEditable(): boolean;
|
|
117
131
|
isEditableRange: IrisGridTableModel['isEditableRange'];
|
|
118
132
|
isFilterable: IrisGridTableModel['isFilterable'];
|
|
119
|
-
setViewport: (top: number, bottom: number, columns
|
|
133
|
+
setViewport: (top: number, bottom: number, columns?: Column[]) => void;
|
|
120
134
|
snapshot: IrisGridModel['snapshot'];
|
|
121
135
|
textSnapshot: IrisGridTableModel['textSnapshot'];
|
|
122
136
|
export(): Promise<Table>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridProxyModel.d.ts","sourceRoot":"","sources":["../src/IrisGridProxyModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAc,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EACL,iBAAiB,EAGlB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,MAAM,EACN,gBAAgB,EAChB,YAAY,EACZ,EAAE,IAAI,MAAM,EACZ,eAAe,EACf,UAAU,EACV,WAAW,EACX,YAAY,EACZ,IAAI,EACJ,KAAK,EACL,SAAS,EACT,cAAc,EACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,EAGjB,UAAU,EACV,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"IrisGridProxyModel.d.ts","sourceRoot":"","sources":["../src/IrisGridProxyModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,14 +10,19 @@ import Log from '@deephaven/log';
|
|
|
10
10
|
import { EventShimCustomEvent, PromiseUtils } from '@deephaven/utils';
|
|
11
11
|
import { isEditableGridModel, isExpandableGridModel } from '@deephaven/grid';
|
|
12
12
|
import IrisGridTableModel from "./IrisGridTableModel.js";
|
|
13
|
+
import IrisGridPartitionedTableModel from "./IrisGridPartitionedTableModel.js";
|
|
13
14
|
import IrisGridTreeTableModel from "./IrisGridTreeTableModel.js";
|
|
14
15
|
import IrisGridModel from "./IrisGridModel.js";
|
|
15
16
|
import { isIrisGridTableModelTemplate } from "./IrisGridTableModelTemplate.js";
|
|
17
|
+
import { isPartitionedGridModelProvider } from "./PartitionedGridModel.js";
|
|
16
18
|
var log = Log.module('IrisGridProxyModel');
|
|
17
19
|
function makeModel(dh, table, formatter, inputTable) {
|
|
18
20
|
if (TableUtils.isTreeTable(table)) {
|
|
19
21
|
return new IrisGridTreeTableModel(dh, table, formatter);
|
|
20
22
|
}
|
|
23
|
+
if (TableUtils.isPartitionedTable(table)) {
|
|
24
|
+
return new IrisGridPartitionedTableModel(dh, table, formatter);
|
|
25
|
+
}
|
|
21
26
|
return new IrisGridTableModel(dh, table, formatter, inputTable);
|
|
22
27
|
}
|
|
23
28
|
|
|
@@ -44,7 +49,9 @@ class IrisGridProxyModel extends IrisGridModel {
|
|
|
44
49
|
_defineProperty(this, "model", void 0);
|
|
45
50
|
_defineProperty(this, "modelPromise", void 0);
|
|
46
51
|
_defineProperty(this, "rollup", void 0);
|
|
52
|
+
_defineProperty(this, "partition", void 0);
|
|
47
53
|
_defineProperty(this, "selectDistinct", void 0);
|
|
54
|
+
_defineProperty(this, "currentViewport", void 0);
|
|
48
55
|
_defineProperty(this, "textForCell", function () {
|
|
49
56
|
return _this.model.textForCell(...arguments);
|
|
50
57
|
});
|
|
@@ -151,7 +158,14 @@ class IrisGridProxyModel extends IrisGridModel {
|
|
|
151
158
|
_defineProperty(this, "isFilterable", function () {
|
|
152
159
|
return _this.model.isFilterable(...arguments);
|
|
153
160
|
});
|
|
154
|
-
_defineProperty(this, "setViewport", (top, bottom, columns) =>
|
|
161
|
+
_defineProperty(this, "setViewport", (top, bottom, columns) => {
|
|
162
|
+
this.currentViewport = {
|
|
163
|
+
top,
|
|
164
|
+
bottom,
|
|
165
|
+
columns
|
|
166
|
+
};
|
|
167
|
+
this.model.setViewport(top, bottom, columns);
|
|
168
|
+
});
|
|
155
169
|
_defineProperty(this, "snapshot", function () {
|
|
156
170
|
return _this.model.snapshot(...arguments);
|
|
157
171
|
});
|
|
@@ -204,6 +218,7 @@ class IrisGridProxyModel extends IrisGridModel {
|
|
|
204
218
|
this.model = model;
|
|
205
219
|
this.modelPromise = null;
|
|
206
220
|
this.rollup = null;
|
|
221
|
+
this.partition = null;
|
|
207
222
|
this.selectDistinct = [];
|
|
208
223
|
}
|
|
209
224
|
close() {
|
|
@@ -228,6 +243,9 @@ class IrisGridProxyModel extends IrisGridModel {
|
|
|
228
243
|
setModel(model) {
|
|
229
244
|
log.debug('setModel', model);
|
|
230
245
|
var oldModel = this.model;
|
|
246
|
+
var {
|
|
247
|
+
columns: oldColumns
|
|
248
|
+
} = oldModel;
|
|
231
249
|
if (oldModel !== this.originalModel) {
|
|
232
250
|
oldModel.close();
|
|
233
251
|
}
|
|
@@ -235,9 +253,19 @@ class IrisGridProxyModel extends IrisGridModel {
|
|
|
235
253
|
if (this.listenerCount > 0) {
|
|
236
254
|
this.addListeners(model);
|
|
237
255
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
256
|
+
if (oldColumns !== model.columns) {
|
|
257
|
+
this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {
|
|
258
|
+
detail: model.columns
|
|
259
|
+
}));
|
|
260
|
+
} else if (this.currentViewport != null) {
|
|
261
|
+
// If the columns haven't changed, the current viewport should still valid, and needs to be set on the new model
|
|
262
|
+
var {
|
|
263
|
+
top,
|
|
264
|
+
bottom,
|
|
265
|
+
columns
|
|
266
|
+
} = this.currentViewport;
|
|
267
|
+
model.setViewport(top, bottom, columns);
|
|
268
|
+
}
|
|
241
269
|
if (isIrisGridTableModelTemplate(model)) {
|
|
242
270
|
this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {
|
|
243
271
|
detail: model.table
|
|
@@ -406,6 +434,12 @@ class IrisGridProxyModel extends IrisGridModel {
|
|
|
406
434
|
get groupedColumns() {
|
|
407
435
|
return this.model.groupedColumns;
|
|
408
436
|
}
|
|
437
|
+
get partitionColumns() {
|
|
438
|
+
if (!isPartitionedGridModelProvider(this.originalModel)) {
|
|
439
|
+
return [];
|
|
440
|
+
}
|
|
441
|
+
return this.originalModel.partitionColumns;
|
|
442
|
+
}
|
|
409
443
|
get description() {
|
|
410
444
|
return this.model.description;
|
|
411
445
|
}
|
|
@@ -415,6 +449,48 @@ class IrisGridProxyModel extends IrisGridModel {
|
|
|
415
449
|
set filter(filter) {
|
|
416
450
|
this.model.filter = filter;
|
|
417
451
|
}
|
|
452
|
+
get partitionConfig() {
|
|
453
|
+
if (!isPartitionedGridModelProvider(this.originalModel) || !this.originalModel.isPartitionRequired) {
|
|
454
|
+
return null;
|
|
455
|
+
}
|
|
456
|
+
return this.partition;
|
|
457
|
+
}
|
|
458
|
+
set partitionConfig(partitionConfig) {
|
|
459
|
+
if (!this.isPartitionRequired) {
|
|
460
|
+
throw new Error('Partitions are not available');
|
|
461
|
+
}
|
|
462
|
+
log.debug('set partitionConfig', partitionConfig);
|
|
463
|
+
this.partition = partitionConfig;
|
|
464
|
+
var modelPromise = Promise.resolve(this.originalModel);
|
|
465
|
+
if (partitionConfig != null && isPartitionedGridModelProvider(this.originalModel)) {
|
|
466
|
+
if (partitionConfig.mode === 'keys') {
|
|
467
|
+
modelPromise = this.originalModel.partitionKeysTable().then(table => makeModel(this.dh, table, this.formatter));
|
|
468
|
+
} else if (partitionConfig.mode === 'merged') {
|
|
469
|
+
modelPromise = this.originalModel.partitionMergedTable().then(table => makeModel(this.dh, table, this.formatter));
|
|
470
|
+
} else {
|
|
471
|
+
modelPromise = this.originalModel.partitionTable(partitionConfig.partitions).then(table => makeModel(this.dh, table, this.formatter));
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
this.setNextModel(modelPromise);
|
|
475
|
+
}
|
|
476
|
+
partitionKeysTable() {
|
|
477
|
+
if (!isPartitionedGridModelProvider(this.originalModel)) {
|
|
478
|
+
throw new Error('Partitions are not available');
|
|
479
|
+
}
|
|
480
|
+
return this.originalModel.partitionKeysTable();
|
|
481
|
+
}
|
|
482
|
+
partitionMergedTable() {
|
|
483
|
+
if (!isPartitionedGridModelProvider(this.originalModel)) {
|
|
484
|
+
throw new Error('Partitions are not available');
|
|
485
|
+
}
|
|
486
|
+
return this.originalModel.partitionMergedTable();
|
|
487
|
+
}
|
|
488
|
+
partitionTable(partitions) {
|
|
489
|
+
if (!isPartitionedGridModelProvider(this.originalModel)) {
|
|
490
|
+
throw new Error('Partitions are not available');
|
|
491
|
+
}
|
|
492
|
+
return this.originalModel.partitionTable(partitions);
|
|
493
|
+
}
|
|
418
494
|
get formatter() {
|
|
419
495
|
return this.model.formatter;
|
|
420
496
|
}
|
|
@@ -493,7 +569,10 @@ class IrisGridProxyModel extends IrisGridModel {
|
|
|
493
569
|
this.model.totalsConfig = totalsConfig;
|
|
494
570
|
}
|
|
495
571
|
get isFilterRequired() {
|
|
496
|
-
return this.
|
|
572
|
+
return this.originalModel.isFilterRequired;
|
|
573
|
+
}
|
|
574
|
+
get isPartitionRequired() {
|
|
575
|
+
return isPartitionedGridModelProvider(this.originalModel) ? this.originalModel.isPartitionRequired : false;
|
|
497
576
|
}
|
|
498
577
|
get isEditable() {
|
|
499
578
|
return isEditableGridModel(this.model) && this.model.isEditable;
|