@deephaven/iris-grid 0.57.2-beta.0 → 0.57.2-beta.1

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.
Files changed (47) hide show
  1. package/dist/ColumnStatistics.d.ts +4 -4
  2. package/dist/ColumnStatistics.d.ts.map +1 -1
  3. package/dist/ColumnStatistics.js +4 -2
  4. package/dist/ColumnStatistics.js.map +1 -1
  5. package/dist/CrossColumnSearch.d.ts +2 -1
  6. package/dist/CrossColumnSearch.d.ts.map +1 -1
  7. package/dist/CrossColumnSearch.js +11 -8
  8. package/dist/CrossColumnSearch.js.map +1 -1
  9. package/dist/IrisGrid.d.ts +2 -2
  10. package/dist/IrisGrid.d.ts.map +1 -1
  11. package/dist/IrisGrid.js +12 -3
  12. package/dist/IrisGrid.js.map +1 -1
  13. package/dist/IrisGridModel.d.ts +41 -13
  14. package/dist/IrisGridModel.d.ts.map +1 -1
  15. package/dist/IrisGridModel.js +47 -7
  16. package/dist/IrisGridModel.js.map +1 -1
  17. package/dist/IrisGridProxyModel.d.ts +2 -0
  18. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  19. package/dist/IrisGridProxyModel.js +6 -0
  20. package/dist/IrisGridProxyModel.js.map +1 -1
  21. package/dist/IrisGridTableModelTemplate.d.ts +10 -12
  22. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  23. package/dist/IrisGridTableModelTemplate.js +35 -34
  24. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  25. package/dist/IrisGridTreeTableModel.d.ts +14 -4
  26. package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
  27. package/dist/IrisGridTreeTableModel.js +89 -10
  28. package/dist/IrisGridTreeTableModel.js.map +1 -1
  29. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts.map +1 -1
  30. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +1 -1
  31. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  32. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +1 -1
  33. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  34. package/dist/mousehandlers/IrisGridContextMenuHandler.js +55 -43
  35. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  36. package/dist/sidebar/aggregations/AggregationEdit.d.ts +2 -2
  37. package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
  38. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  39. package/dist/sidebar/aggregations/AggregationUtils.d.ts +5 -5
  40. package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
  41. package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
  42. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  43. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +3 -2
  44. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
  45. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +13 -3
  46. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  47. package/package.json +15 -15
@@ -1,5 +1,6 @@
1
- import { GridRange, ModelIndex } from '@deephaven/grid';
2
- import type { Column, TreeRow, TreeTable } from '@deephaven/jsapi-types';
1
+ import { BoundedAxisRange, GridCell, GridRange, ModelIndex } from '@deephaven/grid';
2
+ import type { dh as DhType, Column, InputTable, TreeRow, TreeTable } from '@deephaven/jsapi-types';
3
+ import { Formatter } from '@deephaven/jsapi-utils';
3
4
  import { UIRow, ColumnName } from './CommonTypes';
4
5
  import IrisGridTableModelTemplate from './IrisGridTableModelTemplate';
5
6
  export interface UITreeRow extends UIRow {
@@ -8,11 +9,18 @@ export interface UITreeRow extends UIRow {
8
9
  depth: number;
9
10
  }
10
11
  declare class IrisGridTreeTableModel extends IrisGridTableModelTemplate<TreeTable, UITreeRow> {
12
+ /** We keep a virtual column at the front that tracks the "group" that is expanded */
13
+ private virtualColumns;
14
+ constructor(dh: DhType, table: TreeTable, formatter?: Formatter, inputTable?: InputTable | null);
11
15
  applyBufferedViewport(viewportTop: number, viewportBottom: number, columns: Column[]): void;
12
16
  textForCell(x: ModelIndex, y: ModelIndex): string;
13
17
  extractViewportRow(row: TreeRow, columns: Column[]): UITreeRow;
14
18
  snapshot(ranges: GridRange[], includeHeaders?: boolean, formatValue?: (value: unknown, column: Column) => unknown): Promise<unknown[][]>;
15
- get groupedColumns(): Column[];
19
+ get columns(): Column[];
20
+ get groupedColumns(): readonly Column[];
21
+ sourceForCell(column: ModelIndex, row: ModelIndex): GridCell;
22
+ sourceColumn(column: ModelIndex, row: ModelIndex): Column;
23
+ getClearFilterRange(column: ModelIndex): BoundedAxisRange | null;
16
24
  get hasExpandableRows(): boolean;
17
25
  get isExpandAllAvailable(): boolean;
18
26
  get isChartBuilderAvailable(): boolean;
@@ -26,7 +34,9 @@ declare class IrisGridTreeTableModel extends IrisGridTableModelTemplate<TreeTabl
26
34
  expandAll(): void;
27
35
  collapseAll(): void;
28
36
  depthForRow(y: ModelIndex): ModelIndex;
29
- getCachedFilterableColumnSet: (columns: Column[], groupedColumns: Column[]) => Set<number>;
37
+ getCachedColumns: (virtualColumns: readonly Column[], tableColumns: readonly Column[]) => Column[];
38
+ getCachedGroupColumns: (virtualColumns: readonly Column[], tableGroupedColumns: readonly Column[]) => Column[];
39
+ getCachedFilterableColumnSet: (columns: readonly Column[], groupedColumns: readonly Column[], virtualColumns: readonly Column[]) => Set<number>;
30
40
  getCachedGroupedColumnSet: (groupedColumns: readonly Column[]) => Set<number>;
31
41
  updateFrozenColumns(columns: ColumnName[]): void;
32
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridTreeTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridTreeTableModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEzE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AAEtE,MAAM,WAAW,SAAU,SAAQ,KAAK;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AACD,cAAM,sBAAuB,SAAQ,0BAA0B,CAC7D,SAAS,EACT,SAAS,CACV;IAGC,qBAAqB,CACnB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EAAE,GAChB,IAAI;IAIP,WAAW,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM;IAsBjD,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS;IAUxD,QAAQ,CACZ,MAAM,EAAE,SAAS,EAAE,EACnB,cAAc,CAAC,EAAE,OAAO,EACxB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,GACxD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IA+CvB,IAAI,cAAc,IAAI,MAAM,EAAE,CAE7B;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,IAAI,oBAAoB,IAAI,OAAO,CAElC;IAED,IAAI,uBAAuB,IAAI,OAAO,CAErC;IAED,IAAI,yBAAyB,IAAI,OAAO,CAEvC;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,YAAY,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO;IAO9C,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IAI5C,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAKvC,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAKrC,cAAc,CACZ,CAAC,EAAE,UAAU,EACb,UAAU,EAAE,OAAO,EACnB,iBAAiB,UAAQ,GACxB,IAAI;IAQP,SAAS,IAAI,IAAI;IAMjB,WAAW,IAAI,IAAI;IAMnB,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU;IAKtC,4BAA4B,YAChB,MAAM,EAAE,kBAAkB,MAAM,EAAE,iBAM5C;IAEF,yBAAyB,mBACN,SAAS,MAAM,EAAE,iBAMlC;IAEF,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;CAKjD;AAED,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"IrisGridTreeTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridTreeTableModel.ts"],"names":[],"mappings":"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"}
@@ -8,21 +8,55 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
8
8
  /* eslint class-methods-use-this: "off" */
