@deephaven/iris-grid 1.8.1-beta.1 → 1.8.1-beta.10
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/IrisGridModel.d.ts +2 -2
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +2 -2
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +0 -1
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/mousehandlers/IrisGridTokenMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js +3 -1
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
- package/package.json +17 -17
package/dist/IrisGridModel.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Event, EventTarget } from 'event-target-shim';
|
|
2
|
-
import { type BoundedAxisRange, type DataBarGridModel, type DataBarOptions, type GridCell, GridModel, type GridRange, type
|
|
2
|
+
import { type BoundedAxisRange, type DataBarGridModel, type DataBarOptions, type GridCell, GridModel, type GridRange, type GridThemeType, type ModelIndex, type MoveOperation, type VisibleIndex } from '@deephaven/grid';
|
|
3
3
|
import type { dh as DhType } from '@deephaven/jsapi-types';
|
|
4
4
|
import { type Formatter } from '@deephaven/jsapi-utils';
|
|
5
5
|
import { type ColumnName, type UITotalsTableConfig, type PendingDataMap, type PendingDataErrorMap } from './CommonTypes';
|
|
@@ -372,7 +372,7 @@ declare abstract class IrisGridModel<TEventMap extends Record<string, Event<stri
|
|
|
372
372
|
abstract get columnHeaderGroupMap(): ReadonlyMap<string, ColumnHeaderGroup>;
|
|
373
373
|
abstract getColumnHeaderParentGroup(modelIndex: ModelIndex, depth: number): ColumnHeaderGroup | undefined;
|
|
374
374
|
dataBarOptionsForCell(column: number, row: number, theme: GridThemeType): DataBarOptions;
|
|
375
|
-
tooltipForCell(column:
|
|
375
|
+
tooltipForCell(column: ModelIndex, row: ModelIndex): string | null;
|
|
376
376
|
}
|
|
377
377
|
export default IrisGridModel;
|
|
378
378
|
//# sourceMappingURL=IrisGridModel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridModel.d.ts","sourceRoot":"","sources":["../src/IrisGridModel.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,SAAS,EACT,KAAK,SAAS,EACd,KAAK,
|
|
1
|
+
{"version":3,"file":"IrisGridModel.d.ts","sourceRoot":"","sources":["../src/IrisGridModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridModel.js","names":["GridModel","EMPTY_ARRAY","EMPTY_SET","Set","IrisGridModel","constructor","dh","_defineProperty","listenerCount","addEventListener","type0","callback0","options0","startListening","removeEventListener","stopListening","aggregatedColumns","groupedColumns","originalColumns","columns","sourceForCell","column","row","getClearFilterRange","isFilterable","initialMovedColumns","initialMovedRows","initialColumnHeaderGroups","layoutHints","frontColumns","backColumns","keyColumnSet","valueColumnSet","frozenColumns","isColumnFrozen","index","isColumnSortable","isFilterRequired","isReversible","isColumnStatisticsAvailable","description","isAggregatedColumnsAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isExportAvailable","isValuesTableAvailable","isChartBuilderAvailable","isOrganizeColumnsAvailable","isRollupAvailable","isSelectDistinctAvailable","isTotalsAvailable","isViewportPending","columnIndex","close","isRowMovable","isSeekRowAvailable","dataBarOptionsForCell","theme","Error","tooltipForCell","Object","freeze","UPDATED","FORMATTER_UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","TABLE_CHANGED","FILTERS_CHANGED","SORTS_CHANGED","DISCONNECT","RECONNECT","TOTALS_UPDATED","PENDING_DATA_UPDATED","VIEWPORT_UPDATED"],"sources":["../src/IrisGridModel.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport type { Event, EventTarget } from 'event-target-shim';\nimport {\n type BoundedAxisRange,\n type DataBarGridModel,\n type DataBarOptions,\n type GridCell,\n GridModel,\n type GridRange,\n type GridRangeIndex,\n type GridThemeType,\n type ModelIndex,\n type MoveOperation,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { type Formatter } from '@deephaven/jsapi-utils';\nimport {\n type ColumnName,\n type UITotalsTableConfig,\n type PendingDataMap,\n type PendingDataErrorMap,\n} from './CommonTypes';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\n\nexport type DisplayColumn = DhType.Column & {\n /**\n * Name to display with the column.\n * The `name` property on `Column` is a unique identifier and must be a valid Java identifier,\n * whereas `displayName` can be any string and does not need to be unique.\n */\n displayName?: string;\n\n /**\n * Whether this column is a proxy column for other columns or not.\n * If it's a proxy column, it may not appear in some lists.\n */\n isProxy?: boolean;\n};\n\ntype IrisGridModelEventNames =\n (typeof IrisGridModel.EVENT)[keyof typeof IrisGridModel.EVENT];\n\ntype IrisGridModelEventMap = {\n [E in IrisGridModelEventNames]: Event<E>;\n};\n\nconst EMPTY_ARRAY: never[] = [];\nconst EMPTY_SET: Set<never> = new Set();\n\n/**\n * Abstract class that extends the GridModel to have more functionality, like filtering and sorting.\n * For use from IrisGrid.\n * Provides some abstraction from the dh.Table and dh.TreeTable classes, so we can treat them somewhat the same.\n * Note that it still uses dh.Column, dh.FilterCondition, dh.Sort, etc., still. Theoretically should abstract\n * those out as well, so there's no dependency on IrisAPI at all, but it's a lot of work for no real gain at this time.\n */\nabstract class IrisGridModel<\n TEventMap extends Record<string, Event<string>> = Record<\n string,\n Event<string>\n >,\n TMode extends 'standard' | 'strict' = 'standard',\n >\n extends GridModel<TEventMap & IrisGridModelEventMap, TMode>\n implements DataBarGridModel\n{\n static EVENT = Object.freeze({\n UPDATED: 'UPDATED',\n FORMATTER_UPDATED: 'FORMATTER_UPDATED',\n REQUEST_FAILED: 'REQUEST_FAILED',\n COLUMNS_CHANGED: 'COLUMNS_CHANGED',\n TABLE_CHANGED: 'TABLE_CHANGED',\n FILTERS_CHANGED: 'FILTERS_CHANGED',\n SORTS_CHANGED: 'SORTS_CHANGED',\n DISCONNECT: 'DISCONNECT',\n RECONNECT: 'RECONNECT',\n TOTALS_UPDATED: 'TOTALS_UPDATED',\n /** Fired when the viewport is applied to the table and we're waiting for a response. */\n PENDING_DATA_UPDATED: 'PENDING_DATA_UPDATED',\n VIEWPORT_UPDATED: 'VIEWPORT_UPDATED',\n } as const);\n\n constructor(dh: typeof DhType) {\n super();\n\n this.dh = dh;\n this.listenerCount = 0;\n }\n\n dh: typeof DhType;\n\n listenerCount: number;\n\n // Pulled directly from event-target-shim implementation signature\n // https://github.com/mysticatea/event-target-shim/blob/master/src/lib/event-target.ts#L99\n // Using Parameters<GridModel['addEventListener']> doesn't work\n addEventListener<T extends string & keyof TEventMap>(\n type0: T,\n callback0?: EventTarget.EventListener<this, TEventMap[T]> | null,\n options0?: boolean | EventTarget.AddOptions\n ): void {\n super.addEventListener(type0, callback0 as never, options0 as never);\n\n this.listenerCount += 1;\n if (this.listenerCount === 1) {\n this.startListening();\n }\n }\n\n removeEventListener<T extends string & keyof TEventMap>(\n type0: T,\n callback0?: EventTarget.EventListener<this, TEventMap[T]> | null,\n options0?: boolean | EventTarget.Options\n ): void {\n super.removeEventListener(type0, callback0 as never, options0 as never);\n\n this.listenerCount -= 1;\n if (this.listenerCount === 0) {\n this.stopListening();\n }\n }\n\n /**\n * Function called when first listener is added.\n * Override for implementation specific behaviour.\n */\n startListening(): void {\n // no-op\n }\n\n /**\n * Function called when last listener is removed.\n * Override for implementation specific behaviour.\n */\n stopListening(): void {\n // no-op\n }\n\n /**\n * Gets the columns for this model\n * @returns All columns in the model\n */\n abstract get columns(): readonly DisplayColumn[];\n\n /**\n * Retrieve the aggregated columns for this model\n * @returns The columns that are aggregated\n */\n get aggregatedColumns(): readonly DisplayColumn[] {\n return EMPTY_ARRAY;\n }\n\n /**\n * Retrieve the grouped columns for this model\n * @returns The columns that are grouped\n */\n get groupedColumns(): readonly DisplayColumn[] {\n return EMPTY_ARRAY;\n }\n\n /**\n * Gets the columns for the model before any transformations (such as rollups) are applied.\n * @returns All original columns in the model.\n */\n get originalColumns(): readonly DisplayColumn[] {\n return this.columns;\n }\n\n /**\n * Gets the column index for this model\n * @param name The model column name.\n * @returns The numeric index of the requested column.\n */\n abstract getColumnIndexByName(name: string): ModelIndex | undefined;\n\n /**\n * Retrieve the source cell for a given cell. Returns something different if the cell is a proxied cell\n * that retrieves data from another cell.\n * @param column Column to get the source for\n * @param row Row to get the source for\n * @returns Source cell where the data is coming from\n */\n sourceForCell(column: ModelIndex, row: ModelIndex): GridCell {\n return { column, row };\n }\n\n /**\n * Retrieve the range of columns to clear filters on for a given column.\n * @param column Column to get the range of filters to clear.\n * @returns Axis range of the column filters to clear, or `null` if this should not have a clear filter option.\n */\n getClearFilterRange(column: ModelIndex): BoundedAxisRange | null {\n if (this.isFilterable(column)) {\n return [column, column];\n }\n return null;\n }\n\n /** List of column movements defined by the model. Used as initial movements for IrisGrid */\n get initialMovedColumns(): readonly MoveOperation[] {\n return EMPTY_ARRAY;\n }\n\n /** List of row movements defined by the model. Used as initial movements for IrisGrid */\n get initialMovedRows(): readonly MoveOperation[] {\n return EMPTY_ARRAY;\n }\n\n /** List of column header groups defined by the model */\n get initialColumnHeaderGroups(): readonly ColumnHeaderGroup[] {\n return EMPTY_ARRAY;\n }\n\n /**\n * @param column The model column index\n * @param row The model row index\n * @returns The format stored for that cell\n */\n abstract formatForCell(\n column: ModelIndex,\n row: ModelIndex\n ): DhType.Format | undefined;\n\n /**\n * @param column The model column index\n * @param row The model row index\n * @returns The value stored for that cell\n */\n abstract valueForCell(column: ModelIndex, row: ModelIndex): unknown;\n\n /**\n * @returns The filters set on this model\n */\n abstract get filter(): readonly DhType.FilterCondition[];\n\n /**\n * @param filter The filters to set\n */\n abstract set filter(filter: readonly DhType.FilterCondition[]);\n\n /**\n * @returns The formatter used when formatting data\n */\n abstract get formatter(): Formatter;\n\n /**\n * @param formatter The formatter to set\n */\n abstract set formatter(formatter: Formatter);\n\n /**\n * @returns The column alignment map\n */\n abstract get columnAlignmentMap(): ReadonlyMap<string, CanvasTextAlign>;\n\n /**\n * @param columnAlignmentMap The column alignment map to set\n */\n abstract set columnAlignmentMap(\n columnAlignmentMap: Map<string, CanvasTextAlign>\n );\n\n /**\n * @param value The value to format\n * @param columnType The column type to format\n * @param columnName The column name to format\n */\n abstract displayString(\n value: unknown,\n columnType: string,\n columnName?: ColumnName\n ): string;\n\n /**\n * @returns The sorts used on this model\n */\n abstract get sort(): readonly DhType.Sort[];\n\n /**\n * @param sort The sorts to use on this model\n */\n abstract set sort(sort: readonly DhType.Sort[]);\n\n /**\n /**\n * @returns The custom columns on this model\n */\n abstract get customColumns(): readonly ColumnName[];\n\n /**\n * @param customColumns The custom columns to use\n */\n abstract set customColumns(customColumns: readonly ColumnName[]);\n\n /**\n * @returns The format columns on this model\n */\n abstract get formatColumns(): readonly DhType.CustomColumn[];\n\n /**\n * @param formatColumns The format columns to use\n */\n abstract set formatColumns(formatColumns: readonly DhType.CustomColumn[]);\n\n /**\n * @param columns The columns to treat as frozen\n */\n abstract updateFrozenColumns(columns: readonly ColumnName[]): void;\n\n /**\n * @returns The config to use for rolling up this table\n */\n abstract get rollupConfig(): DhType.RollupConfig | null;\n\n abstract set rollupConfig(rollupConfig: DhType.RollupConfig | null);\n\n /**\n * @returns The config to use for the totals table of this model\n */\n abstract get totalsConfig(): UITotalsTableConfig | null;\n\n abstract set totalsConfig(totalsConfig: UITotalsTableConfig | null);\n\n /**\n * @returns The LayoutHints to use for the columns of this table model\n */\n get layoutHints(): DhType.LayoutHints | null | undefined {\n return null;\n }\n\n /**\n * @returns Names of columns which should be locked to the front, but not floating\n */\n get frontColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n /**\n * @returns Names of columns which should be locked to the back, but not floating\n */\n get backColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n /**\n * @returns Names of key columns\n */\n get keyColumnSet(): Set<ColumnName> {\n return EMPTY_SET;\n }\n\n /**\n * @returns Names of value columns\n */\n get valueColumnSet(): Set<ColumnName> {\n return EMPTY_SET;\n }\n\n /**\n * @returns Names of columns which should be frozen to the front and floating\n */\n get frozenColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n /**\n * @param index The column index to check\n * @returns Whether the column is one of LayoutHints' frozen columns\n */\n isColumnFrozen(index: ModelIndex): boolean {\n return false;\n }\n\n /**\n * @param index The column index to check\n * @returns Whether the column is sortable\n */\n isColumnSortable(index: ModelIndex): boolean {\n return false;\n }\n\n /**\n * @deprecated Replaced with isPartitionRequired()\n * @returns True if this model requires a filter to be set\n */\n get isFilterRequired(): boolean {\n return false;\n }\n\n get isReversible(): boolean {\n return true;\n }\n\n /**\n * @returns Returns a raw table that is frozen and can be used for exporting data\n */\n abstract export(): Promise<DhType.Table>;\n\n /**\n * @returns True if this model supports the columnStatistics(column) function\n */\n get isColumnStatisticsAvailable(): boolean {\n return false;\n }\n\n /**\n * The description for this model.\n * @returns The description of the model\n */\n get description(): string {\n return '';\n }\n\n /**\n * @param column The column to get statistics for\n * @returns The column statistics\n */\n abstract columnStatistics(\n column: DhType.Column\n ): Promise<DhType.ColumnStatistics>;\n\n /**\n * @returns True if this model supports aggregatedColumns\n */\n get isAggregatedColumnsAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if this model supports customColumns\n */\n get isCustomColumnsAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if this model supports customColumns\n */\n get isFormatColumnsAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if this model supports the export() function\n */\n get isExportAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if this model supports the valuesTable(column) function\n */\n get isValuesTableAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if this model should allow the chart builder\n */\n get isChartBuilderAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if this model should allow to organize columns\n */\n get isOrganizeColumnsAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if the rollup rows functionality is available\n */\n get isRollupAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if select distinct functionality is available\n */\n get isSelectDistinctAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if the totals functionality is available\n */\n get isTotalsAvailable(): boolean {\n return false;\n }\n\n /**\n * The names of columns with select distinct enabled\n * @returns An array of column names\n */\n abstract get selectDistinctColumns(): readonly ColumnName[];\n\n /**\n * Set the columns with select distinct enabled\n * @param names The array of column names to enable select distinct on\n */\n abstract set selectDistinctColumns(names: readonly ColumnName[]);\n\n /**\n * The pending data for this model\n * @returns A map of row index to a map of column name/value pairs\n */\n abstract get pendingDataMap(): PendingDataMap;\n\n /**\n * Set the pending data for this model\n * @param A map of row index to a map of column name/value pairs\n */\n abstract set pendingDataMap(map: PendingDataMap);\n\n /**\n * @returns The count of pending rows to show\n */\n abstract get pendingRowCount(): number;\n\n /**\n * Set the count of pending rows to show\n * @param count The count of pending rows to show\n */\n abstract set pendingRowCount(count: number);\n\n /**\n * Errors for the pending data\n * @returns Map from row number to the error\n */\n abstract get pendingDataErrors(): PendingDataErrorMap;\n\n /**\n * Commit pending data and save all data to the table\n */\n abstract commitPending(): Promise<void>;\n\n /**\n * Check if viewport is still loading data\n */\n get isViewportPending(): boolean {\n return false;\n }\n\n /**\n * Check if a column is filterable\n * @param columnIndex The column index to check for filterability\n * @returns True if the current provided column index is filterable, false otherwise\n */\n isFilterable(columnIndex: ModelIndex): boolean {\n return false;\n }\n\n /**\n * Set the indices of the viewport\n * @param top Top of viewport\n * @param bottom Bottom of viewport\n * @param columns The columns in the viewport. `undefined` for all columns\n */\n abstract setViewport(\n top: VisibleIndex,\n bottom: VisibleIndex,\n columns?: DhType.Column[]\n ): void;\n\n /**\n * Takes a snapshot of the provided ranges\n * @param ranges The model ranges to take the snapshot of\n * @returns Returns the data in a row/column matrix\n */\n abstract snapshot(\n ranges: readonly GridRange[]\n ): Promise<readonly unknown[][]>;\n\n /**\n * @param ranges The ranges to take a snapshot of\n * @param includeHeaders Whether to include the headers in the snapshot or not\n * @param formatValue A function to format a value for a cell. Defaults to model format value.\n * @returns A text formatted snapshot of the data for the specified range set\n */\n abstract textSnapshot(\n ranges: readonly GridRange[],\n includeHeaders?: boolean,\n formatValue?: (\n value: unknown,\n column: DhType.Column,\n row?: DhType.Row\n ) => string\n ): Promise<string>;\n\n /**\n * @param column The columns to get the distinct values for\n * @returns A table partitioned on the specified columns in the order given in\n */\n abstract valuesTable(\n columns: DhType.Column | readonly DhType.Column[]\n ): Promise<DhType.Table>;\n\n /**\n * Close this model. It can no longer be used after being closed\n */\n close(): void {\n // no-op\n }\n\n /**\n * Don't allow any rows to be movable in any IrisGrids by default. Just columns.\n */\n isRowMovable(): boolean {\n return false;\n }\n\n abstract seekRow(\n startRow: number,\n column: DhType.Column,\n valueType: DhType.ValueTypeType,\n value: unknown,\n insensitive?: boolean,\n contains?: boolean,\n isBackwards?: boolean\n ): Promise<number>;\n\n get isSeekRowAvailable(): boolean {\n return false;\n }\n\n abstract get columnHeaderGroups(): readonly ColumnHeaderGroup[];\n\n abstract set columnHeaderGroups(groups: readonly ColumnHeaderGroup[]);\n\n abstract get columnHeaderGroupMap(): ReadonlyMap<string, ColumnHeaderGroup>;\n\n abstract getColumnHeaderParentGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined;\n\n dataBarOptionsForCell(\n column: number,\n row: number,\n theme: GridThemeType\n ): DataBarOptions {\n throw new Error('Method not implemented.');\n }\n\n tooltipForCell(column: GridRangeIndex, row: GridRangeIndex): string | null {\n return null;\n }\n}\n\nexport default IrisGridModel;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"IrisGridModel.js","names":["GridModel","EMPTY_ARRAY","EMPTY_SET","Set","IrisGridModel","constructor","dh","_defineProperty","listenerCount","addEventListener","type0","callback0","options0","startListening","removeEventListener","stopListening","aggregatedColumns","groupedColumns","originalColumns","columns","sourceForCell","column","row","getClearFilterRange","isFilterable","initialMovedColumns","initialMovedRows","initialColumnHeaderGroups","layoutHints","frontColumns","backColumns","keyColumnSet","valueColumnSet","frozenColumns","isColumnFrozen","index","isColumnSortable","isFilterRequired","isReversible","isColumnStatisticsAvailable","description","isAggregatedColumnsAvailable","isCustomColumnsAvailable","isFormatColumnsAvailable","isExportAvailable","isValuesTableAvailable","isChartBuilderAvailable","isOrganizeColumnsAvailable","isRollupAvailable","isSelectDistinctAvailable","isTotalsAvailable","isViewportPending","columnIndex","close","isRowMovable","isSeekRowAvailable","dataBarOptionsForCell","theme","Error","tooltipForCell","Object","freeze","UPDATED","FORMATTER_UPDATED","REQUEST_FAILED","COLUMNS_CHANGED","TABLE_CHANGED","FILTERS_CHANGED","SORTS_CHANGED","DISCONNECT","RECONNECT","TOTALS_UPDATED","PENDING_DATA_UPDATED","VIEWPORT_UPDATED"],"sources":["../src/IrisGridModel.ts"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport type { Event, EventTarget } from 'event-target-shim';\nimport {\n type BoundedAxisRange,\n type DataBarGridModel,\n type DataBarOptions,\n type GridCell,\n GridModel,\n type GridRange,\n type GridThemeType,\n type ModelIndex,\n type MoveOperation,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { type Formatter } from '@deephaven/jsapi-utils';\nimport {\n type ColumnName,\n type UITotalsTableConfig,\n type PendingDataMap,\n type PendingDataErrorMap,\n} from './CommonTypes';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\n\nexport type DisplayColumn = DhType.Column & {\n /**\n * Name to display with the column.\n * The `name` property on `Column` is a unique identifier and must be a valid Java identifier,\n * whereas `displayName` can be any string and does not need to be unique.\n */\n displayName?: string;\n\n /**\n * Whether this column is a proxy column for other columns or not.\n * If it's a proxy column, it may not appear in some lists.\n */\n isProxy?: boolean;\n};\n\ntype IrisGridModelEventNames =\n (typeof IrisGridModel.EVENT)[keyof typeof IrisGridModel.EVENT];\n\ntype IrisGridModelEventMap = {\n [E in IrisGridModelEventNames]: Event<E>;\n};\n\nconst EMPTY_ARRAY: never[] = [];\nconst EMPTY_SET: Set<never> = new Set();\n\n/**\n * Abstract class that extends the GridModel to have more functionality, like filtering and sorting.\n * For use from IrisGrid.\n * Provides some abstraction from the dh.Table and dh.TreeTable classes, so we can treat them somewhat the same.\n * Note that it still uses dh.Column, dh.FilterCondition, dh.Sort, etc., still. Theoretically should abstract\n * those out as well, so there's no dependency on IrisAPI at all, but it's a lot of work for no real gain at this time.\n */\nabstract class IrisGridModel<\n TEventMap extends Record<string, Event<string>> = Record<\n string,\n Event<string>\n >,\n TMode extends 'standard' | 'strict' = 'standard',\n >\n extends GridModel<TEventMap & IrisGridModelEventMap, TMode>\n implements DataBarGridModel\n{\n static EVENT = Object.freeze({\n UPDATED: 'UPDATED',\n FORMATTER_UPDATED: 'FORMATTER_UPDATED',\n REQUEST_FAILED: 'REQUEST_FAILED',\n COLUMNS_CHANGED: 'COLUMNS_CHANGED',\n TABLE_CHANGED: 'TABLE_CHANGED',\n FILTERS_CHANGED: 'FILTERS_CHANGED',\n SORTS_CHANGED: 'SORTS_CHANGED',\n DISCONNECT: 'DISCONNECT',\n RECONNECT: 'RECONNECT',\n TOTALS_UPDATED: 'TOTALS_UPDATED',\n /** Fired when the viewport is applied to the table and we're waiting for a response. */\n PENDING_DATA_UPDATED: 'PENDING_DATA_UPDATED',\n VIEWPORT_UPDATED: 'VIEWPORT_UPDATED',\n } as const);\n\n constructor(dh: typeof DhType) {\n super();\n\n this.dh = dh;\n this.listenerCount = 0;\n }\n\n dh: typeof DhType;\n\n listenerCount: number;\n\n // Pulled directly from event-target-shim implementation signature\n // https://github.com/mysticatea/event-target-shim/blob/master/src/lib/event-target.ts#L99\n // Using Parameters<GridModel['addEventListener']> doesn't work\n addEventListener<T extends string & keyof TEventMap>(\n type0: T,\n callback0?: EventTarget.EventListener<this, TEventMap[T]> | null,\n options0?: boolean | EventTarget.AddOptions\n ): void {\n super.addEventListener(type0, callback0 as never, options0 as never);\n\n this.listenerCount += 1;\n if (this.listenerCount === 1) {\n this.startListening();\n }\n }\n\n removeEventListener<T extends string & keyof TEventMap>(\n type0: T,\n callback0?: EventTarget.EventListener<this, TEventMap[T]> | null,\n options0?: boolean | EventTarget.Options\n ): void {\n super.removeEventListener(type0, callback0 as never, options0 as never);\n\n this.listenerCount -= 1;\n if (this.listenerCount === 0) {\n this.stopListening();\n }\n }\n\n /**\n * Function called when first listener is added.\n * Override for implementation specific behaviour.\n */\n startListening(): void {\n // no-op\n }\n\n /**\n * Function called when last listener is removed.\n * Override for implementation specific behaviour.\n */\n stopListening(): void {\n // no-op\n }\n\n /**\n * Gets the columns for this model\n * @returns All columns in the model\n */\n abstract get columns(): readonly DisplayColumn[];\n\n /**\n * Retrieve the aggregated columns for this model\n * @returns The columns that are aggregated\n */\n get aggregatedColumns(): readonly DisplayColumn[] {\n return EMPTY_ARRAY;\n }\n\n /**\n * Retrieve the grouped columns for this model\n * @returns The columns that are grouped\n */\n get groupedColumns(): readonly DisplayColumn[] {\n return EMPTY_ARRAY;\n }\n\n /**\n * Gets the columns for the model before any transformations (such as rollups) are applied.\n * @returns All original columns in the model.\n */\n get originalColumns(): readonly DisplayColumn[] {\n return this.columns;\n }\n\n /**\n * Gets the column index for this model\n * @param name The model column name.\n * @returns The numeric index of the requested column.\n */\n abstract getColumnIndexByName(name: string): ModelIndex | undefined;\n\n /**\n * Retrieve the source cell for a given cell. Returns something different if the cell is a proxied cell\n * that retrieves data from another cell.\n * @param column Column to get the source for\n * @param row Row to get the source for\n * @returns Source cell where the data is coming from\n */\n sourceForCell(column: ModelIndex, row: ModelIndex): GridCell {\n return { column, row };\n }\n\n /**\n * Retrieve the range of columns to clear filters on for a given column.\n * @param column Column to get the range of filters to clear.\n * @returns Axis range of the column filters to clear, or `null` if this should not have a clear filter option.\n */\n getClearFilterRange(column: ModelIndex): BoundedAxisRange | null {\n if (this.isFilterable(column)) {\n return [column, column];\n }\n return null;\n }\n\n /** List of column movements defined by the model. Used as initial movements for IrisGrid */\n get initialMovedColumns(): readonly MoveOperation[] {\n return EMPTY_ARRAY;\n }\n\n /** List of row movements defined by the model. Used as initial movements for IrisGrid */\n get initialMovedRows(): readonly MoveOperation[] {\n return EMPTY_ARRAY;\n }\n\n /** List of column header groups defined by the model */\n get initialColumnHeaderGroups(): readonly ColumnHeaderGroup[] {\n return EMPTY_ARRAY;\n }\n\n /**\n * @param column The model column index\n * @param row The model row index\n * @returns The format stored for that cell\n */\n abstract formatForCell(\n column: ModelIndex,\n row: ModelIndex\n ): DhType.Format | undefined;\n\n /**\n * @param column The model column index\n * @param row The model row index\n * @returns The value stored for that cell\n */\n abstract valueForCell(column: ModelIndex, row: ModelIndex): unknown;\n\n /**\n * @returns The filters set on this model\n */\n abstract get filter(): readonly DhType.FilterCondition[];\n\n /**\n * @param filter The filters to set\n */\n abstract set filter(filter: readonly DhType.FilterCondition[]);\n\n /**\n * @returns The formatter used when formatting data\n */\n abstract get formatter(): Formatter;\n\n /**\n * @param formatter The formatter to set\n */\n abstract set formatter(formatter: Formatter);\n\n /**\n * @returns The column alignment map\n */\n abstract get columnAlignmentMap(): ReadonlyMap<string, CanvasTextAlign>;\n\n /**\n * @param columnAlignmentMap The column alignment map to set\n */\n abstract set columnAlignmentMap(\n columnAlignmentMap: Map<string, CanvasTextAlign>\n );\n\n /**\n * @param value The value to format\n * @param columnType The column type to format\n * @param columnName The column name to format\n */\n abstract displayString(\n value: unknown,\n columnType: string,\n columnName?: ColumnName\n ): string;\n\n /**\n * @returns The sorts used on this model\n */\n abstract get sort(): readonly DhType.Sort[];\n\n /**\n * @param sort The sorts to use on this model\n */\n abstract set sort(sort: readonly DhType.Sort[]);\n\n /**\n /**\n * @returns The custom columns on this model\n */\n abstract get customColumns(): readonly ColumnName[];\n\n /**\n * @param customColumns The custom columns to use\n */\n abstract set customColumns(customColumns: readonly ColumnName[]);\n\n /**\n * @returns The format columns on this model\n */\n abstract get formatColumns(): readonly DhType.CustomColumn[];\n\n /**\n * @param formatColumns The format columns to use\n */\n abstract set formatColumns(formatColumns: readonly DhType.CustomColumn[]);\n\n /**\n * @param columns The columns to treat as frozen\n */\n abstract updateFrozenColumns(columns: readonly ColumnName[]): void;\n\n /**\n * @returns The config to use for rolling up this table\n */\n abstract get rollupConfig(): DhType.RollupConfig | null;\n\n abstract set rollupConfig(rollupConfig: DhType.RollupConfig | null);\n\n /**\n * @returns The config to use for the totals table of this model\n */\n abstract get totalsConfig(): UITotalsTableConfig | null;\n\n abstract set totalsConfig(totalsConfig: UITotalsTableConfig | null);\n\n /**\n * @returns The LayoutHints to use for the columns of this table model\n */\n get layoutHints(): DhType.LayoutHints | null | undefined {\n return null;\n }\n\n /**\n * @returns Names of columns which should be locked to the front, but not floating\n */\n get frontColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n /**\n * @returns Names of columns which should be locked to the back, but not floating\n */\n get backColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n /**\n * @returns Names of key columns\n */\n get keyColumnSet(): Set<ColumnName> {\n return EMPTY_SET;\n }\n\n /**\n * @returns Names of value columns\n */\n get valueColumnSet(): Set<ColumnName> {\n return EMPTY_SET;\n }\n\n /**\n * @returns Names of columns which should be frozen to the front and floating\n */\n get frozenColumns(): readonly ColumnName[] {\n return EMPTY_ARRAY;\n }\n\n /**\n * @param index The column index to check\n * @returns Whether the column is one of LayoutHints' frozen columns\n */\n isColumnFrozen(index: ModelIndex): boolean {\n return false;\n }\n\n /**\n * @param index The column index to check\n * @returns Whether the column is sortable\n */\n isColumnSortable(index: ModelIndex): boolean {\n return false;\n }\n\n /**\n * @deprecated Replaced with isPartitionRequired()\n * @returns True if this model requires a filter to be set\n */\n get isFilterRequired(): boolean {\n return false;\n }\n\n get isReversible(): boolean {\n return true;\n }\n\n /**\n * @returns Returns a raw table that is frozen and can be used for exporting data\n */\n abstract export(): Promise<DhType.Table>;\n\n /**\n * @returns True if this model supports the columnStatistics(column) function\n */\n get isColumnStatisticsAvailable(): boolean {\n return false;\n }\n\n /**\n * The description for this model.\n * @returns The description of the model\n */\n get description(): string {\n return '';\n }\n\n /**\n * @param column The column to get statistics for\n * @returns The column statistics\n */\n abstract columnStatistics(\n column: DhType.Column\n ): Promise<DhType.ColumnStatistics>;\n\n /**\n * @returns True if this model supports aggregatedColumns\n */\n get isAggregatedColumnsAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if this model supports customColumns\n */\n get isCustomColumnsAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if this model supports customColumns\n */\n get isFormatColumnsAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if this model supports the export() function\n */\n get isExportAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if this model supports the valuesTable(column) function\n */\n get isValuesTableAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if this model should allow the chart builder\n */\n get isChartBuilderAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if this model should allow to organize columns\n */\n get isOrganizeColumnsAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if the rollup rows functionality is available\n */\n get isRollupAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if select distinct functionality is available\n */\n get isSelectDistinctAvailable(): boolean {\n return false;\n }\n\n /**\n * @returns True if the totals functionality is available\n */\n get isTotalsAvailable(): boolean {\n return false;\n }\n\n /**\n * The names of columns with select distinct enabled\n * @returns An array of column names\n */\n abstract get selectDistinctColumns(): readonly ColumnName[];\n\n /**\n * Set the columns with select distinct enabled\n * @param names The array of column names to enable select distinct on\n */\n abstract set selectDistinctColumns(names: readonly ColumnName[]);\n\n /**\n * The pending data for this model\n * @returns A map of row index to a map of column name/value pairs\n */\n abstract get pendingDataMap(): PendingDataMap;\n\n /**\n * Set the pending data for this model\n * @param A map of row index to a map of column name/value pairs\n */\n abstract set pendingDataMap(map: PendingDataMap);\n\n /**\n * @returns The count of pending rows to show\n */\n abstract get pendingRowCount(): number;\n\n /**\n * Set the count of pending rows to show\n * @param count The count of pending rows to show\n */\n abstract set pendingRowCount(count: number);\n\n /**\n * Errors for the pending data\n * @returns Map from row number to the error\n */\n abstract get pendingDataErrors(): PendingDataErrorMap;\n\n /**\n * Commit pending data and save all data to the table\n */\n abstract commitPending(): Promise<void>;\n\n /**\n * Check if viewport is still loading data\n */\n get isViewportPending(): boolean {\n return false;\n }\n\n /**\n * Check if a column is filterable\n * @param columnIndex The column index to check for filterability\n * @returns True if the current provided column index is filterable, false otherwise\n */\n isFilterable(columnIndex: ModelIndex): boolean {\n return false;\n }\n\n /**\n * Set the indices of the viewport\n * @param top Top of viewport\n * @param bottom Bottom of viewport\n * @param columns The columns in the viewport. `undefined` for all columns\n */\n abstract setViewport(\n top: VisibleIndex,\n bottom: VisibleIndex,\n columns?: DhType.Column[]\n ): void;\n\n /**\n * Takes a snapshot of the provided ranges\n * @param ranges The model ranges to take the snapshot of\n * @returns Returns the data in a row/column matrix\n */\n abstract snapshot(\n ranges: readonly GridRange[]\n ): Promise<readonly unknown[][]>;\n\n /**\n * @param ranges The ranges to take a snapshot of\n * @param includeHeaders Whether to include the headers in the snapshot or not\n * @param formatValue A function to format a value for a cell. Defaults to model format value.\n * @returns A text formatted snapshot of the data for the specified range set\n */\n abstract textSnapshot(\n ranges: readonly GridRange[],\n includeHeaders?: boolean,\n formatValue?: (\n value: unknown,\n column: DhType.Column,\n row?: DhType.Row\n ) => string\n ): Promise<string>;\n\n /**\n * @param column The columns to get the distinct values for\n * @returns A table partitioned on the specified columns in the order given in\n */\n abstract valuesTable(\n columns: DhType.Column | readonly DhType.Column[]\n ): Promise<DhType.Table>;\n\n /**\n * Close this model. It can no longer be used after being closed\n */\n close(): void {\n // no-op\n }\n\n /**\n * Don't allow any rows to be movable in any IrisGrids by default. Just columns.\n */\n isRowMovable(): boolean {\n return false;\n }\n\n abstract seekRow(\n startRow: number,\n column: DhType.Column,\n valueType: DhType.ValueTypeType,\n value: unknown,\n insensitive?: boolean,\n contains?: boolean,\n isBackwards?: boolean\n ): Promise<number>;\n\n get isSeekRowAvailable(): boolean {\n return false;\n }\n\n abstract get columnHeaderGroups(): readonly ColumnHeaderGroup[];\n\n abstract set columnHeaderGroups(groups: readonly ColumnHeaderGroup[]);\n\n abstract get columnHeaderGroupMap(): ReadonlyMap<string, ColumnHeaderGroup>;\n\n abstract getColumnHeaderParentGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined;\n\n dataBarOptionsForCell(\n column: number,\n row: number,\n theme: GridThemeType\n ): DataBarOptions {\n throw new Error('Method not implemented.');\n }\n\n tooltipForCell(column: ModelIndex, row: ModelIndex): string | null {\n return null;\n }\n}\n\nexport default IrisGridModel;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type DeletableGridModel, type EditableGridModel, type EditOperation, GridRange, type
|
|
1
|
+
import { type DeletableGridModel, type EditableGridModel, type EditOperation, GridRange, type ModelIndex, type MoveOperation, type VisibleIndex } from '@deephaven/grid';
|
|
2
2
|
import type { dh as DhType } from '@deephaven/jsapi-types';
|
|
3
3
|
import { type CancelablePromise } from '@deephaven/utils';
|
|
4
4
|
import { TableUtils, Formatter } from '@deephaven/jsapi-utils';
|
|
@@ -107,7 +107,7 @@ declare class IrisGridTableModelTemplate<T extends DhType.Table | DhType.TreeTab
|
|
|
107
107
|
textAlignForCell(x: ModelIndex, y: ModelIndex): CanvasTextAlign;
|
|
108
108
|
textForColumnHeader(x: ModelIndex, depth?: number): string | undefined;
|
|
109
109
|
colorForColumnHeader(x: ModelIndex, depth?: number): string | null;
|
|
110
|
-
tooltipForCell(column:
|
|
110
|
+
tooltipForCell(column: ModelIndex, row: ModelIndex): string | null;
|
|
111
111
|
getColumnHeaderGroup(modelIndex: ModelIndex, depth: number): ColumnHeaderGroup | undefined;
|
|
112
112
|
getColumnHeaderParentGroup(modelIndex: ModelIndex, depth: number): ColumnHeaderGroup | undefined;
|
|
113
113
|
columnAtDepth(x: ModelIndex, depth?: number): ColumnHeaderGroup | DisplayColumn | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridTableModelTemplate.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModelTemplate.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,SAAS,
|
|
1
|
+
{"version":3,"file":"IrisGridTableModelTemplate.d.ts","sourceRoot":"","sources":["../src/IrisGridTableModelTemplate.ts"],"names":[],"mappings":"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"}
|
|
@@ -635,7 +635,6 @@ class IrisGridTableModelTemplate extends IrisGridModel {
|
|
|
635
635
|
return null;
|
|
636
636
|
}
|
|
637
637
|
tooltipForCell(column, row) {
|
|
638
|
-
if (column === null || row === null) return null;
|
|
639
638
|
if (TableUtils.isDateType(this.columns[column].type)) {
|
|
640
639
|
return this.displayString(this.valueForCell(column, row), this.columns[column].type, this.columns[column].name, {
|
|
641
640
|
formatString: DateUtils.FULL_DATE_FORMAT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridTableModelTemplate.js","names":["memoize","throttle","GridRange","GridUtils","memoizeClear","Log","EventShimCustomEvent","PromiseUtils","assertNotNull","TableUtils","Formatter","FormatterUtils","DateUtils","IrisGridModel","AggregationOperation","IrisGridUtils","MissingKeyError","isColumnHeaderGroup","log","module","SET_VIEWPORT_THROTTLE","APPLY_VIEWPORT_THROTTLE","isIrisGridTableModelTemplate","model","table","undefined","IrisGridTableModelTemplate","seekRow","startRow","column","valueType","value","insensitive","contains","isBackwards","Error","export","columnStatistics","customColumns","formatColumns","updateFrozenColumns","columns","rollupConfig","selectDistinctColumns","names","constructor","dh","formatter","arguments","length","inputTable","columnAlignmentMap","Map","_defineProperty","layoutHints","_layoutHints$columnGr","_layoutHints$frontCol","_layoutHints$backColu","_layoutHints$frozenCo","movedColumns","groupMap","parseColumnHeaderGroups","columnGroups","moveColumn","name","toIndex","modelIndex","getColumnIndexByName","concat","visibleIndex","getVisibleIndex","moveItem","moveGroup","group","get","visibleRange","getVisibleRange","moveRange","frontColumns","backColumns","frozenColumns","usedColumns","Set","frontIndex","forEach","has","backIndex","layoutHintColumnGroups","values","sort","a","b","depth","firstChildName","children","rightModelIndex","rightVisibleIndex","firstChildGroup","i","childName","childGroup","childColumn","isBeforeGroup","moveToIndex","childIndexes","_movedColumns","_layoutHints$columnGr2","groups","indices","_ref","set","top","bottom","error","viewport","debug2","applyViewport","viewportTop","viewportBottom","getCachedViewportRowRange","applyBufferedViewport","leading","columnType","columnName","formatOverride","getFormattedString","max","isCustomColumnFormatDefined","viewHeight","Math","ROW_BUFFER_PAGES","pendingDataMap","keyColumnCount","map","row","rowIndex","data","rowData","_map$get","push","handleTableDisconnect","bind","handleTableReconnect","handleTableUpdate","handleTotalsUpdate","handleRequestFailed","handleCustomColumnsChanged","irisFormatter","irisColumnAlignmentMap","irisGridUtils","subscription","tableUtils","viewportData","formattedStringData","pendingStringData","isSaveInProgress","totalsTable","totalsTablePromise","totals","totalsDataMap","pendingNewDataMap","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","_this$totals$operatio","_this$totals","size","operationOrder","pendingDataErrors","_this$inputTable$keyC","_this$inputTable","getCachedPendingErrors","keyColumns","isValidIndex","columnIndex","maxPendingDataRow","PENDING_DATA_UPDATED","pendingRowCount","count","keys","columnCount","floatingBottomRowCount","_this$totals$operatio2","_this$totals2","showOnTop","floatingTopRowCount","_this$totals$operatio3","_this$totals3","isValuesTableAvailable","selectDistinct","copy","isChartBuilderAvailable","isOrganizeColumnsAvailable","isTotalsAvailable","getTotalsTable","isEditable","isDeletable","keyColumnSet","isViewportPending","rows","pendingTop","offset","pendingBottom","pendingLeft","index","pendingRight","cacheFormattedValue","x","y","text","cachePendingValue","clearPendingValue","textValueForCell","_this$pendingStringDa","_this$formattedString","valueForCell","sourceColumn","hasCustomColumnFormat","getCachedCustomColumnFormatFlag","type","formatForCell","formatString","displayString","textForCell","_this$columns$x","isKeyColumn","pendingRow","isTextType","showNullStrings","showEmptyStrings","truncationCharForCell","isNumberType","truncateNumbersWithPound","colorForCell","theme","dataForCell","format","nullStringColor","color","isPendingRow","pendingTextColor","colorForValue","errorTextColor","textColor","backgroundColorForCell","_this$formatForCell$b","_this$formatForCell","backgroundColor","textAlignForCell","userTextAlignment","textAlignForValue","textForColumnHeader","_header$displayName","header","columnAtDepth","isNew","displayName","colorForColumnHeader","_column$color","tooltipForCell","isDateType","FULL_DATE_FORMAT","getColumnHeaderGroup","getColumnHeaderParentGroup","_this$columnAtDepth$n","_this$columnAtDepth","columnHeaderParentMap","_this$columns$x2","currentDepth","textForRowFooter","totalsRow","initialMovedColumns","_this$layoutHints","getMemoizedInitialMovedColumns","initialColumnHeaderGroups","_this$layoutHints2","getMemoizedInitialColumnHeaderGroups","columnHeaderMaxDepth","_this$_columnHeaderMa","_columnHeaderMaxDepth","columnHeaderGroupMap","initializeColumnHeaderGroups","_columnHeaderGroupMap","columnHeaderGroups","_columnHeaderGroups","newGroups","maxDepth","parentMap","_isColumnHeaderGroupsInitialized","_this$layoutHints$col","_this$layoutHints3","_this$totals$operatio4","_this$totals4","_this$totals$showOnTo","_this$totals5","_this$viewportData$of","_this$viewportData","_this$viewportData$ro","_this$viewportData2","totalsRowCount","_this$totals6","_this$totalsDataMap$g","_this$totalsDataMap","operation","_this$pendingNewDataM","viewportY","_this$totals7","_this$totals$defaultO","_this$totals8","_this$totalsTable","defaultOperation","SUM","tableColumn","totalsColumn","find","col","_this$totals9","operationMap","_this$totals$operatio5","_this$totals0","_this$totals$showOnTo2","_this$totals1","isTotalsRow","_this$row","_this$dataForCell","_data$value","warn","extractViewportData","totalsData","_this$totals$defaultO2","_this$totals10","_this$totals11","_this","dataMap","_loop","_operationMap$name$","_operationMap$name","c","split","findIndex","getFormat","getColumnIndicesByNameMap","newData","r","newRow","extractViewportRow","filter","applyFilter","FORMATTER_UPDATED","getCachedFormattedString","applySort","totalsConfig","debug","setTotalsTable","makeCancelable","then","catch","err","isCanceled","listenerCount","VIEWPORT_UPDATED","_this$table$setViewpo","snapshot","ranges","_arguments","_this2","_asyncToGenerator","includeHeaders","formatValue","consolidateRanges","consolidated","consolidate","isValidSnapshotRanges","topFloatingRowsSet","tableRanges","bottomFloatingRowsSet","range","endRow","add","startColumn","min","endColumn","columnsFromRanges","result","topFloatingRows","_loop2","rangeSet","rangeSetFromRanges","bottomFloatingRows","_loop3","textSnapshot","_arguments2","_this3","join","valuesTable","_this4","Array","isArray","isColumnMovable","includes","isColumnSortable","_this$columns$modelIn","isSortable","isValueColumn","valueColumnSet","isRowMovable","isEditableRange","_range$endColumn","isPendingRange","isKeyColumnInRange","bound","isKey","isValue","isDeletableRange","isEditableRanges","every","isDeletableRanges","getTableAreaRange","getPendingAreaRange","setValueForCell","_this5","setValueForRanges","_this6","columnSet","formattedText","forEachCell","makeValue","timeZone","pendingAreaRange","pendingRanges","intersection","newDataMap","newRowData","delete","_objectSpread","tableAreaRange","_this6$inputTable","_range$startRow","_range$endRow","newRows","addRows","cellText","setValues","_arguments3","_this7","edits","edit","_edit$column","_edit$row","makeCell","_edit$column2","_edit$row2","rowEditMap","reduce","rowMap","_edit$row3","_rowMap$get","_edit$column3","_edit$row4","_this7$inputTable","dataIndex","rangeRowCount","rowEdits","_edit$column4","info","_edit$column5","_edit$row5","commitPending","_this8","_this8$inputTable","_this8$viewport$botto","_this8$viewport","_ref2","editValueForCell","_this$textValueForCel","isValidForCell","e"],"sources":["../src/IrisGridTableModelTemplate.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport {\n type DeletableGridModel,\n type EditableGridModel,\n type EditOperation,\n GridRange,\n type GridRangeIndex,\n GridUtils,\n memoizeClear,\n type ModelIndex,\n type MoveOperation,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport {\n type CancelablePromise,\n EventShimCustomEvent,\n PromiseUtils,\n assertNotNull,\n} from '@deephaven/utils';\nimport {\n TableUtils,\n Formatter,\n FormatterUtils,\n DateUtils,\n} from '@deephaven/jsapi-utils';\nimport IrisGridModel, { type DisplayColumn } from './IrisGridModel';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport IrisGridUtils from './IrisGridUtils';\nimport MissingKeyError from './MissingKeyError';\nimport {\n type ColumnName,\n type UITotalsTableConfig,\n type UIRow,\n type PendingDataMap,\n type CellData,\n type UIViewportData,\n type PendingDataErrorMap,\n} from './CommonTypes';\nimport { type IrisGridThemeType } from './IrisGridTheme';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { isColumnHeaderGroup } from './ColumnHeaderGroup';\n\nconst log = Log.module('IrisGridTableModelTemplate');\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 DhType.Table | DhType.TreeTable = DhType.Table,\n R extends UIRow = UIRow,\n >\n extends IrisGridModel\n implements DeletableGridModel, EditableGridModel\n{\n static ROW_BUFFER_PAGES = 1;\n\n seekRow(\n startRow: number,\n column: DhType.Column,\n valueType: DhType.ValueTypeType,\n value: unknown,\n insensitive?: boolean | undefined,\n contains?: boolean | undefined,\n isBackwards?: boolean | undefined\n ): Promise<number> {\n throw new Error('Method not implemented.');\n }\n\n export(): Promise<DhType.Table> {\n throw new Error('Method not implemented.');\n }\n\n columnStatistics(column: DhType.Column): Promise<DhType.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(): DhType.CustomColumn[] {\n return [];\n }\n\n set formatColumns(formatColumns: DhType.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(): DhType.RollupConfig | null {\n throw new Error('Method not implemented.');\n }\n\n set rollupConfig(rollupConfig: DhType.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 /**\n * Returns an array of the columns in the model\n * The order of model columns should never change once established\n */\n get columns(): DhType.Column[] {\n return this.table.columns;\n }\n\n dh: typeof DhType;\n\n irisGridUtils: IrisGridUtils;\n\n tableUtils: TableUtils;\n\n private irisFormatter: Formatter;\n\n private irisColumnAlignmentMap: Map<string, CanvasTextAlign>;\n\n inputTable: DhType.InputTable | null;\n\n private subscription: DhType.TableViewportSubscription | null;\n\n table: T;\n\n viewport: {\n top: VisibleIndex;\n bottom: VisibleIndex;\n columns?: DhType.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: DhType.TotalsTable | null;\n\n totalsTablePromise: CancelablePromise<DhType.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 _columnHeaderGroupMap: Map<string, ColumnHeaderGroup> = new Map();\n\n private columnHeaderParentMap: Map<string, ColumnHeaderGroup> = new Map();\n\n private _columnHeaderMaxDepth: number | null = null;\n\n private _columnHeaderGroups: ColumnHeaderGroup[] = [];\n\n private _isColumnHeaderGroupsInitialized = false;\n\n private _movedColumns: MoveOperation[] | null = null;\n\n /**\n * @param dh JSAPI instance\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 * @param columnAlignmentMap Map of column alignments\n */\n constructor(\n dh: typeof DhType,\n table: T,\n formatter = new Formatter(dh),\n inputTable: DhType.InputTable | null = null,\n columnAlignmentMap = new Map<string, CanvasTextAlign>()\n ) {\n super(dh);\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 =\n this.handleCustomColumnsChanged.bind(this);\n\n this.dh = dh;\n this.irisFormatter = formatter;\n this.irisColumnAlignmentMap = columnAlignmentMap;\n this.irisGridUtils = new IrisGridUtils(dh);\n this.inputTable = inputTable;\n this.subscription = null;\n this.table = table;\n this.tableUtils = new TableUtils(dh);\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.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 const { dh } = this;\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 const { dh } = this;\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: DhType.TotalsTable): void {\n const { dh } = this;\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: DhType.TotalsTable): void {\n const { dh } = this;\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: DhType.Event<DhType.ViewportData>): void {\n this.copyViewportData(event.detail);\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleTotalsUpdate(event: DhType.Event<DhType.ViewportData>): void {\n this.copyTotalsData(event.detail);\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleRequestFailed(event: DhType.Event<unknown>): 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 // Table size can be negative if the table isn't ready yet\n Math.max(this.table.size, 0) +\n this.pendingNewRowCount +\n (this.totals?.operationOrder?.length ?? 0)\n );\n }\n\n get pendingDataErrors(): PendingDataErrorMap {\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 != null && this.totals.showOnTop\n ? 0\n : this.totals?.operationOrder?.length ?? 0;\n }\n\n get floatingTopRowCount(): number {\n return this.totals != null && this.totals.showOnTop\n ? this.totals?.operationOrder?.length ?? 0\n : 0;\n }\n\n get isValuesTableAvailable(): boolean {\n return this.table.selectDistinct != null && this.table.copy != null;\n }\n\n get isChartBuilderAvailable(): boolean {\n return true;\n }\n\n get isOrganizeColumnsAvailable(): 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 get isDeletable(): boolean {\n return this.keyColumnSet.size > 0;\n }\n\n get isViewportPending(): boolean {\n if (\n this.viewport == null ||\n this.viewport.columns === undefined ||\n this.viewportData == null\n ) {\n return true;\n }\n // no columns or no rows\n if (\n this.viewport.columns.length === 0 ||\n this.viewportData.rows.length === 0\n ) {\n return false;\n }\n\n // offset is first row of loaded data\n const pendingTop = this.viewport.top < this.viewportData.offset;\n // offset + row.length is last row of loaded data\n const pendingBottom =\n this.viewportData.offset + this.viewportData.rows.length <\n this.viewport.bottom;\n // left column doesn't exist in data\n const pendingLeft =\n this.viewportData.rows[0].data.get(this.viewport.columns[0].index) ===\n undefined;\n // right column doesn't exist in data\n const pendingRight =\n this.viewportData.rows[0].data.get(\n this.viewport.columns[this.viewport.columns.length - 1].index\n ) === undefined;\n\n return pendingTop || pendingBottom || pendingLeft || pendingRight;\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 | undefined {\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 if (value === undefined) {\n return undefined;\n }\n\n const column = this.sourceColumn(x, y);\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\n if (TableUtils.isTextType(this.columns[x]?.type)) {\n if (text === null) {\n return this.formatter.showNullStrings ? 'null' : '';\n }\n\n if (text === '') {\n return this.formatter.showEmptyStrings ? 'empty' : '';\n }\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?.color != null && 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.sourceColumn(x, y);\n return IrisGridUtils.colorForValue(\n theme,\n column.type,\n column.name,\n value\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(\n x: ModelIndex,\n y: ModelIndex,\n theme: IrisGridThemeType\n ): string | null {\n return this.formatForCell(x, y)?.backgroundColor ?? null;\n }\n\n textAlignForCell(x: ModelIndex, y: ModelIndex): CanvasTextAlign {\n const column = this.sourceColumn(x, y);\n\n const userTextAlignment = this.columnAlignmentMap.get(column.name);\n if (userTextAlignment != null) {\n return userTextAlignment;\n }\n\n return IrisGridUtils.textAlignForValue(column.type, column.name);\n }\n\n textForColumnHeader(x: ModelIndex, depth = 0): string | undefined {\n const header = this.columnAtDepth(x, depth);\n if (isColumnHeaderGroup(header)) {\n return header.isNew ? '' : header.name;\n }\n return header?.displayName ?? header?.name;\n }\n\n colorForColumnHeader(x: ModelIndex, depth = 0): string | null {\n const column = this.columnAtDepth(x, depth);\n if (isColumnHeaderGroup(column)) {\n return column.color ?? null;\n }\n return null;\n }\n\n tooltipForCell(column: GridRangeIndex, row: GridRangeIndex): string | null {\n if (column === null || row === null) return null;\n if (TableUtils.isDateType(this.columns[column].type)) {\n return this.displayString(\n this.valueForCell(column, row),\n this.columns[column].type,\n this.columns[column].name,\n { formatString: DateUtils.FULL_DATE_FORMAT }\n );\n }\n return null;\n }\n\n getColumnHeaderGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined {\n const group = this.columnAtDepth(modelIndex, depth);\n if (isColumnHeaderGroup(group)) {\n return group;\n }\n return undefined;\n }\n\n getColumnHeaderParentGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined {\n return this.columnHeaderParentMap.get(\n this.columnAtDepth(modelIndex, depth)?.name ?? ''\n );\n }\n\n columnAtDepth(\n x: ModelIndex,\n depth = 0\n ): ColumnHeaderGroup | DisplayColumn | undefined {\n if (depth === 0) {\n return this.columns[x];\n }\n\n const columnName = this.columns[x]?.name;\n let group = this.columnHeaderParentMap.get(columnName);\n\n if (!group) {\n return undefined;\n }\n\n let currentDepth = group.depth;\n while (currentDepth < depth) {\n group = this.columnHeaderParentMap.get(group.name);\n if (!group) {\n return undefined;\n }\n currentDepth = group.depth;\n }\n\n if (group.depth === depth) {\n return group;\n }\n\n return undefined;\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 private getMemoizedInitialMovedColumns = memoize(\n (layoutHints?: DhType.LayoutHints): readonly MoveOperation[] => {\n if (!layoutHints) {\n return [];\n }\n let movedColumns: MoveOperation[] = [];\n const { groupMap } = IrisGridUtils.parseColumnHeaderGroups(\n this,\n layoutHints?.columnGroups ?? []\n );\n\n const moveColumn = (name: string, toIndex: VisibleIndex): void => {\n const modelIndex = this.getColumnIndexByName(name);\n if (modelIndex == null) {\n throw new Error(`Unknown layout hint column: ${name}`);\n }\n const visibleIndex = GridUtils.getVisibleIndex(\n modelIndex,\n movedColumns\n );\n movedColumns = GridUtils.moveItem(visibleIndex, toIndex, movedColumns);\n };\n\n const moveGroup = (name: string, toIndex: VisibleIndex): void => {\n const group = groupMap.get(name);\n if (group == null) {\n throw new Error(`Unknown layout hint group: ${name}`);\n }\n const visibleRange = group.getVisibleRange(movedColumns);\n movedColumns = GridUtils.moveRange(visibleRange, toIndex, movedColumns);\n };\n\n const frontColumns = layoutHints.frontColumns ?? [];\n const backColumns = layoutHints.backColumns ?? [];\n const frozenColumns = layoutHints.frozenColumns ?? [];\n\n if (\n frontColumns.length > 0 ||\n backColumns.length > 0 ||\n frozenColumns.length > 0\n ) {\n const usedColumns = new Set();\n\n let frontIndex = 0;\n frozenColumns?.forEach(name => {\n if (usedColumns.has(name)) {\n throw new Error(\n `Column specified in multiple layout hints: ${name}`\n );\n }\n moveColumn(name, frontIndex);\n frontIndex += 1;\n });\n frontColumns.forEach(name => {\n if (usedColumns.has(name)) {\n throw new Error(\n `Column specified in multiple layout hints: ${name}`\n );\n }\n moveColumn(name, frontIndex);\n frontIndex += 1;\n });\n\n let backIndex = this.columns.length - 1;\n backColumns?.forEach(name => {\n if (usedColumns.has(name)) {\n throw new Error(\n `Column specified in multiple layout hints: ${name}`\n );\n }\n moveColumn(name, backIndex);\n backIndex -= 1;\n });\n }\n\n const layoutHintColumnGroups = layoutHints?.columnGroups;\n if (layoutHintColumnGroups) {\n const columnGroups = [...groupMap.values()];\n columnGroups.sort((a, b) => a.depth - b.depth);\n\n columnGroups.forEach(group => {\n const firstChildName = group.children[0];\n const rightModelIndex = this.getColumnIndexByName(firstChildName);\n\n let rightVisibleIndex: number;\n\n if (rightModelIndex != null) {\n rightVisibleIndex = GridUtils.getVisibleIndex(\n rightModelIndex,\n movedColumns\n );\n } else {\n const firstChildGroup = groupMap.get(firstChildName);\n if (!firstChildGroup) {\n throw new Error(\n `Unknown column ${firstChildName} in group ${group.name}`\n );\n }\n\n const visibleRange = firstChildGroup.getVisibleRange(movedColumns);\n // Columns will be moved to start at the end of the first child group\n [, rightVisibleIndex] = visibleRange;\n }\n\n for (let i = 1; i < group.children.length; i += 1) {\n const childName = group.children[i];\n const childGroup = groupMap.get(childName);\n const childColumn = this.getColumnIndexByName(childName);\n\n if (childGroup) {\n // All columns in the group will be before or after the start index\n // Lower level groups are re-arranged first, so they will be contiguous\n const isBeforeGroup =\n childGroup.getVisibleRange(movedColumns)[0] < rightVisibleIndex;\n\n const moveToIndex = isBeforeGroup\n ? rightVisibleIndex - childGroup.childIndexes.length + 1\n : rightVisibleIndex + 1;\n\n moveGroup(childName, moveToIndex);\n rightVisibleIndex =\n moveToIndex + childGroup.childIndexes.length - 1;\n } else if (childColumn != null) {\n const isBeforeGroup =\n GridUtils.getVisibleIndex(childColumn, movedColumns) <\n rightVisibleIndex;\n\n const moveToIndex = isBeforeGroup\n ? rightVisibleIndex\n : rightVisibleIndex + 1;\n moveColumn(childName, moveToIndex);\n rightVisibleIndex = moveToIndex;\n }\n }\n });\n }\n\n this._movedColumns = movedColumns;\n return movedColumns;\n }\n );\n\n /**\n * Used to get the initial moved columns based on layout hints\n */\n get initialMovedColumns(): readonly MoveOperation[] {\n return this.getMemoizedInitialMovedColumns(this.layoutHints ?? undefined);\n }\n\n getMemoizedInitialColumnHeaderGroups = memoize(\n (layoutHints?: DhType.LayoutHints) =>\n IrisGridUtils.parseColumnHeaderGroups(\n this,\n layoutHints?.columnGroups ?? []\n ).groups\n );\n\n get initialColumnHeaderGroups(): ColumnHeaderGroup[] {\n return this.getMemoizedInitialColumnHeaderGroups(\n this.layoutHints ?? undefined\n );\n }\n\n get columnHeaderMaxDepth(): number {\n return this._columnHeaderMaxDepth ?? 1;\n }\n\n private set columnHeaderMaxDepth(depth: number) {\n this._columnHeaderMaxDepth = depth;\n }\n\n get columnHeaderGroupMap(): Map<string, ColumnHeaderGroup> {\n this.initializeColumnHeaderGroups();\n return this._columnHeaderGroupMap;\n }\n\n get columnHeaderGroups(): ColumnHeaderGroup[] {\n this.initializeColumnHeaderGroups();\n return this._columnHeaderGroups;\n }\n\n set columnHeaderGroups(groups: ColumnHeaderGroup[]) {\n if (groups === this._columnHeaderGroups) {\n return;\n }\n\n const {\n groups: newGroups,\n maxDepth,\n parentMap,\n groupMap,\n } = IrisGridUtils.parseColumnHeaderGroups(\n this,\n groups ?? this.initialColumnHeaderGroups\n );\n\n this._columnHeaderGroups = newGroups;\n this.columnHeaderMaxDepth = maxDepth;\n this.columnHeaderParentMap = parentMap;\n this._columnHeaderGroupMap = groupMap;\n this._isColumnHeaderGroupsInitialized = true;\n }\n\n private initializeColumnHeaderGroups(): void {\n if (!this._isColumnHeaderGroupsInitialized) {\n this.columnHeaderGroups = IrisGridUtils.parseColumnHeaderGroups(\n this,\n this.layoutHints?.columnGroups ?? []\n ).groups;\n }\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 source column for given coordinates.\n * - Retrieve the totals column if this is a totals row\n * - Retrieve the source column if it's a proxied column\n * - Otherwise return the column at the given index\n * @param column Column index to get the source column from\n * @param row Row index to get the source column from\n */\n sourceColumn(column: ModelIndex, row: ModelIndex): DhType.Column {\n const totalsRow = this.totalsRow(row);\n if (totalsRow != null) {\n const operation = this.totals?.operationOrder[totalsRow];\n const defaultOperation =\n this.totals?.defaultOperation ?? AggregationOperation.SUM;\n const tableColumn = this.columns[column];\n\n // Find the matching totals table column for the operation\n // When there are multiple aggregations for the column, 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 for the column, then the totals column name is just the original column name\n const totalsColumn = this.totalsTable?.columns.find(\n col =>\n col.name === `${tableColumn.name}__${operation}` ||\n ((operation === defaultOperation ||\n this.totals?.operationMap[col.name]?.length === 1) &&\n col.name === tableColumn.name)\n );\n if (totalsColumn != null) {\n return totalsColumn;\n }\n // There may be cases were the totals table doesn't have a column, such as when there's a virtual column\n }\n return this.columns[column];\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 if (!this.isEditable) {\n return null;\n }\n\n const pendingRow = y - this.floatingTopRowCount - this.table.size;\n\n if (pendingRow >= 0) {\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): DhType.Format | undefined {\n return this.dataForCell(x, y)?.format;\n }\n\n valueForCell(x: ModelIndex, y: ModelIndex): unknown {\n const data = this.dataForCell(x, y);\n\n /* JS API current sets null values as undefined in some instances. This means \n we need to nullish coaelesce so all undefined values from the API return null \n since the data has been fetched. undefined is used to indicate the API has not \n fetched data yet */\n if (data) {\n return data.value ?? null;\n }\n return undefined;\n }\n\n copyViewportData(data: DhType.ViewportData): void {\n if (data == null) {\n log.warn('invalid data!');\n return;\n }\n\n this.viewportData = this.extractViewportData(data);\n this.formattedStringData = [];\n }\n\n copyTotalsData(totalsData: DhType.ViewportData): void {\n if (totalsData == null) {\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 [name, 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: DhType.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: DhType.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: DhType.Row, columns: DhType.Column[]): R {\n const data = new Map<ModelIndex | ColumnName, 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 data.set(index ?? column.name, {\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(): DhType.FilterCondition[] {\n return this.table.filter;\n }\n\n set filter(filter: DhType.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 get columnAlignmentMap(): ReadonlyMap<string, CanvasTextAlign> {\n return this.irisColumnAlignmentMap;\n }\n\n set columnAlignmentMap(columnAlignmentMap: Map<string, CanvasTextAlign>) {\n this.irisColumnAlignmentMap = columnAlignmentMap;\n }\n\n displayString(\n value: unknown,\n columnType: string,\n columnName = '',\n formatOverride?: { formatString?: string | null }\n ): string {\n return this.getCachedFormattedString(\n this.formatter,\n value,\n columnType,\n columnName,\n formatOverride\n );\n }\n\n get sort(): DhType.Sort[] {\n return this.table.sort;\n }\n\n set sort(sort: DhType.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: DhType.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?: DhType.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?: DhType.Column[]\n ): void {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.VIEWPORT_UPDATED)\n );\n log.debug2('applyBufferedViewport', viewportTop, viewportBottom, columns);\n if (this.subscription == null) {\n log.debug2('applyBufferedViewport creating new subscription');\n this.subscription =\n this.table.setViewport(viewportTop, viewportBottom, columns) ?? null;\n } else {\n log.debug2('applyBufferedViewport using existing subscription');\n this.subscription.setViewport(viewportTop, viewportBottom, columns);\n }\n }\n\n async snapshot(\n ranges: readonly GridRange[],\n includeHeaders = false,\n formatValue: (value: unknown, column: DhType.Column) => unknown = value =>\n value,\n consolidateRanges = true\n ): Promise<unknown[][]> {\n if (this.subscription == null) {\n throw new Error('No subscription available');\n }\n\n const consolidated = consolidateRanges\n ? GridRange.consolidate(ranges)\n : 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 = this.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: readonly GridRange[],\n includeHeaders = false,\n formatValue: (\n value: unknown,\n column: DhType.Column,\n row?: DhType.Row\n ) => string = value => `${value}`\n ): Promise<string> {\n log.debug2('textSnapshot', ranges, includeHeaders);\n\n const data = await this.snapshot(\n ranges,\n includeHeaders,\n formatValue,\n false\n );\n return data.map(row => row.join('\\t')).join('\\n');\n }\n\n async valuesTable(\n columns: DhType.Column | readonly DhType.Column[]\n ): Promise<DhType.Table> {\n let table = null;\n try {\n table = await this.table.copy();\n table.applyFilter([]);\n table.applySort([]);\n return await table.selectDistinct(\n Array.isArray(columns) ? columns : [columns]\n );\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 | null }\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(\n (top: number, bottom: number): [number, number] => {\n const viewHeight = bottom - top;\n const viewportTop = Math.max(\n 0,\n top - viewHeight * IrisGridTableModelTemplate.ROW_BUFFER_PAGES\n );\n const viewportBottom =\n bottom + viewHeight * IrisGridTableModelTemplate.ROW_BUFFER_PAGES;\n return [viewportTop, viewportBottom];\n }\n );\n\n getCachedPendingErrors = memoize(\n (\n pendingDataMap: PendingDataMap,\n columns: DhType.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 isColumnMovable(modelIndex: ModelIndex, depth: number): boolean {\n if (modelIndex < 0 || modelIndex >= this.columnCount) {\n return false;\n }\n\n // All groups are movable\n if (depth > 0) {\n return true;\n }\n\n const columnName = this.columns[modelIndex].name;\n if (\n this.frontColumns.includes(columnName) ||\n this.backColumns.includes(columnName) ||\n this.frozenColumns.includes(columnName) ||\n !columnName\n ) {\n return false;\n }\n return !this.isKeyColumn(modelIndex);\n }\n\n isColumnSortable(modelIndex: ModelIndex): boolean {\n return this.columns[modelIndex].isSortable ?? true;\n }\n\n isKeyColumn(x: ModelIndex): boolean {\n return this.keyColumnSet.has(this.columns[x].name);\n }\n\n isValueColumn(x: ModelIndex): boolean {\n return this.valueColumnSet.has(this.columns[x].name);\n }\n\n isRowMovable(): boolean {\n return false;\n }\n\n isEditableRange(range: GridRange): boolean {\n // Make sure we have an input table and a valid range\n if (\n this.inputTable == null ||\n range.startRow == null ||\n range.endRow == null\n ) {\n return false;\n }\n\n // Check that the edit is in the editable range\n // If an input table has keyed columns, the non-key columns are always editable\n // If an input table does not have key columns, it is append only and existing rows cannot be editable\n // Pending rows are always editable\n const isPendingRange =\n this.isPendingRow(range.startRow) && this.isPendingRow(range.endRow);\n\n let isKeyColumnInRange = false;\n assertNotNull(range.startColumn);\n // Check if any of the columns in grid range are key columns\n const bound = range.endColumn ?? this.table.size;\n for (let column = range.startColumn; column <= bound; column += 1) {\n const isKey = this.isKeyColumn(column);\n const isValue = this.isValueColumn(column);\n\n if (!isKey && !isValue) {\n // If any column is not a key or value column, range is not editable\n return false;\n }\n if (isKey) {\n isKeyColumnInRange = true;\n break;\n }\n }\n\n if (\n !(isPendingRange || (this.keyColumnSet.size !== 0 && !isKeyColumnInRange))\n ) {\n return false;\n }\n\n return true;\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: readonly 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 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(\n ranges: readonly GridRange[],\n text: string\n ): Promise<void> {\n if (!this.isEditableRanges(ranges as GridRange[])) {\n throw new Error(`Edits contain uneditable 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<DhType.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 = this.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 = this.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] = this.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: readonly 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(`Edits contain uneditable ranges`);\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 = this.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] = this.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 = this.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 columnName =\n typeof columnIndex === 'string'\n ? columnIndex\n : this.columns[columnIndex].name;\n newRow[columnName] = 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.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(column: ModelIndex, row: ModelIndex): string {\n return this.textValueForCell(column, row) ?? '';\n }\n\n async delete(ranges: readonly GridRange[]): Promise<void> {\n throw new Error('Delete not implemented');\n }\n\n isValidForCell(x: ModelIndex, y: ModelIndex, value: string): boolean {\n try {\n const column = this.columns[x];\n this.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"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"IrisGridTableModelTemplate.js","names":["memoize","throttle","GridRange","GridUtils","memoizeClear","Log","EventShimCustomEvent","PromiseUtils","assertNotNull","TableUtils","Formatter","FormatterUtils","DateUtils","IrisGridModel","AggregationOperation","IrisGridUtils","MissingKeyError","isColumnHeaderGroup","log","module","SET_VIEWPORT_THROTTLE","APPLY_VIEWPORT_THROTTLE","isIrisGridTableModelTemplate","model","table","undefined","IrisGridTableModelTemplate","seekRow","startRow","column","valueType","value","insensitive","contains","isBackwards","Error","export","columnStatistics","customColumns","formatColumns","updateFrozenColumns","columns","rollupConfig","selectDistinctColumns","names","constructor","dh","formatter","arguments","length","inputTable","columnAlignmentMap","Map","_defineProperty","layoutHints","_layoutHints$columnGr","_layoutHints$frontCol","_layoutHints$backColu","_layoutHints$frozenCo","movedColumns","groupMap","parseColumnHeaderGroups","columnGroups","moveColumn","name","toIndex","modelIndex","getColumnIndexByName","concat","visibleIndex","getVisibleIndex","moveItem","moveGroup","group","get","visibleRange","getVisibleRange","moveRange","frontColumns","backColumns","frozenColumns","usedColumns","Set","frontIndex","forEach","has","backIndex","layoutHintColumnGroups","values","sort","a","b","depth","firstChildName","children","rightModelIndex","rightVisibleIndex","firstChildGroup","i","childName","childGroup","childColumn","isBeforeGroup","moveToIndex","childIndexes","_movedColumns","_layoutHints$columnGr2","groups","indices","_ref","set","top","bottom","error","viewport","debug2","applyViewport","viewportTop","viewportBottom","getCachedViewportRowRange","applyBufferedViewport","leading","columnType","columnName","formatOverride","getFormattedString","max","isCustomColumnFormatDefined","viewHeight","Math","ROW_BUFFER_PAGES","pendingDataMap","keyColumnCount","map","row","rowIndex","data","rowData","_map$get","push","handleTableDisconnect","bind","handleTableReconnect","handleTableUpdate","handleTotalsUpdate","handleRequestFailed","handleCustomColumnsChanged","irisFormatter","irisColumnAlignmentMap","irisGridUtils","subscription","tableUtils","viewportData","formattedStringData","pendingStringData","isSaveInProgress","totalsTable","totalsTablePromise","totals","totalsDataMap","pendingNewDataMap","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","_this$totals$operatio","_this$totals","size","operationOrder","pendingDataErrors","_this$inputTable$keyC","_this$inputTable","getCachedPendingErrors","keyColumns","isValidIndex","columnIndex","maxPendingDataRow","PENDING_DATA_UPDATED","pendingRowCount","count","keys","columnCount","floatingBottomRowCount","_this$totals$operatio2","_this$totals2","showOnTop","floatingTopRowCount","_this$totals$operatio3","_this$totals3","isValuesTableAvailable","selectDistinct","copy","isChartBuilderAvailable","isOrganizeColumnsAvailable","isTotalsAvailable","getTotalsTable","isEditable","isDeletable","keyColumnSet","isViewportPending","rows","pendingTop","offset","pendingBottom","pendingLeft","index","pendingRight","cacheFormattedValue","x","y","text","cachePendingValue","clearPendingValue","textValueForCell","_this$pendingStringDa","_this$formattedString","valueForCell","sourceColumn","hasCustomColumnFormat","getCachedCustomColumnFormatFlag","type","formatForCell","formatString","displayString","textForCell","_this$columns$x","isKeyColumn","pendingRow","isTextType","showNullStrings","showEmptyStrings","truncationCharForCell","isNumberType","truncateNumbersWithPound","colorForCell","theme","dataForCell","format","nullStringColor","color","isPendingRow","pendingTextColor","colorForValue","errorTextColor","textColor","backgroundColorForCell","_this$formatForCell$b","_this$formatForCell","backgroundColor","textAlignForCell","userTextAlignment","textAlignForValue","textForColumnHeader","_header$displayName","header","columnAtDepth","isNew","displayName","colorForColumnHeader","_column$color","tooltipForCell","isDateType","FULL_DATE_FORMAT","getColumnHeaderGroup","getColumnHeaderParentGroup","_this$columnAtDepth$n","_this$columnAtDepth","columnHeaderParentMap","_this$columns$x2","currentDepth","textForRowFooter","totalsRow","initialMovedColumns","_this$layoutHints","getMemoizedInitialMovedColumns","initialColumnHeaderGroups","_this$layoutHints2","getMemoizedInitialColumnHeaderGroups","columnHeaderMaxDepth","_this$_columnHeaderMa","_columnHeaderMaxDepth","columnHeaderGroupMap","initializeColumnHeaderGroups","_columnHeaderGroupMap","columnHeaderGroups","_columnHeaderGroups","newGroups","maxDepth","parentMap","_isColumnHeaderGroupsInitialized","_this$layoutHints$col","_this$layoutHints3","_this$totals$operatio4","_this$totals4","_this$totals$showOnTo","_this$totals5","_this$viewportData$of","_this$viewportData","_this$viewportData$ro","_this$viewportData2","totalsRowCount","_this$totals6","_this$totalsDataMap$g","_this$totalsDataMap","operation","_this$pendingNewDataM","viewportY","_this$totals7","_this$totals$defaultO","_this$totals8","_this$totalsTable","defaultOperation","SUM","tableColumn","totalsColumn","find","col","_this$totals9","operationMap","_this$totals$operatio5","_this$totals0","_this$totals$showOnTo2","_this$totals1","isTotalsRow","_this$row","_this$dataForCell","_data$value","warn","extractViewportData","totalsData","_this$totals$defaultO2","_this$totals10","_this$totals11","_this","dataMap","_loop","_operationMap$name$","_operationMap$name","c","split","findIndex","getFormat","getColumnIndicesByNameMap","newData","r","newRow","extractViewportRow","filter","applyFilter","FORMATTER_UPDATED","getCachedFormattedString","applySort","totalsConfig","debug","setTotalsTable","makeCancelable","then","catch","err","isCanceled","listenerCount","VIEWPORT_UPDATED","_this$table$setViewpo","snapshot","ranges","_arguments","_this2","_asyncToGenerator","includeHeaders","formatValue","consolidateRanges","consolidated","consolidate","isValidSnapshotRanges","topFloatingRowsSet","tableRanges","bottomFloatingRowsSet","range","endRow","add","startColumn","min","endColumn","columnsFromRanges","result","topFloatingRows","_loop2","rangeSet","rangeSetFromRanges","bottomFloatingRows","_loop3","textSnapshot","_arguments2","_this3","join","valuesTable","_this4","Array","isArray","isColumnMovable","includes","isColumnSortable","_this$columns$modelIn","isSortable","isValueColumn","valueColumnSet","isRowMovable","isEditableRange","_range$endColumn","isPendingRange","isKeyColumnInRange","bound","isKey","isValue","isDeletableRange","isEditableRanges","every","isDeletableRanges","getTableAreaRange","getPendingAreaRange","setValueForCell","_this5","setValueForRanges","_this6","columnSet","formattedText","forEachCell","makeValue","timeZone","pendingAreaRange","pendingRanges","intersection","newDataMap","newRowData","delete","_objectSpread","tableAreaRange","_this6$inputTable","_range$startRow","_range$endRow","newRows","addRows","cellText","setValues","_arguments3","_this7","edits","edit","_edit$column","_edit$row","makeCell","_edit$column2","_edit$row2","rowEditMap","reduce","rowMap","_edit$row3","_rowMap$get","_edit$column3","_edit$row4","_this7$inputTable","dataIndex","rangeRowCount","rowEdits","_edit$column4","info","_edit$column5","_edit$row5","commitPending","_this8","_this8$inputTable","_this8$viewport$botto","_this8$viewport","_ref2","editValueForCell","_this$textValueForCel","isValidForCell","e"],"sources":["../src/IrisGridTableModelTemplate.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport throttle from 'lodash.throttle';\nimport {\n type DeletableGridModel,\n type EditableGridModel,\n type EditOperation,\n GridRange,\n GridUtils,\n memoizeClear,\n type ModelIndex,\n type MoveOperation,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport {\n type CancelablePromise,\n EventShimCustomEvent,\n PromiseUtils,\n assertNotNull,\n} from '@deephaven/utils';\nimport {\n TableUtils,\n Formatter,\n FormatterUtils,\n DateUtils,\n} from '@deephaven/jsapi-utils';\nimport IrisGridModel, { type DisplayColumn } from './IrisGridModel';\nimport AggregationOperation from './sidebar/aggregations/AggregationOperation';\nimport IrisGridUtils from './IrisGridUtils';\nimport MissingKeyError from './MissingKeyError';\nimport {\n type ColumnName,\n type UITotalsTableConfig,\n type UIRow,\n type PendingDataMap,\n type CellData,\n type UIViewportData,\n type PendingDataErrorMap,\n} from './CommonTypes';\nimport { type IrisGridThemeType } from './IrisGridTheme';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { isColumnHeaderGroup } from './ColumnHeaderGroup';\n\nconst log = Log.module('IrisGridTableModelTemplate');\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 DhType.Table | DhType.TreeTable = DhType.Table,\n R extends UIRow = UIRow,\n >\n extends IrisGridModel\n implements DeletableGridModel, EditableGridModel\n{\n static ROW_BUFFER_PAGES = 1;\n\n seekRow(\n startRow: number,\n column: DhType.Column,\n valueType: DhType.ValueTypeType,\n value: unknown,\n insensitive?: boolean | undefined,\n contains?: boolean | undefined,\n isBackwards?: boolean | undefined\n ): Promise<number> {\n throw new Error('Method not implemented.');\n }\n\n export(): Promise<DhType.Table> {\n throw new Error('Method not implemented.');\n }\n\n columnStatistics(column: DhType.Column): Promise<DhType.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(): DhType.CustomColumn[] {\n return [];\n }\n\n set formatColumns(formatColumns: DhType.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(): DhType.RollupConfig | null {\n throw new Error('Method not implemented.');\n }\n\n set rollupConfig(rollupConfig: DhType.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 /**\n * Returns an array of the columns in the model\n * The order of model columns should never change once established\n */\n get columns(): DhType.Column[] {\n return this.table.columns;\n }\n\n dh: typeof DhType;\n\n irisGridUtils: IrisGridUtils;\n\n tableUtils: TableUtils;\n\n private irisFormatter: Formatter;\n\n private irisColumnAlignmentMap: Map<string, CanvasTextAlign>;\n\n inputTable: DhType.InputTable | null;\n\n private subscription: DhType.TableViewportSubscription | null;\n\n table: T;\n\n viewport: {\n top: VisibleIndex;\n bottom: VisibleIndex;\n columns?: DhType.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: DhType.TotalsTable | null;\n\n totalsTablePromise: CancelablePromise<DhType.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 _columnHeaderGroupMap: Map<string, ColumnHeaderGroup> = new Map();\n\n private columnHeaderParentMap: Map<string, ColumnHeaderGroup> = new Map();\n\n private _columnHeaderMaxDepth: number | null = null;\n\n private _columnHeaderGroups: ColumnHeaderGroup[] = [];\n\n private _isColumnHeaderGroupsInitialized = false;\n\n private _movedColumns: MoveOperation[] | null = null;\n\n /**\n * @param dh JSAPI instance\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 * @param columnAlignmentMap Map of column alignments\n */\n constructor(\n dh: typeof DhType,\n table: T,\n formatter = new Formatter(dh),\n inputTable: DhType.InputTable | null = null,\n columnAlignmentMap = new Map<string, CanvasTextAlign>()\n ) {\n super(dh);\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 =\n this.handleCustomColumnsChanged.bind(this);\n\n this.dh = dh;\n this.irisFormatter = formatter;\n this.irisColumnAlignmentMap = columnAlignmentMap;\n this.irisGridUtils = new IrisGridUtils(dh);\n this.inputTable = inputTable;\n this.subscription = null;\n this.table = table;\n this.tableUtils = new TableUtils(dh);\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.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 const { dh } = this;\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 const { dh } = this;\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: DhType.TotalsTable): void {\n const { dh } = this;\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: DhType.TotalsTable): void {\n const { dh } = this;\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: DhType.Event<DhType.ViewportData>): void {\n this.copyViewportData(event.detail);\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleTotalsUpdate(event: DhType.Event<DhType.ViewportData>): void {\n this.copyTotalsData(event.detail);\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n handleRequestFailed(event: DhType.Event<unknown>): 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 // Table size can be negative if the table isn't ready yet\n Math.max(this.table.size, 0) +\n this.pendingNewRowCount +\n (this.totals?.operationOrder?.length ?? 0)\n );\n }\n\n get pendingDataErrors(): PendingDataErrorMap {\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 != null && this.totals.showOnTop\n ? 0\n : this.totals?.operationOrder?.length ?? 0;\n }\n\n get floatingTopRowCount(): number {\n return this.totals != null && this.totals.showOnTop\n ? this.totals?.operationOrder?.length ?? 0\n : 0;\n }\n\n get isValuesTableAvailable(): boolean {\n return this.table.selectDistinct != null && this.table.copy != null;\n }\n\n get isChartBuilderAvailable(): boolean {\n return true;\n }\n\n get isOrganizeColumnsAvailable(): 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 get isDeletable(): boolean {\n return this.keyColumnSet.size > 0;\n }\n\n get isViewportPending(): boolean {\n if (\n this.viewport == null ||\n this.viewport.columns === undefined ||\n this.viewportData == null\n ) {\n return true;\n }\n // no columns or no rows\n if (\n this.viewport.columns.length === 0 ||\n this.viewportData.rows.length === 0\n ) {\n return false;\n }\n\n // offset is first row of loaded data\n const pendingTop = this.viewport.top < this.viewportData.offset;\n // offset + row.length is last row of loaded data\n const pendingBottom =\n this.viewportData.offset + this.viewportData.rows.length <\n this.viewport.bottom;\n // left column doesn't exist in data\n const pendingLeft =\n this.viewportData.rows[0].data.get(this.viewport.columns[0].index) ===\n undefined;\n // right column doesn't exist in data\n const pendingRight =\n this.viewportData.rows[0].data.get(\n this.viewport.columns[this.viewport.columns.length - 1].index\n ) === undefined;\n\n return pendingTop || pendingBottom || pendingLeft || pendingRight;\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 | undefined {\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 if (value === undefined) {\n return undefined;\n }\n\n const column = this.sourceColumn(x, y);\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\n if (TableUtils.isTextType(this.columns[x]?.type)) {\n if (text === null) {\n return this.formatter.showNullStrings ? 'null' : '';\n }\n\n if (text === '') {\n return this.formatter.showEmptyStrings ? 'empty' : '';\n }\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?.color != null && 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.sourceColumn(x, y);\n return IrisGridUtils.colorForValue(\n theme,\n column.type,\n column.name,\n value\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(\n x: ModelIndex,\n y: ModelIndex,\n theme: IrisGridThemeType\n ): string | null {\n return this.formatForCell(x, y)?.backgroundColor ?? null;\n }\n\n textAlignForCell(x: ModelIndex, y: ModelIndex): CanvasTextAlign {\n const column = this.sourceColumn(x, y);\n\n const userTextAlignment = this.columnAlignmentMap.get(column.name);\n if (userTextAlignment != null) {\n return userTextAlignment;\n }\n\n return IrisGridUtils.textAlignForValue(column.type, column.name);\n }\n\n textForColumnHeader(x: ModelIndex, depth = 0): string | undefined {\n const header = this.columnAtDepth(x, depth);\n if (isColumnHeaderGroup(header)) {\n return header.isNew ? '' : header.name;\n }\n return header?.displayName ?? header?.name;\n }\n\n colorForColumnHeader(x: ModelIndex, depth = 0): string | null {\n const column = this.columnAtDepth(x, depth);\n if (isColumnHeaderGroup(column)) {\n return column.color ?? null;\n }\n return null;\n }\n\n tooltipForCell(column: ModelIndex, row: ModelIndex): string | null {\n if (TableUtils.isDateType(this.columns[column].type)) {\n return this.displayString(\n this.valueForCell(column, row),\n this.columns[column].type,\n this.columns[column].name,\n { formatString: DateUtils.FULL_DATE_FORMAT }\n );\n }\n return null;\n }\n\n getColumnHeaderGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined {\n const group = this.columnAtDepth(modelIndex, depth);\n if (isColumnHeaderGroup(group)) {\n return group;\n }\n return undefined;\n }\n\n getColumnHeaderParentGroup(\n modelIndex: ModelIndex,\n depth: number\n ): ColumnHeaderGroup | undefined {\n return this.columnHeaderParentMap.get(\n this.columnAtDepth(modelIndex, depth)?.name ?? ''\n );\n }\n\n columnAtDepth(\n x: ModelIndex,\n depth = 0\n ): ColumnHeaderGroup | DisplayColumn | undefined {\n if (depth === 0) {\n return this.columns[x];\n }\n\n const columnName = this.columns[x]?.name;\n let group = this.columnHeaderParentMap.get(columnName);\n\n if (!group) {\n return undefined;\n }\n\n let currentDepth = group.depth;\n while (currentDepth < depth) {\n group = this.columnHeaderParentMap.get(group.name);\n if (!group) {\n return undefined;\n }\n currentDepth = group.depth;\n }\n\n if (group.depth === depth) {\n return group;\n }\n\n return undefined;\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 private getMemoizedInitialMovedColumns = memoize(\n (layoutHints?: DhType.LayoutHints): readonly MoveOperation[] => {\n if (!layoutHints) {\n return [];\n }\n let movedColumns: MoveOperation[] = [];\n const { groupMap } = IrisGridUtils.parseColumnHeaderGroups(\n this,\n layoutHints?.columnGroups ?? []\n );\n\n const moveColumn = (name: string, toIndex: VisibleIndex): void => {\n const modelIndex = this.getColumnIndexByName(name);\n if (modelIndex == null) {\n throw new Error(`Unknown layout hint column: ${name}`);\n }\n const visibleIndex = GridUtils.getVisibleIndex(\n modelIndex,\n movedColumns\n );\n movedColumns = GridUtils.moveItem(visibleIndex, toIndex, movedColumns);\n };\n\n const moveGroup = (name: string, toIndex: VisibleIndex): void => {\n const group = groupMap.get(name);\n if (group == null) {\n throw new Error(`Unknown layout hint group: ${name}`);\n }\n const visibleRange = group.getVisibleRange(movedColumns);\n movedColumns = GridUtils.moveRange(visibleRange, toIndex, movedColumns);\n };\n\n const frontColumns = layoutHints.frontColumns ?? [];\n const backColumns = layoutHints.backColumns ?? [];\n const frozenColumns = layoutHints.frozenColumns ?? [];\n\n if (\n frontColumns.length > 0 ||\n backColumns.length > 0 ||\n frozenColumns.length > 0\n ) {\n const usedColumns = new Set();\n\n let frontIndex = 0;\n frozenColumns?.forEach(name => {\n if (usedColumns.has(name)) {\n throw new Error(\n `Column specified in multiple layout hints: ${name}`\n );\n }\n moveColumn(name, frontIndex);\n frontIndex += 1;\n });\n frontColumns.forEach(name => {\n if (usedColumns.has(name)) {\n throw new Error(\n `Column specified in multiple layout hints: ${name}`\n );\n }\n moveColumn(name, frontIndex);\n frontIndex += 1;\n });\n\n let backIndex = this.columns.length - 1;\n backColumns?.forEach(name => {\n if (usedColumns.has(name)) {\n throw new Error(\n `Column specified in multiple layout hints: ${name}`\n );\n }\n moveColumn(name, backIndex);\n backIndex -= 1;\n });\n }\n\n const layoutHintColumnGroups = layoutHints?.columnGroups;\n if (layoutHintColumnGroups) {\n const columnGroups = [...groupMap.values()];\n columnGroups.sort((a, b) => a.depth - b.depth);\n\n columnGroups.forEach(group => {\n const firstChildName = group.children[0];\n const rightModelIndex = this.getColumnIndexByName(firstChildName);\n\n let rightVisibleIndex: number;\n\n if (rightModelIndex != null) {\n rightVisibleIndex = GridUtils.getVisibleIndex(\n rightModelIndex,\n movedColumns\n );\n } else {\n const firstChildGroup = groupMap.get(firstChildName);\n if (!firstChildGroup) {\n throw new Error(\n `Unknown column ${firstChildName} in group ${group.name}`\n );\n }\n\n const visibleRange = firstChildGroup.getVisibleRange(movedColumns);\n // Columns will be moved to start at the end of the first child group\n [, rightVisibleIndex] = visibleRange;\n }\n\n for (let i = 1; i < group.children.length; i += 1) {\n const childName = group.children[i];\n const childGroup = groupMap.get(childName);\n const childColumn = this.getColumnIndexByName(childName);\n\n if (childGroup) {\n // All columns in the group will be before or after the start index\n // Lower level groups are re-arranged first, so they will be contiguous\n const isBeforeGroup =\n childGroup.getVisibleRange(movedColumns)[0] < rightVisibleIndex;\n\n const moveToIndex = isBeforeGroup\n ? rightVisibleIndex - childGroup.childIndexes.length + 1\n : rightVisibleIndex + 1;\n\n moveGroup(childName, moveToIndex);\n rightVisibleIndex =\n moveToIndex + childGroup.childIndexes.length - 1;\n } else if (childColumn != null) {\n const isBeforeGroup =\n GridUtils.getVisibleIndex(childColumn, movedColumns) <\n rightVisibleIndex;\n\n const moveToIndex = isBeforeGroup\n ? rightVisibleIndex\n : rightVisibleIndex + 1;\n moveColumn(childName, moveToIndex);\n rightVisibleIndex = moveToIndex;\n }\n }\n });\n }\n\n this._movedColumns = movedColumns;\n return movedColumns;\n }\n );\n\n /**\n * Used to get the initial moved columns based on layout hints\n */\n get initialMovedColumns(): readonly MoveOperation[] {\n return this.getMemoizedInitialMovedColumns(this.layoutHints ?? undefined);\n }\n\n getMemoizedInitialColumnHeaderGroups = memoize(\n (layoutHints?: DhType.LayoutHints) =>\n IrisGridUtils.parseColumnHeaderGroups(\n this,\n layoutHints?.columnGroups ?? []\n ).groups\n );\n\n get initialColumnHeaderGroups(): ColumnHeaderGroup[] {\n return this.getMemoizedInitialColumnHeaderGroups(\n this.layoutHints ?? undefined\n );\n }\n\n get columnHeaderMaxDepth(): number {\n return this._columnHeaderMaxDepth ?? 1;\n }\n\n private set columnHeaderMaxDepth(depth: number) {\n this._columnHeaderMaxDepth = depth;\n }\n\n get columnHeaderGroupMap(): Map<string, ColumnHeaderGroup> {\n this.initializeColumnHeaderGroups();\n return this._columnHeaderGroupMap;\n }\n\n get columnHeaderGroups(): ColumnHeaderGroup[] {\n this.initializeColumnHeaderGroups();\n return this._columnHeaderGroups;\n }\n\n set columnHeaderGroups(groups: ColumnHeaderGroup[]) {\n if (groups === this._columnHeaderGroups) {\n return;\n }\n\n const {\n groups: newGroups,\n maxDepth,\n parentMap,\n groupMap,\n } = IrisGridUtils.parseColumnHeaderGroups(\n this,\n groups ?? this.initialColumnHeaderGroups\n );\n\n this._columnHeaderGroups = newGroups;\n this.columnHeaderMaxDepth = maxDepth;\n this.columnHeaderParentMap = parentMap;\n this._columnHeaderGroupMap = groupMap;\n this._isColumnHeaderGroupsInitialized = true;\n }\n\n private initializeColumnHeaderGroups(): void {\n if (!this._isColumnHeaderGroupsInitialized) {\n this.columnHeaderGroups = IrisGridUtils.parseColumnHeaderGroups(\n this,\n this.layoutHints?.columnGroups ?? []\n ).groups;\n }\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 source column for given coordinates.\n * - Retrieve the totals column if this is a totals row\n * - Retrieve the source column if it's a proxied column\n * - Otherwise return the column at the given index\n * @param column Column index to get the source column from\n * @param row Row index to get the source column from\n */\n sourceColumn(column: ModelIndex, row: ModelIndex): DhType.Column {\n const totalsRow = this.totalsRow(row);\n if (totalsRow != null) {\n const operation = this.totals?.operationOrder[totalsRow];\n const defaultOperation =\n this.totals?.defaultOperation ?? AggregationOperation.SUM;\n const tableColumn = this.columns[column];\n\n // Find the matching totals table column for the operation\n // When there are multiple aggregations for the column, 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 for the column, then the totals column name is just the original column name\n const totalsColumn = this.totalsTable?.columns.find(\n col =>\n col.name === `${tableColumn.name}__${operation}` ||\n ((operation === defaultOperation ||\n this.totals?.operationMap[col.name]?.length === 1) &&\n col.name === tableColumn.name)\n );\n if (totalsColumn != null) {\n return totalsColumn;\n }\n // There may be cases were the totals table doesn't have a column, such as when there's a virtual column\n }\n return this.columns[column];\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 if (!this.isEditable) {\n return null;\n }\n\n const pendingRow = y - this.floatingTopRowCount - this.table.size;\n\n if (pendingRow >= 0) {\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): DhType.Format | undefined {\n return this.dataForCell(x, y)?.format;\n }\n\n valueForCell(x: ModelIndex, y: ModelIndex): unknown {\n const data = this.dataForCell(x, y);\n\n /* JS API current sets null values as undefined in some instances. This means \n we need to nullish coaelesce so all undefined values from the API return null \n since the data has been fetched. undefined is used to indicate the API has not \n fetched data yet */\n if (data) {\n return data.value ?? null;\n }\n return undefined;\n }\n\n copyViewportData(data: DhType.ViewportData): void {\n if (data == null) {\n log.warn('invalid data!');\n return;\n }\n\n this.viewportData = this.extractViewportData(data);\n this.formattedStringData = [];\n }\n\n copyTotalsData(totalsData: DhType.ViewportData): void {\n if (totalsData == null) {\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 [name, 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: DhType.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: DhType.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: DhType.Row, columns: DhType.Column[]): R {\n const data = new Map<ModelIndex | ColumnName, 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 data.set(index ?? column.name, {\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(): DhType.FilterCondition[] {\n return this.table.filter;\n }\n\n set filter(filter: DhType.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 get columnAlignmentMap(): ReadonlyMap<string, CanvasTextAlign> {\n return this.irisColumnAlignmentMap;\n }\n\n set columnAlignmentMap(columnAlignmentMap: Map<string, CanvasTextAlign>) {\n this.irisColumnAlignmentMap = columnAlignmentMap;\n }\n\n displayString(\n value: unknown,\n columnType: string,\n columnName = '',\n formatOverride?: { formatString?: string | null }\n ): string {\n return this.getCachedFormattedString(\n this.formatter,\n value,\n columnType,\n columnName,\n formatOverride\n );\n }\n\n get sort(): DhType.Sort[] {\n return this.table.sort;\n }\n\n set sort(sort: DhType.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: DhType.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?: DhType.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?: DhType.Column[]\n ): void {\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.VIEWPORT_UPDATED)\n );\n log.debug2('applyBufferedViewport', viewportTop, viewportBottom, columns);\n if (this.subscription == null) {\n log.debug2('applyBufferedViewport creating new subscription');\n this.subscription =\n this.table.setViewport(viewportTop, viewportBottom, columns) ?? null;\n } else {\n log.debug2('applyBufferedViewport using existing subscription');\n this.subscription.setViewport(viewportTop, viewportBottom, columns);\n }\n }\n\n async snapshot(\n ranges: readonly GridRange[],\n includeHeaders = false,\n formatValue: (value: unknown, column: DhType.Column) => unknown = value =>\n value,\n consolidateRanges = true\n ): Promise<unknown[][]> {\n if (this.subscription == null) {\n throw new Error('No subscription available');\n }\n\n const consolidated = consolidateRanges\n ? GridRange.consolidate(ranges)\n : 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 = this.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: readonly GridRange[],\n includeHeaders = false,\n formatValue: (\n value: unknown,\n column: DhType.Column,\n row?: DhType.Row\n ) => string = value => `${value}`\n ): Promise<string> {\n log.debug2('textSnapshot', ranges, includeHeaders);\n\n const data = await this.snapshot(\n ranges,\n includeHeaders,\n formatValue,\n false\n );\n return data.map(row => row.join('\\t')).join('\\n');\n }\n\n async valuesTable(\n columns: DhType.Column | readonly DhType.Column[]\n ): Promise<DhType.Table> {\n let table = null;\n try {\n table = await this.table.copy();\n table.applyFilter([]);\n table.applySort([]);\n return await table.selectDistinct(\n Array.isArray(columns) ? columns : [columns]\n );\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 | null }\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(\n (top: number, bottom: number): [number, number] => {\n const viewHeight = bottom - top;\n const viewportTop = Math.max(\n 0,\n top - viewHeight * IrisGridTableModelTemplate.ROW_BUFFER_PAGES\n );\n const viewportBottom =\n bottom + viewHeight * IrisGridTableModelTemplate.ROW_BUFFER_PAGES;\n return [viewportTop, viewportBottom];\n }\n );\n\n getCachedPendingErrors = memoize(\n (\n pendingDataMap: PendingDataMap,\n columns: DhType.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 isColumnMovable(modelIndex: ModelIndex, depth: number): boolean {\n if (modelIndex < 0 || modelIndex >= this.columnCount) {\n return false;\n }\n\n // All groups are movable\n if (depth > 0) {\n return true;\n }\n\n const columnName = this.columns[modelIndex].name;\n if (\n this.frontColumns.includes(columnName) ||\n this.backColumns.includes(columnName) ||\n this.frozenColumns.includes(columnName) ||\n !columnName\n ) {\n return false;\n }\n return !this.isKeyColumn(modelIndex);\n }\n\n isColumnSortable(modelIndex: ModelIndex): boolean {\n return this.columns[modelIndex].isSortable ?? true;\n }\n\n isKeyColumn(x: ModelIndex): boolean {\n return this.keyColumnSet.has(this.columns[x].name);\n }\n\n isValueColumn(x: ModelIndex): boolean {\n return this.valueColumnSet.has(this.columns[x].name);\n }\n\n isRowMovable(): boolean {\n return false;\n }\n\n isEditableRange(range: GridRange): boolean {\n // Make sure we have an input table and a valid range\n if (\n this.inputTable == null ||\n range.startRow == null ||\n range.endRow == null\n ) {\n return false;\n }\n\n // Check that the edit is in the editable range\n // If an input table has keyed columns, the non-key columns are always editable\n // If an input table does not have key columns, it is append only and existing rows cannot be editable\n // Pending rows are always editable\n const isPendingRange =\n this.isPendingRow(range.startRow) && this.isPendingRow(range.endRow);\n\n let isKeyColumnInRange = false;\n assertNotNull(range.startColumn);\n // Check if any of the columns in grid range are key columns\n const bound = range.endColumn ?? this.table.size;\n for (let column = range.startColumn; column <= bound; column += 1) {\n const isKey = this.isKeyColumn(column);\n const isValue = this.isValueColumn(column);\n\n if (!isKey && !isValue) {\n // If any column is not a key or value column, range is not editable\n return false;\n }\n if (isKey) {\n isKeyColumnInRange = true;\n break;\n }\n }\n\n if (\n !(isPendingRange || (this.keyColumnSet.size !== 0 && !isKeyColumnInRange))\n ) {\n return false;\n }\n\n return true;\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: readonly 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 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(\n ranges: readonly GridRange[],\n text: string\n ): Promise<void> {\n if (!this.isEditableRanges(ranges as GridRange[])) {\n throw new Error(`Edits contain uneditable 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<DhType.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 = this.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 = this.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] = this.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: readonly 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(`Edits contain uneditable ranges`);\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 = this.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] = this.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 = this.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 columnName =\n typeof columnIndex === 'string'\n ? columnIndex\n : this.columns[columnIndex].name;\n newRow[columnName] = 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.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(column: ModelIndex, row: ModelIndex): string {\n return this.textValueForCell(column, row) ?? '';\n }\n\n async delete(ranges: readonly GridRange[]): Promise<void> {\n throw new Error('Delete not implemented');\n }\n\n isValidForCell(x: ModelIndex, y: ModelIndex, value: string): boolean {\n try {\n const column = this.columns[x];\n this.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"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridTokenMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridTokenMouseHandler.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,IAAI,EACT,KAAK,SAAS,EAEd,qBAAqB,EAEtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AAGxC,cAAM,yBAA0B,SAAQ,qBAAqB;IAC3D,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,UAAU,CAAiB;IAEnC,OAAO,CAAC,OAAO,CAAiB;gBAEpB,QAAQ,EAAE,QAAQ;IAQ9B,OAAO,CAAC,cAAc;IAItB,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IASzE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;
|
|
1
|
+
{"version":3,"file":"IrisGridTokenMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridTokenMouseHandler.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,IAAI,EACT,KAAK,SAAS,EAEd,qBAAqB,EAEtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AAGxC,cAAM,yBAA0B,SAAQ,qBAAqB;IAC3D,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,UAAU,CAAiB;IAEnC,OAAO,CAAC,OAAO,CAAiB;gBAEpB,QAAQ,EAAE,QAAQ;IAQ9B,OAAO,CAAC,cAAc;IAItB,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IASzE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IA0E5D,MAAM,IAAI,kBAAkB;IAK5B,aAAa,IAAI,kBAAkB;IAKnC,OAAO,IAAI,kBAAkB;IAK7B,OAAO,IAAI,kBAAkB;CAI9B;AAED,eAAe,yBAAyB,CAAC"}
|
|
@@ -36,7 +36,9 @@ class IrisGridTokenMouseHandler extends GridTokenMouseHandler {
|
|
|
36
36
|
model
|
|
37
37
|
} = this.irisGrid.props;
|
|
38
38
|
var isUserHoveringLink = this.isHoveringLink(gridPoint, grid);
|
|
39
|
-
var
|
|
39
|
+
var modelColumn = this.irisGrid.getModelColumn(gridPoint.column);
|
|
40
|
+
var modelRow = this.irisGrid.getModelRow(gridPoint.row);
|
|
41
|
+
var tooltip = modelColumn != null && modelRow != null ? model.tooltipForCell(modelColumn, modelRow) : null;
|
|
40
42
|
if (isUserHoveringLink && this.currentLinkBox != null && isLinkToken(this.currentLinkBox.token)) {
|
|
41
43
|
var {
|
|
42
44
|
hoverTooltipProps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridTokenMouseHandler.js","names":["isLinkToken","GridTokenMouseHandler","deepEqual","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","IrisGridTokenMouseHandler","constructor","irisGrid","_defineProperty","lastColumn","lastRow","destroyTooltip","setState","hoverTooltipProps","setCursor","gridPoint","grid","isHoveringLink","cursor","stopPropagation","preventDefault","onMove","model","props","isUserHoveringLink","
|
|
1
|
+
{"version":3,"file":"IrisGridTokenMouseHandler.js","names":["isLinkToken","GridTokenMouseHandler","deepEqual","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","IrisGridTokenMouseHandler","constructor","irisGrid","_defineProperty","lastColumn","lastRow","destroyTooltip","setState","hoverTooltipProps","setCursor","gridPoint","grid","isHoveringLink","cursor","stopPropagation","preventDefault","onMove","model","props","isUserHoveringLink","modelColumn","getModelColumn","column","modelRow","getModelRow","row","tooltip","tooltipForCell","currentLinkBox","token","state","x1","left","y1","top","x2","right","y2","bottom","href","width","height","newProps","hoverDisplayValue","children","x","y","onDown","onContextMenu","onWheel","onLeave"],"sources":["../../src/mousehandlers/IrisGridTokenMouseHandler.tsx"],"sourcesContent":["import {\n type EventHandlerResult,\n type Grid,\n type GridPoint,\n isLinkToken,\n GridTokenMouseHandler,\n type GridRangeIndex,\n} from '@deephaven/grid';\nimport deepEqual from 'fast-deep-equal';\nimport type IrisGrid from '../IrisGrid';\n\n// Handler also helps with other tooltips\nclass IrisGridTokenMouseHandler extends GridTokenMouseHandler {\n private irisGrid: IrisGrid;\n\n private lastColumn: GridRangeIndex;\n\n private lastRow: GridRangeIndex;\n\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n this.lastColumn = null;\n this.lastRow = null;\n }\n\n private destroyTooltip(): void {\n this.irisGrid.setState({ hoverTooltipProps: null });\n }\n\n protected setCursor(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.isHoveringLink(gridPoint, grid)) {\n this.cursor = 'pointer';\n return { stopPropagation: false, preventDefault: false };\n }\n this.cursor = null;\n return false;\n }\n\n onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { model } = this.irisGrid.props;\n const isUserHoveringLink = this.isHoveringLink(gridPoint, grid);\n const modelColumn = this.irisGrid.getModelColumn(gridPoint.column);\n const modelRow = this.irisGrid.getModelRow(gridPoint.row);\n const tooltip =\n modelColumn != null && modelRow != null\n ? model.tooltipForCell(modelColumn, modelRow)\n : null;\n\n if (\n isUserHoveringLink &&\n this.currentLinkBox != null &&\n isLinkToken(this.currentLinkBox.token)\n ) {\n const { hoverTooltipProps } = this.irisGrid.state;\n const { x1: left, y1: top, x2: right, y2: bottom } = this.currentLinkBox;\n const { href } = this.currentLinkBox.token;\n const width = right - left;\n const height = bottom - top;\n const newProps = { left, top: top + 1, width, height };\n\n if (!deepEqual(hoverTooltipProps, newProps)) {\n this.irisGrid.setState({\n hoverTooltipProps: newProps,\n hoverDisplayValue: (\n <>\n {href} - Click once to follow.\n <br />\n Click and hold to select this cell.\n </>\n ),\n });\n }\n } else if (tooltip !== null) {\n const { hoverTooltipProps } = this.irisGrid.state;\n const newProps = {\n left: gridPoint.x,\n top: gridPoint.y + 1,\n width: 1,\n height: 1,\n };\n if (!deepEqual(hoverTooltipProps, newProps)) {\n if (hoverTooltipProps == null) {\n this.irisGrid.setState({\n hoverTooltipProps: newProps,\n hoverDisplayValue: tooltip,\n });\n } else if (\n this.lastColumn !== gridPoint.column ||\n this.lastRow !== gridPoint.row\n ) {\n this.irisGrid.setState(\n {\n hoverTooltipProps: null,\n },\n () =>\n this.irisGrid.setState({\n hoverTooltipProps: newProps,\n hoverDisplayValue: tooltip,\n })\n );\n }\n }\n } else {\n this.destroyTooltip();\n }\n\n this.lastColumn = gridPoint.column;\n this.lastRow = gridPoint.row;\n\n return this.setCursor(gridPoint, grid);\n }\n\n onDown(): EventHandlerResult {\n this.destroyTooltip();\n return false;\n }\n\n onContextMenu(): EventHandlerResult {\n this.destroyTooltip();\n return false;\n }\n\n onWheel(): EventHandlerResult {\n this.destroyTooltip();\n return false;\n }\n\n onLeave(): EventHandlerResult {\n this.destroyTooltip();\n return false;\n }\n}\n\nexport default IrisGridTokenMouseHandler;\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/iris-grid",
|
|
3
|
-
"version": "1.8.1-beta.
|
|
3
|
+
"version": "1.8.1-beta.10+4ae31c37",
|
|
4
4
|
"description": "Deephaven Iris Grid",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -31,18 +31,18 @@
|
|
|
31
31
|
"build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@deephaven/components": "^1.8.1-beta.
|
|
35
|
-
"@deephaven/console": "^1.8.1-beta.
|
|
36
|
-
"@deephaven/filters": "^1.8.1-beta.
|
|
37
|
-
"@deephaven/grid": "^1.8.1-beta.
|
|
38
|
-
"@deephaven/icons": "^1.8.1-beta.
|
|
39
|
-
"@deephaven/jsapi-components": "^1.8.1-beta.
|
|
40
|
-
"@deephaven/jsapi-types": "^1.0.0-dev0.
|
|
41
|
-
"@deephaven/jsapi-utils": "^1.8.1-beta.
|
|
42
|
-
"@deephaven/log": "^1.8.1-beta.
|
|
43
|
-
"@deephaven/react-hooks": "^1.8.1-beta.
|
|
44
|
-
"@deephaven/storage": "^1.8.1-beta.
|
|
45
|
-
"@deephaven/utils": "^1.8.1-beta.
|
|
34
|
+
"@deephaven/components": "^1.8.1-beta.10+4ae31c37",
|
|
35
|
+
"@deephaven/console": "^1.8.1-beta.10+4ae31c37",
|
|
36
|
+
"@deephaven/filters": "^1.8.1-beta.10+4ae31c37",
|
|
37
|
+
"@deephaven/grid": "^1.8.1-beta.10+4ae31c37",
|
|
38
|
+
"@deephaven/icons": "^1.8.1-beta.10+4ae31c37",
|
|
39
|
+
"@deephaven/jsapi-components": "^1.8.1-beta.10+4ae31c37",
|
|
40
|
+
"@deephaven/jsapi-types": "^1.0.0-dev0.40.4",
|
|
41
|
+
"@deephaven/jsapi-utils": "^1.8.1-beta.10+4ae31c37",
|
|
42
|
+
"@deephaven/log": "^1.8.1-beta.10+4ae31c37",
|
|
43
|
+
"@deephaven/react-hooks": "^1.8.1-beta.10+4ae31c37",
|
|
44
|
+
"@deephaven/storage": "^1.8.1-beta.10+4ae31c37",
|
|
45
|
+
"@deephaven/utils": "^1.8.1-beta.10+4ae31c37",
|
|
46
46
|
"@dnd-kit/core": "^6.1.0",
|
|
47
47
|
"@dnd-kit/sortable": "^7.0.2",
|
|
48
48
|
"@dnd-kit/utilities": "^3.2.2",
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
"react-dom": ">=16.8.0"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
|
-
"@deephaven/jsapi-shim": "^1.8.1-beta.
|
|
68
|
-
"@deephaven/mocks": "^1.8.1-beta.
|
|
69
|
-
"@deephaven/test-utils": "^1.8.1-beta.
|
|
67
|
+
"@deephaven/jsapi-shim": "^1.8.1-beta.10+4ae31c37",
|
|
68
|
+
"@deephaven/mocks": "^1.8.1-beta.10+4ae31c37",
|
|
69
|
+
"@deephaven/test-utils": "^1.8.1-beta.10+4ae31c37",
|
|
70
70
|
"deep-equal": "2.2.3"
|
|
71
71
|
},
|
|
72
72
|
"files": [
|
|
@@ -79,5 +79,5 @@
|
|
|
79
79
|
"publishConfig": {
|
|
80
80
|
"access": "public"
|
|
81
81
|
},
|
|
82
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "4ae31c37f6c8a704bad2e166a611fbfd1e8eb36a"
|
|
83
83
|
}
|