@deephaven/iris-grid 0.15.2-beta.6 → 0.15.2

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 (82) hide show
  1. package/dist/AdvancedFilterCreator.d.ts +1 -2
  2. package/dist/AdvancedFilterCreator.d.ts.map +1 -1
  3. package/dist/AdvancedFilterCreator.js +20 -17
  4. package/dist/AdvancedFilterCreator.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
  6. package/dist/AdvancedFilterCreatorFilterItem.js +10 -6
  7. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  8. package/dist/AdvancedFilterCreatorSelectValue.d.ts +1 -2
  9. package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
  10. package/dist/AdvancedFilterCreatorSelectValue.js +1 -2
  11. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  12. package/dist/AdvancedFilterCreatorSelectValueList.d.ts +1 -2
  13. package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
  14. package/dist/AdvancedFilterCreatorSelectValueList.js +10 -10
  15. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  16. package/dist/ColumnHeaderGroup.d.ts +18 -0
  17. package/dist/ColumnHeaderGroup.d.ts.map +1 -0
  18. package/dist/ColumnHeaderGroup.js +51 -0
  19. package/dist/ColumnHeaderGroup.js.map +1 -0
  20. package/dist/IrisGrid.css +13 -5
  21. package/dist/IrisGrid.css.map +1 -1
  22. package/dist/IrisGrid.d.ts +8 -7
  23. package/dist/IrisGrid.d.ts.map +1 -1
  24. package/dist/IrisGrid.js +27 -18
  25. package/dist/IrisGrid.js.map +1 -1
  26. package/dist/IrisGridCellOverflowModal.d.ts.map +1 -1
  27. package/dist/IrisGridCellOverflowModal.js +29 -5
  28. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  29. package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
  30. package/dist/IrisGridMetricCalculator.js +2 -6
  31. package/dist/IrisGridMetricCalculator.js.map +1 -1
  32. package/dist/IrisGridPartitionSelector.d.ts +0 -1
  33. package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
  34. package/dist/IrisGridProxyModel.d.ts +4 -0
  35. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  36. package/dist/IrisGridProxyModel.js +16 -0
  37. package/dist/IrisGridProxyModel.js.map +1 -1
  38. package/dist/IrisGridRenderer.d.ts +10 -2
  39. package/dist/IrisGridRenderer.d.ts.map +1 -1
  40. package/dist/IrisGridRenderer.js +71 -20
  41. package/dist/IrisGridRenderer.js.map +1 -1
  42. package/dist/IrisGridTableModel.d.ts +1 -5
  43. package/dist/IrisGridTableModel.d.ts.map +1 -1
  44. package/dist/IrisGridTableModel.js +1 -45
  45. package/dist/IrisGridTableModel.js.map +1 -1
  46. package/dist/IrisGridTableModelTemplate.d.ts +25 -6
  47. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  48. package/dist/IrisGridTableModelTemplate.js +318 -7
  49. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  50. package/dist/IrisGridTheme.js +1 -1
  51. package/dist/IrisGridTheme.js.map +1 -1
  52. package/dist/IrisGridTheme.module.css +1 -0
  53. package/dist/IrisGridTheme.module.css.map +1 -1
  54. package/dist/IrisGridUtils.d.ts +2 -2
  55. package/dist/IrisGridUtils.d.ts.map +1 -1
  56. package/dist/IrisGridUtils.js +42 -32
  57. package/dist/IrisGridUtils.js.map +1 -1
  58. package/dist/PartitionSelectorSearch.d.ts +0 -1
  59. package/dist/PartitionSelectorSearch.d.ts.map +1 -1
  60. package/dist/TableViewportUpdater.d.ts +0 -1
  61. package/dist/TableViewportUpdater.d.ts.map +1 -1
  62. package/dist/TreeTableViewportUpdater.d.ts +0 -1
  63. package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
  64. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
  65. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +4 -12
  66. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  67. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  68. package/dist/mousehandlers/IrisGridContextMenuHandler.js +8 -4
  69. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  70. package/dist/mousehandlers/IrisGridFilterMouseHandler.d.ts.map +1 -1
  71. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +14 -4
  72. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  73. package/dist/mousehandlers/IrisGridSortMouseHandler.d.ts.map +1 -1
  74. package/dist/mousehandlers/IrisGridSortMouseHandler.js +4 -8
  75. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  76. package/dist/sidebar/RollupRows.d.ts +0 -1
  77. package/dist/sidebar/RollupRows.d.ts.map +1 -1
  78. package/dist/sidebar/TableSaver.d.ts +0 -1
  79. package/dist/sidebar/TableSaver.d.ts.map +1 -1
  80. package/dist/sidebar/VisibilityOrderingBuilder.d.ts +0 -1
  81. package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
  82. package/package.json +16 -16
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/IrisGridTableModel.ts"],"names":["memoize","GridRange","GridUtils","Log","Formatter","TableUtils","EventShimCustomEvent","PromiseUtils","assertNotNull","IrisGridModel","IrisGridTableModelTemplate","log","module","EMPTY_ARRAY","Object","freeze","IrisGridTableModel","constructor","table","formatter","inputTable","layoutHintsFrontColumns","layoutHintsBackColumns","layoutHintsFrozenColumns","userFrozenColumns","columns","Set","map","_","index","customColumnList","formatColumnList","isExportAvailable","isColumnStatisticsAvailable","getColumnStatistics","isValuesTableAvailable","selectDistinct","copy","isRollupAvailable","rollup","isSelectDistinctAvailable","isCustomColumnsAvailable","applyCustomColumns","isFormatColumnsAvailable","movedColumns","frontColumns","length","backColumns","frozenColumns","usedColumns","moveColumn","name","toIndex","has","Error","modelIndex","getColumnIndexByName","visibleIndex","getVisibleIndex","moveItem","frontIndex","forEach","backIndex","columnMap","size","getMemoizedFrontColumns","layoutHints","getMemoizedBackColumns","getMemoizedFrozenColumns","floatingLeftColumnCount","description","customColumns","debug2","debug","closeSubscription","formatColumns","applyViewport","updateFrozenColumns","dispatchEvent","EVENT","TABLE_CHANGED","detail","totalsConfig","totals","formattedStringData","totalsTablePromise","cancel","setTotalsTable","UPDATED","makeCancelable","getTotalsTable","close","then","totalsTable","catch","err","isCanceled","error","REQUEST_FAILED","isFilterRequired","isUncoalesced","isFilterable","columnIndex","getCachedFilterableColumnSet","export","columnStatistics","column","isColumnMovable","columnName","includes","isKeyColumn","isColumnFrozen","delete","ranges","isDeletableRanges","keyColumns","pendingAreaRange","getPendingAreaRange","pendingRanges","range","intersection","filter","offset","floatingTopRowCount","newDataMap","Map","i","pendingRange","startRow","endRow","r","PENDING_DATA_UPDATED","tableAreaRange","getTableAreaRange","tableRanges","data","deleteTable","Promise","all","snapshot","filters","row","columnFilters","c","value","filterValue","makeFilterRawValue","type","eq","push","reduce","agg","curr","and","or","applyFilter"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport {\n GridRange,\n GridUtils,\n ModelIndex,\n MoveOperation,\n VisibleIndex,\n} from '@deephaven/grid';\nimport {\n Column,\n ColumnStatistics,\n CustomColumn,\n InputTable,\n LayoutHints,\n Table,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport {\n EventShimCustomEvent,\n PromiseUtils,\n assertNotNull,\n} from '@deephaven/utils';\nimport IrisGridModel from './IrisGridModel';\nimport { ColumnName, UITotalsTableConfig, UIRow } from './CommonTypes';\nimport IrisGridTableModelTemplate from './IrisGridTableModelTemplate';\n\nconst log = Log.module('IrisGridTableModel');\n\nconst EMPTY_ARRAY = Object.freeze([]);\n\n/**\n * Model for a grid showing an iris data table\n */\n\nclass IrisGridTableModel extends IrisGridTableModelTemplate<Table, UIRow> {\n userFrozenColumns?: ColumnName[];\n\n customColumnList: string[];\n\n formatColumnList: CustomColumn[];\n\n /**\n * @param table Iris data table to be used in the model\n * @param formatter The formatter to use when getting formats\n * @param inputTable Iris input table associated with this table\n */\n constructor(\n table: Table,\n formatter = new Formatter(),\n inputTable: InputTable | null = null\n ) {\n super(table, formatter, inputTable);\n\n this.customColumnList = [];\n this.formatColumnList = [];\n }\n\n get isExportAvailable(): boolean {\n return this.table.freeze != null;\n }\n\n get isColumnStatisticsAvailable(): boolean {\n return this.table.getColumnStatistics != null;\n }\n\n get isValuesTableAvailable(): boolean {\n return this.table.selectDistinct != null && this.table.copy != null;\n }\n\n get isRollupAvailable(): boolean {\n return this.table.rollup != null;\n }\n\n get isSelectDistinctAvailable(): boolean {\n return this.table.selectDistinct != null;\n }\n\n get isCustomColumnsAvailable(): boolean {\n return this.table.applyCustomColumns != null;\n }\n\n get isFormatColumnsAvailable(): boolean {\n return this.table.applyCustomColumns != null;\n }\n\n /**\n * Used to get the initial moved columns based on layout hints\n */\n get movedColumns(): MoveOperation[] {\n let movedColumns: MoveOperation[] = [];\n\n if (\n this.frontColumns.length ||\n this.backColumns.length ||\n this.frozenColumns.length\n ) {\n const usedColumns = new Set();\n\n const moveColumn = (name: string, toIndex: VisibleIndex) => {\n if (usedColumns.has(name)) {\n throw new Error(`Column specified in multiple layout hints: ${name}`);\n }\n const modelIndex = this.getColumnIndexByName(name);\n if (!modelIndex) {\n throw new Error(`Unknown layout hint column: ${name}`);\n }\n const visibleIndex = GridUtils.getVisibleIndex(\n modelIndex,\n movedColumns\n );\n movedColumns = GridUtils.moveItem(visibleIndex, toIndex, movedColumns);\n };\n\n let frontIndex = 0;\n this.frozenColumns.forEach(name => {\n moveColumn(name, frontIndex);\n frontIndex += 1;\n });\n this.frontColumns.forEach(name => {\n moveColumn(name, frontIndex);\n frontIndex += 1;\n });\n\n let backIndex = this.columnMap.size - 1;\n this.backColumns.forEach(name => {\n moveColumn(name, backIndex);\n backIndex -= 1;\n });\n }\n return movedColumns;\n }\n\n getMemoizedFrontColumns = memoize(\n layoutHintsFrontColumns => layoutHintsFrontColumns ?? EMPTY_ARRAY\n );\n\n get frontColumns(): ColumnName[] {\n return this.getMemoizedFrontColumns(this.layoutHints?.frontColumns);\n }\n\n getMemoizedBackColumns = memoize(\n layoutHintsBackColumns => layoutHintsBackColumns ?? EMPTY_ARRAY\n );\n\n get backColumns(): ColumnName[] {\n return this.getMemoizedBackColumns(this.layoutHints?.backColumns);\n }\n\n getMemoizedFrozenColumns = memoize(\n (\n layoutHintsFrozenColumns: ColumnName[],\n userFrozenColumns?: ColumnName[]\n ): ColumnName[] =>\n userFrozenColumns ?? layoutHintsFrozenColumns ?? EMPTY_ARRAY\n );\n\n get frozenColumns(): ColumnName[] {\n return this.getMemoizedFrozenColumns(\n this.layoutHints?.frozenColumns,\n this.userFrozenColumns\n );\n }\n\n get layoutHints(): LayoutHints {\n return this.table.layoutHints;\n }\n\n get floatingLeftColumnCount(): number {\n return this.frozenColumns.length;\n }\n\n get description(): string {\n return this.table.description;\n }\n\n get customColumns(): ColumnName[] {\n return this.customColumnList;\n }\n\n set customColumns(customColumns: ColumnName[]) {\n log.debug2(\n 'set customColumns',\n customColumns,\n this.customColumnList,\n customColumns === this.customColumnList\n );\n if (this.customColumnList.length === 0 && customColumns.length === 0) {\n log.debug('Ignore empty initial customColumns');\n this.customColumnList = customColumns;\n return;\n }\n if (this.customColumnList === customColumns) {\n log.debug('Ignore same customColumns');\n return;\n }\n this.closeSubscription();\n this.customColumnList = customColumns;\n this.table.applyCustomColumns([...customColumns, ...this.formatColumns]);\n this.applyViewport();\n }\n\n get formatColumns(): CustomColumn[] {\n return this.formatColumnList;\n }\n\n set formatColumns(formatColumns: CustomColumn[]) {\n log.debug2(\n 'set formatColumns',\n formatColumns,\n this.formatColumnList,\n formatColumns === this.formatColumnList\n );\n if (this.formatColumnList.length === 0 && formatColumns.length === 0) {\n log.debug('Ignore empty initial formatColumns');\n this.formatColumnList = formatColumns;\n return;\n }\n if (this.formatColumnList === formatColumns) {\n log.debug('Ignore same formatColumns');\n return;\n }\n this.closeSubscription();\n this.formatColumnList = formatColumns;\n this.table.applyCustomColumns([...this.customColumns, ...formatColumns]);\n this.applyViewport();\n }\n\n updateFrozenColumns(columns: ColumnName[]): void {\n this.userFrozenColumns = columns;\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {\n detail: this.table,\n })\n );\n }\n\n set totalsConfig(totalsConfig: UITotalsTableConfig | null) {\n log.debug('set totalsConfig', totalsConfig);\n\n if (totalsConfig === this.totals) {\n // Totals already set, or it will be set when the next model actually gets set\n return;\n }\n\n this.totals = totalsConfig;\n this.formattedStringData = [];\n\n if (this.totalsTablePromise != null) {\n this.totalsTablePromise.cancel();\n }\n\n this.setTotalsTable(null);\n\n if (totalsConfig == null) {\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n return;\n }\n\n this.totalsTablePromise = PromiseUtils.makeCancelable(\n this.table.getTotalsTable(totalsConfig),\n table => table.close()\n );\n this.totalsTablePromise\n .then(totalsTable => {\n this.totalsTablePromise = null;\n this.setTotalsTable(totalsTable);\n })\n .catch(err => {\n if (PromiseUtils.isCanceled(err)) {\n return;\n }\n\n log.error('Unable to set next totalsTable', err);\n this.totalsTablePromise = null;\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, {\n detail: err,\n })\n );\n });\n }\n\n get isFilterRequired(): boolean {\n return this.table.isUncoalesced;\n }\n\n isFilterable(columnIndex: ModelIndex): boolean {\n return this.getCachedFilterableColumnSet(this.columns).has(columnIndex);\n }\n\n async export(): Promise<Table> {\n return this.table.freeze();\n }\n\n columnStatistics(column: Column): Promise<ColumnStatistics> {\n return this.table.getColumnStatistics(column);\n }\n\n getCachedFilterableColumnSet = memoize(\n (columns: Column[]) =>\n new Set(columns.map((_: Column, index: ModelIndex) => index))\n );\n\n isColumnMovable(modelIndex: ModelIndex): boolean {\n const columnName = this.columns[modelIndex].name;\n if (\n this.frontColumns.includes(columnName) ||\n this.backColumns.includes(columnName) ||\n this.frozenColumns.includes(columnName)\n ) {\n return false;\n }\n return !this.isKeyColumn(modelIndex);\n }\n\n isColumnFrozen(modelIndex: ModelIndex): boolean {\n return this.frozenColumns.includes(this.columns[modelIndex].name);\n }\n\n async delete(ranges: GridRange[]): Promise<void> {\n if (!this.isDeletableRanges(ranges)) {\n throw new Error(`Undeletable ranges ${ranges}`);\n }\n\n assertNotNull(this.inputTable);\n const { keyColumns } = this.inputTable;\n if (keyColumns.length === 0) {\n throw new Error('No key columns to allow deletion');\n }\n\n const pendingAreaRange = this.getPendingAreaRange();\n const pendingRanges = ranges\n .map(range => GridRange.intersection(pendingAreaRange, range))\n .filter(range => range != null)\n .map(range => {\n assertNotNull(range);\n\n return GridRange.offset(\n range,\n 0,\n -(this.floatingTopRowCount + this.table.size)\n );\n });\n\n if (pendingRanges.length > 0) {\n const newDataMap = new Map(super.pendingDataMap);\n for (let i = 0; i < pendingRanges.length; i += 1) {\n const pendingRange = pendingRanges[i];\n assertNotNull(pendingRange.startRow);\n assertNotNull(pendingRange.endRow);\n for (let r = pendingRange.startRow; r <= pendingRange.endRow; r += 1) {\n newDataMap.delete(r);\n }\n }\n super.pendingDataMap = newDataMap;\n\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n if (tableRanges.length <= 0) {\n return;\n }\n const [data, deleteTable] = await Promise.all([\n // Need to get the key values of each row\n this.snapshot(\n tableRanges.map(range => {\n assertNotNull(range);\n return new GridRange(\n 0,\n range.startRow,\n keyColumns.length - 1,\n range.endRow\n );\n })\n ),\n this.table.copy(),\n ]);\n\n // Now copy the existing table and filter it on the values in the snapshot for the key columns in the input table\n const filters = data.map(row => {\n const columnFilters = [];\n for (let c = 0; c < keyColumns.length; c += 1) {\n const column = keyColumns[c];\n const value = row[c];\n const filterValue = TableUtils.makeFilterRawValue(column.type, value);\n const filter = column.filter().eq(filterValue);\n columnFilters.push(filter);\n }\n return columnFilters.reduce((agg, curr) => (agg ? agg.and(curr) : curr));\n });\n\n const filter = filters.reduce((agg, curr) => (agg ? agg.or(curr) : curr));\n deleteTable.applyFilter([filter]);\n\n await this.inputTable?.deleteTable(deleteTable);\n deleteTable.close();\n }\n}\n\nexport default IrisGridTableModel;\n"],"file":"IrisGridTableModel.js"}
1
+ {"version":3,"sources":["../src/IrisGridTableModel.ts"],"names":["memoize","GridRange","Log","Formatter","TableUtils","EventShimCustomEvent","PromiseUtils","assertNotNull","IrisGridModel","IrisGridTableModelTemplate","log","module","EMPTY_ARRAY","Object","freeze","IrisGridTableModel","constructor","table","formatter","inputTable","layoutHintsFrontColumns","layoutHintsBackColumns","layoutHintsFrozenColumns","userFrozenColumns","columns","Set","map","_","index","customColumnList","formatColumnList","isExportAvailable","isColumnStatisticsAvailable","getColumnStatistics","isValuesTableAvailable","selectDistinct","copy","isRollupAvailable","rollup","isSelectDistinctAvailable","isCustomColumnsAvailable","applyCustomColumns","isFormatColumnsAvailable","frontColumns","getMemoizedFrontColumns","layoutHints","backColumns","getMemoizedBackColumns","frozenColumns","getMemoizedFrozenColumns","floatingLeftColumnCount","length","description","customColumns","debug2","debug","closeSubscription","formatColumns","applyViewport","updateFrozenColumns","dispatchEvent","EVENT","TABLE_CHANGED","detail","totalsConfig","totals","formattedStringData","totalsTablePromise","cancel","setTotalsTable","UPDATED","makeCancelable","getTotalsTable","close","then","totalsTable","catch","err","isCanceled","error","REQUEST_FAILED","isFilterRequired","isUncoalesced","isFilterable","columnIndex","getCachedFilterableColumnSet","has","export","columnStatistics","column","isColumnMovable","modelIndex","columnName","name","includes","isKeyColumn","isColumnFrozen","delete","ranges","isDeletableRanges","Error","keyColumns","pendingAreaRange","getPendingAreaRange","pendingRanges","range","intersection","filter","offset","floatingTopRowCount","size","newDataMap","Map","i","pendingRange","startRow","endRow","r","PENDING_DATA_UPDATED","tableAreaRange","getTableAreaRange","tableRanges","data","deleteTable","Promise","all","snapshot","filters","row","columnFilters","c","value","filterValue","makeFilterRawValue","type","eq","push","reduce","agg","curr","and","or","applyFilter"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport { GridRange, ModelIndex } from '@deephaven/grid';\nimport {\n Column,\n ColumnStatistics,\n CustomColumn,\n InputTable,\n LayoutHints,\n Table,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport {\n EventShimCustomEvent,\n PromiseUtils,\n assertNotNull,\n} from '@deephaven/utils';\nimport IrisGridModel from './IrisGridModel';\nimport { ColumnName, UITotalsTableConfig, UIRow } from './CommonTypes';\nimport IrisGridTableModelTemplate from './IrisGridTableModelTemplate';\n\nconst log = Log.module('IrisGridTableModel');\n\nconst EMPTY_ARRAY = Object.freeze([]);\n\n/**\n * Model for a grid showing an iris data table\n */\n\nclass IrisGridTableModel extends IrisGridTableModelTemplate<Table, UIRow> {\n userFrozenColumns?: ColumnName[];\n\n customColumnList: string[];\n\n formatColumnList: CustomColumn[];\n\n /**\n * @param table Iris data table to be used in the model\n * @param formatter The formatter to use when getting formats\n * @param inputTable Iris input table associated with this table\n */\n constructor(\n table: Table,\n formatter = new Formatter(),\n inputTable: InputTable | null = null\n ) {\n super(table, formatter, inputTable);\n\n this.customColumnList = [];\n this.formatColumnList = [];\n }\n\n get isExportAvailable(): boolean {\n return this.table.freeze != null;\n }\n\n get isColumnStatisticsAvailable(): boolean {\n return this.table.getColumnStatistics != null;\n }\n\n get isValuesTableAvailable(): boolean {\n return this.table.selectDistinct != null && this.table.copy != null;\n }\n\n get isRollupAvailable(): boolean {\n return this.table.rollup != null;\n }\n\n get isSelectDistinctAvailable(): boolean {\n return this.table.selectDistinct != null;\n }\n\n get isCustomColumnsAvailable(): boolean {\n return this.table.applyCustomColumns != null;\n }\n\n get isFormatColumnsAvailable(): boolean {\n return this.table.applyCustomColumns != null;\n }\n\n getMemoizedFrontColumns = memoize(\n layoutHintsFrontColumns => layoutHintsFrontColumns ?? EMPTY_ARRAY\n );\n\n get frontColumns(): ColumnName[] {\n return this.getMemoizedFrontColumns(this.layoutHints?.frontColumns);\n }\n\n getMemoizedBackColumns = memoize(\n layoutHintsBackColumns => layoutHintsBackColumns ?? EMPTY_ARRAY\n );\n\n get backColumns(): ColumnName[] {\n return this.getMemoizedBackColumns(this.layoutHints?.backColumns);\n }\n\n getMemoizedFrozenColumns = memoize(\n (\n layoutHintsFrozenColumns: ColumnName[],\n userFrozenColumns?: ColumnName[]\n ): ColumnName[] =>\n userFrozenColumns ?? layoutHintsFrozenColumns ?? EMPTY_ARRAY\n );\n\n get frozenColumns(): ColumnName[] {\n return this.getMemoizedFrozenColumns(\n this.layoutHints?.frozenColumns,\n this.userFrozenColumns\n );\n }\n\n get layoutHints(): LayoutHints {\n return this.table.layoutHints;\n }\n\n get floatingLeftColumnCount(): number {\n return this.frozenColumns.length;\n }\n\n get description(): string {\n return this.table.description;\n }\n\n get customColumns(): ColumnName[] {\n return this.customColumnList;\n }\n\n set customColumns(customColumns: ColumnName[]) {\n log.debug2(\n 'set customColumns',\n customColumns,\n this.customColumnList,\n customColumns === this.customColumnList\n );\n if (this.customColumnList.length === 0 && customColumns.length === 0) {\n log.debug('Ignore empty initial customColumns');\n this.customColumnList = customColumns;\n return;\n }\n if (this.customColumnList === customColumns) {\n log.debug('Ignore same customColumns');\n return;\n }\n this.closeSubscription();\n this.customColumnList = customColumns;\n this.table.applyCustomColumns([...customColumns, ...this.formatColumns]);\n this.applyViewport();\n }\n\n get formatColumns(): CustomColumn[] {\n return this.formatColumnList;\n }\n\n set formatColumns(formatColumns: CustomColumn[]) {\n log.debug2(\n 'set formatColumns',\n formatColumns,\n this.formatColumnList,\n formatColumns === this.formatColumnList\n );\n if (this.formatColumnList.length === 0 && formatColumns.length === 0) {\n log.debug('Ignore empty initial formatColumns');\n this.formatColumnList = formatColumns;\n return;\n }\n if (this.formatColumnList === formatColumns) {\n log.debug('Ignore same formatColumns');\n return;\n }\n this.closeSubscription();\n this.formatColumnList = formatColumns;\n this.table.applyCustomColumns([...this.customColumns, ...formatColumns]);\n this.applyViewport();\n }\n\n updateFrozenColumns(columns: ColumnName[]): void {\n this.userFrozenColumns = columns;\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {\n detail: this.table,\n })\n );\n }\n\n set totalsConfig(totalsConfig: UITotalsTableConfig | null) {\n log.debug('set totalsConfig', totalsConfig);\n\n if (totalsConfig === this.totals) {\n // Totals already set, or it will be set when the next model actually gets set\n return;\n }\n\n this.totals = totalsConfig;\n this.formattedStringData = [];\n\n if (this.totalsTablePromise != null) {\n this.totalsTablePromise.cancel();\n }\n\n this.setTotalsTable(null);\n\n if (totalsConfig == null) {\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n return;\n }\n\n this.totalsTablePromise = PromiseUtils.makeCancelable(\n this.table.getTotalsTable(totalsConfig),\n table => table.close()\n );\n this.totalsTablePromise\n .then(totalsTable => {\n this.totalsTablePromise = null;\n this.setTotalsTable(totalsTable);\n })\n .catch(err => {\n if (PromiseUtils.isCanceled(err)) {\n return;\n }\n\n log.error('Unable to set next totalsTable', err);\n this.totalsTablePromise = null;\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, {\n detail: err,\n })\n );\n });\n }\n\n get isFilterRequired(): boolean {\n return this.table.isUncoalesced;\n }\n\n isFilterable(columnIndex: ModelIndex): boolean {\n return this.getCachedFilterableColumnSet(this.columns).has(columnIndex);\n }\n\n async export(): Promise<Table> {\n return this.table.freeze();\n }\n\n columnStatistics(column: Column): Promise<ColumnStatistics> {\n return this.table.getColumnStatistics(column);\n }\n\n getCachedFilterableColumnSet = memoize(\n (columns: Column[]) =>\n new Set(columns.map((_: Column, index: ModelIndex) => index))\n );\n\n isColumnMovable(modelIndex: ModelIndex): boolean {\n const columnName = this.columns[modelIndex].name;\n if (\n this.frontColumns.includes(columnName) ||\n this.backColumns.includes(columnName) ||\n this.frozenColumns.includes(columnName)\n ) {\n return false;\n }\n return !this.isKeyColumn(modelIndex);\n }\n\n isColumnFrozen(modelIndex: ModelIndex): boolean {\n return this.frozenColumns.includes(this.columns[modelIndex].name);\n }\n\n async delete(ranges: GridRange[]): Promise<void> {\n if (!this.isDeletableRanges(ranges)) {\n throw new Error(`Undeletable ranges ${ranges}`);\n }\n\n assertNotNull(this.inputTable);\n const { keyColumns } = this.inputTable;\n if (keyColumns.length === 0) {\n throw new Error('No key columns to allow deletion');\n }\n\n const pendingAreaRange = this.getPendingAreaRange();\n const pendingRanges = ranges\n .map(range => GridRange.intersection(pendingAreaRange, range))\n .filter(range => range != null)\n .map(range => {\n assertNotNull(range);\n\n return GridRange.offset(\n range,\n 0,\n -(this.floatingTopRowCount + this.table.size)\n );\n });\n\n if (pendingRanges.length > 0) {\n const newDataMap = new Map(super.pendingDataMap);\n for (let i = 0; i < pendingRanges.length; i += 1) {\n const pendingRange = pendingRanges[i];\n assertNotNull(pendingRange.startRow);\n assertNotNull(pendingRange.endRow);\n for (let r = pendingRange.startRow; r <= pendingRange.endRow; r += 1) {\n newDataMap.delete(r);\n }\n }\n super.pendingDataMap = newDataMap;\n\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n if (tableRanges.length <= 0) {\n return;\n }\n const [data, deleteTable] = await Promise.all([\n // Need to get the key values of each row\n this.snapshot(\n tableRanges.map(range => {\n assertNotNull(range);\n return new GridRange(\n 0,\n range.startRow,\n keyColumns.length - 1,\n range.endRow\n );\n })\n ),\n this.table.copy(),\n ]);\n\n // Now copy the existing table and filter it on the values in the snapshot for the key columns in the input table\n const filters = data.map(row => {\n const columnFilters = [];\n for (let c = 0; c < keyColumns.length; c += 1) {\n const column = keyColumns[c];\n const value = row[c];\n const filterValue = TableUtils.makeFilterRawValue(column.type, value);\n const filter = column.filter().eq(filterValue);\n columnFilters.push(filter);\n }\n return columnFilters.reduce((agg, curr) => (agg ? agg.and(curr) : curr));\n });\n\n const filter = filters.reduce((agg, curr) => (agg ? agg.or(curr) : curr));\n deleteTable.applyFilter([filter]);\n\n await this.inputTable?.deleteTable(deleteTable);\n deleteTable.close();\n }\n}\n\nexport default IrisGridTableModel;\n"],"file":"IrisGridTableModel.js"}
@@ -1,13 +1,12 @@
1
- /// <reference types="lodash" />
2
- /// <reference types="memoizee" />
3
- import { EditOperation, GridRange, ModelIndex, VisibleIndex } from '@deephaven/grid';
4
- import { Column, ColumnStatistics, CustomColumn, FilterCondition, Format, InputTable, RollupConfig, Row, Sort, Table, TableTemplate, TotalsTable, ViewportData } from '@deephaven/jsapi-shim';
1
+ import { EditOperation, GridRange, IColumnHeaderGroup, ModelIndex, MoveOperation, VisibleIndex } from '@deephaven/grid';
2
+ import { Column, ColumnGroup, ColumnStatistics, CustomColumn, FilterCondition, Format, InputTable, RollupConfig, Row, Sort, Table, TableTemplate, TotalsTable, ViewportData } from '@deephaven/jsapi-shim';
5
3
  import { CancelablePromise } from '@deephaven/utils';
6
4
  import { Formatter, FormatterUtils } from '@deephaven/jsapi-utils';
7
5
  import IrisGridModel from './IrisGridModel';
8
6
  import MissingKeyError from './MissingKeyError';
9
7
  import { ColumnName, UITotalsTableConfig, UIRow, PendingDataMap, CellData, UIViewportData } from './CommonTypes';
10
8
  import { IrisGridThemeType } from './IrisGridTheme';
9
+ import ColumnHeaderGroup from './ColumnHeaderGroup';
11
10
  export declare function isIrisGridTableModelTemplate(model: IrisGridModel): model is IrisGridTableModelTemplate;
12
11
  /**
13
12
  * Template model for a grid
@@ -25,6 +24,10 @@ declare class IrisGridTableModelTemplate<T extends TableTemplate<T> = Table, R e
25
24
  set rollupConfig(rollupConfig: RollupConfig | null);
26
25
  get selectDistinctColumns(): ColumnName[];
27
26
  set selectDistinctColumns(names: ColumnName[]);
27
+ /**
28
+ * Returns an array of the columns in the model
29
+ * The order of model columns should never change once established
30
+ */
28
31
  get columns(): Column[];
29
32
  private irisFormatter;
30
33
  inputTable: InputTable | null;
@@ -46,6 +49,10 @@ declare class IrisGridTableModelTemplate<T extends TableTemplate<T> = Table, R e
46
49
  private pendingNewDataMap;
47
50
  private pendingNewRowCount;
48
51
  private pendingNewDataErrors;
52
+ private columnHeaderGroupMap;
53
+ private columnHeaderParentMap;
54
+ private _columnHeaderMaxDepth;
55
+ private _columnHeaderGroups;
49
56
  /**
50
57
  * @param table Iris data table to be used in the model
51
58
  * @param formatter The formatter to use when getting formats
@@ -85,11 +92,22 @@ declare class IrisGridTableModelTemplate<T extends TableTemplate<T> = Table, R e
85
92
  colorForCell(x: ModelIndex, y: ModelIndex, theme: IrisGridThemeType): string;
86
93
  backgroundColorForCell(x: ModelIndex, y: ModelIndex): string | null;
87
94
  textAlignForCell(x: ModelIndex): CanvasTextAlign;
88
- textForColumnHeader(x: ModelIndex): string;
95
+ textForColumnHeader(x: ModelIndex, depth?: number): string | undefined;
96
+ colorForColumnHeader(x: ModelIndex, depth?: number): string | null;
97
+ getColumnHeaderGroup(modelIndex: ModelIndex, depth: number): IColumnHeaderGroup | undefined;
98
+ getColumnHeaderParentGroup(modelIndex: ModelIndex, depth: number): IColumnHeaderGroup | undefined;
99
+ columnAtDepth(x: ModelIndex, depth?: number): ColumnHeaderGroup | Column | undefined;
89
100
  textForRowFooter(y: ModelIndex): string;
101
+ /**
102
+ * Used to get the initial moved columns based on layout hints
103
+ */
104
+ get movedColumns(): MoveOperation[];
90
105
  getMemoizedColumnMap: (tableColumns: Column[]) => Map<string, Column>;
91
106
  get columnMap(): Map<ColumnName, Column>;
92
- get groupedColumns(): [];
107
+ get columnHeaderMaxDepth(): number;
108
+ set columnHeaderMaxDepth(depth: number);
109
+ setColumnHeaderGroups(groups: ColumnGroup[] | undefined): void;
110
+ get groupedColumns(): Column[];
93
111
  row(y: ModelIndex): R | null;
94
112
  /**
95
113
  * Retrieve the totals column if this is a totals row, or null otherwise
@@ -179,6 +197,7 @@ declare class IrisGridTableModelTemplate<T extends TableTemplate<T> = Table, R e
179
197
  number
180
198
  ];
181
199
  getCachedPendingErrors: (pendingDataMap: PendingDataMap<UIRow>, columns: Column[], keyColumnCount: number) => Map<number, MissingKeyError[]>;
200
+ isColumnMovable(modelIndex: ModelIndex, depth: number): boolean;
182
201
  isKeyColumn(x: ModelIndex): boolean;
183
202
  isRowMovable(): boolean;
184
203
  isEditableRange(range: GridRange): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridTableModelTemplate.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModelTemplate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridTableModelTemplate.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModelTemplate.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,19 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
-
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
-
5
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); } }
6
2
 
7
3
  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); }); }; }
8
4
 
5
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
+
7
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
+
9
9
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
10
 
11
+ /* eslint-disable no-underscore-dangle */
12
+
11
13
  /* eslint class-methods-use-this: "off" */
12
14
  import memoize from 'memoize-one';
13
15
  import throttle from 'lodash.throttle';
14
- import { GridRange, memoizeClear } from '@deephaven/grid';
16
+ import { GridRange, GridUtils, memoizeClear } from '@deephaven/grid';
15
17
  import dh from '@deephaven/jsapi-shim';
16
18
  import Log from '@deephaven/log';
17
19
  import { EventShimCustomEvent, PromiseUtils, assertNotNull } from '@deephaven/utils';
@@ -20,6 +22,7 @@ import IrisGridModel from "./IrisGridModel.js";
20
22
  import AggregationOperation from "./sidebar/aggregations/AggregationOperation.js";
21
23
  import IrisGridUtils from "./IrisGridUtils.js";
22
24
  import MissingKeyError from "./MissingKeyError.js";
25
+ import ColumnHeaderGroup, { isColumnHeaderGroup } from "./ColumnHeaderGroup.js";
23
26
  var log = Log.module('IrisGridTableModel');
24
27
  var SET_VIEWPORT_THROTTLE = 150;
25
28
  var APPLY_VIEWPORT_THROTTLE = 0;
@@ -74,6 +77,11 @@ class IrisGridTableModelTemplate extends IrisGridModel {
74
77
  set selectDistinctColumns(names) {
75
78
  throw new Error('Method not implemented.');
76
79
  }
80
+ /**
81
+ * Returns an array of the columns in the model
82
+ * The order of model columns should never change once established
83
+ */
84
+
77
85
 
78
86
  get columns() {
79
87
  return this.table.columns;
@@ -122,6 +130,14 @@ class IrisGridTableModelTemplate extends IrisGridModel {
122
130
 
123
131
  _defineProperty(this, "pendingNewDataErrors", void 0);
124
132
 
133
+ _defineProperty(this, "columnHeaderGroupMap", new Map());
134
+
135
+ _defineProperty(this, "columnHeaderParentMap", new Map());
136
+
137
+ _defineProperty(this, "_columnHeaderMaxDepth", null);
138
+
139
+ _defineProperty(this, "_columnHeaderGroups", []);
140
+
125
141
  _defineProperty(this, "getMemoizedColumnMap", memoize(tableColumns => {
126
142
  var columnMap = new Map();
127
143
  tableColumns.forEach(col => columnMap.set(col.name, col));
@@ -582,8 +598,74 @@ class IrisGridTableModelTemplate extends IrisGridModel {
582
598
  }
583
599
 
584
600
  textForColumnHeader(x) {
585
- var column = this.columns[x];
586
- return "".concat(column.name);
601
+ var _this$columnAtDepth$n, _this$columnAtDepth;
602
+
603
+ var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
604
+ return (_this$columnAtDepth$n = (_this$columnAtDepth = this.columnAtDepth(x, depth)) === null || _this$columnAtDepth === void 0 ? void 0 : _this$columnAtDepth.name) !== null && _this$columnAtDepth$n !== void 0 ? _this$columnAtDepth$n : undefined;
605
+ }
606
+
607
+ colorForColumnHeader(x) {
608
+ var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
609
+ var column = this.columnAtDepth(x, depth);
610
+
611
+ if (isColumnHeaderGroup(column)) {
612
+ var _column$color;
613
+
614
+ return (_column$color = column.color) !== null && _column$color !== void 0 ? _column$color : null;
615
+ }
616
+
617
+ return null;
618
+ }
619
+
620
+ getColumnHeaderGroup(modelIndex, depth) {
621
+ var group = this.columnAtDepth(modelIndex, depth);
622
+
623
+ if (isColumnHeaderGroup(group)) {
624
+ return group;
625
+ }
626
+
627
+ return undefined;
628
+ }
629
+
630
+ getColumnHeaderParentGroup(modelIndex, depth) {
631
+ var _this$columnAtDepth$n2, _this$columnAtDepth2;
632
+
633
+ return this.columnHeaderParentMap.get((_this$columnAtDepth$n2 = (_this$columnAtDepth2 = this.columnAtDepth(modelIndex, depth)) === null || _this$columnAtDepth2 === void 0 ? void 0 : _this$columnAtDepth2.name) !== null && _this$columnAtDepth$n2 !== void 0 ? _this$columnAtDepth$n2 : '');
634
+ }
635
+
636
+ columnAtDepth(x) {
637
+ var _this$columns$x;
638
+
639
+ var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
640
+
641
+ if (depth === 0) {
642
+ return this.columns[x];
643
+ }
644
+
645
+ var columnName = (_this$columns$x = this.columns[x]) === null || _this$columns$x === void 0 ? void 0 : _this$columns$x.name;
646
+ var group = this.columnHeaderParentMap.get(columnName);
647
+
648
+ if (!group) {
649
+ return undefined;
650
+ }
651
+
652
+ var currentDepth = group.depth;
653
+
654
+ while (currentDepth < depth) {
655
+ group = this.columnHeaderParentMap.get(group.name);
656
+
657
+ if (!group) {
658
+ return undefined;
659
+ }
660
+
661
+ currentDepth = group.depth;
662
+ }
663
+
664
+ if (group.depth === depth) {
665
+ return group;
666
+ }
667
+
668
+ return undefined;
587
669
  }
588
670
 
589
671
  textForRowFooter(y) {
@@ -595,11 +677,221 @@ class IrisGridTableModelTemplate extends IrisGridModel {
595
677
 
596
678
  return '';
597
679
  }
680
+ /**
681
+ * Used to get the initial moved columns based on layout hints
682
+ */
683
+
684
+
685
+ get movedColumns() {
686
+ var _this$layoutHints;
687
+
688
+ var movedColumns = [];
689
+
690
+ var moveColumn = (name, toIndex) => {
691
+ var modelIndex = this.getColumnIndexByName(name);
692
+
693
+ if (modelIndex == null) {
694
+ throw new Error("Unknown layout hint column: ".concat(name));
695
+ }
696
+
697
+ var visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);
698
+ movedColumns = GridUtils.moveItem(visibleIndex, toIndex, movedColumns);
699
+ };
700
+
701
+ var moveGroup = (name, toIndex) => {
702
+ var group = this.columnHeaderGroupMap.get(name);
703
+
704
+ if (!group) {
705
+ throw new Error("Unknown layout hint group: ".concat(name));
706
+ }
707
+
708
+ var visibleRange = group.getVisibleRange(movedColumns);
709
+ movedColumns = GridUtils.moveRange(visibleRange, toIndex, movedColumns);
710
+ };
711
+
712
+ if (this.frontColumns.length || this.backColumns.length || this.frozenColumns.length) {
713
+ var usedColumns = new Set();
714
+ var frontIndex = 0;
715
+ this.frozenColumns.forEach(name => {
716
+ if (usedColumns.has(name)) {
717
+ throw new Error("Column specified in multiple layout hints: ".concat(name));
718
+ }
719
+
720
+ moveColumn(name, frontIndex);
721
+ frontIndex += 1;
722
+ });
723
+ this.frontColumns.forEach(name => {
724
+ if (usedColumns.has(name)) {
725
+ throw new Error("Column specified in multiple layout hints: ".concat(name));
726
+ }
727
+
728
+ moveColumn(name, frontIndex);
729
+ frontIndex += 1;
730
+ });
731
+ var backIndex = this.columnMap.size - 1;
732
+ this.backColumns.forEach(name => {
733
+ if (usedColumns.has(name)) {
734
+ throw new Error("Column specified in multiple layout hints: ".concat(name));
735
+ }
736
+
737
+ moveColumn(name, backIndex);
738
+ backIndex -= 1;
739
+ });
740
+ }
741
+
742
+ var layoutHintColumnGroups = (_this$layoutHints = this.layoutHints) === null || _this$layoutHints === void 0 ? void 0 : _this$layoutHints.columnGroups;
743
+
744
+ if (layoutHintColumnGroups) {
745
+ this.setColumnHeaderGroups(layoutHintColumnGroups);
746
+ var columnGroups = [...this.columnHeaderGroupMap.values()];
747
+ columnGroups.sort((a, b) => a.depth - b.depth);
748
+ columnGroups.forEach(group => {
749
+ var firstChildName = group.children[0];
750
+ var rightModelIndex = this.getColumnIndexByName(firstChildName);
751
+ var rightVisibleIndex;
752
+
753
+ if (rightModelIndex != null) {
754
+ rightVisibleIndex = GridUtils.getVisibleIndex(rightModelIndex, movedColumns);
755
+ } else {
756
+ var firstChildGroup = this.columnHeaderGroupMap.get(firstChildName);
757
+
758
+ if (!firstChildGroup) {
759
+ throw new Error("Unknown column ".concat(firstChildName, " in group ").concat(group.name));
760
+ }
761
+
762
+ var visibleRange = firstChildGroup.getVisibleRange(movedColumns); // Columns will be moved to start at the end of the first child group
763
+
764
+ [, rightVisibleIndex] = visibleRange;
765
+ }
766
+
767
+ for (var i = 1; i < group.children.length; i += 1) {
768
+ var childName = group.children[i];
769
+ var childGroup = this.columnHeaderGroupMap.get(childName);
770
+ var childColumn = this.getColumnIndexByName(childName);
771
+
772
+ if (childGroup) {
773
+ // All columns in the group will be before or after the start index
774
+ // Lower level groups are re-arranged first, so they will be contiguous
775
+ var isBeforeGroup = childGroup.getVisibleRange(movedColumns)[0] < rightVisibleIndex;
776
+ var moveToIndex = isBeforeGroup ? rightVisibleIndex - childGroup.childIndexes.length + 1 : rightVisibleIndex + 1;
777
+ moveGroup(childName, moveToIndex);
778
+ rightVisibleIndex = moveToIndex + childGroup.childIndexes.length - 1;
779
+ } else if (childColumn) {
780
+ var _isBeforeGroup = GridUtils.getVisibleIndex(childColumn, movedColumns) < rightVisibleIndex;
781
+
782
+ var _moveToIndex = _isBeforeGroup ? rightVisibleIndex : rightVisibleIndex + 1;
783
+
784
+ moveColumn(childName, _moveToIndex);
785
+ rightVisibleIndex = _moveToIndex;
786
+ }
787
+ }
788
+ });
789
+ }
790
+
791
+ return movedColumns;
792
+ }
598
793
 
599
794
  get columnMap() {
600
795
  return this.getMemoizedColumnMap(this.table.columns);
601
796
  }
602
797
 
798
+ get columnHeaderMaxDepth() {
799
+ var _this$_columnHeaderMa;
800
+
801
+ if (this._columnHeaderMaxDepth == null) {
802
+ var _this$layoutHints2;
803
+
804
+ this.setColumnHeaderGroups((_this$layoutHints2 = this.layoutHints) === null || _this$layoutHints2 === void 0 ? void 0 : _this$layoutHints2.columnGroups);
805
+ }
806
+
807
+ return (_this$_columnHeaderMa = this._columnHeaderMaxDepth) !== null && _this$_columnHeaderMa !== void 0 ? _this$_columnHeaderMa : 1;
808
+ }
809
+
810
+ set columnHeaderMaxDepth(depth) {
811
+ this._columnHeaderMaxDepth = depth;
812
+ }
813
+
814
+ setColumnHeaderGroups(groups) {
815
+ if (groups === this._columnHeaderGroups) {
816
+ return;
817
+ }
818
+
819
+ this._columnHeaderGroups = groups !== null && groups !== void 0 ? groups : [];
820
+ this.columnHeaderMaxDepth = 1;
821
+ this.columnHeaderParentMap = new Map();
822
+ this.columnHeaderGroupMap = new Map();
823
+
824
+ if (!groups || groups.length === 0) {
825
+ return;
826
+ }
827
+
828
+ var originalGroupMap = new Map(groups.map(group => [group.name, group]));
829
+ var seenChildren = new Set();
830
+
831
+ var addGroup = group => {
832
+ var {
833
+ name
834
+ } = group;
835
+
836
+ if (this.getColumnIndexByName(name) != null) {
837
+ throw new Error("Column header group has same name as column: ".concat(name));
838
+ }
839
+
840
+ var existingGroup = this.columnHeaderGroupMap.get(name);
841
+
842
+ if (existingGroup) {
843
+ return existingGroup;
844
+ }
845
+
846
+ var childIndexes = [];
847
+ var depth = 1;
848
+ group.children.forEach(childName => {
849
+ if (seenChildren.has(childName)) {
850
+ throw new Error("Column group child ".concat(childName, " specified in multiple groups"));
851
+ }
852
+
853
+ seenChildren.add(childName);
854
+ var childGroup = originalGroupMap.get(childName);
855
+ var childIndex = this.getColumnIndexByName(childName);
856
+
857
+ if (childGroup) {
858
+ // Adding another column header group
859
+ var addedGroup = addGroup(childGroup);
860
+ childIndexes.push(addedGroup.childIndexes.flat());
861
+ depth = Math.max(depth, addedGroup.depth + 1);
862
+ } else if (childIndex != null) {
863
+ // Adding a base column
864
+ childIndexes.push(childIndex);
865
+ depth = Math.max(depth, 1);
866
+ } else {
867
+ throw new Error("Unknown child ".concat(childName, " in group ").concat(name));
868
+ }
869
+ });
870
+ var columnHeaderGroup = new ColumnHeaderGroup(_objectSpread(_objectSpread({}, group), {}, {
871
+ depth,
872
+ childIndexes
873
+ }));
874
+ this.columnHeaderGroupMap.set(name, columnHeaderGroup);
875
+ group.children.forEach(childName => this.columnHeaderParentMap.set(childName, columnHeaderGroup));
876
+ this.columnHeaderMaxDepth = Math.max(this.columnHeaderMaxDepth, columnHeaderGroup.depth + 1);
877
+ return columnHeaderGroup;
878
+ };
879
+
880
+ var groupNames = new Set();
881
+ groups.forEach(group => {
882
+ var {
883
+ name
884
+ } = group;
885
+
886
+ if (groupNames.has(name)) {
887
+ throw new Error("Duplicate column group name: ".concat(name));
888
+ }
889
+
890
+ groupNames.add(name);
891
+ addGroup(group);
892
+ });
893
+ }
894
+
603
895
  get groupedColumns() {
604
896
  return [];
605
897
  }
@@ -1122,6 +1414,25 @@ class IrisGridTableModelTemplate extends IrisGridModel {
1122
1414
  })();
1123
1415
  }
1124
1416
 
1417
+ isColumnMovable(modelIndex, depth) {
1418
+ if (modelIndex < 0 || modelIndex >= this.columnCount) {
1419
+ return false;
1420
+ } // All groups are movable
1421
+
1422
+
1423
+ if (depth > 0) {
1424
+ return true;
1425
+ }
1426
+
1427
+ var columnName = this.columns[modelIndex].name;
1428
+
1429
+ if (this.frontColumns.includes(columnName) || this.backColumns.includes(columnName) || this.frozenColumns.includes(columnName) || !columnName) {
1430
+ return false;
1431
+ }
1432
+
1433
+ return !this.isKeyColumn(modelIndex);
1434
+ }
1435
+
1125
1436
  isKeyColumn(x) {
1126
1437
  var _this$inputTable$keyC2, _this$inputTable2;
1127
1438