9
9
  import memoize from 'memoize-one';
10
10
  import { GridRange } from '@deephaven/grid';
11
+ import Log from '@deephaven/log';
12
+ import { Formatter, TableUtils } from '@deephaven/jsapi-utils';
11
13
  import { assertNotNull } from '@deephaven/utils';
12
14
  import IrisGridTableModelTemplate from "./IrisGridTableModelTemplate.js";
15
+ var log = Log.module('IrisGridTreeTableModel');
13
16
  class IrisGridTreeTableModel extends IrisGridTableModelTemplate {
14
- constructor() {
15
- super(...arguments);
16
- _defineProperty(this, "getCachedFilterableColumnSet", memoize((columns, groupedColumns) => new Set(((groupedColumns === null || groupedColumns === void 0 ? void 0 : groupedColumns.length) > 0 ? groupedColumns : columns).map(c1 => columns.findIndex(c2 => c1.name === c2.name)))));
17
+ /** We keep a virtual column at the front that tracks the "group" that is expanded */
18
+
19
+ constructor(dh, table) {
20
+ var formatter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Formatter(dh);
21
+ var inputTable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
22
+ super(dh, table, formatter, inputTable);
23
+ _defineProperty(this, "virtualColumns", void 0);
24
+ _defineProperty(this, "getCachedColumns", memoize((virtualColumns, tableColumns) => [...virtualColumns, ...tableColumns]));
25
+ _defineProperty(this, "getCachedGroupColumns", memoize((virtualColumns, tableGroupedColumns) => [...virtualColumns, ...tableGroupedColumns]));
26
+ _defineProperty(this, "getCachedFilterableColumnSet", memoize((columns, groupedColumns, virtualColumns) => new Set(((groupedColumns === null || groupedColumns === void 0 ? void 0 : groupedColumns.length) > 0 ? groupedColumns : columns).filter(c => !virtualColumns.includes(c)).map(c1 => columns.findIndex(c2 => c1.name === c2.name)))));
17
27
  _defineProperty(this, "getCachedGroupedColumnSet", memoize(groupedColumns => new Set(groupedColumns.map(c1 => this.columns.findIndex(c2 => c1.name === c2.name)))));
28
+ this.virtualColumns = [{
29
+ name: '__DH_UI_GROUP__',
30
+ displayName: 'Group',
31
+ type: TableUtils.dataType.STRING,
32
+ constituentType: TableUtils.dataType.STRING,
33
+ isPartitionColumn: false,
34
+ isSortable: false,
35
+ isProxy: true,
36
+ description: 'Key column',
37
+ filter: () => {
38
+ throw new Error('Filter not implemented for virtual column');
39
+ },
40
+ sort: () => {
41
+ throw new Error('Sort not implemented virtual column');
42
+ },
43
+ formatColor: () => {
44
+ throw new Error('Color not implemented for virtual column');
45
+ },
46
+ formatRowColor: () => {
47
+ throw new Error('Color not implemented for virtual column');
48
+ }
49
+ }];
18
50
  }
19
- // table: TreeTable
20
-
21
51
  applyBufferedViewport(viewportTop, viewportBottom, columns) {
22
- this.table.setViewport(viewportTop, viewportBottom, columns);
52
+ var viewportColumns = [
53
+ // Need to always fetch the grouped columns so we always have key data for the rows
54
+ // Used to display our virtual key column
55
+ ...this.table.groupedColumns, ...columns.filter(c => !this.virtualColumns.includes(c) && !this.groupedColumns.includes(c))];
56
+ this.table.setViewport(viewportTop, viewportBottom, viewportColumns);
23
57
  }
24
58
  textForCell(x, y) {
25
- var column = this.columns[x];
59
+ var column = this.sourceColumn(x, y);
26
60
  var row = this.row(y);
27
61
  if (row != null && column != null) {
28
62
  if (!row.hasChildren && column.constituentType != null) {
@@ -42,7 +76,21 @@ class IrisGridTreeTableModel extends IrisGridTableModelTemplate {
42
76
  hasChildren,
43
77
  depth
44
78
  } = row;
45
- return _objectSpread(_objectSpread({}, super.extractViewportRow(row, columns)), {}, {
79
+ var extractedRow = super.extractViewportRow(row, columns);
80
+ var modifiedData = new Map(extractedRow.data);
81
+ if (hasChildren) {
82
+ for (var i = 0; i < this.virtualColumns.length; i += 1) {
83
+ var key = i + (depth - 1) + (this.virtualColumns.length - 1);
84
+ var cellData = modifiedData.get(key);
85
+ if (cellData == null) {
86
+ log.warn('Missing key data for virtual column', i, depth, key, row);
87
+ } else {
88
+ modifiedData.set(i, cellData);
89
+ }
90
+ }
91
+ }
92
+ return _objectSpread(_objectSpread({}, extractedRow), {}, {
93
+ data: modifiedData,
46
94
  isExpanded,
47
95
  hasChildren,
48
96
  depth
@@ -83,8 +131,39 @@ class IrisGridTreeTableModel extends IrisGridTableModelTemplate {
83
131
  return result;
84
132
  })();
85
133
  }
134
+ get columns() {
135
+ return this.getCachedColumns(this.virtualColumns, super.columns);
136
+ }
86
137
  get groupedColumns() {
87
- return this.table.groupedColumns;
138
+ return this.getCachedGroupColumns(this.virtualColumns, this.table.groupedColumns);
139
+ }
140
+ sourceForCell(column, row) {
141
+ if (column >= this.virtualColumns.length) {
142
+ return {
143
+ column,
144
+ row
145
+ };
146
+ }
147
+ var depth = this.depthForRow(row);
148
+ return {
149
+ column: column + depth,
150
+ row
151
+ };
152
+ }
153
+ sourceColumn(column, row) {
154
+ if (column >= this.virtualColumns.length) {
155
+ return super.sourceColumn(column, row);
156
+ }
157
+ var depth = this.depthForRow(row);
158
+ return this.columns[column + depth];
159
+ }
160
+ getClearFilterRange(column) {
161
+ if (column >= this.virtualColumns.length) {
162
+ return super.getClearFilterRange(column);
163
+ }
164
+ // Source for the proxied column could be any of the grouped columns.
165
+ // Return the range of columns matching the grouped columns.
166
+ return [this.virtualColumns.length, this.groupedColumns.length];
88
167
  }
89
168
  get hasExpandableRows() {
90
169
  return true;
@@ -102,7 +181,7 @@ class IrisGridTreeTableModel extends IrisGridTableModelTemplate {
102
181
  return false;
103
182
  }
104
183
  isFilterable(columnIndex) {
105
- return this.getCachedFilterableColumnSet(this.columns, this.groupedColumns).has(columnIndex);
184
+ return this.getCachedFilterableColumnSet(this.columns, this.groupedColumns, this.virtualColumns).has(columnIndex);
106
185
  }
107
186
  isColumnMovable(column) {
108
187
  return column >= this.groupedColumns.length;
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridTreeTableModel.js","names":["memoize","GridRange","assertNotNull","IrisGridTableModelTemplate","IrisGridTreeTableModel","constructor","arguments","_defineProperty","columns","groupedColumns","Set","length","map","c1","findIndex","c2","name","applyBufferedViewport","viewportTop","viewportBottom","table","setViewport","textForCell","x","y","column","row","hasChildren","constituentType","value","valueForCell","displayString","depth","getCachedGroupedColumnSet","has","extractViewportRow","isExpanded","_objectSpread","snapshot","ranges","includeHeaders","formatValue","_this","_asyncToGenerator","_this$viewportData","viewport","viewportData","result","push","c","viewportRange","offset","rows","i","intersection","startRow","endRow","r","resultRow","viewportRow","startColumn","endColumn","_viewportRow$data$get","data","get","hasExpandableRows","isExpandAllAvailable","expandAll","undefined","isChartBuilderAvailable","isSelectDistinctAvailable","isReversible","isFilterable","columnIndex","getCachedFilterableColumnSet","isColumnMovable","isRowExpandable","_row$hasChildren","isRowExpanded","_row$isExpanded","setRowExpanded","expandDescendants","setExpanded","collapseAll","depthForRow","_row$depth","updateFrozenColumns","Error"],"sources":["../src/IrisGridTreeTableModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport { GridRange, ModelIndex } from '@deephaven/grid';\nimport type { Column, TreeRow, TreeTable } from '@deephaven/jsapi-types';\nimport { assertNotNull } from '@deephaven/utils';\nimport { UIRow, ColumnName } from './CommonTypes';\nimport IrisGridTableModelTemplate from './IrisGridTableModelTemplate';\n\nexport interface UITreeRow extends UIRow {\n isExpanded: boolean;\n hasChildren: boolean;\n depth: number;\n}\nclass IrisGridTreeTableModel extends IrisGridTableModelTemplate<\n TreeTable,\n UITreeRow\n> {\n // table: TreeTable\n\n applyBufferedViewport(\n viewportTop: number,\n viewportBottom: number,\n columns: Column[]\n ): void {\n this.table.setViewport(viewportTop, viewportBottom, columns);\n }\n\n textForCell(x: ModelIndex, y: ModelIndex): string {\n const column = this.columns[x];\n const row = this.row(y);\n if (row != null && column != null) {\n if (!row.hasChildren && column.constituentType != null) {\n const value = this.valueForCell(x, y);\n return this.displayString(value, column.constituentType, column.name);\n }\n // Show empty string instead of null in rollup grouping columns (issue #1483)\n if (\n row.hasChildren &&\n row.depth <= x + 1 &&\n this.valueForCell(x, y) === null &&\n this.getCachedGroupedColumnSet(this.groupedColumns).has(x)\n ) {\n return '';\n }\n }\n\n return super.textForCell(x, y);\n }\n\n extractViewportRow(row: TreeRow, columns: Column[]): UITreeRow {\n const { isExpanded, hasChildren, depth } = row;\n return {\n ...super.extractViewportRow(row, columns),\n isExpanded,\n hasChildren,\n depth,\n };\n }\n\n async snapshot(\n ranges: GridRange[],\n includeHeaders?: boolean,\n formatValue?: (value: unknown, column: Column) => unknown\n ): Promise<unknown[][]> {\n assertNotNull(this.viewport);\n assertNotNull(this.viewportData);\n const { columns } = this.viewport;\n const result = [];\n\n if (includeHeaders != null && includeHeaders) {\n result.push(columns.map(c => c.name));\n }\n\n const viewportRange = new GridRange(\n 0,\n this.viewportData?.offset,\n columns.length,\n this.viewportData.offset + this.viewportData.rows.length\n );\n\n for (let i = 0; i < ranges.length; i += 1) {\n const intersection = GridRange.intersection(viewportRange, ranges[i]);\n\n assertNotNull(intersection);\n assertNotNull(intersection.startRow);\n assertNotNull(intersection.endRow);\n\n for (let r = intersection.startRow; r <= intersection.endRow; r += 1) {\n const resultRow = [];\n const viewportRow =\n this.viewportData.rows[r - this.viewportData.offset];\n assertNotNull(intersection.startColumn);\n assertNotNull(intersection.endColumn);\n for (\n let c = intersection.startColumn;\n c <= intersection.endColumn;\n c += 1\n ) {\n assertNotNull(formatValue);\n resultRow.push(\n formatValue(viewportRow.data.get(c)?.value, this.columns[c])\n );\n }\n result.push(resultRow);\n }\n }\n\n return result;\n }\n\n get groupedColumns(): Column[] {\n return this.table.groupedColumns;\n }\n\n get hasExpandableRows(): boolean {\n return true;\n }\n\n get isExpandAllAvailable(): boolean {\n return this.table.expandAll !== undefined;\n }\n\n get isChartBuilderAvailable(): boolean {\n return false;\n }\n\n get isSelectDistinctAvailable(): boolean {\n return false;\n }\n\n get isReversible(): boolean {\n return false;\n }\n\n isFilterable(columnIndex: ModelIndex): boolean {\n return this.getCachedFilterableColumnSet(\n this.columns,\n this.groupedColumns\n ).has(columnIndex);\n }\n\n isColumnMovable(column: ModelIndex): boolean {\n return column >= this.groupedColumns.length;\n }\n\n isRowExpandable(y: ModelIndex): boolean {\n const row = this.row(y);\n return row?.hasChildren ?? false;\n }\n\n isRowExpanded(y: ModelIndex): boolean {\n const row = this.row(y);\n return row?.isExpanded ?? false;\n }\n\n setRowExpanded(\n y: ModelIndex,\n isExpanded: boolean,\n expandDescendants = false\n ): void {\n if (this.isExpandAllAvailable) {\n this.table.setExpanded(y, isExpanded, expandDescendants);\n } else {\n this.table.setExpanded(y, isExpanded);\n }\n }\n\n expandAll(): void {\n if (this.table.expandAll) {\n this.table.expandAll();\n }\n }\n\n collapseAll(): void {\n if (this.table.collapseAll) {\n this.table.collapseAll();\n }\n }\n\n depthForRow(y: ModelIndex): ModelIndex {\n const row = this.row(y);\n return (row?.depth ?? 1) - 1;\n }\n\n getCachedFilterableColumnSet = memoize(\n (columns: Column[], groupedColumns: Column[]) =>\n new Set(\n (groupedColumns?.length > 0 ? groupedColumns : columns).map(c1 =>\n columns.findIndex(c2 => c1.name === c2.name)\n )\n )\n );\n\n getCachedGroupedColumnSet = memoize(\n (groupedColumns: readonly Column[]) =>\n new Set(\n groupedColumns.map(c1 =>\n this.columns.findIndex(c2 => c1.name === c2.name)\n )\n )\n );\n\n updateFrozenColumns(columns: ColumnName[]): void {\n if (columns.length > 0) {\n throw new Error('Cannot freeze columns on a tree table');\n }\n }\n}\n\nexport default IrisGridTreeTableModel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridTreeTableModel.js","names":["memoize","GridRange","Log","Formatter","TableUtils","assertNotNull","IrisGridTableModelTemplate","log","module","IrisGridTreeTableModel","constructor","dh","table","formatter","arguments","length","undefined","inputTable","_defineProperty","virtualColumns","tableColumns","tableGroupedColumns","columns","groupedColumns","Set","filter","c","includes","map","c1","findIndex","c2","name","displayName","type","dataType","STRING","constituentType","isPartitionColumn","isSortable","isProxy","description","Error","sort","formatColor","formatRowColor","applyBufferedViewport","viewportTop","viewportBottom","viewportColumns","setViewport","textForCell","x","y","column","sourceColumn","row","hasChildren","value","valueForCell","displayString","depth","getCachedGroupedColumnSet","has","extractViewportRow","isExpanded","extractedRow","modifiedData","Map","data","i","key","cellData","get","warn","set","_objectSpread","snapshot","ranges","includeHeaders","formatValue","_this","_asyncToGenerator","_this$viewportData","viewport","viewportData","result","push","viewportRange","offset","rows","intersection","startRow","endRow","r","resultRow","viewportRow","startColumn","endColumn","_viewportRow$data$get","getCachedColumns","getCachedGroupColumns","sourceForCell","depthForRow","getClearFilterRange","hasExpandableRows","isExpandAllAvailable","expandAll","isChartBuilderAvailable","isSelectDistinctAvailable","isReversible","isFilterable","columnIndex","getCachedFilterableColumnSet","isColumnMovable","isRowExpandable","_row$hasChildren","isRowExpanded","_row$isExpanded","setRowExpanded","expandDescendants","setExpanded","collapseAll","_row$depth","updateFrozenColumns"],"sources":["../src/IrisGridTreeTableModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport {\n BoundedAxisRange,\n GridCell,\n GridRange,\n ModelIndex,\n} from '@deephaven/grid';\nimport type {\n dh as DhType,\n Column,\n InputTable,\n TreeRow,\n TreeTable,\n} from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport { assertNotNull } from '@deephaven/utils';\nimport { UIRow, ColumnName, CellData } from './CommonTypes';\nimport IrisGridTableModelTemplate from './IrisGridTableModelTemplate';\nimport { DisplayColumn } from './IrisGridModel';\n\nconst log = Log.module('IrisGridTreeTableModel');\n\nexport interface UITreeRow extends UIRow {\n isExpanded: boolean;\n hasChildren: boolean;\n depth: number;\n}\nclass IrisGridTreeTableModel extends IrisGridTableModelTemplate<\n TreeTable,\n UITreeRow\n> {\n /** We keep a virtual column at the front that tracks the \"group\" that is expanded */\n private virtualColumns: DisplayColumn[];\n\n constructor(\n dh: DhType,\n table: TreeTable,\n formatter = new Formatter(dh),\n inputTable: InputTable | null = null\n ) {\n super(dh, table, formatter, inputTable);\n this.virtualColumns = [\n {\n name: '__DH_UI_GROUP__',\n displayName: 'Group',\n type: TableUtils.dataType.STRING,\n constituentType: TableUtils.dataType.STRING,\n isPartitionColumn: false,\n isSortable: false,\n isProxy: true,\n description: 'Key column',\n filter: () => {\n throw new Error('Filter not implemented for virtual column');\n },\n sort: () => {\n throw new Error('Sort not implemented virtual column');\n },\n formatColor: () => {\n throw new Error('Color not implemented for virtual column');\n },\n formatRowColor: () => {\n throw new Error('Color not implemented for virtual column');\n },\n },\n ];\n }\n\n applyBufferedViewport(\n viewportTop: number,\n viewportBottom: number,\n columns: Column[]\n ): void {\n const viewportColumns = [\n // Need to always fetch the grouped columns so we always have key data for the rows\n // Used to display our virtual key column\n ...this.table.groupedColumns,\n ...columns.filter(\n c =>\n !this.virtualColumns.includes(c) && !this.groupedColumns.includes(c)\n ),\n ];\n this.table.setViewport(viewportTop, viewportBottom, viewportColumns);\n }\n\n textForCell(x: ModelIndex, y: ModelIndex): string {\n const column = this.sourceColumn(x, y);\n const row = this.row(y);\n if (row != null && column != null) {\n if (!row.hasChildren && column.constituentType != null) {\n const value = this.valueForCell(x, y);\n return this.displayString(value, column.constituentType, column.name);\n }\n // Show empty string instead of null in rollup grouping columns (issue #1483)\n if (\n row.hasChildren &&\n row.depth <= x + 1 &&\n this.valueForCell(x, y) === null &&\n this.getCachedGroupedColumnSet(this.groupedColumns).has(x)\n ) {\n return '';\n }\n }\n\n return super.textForCell(x, y);\n }\n\n extractViewportRow(row: TreeRow, columns: Column[]): UITreeRow {\n const { isExpanded, hasChildren, depth } = row;\n const extractedRow = super.extractViewportRow(row, columns);\n const modifiedData = new Map<ModelIndex, CellData>(extractedRow.data);\n if (hasChildren) {\n for (let i = 0; i < this.virtualColumns.length; i += 1) {\n const key = i + (depth - 1) + (this.virtualColumns.length - 1);\n const cellData = modifiedData.get(key);\n if (cellData == null) {\n log.warn('Missing key data for virtual column', i, depth, key, row);\n } else {\n modifiedData.set(i, cellData);\n }\n }\n }\n\n return {\n ...extractedRow,\n data: modifiedData,\n isExpanded,\n hasChildren,\n depth,\n };\n }\n\n async snapshot(\n ranges: GridRange[],\n includeHeaders?: boolean,\n formatValue?: (value: unknown, column: Column) => unknown\n ): Promise<unknown[][]> {\n assertNotNull(this.viewport);\n assertNotNull(this.viewportData);\n const { columns } = this.viewport;\n const result = [];\n\n if (includeHeaders != null && includeHeaders) {\n result.push(columns.map(c => c.name));\n }\n\n const viewportRange = new GridRange(\n 0,\n this.viewportData?.offset,\n columns.length,\n this.viewportData.offset + this.viewportData.rows.length\n );\n\n for (let i = 0; i < ranges.length; i += 1) {\n const intersection = GridRange.intersection(viewportRange, ranges[i]);\n\n assertNotNull(intersection);\n assertNotNull(intersection.startRow);\n assertNotNull(intersection.endRow);\n\n for (let r = intersection.startRow; r <= intersection.endRow; r += 1) {\n const resultRow = [];\n const viewportRow =\n this.viewportData.rows[r - this.viewportData.offset];\n assertNotNull(intersection.startColumn);\n assertNotNull(intersection.endColumn);\n for (\n let c = intersection.startColumn;\n c <= intersection.endColumn;\n c += 1\n ) {\n assertNotNull(formatValue);\n resultRow.push(\n formatValue(viewportRow.data.get(c)?.value, this.columns[c])\n );\n }\n result.push(resultRow);\n }\n }\n\n return result;\n }\n\n get columns(): Column[] {\n return this.getCachedColumns(this.virtualColumns, super.columns);\n }\n\n get groupedColumns(): readonly Column[] {\n return this.getCachedGroupColumns(\n this.virtualColumns,\n this.table.groupedColumns\n );\n }\n\n sourceForCell(column: ModelIndex, row: ModelIndex): GridCell {\n if (column >= this.virtualColumns.length) {\n return { column, row };\n }\n const depth = this.depthForRow(row);\n return { column: column + depth, row };\n }\n\n sourceColumn(column: ModelIndex, row: ModelIndex): Column {\n if (column >= this.virtualColumns.length) {\n return super.sourceColumn(column, row);\n }\n\n const depth = this.depthForRow(row);\n return this.columns[column + depth];\n }\n\n getClearFilterRange(column: ModelIndex): BoundedAxisRange | null {\n if (column >= this.virtualColumns.length) {\n return super.getClearFilterRange(column);\n }\n // Source for the proxied column could be any of the grouped columns.\n // Return the range of columns matching the grouped columns.\n return [this.virtualColumns.length, this.groupedColumns.length];\n }\n\n get hasExpandableRows(): boolean {\n return true;\n }\n\n get isExpandAllAvailable(): boolean {\n return this.table.expandAll !== undefined;\n }\n\n get isChartBuilderAvailable(): boolean {\n return false;\n }\n\n get isSelectDistinctAvailable(): boolean {\n return false;\n }\n\n get isReversible(): boolean {\n return false;\n }\n\n isFilterable(columnIndex: ModelIndex): boolean {\n return this.getCachedFilterableColumnSet(\n this.columns,\n this.groupedColumns,\n this.virtualColumns\n ).has(columnIndex);\n }\n\n isColumnMovable(column: ModelIndex): boolean {\n return column >= this.groupedColumns.length;\n }\n\n isRowExpandable(y: ModelIndex): boolean {\n const row = this.row(y);\n return row?.hasChildren ?? false;\n }\n\n isRowExpanded(y: ModelIndex): boolean {\n const row = this.row(y);\n return row?.isExpanded ?? false;\n }\n\n setRowExpanded(\n y: ModelIndex,\n isExpanded: boolean,\n expandDescendants = false\n ): void {\n if (this.isExpandAllAvailable) {\n this.table.setExpanded(y, isExpanded, expandDescendants);\n } else {\n this.table.setExpanded(y, isExpanded);\n }\n }\n\n expandAll(): void {\n if (this.table.expandAll) {\n this.table.expandAll();\n }\n }\n\n collapseAll(): void {\n if (this.table.collapseAll) {\n this.table.collapseAll();\n }\n }\n\n depthForRow(y: ModelIndex): ModelIndex {\n const row = this.row(y);\n return (row?.depth ?? 1) - 1;\n }\n\n getCachedColumns = memoize(\n (virtualColumns: readonly Column[], tableColumns: readonly Column[]) => [\n ...virtualColumns,\n ...tableColumns,\n ]\n );\n\n getCachedGroupColumns = memoize(\n (\n virtualColumns: readonly Column[],\n tableGroupedColumns: readonly Column[]\n ) => [...virtualColumns, ...tableGroupedColumns]\n );\n\n getCachedFilterableColumnSet = memoize(\n (\n columns: readonly Column[],\n groupedColumns: readonly Column[],\n virtualColumns: readonly Column[]\n ) =>\n new Set(\n (groupedColumns?.length > 0 ? groupedColumns : columns)\n .filter(c => !virtualColumns.includes(c))\n .map(c1 => columns.findIndex(c2 => c1.name === c2.name))\n )\n );\n\n getCachedGroupedColumnSet = memoize(\n (groupedColumns: readonly Column[]) =>\n new Set(\n groupedColumns.map(c1 =>\n this.columns.findIndex(c2 => c1.name === c2.name)\n )\n )\n );\n\n updateFrozenColumns(columns: ColumnName[]): void {\n if (columns.length > 0) {\n throw new Error('Cannot freeze columns on a tree table');\n }\n }\n}\n\nexport default IrisGridTreeTableModel;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridColumnSelectMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridColumnSelectMouseHandler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;GAEG;AACH,cAAM,gCAAiC,SAAQ,gBAAgB;gBACjD,QAAQ,EAAE,QAAQ;IAO9B,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,cAAc;IActB,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB;IAqBhD,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB;IAqBjD,OAAO,IAAI,kBAAkB;IAU7B,MAAM,IAAI,kBAAkB;IAI5B,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB;CAalD;AAED,eAAe,gCAAgC,CAAC"}
1
+ {"version":3,"file":"IrisGridColumnSelectMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridColumnSelectMouseHandler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC;;GAEG;AACH,cAAM,gCAAiC,SAAQ,gBAAgB;gBACjD,QAAQ,EAAE,QAAQ;IAO9B,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,cAAc;IActB,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB;IAqBhD,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB;IAqBjD,OAAO,IAAI,kBAAkB;IAU7B,MAAM,IAAI,kBAAkB;IAI5B,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,kBAAkB;CAalD;AAED,eAAe,gCAAgC,CAAC"}
@@ -20,7 +20,7 @@ class IrisGridColumnSelectMouseHandler extends GridMouseHandler {
20
20
  return isSelectingColumn;
21
21
  }
22
22
  isValidColumn(tableColumn) {
23
- if (tableColumn == null) {
23
+ if (tableColumn == null || tableColumn.isProxy === true) {
24
24
  return false;
25
25
  }
26
26
  var {
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridColumnSelectMouseHandler.js","names":["GridMouseHandler","IrisGridColumnSelectMouseHandler","constructor","irisGrid","_defineProperty","cursor","isActive","isSelectingColumn","props","isValidColumn","tableColumn","columnSelectionValidator","updateColumnSelectionStatus","getTableColumn","columnIndex","model","modelColumn","getModelColumn","columns","onMove","gridPoint","columnAllowedCursor","columnNotAllowedCursor","column","setState","hoverSelectColumn","onWheel","preventDefault","stopPropagation","onLeave","onDown","onClick","selectColumn"],"sources":["../../src/mousehandlers/IrisGridColumnSelectMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n GridPoint,\n EventHandlerResult,\n} from '@deephaven/grid';\nimport type { Column } from '@deephaven/jsapi-types';\nimport { IrisGrid } from '../IrisGrid';\n\n/**\n * Handles interaction with tables when the Linker tool is active\n */\nclass IrisGridColumnSelectMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n this.cursor = null;\n }\n\n private irisGrid: IrisGrid;\n\n private isActive(): boolean {\n const { isSelectingColumn } = this.irisGrid.props;\n return isSelectingColumn;\n }\n\n private isValidColumn(tableColumn: Column | null): boolean {\n if (tableColumn == null) {\n return false;\n }\n\n const { columnSelectionValidator } = this.irisGrid.props;\n if (columnSelectionValidator != null) {\n return columnSelectionValidator(tableColumn);\n }\n return true;\n }\n\n private updateColumnSelectionStatus(): void {\n const { columnSelectionValidator } = this.irisGrid.props;\n if (columnSelectionValidator != null) {\n columnSelectionValidator(null);\n }\n }\n\n private getTableColumn(columnIndex: number | null): Column | null {\n if (columnIndex == null) {\n return null;\n }\n\n const { model } = this.irisGrid.props;\n const modelColumn = this.irisGrid.getModelColumn(columnIndex);\n if (modelColumn == null) {\n return null;\n }\n\n return model.columns[modelColumn];\n }\n\n onMove(gridPoint: GridPoint): EventHandlerResult {\n if (!this.isActive()) {\n return false;\n }\n\n const { columnAllowedCursor, columnNotAllowedCursor } = this.irisGrid.props;\n const { column } = gridPoint;\n const tableColumn = this.getTableColumn(column);\n\n if (this.isValidColumn(tableColumn)) {\n this.cursor = columnAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: column });\n } else {\n this.cursor = columnNotAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: null });\n }\n\n return true;\n }\n\n // keeps linker cursor state during wheel event\n onWheel(gridPoint: GridPoint): EventHandlerResult {\n if (!this.isActive()) {\n return false;\n }\n\n const { columnAllowedCursor, columnNotAllowedCursor } = this.irisGrid.props;\n const { column } = gridPoint;\n const tableColumn = this.getTableColumn(column);\n\n if (this.isValidColumn(tableColumn)) {\n this.cursor = columnAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: column });\n } else {\n this.cursor = columnNotAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: null });\n }\n\n // don't block wheel event from scrolling\n return { preventDefault: false, stopPropagation: false };\n }\n\n onLeave(): EventHandlerResult {\n if (this.isActive()) {\n this.irisGrid.setState({ hoverSelectColumn: null });\n }\n\n this.updateColumnSelectionStatus();\n\n return false;\n }\n\n onDown(): EventHandlerResult {\n return this.isActive();\n }\n\n onClick(gridPoint: GridPoint): EventHandlerResult {\n if (!this.isActive()) {\n return false;\n }\n\n const { column } = gridPoint;\n const tableColumn = this.getTableColumn(column);\n if (tableColumn != null && this.isValidColumn(tableColumn)) {\n this.irisGrid.selectColumn(tableColumn);\n }\n\n return true;\n }\n}\n\nexport default IrisGridColumnSelectMouseHandler;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridColumnSelectMouseHandler.js","names":["GridMouseHandler","IrisGridColumnSelectMouseHandler","constructor","irisGrid","_defineProperty","cursor","isActive","isSelectingColumn","props","isValidColumn","tableColumn","isProxy","columnSelectionValidator","updateColumnSelectionStatus","getTableColumn","columnIndex","model","modelColumn","getModelColumn","columns","onMove","gridPoint","columnAllowedCursor","columnNotAllowedCursor","column","setState","hoverSelectColumn","onWheel","preventDefault","stopPropagation","onLeave","onDown","onClick","selectColumn"],"sources":["../../src/mousehandlers/IrisGridColumnSelectMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport {\n GridMouseHandler,\n GridPoint,\n EventHandlerResult,\n} from '@deephaven/grid';\nimport type { Column } from '@deephaven/jsapi-types';\nimport { IrisGrid } from '../IrisGrid';\nimport { DisplayColumn } from '../IrisGridModel';\n\n/**\n * Handles interaction with tables when the Linker tool is active\n */\nclass IrisGridColumnSelectMouseHandler extends GridMouseHandler {\n constructor(irisGrid: IrisGrid) {\n super();\n\n this.irisGrid = irisGrid;\n this.cursor = null;\n }\n\n private irisGrid: IrisGrid;\n\n private isActive(): boolean {\n const { isSelectingColumn } = this.irisGrid.props;\n return isSelectingColumn;\n }\n\n private isValidColumn(tableColumn: DisplayColumn | null): boolean {\n if (tableColumn == null || tableColumn.isProxy === true) {\n return false;\n }\n\n const { columnSelectionValidator } = this.irisGrid.props;\n if (columnSelectionValidator != null) {\n return columnSelectionValidator(tableColumn);\n }\n return true;\n }\n\n private updateColumnSelectionStatus(): void {\n const { columnSelectionValidator } = this.irisGrid.props;\n if (columnSelectionValidator != null) {\n columnSelectionValidator(null);\n }\n }\n\n private getTableColumn(columnIndex: number | null): Column | null {\n if (columnIndex == null) {\n return null;\n }\n\n const { model } = this.irisGrid.props;\n const modelColumn = this.irisGrid.getModelColumn(columnIndex);\n if (modelColumn == null) {\n return null;\n }\n\n return model.columns[modelColumn];\n }\n\n onMove(gridPoint: GridPoint): EventHandlerResult {\n if (!this.isActive()) {\n return false;\n }\n\n const { columnAllowedCursor, columnNotAllowedCursor } = this.irisGrid.props;\n const { column } = gridPoint;\n const tableColumn = this.getTableColumn(column);\n\n if (this.isValidColumn(tableColumn)) {\n this.cursor = columnAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: column });\n } else {\n this.cursor = columnNotAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: null });\n }\n\n return true;\n }\n\n // keeps linker cursor state during wheel event\n onWheel(gridPoint: GridPoint): EventHandlerResult {\n if (!this.isActive()) {\n return false;\n }\n\n const { columnAllowedCursor, columnNotAllowedCursor } = this.irisGrid.props;\n const { column } = gridPoint;\n const tableColumn = this.getTableColumn(column);\n\n if (this.isValidColumn(tableColumn)) {\n this.cursor = columnAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: column });\n } else {\n this.cursor = columnNotAllowedCursor;\n this.irisGrid.setState({ hoverSelectColumn: null });\n }\n\n // don't block wheel event from scrolling\n return { preventDefault: false, stopPropagation: false };\n }\n\n onLeave(): EventHandlerResult {\n if (this.isActive()) {\n this.irisGrid.setState({ hoverSelectColumn: null });\n }\n\n this.updateColumnSelectionStatus();\n\n return false;\n }\n\n onDown(): EventHandlerResult {\n return this.isActive();\n }\n\n onClick(gridPoint: GridPoint): EventHandlerResult {\n if (!this.isActive()) {\n return false;\n }\n\n const { column } = gridPoint;\n const tableColumn = this.getTableColumn(column);\n if (tableColumn != null && this.isValidColumn(tableColumn)) {\n this.irisGrid.selectColumn(tableColumn);\n }\n\n return true;\n }\n}\n\nexport default IrisGridColumnSelectMouseHandler;\n"],"mappings":"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"}
@@ -51,7 +51,7 @@ declare class IrisGridContextMenuHandler extends GridMouseHandler {
51
51
  componentWillUnmount(): void;
52
52
  dh: DhType;
53
53
  getHeaderActions(modelIndex: ModelIndex, gridPoint: GridPoint): ContextAction[];
54
- getCellActions(modelColumn: number | undefined | null, grid: Grid, gridPoint: GridPoint): ContextAction[];
54
+ getCellActions(modelColumn: ModelIndex, grid: Grid, gridPoint: GridPoint): ContextAction[];
55
55
  /**
56
56
  * Gets an equality filter for the provided numeric value
57
57
  * @param column The column to make the filter for
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":[],"mappings":"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"}
@@ -253,7 +253,6 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
253
253
  return actions;
254
254
  }
255
255
  getCellActions(modelColumn, grid, gridPoint) {
256
- assertNotNull(modelColumn);
257
256
  var {
258
257
  dh,
259
258
  irisGrid
@@ -271,9 +270,14 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
271
270
  } = model;
272
271
  var modelRow = irisGrid.getModelRow(rowIndex);
273
272
  assertNotNull(modelRow);
274
- var value = model.valueForCell(modelColumn, modelRow);
275
- var valueText = model.textForCell(modelColumn, modelRow);
276
- var column = columns[modelColumn];
273
+ var sourceCell = model.sourceForCell(modelColumn, modelRow);
274
+ var {
275
+ column: sourceColumn,
276
+ row: sourceRow
277
+ } = sourceCell;
278
+ var value = model.valueForCell(sourceColumn, sourceRow);
279
+ var valueText = model.textForCell(sourceColumn, sourceRow);
280
+ var column = columns[sourceColumn];
277
281
  var actions = [];
278
282
  var {
279
283
  quickFilters
@@ -300,7 +304,7 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
300
304
  if (column == null || rowIndex == null) return actions;
301
305
 
302
306
  // grid data area context menu options
303
- if (model.isFilterable(modelColumn)) {
307
+ if (model.isFilterable(sourceColumn)) {
304
308
  // cell data area contextmenu options
305
309
  var filterMenu = {
306
310
  title: 'Filter by Value',
@@ -312,10 +316,10 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
312
316
  };
313
317
  if (value == null) {
314
318
  // null gets a special menu
315
- if (quickFilters.get(modelColumn)) {
319
+ if (quickFilters.get(sourceColumn)) {
316
320
  filterMenu.actions.push({
317
321
  title: 'And',
318
- actions: this.nullFilterActions(column, quickFilters.get(modelColumn), '&&'),
322
+ actions: this.nullFilterActions(column, quickFilters.get(sourceColumn), '&&'),
319
323
  order: 2,
320
324
  group: ContextActions.groups.high
321
325
  });
@@ -323,10 +327,10 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
323
327
  filterMenu.actions.push(...this.nullFilterActions(column));
324
328
  } else if (value === '') {
325
329
  // empty string gets a special menu
326
- if (quickFilters.get(modelColumn)) {
330
+ if (quickFilters.get(sourceColumn)) {
327
331
  filterMenu.actions.push({
328
332
  title: 'And',
329
- actions: this.emptyStringFilterActions(column, quickFilters.get(modelColumn), '&&'),
333
+ actions: this.emptyStringFilterActions(column, quickFilters.get(sourceColumn), '&&'),
330
334
  order: 2,
331
335
  group: ContextActions.groups.high
332
336
  });
@@ -334,10 +338,10 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
334
338
  filterMenu.actions.push(...this.emptyStringFilterActions(column));
335
339
  } else if (TableUtils.isBooleanType(column.type)) {
336
340
  // boolean should have OR condition, and handles it's own null menu options
337
- if (quickFilters.get(modelColumn)) {
341
+ if (quickFilters.get(sourceColumn)) {
338
342
  filterMenu.actions.push({
339
343
  title: 'Or',
340
- actions: this.booleanFilterActions(column, valueText, quickFilters.get(modelColumn), '||'),
344
+ actions: this.booleanFilterActions(column, valueText, quickFilters.get(sourceColumn), '||'),
341
345
  order: 2,
342
346
  group: ContextActions.groups.high
343
347
  });
@@ -345,36 +349,36 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
345
349
  filterMenu.actions.push(...this.booleanFilterActions(column, valueText));
346
350
  } else if (TableUtils.isNumberType(column.type) || TableUtils.isCharType(column.type)) {
347
351
  // Chars get treated like numbers in terms of which filters are available
348
- assertNotNull(modelColumn);
352
+ assertNotNull(sourceColumn);
349
353
  // We want to show the full unformatted value if it's a number, so user knows which value they are matching
350
354
  // If it's a Char we just show the char
351
355
  var numberValueText = TableUtils.isCharType(column.type) ? String.fromCharCode(value) : "".concat(value);
352
- if (quickFilters.get(modelColumn)) {
356
+ if (quickFilters.get(sourceColumn)) {
353
357
  filterMenu.actions.push({
354
358
  title: 'And',
355
- actions: this.numberFilterActions(column, numberValueText, value, quickFilters.get(modelColumn), '&&'),
359
+ actions: this.numberFilterActions(column, numberValueText, value, quickFilters.get(sourceColumn), '&&'),
356
360
  order: 2,
357
361
  group: ContextActions.groups.high
358
362
  });
359
363
  }
360
- filterMenu.actions.push(...this.numberFilterActions(column, numberValueText, value, quickFilters.get(modelColumn)));
364
+ filterMenu.actions.push(...this.numberFilterActions(column, numberValueText, value, quickFilters.get(sourceColumn)));
361
365
  } else if (TableUtils.isDateType(column.type)) {
362
366
  var dateValueText = dateFilterFormatter.format(value);
363
367
  var previewValue = previewFilterFormatter.format(value);
364
- if (quickFilters.get(modelColumn)) {
368
+ if (quickFilters.get(sourceColumn)) {
365
369
  filterMenu.actions.push({
366
370
  title: 'And',
367
- actions: this.dateFilterActions(column, dateValueText, previewValue, value, quickFilters.get(modelColumn), '&&'),
371
+ actions: this.dateFilterActions(column, dateValueText, previewValue, value, quickFilters.get(sourceColumn), '&&'),
368
372
  order: 2,
369
373
  group: ContextActions.groups.high
370
374
  });
371
375
  }
372
- filterMenu.actions.push(...this.dateFilterActions(column, dateValueText, previewValue, value, quickFilters.get(modelColumn)));
376
+ filterMenu.actions.push(...this.dateFilterActions(column, dateValueText, previewValue, value, quickFilters.get(sourceColumn)));
373
377
  } else {
374
- if (quickFilters.get(modelColumn)) {
378
+ if (quickFilters.get(sourceColumn)) {
375
379
  filterMenu.actions.push({
376
380
  title: 'And',
377
- actions: this.stringFilterActions(column, valueText, value, quickFilters.get(modelColumn), '&&'),
381
+ actions: this.stringFilterActions(column, valueText, value, quickFilters.get(sourceColumn), '&&'),
378
382
  order: 2,
379
383
  group: ContextActions.groups.high
380
384
  });
@@ -387,18 +391,18 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
387
391
  }
388
392
 
389
393
  // Expand/Collapse options
390
- if (isExpandableGridModel(model) && model.isRowExpandable(modelRow)) {
394
+ if (isExpandableGridModel(model) && model.isRowExpandable(sourceRow)) {
391
395
  // If there are grouped columns, then it is a rollup
392
- // For rollups, the column number will be the depth minus one
393
- var expandingColumn = model.groupedColumns.length > 0 ? model.depthForRow(modelRow) - 1 : 0;
394
- var cellValue = model.valueForCell(expandingColumn, modelRow);
395
- var cellText = cellValue == null ? 'null' : model.textForCell(expandingColumn, modelRow);
396
+ // The first column will be the "group" column with the value that should be expanded
397
+ var expandingColumn = 0;
398
+ var cellValue = model.valueForCell(expandingColumn, sourceRow);
399
+ var cellText = cellValue == null ? 'null' : model.textForCell(expandingColumn, sourceRow);
396
400
  actions.push({
397
- title: IrisGridContextMenuHandler.getRowOptionFormatted(model.isRowExpanded(modelRow) ? 'Collapse' : 'Expand', cellText),
401
+ title: IrisGridContextMenuHandler.getRowOptionFormatted(model.isRowExpanded(sourceRow) ? 'Collapse' : 'Expand', cellText),
398
402
  group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,
399
403
  order: 10,
400
404
  action: () => {
401
- model.setRowExpanded(modelRow, !model.isRowExpanded(modelRow));
405
+ model.setRowExpanded(sourceRow, !model.isRowExpanded(sourceRow));
402
406
  }
403
407
  });
404
408
  if (model.isExpandAllAvailable === true) {
@@ -407,7 +411,7 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
407
411
  group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,
408
412
  order: 20,
409
413
  action: () => {
410
- model.setRowExpanded(modelRow, true, true);
414
+ model.setRowExpanded(sourceRow, true, true);
411
415
  }
412
416
  });
413
417
  }
@@ -533,9 +537,14 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
533
537
  } = metrics;
534
538
  var actions = [];
535
539
  if (modelColumn != null && modelRow != null) {
536
- var value = model.valueForCell(modelColumn, modelRow);
537
- var valueText = model.textForCell(modelColumn, modelRow);
538
- var column = columns[modelColumn];
540
+ var sourceCell = model.sourceForCell(modelColumn, modelRow !== null && modelRow !== void 0 ? modelRow : 0);
541
+ var {
542
+ column: sourceColumn,
543
+ row: sourceRow
544
+ } = sourceCell;
545
+ var value = model.valueForCell(sourceColumn, sourceRow);
546
+ var valueText = model.textForCell(sourceColumn, sourceRow);
547
+ var column = columns[sourceColumn];
539
548
  var {
540
549
  onContextMenu
541
550
  } = irisGrid.props;
@@ -552,18 +561,21 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
552
561
  }));
553
562
  }
554
563
  }
555
- if (modelColumn != null && model.isFilterable(modelColumn)) {
556
- // Clear column filter should still be available after last row
557
- // And should be available in both header and body context menus
558
- actions.push({
559
- title: 'Clear Column Filter',
560
- group: IrisGridContextMenuHandler.GROUP_FILTER,
561
- order: 30,
562
- action: () => {
563
- this.irisGrid.removeColumnFilter(modelColumn);
564
- },
565
- disabled: !(quickFilters.has(modelColumn) || advancedFilters.has(modelColumn))
566
- });
564
+ if (modelColumn != null) {
565
+ var clearFilterRange = model.getClearFilterRange(modelColumn);
566
+ if (clearFilterRange != null && clearFilterRange.length > 0) {
567
+ // Clear column filter should still be available after last row
568
+ // And should be available in both header and body context menus
569
+ actions.push({
570
+ title: clearFilterRange[1] - clearFilterRange[0] > 0 ? 'Clear Group Filter' : 'Clear Column Filter',
571
+ group: IrisGridContextMenuHandler.GROUP_FILTER,
572
+ order: 30,
573
+ action: () => {
574
+ this.irisGrid.removeColumnFilter(clearFilterRange);
575
+ },
576
+ disabled: !Array.from(quickFilters.keys()).some(col => col >= clearFilterRange[0] && col <= clearFilterRange[1]) && !Array.from(advancedFilters.keys()).some(col => col >= clearFilterRange[0] && col <= clearFilterRange[1])
577
+ });
578
+ }
567
579
  }
568
580
  if (isFilterBarShown ? y <= gridY : y <= columnHeaderHeight * columnHeaderMaxDepth && columnHeaderDepth === 0) {
569
581
  // grid header context menu options