@deephaven/iris-grid 0.13.3-treemap.2 → 0.14.0
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 +69 -63
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +79 -73
- 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 +32 -36
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +47 -52
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +24 -39
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnStatistics.d.ts +34 -22
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js +8 -12
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.d.ts +58 -0
- package/dist/CommonTypes.d.ts.map +1 -0
- package/dist/CommonTypes.js +2 -0
- package/dist/CommonTypes.js.map +1 -0
- package/dist/CrossColumnSearch.d.ts +26 -24
- package/dist/CrossColumnSearch.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js +9 -13
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.d.ts +48 -51
- package/dist/FilterInputField.d.ts.map +1 -1
- package/dist/FilterInputField.js +30 -27
- package/dist/FilterInputField.js.map +1 -1
- package/dist/IrisGrid.d.ts +409 -453
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +514 -449
- 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 +52 -46
- package/dist/IrisGridCopyHandler.d.ts.map +1 -1
- package/dist/IrisGridCopyHandler.js +22 -38
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +5 -4
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js +5 -1
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +37 -35
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +19 -3
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.d.ts +7 -5
- 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 +13 -11
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.d.ts +38 -39
- package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
- package/dist/IrisGridPartitionSelector.js +18 -24
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +111 -32
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +212 -170
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.d.ts +59 -31
- package/dist/IrisGridRenderer.d.ts.map +1 -1
- package/dist/IrisGridRenderer.js +92 -46
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +48 -147
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +58 -1381
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +219 -0
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -0
- package/dist/IrisGridTableModelTemplate.js +1623 -0
- package/dist/IrisGridTableModelTemplate.js.map +1 -0
- package/dist/IrisGridTestUtils.d.ts +18 -14
- package/dist/IrisGridTestUtils.d.ts.map +1 -1
- package/dist/IrisGridTestUtils.js +29 -1
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.d.ts +35 -3
- package/dist/IrisGridTheme.d.ts.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +26 -7
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridTreeTableModel.js +24 -14
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +257 -162
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +132 -95
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.d.ts +5 -3
- package/dist/MissingKeyError.d.ts.map +1 -1
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.d.ts +61 -40
- package/dist/PartitionSelectorSearch.d.ts.map +1 -1
- package/dist/PartitionSelectorSearch.js +25 -15
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +3 -6
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.d.ts +39 -55
- package/dist/TableViewportUpdater.d.ts.map +1 -1
- package/dist/TableViewportUpdater.js +42 -64
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/TreeTableViewportUpdater.d.ts +29 -37
- package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
- package/dist/TreeTableViewportUpdater.js +39 -50
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- 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 +2 -0
- 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 +41 -130
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +426 -317
- 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 +8 -4
- package/dist/mousehandlers/PendingMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +4 -5
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +48 -33
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +28 -27
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +51 -41
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +22 -18
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.d.ts +26 -36
- package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +11 -20
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.d.ts +34 -35
- package/dist/sidebar/InputEditor.d.ts.map +1 -1
- package/dist/sidebar/InputEditor.js +43 -24
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +67 -52
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +51 -53
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts +27 -21
- package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +6 -10
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +42 -39
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +12 -20
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +59 -60
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +154 -68
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts +56 -45
- package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +34 -29
- 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 +2 -1
- 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 +6 -5
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +5 -0
- 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 +17 -16
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridTableModelTemplate.ts"],"names":["memoize","throttle","GridRange","memoizeClear","dh","Log","EventShimCustomEvent","PromiseUtils","assertNotNull","TableUtils","Formatter","FormatterUtils","IrisGridModel","AggregationOperation","IrisGridUtils","MissingKeyError","IrisGridTableModel","log","module","SET_VIEWPORT_THROTTLE","APPLY_VIEWPORT_THROTTLE","isIrisGridTableModelTemplate","model","table","undefined","IrisGridTableModelTemplate","export","Error","columnStatistics","column","customColumns","formatColumns","updateFrozenColumns","columns","rollupConfig","selectDistinctColumns","names","constructor","formatter","inputTable","tableColumns","columnMap","Map","forEach","col","set","name","indices","i","top","bottom","error","viewport","debug2","applyViewport","viewportTop","viewportBottom","getCachedViewportRowRange","applyBufferedViewport","leading","value","columnType","columnName","formatOverride","getFormattedString","max","isCustomColumnFormatDefined","viewHeight","Math","ROW_BUFFER_PAGES","pendingDataMap","keyColumnCount","map","row","rowIndex","data","rowData","has","get","push","handleTableDisconnect","bind","handleTableReconnect","handleTableUpdate","handleTotalsUpdate","handleRequestFailed","handleCustomColumnsChanged","irisFormatter","subscription","viewportData","formattedStringData","pendingStringData","isSaveInProgress","totalsTable","totalsTablePromise","totals","totalsDataMap","pendingNewDataMap","pendingNewDataErrors","pendingNewRowCount","close","cancel","startListening","addEventListener","Table","EVENT_DISCONNECT","EVENT_RECONNECT","EVENT_UPDATED","Client","EVENT_REQUEST_FAILED","EVENT_CUSTOMCOLUMNSCHANGED","addTotalsListeners","stopListening","removeEventListener","removeTotalsListeners","closeSubscription","setViewport","dispatchEvent","EVENT","DISCONNECT","RECONNECT","event","copyViewportData","detail","UPDATED","copyTotalsData","REQUEST_FAILED","COLUMNS_CHANGED","rowCount","size","operationOrder","length","pendingDataErrors","getCachedPendingErrors","keyColumns","isValidIndex","columnIndex","maxPendingDataRow","PENDING_DATA_UPDATED","pendingRowCount","count","keys","columnCount","floatingBottomRowCount","showOnTop","floatingTopRowCount","isChartBuilderAvailable","isTotalsAvailable","getTotalsTable","isEditable","cacheFormattedValue","x","y","text","cachePendingValue","clearPendingValue","textValueForCell","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","getMemoizedColumnMap","groupedColumns","totalsRowCount","operation","offset","viewportY","rows","defaultOperation","SUM","tableColumn","find","isTotalsRow","warn","extractViewportData","totalsData","dataMap","operationMap","c","split","findIndex","getFormat","getColumnIndexByName","getColumnIndicesByNameMap","newData","r","newRow","extractViewportRow","index","filter","applyFilter","FORMATTER_UPDATED","getCachedFormattedString","sort","applySort","totalsConfig","debug","setTotalsTable","makeCancelable","then","catch","err","isCanceled","listenerCount","snapshot","ranges","includeHeaders","formatValue","consolidated","consolidate","isValidSnapshotRanges","topFloatingRowsSet","Set","tableRanges","bottomFloatingRowsSet","range","endRow","startRow","add","startColumn","min","endColumn","columnsFromRanges","result","topFloatingRows","rangeSet","rangeSetFromRanges","bottomFloatingRows","textSnapshot","join","valuesTable","copy","selectDistinct","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","cellText","setValues","edits","edit","makeCell","rowEditMap","reduce","rowMap","dataIndex","rangeRowCount","rowEdits","info","commitPending","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 {\n EditOperation,\n GridRange,\n memoizeClear,\n ModelIndex,\n VisibleIndex,\n} from '@deephaven/grid';\nimport dh, {\n Column,\n ColumnStatistics,\n CustomColumn,\n FilterCondition,\n Format,\n InputTable,\n RollupConfig,\n Row,\n Sort,\n Table,\n TableTemplate,\n TableViewportSubscription,\n TotalsTable,\n ViewportData,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport {\n CancelablePromise,\n EventShimCustomEvent,\n PromiseUtils,\n assertNotNull,\n} from '@deephaven/utils';\nimport { TableUtils, Formatter, FormatterUtils } from '@deephaven/jsapi-utils';\nimport IrisGridModel from './IrisGridModel';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport IrisGridUtils from './IrisGridUtils';\nimport MissingKeyError from './MissingKeyError';\nimport {\n ColumnName,\n UITotalsTableConfig,\n UIRow,\n PendingDataMap,\n CellData,\n UIViewportData,\n} from './CommonTypes';\nimport { IrisGridThemeType } from './IrisGridTheme';\nimport IrisGridTableModel from './IrisGridTableModel';\n\nconst log = Log.module('IrisGridTableModel');\n\nconst SET_VIEWPORT_THROTTLE = 150;\nconst APPLY_VIEWPORT_THROTTLE = 0;\n\nexport function isIrisGridTableModelTemplate(\n model: IrisGridModel\n): model is IrisGridTableModelTemplate {\n return (model as IrisGridTableModelTemplate).table !== undefined;\n}\n\n/**\n * Template model for a grid\n */\n\nclass IrisGridTableModelTemplate<\n T extends TableTemplate<T> = Table,\n R extends UIRow = UIRow\n> extends IrisGridModel {\n export(): Promise<Table> {\n throw new Error('Method not implemented.');\n }\n\n columnStatistics(column: Column): Promise<ColumnStatistics> {\n throw new Error('Method not implemented.');\n }\n\n get customColumns(): ColumnName[] {\n return [];\n }\n\n set customColumns(customColumns: ColumnName[]) {\n throw new Error('Method not implemented.');\n }\n\n get formatColumns(): CustomColumn[] {\n return [];\n }\n\n set formatColumns(formatColumns: CustomColumn[]) {\n throw new Error('Method not implemented.');\n }\n\n updateFrozenColumns(columns: ColumnName[]): void {\n throw new Error('Method not implemented.');\n }\n\n get rollupConfig(): RollupConfig | null {\n throw new Error('Method not implemented.');\n }\n\n set rollupConfig(rollupConfig: RollupConfig | null) {\n throw new Error('Method not implemented.');\n }\n\n get selectDistinctColumns(): ColumnName[] {\n throw new Error('Method not implemented.');\n }\n\n set selectDistinctColumns(names: ColumnName[]) {\n throw new Error('Method not implemented.');\n }\n\n get columns(): Column[] {\n return this.table.columns;\n }\n\n static ROW_BUFFER_PAGES = 1;\n\n static COLUMN_BUFFER_PAGES = 0;\n\n private irisFormatter: Formatter;\n\n inputTable: InputTable | null;\n\n private subscription: TableViewportSubscription | null;\n\n table: T;\n\n viewport: {\n top: VisibleIndex;\n bottom: VisibleIndex;\n columns: Column[];\n } | null;\n\n viewportData: UIViewportData<R> | null;\n\n formattedStringData: (string | null)[][];\n\n private pendingStringData: (string | null)[][];\n\n private isSaveInProgress: boolean;\n\n private totalsTable: TotalsTable | null;\n\n totalsTablePromise: CancelablePromise<TotalsTable> | null;\n\n totals: UITotalsTableConfig | null;\n\n private totalsDataMap: Map<string, R> | null;\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 private pendingNewDataMap: PendingDataMap<R>;\n\n private pendingNewRowCount = 0;\n\n private pendingNewDataErrors: Map<unknown, unknown> | null;\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: T,\n formatter = new Formatter(),\n inputTable: InputTable | null = null\n ) {\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\n this.irisFormatter = formatter;\n this.inputTable = inputTable;\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 // 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.pendingNewDataErrors = null;\n this.pendingNewRowCount = 0;\n }\n\n close(): void {\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(): void {\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(): void {\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: TotalsTable): void {\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: TotalsTable): void {\n totalsTable.removeEventListener(\n dh.Table.EVENT_UPDATED,\n this.handleTotalsUpdate\n );\n }\n\n handleTableDisconnect(): void {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.DISCONNECT)\n );\n }\n\n handleTableReconnect(): void {\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.RECONNECT));\n }\n\n handleTableUpdate(event: CustomEvent): void {\n this.copyViewportData(event.detail);\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleTotalsUpdate(event: CustomEvent): void {\n this.copyTotalsData(event.detail);\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleRequestFailed(event: CustomEvent): void {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, event)\n );\n }\n\n handleCustomColumnsChanged(): void {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.COLUMNS_CHANGED, {\n detail: this.columns,\n })\n );\n }\n\n get rowCount(): number {\n return (\n this.table.size +\n this.pendingNewRowCount +\n (this.totals?.operationOrder?.length ?? 0)\n );\n }\n\n get pendingDataErrors(): Map<number, Error[]> {\n return this.getCachedPendingErrors(\n this.pendingNewDataMap,\n this.columns,\n this.inputTable?.keyColumns.length ?? 0\n );\n }\n\n get pendingDataMap(): PendingDataMap<R> {\n return this.pendingNewDataMap;\n }\n\n set pendingDataMap(map: PendingDataMap<R>) {\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 EventShimCustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n }\n\n get pendingRowCount(): number {\n return this.pendingNewRowCount;\n }\n\n set pendingRowCount(count: number) {\n if (count === this.pendingNewRowCount) {\n return;\n }\n\n this.pendingNewRowCount = Math.max(0, count, this.maxPendingDataRow);\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n get maxPendingDataRow(): number {\n return this.pendingNewDataMap.size > 0\n ? Math.max(...this.pendingNewDataMap.keys()) + 1\n : 0;\n }\n\n get columnCount(): number {\n return this.columns.length;\n }\n\n get floatingBottomRowCount(): number {\n return this.totals?.showOnTop\n ? 0\n : this.totals?.operationOrder?.length ?? 0;\n }\n\n get floatingTopRowCount(): number {\n return this.totals?.showOnTop\n ? this.totals?.operationOrder?.length ?? 0\n : 0;\n }\n\n get isChartBuilderAvailable(): boolean {\n return true;\n }\n\n get isTotalsAvailable(): boolean {\n return this.table.getTotalsTable != null;\n }\n\n get isEditable(): boolean {\n return !this.isSaveInProgress && this.inputTable != null;\n }\n\n cacheFormattedValue(x: ModelIndex, y: ModelIndex, text: string | null): void {\n if (this.formattedStringData[x] == null) {\n this.formattedStringData[x] = [];\n }\n this.formattedStringData[x][y] = text;\n }\n\n cachePendingValue(x: ModelIndex, y: ModelIndex, text: string | null): void {\n if (this.pendingStringData[x] == null) {\n this.pendingStringData[x] = [];\n }\n this.pendingStringData[x][y] = text;\n }\n\n clearPendingValue(x: ModelIndex, y: ModelIndex): void {\n const column = this.pendingStringData[x];\n if (column != null) {\n delete column[y];\n }\n }\n\n textValueForCell(x: ModelIndex, y: ModelIndex): string | null {\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;\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: ModelIndex, y: ModelIndex): string {\n const text = this.textValueForCell(x, y);\n if (text == null && this.isKeyColumn(x)) {\n const pendingRow = this.pendingRow(y);\n if (pendingRow != null && 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: ModelIndex): '#' | undefined {\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: ModelIndex, y: ModelIndex, theme: IrisGridThemeType): string {\n const data = this.dataForCell(x, y);\n if (data) {\n const { format, value } = data;\n if (value == null || value === '') {\n assertNotNull(theme.nullStringColor);\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 assertNotNull(theme.pendingTextColor);\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 assertNotNull(theme.dateColor);\n return theme.dateColor;\n }\n if (TableUtils.isNumberType(column.type)) {\n if ((value as number) > 0) {\n assertNotNull(theme.positiveNumberColor);\n return theme.positiveNumberColor;\n }\n if ((value as number) < 0) {\n assertNotNull(theme.negativeNumberColor);\n return theme.negativeNumberColor;\n }\n assertNotNull(theme.zeroNumberColor);\n return theme.zeroNumberColor;\n }\n }\n } else if (this.isPendingRow(y) && this.isKeyColumn(x)) {\n assertNotNull(theme.errorTextColor);\n return theme.errorTextColor;\n }\n\n return theme.textColor;\n }\n\n backgroundColorForCell(x: ModelIndex, y: ModelIndex): string | null {\n return this.formatForCell(x, y)?.backgroundColor ?? null;\n }\n\n textAlignForCell(x: ModelIndex): CanvasTextAlign {\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: ModelIndex): string {\n const column = this.columns[x];\n return `${column.name}`;\n }\n\n textForRowFooter(y: ModelIndex): string {\n const totalsRow = this.totalsRow(y);\n if (totalsRow != null && this.totals) {\n return this.totals.operationOrder[totalsRow];\n }\n return '';\n }\n\n getMemoizedColumnMap = memoize(\n (tableColumns: Column[]): Map<string, Column> => {\n const columnMap = new Map();\n tableColumns.forEach(col => columnMap.set(col.name, col));\n return columnMap;\n }\n );\n\n get columnMap(): Map<ColumnName, Column> {\n return this.getMemoizedColumnMap(this.table.columns);\n }\n\n get groupedColumns(): [] {\n return [];\n }\n\n row(y: ModelIndex): R | null {\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 assertNotNull(operation);\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 x Column index to get the totals column from\n * @param y Row index to get the totals column from\n */\n totalsColumn(x: ModelIndex, y: ModelIndex): Column | undefined | null {\n const totalsRow = this.totalsRow(y);\n if (totalsRow == null) return null;\n\n const operation = this.totals?.operationOrder[totalsRow];\n const defaultOperation =\n this.totals?.defaultOperation ?? AggregationOperation.SUM;\n const tableColumn = this.columns[x];\n\n // Find the matching totals table column for the operation\n // When there are multiple aggregations, the column name will be the original name of the column with the operation appended afterward\n // When the the operation is the default operation OR there is only one operation, then the totals column name is just the original column name\n return this.totalsTable?.columns.find(\n column =>\n column.name === `${tableColumn.name}__${operation}` ||\n ((operation === defaultOperation ||\n this.totals?.operationOrder.length === 1) &&\n column.name === tableColumn.name)\n );\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 y The row in the model to get the totals row for\n * @returns The row within the totals table if it's a totals row, null otherwise\n */\n totalsRow(y: ModelIndex): ModelIndex | null {\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 y The row in the model to get the pending row for\n * @returns The row within the pending input rows if it's a pending row, null otherwise\n */\n pendingRow(y: ModelIndex): ModelIndex | null {\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 y The row in the model to check if it's a totals table row\n * @returns True if the row is a totals row, false if not\n */\n isTotalsRow(y: ModelIndex): boolean {\n return this.totalsRow(y) != null;\n }\n\n /**\n * Check if a row is a pending input row\n * @param y The row in the model to check if it's a pending new row\n * @returns True if the row is a pending new row, false if not\n */\n isPendingRow(y: ModelIndex): boolean {\n return this.pendingRow(y) != null;\n }\n\n dataForCell(x: ModelIndex, y: ModelIndex): CellData | undefined {\n return this.row(y)?.data.get(x);\n }\n\n formatForCell(x: ModelIndex, y: ModelIndex): Format | undefined {\n return this.dataForCell(x, y)?.format;\n }\n\n valueForCell(x: ModelIndex, y: ModelIndex): unknown | null {\n const data = this.dataForCell(x, y);\n if (data) {\n return data.value ?? null;\n }\n return null;\n }\n\n copyViewportData(data: ViewportData): void {\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: ViewportData): void {\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 * Use this as the canonical column index since things like layoutHints could have\n * changed the column order.\n */\n getColumnIndexByName(name: ColumnName): number | undefined {\n return this.getColumnIndicesByNameMap(this.columns).get(name);\n }\n\n getColumnIndicesByNameMap = memoize(\n (columns: Column[]): Map<ColumnName, ModelIndex> => {\n const indices = new Map();\n columns.forEach(({ name }, i) => indices.set(name, i));\n return indices;\n }\n );\n\n /**\n * Copies all the viewport data into an object that we can reference later.\n * @param data The data to copy from\n */\n extractViewportData(data: ViewportData): UIViewportData<R> {\n const newData: UIViewportData<R> = {\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: Row, columns: Column[]): R {\n const data = new Map<ModelIndex, CellData>();\n for (let c = 0; c < columns.length; c += 1) {\n const column = columns[c];\n\n const index = this.getColumnIndexByName(column.name);\n assertNotNull(index);\n data.set(index, {\n value: row.get(column),\n format: row.getFormat(column),\n });\n }\n\n return { data } as R;\n }\n\n closeSubscription(): void {\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(): FilterCondition[] {\n return this.table.filter;\n }\n\n set filter(filter: FilterCondition[]) {\n this.closeSubscription();\n this.table.applyFilter(filter);\n this.applyViewport();\n }\n\n get formatter(): Formatter {\n return this.irisFormatter;\n }\n\n set formatter(formatter: Formatter) {\n this.irisFormatter = formatter;\n this.formattedStringData = [];\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.FORMATTER_UPDATED)\n );\n }\n\n displayString(\n value: unknown,\n columnType: string,\n columnName = '',\n formatOverride?: { formatString: string }\n ): string {\n return this.getCachedFormattedString(\n this.formatter,\n value,\n columnType,\n columnName,\n formatOverride\n );\n }\n\n get sort(): Sort[] {\n return this.table.sort;\n }\n\n set sort(sort: Sort[]) {\n this.closeSubscription();\n this.table.applySort(sort);\n this.applyViewport();\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 setTotalsTable(totalsTable: TotalsTable | null): void {\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(this.totalsTable);\n }\n }\n\n setViewport = throttle(\n (top: VisibleIndex, bottom: VisibleIndex, columns: Column[]) => {\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 SET_VIEWPORT_THROTTLE\n );\n\n /**\n * Applies the current viewport to the underlying table.\n */\n applyViewport = throttle(\n (): void => {\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 APPLY_VIEWPORT_THROTTLE,\n { leading: false }\n );\n\n applyBufferedViewport(\n viewportTop: number,\n viewportBottom: number,\n columns: Column[]\n ): void {\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(\n ranges: GridRange[],\n includeHeaders = false,\n formatValue: (value: unknown, column: Column) => unknown = value => value\n ): Promise<unknown[][]> {\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<number>();\n const tableRanges: GridRange[] = [];\n const bottomFloatingRowsSet = new Set<number>();\n for (let i = 0; i < consolidated.length; i += 1) {\n const range = consolidated[i];\n assertNotNull(range.endRow);\n assertNotNull(range.startRow);\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 // 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 const index = this.getColumnIndexByName(column.name);\n assertNotNull(index);\n return formatValue(this.valueForCell(index, row), column);\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 const index = this.getColumnIndexByName(column.name);\n assertNotNull(index);\n return formatValue(this.valueForCell(index, row), column);\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 ranges The ranges to get the snapshot for\n * @param includeHeaders Whether to include the headers in the snapshot or not\n * @param formatValue Function for formatting the raw value into a string\n * @returns A formatted string of all the data, columns separated by `\\t` and rows separated by `\\n`\n */\n async textSnapshot(\n ranges: GridRange[],\n includeHeaders = false,\n formatValue: (\n value: unknown,\n column: Column,\n row?: Row\n ) => string = value => `${value}`\n ): Promise<string> {\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 async valuesTable(column: Column): Promise<Table> {\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 getCachedFormattedString = memoizeClear(\n (\n formatter: Formatter,\n value: unknown,\n columnType: string,\n columnName: ColumnName,\n formatOverride?: { formatString: string }\n ): string =>\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: number, bottom: number): [\n number,\n number\n ] => {\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 (\n pendingDataMap: PendingDataMap,\n columns: Column[],\n keyColumnCount: number\n ) => {\n const map = new Map<ModelIndex, MissingKeyError[]>();\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 isKeyColumn(x: ModelIndex): boolean {\n return x < (this.inputTable?.keyColumns.length ?? 0);\n }\n\n isRowMovable(): boolean {\n return false;\n }\n\n isEditableRange(range: GridRange): boolean {\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: GridRange): boolean {\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: GridRange[]): boolean {\n return ranges.every(range => this.isEditableRange(range));\n }\n\n isDeletableRanges(ranges: GridRange[]): boolean {\n return ranges.every(range => this.isDeletableRange(range));\n }\n\n /**\n * @returns A range corresponding to the underlying table\n */\n getTableAreaRange(): GridRange {\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(): GridRange {\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 x The column to set\n * @param y The row to set\n * @param value The value to set\n * @returns A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n async setValueForCell(\n x: ModelIndex,\n y: ModelIndex,\n text: string\n ): Promise<void> {\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 ranges The ranges to set\n * @param value The values to set\n * @returns A promise that resolves successfully when the operation is complete, or rejects if there's an error\n */\n async setValueForRanges(ranges: GridRange[], text: string): Promise<void> {\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<Column>();\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: (string | null)[] = [];\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 assertNotNull(range);\n return 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() } as R);\n }\n const column = this.columns[columnIndex];\n const row = newDataMap.get(rowIndex);\n assertNotNull(row);\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 EventShimCustomEvent(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 =>\n new GridRange(\n null,\n range?.startRow ?? null,\n null,\n range?.endRow ?? null\n )\n )\n );\n const newRows = data.map(row => {\n const newRow: Record<ColumnName, unknown> = {};\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 const cellText = formattedText[x];\n assertNotNull(cellText);\n this.cacheFormattedValue(x, y, cellText);\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: EditOperation[] = []): Promise<void> {\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() } as R);\n }\n\n const row = newDataMap.get(pendingRow);\n assertNotNull(row);\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 EventShimCustomEvent(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<ModelIndex, EditOperation[]>());\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(range => {\n assertNotNull(range);\n return 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 assertNotNull(range);\n const rangeRowCount = GridRange.rowCount([range]);\n if (r < rangeRowCount) {\n assertNotNull(range.startRow);\n rowIndex = range.startRow + r;\n break;\n }\n r -= rangeRowCount;\n }\n\n const newRow: Record<ColumnName, unknown> = {};\n for (let c = 0; c < this.columns.length; c += 1) {\n newRow[this.columns[c].name] = row[c];\n }\n assertNotNull(rowIndex);\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\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(): Promise<void> {\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: Record<ColumnName, unknown>[] = [];\n this.pendingNewDataMap.forEach(row => {\n const newRow: Record<ColumnName, unknown> = {};\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 EventShimCustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n } finally {\n this.isSaveInProgress = false;\n }\n }\n\n editValueForCell(x: ModelIndex, y: ModelIndex): string | null {\n return this.textValueForCell(x, y);\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(this.pendingNewDataMap);\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 this.pendingNewDataMap = 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 isValidForCell(x: ModelIndex, y: ModelIndex, value: string): boolean {\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 IrisGridTableModelTemplate;\n"],"file":"IrisGridTableModelTemplate.js"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
import { GridRangeIndex, ModelSizeMap } from '@deephaven/grid';
|
|
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';
|
|
2
5
|
declare class IrisGridTestUtils {
|
|
3
6
|
static DEFAULT_TYPE: string;
|
|
4
|
-
static valueForCell(rowIndex:
|
|
5
|
-
static makeColumn(name
|
|
6
|
-
static
|
|
7
|
-
static
|
|
8
|
-
static
|
|
9
|
-
static
|
|
10
|
-
static
|
|
11
|
-
static
|
|
12
|
-
static
|
|
13
|
-
static
|
|
14
|
-
static
|
|
7
|
+
static valueForCell(rowIndex: GridRangeIndex, columnIndex: GridRangeIndex, formatValue?: boolean): string;
|
|
8
|
+
static makeColumn(name?: string, type?: string, index?: number): Column;
|
|
9
|
+
static makeRollupTableConfig(): RollupConfig;
|
|
10
|
+
static makeColumns(count?: number): Column[];
|
|
11
|
+
static makeUserColumnWidths(count?: number): ModelSizeMap;
|
|
12
|
+
static makeRow(i: number): Row;
|
|
13
|
+
static makeFilter(): FilterCondition;
|
|
14
|
+
static makeSort(): Sort;
|
|
15
|
+
static makeTable(columns?: Column[], size?: number, sort?: never[]): Table;
|
|
16
|
+
static makeTreeTable(columns?: Column[], size?: number, sort?: never[]): TreeTable;
|
|
17
|
+
static makeInputTable(keyColumns?: never[]): InputTable;
|
|
18
|
+
static makeSubscription(table?: Table): TableViewportSubscription;
|
|
19
|
+
static makeModel(table?: Table, formatter?: Formatter, inputTable?: null): IrisGridProxyModel;
|
|
15
20
|
}
|
|
16
|
-
|
|
17
|
-
import IrisGridProxyModel from "./IrisGridProxyModel";
|
|
21
|
+
export default IrisGridTestUtils;
|
|
18
22
|
//# 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.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAW,EACT,MAAM,EACN,eAAe,EACf,UAAU,EACV,YAAY,EACZ,GAAG,EACH,IAAI,EACJ,KAAK,EACL,yBAAyB,EACzB,SAAS,EACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAEtD,cAAM,iBAAiB;IACrB,MAAM,CAAC,YAAY,SAAsB;IAEzC,MAAM,CAAC,YAAY,CACjB,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,cAAc,EAC3B,WAAW,CAAC,EAAE,OAAO,GACpB,MAAM;IAQT,MAAM,CAAC,UAAU,CACf,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,GAAE,MAAuC,EAC7C,KAAK,SAAI,GACR,MAAM;IAKT,MAAM,CAAC,qBAAqB,IAAI,YAAY;IAK5C,MAAM,CAAC,WAAW,CAAC,KAAK,SAAI,GAAG,MAAM,EAAE;IAQvC,MAAM,CAAC,oBAAoB,CAAC,KAAK,SAAI,GAAG,YAAY;IAQpD,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG;IAW9B,MAAM,CAAC,UAAU,IAAI,eAAe;IAKpC,MAAM,CAAC,QAAQ,IAAI,IAAI;IAKvB,MAAM,CAAC,SAAS,CACd,OAAO,WAAkC,EACzC,IAAI,SAAa,EACjB,IAAI,UAAK,GACR,KAAK;IAOR,MAAM,CAAC,aAAa,CAClB,OAAO,WAAkC,EACzC,IAAI,SAAa,EACjB,IAAI,UAAK,GACR,SAAS;IAOZ,MAAM,CAAC,cAAc,CAAC,UAAU,UAAK,GAAG,UAAU;IAKlD,MAAM,CAAC,gBAAgB,CACrB,KAAK,QAAgC,GACpC,yBAAyB;IAK5B,MAAM,CAAC,SAAS,CACd,KAAK,QAAgC,EACrC,SAAS,YAAkB,EAC3B,UAAU,OAAO,GAChB,kBAAkB;CAGtB;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -18,6 +18,7 @@ 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
|
|
21
22
|
return new dh.Column({
|
|
22
23
|
index,
|
|
23
24
|
name,
|
|
@@ -25,6 +26,11 @@ class IrisGridTestUtils {
|
|
|
25
26
|
});
|
|
26
27
|
}
|
|
27
28
|
|
|
29
|
+
static makeRollupTableConfig() {
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
+
return new dh.RollupTableConfig();
|
|
32
|
+
}
|
|
33
|
+
|
|
28
34
|
static makeColumns() {
|
|
29
35
|
var count = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 5;
|
|
30
36
|
var columns = [];
|
|
@@ -48,6 +54,7 @@ class IrisGridTestUtils {
|
|
|
48
54
|
}
|
|
49
55
|
|
|
50
56
|
static makeRow(i) {
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
51
58
|
var row = new dh.Row({
|
|
52
59
|
index: i,
|
|
53
60
|
name: "".concat(i)
|
|
@@ -57,19 +64,38 @@ class IrisGridTestUtils {
|
|
|
57
64
|
}
|
|
58
65
|
|
|
59
66
|
static makeFilter() {
|
|
67
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
60
68
|
return new dh.FilterCondition();
|
|
61
69
|
}
|
|
62
70
|
|
|
63
71
|
static makeSort() {
|
|
72
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
64
73
|
return new dh.Sort();
|
|
65
74
|
}
|
|
66
75
|
|
|
67
76
|
static makeTable() {
|
|
68
77
|
var columns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : IrisGridTestUtils.makeColumns();
|
|
69
78
|
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
|
|
70
81
|
var table = new dh.Table({
|
|
71
82
|
columns,
|
|
72
|
-
size
|
|
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
|
|
73
99
|
});
|
|
74
100
|
table.copy = jest.fn(() => Promise.resolve(table));
|
|
75
101
|
return table;
|
|
@@ -77,11 +103,13 @@ class IrisGridTestUtils {
|
|
|
77
103
|
|
|
78
104
|
static makeInputTable() {
|
|
79
105
|
var keyColumns = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
106
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
80
107
|
return new dh.InputTable(keyColumns);
|
|
81
108
|
}
|
|
82
109
|
|
|
83
110
|
static makeSubscription() {
|
|
84
111
|
var table = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : IrisGridTestUtils.makeTable();
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
85
113
|
return new dh.TableViewportSubscription({
|
|
86
114
|
table
|
|
87
115
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/IrisGridTestUtils.
|
|
1
|
+
{"version":3,"sources":["../src/IrisGridTestUtils.ts"],"names":["dh","Formatter","IrisGridProxyModel","IrisGridTestUtils","valueForCell","rowIndex","columnIndex","formatValue","value","makeColumn","name","type","DEFAULT_TYPE","index","Column","makeRollupTableConfig","RollupTableConfig","makeColumns","count","columns","i","push","makeUserColumnWidths","userColumnWidths","Map","set","toString","makeRow","row","Row","get","jest","fn","column","makeFilter","FilterCondition","makeSort","Sort","makeTable","size","sort","table","Table","copy","Promise","resolve","makeTreeTable","TreeTable","makeInputTable","keyColumns","InputTable","makeSubscription","TableViewportSubscription","makeModel","formatter","inputTable"],"mappings":"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","sourcesContent":["import { GridRangeIndex, ModelSizeMap } from '@deephaven/grid';\nimport dh, {\n Column,\n FilterCondition,\n InputTable,\n RollupConfig,\n Row,\n Sort,\n Table,\n TableViewportSubscription,\n TreeTable,\n} 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(\n rowIndex: GridRangeIndex,\n columnIndex: GridRangeIndex,\n formatValue?: boolean\n ): string {\n let value = `${rowIndex},${columnIndex}`;\n if (formatValue) {\n value = `(${value})`;\n }\n return value;\n }\n\n static makeColumn(\n name?: string,\n type: string = IrisGridTestUtils.DEFAULT_TYPE,\n index = 0\n ): Column {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).Column({ index, name, type });\n }\n\n static makeRollupTableConfig(): RollupConfig {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).RollupTableConfig();\n }\n\n static makeColumns(count = 5): Column[] {\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): ModelSizeMap {\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: number): Row {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const row = new (dh as any).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(): FilterCondition {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).FilterCondition();\n }\n\n static makeSort(): Sort {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).Sort();\n }\n\n static makeTable(\n columns = IrisGridTestUtils.makeColumns(),\n size = 1000000000,\n sort = []\n ): Table {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const table = new (dh as any).Table({ columns, size, sort });\n table.copy = jest.fn(() => Promise.resolve(table));\n return table;\n }\n\n static makeTreeTable(\n columns = IrisGridTestUtils.makeColumns(),\n size = 1000000000,\n sort = []\n ): TreeTable {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const table = new (dh as any).TreeTable({ columns, size, sort });\n table.copy = jest.fn(() => Promise.resolve(table));\n return table;\n }\n\n static makeInputTable(keyColumns = []): InputTable {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).InputTable(keyColumns);\n }\n\n static makeSubscription(\n table = IrisGridTestUtils.makeTable()\n ): TableViewportSubscription {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return new (dh as any).TableViewportSubscription({ table });\n }\n\n static makeModel(\n table = IrisGridTestUtils.makeTable(),\n formatter = new Formatter(),\n inputTable = null\n ): IrisGridProxyModel {\n return new IrisGridProxyModel(table, formatter, inputTable);\n }\n}\n\nexport default IrisGridTestUtils;\n"],"file":"IrisGridTestUtils.js"}
|
package/dist/IrisGridTheme.d.ts
CHANGED
|
@@ -1,9 +1,41 @@
|
|
|
1
1
|
import type { GridThemeType } from '@deephaven/grid';
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import { GridColor, NullableGridColor } from '@deephaven/grid/src/GridTheme';
|
|
3
|
+
export declare type IrisGridThemeType = GridThemeType & {
|
|
4
4
|
filterBarCollapsedHeight: number;
|
|
5
|
+
filterBarHeight: number;
|
|
5
6
|
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;
|
|
6
38
|
};
|
|
7
|
-
declare const theme: IrisGridThemeType
|
|
39
|
+
declare const theme: Partial<IrisGridThemeType>;
|
|
8
40
|
export default theme;
|
|
9
41
|
//# 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;AACrD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAG7E,oBAAY,iBAAiB,GAAG,aAAa,GAAG;IAC9C,wBAAwB,EAAE,MAAM,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,SAAS,CAAC;IAChC,wBAAwB,EAAE,SAAS,CAAC;IACpC,2BAA2B,EAAE,SAAS,CAAC;IACvC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,eAAe,EAAE,SAAS,CAAC;IAC3B,gBAAgB,EAAE,SAAS,CAAC;IAC5B,SAAS,EAAE,SAAS,CAAC;IACrB,mBAAmB,EAAE,SAAS,CAAC;IAC/B,mBAAmB,EAAE,SAAS,CAAC;IAC/B,eAAe,EAAE,SAAS,CAAC;IAC3B,cAAc,EAAE,SAAS,CAAC;IAC1B,yBAAyB,EAAE,SAAS,CAAC;IACrC,gCAAgC,EAAE,SAAS,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,SAAS,CAAC;IACtB,qBAAqB,EAAE,SAAS,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,SAAS,CAAC;IAC9B,oBAAoB,EAAE,SAAS,CAAC;IAChC,sCAAsC,EAAE,SAAS,CAAC;IAClD,gCAAgC,EAAE,SAAS,CAAC;IAC5C,uBAAuB,EAAE,SAAS,CAAC;IACnC,0CAA0C,EAAE,SAAS,CAAC;IACtD,mBAAmB,EAAE,SAAS,CAAC;IAC/B,0BAA0B,EAAE,MAAM,CAAC;IACnC,8BAA8B,EAAE,SAAS,CAAC;IAC1C,mBAAmB,EAAE,SAAS,CAAC;IAC/B,wBAAwB,EAAE,SAAS,CAAC;IACpC,oBAAoB,EAAE,iBAAiB,CAAC;CACzC,CAAC;AAEF,QAAA,MAAM,KAAK,EAAE,OAAO,CAAC,iBAAiB,CA0FpC,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 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"}
|
|
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,10 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { GridRange, ModelIndex } from '@deephaven/grid';
|
|
2
|
+
import { Column, TreeRow, TreeTable } from '@deephaven/jsapi-shim';
|
|
3
|
+
import { UIRow } from './CommonTypes';
|
|
4
|
+
import IrisGridTableModelTemplate from './IrisGridTableModelTemplate';
|
|
5
|
+
export interface UITreeRow extends UIRow {
|
|
6
|
+
isExpanded: boolean;
|
|
7
|
+
hasChildren: boolean;
|
|
8
|
+
depth: number;
|
|
9
|
+
}
|
|
10
|
+
declare class IrisGridTreeTableModel extends IrisGridTableModelTemplate<TreeTable, UITreeRow> {
|
|
11
|
+
applyBufferedViewport(viewportTop: number, viewportBottom: number, columns: Column[]): void;
|
|
12
|
+
textForCell(x: ModelIndex, y: ModelIndex): string;
|
|
13
|
+
extractViewportRow(row: TreeRow, columns: Column[]): UITreeRow;
|
|
14
|
+
snapshot(ranges: GridRange[], includeHeaders?: boolean, formatValue?: (value: unknown, column: Column) => unknown): Promise<unknown[][]>;
|
|
15
|
+
get groupedColumns(): [];
|
|
3
16
|
get hasExpandableRows(): boolean;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
17
|
+
get isChartBuilderAvailable(): boolean;
|
|
18
|
+
get isSelectDistinctAvailable(): boolean;
|
|
19
|
+
get isReversible(): boolean;
|
|
20
|
+
isFilterable(columnIndex: ModelIndex): boolean;
|
|
21
|
+
isColumnMovable(column: ModelIndex): boolean;
|
|
22
|
+
isRowExpandable(y: ModelIndex): boolean;
|
|
23
|
+
isRowExpanded(y: ModelIndex): boolean;
|
|
24
|
+
setRowExpanded(y: ModelIndex, isExpanded: boolean): void;
|
|
25
|
+
depthForRow(y: ModelIndex): ModelIndex;
|
|
26
|
+
getCachedFilterableColumnSet: (columns: Column[], groupedColumns: Column[]) => Set<number>;
|
|
8
27
|
}
|
|
9
|
-
|
|
28
|
+
export default IrisGridTreeTableModel;
|
|
10
29
|
//# sourceMappingURL=IrisGridTreeTableModel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridTreeTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridTreeTableModel.
|
|
1
|
+
{"version":3,"file":"IrisGridTreeTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridTreeTableModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AAEtE,MAAM,WAAW,SAAU,SAAQ,KAAK;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AACD,cAAM,sBAAuB,SAAQ,0BAA0B,CAC7D,SAAS,EACT,SAAS,CACV;IAGC,qBAAqB,CACnB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EAAE,GAChB,IAAI;IAIP,WAAW,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM;IAajD,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS;IAUxD,QAAQ,CACZ,MAAM,EAAE,SAAS,EAAE,EACnB,cAAc,CAAC,EAAE,OAAO,EACxB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,GACxD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IAgDvB,IAAI,cAAc,IAAI,EAAE,CAEvB;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,IAAI,uBAAuB,IAAI,OAAO,CAErC;IAED,IAAI,yBAAyB,IAAI,OAAO,CAEvC;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,YAAY,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO;IAO9C,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IAI5C,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAKvC,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAKrC,cAAc,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IAIxD,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAKtC,4BAA4B,YAChB,MAAM,EAAE,kBAAkB,MAAM,EAAE,iBAM5C;CACH;AAED,eAAe,sBAAsB,CAAC"}
|