@deephaven/iris-grid 0.13.3-beta.2 → 0.13.5
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 +63 -69
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +73 -79
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts +45 -45
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +36 -32
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +52 -47
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +39 -24
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnStatistics.d.ts +22 -34
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js +12 -8
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CrossColumnSearch.d.ts +24 -26
- package/dist/CrossColumnSearch.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js +13 -9
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.d.ts +51 -48
- package/dist/FilterInputField.d.ts.map +1 -1
- package/dist/FilterInputField.js +27 -30
- package/dist/FilterInputField.js.map +1 -1
- package/dist/IrisGrid.d.ts +453 -409
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +449 -514
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.d.ts +1 -1
- package/dist/IrisGridCellOverflowModal.d.ts.map +1 -1
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.d.ts +46 -52
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +38 -22
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +4 -5
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js +1 -5
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +35 -37
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +3 -19
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.d.ts +5 -7
- package/dist/IrisGridModelFactory.d.ts.map +1 -1
- package/dist/IrisGridModelFactory.js +5 -5
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +11 -13
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.d.ts +39 -38
- package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
- package/dist/IrisGridPartitionSelector.js +24 -18
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +32 -111
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +170 -212
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +31 -59
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +46 -92
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +147 -48
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +1381 -58
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTestUtils.d.ts +14 -18
- package/dist/IrisGridTestUtils.d.ts.map +1 -1
- package/dist/IrisGridTestUtils.js +1 -29
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.d.ts +3 -35
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +7 -26
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridTreeTableModel.js +14 -24
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +162 -257
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +95 -132
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.d.ts +3 -5
- package/dist/MissingKeyError.d.ts.map +1 -1
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.d.ts +40 -61
- package/dist/PartitionSelectorSearch.d.ts.map +1 -1
- package/dist/PartitionSelectorSearch.js +15 -25
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +6 -3
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +55 -39
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js +64 -42
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/TreeTableViewportUpdater.d.ts +37 -29
- package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
- package/dist/TreeTableViewportUpdater.js +50 -39
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -9
- package/dist/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +0 -2
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +130 -41
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +317 -426
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +2 -2
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.d.ts +4 -8
- package/dist/mousehandlers/PendingMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +5 -4
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +33 -48
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +27 -28
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +41 -51
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +18 -22
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.d.ts +36 -26
- package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +20 -11
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.d.ts +35 -34
- package/dist/sidebar/InputEditor.d.ts.map +1 -1
- package/dist/sidebar/InputEditor.js +24 -43
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +52 -67
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +53 -51
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts +21 -27
- package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +10 -6
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +39 -42
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +20 -12
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +60 -59
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +68 -154
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +45 -56
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +29 -34
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +1 -2
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +5 -6
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +0 -5
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/icons/index.d.ts +7 -7
- package/dist/sidebar/icons/index.d.ts.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.d.ts +12 -12
- package/dist/sidebar/index.d.ts.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +16 -17
- package/dist/CommonTypes.d.ts +0 -58
- package/dist/CommonTypes.d.ts.map +0 -1
- package/dist/CommonTypes.js +0 -2
- package/dist/CommonTypes.js.map +0 -1
- package/dist/IrisGridTableModelTemplate.d.ts +0 -219
- package/dist/IrisGridTableModelTemplate.d.ts.map +0 -1
- package/dist/IrisGridTableModelTemplate.js +0 -1623
- package/dist/IrisGridTableModelTemplate.js.map +0 -1
|
@@ -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 static ROW_BUFFER_PAGES = 1;\n\n static COLUMN_BUFFER_PAGES = 0;\n\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.js"],"names":["memoize","throttle","GridRange","GridUtils","memoizeClear","dh","Formatter","FormatterUtils","TableUtils","Log","PromiseUtils","IrisGridModel","AggregationOperation","IrisGridUtils","MissingKeyError","log","module","SET_VIEWPORT_THROTTLE","APPLY_VIEWPORT_THROTTLE","IrisGridTableModel","constructor","table","formatter","inputTable","tableColumns","columnMap","Map","forEach","col","set","name","layoutHintsFrontColumns","layoutHintsBackColumns","layoutHintsFrozenColumns","userFrozenColumns","columns","indices","i","Set","map","_","index","value","columnType","columnName","formatOverride","getFormattedString","max","isCustomColumnFormatDefined","top","bottom","viewHeight","viewportTop","Math","ROW_BUFFER_PAGES","viewportBottom","pendingDataMap","keyColumnCount","row","rowIndex","data","rowData","has","get","push","handleTableDisconnect","bind","handleTableReconnect","handleTableUpdate","handleTotalsUpdate","handleRequestFailed","handleCustomColumnsChanged","setViewport","applyViewport","leading","irisFormatter","listenerCount","subscription","viewport","viewportData","formattedStringData","pendingStringData","isSaveInProgress","totalsTable","totalsTablePromise","totals","totalsDataMap","customColumnList","formatColumnList","pendingNewDataMap","pendingNewRowCount","close","cancel","startListening","addEventListener","Table","EVENT_DISCONNECT","EVENT_RECONNECT","EVENT_UPDATED","Client","EVENT_REQUEST_FAILED","EVENT_CUSTOMCOLUMNSCHANGED","addTotalsListeners","stopListening","removeEventListener","removeTotalsListeners","closeSubscription","dispatchEvent","CustomEvent","EVENT","DISCONNECT","RECONNECT","event","copyViewportData","detail","UPDATED","copyTotalsData","REQUEST_FAILED","COLUMNS_CHANGED","rowCount","size","operationOrder","length","pendingDataErrors","getCachedPendingErrors","keyColumns","isValidIndex","Error","columnIndex","maxPendingDataRow","PENDING_DATA_UPDATED","pendingRowCount","count","keys","columnCount","floatingBottomRowCount","showOnTop","floatingTopRowCount","isExportAvailable","freeze","isColumnStatisticsAvailable","getColumnStatistics","isValuesTableAvailable","selectDistinct","copy","isRollupAvailable","rollup","isSelectDistinctAvailable","isCustomColumnsAvailable","applyCustomColumns","isFormatColumnsAvailable","isChartBuilderAvailable","isTotalsAvailable","getTotalsTable","isEditable","cacheFormattedValue","x","y","text","cachePendingValue","clearPendingValue","column","textValueForCell","undefined","valueForCell","totalsColumn","hasCustomColumnFormat","getCachedCustomColumnFormatFlag","type","formatForCell","formatString","displayString","textForCell","isKeyColumn","pendingRow","truncationCharForCell","isNumberType","truncateNumbersWithPound","colorForCell","theme","dataForCell","format","nullStringColor","color","isPendingRow","pendingTextColor","isDateType","dateColor","positiveNumberColor","negativeNumberColor","zeroNumberColor","errorTextColor","textColor","backgroundColorForCell","backgroundColor","textAlignForCell","textForColumnHeader","textForRowFooter","totalsRow","movedColumns","frontColumns","backColumns","frozenColumns","usedColumns","moveColumn","modelIndex","getColumnIndexByName","visibleIndex","getVisibleIndex","moveItem","frontIndex","backIndex","getMemoizedColumnMap","getMemoizedFrontColumns","layoutHints","getMemoizedBackColumns","getMemoizedFrozenColumns","floatingLeftColumnCount","groupedColumns","description","totalsRowCount","operation","offset","viewportY","rows","tableColumn","operations","operationMap","isOnlyOperation","matchName","find","isTotalsRow","warn","extractViewportData","totalsData","error","dataMap","defaultOperation","SUM","c","split","findIndex","getFormat","debug2","getColumnIndicesByNameMap","newData","r","newRow","extractViewportRow","filter","applyFilter","FORMATTER_UPDATED","getCachedFormattedString","sort","applySort","customColumns","debug","formatColumns","updateFrozenColumns","TABLE_CHANGED","totalsConfig","setTotalsTable","makeCancelable","then","catch","err","isCanceled","getCachedViewportRowRange","applyBufferedViewport","snapshot","ranges","includeHeaders","formatValue","consolidated","consolidate","isValidSnapshotRanges","topFloatingRowsSet","tableRanges","bottomFloatingRowsSet","range","startRow","endRow","add","startColumn","min","endColumn","columnsFromRanges","result","topFloatingRows","rangeSet","rangeSetFromRanges","bottomFloatingRows","textSnapshot","join","isFilterRequired","isUncoalesced","isFilterable","getCachedFilterableColumnSet","valuesTable","export","columnStatistics","isColumnMovable","includes","isColumnFrozen","isRowMovable","isEditableRange","isBounded","isDeletableRange","isEditableRanges","every","isDeletableRanges","getTableAreaRange","getPendingAreaRange","setValueForCell","setValueForRanges","columnSet","formattedText","forEachCell","makeValue","timeZone","pendingAreaRange","pendingRanges","intersection","newDataMap","newRowData","delete","tableAreaRange","newRows","addRows","setValues","edits","edit","makeCell","rowEditMap","reduce","rowMap","dataIndex","rangeRowCount","rowEdits","info","commitPending","pendingNewDataErrors","editValueForCell","pendingRange","deleteTable","Promise","all","filters","columnFilters","filterValue","makeFilterRawValue","eq","agg","curr","and","or","isValidForCell","e"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport { GridRange, GridUtils, memoizeClear } from '@deephaven/grid';\nimport dh from '@deephaven/jsapi-shim';\nimport { Formatter, FormatterUtils, TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport IrisGridModel from './IrisGridModel';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport IrisGridUtils from './IrisGridUtils';\nimport MissingKeyError from './MissingKeyError';\n\nconst log = Log.module('IrisGridTableModel');\n\nconst SET_VIEWPORT_THROTTLE = 150;\nconst APPLY_VIEWPORT_THROTTLE = 0;\n\n/**\n * Model for a grid showing an iris data table\n */\nclass IrisGridTableModel extends IrisGridModel {\n static ROW_BUFFER_PAGES = 1;\n\n static COLUMN_BUFFER_PAGES = 0;\n\n /**\n * @param {dh.Table} table Iris data table to be used in the model\n * @param {Formatter} formatter The formatter to use when getting formats\n * @param {dh.InputTable} inputTable Iris input table associated with this table\n */\n constructor(table, formatter = new Formatter(), inputTable = null) {\n super();\n\n this.handleTableDisconnect = this.handleTableDisconnect.bind(this);\n this.handleTableReconnect = this.handleTableReconnect.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n this.handleTotalsUpdate = this.handleTotalsUpdate.bind(this);\n this.handleRequestFailed = this.handleRequestFailed.bind(this);\n this.handleCustomColumnsChanged = this.handleCustomColumnsChanged.bind(\n this\n );\n this.setViewport = throttle(\n this.setViewport.bind(this),\n SET_VIEWPORT_THROTTLE\n );\n this.applyViewport = throttle(\n this.applyViewport.bind(this),\n APPLY_VIEWPORT_THROTTLE,\n { leading: false }\n );\n\n this.irisFormatter = formatter;\n this.inputTable = inputTable;\n this.listenerCount = 0;\n this.subscription = null;\n this.table = table;\n this.viewport = null;\n this.viewportData = null;\n this.formattedStringData = [];\n this.pendingStringData = [];\n this.isSaveInProgress = false;\n\n this.totalsTable = null;\n this.totalsTablePromise = null;\n this.totals = null;\n this.totalsDataMap = null;\n\n this.customColumnList = [];\n this.formatColumnList = [];\n\n // Map from new row index to their values. Only for input tables that can have new rows added.\n // The index of these rows start at 0, and they are appended at the end of the regular table data.\n // These rows can be sparse, so using a map instead of an array.\n this.pendingNewDataMap = new Map();\n this.pendingNewRowCount = 0;\n\n this.userFrozenColumns = null;\n }\n\n close() {\n this.table.close();\n if (this.totalsTable !== null) {\n this.totalsTable.close();\n }\n if (this.totalsTablePromise !== null) {\n this.totalsTablePromise.cancel();\n }\n }\n\n startListening() {\n super.startListening();\n\n this.table.addEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleTableDisconnect\n );\n this.table.addEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleTableReconnect\n );\n this.table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n this.table.addEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n this.table.addEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleCustomColumnsChanged\n );\n\n if (this.totalsTable != null) {\n this.addTotalsListeners(this.totalsTable);\n }\n\n this.applyViewport();\n }\n\n stopListening() {\n super.stopListening();\n\n this.table.removeEventListener(\n dh.Table.EVENT_DISCONNECT,\n this.handleTableDisconnect\n );\n this.table.removeEventListener(\n dh.Table.EVENT_RECONNECT,\n this.handleTableReconnect\n );\n this.table.removeEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTableUpdate\n );\n this.table.removeEventListener(\n dh.Client.EVENT_REQUEST_FAILED,\n this.handleRequestFailed\n );\n this.table.removeEventListener(\n dh.Table.EVENT_CUSTOMCOLUMNSCHANGED,\n this.handleCustomColumnsChanged\n );\n\n if (this.totalsTable != null) {\n this.removeTotalsListeners(this.totalsTable);\n }\n\n this.closeSubscription();\n }\n\n addTotalsListeners(totalsTable) {\n totalsTable.addEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTotalsUpdate\n );\n\n // Totals table only has one row of data\n totalsTable.setViewport(0, 0);\n }\n\n removeTotalsListeners(totalsTable) {\n totalsTable.removeEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTotalsUpdate\n );\n }\n\n handleTableDisconnect() {\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.DISCONNECT));\n }\n\n handleTableReconnect() {\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.RECONNECT));\n }\n\n handleTableUpdate(event) {\n this.copyViewportData(event.detail);\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleTotalsUpdate(event) {\n this.copyTotalsData(event.detail);\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleRequestFailed(event) {\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, event)\n );\n }\n\n handleCustomColumnsChanged() {\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: this.columns,\n })\n );\n }\n\n get rowCount() {\n return (\n this.table.size +\n (this.totals?.operationOrder?.length ?? 0) +\n this.pendingNewRowCount\n );\n }\n\n get pendingDataErrors() {\n return this.getCachedPendingErrors(\n this.pendingNewDataMap,\n this.columns,\n this.inputTable?.keyColumns.length ?? 0\n );\n }\n\n get pendingDataMap() {\n return this.pendingNewDataMap;\n }\n\n set pendingDataMap(map) {\n if (map === this.pendingNewDataMap) {\n return;\n }\n\n map.forEach((row, rowIndex) => {\n if (!IrisGridUtils.isValidIndex(rowIndex)) {\n throw new Error('Invalid rowIndex', rowIndex);\n }\n\n const { data } = row;\n data.forEach((value, columnIndex) => {\n if (!IrisGridUtils.isValidIndex(columnIndex)) {\n throw new Error('Invalid columnIndex', columnIndex);\n }\n });\n });\n\n this.pendingNewDataMap = map;\n\n this.pendingNewRowCount = Math.max(\n this.pendingNewRowCount,\n this.maxPendingDataRow\n );\n\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n }\n\n get pendingRowCount() {\n return this.pendingNewRowCount;\n }\n\n set pendingRowCount(count) {\n if (count === this.pendingNewRowCount) {\n return;\n }\n\n this.pendingNewRowCount = Math.max(0, count, this.maxPendingDataRow);\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n get maxPendingDataRow() {\n return this.pendingNewDataMap.size > 0\n ? Math.max(...this.pendingNewDataMap.keys()) + 1\n : 0;\n }\n\n get columnCount() {\n return this.columns.length;\n }\n\n get floatingBottomRowCount() {\n return this.totals?.showOnTop\n ? 0\n : this.totals?.operationOrder?.length ?? 0;\n }\n\n get floatingTopRowCount() {\n return this.totals?.showOnTop\n ? this.totals?.operationOrder?.length ?? 0\n : 0;\n }\n\n get isExportAvailable() {\n return this.table.freeze != null;\n }\n\n get isColumnStatisticsAvailable() {\n return this.table.getColumnStatistics != null;\n }\n\n get isValuesTableAvailable() {\n return this.table.selectDistinct != null && this.table.copy != null;\n }\n\n get isRollupAvailable() {\n return this.table.rollup != null;\n }\n\n get isSelectDistinctAvailable() {\n return this.table.selectDistinct != null;\n }\n\n get isCustomColumnsAvailable() {\n return this.table.applyCustomColumns != null;\n }\n\n get isFormatColumnsAvailable() {\n return this.table.applyCustomColumns != null;\n }\n\n get isChartBuilderAvailable() {\n return true;\n }\n\n get isTotalsAvailable() {\n return this.table.getTotalsTable != null;\n }\n\n get isEditable() {\n return !this.isSaveInProgress && this.inputTable != null;\n }\n\n cacheFormattedValue(x, y, text) {\n if (this.formattedStringData[x] == null) {\n this.formattedStringData[x] = [];\n }\n this.formattedStringData[x][y] = text;\n }\n\n cachePendingValue(x, y, text) {\n if (this.pendingStringData[x] == null) {\n this.pendingStringData[x] = [];\n }\n this.pendingStringData[x][y] = text;\n }\n\n clearPendingValue(x, y) {\n const column = this.pendingStringData[x];\n if (column != null) {\n delete column[y];\n }\n }\n\n textValueForCell(x, y) {\n // First check if there's any pending values we should read from\n if (this.pendingStringData[x]?.[y] !== undefined) {\n return this.pendingStringData[x][y];\n }\n\n // Use a separate cache from memoization just for the strings that are currently displayed\n if (this.formattedStringData[x]?.[y] === undefined) {\n const value = this.valueForCell(x, y);\n if (value == null) {\n return null;\n }\n\n const column = this.totalsColumn(x, y) ?? this.columns[x];\n const hasCustomColumnFormat = this.getCachedCustomColumnFormatFlag(\n this.formatter,\n column.name,\n column.type\n );\n let formatOverride = null;\n if (!hasCustomColumnFormat) {\n const formatForCell = this.formatForCell(x, y);\n if (formatForCell?.formatString != null) {\n formatOverride = formatForCell;\n }\n }\n const text = this.displayString(\n value,\n column.type,\n column.name,\n formatOverride\n );\n this.cacheFormattedValue(x, y, text);\n }\n\n return this.formattedStringData[x][y];\n }\n\n textForCell(x, y) {\n const text = this.textValueForCell(x, y);\n if (text == null && this.isKeyColumn(x)) {\n const pendingRow = this.pendingRow(y);\n if (this.pendingDataMap.has(pendingRow)) {\n // Asterisk to show a value is required for a key column on a row that has some data entered\n return '*';\n }\n }\n return text;\n }\n\n truncationCharForCell(x) {\n const column = this.columns[x];\n const { type } = column;\n if (\n TableUtils.isNumberType(type) &&\n this.formatter.truncateNumbersWithPound\n ) {\n return '#';\n }\n\n return undefined;\n }\n\n colorForCell(x, y, theme) {\n const data = this.dataForCell(x, y);\n if (data) {\n const { format, value } = data;\n if (value == null || value === '') {\n return theme.nullStringColor;\n }\n if (format && format.color) {\n return format.color;\n }\n\n if (this.isPendingRow(y)) {\n // Data entered in a pending row\n return theme.pendingTextColor;\n }\n\n // Fallback to formatting based on the value/type of the cell\n if (value != null) {\n const column = this.totalsColumn(x, y) ?? this.columns[x];\n if (TableUtils.isDateType(column.type) || column.name === 'Date') {\n return theme.dateColor;\n }\n if (TableUtils.isNumberType(column.type)) {\n if (value > 0) {\n return theme.positiveNumberColor;\n }\n if (value < 0) {\n return theme.negativeNumberColor;\n }\n return theme.zeroNumberColor;\n }\n }\n } else if (this.isPendingRow(y) && this.isKeyColumn(x)) {\n return theme.errorTextColor;\n }\n\n return theme.textColor;\n }\n\n backgroundColorForCell(x, y) {\n return this.formatForCell(x, y)?.backgroundColor;\n }\n\n textAlignForCell(x) {\n const column = this.columns[x];\n const { type } = column;\n\n if (TableUtils.isNumberType(type)) {\n return 'right';\n }\n if (TableUtils.isDateType(type) || column.name === 'Date') {\n return 'center';\n }\n return 'left';\n }\n\n textForColumnHeader(x) {\n const column = this.columns[x];\n return `${column.name}`;\n }\n\n textForRowFooter(y) {\n const totalsRow = this.totalsRow(y);\n if (totalsRow != null) {\n return this.totals.operationOrder[totalsRow];\n }\n return '';\n }\n\n /**\n * Returns an array of the columns in the model\n * The order of model columns should never change once established\n */\n get columns() {\n return this.table.columns;\n }\n\n /**\n * Used to get the initial moved columns based on layout hints\n */\n get movedColumns() {\n let movedColumns = [];\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, index) => {\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, index, 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 getMemoizedColumnMap = memoize(tableColumns => {\n const columnMap = new Map();\n tableColumns.forEach(col => columnMap.set(col.name, col));\n return columnMap;\n });\n\n get columnMap() {\n return this.getMemoizedColumnMap(this.table.columns);\n }\n\n getMemoizedFrontColumns = memoize(\n layoutHintsFrontColumns => layoutHintsFrontColumns ?? []\n );\n\n get frontColumns() {\n return this.getMemoizedFrontColumns(this.layoutHints?.frontColumns);\n }\n\n getMemoizedBackColumns = memoize(\n layoutHintsBackColumns => layoutHintsBackColumns ?? []\n );\n\n get backColumns() {\n return this.getMemoizedBackColumns(this.layoutHints?.backColumns);\n }\n\n getMemoizedFrozenColumns = memoize(\n (layoutHintsFrozenColumns, userFrozenColumns) =>\n userFrozenColumns ?? layoutHintsFrozenColumns ?? []\n );\n\n get frozenColumns() {\n return this.getMemoizedFrozenColumns(\n this.layoutHints?.frozenColumns,\n this.userFrozenColumns\n );\n }\n\n get layoutHints() {\n return this.table.layoutHints;\n }\n\n get floatingLeftColumnCount() {\n return this.frozenColumns.length;\n }\n\n get groupedColumns() {\n return [];\n }\n\n get description() {\n return this.table.description;\n }\n\n row(y) {\n const totalsRowCount = this.totals?.operationOrder?.length ?? 0;\n const showOnTop = this.totals?.showOnTop ?? false;\n const totalsRow = this.totalsRow(y);\n if (totalsRow != null) {\n const operation = this.totals.operationOrder[totalsRow];\n return this.totalsDataMap?.get(operation) ?? null;\n }\n const pendingRow = this.pendingRow(y);\n if (pendingRow != null) {\n return this.pendingNewDataMap.get(pendingRow) ?? null;\n }\n const offset = this.viewportData?.offset ?? 0;\n const viewportY = (showOnTop ? y - totalsRowCount : y) - offset;\n return this.viewportData?.rows?.[viewportY] ?? null;\n }\n\n /**\n * Retrieve the totals column if this is a totals row, or null otherwise\n * @param {ModelIndex} x Column index to get the totals column from\n * @param {ModelIndex} y Row index to get the totals column from\n * @returns {dh.Column | null}\n */\n totalsColumn(x, y) {\n const totalsRow = this.totalsRow(y);\n if (totalsRow == null) return null;\n\n const operation = this.totals.operationOrder[totalsRow];\n const tableColumn = this.columns[x];\n\n // If there's exactly one operation applied to this column, the totals table result column will just be the same\n // If there's more than one operation, the totals table column will be the original name with two underscores and the operation appended\n const operations = this.totals.operationMap[tableColumn.name];\n const isOnlyOperation =\n operations?.length === 1 && operations[0] === operation;\n const matchName = isOnlyOperation\n ? tableColumn.name\n : `${tableColumn.name}__${operation}`;\n\n return this.totalsTable.columns.find(column => column.name === matchName);\n }\n\n /**\n * Translate from the row in the model to a row in the totals table.\n * If the row is not a totals row, return null\n * @param {number} y The row in the model to get the totals row for\n * @returns {number|null} The row within the totals table if it's a totals row, null otherwise\n */\n totalsRow(y) {\n const totalsRowCount = this.totals?.operationOrder?.length ?? 0;\n const showOnTop = this.totals?.showOnTop ?? false;\n const totalsRow = showOnTop ? y : y - this.table.size;\n if (totalsRow >= 0 && totalsRow < totalsRowCount) {\n return totalsRow;\n }\n return null;\n }\n\n /**\n * Translate from the row in the model to a pending input row.\n * If the row is not a pending input row, return null\n * @param {number} y The row in the model to get the pending row for\n * @returns {number|null} The row within the pending input rows if it's a pending row, null otherwise\n */\n pendingRow(y) {\n const pendingRow = y - this.floatingTopRowCount - this.table.size;\n if (pendingRow >= 0 && pendingRow < this.pendingNewRowCount) {\n return pendingRow;\n }\n\n return null;\n }\n\n /**\n * Check if a row is a totals table row\n * @param {number} y The row in the model to check if it's a totals table row\n * @returns {boolean} True if the row is a totals row, false if not\n */\n isTotalsRow(y) {\n return this.totalsRow(y) != null;\n }\n\n /**\n * Check if a row is a pending input row\n * @param {number} y The row in the model to check if it's a pending new row\n * @returns {boolean} True if the row is a pending new row, false if not\n */\n isPendingRow(y) {\n return this.pendingRow(y) != null;\n }\n\n dataForCell(x, y) {\n return this.row(y)?.data.get(x);\n }\n\n formatForCell(x, y) {\n return this.dataForCell(x, y)?.format;\n }\n\n valueForCell(x, y) {\n const data = this.dataForCell(x, y);\n if (data) {\n return data.value ?? null;\n }\n return undefined;\n }\n\n copyViewportData(data) {\n if (!data) {\n log.warn('invalid data!');\n return;\n }\n\n this.viewportData = this.extractViewportData(data);\n this.formattedStringData = [];\n }\n\n copyTotalsData(totalsData) {\n if (!totalsData) {\n log.warn('invalid data!');\n return;\n }\n\n const { columns, rows } = totalsData;\n if (rows.length !== 1) {\n log.error(\n 'Unexpected number of rows received for totals table, ignoring update'\n );\n return;\n }\n\n const dataMap = new Map();\n const row = rows[0];\n const defaultOperation =\n this.totals?.defaultOperation ?? AggregationOperation.SUM;\n const operationMap = this.totals?.operationMap;\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n const [\n name,\n operation = operationMap?.[name]?.[0] ?? defaultOperation,\n ] = column.name.split('__');\n if (!dataMap.has(operation)) {\n dataMap.set(operation, { data: new Map() });\n }\n const { data: rowData } = dataMap.get(operation);\n const columnIndex = this.columns.findIndex(col => col.name === name);\n rowData.set(columnIndex, {\n value: row.get(column),\n format: row.getFormat(column),\n });\n }\n\n log.debug2('copyTotalsData', dataMap);\n\n this.totalsDataMap = dataMap;\n this.formattedStringData = [];\n }\n\n /**\n * Gets the model index for a column from its name\n * @param {string} name The column name\n * @returns {number | undefined} The ModelIndex if it exists\n */\n getColumnIndexByName(name) {\n return this.getColumnIndicesByNameMap(this.columns).get(name);\n }\n\n getColumnIndicesByNameMap = memoize(columns => {\n const indices = new Map();\n columns.forEach(({ name }, i) => indices.set(name, i));\n return indices;\n });\n\n /**\n * Copies all the viewport data into an object that we can reference later.\n * @param {ViewportData} data The data to copy from\n */\n extractViewportData(data) {\n const newData = {\n offset: data.offset,\n rows: [],\n };\n\n const { columns } = data;\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const newRow = this.extractViewportRow(row, columns);\n newData.rows.push(newRow);\n }\n\n return newData;\n }\n\n extractViewportRow(row, columns) {\n const data = new Map();\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n\n data.set(this.getColumnIndexByName(column.name), {\n value: row.get(column),\n format: row.getFormat(column),\n });\n }\n\n return { data };\n }\n\n closeSubscription() {\n log.debug2('closeSubscription', this.subscription);\n if (this.subscription) {\n this.subscription.close();\n this.subscription = null;\n }\n\n this.setViewport.cancel();\n this.applyViewport.cancel();\n }\n\n get filter() {\n return this.table.filter;\n }\n\n set filter(filter) {\n this.closeSubscription();\n this.table.applyFilter(filter);\n this.applyViewport();\n }\n\n get formatter() {\n return this.irisFormatter;\n }\n\n set formatter(formatter) {\n this.irisFormatter = formatter;\n this.formattedStringData = [];\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.FORMATTER_UPDATED));\n }\n\n displayString(value, columnType, columnName = '', formatOverride = null) {\n return this.getCachedFormattedString(\n this.formatter,\n value,\n columnType,\n columnName,\n formatOverride\n );\n }\n\n get sort() {\n return this.table.sort;\n }\n\n set sort(sort) {\n this.closeSubscription();\n this.table.applySort(sort);\n this.applyViewport();\n }\n\n get customColumns() {\n return this.customColumnList;\n }\n\n set customColumns(customColumns) {\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() {\n return this.formatColumnList;\n }\n\n set formatColumns(formatColumns) {\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) {\n this.userFrozenColumns = columns;\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.TABLE_CHANGED));\n }\n\n set totalsConfig(totalsConfig) {\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 CustomEvent(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 CustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, { detail: err })\n );\n });\n }\n\n setTotalsTable(totalsTable) {\n log.debug('setTotalsTable', totalsTable);\n\n if (this.totalsTable !== null) {\n if (this.listenerCount > 0) {\n this.removeTotalsListeners(this.totalsTable);\n }\n\n this.totalsTable.close();\n }\n\n this.totalsTable = totalsTable;\n this.totalsDataMap = null;\n\n if (this.listenerCount > 0 && this.totalsTable != null) {\n this.addTotalsListeners(totalsTable);\n }\n }\n\n setViewport(top, bottom, columns) {\n if (bottom < top) {\n log.error('Invalid viewport', top, bottom);\n return;\n }\n\n const { viewport } = this;\n if (\n viewport != null &&\n viewport.top === top &&\n viewport.bottom === bottom &&\n viewport.columns === columns\n ) {\n log.debug2('Ignoring duplicate viewport', viewport);\n return;\n }\n\n this.viewport = {\n top,\n bottom,\n columns,\n };\n log.debug2('setViewport', this.viewport);\n\n this.applyViewport();\n }\n\n /**\n * Applies the current viewport to the underlying table.\n */\n applyViewport() {\n if (!this.viewport) {\n return;\n }\n\n log.debug2('applyViewport', this.viewport);\n const { top, bottom, columns } = this.viewport;\n const [viewportTop, viewportBottom] = this.getCachedViewportRowRange(\n top,\n bottom\n );\n this.applyBufferedViewport(viewportTop, viewportBottom, columns);\n }\n\n applyBufferedViewport(viewportTop, viewportBottom, columns) {\n log.debug2('applyBufferedViewport', viewportTop, viewportBottom, columns);\n if (this.subscription == null) {\n log.debug2('applyBufferedViewport creating new subscription');\n this.subscription = this.table.setViewport(\n viewportTop,\n viewportBottom,\n columns\n );\n } else {\n log.debug2('applyBufferedViewport using existing subscription');\n this.subscription.setViewport(viewportTop, viewportBottom, columns);\n }\n }\n\n async snapshot(ranges, includeHeaders = false, formatValue = value => value) {\n if (this.subscription == null) {\n throw new Error('No subscription available');\n }\n\n const consolidated = GridRange.consolidate(ranges);\n if (!IrisGridUtils.isValidSnapshotRanges(consolidated)) {\n throw new Error('Invalid snapshot ranges', ranges);\n }\n\n // Need to separate out the floating ranges as they're from a different source\n const topFloatingRowsSet = new Set();\n const tableRanges = [];\n const bottomFloatingRowsSet = new Set();\n for (let i = 0; i < consolidated.length; i += 1) {\n const range = consolidated[i];\n\n // Get the rows that are in the top aggregations section\n for (\n let r = range.startRow;\n r <= range.endRow && r < this.floatingTopRowCount;\n r += 1\n ) {\n topFloatingRowsSet.add(r);\n }\n\n // Separate out the range that is part of the actual table (ie. not the floating ranges, not aggregations)\n if (\n range.endRow >= this.floatingTopRowCount &&\n range.startRow <= this.floatingTopRowCount + this.table.size\n ) {\n tableRanges.push(\n new GridRange(\n range.startColumn,\n Math.min(Math.max(0, range.startRow - this.floatingTopRowCount)),\n range.endColumn,\n Math.min(\n Math.max(0, range.endRow - this.floatingTopRowCount),\n this.table.size - this.floatingTopRowCount\n )\n )\n );\n }\n\n // Get the rows that are in the bottom aggregations section\n for (\n let r = Math.max(\n range.startRow,\n this.floatingTopRowCount + this.table.size\n );\n r <= range.endRow &&\n r <\n this.floatingTopRowCount +\n this.table.size +\n this.floatingBottomRowCount;\n r += 1\n ) {\n bottomFloatingRowsSet.add(r);\n }\n }\n\n const columns = IrisGridUtils.columnsFromRanges(consolidated, this.columns);\n const result = [];\n if (includeHeaders) {\n result.push(columns.map(c => c.name));\n }\n const topFloatingRows = [...topFloatingRowsSet].sort();\n for (let i = 0; i < topFloatingRows.length; i += 1) {\n const row = topFloatingRows[i];\n const rowData = columns.map(column =>\n formatValue(\n this.valueForCell(this.getColumnIndexByName(column.name), row),\n column\n )\n );\n if (includeHeaders) {\n rowData.push(this.textForRowFooter(row));\n }\n result.push(rowData);\n }\n\n if (tableRanges.length > 0) {\n const rangeSet = IrisGridUtils.rangeSetFromRanges(tableRanges);\n const snapshot = await this.subscription.snapshot(rangeSet, columns);\n result.push(\n ...snapshot.rows.map(rowData =>\n columns.map(column => formatValue(rowData.get(column), column))\n )\n );\n }\n\n const bottomFloatingRows = [...bottomFloatingRowsSet].sort();\n for (let i = 0; i < bottomFloatingRows.length; i += 1) {\n const row = bottomFloatingRows[i];\n const rowData = columns.map(column =>\n formatValue(\n this.valueForCell(this.getColumnIndexByName(column.name), row),\n column\n )\n );\n if (includeHeaders) {\n rowData.push(this.textForRowFooter(row));\n }\n result.push(rowData);\n }\n\n return result;\n }\n\n /**\n * Get a text snapshot of the provided ranges\n * @param {GridRange[]} ranges The ranges to get the snapshot for\n * @param {boolean} includeHeaders Whether to include the headers in the snapshot or not\n * @param {(unknown, dh.Column) => string} formatValue Function for formatting the raw value into a string\n * @returns {string} A formatted string of all the data, columns separated by `\\t` and rows separated by `\\n`\n */\n async textSnapshot(\n ranges,\n includeHeaders = false,\n formatValue = value => `${value}`\n ) {\n log.debug2('textSnapshot', ranges, includeHeaders);\n\n const data = await this.snapshot(ranges, includeHeaders, formatValue);\n return data.map(row => row.join('\\t')).join('\\n');\n }\n\n get isFilterRequired() {\n return this.table.isUncoalesced;\n }\n\n isFilterable(columnIndex) {\n return this.getCachedFilterableColumnSet(this.columns).has(columnIndex);\n }\n\n async valuesTable(column) {\n let table = null;\n try {\n table = await this.table.copy();\n table.applyFilter([]);\n table.applySort([]);\n return table.selectDistinct([column]);\n } finally {\n if (table != null) {\n table.close();\n }\n }\n }\n\n async export() {\n return this.table.freeze();\n }\n\n columnStatistics(column) {\n return this.table.getColumnStatistics(column);\n }\n\n getCachedFilterableColumnSet = memoize(\n columns => new Set(columns.map((_, index) => index))\n );\n\n getCachedFormattedString = memoizeClear(\n (formatter, value, columnType, columnName, formatOverride) =>\n formatter.getFormattedString(\n value,\n columnType,\n columnName,\n formatOverride\n ),\n { max: 10000 }\n );\n\n getCachedCustomColumnFormatFlag = memoizeClear(\n FormatterUtils.isCustomColumnFormatDefined,\n { max: 10000 }\n );\n\n getCachedViewportRowRange = memoize((top, bottom) => {\n const viewHeight = bottom - top;\n const viewportTop = Math.max(\n 0,\n top - viewHeight * IrisGridTableModel.ROW_BUFFER_PAGES\n );\n const viewportBottom =\n bottom + viewHeight * IrisGridTableModel.ROW_BUFFER_PAGES;\n return [viewportTop, viewportBottom];\n });\n\n getCachedPendingErrors = memoize(\n (pendingDataMap, columns, keyColumnCount) => {\n const map = new Map();\n pendingDataMap.forEach((row, rowIndex) => {\n const { data: rowData } = row;\n for (let i = 0; i < keyColumnCount; i += 1) {\n if (!rowData.has(i)) {\n if (!map.has(rowIndex)) {\n map.set(rowIndex, []);\n }\n map\n .get(rowIndex)\n .push(new MissingKeyError(rowIndex, columns[i].name));\n }\n }\n });\n return map;\n }\n );\n\n isColumnMovable(modelIndex) {\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) {\n return this.frozenColumns.includes(this.columns[modelIndex].name);\n }\n\n isKeyColumn(x) {\n return x < (this.inputTable?.keyColumns.length ?? 0);\n }\n\n isRowMovable() {\n return false;\n }\n\n isEditableRange(range) {\n return (\n this.inputTable != null &&\n GridRange.isBounded(range) &&\n ((this.isPendingRow(range.startRow) && this.isPendingRow(range.endRow)) ||\n (range.startColumn >= this.inputTable.keyColumns.length &&\n range.endColumn >= this.inputTable.keyColumns.length)) &&\n range.startRow >= this.floatingTopRowCount &&\n range.startRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount &&\n range.endRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount\n );\n }\n\n isDeletableRange(range) {\n return (\n this.inputTable != null &&\n range.startRow != null &&\n range.endRow != null &&\n range.startRow >= this.floatingTopRowCount &&\n range.startRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount &&\n range.endRow <\n this.floatingTopRowCount + this.table.size + this.pendingRowCount\n );\n }\n\n isEditableRanges(ranges) {\n return ranges.every(range => this.isEditableRange(range));\n }\n\n isDeletableRanges(ranges) {\n return ranges.every(range => this.isDeletableRange(range));\n }\n\n /**\n * @returns {GridRange} A range corresponding to the underlying table\n */\n getTableAreaRange() {\n return new GridRange(\n null,\n this.floatingTopRowCount,\n null,\n this.floatingTopRowCount + this.table.size - 1\n );\n }\n\n /**\n * @returns {GridRange} A range corresponding to the pending new rows\n */\n getPendingAreaRange() {\n return new GridRange(\n null,\n this.floatingTopRowCount + this.table.size,\n null,\n this.floatingTopRowCount + this.table.size + this.pendingNewRowCount - 1\n );\n }\n\n /**\n * Set value in an editable table\n * @param {number} x The column to set\n * @param {number} y The row to set\n * @param {string} value The value to set\n * @returns {Promise<void>} A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n async setValueForCell(x, y, text) {\n // Cache the value in our pending string cache so that it stays displayed until our edit has been completed\n return this.setValueForRanges([new GridRange(x, y, x, y)], text);\n }\n\n /**\n * Set value in an editable table\n * @param {GridRange[]} ranges The ranges to set\n * @param {string} value The values to set\n * @returns {Promise<void>} A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n async setValueForRanges(ranges, text) {\n if (!this.isEditableRanges(ranges)) {\n throw new Error('Uneditable ranges', ranges);\n }\n\n try {\n // Cache the value in our pending string cache so that it stays displayed until our edit has been completed\n const columnSet = new Set();\n\n // Formatted text for each column\n // Since there could be different formatting for each column, but the value will be the same across rows\n const formattedText = [];\n GridRange.forEachCell(ranges, (x, y) => {\n const column = this.columns[x];\n columnSet.add(column);\n if (formattedText[x] === undefined) {\n const value = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n formattedText[x] =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n }\n this.cachePendingValue(x, y, formattedText[x]);\n });\n\n // Take care of updates to the pending new area first, as they can be updated synchronously\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 GridRange.offset(\n range,\n 0,\n -(this.floatingTopRowCount + this.table.size)\n )\n );\n if (pendingRanges.length > 0) {\n const newDataMap = new Map(this.pendingNewDataMap);\n GridRange.forEachCell(pendingRanges, (columnIndex, rowIndex) => {\n if (!newDataMap.has(rowIndex)) {\n newDataMap.set(rowIndex, { data: new Map() });\n }\n\n const column = this.columns[columnIndex];\n const row = newDataMap.get(rowIndex);\n const { data: rowData } = row;\n const newRowData = new Map(rowData);\n const value = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n if (value != null) {\n newRowData.set(columnIndex, { value });\n } else {\n newRowData.delete(columnIndex);\n }\n if (newRowData.size > 0) {\n newDataMap.set(rowIndex, { ...row, data: newRowData });\n } else {\n newDataMap.delete(rowIndex);\n }\n });\n this.pendingDataMap = newDataMap;\n }\n\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\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 // Get a snapshot of the full rows, as we need to write a full row when editing\n const data = await this.snapshot(\n tableRanges.map(\n range => new GridRange(null, range.startRow, null, range.endRow)\n )\n );\n const newRows = data.map(row => {\n const newRow = {};\n for (let c = 0; c < this.columns.length; c += 1) {\n newRow[this.columns[c].name] = row[c];\n }\n\n columnSet.forEach(column => {\n newRow[column.name] = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n });\n return newRow;\n });\n\n const result = await this.inputTable.addRows(newRows);\n\n log.debug(\n 'setValueForRanges(',\n ranges,\n ',',\n text,\n ') set tableRanges',\n tableRanges,\n 'result',\n result\n );\n }\n\n // Add the changes to the formatted cache so it's still displayed until the update event is received\n // The update event could be received on the next tick, after the input rows have been committed,\n // so make sure we don't display stale data\n GridRange.forEachCell(ranges, (x, y) => {\n this.cacheFormattedValue(x, y, formattedText[x]);\n });\n } catch (err) {\n log.error('Unable to set ranges', ranges, text, err);\n } finally {\n GridRange.forEachCell(ranges, (x, y) => {\n this.clearPendingValue(x, y);\n });\n }\n }\n\n async setValues(edits = []) {\n log.debug('setValues(', edits, ')');\n if (\n !edits.every(edit =>\n this.isEditableRange(\n GridRange.makeCell(edit.column ?? edit.x, edit.row ?? edit.y)\n )\n )\n ) {\n throw new Error('Uneditable ranges', edits);\n }\n\n try {\n const newDataMap = new Map(this.pendingNewDataMap);\n\n // Cache the display values\n edits.forEach(edit => {\n const { text } = edit;\n const x = edit.column ?? edit.x;\n const y = edit.row ?? edit.y;\n const column = this.columns[x];\n const value = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n const formattedText =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n this.cachePendingValue(x, y, formattedText);\n\n // Take care of updates to the pending new area as well, as that can be updated synchronously\n const pendingRow = this.pendingRow(y);\n if (pendingRow != null) {\n if (!newDataMap.has(pendingRow)) {\n newDataMap.set(pendingRow, { data: new Map() });\n }\n\n const row = newDataMap.get(pendingRow);\n const { data: rowData } = row;\n const newRowData = new Map(rowData);\n if (value != null) {\n newRowData.set(x, { value });\n } else {\n newRowData.delete(x);\n }\n if (newRowData.size > 0) {\n newDataMap.set(pendingRow, { ...row, data: newRowData });\n } else {\n newDataMap.delete(pendingRow);\n }\n }\n });\n\n this.pendingDataMap = newDataMap;\n\n // Send an update right after setting the pending map so the values are displayed immediately\n this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.UPDATED));\n\n // Need to group by row...\n const rowEditMap = edits.reduce((rowMap, edit) => {\n const y = edit.row ?? edit.y;\n if (!rowMap.has(y)) {\n rowMap.set(y, []);\n }\n rowMap.get(y).push(edit);\n return rowMap;\n }, new Map());\n\n const ranges = GridRange.consolidate(\n edits.map(edit =>\n GridRange.makeCell(edit.column ?? edit.x, edit.row ?? edit.y)\n )\n );\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n\n if (tableRanges.length > 0) {\n // Get a snapshot of the full rows, as we need to write a full row when editing\n const data = await this.snapshot(\n tableRanges.map(\n range => new GridRange(null, range.startRow, null, range.endRow)\n )\n );\n const newRows = data.map((row, dataIndex) => {\n let rowIndex = null;\n let r = dataIndex;\n for (let i = 0; i < tableRanges.length; i += 1) {\n const range = tableRanges[i];\n const rangeRowCount = GridRange.rowCount([range]);\n if (r < rangeRowCount) {\n rowIndex = range.startRow + r;\n break;\n }\n r -= rangeRowCount;\n }\n\n const newRow = {};\n for (let c = 0; c < this.columns.length; c += 1) {\n newRow[this.columns[c].name] = row[c];\n }\n\n const rowEdits = rowEditMap.get(rowIndex);\n if (rowEdits != null) {\n rowEdits.forEach(edit => {\n const column = this.columns[edit.column ?? edit.x];\n newRow[column.name] = TableUtils.makeValue(\n column.type,\n edit.text,\n this.formatter.timeZone\n );\n });\n }\n return newRow;\n });\n\n log.info('setValues setting tableRanges', tableRanges);\n\n const result = await this.inputTable.addRows(newRows);\n\n log.info('setValues set tableRanges', tableRanges, 'SUCCESS', result);\n }\n\n // We've sent the changes to the server, but have not yet got an update with those changes committed\n // Add the changes to the formatted cache so it's still displayed until the update event is received\n // The update event could be received on the next tick, after the input rows have been committed,\n // so make sure we don't display stale data\n edits.forEach(edit => {\n const { text } = edit;\n const x = edit.column ?? edit.x;\n const y = edit.row ?? edit.y;\n const column = this.columns[x];\n const value = TableUtils.makeValue(\n column.type,\n text,\n this.formatter.timeZone\n );\n const formattedText =\n value != null\n ? this.displayString(value, column.type, column.name)\n : null;\n this.cacheFormattedValue(x, y, formattedText);\n });\n } finally {\n edits.forEach(edit => {\n this.clearPendingValue(edit.column, edit.row);\n });\n }\n }\n\n async commitPending() {\n if (this.pendingNewDataMap.size <= 0) {\n throw new Error('No pending changes to commit');\n }\n\n try {\n this.isSaveInProgress = true;\n\n const newRows = [];\n this.pendingNewDataMap.forEach(row => {\n const newRow = {};\n row.data.forEach(({ value }, columnIndex) => {\n const column = this.columns[columnIndex];\n newRow[column.name] = value;\n });\n newRows.push(newRow);\n });\n const result = await this.inputTable.addRows(newRows);\n\n log.debug('commitPending()', this.pendingNewDataMap, 'result', result);\n\n this.pendingNewDataMap = new Map();\n this.pendingNewDataErrors = new Map();\n this.pendingNewRowCount = Math.max(\n 0,\n (this.viewport?.bottom ?? 0) - this.table.size\n );\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n\n return result;\n } finally {\n this.isSaveInProgress = false;\n }\n }\n\n editValueForCell(x, y) {\n return this.textValueForCell(x, y);\n }\n\n async delete(ranges) {\n if (!this.isDeletableRanges(ranges)) {\n throw new Error('Undeletable ranges', ranges);\n }\n\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 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(this.pendingNewDataMap);\n for (let i = 0; i < pendingRanges.length; i += 1) {\n const pendingRange = pendingRanges[i];\n for (let r = pendingRange.startRow; r <= pendingRange.endRow; r += 1) {\n newDataMap.delete(r);\n }\n }\n this.pendingNewDataMap = newDataMap;\n\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new CustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n\n this.dispatchEvent(new CustomEvent(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 null;\n }\n const [data, deleteTable] = await Promise.all([\n // Need to get the key values of each row\n this.snapshot(\n tableRanges.map(\n range =>\n 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 const result = await this.inputTable.deleteTable(deleteTable);\n deleteTable.close();\n return result;\n }\n\n isValidForCell(x, y, value) {\n try {\n const column = this.columns[x];\n TableUtils.makeValue(column.type, value, this.formatter.timeZone);\n return true;\n } catch (e) {\n return false;\n }\n }\n}\n\nexport default IrisGridTableModel;\n"],"file":"IrisGridTableModel.js"}
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
import { Column, FilterCondition, InputTable, RollupConfig, Row, Sort, Table, TableViewportSubscription, TreeTable } from '@deephaven/jsapi-shim';
|
|
3
|
-
import { Formatter } from '@deephaven/jsapi-utils';
|
|
4
|
-
import IrisGridProxyModel from './IrisGridProxyModel';
|
|
1
|
+
export default IrisGridTestUtils;
|
|
5
2
|
declare class IrisGridTestUtils {
|
|
6
3
|
static DEFAULT_TYPE: string;
|
|
7
|
-
static valueForCell(rowIndex:
|
|
8
|
-
static makeColumn(name
|
|
9
|
-
static
|
|
10
|
-
static
|
|
11
|
-
static
|
|
12
|
-
static
|
|
13
|
-
static
|
|
14
|
-
static
|
|
15
|
-
static
|
|
16
|
-
static
|
|
17
|
-
static
|
|
18
|
-
static makeSubscription(table?: Table): TableViewportSubscription;
|
|
19
|
-
static makeModel(table?: Table, formatter?: Formatter, inputTable?: null): IrisGridProxyModel;
|
|
4
|
+
static valueForCell(rowIndex: any, columnIndex: any, formatValue: any): string;
|
|
5
|
+
static makeColumn(name: any, type?: string, index?: number): any;
|
|
6
|
+
static makeColumns(count?: number): any[];
|
|
7
|
+
static makeUserColumnWidths(count?: number): Map<any, any>;
|
|
8
|
+
static makeRow(i: any): any;
|
|
9
|
+
static makeFilter(): any;
|
|
10
|
+
static makeSort(): any;
|
|
11
|
+
static makeTable(columns?: any[], size?: number): any;
|
|
12
|
+
static makeInputTable(keyColumns?: any[]): any;
|
|
13
|
+
static makeSubscription(table?: any): any;
|
|
14
|
+
static makeModel(table?: any, formatter?: Formatter, inputTable?: null): IrisGridProxyModel;
|
|
20
15
|
}
|
|
21
|
-
|
|
16
|
+
import { Formatter } from "packages/jsapi-utils/src/Formatter";
|
|
17
|
+
import IrisGridProxyModel from "./IrisGridProxyModel";
|
|
22
18
|
//# sourceMappingURL=IrisGridTestUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridTestUtils.d.ts","sourceRoot":"","sources":["../src/IrisGridTestUtils.
|
|
1
|
+
{"version":3,"file":"IrisGridTestUtils.d.ts","sourceRoot":"","sources":["../src/IrisGridTestUtils.js"],"names":[],"mappings":";AAIA;IACE,4BAAyC;IAEzC,+EAMC;IAED,iEAEC;IAED,0CAMC;IAED,2DAMC;IAED,4BAQC;IAED,yBAEC;IAED,uBAEC;IAED,sDAOC;IAED,+CAEC;IAED,0CAEC;IAED,4FAMC;CACF"}
|
|
@@ -18,7 +18,6 @@ class IrisGridTestUtils {
|
|
|
18
18
|
static makeColumn(name) {
|
|
19
19
|
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : IrisGridTestUtils.DEFAULT_TYPE;
|
|
20
20
|
var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
21
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
22
21
|
return new dh.Column({
|
|
23
22
|
index,
|
|
24
23
|
name,
|
|
@@ -26,11 +25,6 @@ class IrisGridTestUtils {
|
|
|
26
25
|
});
|
|
27
26
|
}
|
|
28
27
|
|
|
29
|
-
static makeRollupTableConfig() {
|
|
30
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
-
return new dh.RollupTableConfig();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
28
|
static makeColumns() {
|
|
35
29
|
var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 5;
|
|
36
30
|
var columns = [];
|
|
@@ -54,7 +48,6 @@ class IrisGridTestUtils {
|
|
|
54
48
|
}
|
|
55
49
|
|
|
56
50
|
static makeRow(i) {
|
|
57
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
58
51
|
var row = new dh.Row({
|
|
59
52
|
index: i,
|
|
60
53
|
name: "".concat(i)
|
|
@@ -64,38 +57,19 @@ class IrisGridTestUtils {
|
|
|
64
57
|
}
|
|
65
58
|
|
|
66
59
|
static makeFilter() {
|
|
67
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
68
60
|
return new dh.FilterCondition();
|
|
69
61
|
}
|
|
70
62
|
|
|
71
63
|
static makeSort() {
|
|
72
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
73
64
|
return new dh.Sort();
|
|
74
65
|
}
|
|
75
66
|
|
|
76
67
|
static makeTable() {
|
|
77
68
|
var columns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : IrisGridTestUtils.makeColumns();
|
|
78
69
|
var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000000000;
|
|
79
|
-
var sort = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
80
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
81
70
|
var table = new dh.Table({
|
|
82
71
|
columns,
|
|
83
|
-
size
|
|
84
|
-
sort
|
|
85
|
-
});
|
|
86
|
-
table.copy = jest.fn(() => Promise.resolve(table));
|
|
87
|
-
return table;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
static makeTreeTable() {
|
|
91
|
-
var columns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : IrisGridTestUtils.makeColumns();
|
|
92
|
-
var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000000000;
|
|
93
|
-
var sort = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
94
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
95
|
-
var table = new dh.TreeTable({
|
|
96
|
-
columns,
|
|
97
|
-
size,
|
|
98
|
-
sort
|
|
72
|
+
size
|
|
99
73
|
});
|
|
100
74
|
table.copy = jest.fn(() => Promise.resolve(table));
|
|
101
75
|
return table;
|
|
@@ -103,13 +77,11 @@ class IrisGridTestUtils {
|
|
|
103
77
|
|
|
104
78
|
static makeInputTable() {
|
|
105
79
|
var keyColumns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
106
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
107
80
|
return new dh.InputTable(keyColumns);
|
|
108
81
|
}
|
|
109
82
|
|
|
110
83
|
static makeSubscription() {
|
|
111
84
|
var table = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : IrisGridTestUtils.makeTable();
|
|
112
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
113
85
|
return new dh.TableViewportSubscription({
|
|
114
86
|
table
|
|
115
87
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridTestUtils.
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridTestUtils.js"],"names":["dh","Formatter","IrisGridProxyModel","IrisGridTestUtils","valueForCell","rowIndex","columnIndex","formatValue","value","makeColumn","name","type","DEFAULT_TYPE","index","Column","makeColumns","count","columns","i","push","makeUserColumnWidths","userColumnWidths","Map","set","toString","makeRow","row","Row","get","jest","fn","column","makeFilter","FilterCondition","makeSort","Sort","makeTable","size","table","Table","copy","Promise","resolve","makeInputTable","keyColumns","InputTable","makeSubscription","TableViewportSubscription","makeModel","formatter","inputTable"],"mappings":"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","sourcesContent":["import dh from '@deephaven/jsapi-shim';\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport IrisGridProxyModel from './IrisGridProxyModel';\n\nclass IrisGridTestUtils {\n static DEFAULT_TYPE = 'java.lang.String';\n\n static valueForCell(rowIndex, columnIndex, formatValue) {\n let value = `${rowIndex},${columnIndex}`;\n if (formatValue) {\n value = `(${value})`;\n }\n return value;\n }\n\n static makeColumn(name, type = IrisGridTestUtils.DEFAULT_TYPE, index = 0) {\n return new dh.Column({ index, name, type });\n }\n\n static makeColumns(count = 5) {\n const columns = [];\n for (let i = 0; i < count; i += 1) {\n columns.push(this.makeColumn(`${i}`, IrisGridTestUtils.DEFAULT_TYPE, i));\n }\n return columns;\n }\n\n static makeUserColumnWidths(count = 5) {\n const userColumnWidths = new Map();\n for (let i = 0; i < count; i += 1) {\n userColumnWidths.set(i.toString(), 100);\n }\n return userColumnWidths;\n }\n\n static makeRow(i) {\n const row = new dh.Row({ index: i, name: `${i}` });\n\n row.get = jest.fn(column =>\n IrisGridTestUtils.valueForCell(i, column.index)\n );\n\n return row;\n }\n\n static makeFilter() {\n return new dh.FilterCondition();\n }\n\n static makeSort() {\n return new dh.Sort();\n }\n\n static makeTable(\n columns = IrisGridTestUtils.makeColumns(),\n size = 1000000000\n ) {\n const table = new dh.Table({ columns, size });\n table.copy = jest.fn(() => Promise.resolve(table));\n return table;\n }\n\n static makeInputTable(keyColumns = []) {\n return new dh.InputTable(keyColumns);\n }\n\n static makeSubscription(table = IrisGridTestUtils.makeTable()) {\n return new dh.TableViewportSubscription({ table });\n }\n\n static makeModel(\n table = IrisGridTestUtils.makeTable(),\n formatter = new Formatter(),\n inputTable = null\n ) {\n return new IrisGridProxyModel(table, formatter, inputTable);\n }\n}\n\nexport default IrisGridTestUtils;\n"],"file":"IrisGridTestUtils.js"}
|
package/dist/IrisGridTheme.d.ts
CHANGED
|
@@ -1,41 +1,9 @@
|
|
|
1
1
|
import type { GridThemeType } from '@deephaven/grid';
|
|
2
|
-
|
|
3
|
-
export declare type IrisGridThemeType = GridThemeType & {
|
|
4
|
-
filterBarCollapsedHeight: number;
|
|
2
|
+
export declare type IrisGridThemeType = Partial<GridThemeType> & {
|
|
5
3
|
filterBarHeight: number;
|
|
4
|
+
filterBarCollapsedHeight: number;
|
|
6
5
|
reverseHeaderBarHeight: number;
|
|
7
|
-
filterIconColor: string;
|
|
8
|
-
filterBarActiveColor: GridColor;
|
|
9
|
-
contextMenuSortIconColor: GridColor;
|
|
10
|
-
contextMenuReverseIconColor: GridColor;
|
|
11
|
-
minScrimTransitionTime: number;
|
|
12
|
-
maxScrimTransitionTime: number;
|
|
13
|
-
nullStringColor: GridColor;
|
|
14
|
-
pendingTextColor: GridColor;
|
|
15
|
-
dateColor: GridColor;
|
|
16
|
-
positiveNumberColor: GridColor;
|
|
17
|
-
negativeNumberColor: GridColor;
|
|
18
|
-
zeroNumberColor: GridColor;
|
|
19
|
-
errorTextColor: GridColor;
|
|
20
|
-
groupedColumnDividerColor: GridColor;
|
|
21
|
-
linkerColumnHoverBackgroundColor: GridColor;
|
|
22
|
-
scrimBlurSize: number;
|
|
23
|
-
scrimColor: GridColor;
|
|
24
|
-
headerReverseBarColor: GridColor;
|
|
25
|
-
sortHeaderBarHeight: number;
|
|
26
|
-
headerSortBarColor: GridColor;
|
|
27
|
-
headerBarCasingColor: GridColor;
|
|
28
|
-
filterBarExpandedActiveBackgroundColor: GridColor;
|
|
29
|
-
filterBarExpandedBackgroundColor: GridColor;
|
|
30
|
-
filterBarSeparatorColor: GridColor;
|
|
31
|
-
filterBarExpandedActiveCellBackgroundColor: GridColor;
|
|
32
|
-
filterBarErrorColor: GridColor;
|
|
33
|
-
filterBarHorizontalPadding: number;
|
|
34
|
-
filterBarActiveBackgroundColor: GridColor;
|
|
35
|
-
overflowButtonColor: GridColor;
|
|
36
|
-
overflowButtonHoverColor: GridColor;
|
|
37
|
-
floatingGridRowColor: NullableGridColor;
|
|
38
6
|
};
|
|
39
|
-
declare const theme:
|
|
7
|
+
declare const theme: IrisGridThemeType;
|
|
40
8
|
export default theme;
|
|
41
9
|
//# sourceMappingURL=IrisGridTheme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridTheme.d.ts","sourceRoot":"","sources":["../src/IrisGridTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"IrisGridTheme.d.ts","sourceRoot":"","sources":["../src/IrisGridTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,oBAAY,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG;IACvD,eAAe,EAAE,MAAM,CAAC;IACxB,wBAAwB,EAAE,MAAM,CAAC;IACjC,sBAAsB,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,QAAA,MAAM,KAAK,EAAE,iBA0FX,CAAC;AAEH,eAAe,KAAK,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridTheme.ts"],"names":["IrisGridTheme","theme","Object","freeze","backgroundColor","font","headerBackgroundColor","headerColor","headerSeparatorColor","headerSeparatorHoverColor","headerHiddenSeparatorHoverColor","headerSortBarColor","headerReverseBarColor","headerBarCasingColor","headerFont","rowBackgroundColors","rowHoverBackgroundColor","selectionColor","selectionOutlineColor","selectionOutlineCasingColor","selectedRowHoverBackgroundColor","scrollBarBackgroundColor","scrollBarHoverBackgroundColor","scrollBarCasingColor","scrollBarCornerColor","scrollBarColor","scrollBarHoverColor","scrollBarActiveColor","textColor","positiveNumberColor","negativeNumberColor","zeroNumberColor","dateColor","pendingTextColor","errorTextColor","nullStringColor","filterBarActiveBackgroundColor","filterBarExpandedBackgroundColor","filterBarExpandedActiveBackgroundColor","filterBarExpandedActiveCellBackgroundColor","filterBarSeparatorColor","filterBarActiveColor","filterBarErrorColor","filterIconColor","scrimColor","contextMenuSortIconColor","contextMenuReverseIconColor","allowRowResize","autoSelectRow","gridColumnColor","gridRowColor","groupedColumnDividerColor","columnHoverBackgroundColor","headerHorizontalPadding","scrollBarSize","scrollBarHoverSize","minScrollHandleSize","rowHeight","parseInt","columnWidth","rowHeaderWidth","rowFooterWidth","columnHeaderHeight","filterBarHeight","filterBarCollapsedHeight","sortHeaderBarHeight","reverseHeaderBarHeight","filterBarHorizontalPadding","scrimBlurSize","minScrimTransitionTime","maxScrimTransitionTime","scrollSnapToRow","linkerColumnHoverBackgroundColor","treeLineColor","treeMarkerColor","treeMarkerHoverColor","floatingGridColumnColor","floatingGridRowColor","floatingRowBackgroundColors","floatingDividerInnerColor","floatingDividerOuterColor","overflowButtonColor","overflowButtonHoverColor"],"mappings":"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","sourcesContent":["import type { GridThemeType } from '@deephaven/grid';\nimport { GridColor, NullableGridColor } from '@deephaven/grid/src/GridTheme';\nimport IrisGridTheme from './IrisGridTheme.module.scss';\n\nexport type IrisGridThemeType = GridThemeType & {\n filterBarCollapsedHeight: number;\n filterBarHeight: number;\n reverseHeaderBarHeight: number;\n filterIconColor: string;\n filterBarActiveColor: GridColor;\n contextMenuSortIconColor: GridColor;\n contextMenuReverseIconColor: GridColor;\n minScrimTransitionTime: number;\n maxScrimTransitionTime: number;\n nullStringColor: GridColor;\n pendingTextColor: GridColor;\n dateColor: GridColor;\n positiveNumberColor: GridColor;\n negativeNumberColor: GridColor;\n zeroNumberColor: GridColor;\n errorTextColor: GridColor;\n groupedColumnDividerColor: GridColor;\n linkerColumnHoverBackgroundColor: GridColor;\n scrimBlurSize: number;\n scrimColor: GridColor;\n headerReverseBarColor: GridColor;\n sortHeaderBarHeight: number;\n headerSortBarColor: GridColor;\n headerBarCasingColor: GridColor;\n filterBarExpandedActiveBackgroundColor: GridColor;\n filterBarExpandedBackgroundColor: GridColor;\n filterBarSeparatorColor: GridColor;\n filterBarExpandedActiveCellBackgroundColor: GridColor;\n filterBarErrorColor: GridColor;\n filterBarHorizontalPadding: number;\n filterBarActiveBackgroundColor: GridColor;\n overflowButtonColor: GridColor;\n overflowButtonHoverColor: GridColor;\n floatingGridRowColor: NullableGridColor;\n};\n\nconst theme: Partial<IrisGridThemeType> = Object.freeze({\n backgroundColor: IrisGridTheme['grid-bg'],\n font: IrisGridTheme.font,\n headerBackgroundColor: IrisGridTheme['header-bg'],\n headerColor: IrisGridTheme['header-color'],\n headerSeparatorColor: IrisGridTheme['header-separator-color'],\n headerSeparatorHoverColor: IrisGridTheme['header-separator-hover-color'],\n headerHiddenSeparatorHoverColor:\n IrisGridTheme['header-hidden-separator-hover-color'],\n headerSortBarColor: IrisGridTheme['header-sort-bar-color'],\n headerReverseBarColor: IrisGridTheme['header-reverse-bar-color'],\n headerBarCasingColor: IrisGridTheme['header-bar-casing-color'],\n headerFont: IrisGridTheme['header-font'],\n rowBackgroundColors: IrisGridTheme['row-background-colors'],\n rowHoverBackgroundColor: IrisGridTheme['row-hover-bg'],\n selectionColor: IrisGridTheme['selection-color'],\n selectionOutlineColor: IrisGridTheme['selection-outline-color'],\n selectionOutlineCasingColor: IrisGridTheme['selection-outline-casing-color'],\n selectedRowHoverBackgroundColor: IrisGridTheme['selected-row-hover-bg'],\n scrollBarBackgroundColor: IrisGridTheme['scroll-bar-bg'],\n scrollBarHoverBackgroundColor: IrisGridTheme['scroll-bar-hover-bg'],\n scrollBarCasingColor: IrisGridTheme['scroll-bar-casing-color'],\n scrollBarCornerColor: IrisGridTheme['scroll-bar-corner-color'],\n scrollBarColor: IrisGridTheme['scroll-bar-color'],\n scrollBarHoverColor: IrisGridTheme['scroll-bar-hover-color'],\n scrollBarActiveColor: IrisGridTheme['scroll-bar-active-color'],\n textColor: IrisGridTheme['text-color'],\n positiveNumberColor: IrisGridTheme['positive-number-color'],\n negativeNumberColor: IrisGridTheme['negative-number-color'],\n zeroNumberColor: IrisGridTheme['zero-number-color'],\n dateColor: IrisGridTheme['date-color'],\n pendingTextColor: IrisGridTheme['pending-text-color'],\n errorTextColor: IrisGridTheme['error-text-color'],\n nullStringColor: IrisGridTheme['null-string-color'],\n filterBarActiveBackgroundColor: IrisGridTheme['filter-bar-active-bg'],\n filterBarExpandedBackgroundColor: IrisGridTheme['filter-bar-expanded-bg'],\n filterBarExpandedActiveBackgroundColor:\n IrisGridTheme['filter-bar-expanded-active-bg'],\n filterBarExpandedActiveCellBackgroundColor:\n IrisGridTheme['filter-bar-expanded-active-cell-bg'],\n filterBarSeparatorColor: IrisGridTheme['filter-bar-separator-color'],\n filterBarActiveColor: IrisGridTheme['filter-bar-active-color'],\n filterBarErrorColor: IrisGridTheme['filter-bar-error-color'],\n filterIconColor: IrisGridTheme['filter-icon-color'],\n scrimColor: IrisGridTheme['scrim-color'],\n contextMenuSortIconColor: IrisGridTheme['context-menu-sort-icon-color'],\n contextMenuReverseIconColor: IrisGridTheme['context-menu-reverse-icon-color'],\n\n allowRowResize: false,\n autoSelectRow: true,\n gridColumnColor: null,\n gridRowColor: null,\n groupedColumnDividerColor: IrisGridTheme['grouped-column-divider-color'],\n columnHoverBackgroundColor: null,\n headerHorizontalPadding: 12,\n scrollBarSize: 13,\n scrollBarHoverSize: 16, // system default scrollbar width is 17\n minScrollHandleSize: 24,\n rowHeight: parseInt(IrisGridTheme['row-height'], 10) || 19, // IrisGrid test breaks without the fallback value\n columnWidth: 100,\n rowHeaderWidth: 0,\n rowFooterWidth: 60,\n columnHeaderHeight: 30,\n filterBarHeight: 30, // includes 1px casing at bottom\n filterBarCollapsedHeight: 5, // includes 1px casing at bottom\n sortHeaderBarHeight: 2,\n reverseHeaderBarHeight: 4,\n filterBarHorizontalPadding: 4,\n\n // Amount of blur to apply to the bottom of the scrim while animating in\n scrimBlurSize: 25,\n minScrimTransitionTime: 150,\n maxScrimTransitionTime: 350,\n\n scrollSnapToRow: true,\n\n linkerColumnHoverBackgroundColor: IrisGridTheme['linker-column-hover-bg'],\n\n treeLineColor: IrisGridTheme['tree-line-color'],\n treeMarkerColor: IrisGridTheme['tree-marker-color'],\n treeMarkerHoverColor: IrisGridTheme['tree-marker-hover-color'],\n\n floatingGridColumnColor: null,\n floatingGridRowColor: IrisGridTheme['floating-grid-row-color'],\n floatingRowBackgroundColors: IrisGridTheme['floating-row-background-colors'],\n floatingDividerInnerColor: IrisGridTheme['floating-divider-inner-color'],\n floatingDividerOuterColor: IrisGridTheme['floating-divider-outer-color'],\n\n overflowButtonColor: IrisGridTheme['overflow-button-color'],\n overflowButtonHoverColor: IrisGridTheme['overflow-button-hover-color'],\n});\n\nexport default theme;\n"],"file":"IrisGridTheme.js"}
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridTheme.ts"],"names":["IrisGridTheme","theme","Object","freeze","backgroundColor","font","headerBackgroundColor","headerColor","headerSeparatorColor","headerSeparatorHoverColor","headerHiddenSeparatorHoverColor","headerSortBarColor","headerReverseBarColor","headerBarCasingColor","headerFont","rowBackgroundColors","rowHoverBackgroundColor","selectionColor","selectionOutlineColor","selectionOutlineCasingColor","selectedRowHoverBackgroundColor","scrollBarBackgroundColor","scrollBarHoverBackgroundColor","scrollBarCasingColor","scrollBarCornerColor","scrollBarColor","scrollBarHoverColor","scrollBarActiveColor","textColor","positiveNumberColor","negativeNumberColor","zeroNumberColor","dateColor","pendingTextColor","errorTextColor","nullStringColor","filterBarActiveBackgroundColor","filterBarExpandedBackgroundColor","filterBarExpandedActiveBackgroundColor","filterBarExpandedActiveCellBackgroundColor","filterBarSeparatorColor","filterBarActiveColor","filterBarErrorColor","filterIconColor","scrimColor","contextMenuSortIconColor","contextMenuReverseIconColor","allowRowResize","autoSelectRow","gridColumnColor","gridRowColor","groupedColumnDividerColor","columnHoverBackgroundColor","headerHorizontalPadding","scrollBarSize","scrollBarHoverSize","minScrollHandleSize","rowHeight","parseInt","columnWidth","rowHeaderWidth","rowFooterWidth","columnHeaderHeight","filterBarHeight","filterBarCollapsedHeight","sortHeaderBarHeight","reverseHeaderBarHeight","filterBarHorizontalPadding","scrimBlurSize","minScrimTransitionTime","maxScrimTransitionTime","scrollSnapToRow","linkerColumnHoverBackgroundColor","treeLineColor","treeMarkerColor","treeMarkerHoverColor","floatingGridColumnColor","floatingGridRowColor","floatingRowBackgroundColors","floatingDividerInnerColor","floatingDividerOuterColor","overflowButtonColor","overflowButtonHoverColor"],"mappings":"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","sourcesContent":["import type { GridThemeType } from '@deephaven/grid';\nimport IrisGridTheme from './IrisGridTheme.module.scss';\n\nexport type IrisGridThemeType = Partial<GridThemeType> & {\n filterBarHeight: number;\n filterBarCollapsedHeight: number;\n reverseHeaderBarHeight: number;\n};\n\nconst theme: IrisGridThemeType = Object.freeze({\n backgroundColor: IrisGridTheme['grid-bg'],\n font: IrisGridTheme.font,\n headerBackgroundColor: IrisGridTheme['header-bg'],\n headerColor: IrisGridTheme['header-color'],\n headerSeparatorColor: IrisGridTheme['header-separator-color'],\n headerSeparatorHoverColor: IrisGridTheme['header-separator-hover-color'],\n headerHiddenSeparatorHoverColor:\n IrisGridTheme['header-hidden-separator-hover-color'],\n headerSortBarColor: IrisGridTheme['header-sort-bar-color'],\n headerReverseBarColor: IrisGridTheme['header-reverse-bar-color'],\n headerBarCasingColor: IrisGridTheme['header-bar-casing-color'],\n headerFont: IrisGridTheme['header-font'],\n rowBackgroundColors: IrisGridTheme['row-background-colors'],\n rowHoverBackgroundColor: IrisGridTheme['row-hover-bg'],\n selectionColor: IrisGridTheme['selection-color'],\n selectionOutlineColor: IrisGridTheme['selection-outline-color'],\n selectionOutlineCasingColor: IrisGridTheme['selection-outline-casing-color'],\n selectedRowHoverBackgroundColor: IrisGridTheme['selected-row-hover-bg'],\n scrollBarBackgroundColor: IrisGridTheme['scroll-bar-bg'],\n scrollBarHoverBackgroundColor: IrisGridTheme['scroll-bar-hover-bg'],\n scrollBarCasingColor: IrisGridTheme['scroll-bar-casing-color'],\n scrollBarCornerColor: IrisGridTheme['scroll-bar-corner-color'],\n scrollBarColor: IrisGridTheme['scroll-bar-color'],\n scrollBarHoverColor: IrisGridTheme['scroll-bar-hover-color'],\n scrollBarActiveColor: IrisGridTheme['scroll-bar-active-color'],\n textColor: IrisGridTheme['text-color'],\n positiveNumberColor: IrisGridTheme['positive-number-color'],\n negativeNumberColor: IrisGridTheme['negative-number-color'],\n zeroNumberColor: IrisGridTheme['zero-number-color'],\n dateColor: IrisGridTheme['date-color'],\n pendingTextColor: IrisGridTheme['pending-text-color'],\n errorTextColor: IrisGridTheme['error-text-color'],\n nullStringColor: IrisGridTheme['null-string-color'],\n filterBarActiveBackgroundColor: IrisGridTheme['filter-bar-active-bg'],\n filterBarExpandedBackgroundColor: IrisGridTheme['filter-bar-expanded-bg'],\n filterBarExpandedActiveBackgroundColor:\n IrisGridTheme['filter-bar-expanded-active-bg'],\n filterBarExpandedActiveCellBackgroundColor:\n IrisGridTheme['filter-bar-expanded-active-cell-bg'],\n filterBarSeparatorColor: IrisGridTheme['filter-bar-separator-color'],\n filterBarActiveColor: IrisGridTheme['filter-bar-active-color'],\n filterBarErrorColor: IrisGridTheme['filter-bar-error-color'],\n filterIconColor: IrisGridTheme['filter-icon-color'],\n scrimColor: IrisGridTheme['scrim-color'],\n contextMenuSortIconColor: IrisGridTheme['context-menu-sort-icon-color'],\n contextMenuReverseIconColor: IrisGridTheme['context-menu-reverse-icon-color'],\n\n allowRowResize: false,\n autoSelectRow: true,\n gridColumnColor: null,\n gridRowColor: null,\n groupedColumnDividerColor: IrisGridTheme['grouped-column-divider-color'],\n columnHoverBackgroundColor: null,\n headerHorizontalPadding: 12,\n scrollBarSize: 13,\n scrollBarHoverSize: 16, // system default scrollbar width is 17\n minScrollHandleSize: 24,\n rowHeight: parseInt(IrisGridTheme['row-height'], 10) || 19, // IrisGrid test breaks without the fallback value\n columnWidth: 100,\n rowHeaderWidth: 0,\n rowFooterWidth: 60,\n columnHeaderHeight: 30,\n filterBarHeight: 30, // includes 1px casing at bottom\n filterBarCollapsedHeight: 5, // includes 1px casing at bottom\n sortHeaderBarHeight: 2,\n reverseHeaderBarHeight: 4,\n filterBarHorizontalPadding: 4,\n\n // Amount of blur to apply to the bottom of the scrim while animating in\n scrimBlurSize: 25,\n minScrimTransitionTime: 150,\n maxScrimTransitionTime: 350,\n\n scrollSnapToRow: true,\n\n linkerColumnHoverBackgroundColor: IrisGridTheme['linker-column-hover-bg'],\n\n treeLineColor: IrisGridTheme['tree-line-color'],\n treeMarkerColor: IrisGridTheme['tree-marker-color'],\n treeMarkerHoverColor: IrisGridTheme['tree-marker-hover-color'],\n\n floatingGridColumnColor: null,\n floatingGridRowColor: IrisGridTheme['floating-grid-row-color'],\n floatingRowBackgroundColors: IrisGridTheme['floating-row-background-colors'],\n floatingDividerInnerColor: IrisGridTheme['floating-divider-inner-color'],\n floatingDividerOuterColor: IrisGridTheme['floating-divider-outer-color'],\n\n overflowButtonColor: IrisGridTheme['overflow-button-color'],\n overflowButtonHoverColor: IrisGridTheme['overflow-button-hover-color'],\n});\n\nexport default theme;\n"],"file":"IrisGridTheme.js"}
|