@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.
Files changed (67) hide show
  1. package/dist/EmptyIrisGridModel.d.ts +62 -0
  2. package/dist/EmptyIrisGridModel.d.ts.map +1 -0
  3. package/dist/EmptyIrisGridModel.js +168 -0
  4. package/dist/EmptyIrisGridModel.js.map +1 -0
  5. package/dist/IrisGrid.d.ts +17 -14
  6. package/dist/IrisGrid.d.ts.map +1 -1
  7. package/dist/IrisGrid.js +151 -146
  8. package/dist/IrisGrid.js.map +1 -1
  9. package/dist/IrisGridModel.d.ts +5 -4
  10. package/dist/IrisGridModel.d.ts.map +1 -1
  11. package/dist/IrisGridModel.js +2 -1
  12. package/dist/IrisGridModel.js.map +1 -1
  13. package/dist/IrisGridModelFactory.d.ts +2 -2
  14. package/dist/IrisGridModelFactory.d.ts.map +1 -1
  15. package/dist/IrisGridModelFactory.js +1 -1
  16. package/dist/IrisGridModelFactory.js.map +1 -1
  17. package/dist/IrisGridModelUpdater.d.ts +3 -1
  18. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  19. package/dist/IrisGridModelUpdater.js +8 -1
  20. package/dist/IrisGridModelUpdater.js.map +1 -1
  21. package/dist/IrisGridPartitionSelector.css +14 -36
  22. package/dist/IrisGridPartitionSelector.css.map +1 -1
  23. package/dist/IrisGridPartitionSelector.d.ts +39 -38
  24. package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
  25. package/dist/IrisGridPartitionSelector.js +253 -227
  26. package/dist/IrisGridPartitionSelector.js.map +1 -1
  27. package/dist/IrisGridPartitionedTableModel.d.ts +25 -0
  28. package/dist/IrisGridPartitionedTableModel.d.ts.map +1 -0
  29. package/dist/IrisGridPartitionedTableModel.js +74 -0
  30. package/dist/IrisGridPartitionedTableModel.js.map +1 -0
  31. package/dist/IrisGridProxyModel.d.ts +18 -4
  32. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  33. package/dist/IrisGridProxyModel.js +84 -5
  34. package/dist/IrisGridProxyModel.js.map +1 -1
  35. package/dist/IrisGridTableModel.d.ts +14 -4
  36. package/dist/IrisGridTableModel.d.ts.map +1 -1
  37. package/dist/IrisGridTableModel.js +96 -21
  38. package/dist/IrisGridTableModel.js.map +1 -1
  39. package/dist/IrisGridTableModelTemplate.d.ts +7 -7
  40. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  41. package/dist/IrisGridTableModelTemplate.js +1 -1
  42. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  43. package/dist/IrisGridTreeTableModel.js +2 -4
  44. package/dist/IrisGridTreeTableModel.js.map +1 -1
  45. package/dist/IrisGridUtils.d.ts +7 -7
  46. package/dist/IrisGridUtils.d.ts.map +1 -1
  47. package/dist/IrisGridUtils.js +33 -34
  48. package/dist/IrisGridUtils.js.map +1 -1
  49. package/dist/MissingPartitionError.d.ts +6 -0
  50. package/dist/MissingPartitionError.d.ts.map +1 -0
  51. package/dist/MissingPartitionError.js +14 -0
  52. package/dist/MissingPartitionError.js.map +1 -0
  53. package/dist/PartitionedGridModel.d.ts +38 -0
  54. package/dist/PartitionedGridModel.d.ts.map +1 -0
  55. package/dist/PartitionedGridModel.js +15 -0
  56. package/dist/PartitionedGridModel.js.map +1 -0
  57. package/dist/index.d.ts +3 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +3 -1
  60. package/dist/index.js.map +1 -1
  61. package/package.json +16 -15
  62. package/dist/PartitionSelectorSearch.css +0 -23
  63. package/dist/PartitionSelectorSearch.css.map +0 -1
  64. package/dist/PartitionSelectorSearch.d.ts +0 -78
  65. package/dist/PartitionSelectorSearch.d.ts.map +0 -1
  66. package/dist/PartitionSelectorSearch.js +0 -343
  67. 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 &amp; 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
- constructor(dh: DhType, table: Table | TreeTable, formatter?: Formatter, inputTable?: InputTable | null);
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: Column[]) => void;
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":"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"}
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) => this.model.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
- this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {
239
- detail: model.columns
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.model.isFilterRequired;
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;