@deephaven/iris-grid 0.15.1 → 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.
- package/dist/AdvancedFilterCreator.d.ts +1 -2
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +20 -17
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +10 -6
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts +1 -2
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +1 -2
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +1 -2
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +10 -10
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.d.ts +18 -0
- package/dist/ColumnHeaderGroup.d.ts.map +1 -0
- package/dist/ColumnHeaderGroup.js +51 -0
- package/dist/ColumnHeaderGroup.js.map +1 -0
- package/dist/IrisGrid.css +13 -5
- package/dist/IrisGrid.css.map +1 -1
- package/dist/IrisGrid.d.ts +9 -8
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +30 -21
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.d.ts.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +29 -5
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js +2 -6
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridPartitionSelector.d.ts +0 -1
- package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +4 -0
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +16 -0
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +10 -2
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +74 -22
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +1 -5
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +1 -45
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +25 -6
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +318 -7
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTheme.js +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTheme.module.css +1 -0
- package/dist/IrisGridTheme.module.css.map +1 -1
- package/dist/IrisGridUtils.d.ts +2 -2
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +42 -32
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/PartitionSelectorSearch.d.ts +0 -1
- package/dist/PartitionSelectorSearch.d.ts.map +1 -1
- package/dist/TableViewportUpdater.d.ts +0 -1
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TreeTableViewportUpdater.d.ts +0 -1
- package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +4 -12
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +16 -13
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +291 -227
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +14 -4
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +4 -8
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +0 -1
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +0 -1
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +0 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/package.json +13 -13
|
@@ -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":";;;;;;AAAA;AACA,OAAOA,OAAP,MAAoB,aAApB;AACA,SAASC,SAAT,QAAsC,iBAAtC;AASA,OAAOC,GAAP,MAAgB,gBAAhB;AACA,SAASC,SAAT,EAAoBC,UAApB,QAAsC,wBAAtC;AACA,SACEC,oBADF,EAEEC,YAFF,EAGEC,aAHF,QAIO,kBAJP;OAKOC,a;OAEAC,0B;AAEP,IAAMC,GAAG,GAAGR,GAAG,CAACS,MAAJ,CAAW,oBAAX,CAAZ;AAEA,IAAMC,WAAW,GAAGC,MAAM,CAACC,MAAP,CAAc,EAAd,CAApB;AAEA;AACA;AACA;;AAEA,MAAMC,kBAAN,SAAiCN,0BAAjC,CAA0E;AAOxE;AACF;AACA;AACA;AACA;AACEO,EAAAA,WAAW,CACTC,KADS,EAIT;AAAA,QAFAC,SAEA,uEAFY,IAAIf,SAAJ,EAEZ;AAAA,QADAgB,UACA,uEADgC,IAChC;AACA,UAAMF,KAAN,EAAaC,SAAb,EAAwBC,UAAxB;;AADA;;AAAA;;AAAA;;AAAA,qDAmCwBnB,OAAO,CAC/BoB,uBAAuB,IAAIA,uBAAJ,aAAIA,uBAAJ,cAAIA,uBAAJ,GAA+BR,WADvB,CAnC/B;;AAAA,oDA2CuBZ,OAAO,CAC9BqB,sBAAsB,IAAIA,sBAAJ,aAAIA,sBAAJ,cAAIA,sBAAJ,GAA8BT,WADtB,CA3C9B;;AAAA,sDAmDyBZ,OAAO,CAChC,CACEsB,wBADF,EAEEC,iBAFF;AAAA;;AAAA,qBAIEA,iBAJF,aAIEA,iBAJF,cAIEA,iBAJF,GAIuBD,wBAJvB,uCAImDV,WAJnD;AAAA,KADgC,CAnDhC;;AAAA,0DA0M6BZ,OAAO,CACnCwB,OAAD,IACE,IAAIC,GAAJ,CAAQD,OAAO,CAACE,GAAR,CAAY,CAACC,CAAD,EAAYC,KAAZ,KAAkCA,KAA9C,CAAR,CAFkC,CA1MpC;;AAGA,SAAKC,gBAAL,GAAwB,EAAxB;AACA,SAAKC,gBAAL,GAAwB,EAAxB;AACD;;AAEoB,MAAjBC,iBAAiB,GAAY;AAC/B,WAAO,KAAKd,KAAL,CAAWH,MAAX,IAAqB,IAA5B;AACD;;AAE8B,MAA3BkB,2BAA2B,GAAY;AACzC,WAAO,KAAKf,KAAL,CAAWgB,mBAAX,IAAkC,IAAzC;AACD;;AAEyB,MAAtBC,sBAAsB,GAAY;AACpC,WAAO,KAAKjB,KAAL,CAAWkB,cAAX,IAA6B,IAA7B,IAAqC,KAAKlB,KAAL,CAAWmB,IAAX,IAAmB,IAA/D;AACD;;AAEoB,MAAjBC,iBAAiB,GAAY;AAC/B,WAAO,KAAKpB,KAAL,CAAWqB,MAAX,IAAqB,IAA5B;AACD;;AAE4B,MAAzBC,yBAAyB,GAAY;AACvC,WAAO,KAAKtB,KAAL,CAAWkB,cAAX,IAA6B,IAApC;AACD;;AAE2B,MAAxBK,wBAAwB,GAAY;AACtC,WAAO,KAAKvB,KAAL,CAAWwB,kBAAX,IAAiC,IAAxC;AACD;;AAE2B,MAAxBC,wBAAwB,GAAY;AACtC,WAAO,KAAKzB,KAAL,CAAWwB,kBAAX,IAAiC,IAAxC;AACD;;AAMe,MAAZE,YAAY,GAAiB;AAAA;;AAC/B,WAAO,KAAKC,uBAAL,sBAA6B,KAAKC,WAAlC,sDAA6B,kBAAkBF,YAA/C,CAAP;AACD;;AAMc,MAAXG,WAAW,GAAiB;AAAA;;AAC9B,WAAO,KAAKC,sBAAL,uBAA4B,KAAKF,WAAjC,uDAA4B,mBAAkBC,WAA9C,CAAP;AACD;;AAUgB,MAAbE,aAAa,GAAiB;AAAA;;AAChC,WAAO,KAAKC,wBAAL,uBACL,KAAKJ,WADA,uDACL,mBAAkBG,aADb,EAEL,KAAKzB,iBAFA,CAAP;AAID;;AAEc,MAAXsB,WAAW,GAAgB;AAC7B,WAAO,KAAK5B,KAAL,CAAW4B,WAAlB;AACD;;AAE0B,MAAvBK,uBAAuB,GAAW;AACpC,WAAO,KAAKF,aAAL,CAAmBG,MAA1B;AACD;;AAEc,MAAXC,WAAW,GAAW;AACxB,WAAO,KAAKnC,KAAL,CAAWmC,WAAlB;AACD;;AAEgB,MAAbC,aAAa,GAAiB;AAChC,WAAO,KAAKxB,gBAAZ;AACD;;AAEgB,MAAbwB,aAAa,CAACA,aAAD,EAA8B;AAC7C3C,IAAAA,GAAG,CAAC4C,MAAJ,CACE,mBADF,EAEED,aAFF,EAGE,KAAKxB,gBAHP,EAIEwB,aAAa,KAAK,KAAKxB,gBAJzB;;AAMA,QAAI,KAAKA,gBAAL,CAAsBsB,MAAtB,KAAiC,CAAjC,IAAsCE,aAAa,CAACF,MAAd,KAAyB,CAAnE,EAAsE;AACpEzC,MAAAA,GAAG,CAAC6C,KAAJ,CAAU,oCAAV;AACA,WAAK1B,gBAAL,GAAwBwB,aAAxB;AACA;AACD;;AACD,QAAI,KAAKxB,gBAAL,KAA0BwB,aAA9B,EAA6C;AAC3C3C,MAAAA,GAAG,CAAC6C,KAAJ,CAAU,2BAAV;AACA;AACD;;AACD,SAAKC,iBAAL;AACA,SAAK3B,gBAAL,GAAwBwB,aAAxB;AACA,SAAKpC,KAAL,CAAWwB,kBAAX,CAA8B,CAAC,GAAGY,aAAJ,EAAmB,GAAG,KAAKI,aAA3B,CAA9B;AACA,SAAKC,aAAL;AACD;;AAEgB,MAAbD,aAAa,GAAmB;AAClC,WAAO,KAAK3B,gBAAZ;AACD;;AAEgB,MAAb2B,aAAa,CAACA,aAAD,EAAgC;AAC/C/C,IAAAA,GAAG,CAAC4C,MAAJ,CACE,mBADF,EAEEG,aAFF,EAGE,KAAK3B,gBAHP,EAIE2B,aAAa,KAAK,KAAK3B,gBAJzB;;AAMA,QAAI,KAAKA,gBAAL,CAAsBqB,MAAtB,KAAiC,CAAjC,IAAsCM,aAAa,CAACN,MAAd,KAAyB,CAAnE,EAAsE;AACpEzC,MAAAA,GAAG,CAAC6C,KAAJ,CAAU,oCAAV;AACA,WAAKzB,gBAAL,GAAwB2B,aAAxB;AACA;AACD;;AACD,QAAI,KAAK3B,gBAAL,KAA0B2B,aAA9B,EAA6C;AAC3C/C,MAAAA,GAAG,CAAC6C,KAAJ,CAAU,2BAAV;AACA;AACD;;AACD,SAAKC,iBAAL;AACA,SAAK1B,gBAAL,GAAwB2B,aAAxB;AACA,SAAKxC,KAAL,CAAWwB,kBAAX,CAA8B,CAAC,GAAG,KAAKY,aAAT,EAAwB,GAAGI,aAA3B,CAA9B;AACA,SAAKC,aAAL;AACD;;AAEDC,EAAAA,mBAAmB,CAACnC,OAAD,EAA8B;AAC/C,SAAKD,iBAAL,GAAyBC,OAAzB;AACA,SAAKoC,aAAL,CACE,IAAIvD,oBAAJ,CAAyBG,aAAa,CAACqD,KAAd,CAAoBC,aAA7C,EAA4D;AAC1DC,MAAAA,MAAM,EAAE,KAAK9C;AAD6C,KAA5D,CADF;AAKD;;AAEe,MAAZ+C,YAAY,CAACA,YAAD,EAA2C;AACzDtD,IAAAA,GAAG,CAAC6C,KAAJ,CAAU,kBAAV,EAA8BS,YAA9B;;AAEA,QAAIA,YAAY,KAAK,KAAKC,MAA1B,EAAkC;AAChC;AACA;AACD;;AAED,SAAKA,MAAL,GAAcD,YAAd;AACA,SAAKE,mBAAL,GAA2B,EAA3B;;AAEA,QAAI,KAAKC,kBAAL,IAA2B,IAA/B,EAAqC;AACnC,WAAKA,kBAAL,CAAwBC,MAAxB;AACD;;AAED,SAAKC,cAAL,CAAoB,IAApB;;AAEA,QAAIL,YAAY,IAAI,IAApB,EAA0B;AACxB,WAAKJ,aAAL,CAAmB,IAAIvD,oBAAJ,CAAyBG,aAAa,CAACqD,KAAd,CAAoBS,OAA7C,CAAnB;AACA;AACD;;AAED,SAAKH,kBAAL,GAA0B7D,YAAY,CAACiE,cAAb,CACxB,KAAKtD,KAAL,CAAWuD,cAAX,CAA0BR,YAA1B,CADwB,EAExB/C,KAAK,IAAIA,KAAK,CAACwD,KAAN,EAFe,CAA1B;AAIA,SAAKN,kBAAL,CACGO,IADH,CACQC,WAAW,IAAI;AACnB,WAAKR,kBAAL,GAA0B,IAA1B;AACA,WAAKE,cAAL,CAAoBM,WAApB;AACD,KAJH,EAKGC,KALH,CAKSC,GAAG,IAAI;AACZ,UAAIvE,YAAY,CAACwE,UAAb,CAAwBD,GAAxB,CAAJ,EAAkC;AAChC;AACD;;AAEDnE,MAAAA,GAAG,CAACqE,KAAJ,CAAU,gCAAV,EAA4CF,GAA5C;AACA,WAAKV,kBAAL,GAA0B,IAA1B;AAEA,WAAKP,aAAL,CACE,IAAIvD,oBAAJ,CAAyBG,aAAa,CAACqD,KAAd,CAAoBmB,cAA7C,EAA6D;AAC3DjB,QAAAA,MAAM,EAAEc;AADmD,OAA7D,CADF;AAKD,KAlBH;AAmBD;;AAEmB,MAAhBI,gBAAgB,GAAY;AAC9B,WAAO,KAAKhE,KAAL,CAAWiE,aAAlB;AACD;;AAEDC,EAAAA,YAAY,CAACC,WAAD,EAAmC;AAC7C,WAAO,KAAKC,4BAAL,CAAkC,KAAK7D,OAAvC,EAAgD8D,GAAhD,CAAoDF,WAApD,CAAP;AACD;;AAEKG,EAAAA,MAAM,GAAmB;AAAA;;AAAA;AAC7B,aAAO,KAAI,CAACtE,KAAL,CAAWH,MAAX,EAAP;AAD6B;AAE9B;;AAED0E,EAAAA,gBAAgB,CAACC,MAAD,EAA4C;AAC1D,WAAO,KAAKxE,KAAL,CAAWgB,mBAAX,CAA+BwD,MAA/B,CAAP;AACD;;AAODC,EAAAA,eAAe,CAACC,UAAD,EAAkC;AAC/C,QAAMC,UAAU,GAAG,KAAKpE,OAAL,CAAamE,UAAb,EAAyBE,IAA5C;;AACA,QACE,KAAKlD,YAAL,CAAkBmD,QAAlB,CAA2BF,UAA3B,KACA,KAAK9C,WAAL,CAAiBgD,QAAjB,CAA0BF,UAA1B,CADA,IAEA,KAAK5C,aAAL,CAAmB8C,QAAnB,CAA4BF,UAA5B,CAHF,EAIE;AACA,aAAO,KAAP;AACD;;AACD,WAAO,CAAC,KAAKG,WAAL,CAAiBJ,UAAjB,CAAR;AACD;;AAEDK,EAAAA,cAAc,CAACL,UAAD,EAAkC;AAC9C,WAAO,KAAK3C,aAAL,CAAmB8C,QAAnB,CAA4B,KAAKtE,OAAL,CAAamE,UAAb,EAAyBE,IAArD,CAAP;AACD;;AAEKI,EAAAA,MAAM,CAACC,MAAD,EAAqC;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAC/C,UAAI,CAAC,MAAI,CAACC,iBAAL,CAAuBD,MAAvB,CAAL,EAAqC;AACnC,cAAM,IAAIE,KAAJ,8BAAgCF,MAAhC,EAAN;AACD;;AAED3F,MAAAA,aAAa,CAAC,MAAI,CAACY,UAAN,CAAb;AACA,UAAM;AAAEkF,QAAAA;AAAF,UAAiB,MAAI,CAAClF,UAA5B;;AACA,UAAIkF,UAAU,CAAClD,MAAX,KAAsB,CAA1B,EAA6B;AAC3B,cAAM,IAAIiD,KAAJ,CAAU,kCAAV,CAAN;AACD;;AAED,UAAME,gBAAgB,GAAG,MAAI,CAACC,mBAAL,EAAzB;;AACA,UAAMC,aAAa,GAAGN,MAAM,CACzBxE,GADmB,CACf+E,KAAK,IAAIxG,SAAS,CAACyG,YAAV,CAAuBJ,gBAAvB,EAAyCG,KAAzC,CADM,EAEnBE,MAFmB,CAEZF,KAAK,IAAIA,KAAK,IAAI,IAFN,EAGnB/E,GAHmB,CAGf+E,KAAK,IAAI;AACZlG,QAAAA,aAAa,CAACkG,KAAD,CAAb;AAEA,eAAOxG,SAAS,CAAC2G,MAAV,CACLH,KADK,EAEL,CAFK,EAGL,EAAE,MAAI,CAACI,mBAAL,GAA2B,MAAI,CAAC5F,KAAL,CAAW6F,IAAxC,CAHK,CAAP;AAKD,OAXmB,CAAtB;;AAaA,UAAIN,aAAa,CAACrD,MAAd,GAAuB,CAA3B,EAA8B;AAC5B,YAAM4D,UAAU,GAAG,IAAIC,GAAJ,gCAAnB;;AACA,aAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGT,aAAa,CAACrD,MAAlC,EAA0C8D,CAAC,IAAI,CAA/C,EAAkD;AAChD,cAAMC,YAAY,GAAGV,aAAa,CAACS,CAAD,CAAlC;AACA1G,UAAAA,aAAa,CAAC2G,YAAY,CAACC,QAAd,CAAb;AACA5G,UAAAA,aAAa,CAAC2G,YAAY,CAACE,MAAd,CAAb;;AACA,eAAK,IAAIC,CAAC,GAAGH,YAAY,CAACC,QAA1B,EAAoCE,CAAC,IAAIH,YAAY,CAACE,MAAtD,EAA8DC,CAAC,IAAI,CAAnE,EAAsE;AACpEN,YAAAA,UAAU,CAACd,MAAX,CAAkBoB,CAAlB;AACD;AACF;;AACD,qCAAuBN,UAAvB;;AAEA,QAAA,MAAI,CAAC7C,mBAAL,GAA2B,EAA3B;;AAEA,QAAA,MAAI,CAACN,aAAL,CACE,IAAIvD,oBAAJ,CAAyBG,aAAa,CAACqD,KAAd,CAAoByD,oBAA7C,CADF;;AAIA,QAAA,MAAI,CAAC1D,aAAL,CAAmB,IAAIvD,oBAAJ,CAAyBG,aAAa,CAACqD,KAAd,CAAoBS,OAA7C,CAAnB;AACD;;AAED,UAAMiD,cAAc,GAAG,MAAI,CAACC,iBAAL,EAAvB;;AACA,UAAMC,WAAW,GAAGvB,MAAM,CACvBxE,GADiB,CACb+E,KAAK,IAAIxG,SAAS,CAACyG,YAAV,CAAuBa,cAAvB,EAAuCd,KAAvC,CADI,EAEjBE,MAFiB,CAEVF,KAAK,IAAIA,KAAK,IAAI,IAFR,CAApB;;AAGA,UAAIgB,WAAW,CAACtE,MAAZ,IAAsB,CAA1B,EAA6B;AAC3B;AACD;;AACD,UAAM,CAACuE,IAAD,EAAOC,WAAP,UAA4BC,OAAO,CAACC,GAAR,CAAY,CAC5C;AACA,MAAA,MAAI,CAACC,QAAL,CACEL,WAAW,CAAC/F,GAAZ,CAAgB+E,KAAK,IAAI;AACvBlG,QAAAA,aAAa,CAACkG,KAAD,CAAb;AACA,eAAO,IAAIxG,SAAJ,CACL,CADK,EAELwG,KAAK,CAACU,QAFD,EAGLd,UAAU,CAAClD,MAAX,GAAoB,CAHf,EAILsD,KAAK,CAACW,MAJD,CAAP;AAMD,OARD,CADF,CAF4C,EAa5C,MAAI,CAACnG,KAAL,CAAWmB,IAAX,EAb4C,CAAZ,CAAlC,CArD+C,CAqE/C;;AACA,UAAM2F,OAAO,GAAGL,IAAI,CAAChG,GAAL,CAASsG,GAAG,IAAI;AAC9B,YAAMC,aAAa,GAAG,EAAtB;;AACA,aAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG7B,UAAU,CAAClD,MAA/B,EAAuC+E,CAAC,IAAI,CAA5C,EAA+C;AAC7C,cAAMzC,MAAM,GAAGY,UAAU,CAAC6B,CAAD,CAAzB;AACA,cAAMC,KAAK,GAAGH,GAAG,CAACE,CAAD,CAAjB;AACA,cAAME,WAAW,GAAGhI,UAAU,CAACiI,kBAAX,CAA8B5C,MAAM,CAAC6C,IAArC,EAA2CH,KAA3C,CAApB;;AACA,cAAMxB,OAAM,GAAGlB,MAAM,CAACkB,MAAP,GAAgB4B,EAAhB,CAAmBH,WAAnB,CAAf;;AACAH,UAAAA,aAAa,CAACO,IAAd,CAAmB7B,OAAnB;AACD;;AACD,eAAOsB,aAAa,CAACQ,MAAd,CAAqB,CAACC,GAAD,EAAMC,IAAN,KAAgBD,GAAG,GAAGA,GAAG,CAACE,GAAJ,CAAQD,IAAR,CAAH,GAAmBA,IAA3D,CAAP;AACD,OAVe,CAAhB;AAYA,UAAMhC,MAAM,GAAGoB,OAAO,CAACU,MAAR,CAAe,CAACC,GAAD,EAAMC,IAAN,KAAgBD,GAAG,GAAGA,GAAG,CAACG,EAAJ,CAAOF,IAAP,CAAH,GAAkBA,IAApD,CAAf;AACAhB,MAAAA,WAAW,CAACmB,WAAZ,CAAwB,CAACnC,MAAD,CAAxB;AAEA,iCAAM,MAAI,CAACxF,UAAX,sDAAM,kBAAiBwG,WAAjB,CAA6BA,WAA7B,CAAN;AACAA,MAAAA,WAAW,CAAClD,KAAZ;AAtF+C;AAuFhD;;AAtUuE;;AAyU1E,eAAe1D,kBAAf","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
|
-
|
|
2
|
-
|
|
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
|
|
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":"
|
|
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
|
|
586
|
-
|
|
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
|
|