@deephaven/iris-grid 0.85.43 → 0.85.45
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/IrisGrid.d.ts +17 -17
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +16 -1
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCacheUtils.d.ts.map +1 -1
- package/dist/IrisGridCacheUtils.js +1 -1
- package/dist/IrisGridCacheUtils.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +28 -1
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js +49 -5
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +9 -2
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +33 -18
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/LazyIrisGrid.d.ts +3 -16
- package/dist/LazyIrisGrid.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridCacheUtils.d.ts","sourceRoot":"","sources":["../src/IrisGridCacheUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAsB,EACpB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"IrisGridCacheUtils.d.ts","sourceRoot":"","sources":["../src/IrisGridCacheUtils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAsB,EACpB,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,iBAAiB,CAAC;AA0EzB;;;;GAIG;AACH,iBAAS,+BAA+B,IAAI,CAC1C,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,iBAAiB,KACzB,mBAAmB,CAOvB;AAED;;;;GAIG;AACH,iBAAS,mCAAmC,IAAI,CAC9C,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,qBAAqB,KACjC,uBAAuB,CAU3B;AAED;;;;;GAKG;AACH,iBAAS,uCAAuC,IAAI,CAClD,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,qBAAqB,EACpC,SAAS,EAAE,iBAAiB,KACzB,uBAAuB,GAAG,mBAAmB,CAqBjD;AAED,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC"}
|
|
@@ -29,7 +29,7 @@ function areGridStatesEqual(gridStateA, gridStateB) {
|
|
|
29
29
|
function areIrisGridStatesEqual(irisGridStateA, irisGridStateB) {
|
|
30
30
|
// Top level keys we want to check for referential equality
|
|
31
31
|
var compareStateKeys = ['advancedFilters', 'aggregationSettings', 'customColumnFormatMap', 'isFilterBarShown', 'quickFilters', 'customColumns', 'reverse', 'rollupConfig', 'showSearchBar', 'searchValue', 'selectDistinctColumns', 'selectedSearchColumns', 'sorts', 'invertSearchColumns', 'pendingDataMap', 'frozenColumns', 'conditionalFormats', 'columnHeaderGroups', 'partitionConfig'];
|
|
32
|
-
return irisGridStateA === irisGridStateB || irisGridStateA.metrics != null && irisGridStateB.metrics != null && irisGridStateA.metrics.userColumnWidths === irisGridStateB.metrics.userColumnWidths && irisGridStateA.metrics.userRowHeights === irisGridStateB.metrics.userRowHeights && compareStateKeys.every(key => irisGridStateA[key] === irisGridStateB[key]);
|
|
32
|
+
return irisGridStateA === irisGridStateB || irisGridStateA.metrics != null && irisGridStateB.metrics != null && irisGridStateA.metricCalculator === irisGridStateB.metricCalculator && irisGridStateA.metrics.userColumnWidths === irisGridStateB.metrics.userColumnWidths && irisGridStateA.metrics.userRowHeights === irisGridStateB.metrics.userRowHeights && compareStateKeys.every(key => irisGridStateA[key] === irisGridStateB[key]);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridCacheUtils.js","names":["memoizeOne","IrisGridUtils","areGridStatesEqual","gridStateA","gridStateB","compareKeys","every","key","areIrisGridStatesEqual","irisGridStateA","irisGridStateB","compareStateKeys","metrics","userColumnWidths","userRowHeights","makeMemoizedGridStateDehydrator","model","gridState","dehydrateGridState","_ref","_ref2","modelA","modelB","makeMemoizedIrisGridStateDehydrator","irisGridState","irisGridUtils","dh","dehydrateIrisGridState","_ref3","_ref4","makeMemoizedCombinedGridStateDehydrator","_objectSpread","_ref5","_ref6","IrisGridCacheUtils"],"sources":["../src/IrisGridCacheUtils.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport { type GridState } from '@deephaven/grid';\nimport memoizeOne from 'memoize-one';\nimport type IrisGridModel from './IrisGridModel';\nimport IrisGridUtils, {\n type DehydratedGridState,\n type DehydratedIrisGridState,\n type HydratedGridState,\n type HydratedIrisGridState,\n} from './IrisGridUtils';\n\n/**\n * Checks if 2 grid states are equivalent.\n * Checks values and does not require referential equality of the entire state, just the values we care about.\n * @param gridStateA First grid state\n * @param gridStateB Second grid state\n * @returns True if the states are equivalent\n */\nfunction areGridStatesEqual(\n gridStateA: HydratedGridState,\n gridStateB: HydratedGridState\n): boolean {\n const compareKeys = [\n 'isStuckToBottom',\n 'isStuckToRight',\n 'movedColumns',\n 'movedRows',\n ] satisfies Array<keyof GridState>;\n return (\n gridStateA === gridStateB ||\n compareKeys.every(key => gridStateA[key] === gridStateB[key])\n );\n}\n\n/**\n * Checks if 2 iris grid states are equivalent.\n * Checks values and does not require referential equality of the entire state, just the values we care about.\n * @param irisGridStateA First iris grid state\n * @param irisGridStateB Second iris grid state\n * @returns True if the states are equivalent\n */\nfunction areIrisGridStatesEqual(\n irisGridStateA: HydratedIrisGridState,\n irisGridStateB: HydratedIrisGridState\n): boolean {\n // Top level keys we want to check for referential equality\n const compareStateKeys = [\n 'advancedFilters',\n 'aggregationSettings',\n 'customColumnFormatMap',\n 'isFilterBarShown',\n 'quickFilters',\n 'customColumns',\n 'reverse',\n 'rollupConfig',\n 'showSearchBar',\n 'searchValue',\n 'selectDistinctColumns',\n 'selectedSearchColumns',\n 'sorts',\n 'invertSearchColumns',\n 'pendingDataMap',\n 'frozenColumns',\n 'conditionalFormats',\n 'columnHeaderGroups',\n 'partitionConfig',\n ] satisfies Array<keyof HydratedIrisGridState>;\n\n return (\n irisGridStateA === irisGridStateB ||\n (irisGridStateA.metrics != null &&\n irisGridStateB.metrics != null &&\n irisGridStateA.metrics.userColumnWidths ===\n irisGridStateB.metrics.userColumnWidths &&\n irisGridStateA.metrics.userRowHeights ===\n irisGridStateB.metrics.userRowHeights &&\n compareStateKeys.every(\n key => irisGridStateA[key] === irisGridStateB[key]\n ))\n );\n}\n\n/**\n * Creates a dehydrator function for grid state that is memoized on the last call.\n * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.\n * @returns A dehydrator function memoized on the last call\n */\nfunction makeMemoizedGridStateDehydrator(): (\n model: IrisGridModel,\n gridState: HydratedGridState\n) => DehydratedGridState {\n return memoizeOne(\n (model: IrisGridModel, gridState: HydratedGridState) =>\n IrisGridUtils.dehydrateGridState(model, gridState),\n ([modelA, gridStateA], [modelB, gridStateB]) =>\n modelA === modelB && areGridStatesEqual(gridStateA, gridStateB)\n );\n}\n\n/**\n * Creates a dehydrator function for iris grid state that is memoized on the last call.\n * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.\n * @returns A dehydrator function memoized on the last call\n */\nfunction makeMemoizedIrisGridStateDehydrator(): (\n model: IrisGridModel,\n irisGridState: HydratedIrisGridState\n) => DehydratedIrisGridState {\n return memoizeOne(\n (model: IrisGridModel, irisGridState: HydratedIrisGridState) => {\n const irisGridUtils = new IrisGridUtils(model.dh);\n return irisGridUtils.dehydrateIrisGridState(model, irisGridState);\n },\n ([modelA, irisGridStateA], [modelB, irisGridStateB]) =>\n modelA === modelB &&\n areIrisGridStatesEqual(irisGridStateA, irisGridStateB)\n );\n}\n\n/**\n * Creates a dehydrator function for grid and iris grid state that is memoized on the last call.\n * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.\n * Combines the dehydrated grid and iris grid states into a single object.\n * @returns A dehydrator function memoized on the last call\n */\nfunction makeMemoizedCombinedGridStateDehydrator(): (\n model: IrisGridModel,\n irisGridState: HydratedIrisGridState,\n gridState: HydratedGridState\n) => DehydratedIrisGridState & DehydratedGridState {\n return memoizeOne(\n (\n model: IrisGridModel,\n irisGridState: HydratedIrisGridState,\n gridState: HydratedGridState\n ): DehydratedIrisGridState & DehydratedGridState => {\n const irisGridUtils = new IrisGridUtils(model.dh);\n return {\n ...irisGridUtils.dehydrateIrisGridState(model, irisGridState),\n ...IrisGridUtils.dehydrateGridState(model, gridState),\n };\n },\n (\n [modelA, irisGridStateA, gridStateA],\n [modelB, irisGridStateB, gridStateB]\n ) =>\n modelA === modelB &&\n areIrisGridStatesEqual(irisGridStateA, irisGridStateB) &&\n areGridStatesEqual(gridStateA, gridStateB)\n );\n}\n\nexport const IrisGridCacheUtils = {\n makeMemoizedGridStateDehydrator,\n makeMemoizedIrisGridStateDehydrator,\n makeMemoizedCombinedGridStateDehydrator,\n};\n"],"mappings":";;;;;AAAA;;AAEA,OAAOA,UAAU,MAAM,aAAa;AAAC,OAE9BC,aAAa;AAOpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,kBAAkBA,CACzBC,UAA6B,EAC7BC,UAA6B,EACpB;EACT,IAAMC,WAAW,GAAG,CAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,WAAW,CACqB;EAClC,OACEF,UAAU,KAAKC,UAAU,IACzBC,WAAW,CAACC,KAAK,CAACC,GAAG,IAAIJ,UAAU,CAACI,GAAG,CAAC,KAAKH,UAAU,CAACG,GAAG,CAAC,CAAC;AAEjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,sBAAsBA,CAC7BC,cAAqC,EACrCC,cAAqC,EAC5B;EACT;EACA,IAAMC,gBAAgB,GAAG,CACvB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,SAAS,EACT,cAAc,EACd,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,uBAAuB,EACvB,OAAO,EACP,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,CAC2B;EAE9C,OACEF,cAAc,KAAKC,cAAc,IAChCD,cAAc,CAACG,OAAO,IAAI,IAAI,IAC7BF,cAAc,CAACE,OAAO,IAAI,IAAI,IAC9BH,cAAc,CAACG,OAAO,
|
|
1
|
+
{"version":3,"file":"IrisGridCacheUtils.js","names":["memoizeOne","IrisGridUtils","areGridStatesEqual","gridStateA","gridStateB","compareKeys","every","key","areIrisGridStatesEqual","irisGridStateA","irisGridStateB","compareStateKeys","metrics","metricCalculator","userColumnWidths","userRowHeights","makeMemoizedGridStateDehydrator","model","gridState","dehydrateGridState","_ref","_ref2","modelA","modelB","makeMemoizedIrisGridStateDehydrator","irisGridState","irisGridUtils","dh","dehydrateIrisGridState","_ref3","_ref4","makeMemoizedCombinedGridStateDehydrator","_objectSpread","_ref5","_ref6","IrisGridCacheUtils"],"sources":["../src/IrisGridCacheUtils.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport { type GridState } from '@deephaven/grid';\nimport memoizeOne from 'memoize-one';\nimport type IrisGridModel from './IrisGridModel';\nimport IrisGridUtils, {\n type DehydratedGridState,\n type DehydratedIrisGridState,\n type HydratedGridState,\n type HydratedIrisGridState,\n} from './IrisGridUtils';\n\n/**\n * Checks if 2 grid states are equivalent.\n * Checks values and does not require referential equality of the entire state, just the values we care about.\n * @param gridStateA First grid state\n * @param gridStateB Second grid state\n * @returns True if the states are equivalent\n */\nfunction areGridStatesEqual(\n gridStateA: HydratedGridState,\n gridStateB: HydratedGridState\n): boolean {\n const compareKeys = [\n 'isStuckToBottom',\n 'isStuckToRight',\n 'movedColumns',\n 'movedRows',\n ] satisfies Array<keyof GridState>;\n return (\n gridStateA === gridStateB ||\n compareKeys.every(key => gridStateA[key] === gridStateB[key])\n );\n}\n\n/**\n * Checks if 2 iris grid states are equivalent.\n * Checks values and does not require referential equality of the entire state, just the values we care about.\n * @param irisGridStateA First iris grid state\n * @param irisGridStateB Second iris grid state\n * @returns True if the states are equivalent\n */\nfunction areIrisGridStatesEqual(\n irisGridStateA: HydratedIrisGridState,\n irisGridStateB: HydratedIrisGridState\n): boolean {\n // Top level keys we want to check for referential equality\n const compareStateKeys = [\n 'advancedFilters',\n 'aggregationSettings',\n 'customColumnFormatMap',\n 'isFilterBarShown',\n 'quickFilters',\n 'customColumns',\n 'reverse',\n 'rollupConfig',\n 'showSearchBar',\n 'searchValue',\n 'selectDistinctColumns',\n 'selectedSearchColumns',\n 'sorts',\n 'invertSearchColumns',\n 'pendingDataMap',\n 'frozenColumns',\n 'conditionalFormats',\n 'columnHeaderGroups',\n 'partitionConfig',\n ] satisfies Array<keyof HydratedIrisGridState>;\n\n return (\n irisGridStateA === irisGridStateB ||\n (irisGridStateA.metrics != null &&\n irisGridStateB.metrics != null &&\n irisGridStateA.metricCalculator === irisGridStateB.metricCalculator &&\n irisGridStateA.metrics.userColumnWidths ===\n irisGridStateB.metrics.userColumnWidths &&\n irisGridStateA.metrics.userRowHeights ===\n irisGridStateB.metrics.userRowHeights &&\n compareStateKeys.every(\n key => irisGridStateA[key] === irisGridStateB[key]\n ))\n );\n}\n\n/**\n * Creates a dehydrator function for grid state that is memoized on the last call.\n * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.\n * @returns A dehydrator function memoized on the last call\n */\nfunction makeMemoizedGridStateDehydrator(): (\n model: IrisGridModel,\n gridState: HydratedGridState\n) => DehydratedGridState {\n return memoizeOne(\n (model: IrisGridModel, gridState: HydratedGridState) =>\n IrisGridUtils.dehydrateGridState(model, gridState),\n ([modelA, gridStateA], [modelB, gridStateB]) =>\n modelA === modelB && areGridStatesEqual(gridStateA, gridStateB)\n );\n}\n\n/**\n * Creates a dehydrator function for iris grid state that is memoized on the last call.\n * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.\n * @returns A dehydrator function memoized on the last call\n */\nfunction makeMemoizedIrisGridStateDehydrator(): (\n model: IrisGridModel,\n irisGridState: HydratedIrisGridState\n) => DehydratedIrisGridState {\n return memoizeOne(\n (model: IrisGridModel, irisGridState: HydratedIrisGridState) => {\n const irisGridUtils = new IrisGridUtils(model.dh);\n return irisGridUtils.dehydrateIrisGridState(model, irisGridState);\n },\n ([modelA, irisGridStateA], [modelB, irisGridStateB]) =>\n modelA === modelB &&\n areIrisGridStatesEqual(irisGridStateA, irisGridStateB)\n );\n}\n\n/**\n * Creates a dehydrator function for grid and iris grid state that is memoized on the last call.\n * Only tracks 1 state at a time. If the model and input states are equal, returns the same dehydrated state object reference.\n * Combines the dehydrated grid and iris grid states into a single object.\n * @returns A dehydrator function memoized on the last call\n */\nfunction makeMemoizedCombinedGridStateDehydrator(): (\n model: IrisGridModel,\n irisGridState: HydratedIrisGridState,\n gridState: HydratedGridState\n) => DehydratedIrisGridState & DehydratedGridState {\n return memoizeOne(\n (\n model: IrisGridModel,\n irisGridState: HydratedIrisGridState,\n gridState: HydratedGridState\n ): DehydratedIrisGridState & DehydratedGridState => {\n const irisGridUtils = new IrisGridUtils(model.dh);\n return {\n ...irisGridUtils.dehydrateIrisGridState(model, irisGridState),\n ...IrisGridUtils.dehydrateGridState(model, gridState),\n };\n },\n (\n [modelA, irisGridStateA, gridStateA],\n [modelB, irisGridStateB, gridStateB]\n ) =>\n modelA === modelB &&\n areIrisGridStatesEqual(irisGridStateA, irisGridStateB) &&\n areGridStatesEqual(gridStateA, gridStateB)\n );\n}\n\nexport const IrisGridCacheUtils = {\n makeMemoizedGridStateDehydrator,\n makeMemoizedIrisGridStateDehydrator,\n makeMemoizedCombinedGridStateDehydrator,\n};\n"],"mappings":"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"}
|
|
@@ -14,11 +14,24 @@ export interface IrisGridMetricState extends GridMetricState {
|
|
|
14
14
|
sorts: readonly SortDescriptor[];
|
|
15
15
|
reverse: boolean;
|
|
16
16
|
}
|
|
17
|
+
type GridMetricCalculatorOptions = NonNullable<ConstructorParameters<typeof GridMetricCalculator>[0]>;
|
|
18
|
+
export type IrisGridMetricCalculatorOptions = GridMetricCalculatorOptions & {
|
|
19
|
+
/**
|
|
20
|
+
* Map of user-set column widths keyed by column name. This is the source
|
|
21
|
+
* of truth for hidden/manually-sized columns across model swaps (e.g.
|
|
22
|
+
* applying or removing a rollup), where the model's column indices
|
|
23
|
+
* change but names are stable. Entries for columns absent from the
|
|
24
|
+
* current model are preserved and re-projected onto the by-index map
|
|
25
|
+
* whenever the model swaps.
|
|
26
|
+
*/
|
|
27
|
+
userColumnWidthsByName?: Map<ColumnName, number>;
|
|
28
|
+
};
|
|
17
29
|
export declare class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
18
|
-
userColumnWidthsByName
|
|
30
|
+
private userColumnWidthsByName;
|
|
19
31
|
private cachedModelColumnNames;
|
|
20
32
|
private cachedHeaderGroupNames;
|
|
21
33
|
private cachedPaddingMaps;
|
|
34
|
+
constructor(options?: IrisGridMetricCalculatorOptions);
|
|
22
35
|
static getModelColumnRoot(model: IrisGridModel, modelColumn: ModelIndex): ColumnHeaderGroup | undefined;
|
|
23
36
|
/**
|
|
24
37
|
* Builds a TreeNode from the model header groups and columns for padding calculation
|
|
@@ -71,6 +84,13 @@ export declare class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
|
71
84
|
* @param column The index of the column to reset
|
|
72
85
|
*/
|
|
73
86
|
resetColumnWidth(column: number): void;
|
|
87
|
+
/**
|
|
88
|
+
* Resets the user width for a column by its name. Works regardless of
|
|
89
|
+
* whether the column is currently present in the model, so it is safe to
|
|
90
|
+
* call when the model is about to be swapped (e.g. when applying a rollup).
|
|
91
|
+
* @param name The name of the column to reset
|
|
92
|
+
*/
|
|
93
|
+
resetColumnWidthByName(name: ColumnName): void;
|
|
74
94
|
/**
|
|
75
95
|
* Resets all user column widths
|
|
76
96
|
*/
|
|
@@ -80,6 +100,13 @@ export declare class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
|
80
100
|
* @returns A map of user column widths
|
|
81
101
|
*/
|
|
82
102
|
getUserColumnWidths(): ModelSizeMap;
|
|
103
|
+
/**
|
|
104
|
+
* Gets the user column widths keyed by column name. This is the source
|
|
105
|
+
* of truth for hidden/manually-sized columns across model swaps and
|
|
106
|
+
* persistence boundaries.
|
|
107
|
+
* @returns A map of user column widths keyed by column name
|
|
108
|
+
*/
|
|
109
|
+
getUserColumnWidthsByName(): ReadonlyMap<ColumnName, number>;
|
|
83
110
|
getCalculatedColumnWidths(): ModelSizeMap;
|
|
84
111
|
/**
|
|
85
112
|
* Calculate the width of the specified column's header
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,UAAU,EACV,YAAY,EAGZ,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,UAAU,EACV,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,iBAAiB,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,yBAAyB,CAAC;IAC3C,YAAY,EAAE,sBAAsB,CAAC;IACrC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,
|
|
1
|
+
{"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
var _excluded = ["userColumnWidthsByName"];
|
|
2
|
+
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
3
|
+
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
1
4
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
2
5
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
6
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
@@ -7,17 +10,27 @@ import { GridMetricCalculator, trimMap, isExpandableColumnGridModel } from '@dee
|
|
|
7
10
|
import { assertNotNull } from '@deephaven/utils';
|
|
8
11
|
import { rebalanceTree } from "./TreeRebalanceUtil.js";
|
|
9
12
|
export class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
13
|
+
// Column widths by name to keep track of columns going in and out of viewport.
|
|
14
|
+
|
|
15
|
+
// Cached model column names to detect when the column width map update is necessary
|
|
16
|
+
|
|
17
|
+
// Cached padding maps for column header groups
|
|
18
|
+
|
|
10
19
|
constructor() {
|
|
11
|
-
|
|
12
|
-
|
|
20
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
21
|
+
var {
|
|
22
|
+
userColumnWidthsByName
|
|
23
|
+
} = options,
|
|
24
|
+
rest = _objectWithoutProperties(options, _excluded);
|
|
25
|
+
super(rest);
|
|
26
|
+
_defineProperty(this, "userColumnWidthsByName", void 0);
|
|
13
27
|
_defineProperty(this, "cachedModelColumnNames", void 0);
|
|
14
28
|
_defineProperty(this, "cachedHeaderGroupNames", void 0);
|
|
15
29
|
_defineProperty(this, "cachedPaddingMaps", new Map());
|
|
16
30
|
_defineProperty(this, "getCachedCurrentModelColumnNames", memoizeOne(columns => columns.map(col => col.name)));
|
|
17
31
|
_defineProperty(this, "getCachedCurrentHeaderGroupNames", memoizeOne(columnHeaderGroups => columnHeaderGroups.map(group => group.name)));
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
// Cached padding maps for column header groups
|
|
32
|
+
this.userColumnWidthsByName = userColumnWidthsByName !== null && userColumnWidthsByName !== void 0 ? userColumnWidthsByName : new Map();
|
|
33
|
+
}
|
|
21
34
|
static getModelColumnRoot(model, modelColumn) {
|
|
22
35
|
var depth = 0;
|
|
23
36
|
var current = model.getColumnHeaderParentGroup(modelColumn, depth);
|
|
@@ -137,11 +150,16 @@ export class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
|
137
150
|
// Comparing model.columns references wouldn't work here because
|
|
138
151
|
// the reference can change in the model without the actual column definitions changing
|
|
139
152
|
var modelColumnNames = this.getCachedCurrentModelColumnNames(model.columns);
|
|
153
|
+
var isFirstCall = this.cachedModelColumnNames == null;
|
|
140
154
|
if (this.cachedModelColumnNames != null && this.cachedModelColumnNames !== modelColumnNames && !deepEqual(modelColumnNames, this.cachedModelColumnNames)) {
|
|
141
155
|
// Preserve column widths when possible to minimize visual shifts in the grid layout
|
|
142
156
|
this.updateCalculatedColumnWidths(model);
|
|
143
157
|
this.updateUserColumnWidths(model);
|
|
144
158
|
this.cachedPaddingMaps.clear();
|
|
159
|
+
} else if (isFirstCall && this.userColumnWidthsByName.size > 0) {
|
|
160
|
+
// On the first call, project the seeded by-name widths into the
|
|
161
|
+
// by-index map for the current model.
|
|
162
|
+
this.updateUserColumnWidths(model);
|
|
145
163
|
}
|
|
146
164
|
this.cachedModelColumnNames = modelColumnNames;
|
|
147
165
|
var headerGroupNames = this.getCachedCurrentHeaderGroupNames(model.columnHeaderGroups);
|
|
@@ -222,6 +240,22 @@ export class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
|
222
240
|
}
|
|
223
241
|
}
|
|
224
242
|
|
|
243
|
+
/**
|
|
244
|
+
* Resets the user width for a column by its name. Works regardless of
|
|
245
|
+
* whether the column is currently present in the model, so it is safe to
|
|
246
|
+
* call when the model is about to be swapped (e.g. when applying a rollup).
|
|
247
|
+
* @param name The name of the column to reset
|
|
248
|
+
*/
|
|
249
|
+
resetColumnWidthByName(name) {
|
|
250
|
+
this.userColumnWidthsByName.delete(name);
|
|
251
|
+
if (this.cachedModelColumnNames != null) {
|
|
252
|
+
var index = this.cachedModelColumnNames.indexOf(name);
|
|
253
|
+
if (index >= 0) {
|
|
254
|
+
super.resetColumnWidth(index);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
225
259
|
/**
|
|
226
260
|
* Resets all user column widths
|
|
227
261
|
*/
|
|
@@ -238,6 +272,16 @@ export class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
|
238
272
|
// This might return stale data if getMetrics hasn't been called
|
|
239
273
|
return this.userColumnWidths;
|
|
240
274
|
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Gets the user column widths keyed by column name. This is the source
|
|
278
|
+
* of truth for hidden/manually-sized columns across model swaps and
|
|
279
|
+
* persistence boundaries.
|
|
280
|
+
* @returns A map of user column widths keyed by column name
|
|
281
|
+
*/
|
|
282
|
+
getUserColumnWidthsByName() {
|
|
283
|
+
return this.userColumnWidthsByName;
|
|
284
|
+
}
|
|
241
285
|
getCalculatedColumnWidths() {
|
|
242
286
|
return this.calculatedColumnWidths;
|
|
243
287
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridMetricCalculator.js","names":["deepEqual","memoizeOne","GridMetricCalculator","trimMap","isExpandableColumnGridModel","assertNotNull","rebalanceTree","IrisGridMetricCalculator","constructor","arguments","_defineProperty","Map","columns","map","col","name","columnHeaderGroups","group","getModelColumnRoot","model","modelColumn","depth","current","getColumnHeaderParentGroup","root","buildNode","getLeafValue","getGroupValue","_getLeafValue","headerGroup","columnHeaderGroupMap","get","value","children","childName","getHeaderPadding","state","maxColumnWidth","_paddingMap$get","cachedMap","cachedPaddingMaps","_cachedMap$get","groupTree","columnIndex","getColumnIndexByName","concat","calculateColumnHeaderWidth","getColumnHeaderGroupWidth","childIndexes","paddingMap","set","updateCalculatedColumnWidths","cachedModelColumnNames","calculatedColumnWidthsByName","forEach","index","prevColumnWidth","calculatedColumnWidths","resetCalculatedColumnWidths","width","updateUserColumnWidths","userColumnWidths","userColumnWidthsByName","modelIndex","setColumnWidth","updateColumnWidthsIfNecessary","modelColumnNames","getCachedCurrentModelColumnNames","clear","headerGroupNames","getCachedCurrentHeaderGroupNames","cachedHeaderGroupNames","resetCalculatedHeaderGroupWidths","getGridY","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverse","filterBarHeight","size","filterBarCollapsedHeight","length","reverseHeaderBarHeight","getMetrics","column","resetColumnWidth","delete","resetAllColumnWidths","getUserColumnWidths","getCalculatedColumnWidths","parent","baseHeaderWidth","headerPadding","context","headerHorizontalPadding","headerFont","calculateLowerFontWidth","calculateUpperFontWidth","padding","headerText","textForColumnHeader","isColumnExpandable","expandCollapseIconWidth","iconSize","undefined","calculateTextWidth","getFilterInputCoordinates","metrics","gridX","allColumnXs","allColumnWidths","columnX","columnWidth","x","y","height","getScrollLeftForColumn","left","rightVisible","lastLeft","newLeft","getLastLeft","getVisibleWidth","Math","min","getAdvancedFilterButtonCoordinates","filterBoxCoordinates"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import deepEqual from 'fast-deep-equal';\nimport memoizeOne from 'memoize-one';\nimport {\n GridMetricCalculator,\n GridMetrics,\n ModelIndex,\n ModelSizeMap,\n trimMap,\n isExpandableColumnGridModel,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport type { GridMetricState } from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { SortDescriptor } from '@deephaven/jsapi-utils';\nimport { assertNotNull } from '@deephaven/utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { IrisGridThemeType } from './IrisGridTheme';\nimport {\n ColumnName,\n ReadonlyAdvancedFilterMap,\n ReadonlyQuickFilterMap,\n} from './CommonTypes';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { rebalanceTree, type TreeNode } from './TreeRebalanceUtil';\n\nexport interface IrisGridMetricState extends GridMetricState {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n isFilterBarShown: boolean;\n advancedFilters: ReadonlyAdvancedFilterMap;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly SortDescriptor[];\n reverse: boolean;\n}\n\nexport class IrisGridMetricCalculator extends GridMetricCalculator {\n // Column widths by name to keep track of columns going in and out of viewport\n userColumnWidthsByName: Map<ColumnName, number> = new Map();\n\n // Cached model column names to detect when the column width map update is necessary\n private cachedModelColumnNames: readonly ColumnName[] | undefined;\n\n private cachedHeaderGroupNames: readonly string[] | undefined;\n\n // Cached padding maps for column header groups\n private cachedPaddingMaps: Map<string, Map<string, number>> = new Map();\n\n static getModelColumnRoot(\n model: IrisGridModel,\n modelColumn: ModelIndex\n ): ColumnHeaderGroup | undefined {\n let depth = 0;\n let current = model.getColumnHeaderParentGroup(modelColumn, depth);\n let root = current;\n\n while (current != null) {\n root = current;\n depth += 1;\n current = model.getColumnHeaderParentGroup(modelColumn, depth);\n }\n\n return root;\n }\n\n /**\n * Builds a TreeNode from the model header groups and columns for padding calculation\n * @param name The name of the root node to build the tree for\n * @param model The IrisGridModel containing columns and header groups\n * @param getLeafValue Function to get the value for leaf nodes (columns)\n * @param getGroupValue Function to get the value for group nodes (header groups)\n * @returns The TreeNode structure\n */\n private static buildNode(\n name: string,\n model: IrisGridModel,\n getLeafValue: (name: string) => number,\n getGroupValue: (name: string) => number\n ): TreeNode {\n const headerGroup = model.columnHeaderGroupMap.get(name);\n\n if (headerGroup) {\n const value = getGroupValue(name);\n\n const children = headerGroup.children.map(childName =>\n IrisGridMetricCalculator.buildNode(\n childName,\n model,\n getLeafValue,\n getGroupValue\n )\n );\n\n // Group node\n return {\n name,\n children,\n value,\n };\n }\n\n // Leaf node\n return {\n name,\n children: [],\n value: getLeafValue(name) ?? 0,\n };\n }\n\n /**\n * Gets the header padding for a specific column based on the widths of its group tree nodes.\n * We only adjust paddings on the column, because the group widths are automatically sized to fit their children.\n * @param state The current IrisGridMetricState\n * @param modelColumn The column index to get the padding for\n * @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes\n * @returns The calculated header padding for the column\n */\n private getHeaderPadding(\n state: IrisGridMetricState,\n modelColumn: ModelIndex,\n maxColumnWidth: number\n ): number {\n const { model } = state;\n const root = IrisGridMetricCalculator.getModelColumnRoot(\n model,\n modelColumn\n );\n if (root == null) {\n return 0;\n }\n const cachedMap = this.cachedPaddingMaps.get(root.name);\n if (cachedMap != null) {\n return cachedMap.get(model.columns[modelColumn].name) ?? 0;\n }\n const groupTree = IrisGridMetricCalculator.buildNode(\n root.name,\n model,\n name => {\n const columnIndex = model.getColumnIndexByName(name);\n assertNotNull(columnIndex, `${name} not found in model columns`);\n return super.calculateColumnHeaderWidth(\n columnIndex,\n state,\n maxColumnWidth\n );\n },\n name => {\n const group = model.columnHeaderGroupMap.get(name);\n assertNotNull(group, `${name} not found in columnHeaderGroupMap`);\n return this.getColumnHeaderGroupWidth(\n group.childIndexes[0],\n group.depth,\n state,\n maxColumnWidth\n );\n }\n );\n const paddingMap = rebalanceTree(groupTree);\n this.cachedPaddingMaps.set(root.name, paddingMap);\n return paddingMap.get(model.columns[modelColumn].name) ?? 0;\n }\n\n private getCachedCurrentModelColumnNames = memoizeOne(\n (columns: readonly dh.Column[]) => columns.map(col => col.name)\n );\n\n private getCachedCurrentHeaderGroupNames = memoizeOne(\n (columnHeaderGroups: readonly ColumnHeaderGroup[]) =>\n columnHeaderGroups.map(group => group.name)\n );\n\n private updateCalculatedColumnWidths(model: IrisGridModel): void {\n assertNotNull(this.cachedModelColumnNames);\n const calculatedColumnWidthsByName = new Map<ColumnName, number>();\n this.cachedModelColumnNames.forEach((name, index) => {\n const prevColumnWidth = this.calculatedColumnWidths.get(index);\n if (prevColumnWidth != null) {\n calculatedColumnWidthsByName.set(name, prevColumnWidth);\n }\n });\n this.resetCalculatedColumnWidths();\n calculatedColumnWidthsByName.forEach((width, name) => {\n const index = model.getColumnIndexByName(name);\n if (index != null) {\n this.calculatedColumnWidths.set(index, width);\n }\n });\n trimMap(this.calculatedColumnWidths);\n }\n\n /**\n * Updates the user column widths based on the current model state\n * @param model The current IrisGridModel\n */\n private updateUserColumnWidths(model: IrisGridModel): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName.forEach((width, name) => {\n const modelIndex = model.getColumnIndexByName(name);\n if (modelIndex != null) {\n super.setColumnWidth(modelIndex, width);\n }\n });\n }\n\n /**\n * Updates the user and calculated column widths if the model columns have changed\n * @param model The current IrisGridModel\n */\n private updateColumnWidthsIfNecessary(model: IrisGridModel): void {\n // Comparing model.columns references wouldn't work here because\n // the reference can change in the model without the actual column definitions changing\n const modelColumnNames = this.getCachedCurrentModelColumnNames(\n model.columns\n );\n if (\n this.cachedModelColumnNames != null &&\n this.cachedModelColumnNames !== modelColumnNames &&\n !deepEqual(modelColumnNames, this.cachedModelColumnNames)\n ) {\n // Preserve column widths when possible to minimize visual shifts in the grid layout\n this.updateCalculatedColumnWidths(model);\n this.updateUserColumnWidths(model);\n this.cachedPaddingMaps.clear();\n }\n this.cachedModelColumnNames = modelColumnNames;\n\n const headerGroupNames = this.getCachedCurrentHeaderGroupNames(\n model.columnHeaderGroups\n );\n if (\n this.cachedHeaderGroupNames != null &&\n this.cachedHeaderGroupNames !== headerGroupNames &&\n !deepEqual(headerGroupNames, this.cachedHeaderGroupNames)\n ) {\n this.resetCalculatedColumnWidths();\n }\n this.cachedHeaderGroupNames = headerGroupNames;\n }\n\n resetCalculatedHeaderGroupWidths(): void {\n this.cachedPaddingMaps.clear();\n }\n\n resetCalculatedColumnWidths(): void {\n super.resetCalculatedColumnWidths();\n this.resetCalculatedHeaderGroupWidths();\n }\n\n getGridY(state: IrisGridMetricState): number {\n // The state here seems to be a GridMetricState with stateOverrides passed from IrisGrid in the props,\n // not guaranteed to be IrisGridMetricState\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverse,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (reverse && sorts != null && sorts.length > 0) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n /**\n * Gets the metrics for the current state. This method has to be called before setColumnSize or resetColumnSize.\n * @param state The current IrisGridMetricState\n * @returns The metrics for the current state\n */\n getMetrics(state: IrisGridMetricState): GridMetrics {\n const { model } = state;\n // Update column widths if columns in the cached model don't match the current model passed in the state\n this.updateColumnWidthsIfNecessary(model);\n\n return super.getMetrics(state);\n }\n\n /**\n * Sets the width for a specific column by index\n * @param column The index of the column to set\n * @param size The new width for the column\n */\n setColumnWidth(column: number, size: number): void {\n super.setColumnWidth(column, size);\n assertNotNull(\n this.cachedModelColumnNames,\n 'setColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.set(name, size);\n trimMap(this.userColumnWidthsByName);\n }\n }\n\n /**\n * Resets the width for a specific column by index\n * @param column The index of the column to reset\n */\n resetColumnWidth(column: number): void {\n super.resetColumnWidth(column);\n assertNotNull(\n this.cachedModelColumnNames,\n 'resetColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.delete(name);\n }\n }\n\n /**\n * Resets all user column widths\n */\n resetAllColumnWidths(): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName = new Map<ColumnName, number>();\n }\n\n /**\n * Gets the user column widths\n * @returns A map of user column widths\n */\n getUserColumnWidths(): ModelSizeMap {\n // This might return stale data if getMetrics hasn't been called\n return this.userColumnWidths;\n }\n\n getCalculatedColumnWidths(): ModelSizeMap {\n return this.calculatedColumnWidths;\n }\n\n /**\n * Calculate the width of the specified column's header\n * @param modelColumn ModelIndex of the column to get the header width for\n * @param state The grid metric state\n * @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes\n * @returns The calculated width of the column header\n */\n calculateColumnHeaderWidth(\n modelColumn: ModelIndex,\n state: IrisGridMetricState,\n maxColumnWidth: number\n ): number {\n const { model } = state;\n\n const parent = model.getColumnHeaderParentGroup(modelColumn, 0);\n\n const baseHeaderWidth = super.calculateColumnHeaderWidth(\n modelColumn,\n state,\n maxColumnWidth\n );\n\n // Column header with no grouping, use base implementation\n if (parent == null) {\n return baseHeaderWidth;\n }\n\n const headerPadding = this.getHeaderPadding(\n state,\n modelColumn,\n maxColumnWidth\n );\n\n return baseHeaderWidth + headerPadding;\n }\n\n // Original width of column header group content, including title, padding, icons, etc.\n // Does not include any rebalancing adjustments\n getColumnHeaderGroupWidth(\n modelColumn: ModelIndex,\n depth: number,\n state: IrisGridMetricState,\n maxColumnWidth: number\n ): number {\n const { model, theme, context } = state;\n const { headerHorizontalPadding, headerFont } = theme;\n this.calculateLowerFontWidth(headerFont, context);\n this.calculateUpperFontWidth(headerFont, context);\n\n const padding = headerHorizontalPadding * 2;\n\n const headerText = model.textForColumnHeader(modelColumn, depth);\n\n const isColumnExpandable =\n isExpandableColumnGridModel(model) &&\n model.isColumnExpandable(modelColumn);\n\n const expandCollapseIconWidth = isColumnExpandable ? theme.iconSize : 0;\n\n if (headerText !== undefined && headerText !== '') {\n return (\n this.calculateTextWidth(\n context,\n headerFont,\n headerText,\n maxColumnWidth - padding\n ) +\n padding +\n expandCollapseIconWidth\n );\n }\n\n return padding + expandCollapseIconWidth;\n }\n\n /**\n * Get metrics for positioning the filter bar input field.\n * @param index The visible index of the column to get the filter box coordinates for\n * @param state The current IrisGridMetricState\n * @param metrics The grid metrics\n * @returns Coordinates for the filter input field, or null if positioning cannot be calculated\n */\n // eslint-disable-next-line class-methods-use-this\n getFilterInputCoordinates(\n index: VisibleIndex,\n state: IrisGridMetricState,\n metrics: GridMetrics\n ): { x: number; y: number; width: number; height: number } | null {\n // Only handle standard columns (>= 0) in the base implementation\n // Plugins can override to handle special columns (e.g., negative indices)\n if (index < 0) {\n return null;\n }\n\n const { theme } = state;\n const { filterBarHeight = 0 } = theme;\n const { gridX, gridY, allColumnXs, allColumnWidths } = metrics;\n\n const columnX = allColumnXs.get(index);\n const columnWidth = allColumnWidths.get(index);\n\n if (\n columnX == null ||\n columnWidth == null ||\n // Don't show the filter box for invisible columns\n columnWidth === 0 ||\n filterBarHeight === 0\n ) {\n return null;\n }\n\n return {\n x: gridX + columnX,\n y: gridY - filterBarHeight,\n width: columnWidth + 1, // cover right border\n height: filterBarHeight - 1, // remove bottom border\n };\n }\n\n /**\n * Calculate the new left index to bring the given column into view.\n * @param column The column that should be scrolled into view\n * @param state The current IrisGridMetricState\n * @param metrics The grid metrics\n * @returns The left column index to scroll to, or null if no scroll is needed\n */\n getScrollLeftForColumn(\n column: VisibleIndex,\n state: IrisGridMetricState,\n metrics: GridMetrics\n ): VisibleIndex | null {\n const { left, rightVisible, lastLeft } = metrics;\n\n if (column < 0) {\n return null;\n }\n\n if (column < left) {\n // Column is to the left of visible area\n return column;\n }\n\n if (rightVisible < column) {\n // Column is to the right of visible area\n const newLeft = this.getLastLeft(\n state,\n column,\n this.getVisibleWidth(state)\n );\n return Math.min(newLeft, lastLeft);\n }\n\n // Column is already visible, no scroll needed\n return null;\n }\n\n /**\n * Get the coordinates for the advanced filter button positioned in the filter bar.\n * @param index The column index\n * @param state The current IrisGridMetricState\n * @param metrics The grid metrics\n * @returns Coordinates for the advanced filter button, or null if it should not be shown\n */\n getAdvancedFilterButtonCoordinates(\n index: VisibleIndex,\n state: IrisGridMetricState,\n metrics: GridMetrics\n ): { x: number; y: number } | null {\n const filterBoxCoordinates = this.getFilterInputCoordinates(\n index,\n state,\n metrics\n );\n\n if (filterBoxCoordinates == null) {\n return null;\n }\n\n const { x, y, width } = filterBoxCoordinates;\n\n return {\n x: x + width - 25, // Right edge of filter box (24px button + 1px for border)\n y: y + 2, // 2px top margin for the button\n };\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGridMetricCalculator.js","names":["deepEqual","memoizeOne","GridMetricCalculator","trimMap","isExpandableColumnGridModel","assertNotNull","rebalanceTree","IrisGridMetricCalculator","constructor","options","arguments","length","undefined","userColumnWidthsByName","rest","_objectWithoutProperties","_excluded","_defineProperty","Map","columns","map","col","name","columnHeaderGroups","group","getModelColumnRoot","model","modelColumn","depth","current","getColumnHeaderParentGroup","root","buildNode","getLeafValue","getGroupValue","_getLeafValue","headerGroup","columnHeaderGroupMap","get","value","children","childName","getHeaderPadding","state","maxColumnWidth","_paddingMap$get","cachedMap","cachedPaddingMaps","_cachedMap$get","groupTree","columnIndex","getColumnIndexByName","concat","calculateColumnHeaderWidth","getColumnHeaderGroupWidth","childIndexes","paddingMap","set","updateCalculatedColumnWidths","cachedModelColumnNames","calculatedColumnWidthsByName","forEach","index","prevColumnWidth","calculatedColumnWidths","resetCalculatedColumnWidths","width","updateUserColumnWidths","userColumnWidths","modelIndex","setColumnWidth","updateColumnWidthsIfNecessary","modelColumnNames","getCachedCurrentModelColumnNames","isFirstCall","clear","size","headerGroupNames","getCachedCurrentHeaderGroupNames","cachedHeaderGroupNames","resetCalculatedHeaderGroupWidths","getGridY","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverse","filterBarHeight","filterBarCollapsedHeight","reverseHeaderBarHeight","getMetrics","column","resetColumnWidth","delete","resetColumnWidthByName","indexOf","resetAllColumnWidths","getUserColumnWidths","getUserColumnWidthsByName","getCalculatedColumnWidths","parent","baseHeaderWidth","headerPadding","context","headerHorizontalPadding","headerFont","calculateLowerFontWidth","calculateUpperFontWidth","padding","headerText","textForColumnHeader","isColumnExpandable","expandCollapseIconWidth","iconSize","calculateTextWidth","getFilterInputCoordinates","metrics","gridX","allColumnXs","allColumnWidths","columnX","columnWidth","x","y","height","getScrollLeftForColumn","left","rightVisible","lastLeft","newLeft","getLastLeft","getVisibleWidth","Math","min","getAdvancedFilterButtonCoordinates","filterBoxCoordinates"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import deepEqual from 'fast-deep-equal';\nimport memoizeOne from 'memoize-one';\nimport {\n GridMetricCalculator,\n GridMetrics,\n ModelIndex,\n ModelSizeMap,\n trimMap,\n isExpandableColumnGridModel,\n type VisibleIndex,\n} from '@deephaven/grid';\nimport type { GridMetricState } from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { SortDescriptor } from '@deephaven/jsapi-utils';\nimport { assertNotNull } from '@deephaven/utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { IrisGridThemeType } from './IrisGridTheme';\nimport {\n ColumnName,\n ReadonlyAdvancedFilterMap,\n ReadonlyQuickFilterMap,\n} from './CommonTypes';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { rebalanceTree, type TreeNode } from './TreeRebalanceUtil';\n\nexport interface IrisGridMetricState extends GridMetricState {\n model: IrisGridModel;\n theme: IrisGridThemeType;\n isFilterBarShown: boolean;\n advancedFilters: ReadonlyAdvancedFilterMap;\n quickFilters: ReadonlyQuickFilterMap;\n sorts: readonly SortDescriptor[];\n reverse: boolean;\n}\n\ntype GridMetricCalculatorOptions = NonNullable<\n ConstructorParameters<typeof GridMetricCalculator>[0]\n>;\n\nexport type IrisGridMetricCalculatorOptions = GridMetricCalculatorOptions & {\n /**\n * Map of user-set column widths keyed by column name. This is the source\n * of truth for hidden/manually-sized columns across model swaps (e.g.\n * applying or removing a rollup), where the model's column indices\n * change but names are stable. Entries for columns absent from the\n * current model are preserved and re-projected onto the by-index map\n * whenever the model swaps.\n */\n userColumnWidthsByName?: Map<ColumnName, number>;\n};\n\nexport class IrisGridMetricCalculator extends GridMetricCalculator {\n // Column widths by name to keep track of columns going in and out of viewport.\n private userColumnWidthsByName: Map<ColumnName, number>;\n\n // Cached model column names to detect when the column width map update is necessary\n private cachedModelColumnNames: readonly ColumnName[] | undefined;\n\n private cachedHeaderGroupNames: readonly string[] | undefined;\n\n // Cached padding maps for column header groups\n private cachedPaddingMaps: Map<string, Map<string, number>> = new Map();\n\n constructor(options: IrisGridMetricCalculatorOptions = {}) {\n const { userColumnWidthsByName, ...rest } = options;\n super(rest);\n this.userColumnWidthsByName = userColumnWidthsByName ?? new Map();\n }\n\n static getModelColumnRoot(\n model: IrisGridModel,\n modelColumn: ModelIndex\n ): ColumnHeaderGroup | undefined {\n let depth = 0;\n let current = model.getColumnHeaderParentGroup(modelColumn, depth);\n let root = current;\n\n while (current != null) {\n root = current;\n depth += 1;\n current = model.getColumnHeaderParentGroup(modelColumn, depth);\n }\n\n return root;\n }\n\n /**\n * Builds a TreeNode from the model header groups and columns for padding calculation\n * @param name The name of the root node to build the tree for\n * @param model The IrisGridModel containing columns and header groups\n * @param getLeafValue Function to get the value for leaf nodes (columns)\n * @param getGroupValue Function to get the value for group nodes (header groups)\n * @returns The TreeNode structure\n */\n private static buildNode(\n name: string,\n model: IrisGridModel,\n getLeafValue: (name: string) => number,\n getGroupValue: (name: string) => number\n ): TreeNode {\n const headerGroup = model.columnHeaderGroupMap.get(name);\n\n if (headerGroup) {\n const value = getGroupValue(name);\n\n const children = headerGroup.children.map(childName =>\n IrisGridMetricCalculator.buildNode(\n childName,\n model,\n getLeafValue,\n getGroupValue\n )\n );\n\n // Group node\n return {\n name,\n children,\n value,\n };\n }\n\n // Leaf node\n return {\n name,\n children: [],\n value: getLeafValue(name) ?? 0,\n };\n }\n\n /**\n * Gets the header padding for a specific column based on the widths of its group tree nodes.\n * We only adjust paddings on the column, because the group widths are automatically sized to fit their children.\n * @param state The current IrisGridMetricState\n * @param modelColumn The column index to get the padding for\n * @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes\n * @returns The calculated header padding for the column\n */\n private getHeaderPadding(\n state: IrisGridMetricState,\n modelColumn: ModelIndex,\n maxColumnWidth: number\n ): number {\n const { model } = state;\n const root = IrisGridMetricCalculator.getModelColumnRoot(\n model,\n modelColumn\n );\n if (root == null) {\n return 0;\n }\n const cachedMap = this.cachedPaddingMaps.get(root.name);\n if (cachedMap != null) {\n return cachedMap.get(model.columns[modelColumn].name) ?? 0;\n }\n const groupTree = IrisGridMetricCalculator.buildNode(\n root.name,\n model,\n name => {\n const columnIndex = model.getColumnIndexByName(name);\n assertNotNull(columnIndex, `${name} not found in model columns`);\n return super.calculateColumnHeaderWidth(\n columnIndex,\n state,\n maxColumnWidth\n );\n },\n name => {\n const group = model.columnHeaderGroupMap.get(name);\n assertNotNull(group, `${name} not found in columnHeaderGroupMap`);\n return this.getColumnHeaderGroupWidth(\n group.childIndexes[0],\n group.depth,\n state,\n maxColumnWidth\n );\n }\n );\n const paddingMap = rebalanceTree(groupTree);\n this.cachedPaddingMaps.set(root.name, paddingMap);\n return paddingMap.get(model.columns[modelColumn].name) ?? 0;\n }\n\n private getCachedCurrentModelColumnNames = memoizeOne(\n (columns: readonly dh.Column[]) => columns.map(col => col.name)\n );\n\n private getCachedCurrentHeaderGroupNames = memoizeOne(\n (columnHeaderGroups: readonly ColumnHeaderGroup[]) =>\n columnHeaderGroups.map(group => group.name)\n );\n\n private updateCalculatedColumnWidths(model: IrisGridModel): void {\n assertNotNull(this.cachedModelColumnNames);\n const calculatedColumnWidthsByName = new Map<ColumnName, number>();\n this.cachedModelColumnNames.forEach((name, index) => {\n const prevColumnWidth = this.calculatedColumnWidths.get(index);\n if (prevColumnWidth != null) {\n calculatedColumnWidthsByName.set(name, prevColumnWidth);\n }\n });\n this.resetCalculatedColumnWidths();\n calculatedColumnWidthsByName.forEach((width, name) => {\n const index = model.getColumnIndexByName(name);\n if (index != null) {\n this.calculatedColumnWidths.set(index, width);\n }\n });\n trimMap(this.calculatedColumnWidths);\n }\n\n /**\n * Updates the user column widths based on the current model state\n * @param model The current IrisGridModel\n */\n private updateUserColumnWidths(model: IrisGridModel): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName.forEach((width, name) => {\n const modelIndex = model.getColumnIndexByName(name);\n if (modelIndex != null) {\n super.setColumnWidth(modelIndex, width);\n }\n });\n }\n\n /**\n * Updates the user and calculated column widths if the model columns have changed\n * @param model The current IrisGridModel\n */\n private updateColumnWidthsIfNecessary(model: IrisGridModel): void {\n // Comparing model.columns references wouldn't work here because\n // the reference can change in the model without the actual column definitions changing\n const modelColumnNames = this.getCachedCurrentModelColumnNames(\n model.columns\n );\n const isFirstCall = this.cachedModelColumnNames == null;\n if (\n this.cachedModelColumnNames != null &&\n this.cachedModelColumnNames !== modelColumnNames &&\n !deepEqual(modelColumnNames, this.cachedModelColumnNames)\n ) {\n // Preserve column widths when possible to minimize visual shifts in the grid layout\n this.updateCalculatedColumnWidths(model);\n this.updateUserColumnWidths(model);\n this.cachedPaddingMaps.clear();\n } else if (isFirstCall && this.userColumnWidthsByName.size > 0) {\n // On the first call, project the seeded by-name widths into the\n // by-index map for the current model.\n this.updateUserColumnWidths(model);\n }\n this.cachedModelColumnNames = modelColumnNames;\n\n const headerGroupNames = this.getCachedCurrentHeaderGroupNames(\n model.columnHeaderGroups\n );\n if (\n this.cachedHeaderGroupNames != null &&\n this.cachedHeaderGroupNames !== headerGroupNames &&\n !deepEqual(headerGroupNames, this.cachedHeaderGroupNames)\n ) {\n this.resetCalculatedColumnWidths();\n }\n this.cachedHeaderGroupNames = headerGroupNames;\n }\n\n resetCalculatedHeaderGroupWidths(): void {\n this.cachedPaddingMaps.clear();\n }\n\n resetCalculatedColumnWidths(): void {\n super.resetCalculatedColumnWidths();\n this.resetCalculatedHeaderGroupWidths();\n }\n\n getGridY(state: IrisGridMetricState): number {\n // The state here seems to be a GridMetricState with stateOverrides passed from IrisGrid in the props,\n // not guaranteed to be IrisGridMetricState\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverse,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (reverse && sorts != null && sorts.length > 0) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n /**\n * Gets the metrics for the current state. This method has to be called before setColumnSize or resetColumnSize.\n * @param state The current IrisGridMetricState\n * @returns The metrics for the current state\n */\n getMetrics(state: IrisGridMetricState): GridMetrics {\n const { model } = state;\n // Update column widths if columns in the cached model don't match the current model passed in the state\n this.updateColumnWidthsIfNecessary(model);\n\n return super.getMetrics(state);\n }\n\n /**\n * Sets the width for a specific column by index\n * @param column The index of the column to set\n * @param size The new width for the column\n */\n setColumnWidth(column: number, size: number): void {\n super.setColumnWidth(column, size);\n assertNotNull(\n this.cachedModelColumnNames,\n 'setColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.set(name, size);\n trimMap(this.userColumnWidthsByName);\n }\n }\n\n /**\n * Resets the width for a specific column by index\n * @param column The index of the column to reset\n */\n resetColumnWidth(column: number): void {\n super.resetColumnWidth(column);\n assertNotNull(\n this.cachedModelColumnNames,\n 'resetColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.delete(name);\n }\n }\n\n /**\n * Resets the user width for a column by its name. Works regardless of\n * whether the column is currently present in the model, so it is safe to\n * call when the model is about to be swapped (e.g. when applying a rollup).\n * @param name The name of the column to reset\n */\n resetColumnWidthByName(name: ColumnName): void {\n this.userColumnWidthsByName.delete(name);\n if (this.cachedModelColumnNames != null) {\n const index = this.cachedModelColumnNames.indexOf(name);\n if (index >= 0) {\n super.resetColumnWidth(index);\n }\n }\n }\n\n /**\n * Resets all user column widths\n */\n resetAllColumnWidths(): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName = new Map<ColumnName, number>();\n }\n\n /**\n * Gets the user column widths\n * @returns A map of user column widths\n */\n getUserColumnWidths(): ModelSizeMap {\n // This might return stale data if getMetrics hasn't been called\n return this.userColumnWidths;\n }\n\n /**\n * Gets the user column widths keyed by column name. This is the source\n * of truth for hidden/manually-sized columns across model swaps and\n * persistence boundaries.\n * @returns A map of user column widths keyed by column name\n */\n getUserColumnWidthsByName(): ReadonlyMap<ColumnName, number> {\n return this.userColumnWidthsByName;\n }\n\n getCalculatedColumnWidths(): ModelSizeMap {\n return this.calculatedColumnWidths;\n }\n\n /**\n * Calculate the width of the specified column's header\n * @param modelColumn ModelIndex of the column to get the header width for\n * @param state The grid metric state\n * @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes\n * @returns The calculated width of the column header\n */\n calculateColumnHeaderWidth(\n modelColumn: ModelIndex,\n state: IrisGridMetricState,\n maxColumnWidth: number\n ): number {\n const { model } = state;\n\n const parent = model.getColumnHeaderParentGroup(modelColumn, 0);\n\n const baseHeaderWidth = super.calculateColumnHeaderWidth(\n modelColumn,\n state,\n maxColumnWidth\n );\n\n // Column header with no grouping, use base implementation\n if (parent == null) {\n return baseHeaderWidth;\n }\n\n const headerPadding = this.getHeaderPadding(\n state,\n modelColumn,\n maxColumnWidth\n );\n\n return baseHeaderWidth + headerPadding;\n }\n\n // Original width of column header group content, including title, padding, icons, etc.\n // Does not include any rebalancing adjustments\n getColumnHeaderGroupWidth(\n modelColumn: ModelIndex,\n depth: number,\n state: IrisGridMetricState,\n maxColumnWidth: number\n ): number {\n const { model, theme, context } = state;\n const { headerHorizontalPadding, headerFont } = theme;\n this.calculateLowerFontWidth(headerFont, context);\n this.calculateUpperFontWidth(headerFont, context);\n\n const padding = headerHorizontalPadding * 2;\n\n const headerText = model.textForColumnHeader(modelColumn, depth);\n\n const isColumnExpandable =\n isExpandableColumnGridModel(model) &&\n model.isColumnExpandable(modelColumn);\n\n const expandCollapseIconWidth = isColumnExpandable ? theme.iconSize : 0;\n\n if (headerText !== undefined && headerText !== '') {\n return (\n this.calculateTextWidth(\n context,\n headerFont,\n headerText,\n maxColumnWidth - padding\n ) +\n padding +\n expandCollapseIconWidth\n );\n }\n\n return padding + expandCollapseIconWidth;\n }\n\n /**\n * Get metrics for positioning the filter bar input field.\n * @param index The visible index of the column to get the filter box coordinates for\n * @param state The current IrisGridMetricState\n * @param metrics The grid metrics\n * @returns Coordinates for the filter input field, or null if positioning cannot be calculated\n */\n // eslint-disable-next-line class-methods-use-this\n getFilterInputCoordinates(\n index: VisibleIndex,\n state: IrisGridMetricState,\n metrics: GridMetrics\n ): { x: number; y: number; width: number; height: number } | null {\n // Only handle standard columns (>= 0) in the base implementation\n // Plugins can override to handle special columns (e.g., negative indices)\n if (index < 0) {\n return null;\n }\n\n const { theme } = state;\n const { filterBarHeight = 0 } = theme;\n const { gridX, gridY, allColumnXs, allColumnWidths } = metrics;\n\n const columnX = allColumnXs.get(index);\n const columnWidth = allColumnWidths.get(index);\n\n if (\n columnX == null ||\n columnWidth == null ||\n // Don't show the filter box for invisible columns\n columnWidth === 0 ||\n filterBarHeight === 0\n ) {\n return null;\n }\n\n return {\n x: gridX + columnX,\n y: gridY - filterBarHeight,\n width: columnWidth + 1, // cover right border\n height: filterBarHeight - 1, // remove bottom border\n };\n }\n\n /**\n * Calculate the new left index to bring the given column into view.\n * @param column The column that should be scrolled into view\n * @param state The current IrisGridMetricState\n * @param metrics The grid metrics\n * @returns The left column index to scroll to, or null if no scroll is needed\n */\n getScrollLeftForColumn(\n column: VisibleIndex,\n state: IrisGridMetricState,\n metrics: GridMetrics\n ): VisibleIndex | null {\n const { left, rightVisible, lastLeft } = metrics;\n\n if (column < 0) {\n return null;\n }\n\n if (column < left) {\n // Column is to the left of visible area\n return column;\n }\n\n if (rightVisible < column) {\n // Column is to the right of visible area\n const newLeft = this.getLastLeft(\n state,\n column,\n this.getVisibleWidth(state)\n );\n return Math.min(newLeft, lastLeft);\n }\n\n // Column is already visible, no scroll needed\n return null;\n }\n\n /**\n * Get the coordinates for the advanced filter button positioned in the filter bar.\n * @param index The column index\n * @param state The current IrisGridMetricState\n * @param metrics The grid metrics\n * @returns Coordinates for the advanced filter button, or null if it should not be shown\n */\n getAdvancedFilterButtonCoordinates(\n index: VisibleIndex,\n state: IrisGridMetricState,\n metrics: GridMetrics\n ): { x: number; y: number } | null {\n const filterBoxCoordinates = this.getFilterInputCoordinates(\n index,\n state,\n metrics\n );\n\n if (filterBoxCoordinates == null) {\n return null;\n }\n\n const { x, y, width } = filterBoxCoordinates;\n\n return {\n x: x + width - 25, // Right edge of filter box (24px button + 1px for border)\n y: y + 2, // 2px top margin for the button\n };\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"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"}
|
package/dist/IrisGridUtils.d.ts
CHANGED
|
@@ -11,7 +11,13 @@ import type AdvancedSettingsType from './sidebar/AdvancedSettingsType';
|
|
|
11
11
|
import ColumnHeaderGroup, { ColumnHeaderGroupConfig } from './ColumnHeaderGroup';
|
|
12
12
|
import { PartitionConfig } from './PartitionedGridModel';
|
|
13
13
|
import { type IrisGridThemeType } from './IrisGridTheme';
|
|
14
|
-
export type HydratedIrisGridState = Pick<IrisGridState, 'advancedFilters' | 'aggregationSettings' | 'customColumnFormatMap' | 'isFilterBarShown' | 'quickFilters' | 'customColumns' | 'reverse' | 'rollupConfig' | 'showSearchBar' | 'searchValue' | 'selectDistinctColumns' | 'selectedSearchColumns' | 'sorts' | 'invertSearchColumns' | 'pendingDataMap' | 'frozenColumns' | 'conditionalFormats' | 'columnHeaderGroups' | 'partitionConfig' | 'metrics'
|
|
14
|
+
export type HydratedIrisGridState = Pick<IrisGridState, 'advancedFilters' | 'aggregationSettings' | 'customColumnFormatMap' | 'isFilterBarShown' | 'quickFilters' | 'customColumns' | 'reverse' | 'rollupConfig' | 'showSearchBar' | 'searchValue' | 'selectDistinctColumns' | 'selectedSearchColumns' | 'sorts' | 'invertSearchColumns' | 'pendingDataMap' | 'frozenColumns' | 'conditionalFormats' | 'columnHeaderGroups' | 'partitionConfig' | 'metrics'> & {
|
|
15
|
+
/**
|
|
16
|
+
* The metric calculator instance, used to access the by-name user column
|
|
17
|
+
* widths map (the source of truth across model swaps).
|
|
18
|
+
*/
|
|
19
|
+
metricCalculator?: IrisGridState['metricCalculator'];
|
|
20
|
+
};
|
|
15
21
|
export type DehydratedPendingDataMap<T> = [number, {
|
|
16
22
|
data: [string, T][];
|
|
17
23
|
}][];
|
|
@@ -291,8 +297,9 @@ declare class IrisGridUtils {
|
|
|
291
297
|
* @param model The table model to import the state with
|
|
292
298
|
* @param irisGridState The saved IrisGrid state
|
|
293
299
|
*/
|
|
294
|
-
hydrateIrisGridState(model: IrisGridModel, irisGridState: DehydratedIrisGridState): Omit<HydratedIrisGridState, 'metrics'> & {
|
|
300
|
+
hydrateIrisGridState(model: IrisGridModel, irisGridState: DehydratedIrisGridState): Omit<HydratedIrisGridState, 'metrics' | 'metricCalculator'> & {
|
|
295
301
|
userColumnWidths: ModelSizeMap;
|
|
302
|
+
userColumnWidthsByName: Map<ColumnName, number>;
|
|
296
303
|
userRowHeights: ModelSizeMap;
|
|
297
304
|
};
|
|
298
305
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridUtils.d.ts","sourceRoot":"","sources":["../src/IrisGridUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGridUtils.d.ts","sourceRoot":"","sources":["../src/IrisGridUtils.ts"],"names":[],"mappings":"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"}
|
package/dist/IrisGridUtils.js
CHANGED
|
@@ -858,6 +858,7 @@ class IrisGridUtils {
|
|
|
858
858
|
advancedFilters,
|
|
859
859
|
customColumnFormatMap,
|
|
860
860
|
isFilterBarShown,
|
|
861
|
+
metricCalculator,
|
|
861
862
|
metrics: {
|
|
862
863
|
userColumnWidths,
|
|
863
864
|
userRowHeights
|
|
@@ -886,6 +887,19 @@ class IrisGridUtils {
|
|
|
886
887
|
} = model;
|
|
887
888
|
var partitionColumns = isPartitionedGridModelProvider(model) ? model.partitionColumns : [];
|
|
888
889
|
|
|
890
|
+
// Prefer the by-name map from the metric calculator: it preserves entries
|
|
891
|
+
// for columns absent from the current model (e.g. while a rollup is
|
|
892
|
+
// active), so reload-then-save round-trips don't drop them.
|
|
893
|
+
// Fall back to projecting the by-index map from `metrics` against the
|
|
894
|
+
// current model for callers that didn't pass a metric calculator.
|
|
895
|
+
var dehydratedUserColumnWidths = metricCalculator != null ? [...metricCalculator.getUserColumnWidthsByName()] : [...userColumnWidths].filter(_ref20 => {
|
|
896
|
+
var [columnIndex] = _ref20;
|
|
897
|
+
return columnIndex != null && columnIndex >= 0 && columnIndex < columns.length;
|
|
898
|
+
}).map(_ref21 => {
|
|
899
|
+
var [columnIndex, width] = _ref21;
|
|
900
|
+
return [columns[columnIndex].name, width];
|
|
901
|
+
});
|
|
902
|
+
|
|
889
903
|
// Return value will be serialized, should not contain undefined
|
|
890
904
|
return {
|
|
891
905
|
advancedFilters: this.dehydrateAdvancedFilters(columns, advancedFilters),
|
|
@@ -894,13 +908,7 @@ class IrisGridUtils {
|
|
|
894
908
|
isFilterBarShown,
|
|
895
909
|
quickFilters: IrisGridUtils.dehydrateQuickFilters(quickFilters),
|
|
896
910
|
sorts: IrisGridUtils.dehydrateSort(sorts),
|
|
897
|
-
userColumnWidths:
|
|
898
|
-
var [columnIndex] = _ref20;
|
|
899
|
-
return columnIndex != null && columnIndex >= 0 && columnIndex < columns.length;
|
|
900
|
-
}).map(_ref21 => {
|
|
901
|
-
var [columnIndex, width] = _ref21;
|
|
902
|
-
return [columns[columnIndex].name, width];
|
|
903
|
-
}),
|
|
911
|
+
userColumnWidths: dehydratedUserColumnWidths,
|
|
904
912
|
userRowHeights: [...userRowHeights],
|
|
905
913
|
customColumns: [...customColumns],
|
|
906
914
|
conditionalFormats: [...conditionalFormats],
|
|
@@ -964,6 +972,20 @@ class IrisGridUtils {
|
|
|
964
972
|
formatter
|
|
965
973
|
} = model;
|
|
966
974
|
var partitionColumns = isPartitionedGridModelProvider(model) ? model.partitionColumns : [];
|
|
975
|
+
|
|
976
|
+
// Build a name-keyed map preserving every persisted entry, including
|
|
977
|
+
// entries for columns absent from the current model. Then derive the
|
|
978
|
+
// by-index map from that for back-compat with consumers that read
|
|
979
|
+
// widths immediately after hydrate.
|
|
980
|
+
var userColumnWidthsByName = new Map();
|
|
981
|
+
userColumnWidths.forEach(_ref22 => {
|
|
982
|
+
var _columns;
|
|
983
|
+
var [column, width] = _ref22;
|
|
984
|
+
var name = typeof column === 'string' || column instanceof String ? column : (_columns = columns[column]) === null || _columns === void 0 ? void 0 : _columns.name;
|
|
985
|
+
if (name != null) {
|
|
986
|
+
userColumnWidthsByName.set(name, width);
|
|
987
|
+
}
|
|
988
|
+
});
|
|
967
989
|
return {
|
|
968
990
|
advancedFilters: this.hydrateAdvancedFilters(columns, advancedFilters, formatter.timeZone),
|
|
969
991
|
aggregationSettings,
|
|
@@ -971,17 +993,10 @@ class IrisGridUtils {
|
|
|
971
993
|
isFilterBarShown,
|
|
972
994
|
quickFilters: this.hydrateQuickFilters(columns, quickFilters, formatter.timeZone),
|
|
973
995
|
sorts: this.hydrateSort(columns, sorts, true),
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
var {
|
|
979
|
-
name
|
|
980
|
-
} = _ref23;
|
|
981
|
-
return name === column;
|
|
982
|
-
}), width];
|
|
983
|
-
}
|
|
984
|
-
return [column, width];
|
|
996
|
+
userColumnWidthsByName,
|
|
997
|
+
userColumnWidths: new Map([...userColumnWidthsByName].map(_ref23 => {
|
|
998
|
+
var [name, width] = _ref23;
|
|
999
|
+
return [columns.findIndex(c => c.name === name), width];
|
|
985
1000
|
}).filter(_ref24 => {
|
|
986
1001
|
var [column] = _ref24;
|
|
987
1002
|
return column != null && column >= 0 && column < columns.length;
|