@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.
- package/dist/ColumnStatistics.d.ts +4 -4
- package/dist/ColumnStatistics.d.ts.map +1 -1
- package/dist/ColumnStatistics.js +4 -2
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CrossColumnSearch.d.ts +2 -1
- package/dist/CrossColumnSearch.d.ts.map +1 -1
- package/dist/CrossColumnSearch.js +11 -8
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/IrisGrid.d.ts +2 -2
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +12 -3
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridModel.d.ts +41 -13
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +47 -7
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +2 -0
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +6 -0
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +10 -12
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +35 -34
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +14 -4
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridTreeTableModel.js +89 -10
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +55 -43
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts +2 -2
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.d.ts +5 -5
- package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +3 -2
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +13 -3
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- 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
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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":";;;;;;;AAAA;AACA,OAAOA,OAAO,MAAM,aAAa;AACjC,SAASC,SAAS,QAAoB,iBAAiB;AAEvD,SAASC,aAAa,QAAQ,kBAAkB;AAAC,OAE1CC,0BAA0B;AAOjC,MAAMC,sBAAsB,SAASD,0BAA0B,CAG7D;EAAAE,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,uCAwK+BP,OAAO,CACpC,CAACQ,OAAiB,EAAEC,cAAwB,KAC1C,IAAIC,GAAG,CACL,CAAC,CAAAD,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAEE,MAAM,IAAG,CAAC,GAAGF,cAAc,GAAGD,OAAO,EAAEI,GAAG,CAACC,EAAE,IAC5DL,OAAO,CAACM,SAAS,CAACC,EAAE,IAAIF,EAAE,CAACG,IAAI,KAAKD,EAAE,CAACC,IAAI,CAC7C,CACF,CACJ,CAAC;IAAAT,eAAA,oCAE2BP,OAAO,CAChCS,cAAiC,IAChC,IAAIC,GAAG,CACLD,cAAc,CAACG,GAAG,CAACC,EAAE,IACnB,IAAI,CAACL,OAAO,CAACM,SAAS,CAACC,EAAE,IAAIF,EAAE,CAACG,IAAI,KAAKD,EAAE,CAACC,IAAI,CAClD,CACF,CACJ,CAAC;EAAA;EAvLD;;EAEAC,qBAAqBA,CACnBC,WAAmB,EACnBC,cAAsB,EACtBX,OAAiB,EACX;IACN,IAAI,CAACY,KAAK,CAACC,WAAW,CAACH,WAAW,EAAEC,cAAc,EAAEX,OAAO,CAAC;EAC9D;EAEAc,WAAWA,CAACC,CAAa,EAAEC,CAAa,EAAU;IAChD,IAAMC,MAAM,GAAG,IAAI,CAACjB,OAAO,CAACe,CAAC,CAAC;IAC9B,IAAMG,GAAG,GAAG,IAAI,CAACA,GAAG,CAACF,CAAC,CAAC;IACvB,IAAIE,GAAG,IAAI,IAAI,IAAID,MAAM,IAAI,IAAI,EAAE;MACjC,IAAI,CAACC,GAAG,CAACC,WAAW,IAAIF,MAAM,CAACG,eAAe,IAAI,IAAI,EAAE;QACtD,IAAMC,MAAK,GAAG,IAAI,CAACC,YAAY,CAACP,CAAC,EAAEC,CAAC,CAAC;QACrC,OAAO,IAAI,CAACO,aAAa,CAACF,MAAK,EAAEJ,MAAM,CAACG,eAAe,EAAEH,MAAM,CAACT,IAAI,CAAC;MACvE;MACA;MACA,IACEU,GAAG,CAACC,WAAW,IACfD,GAAG,CAACM,KAAK,IAAIT,CAAC,GAAG,CAAC,IAClB,IAAI,CAACO,YAAY,CAACP,CAAC,EAAEC,CAAC,CAAC,KAAK,IAAI,IAChC,IAAI,CAACS,yBAAyB,CAAC,IAAI,CAACxB,cAAc,CAAC,CAACyB,GAAG,CAACX,CAAC,CAAC,EAC1D;QACA,OAAO,EAAE;MACX;IACF;IAEA,OAAO,KAAK,CAACD,WAAW,CAACC,CAAC,EAAEC,CAAC,CAAC;EAChC;EAEAW,kBAAkBA,CAACT,GAAY,EAAElB,OAAiB,EAAa;IAC7D,IAAM;MAAE4B,UAAU;MAAET,WAAW;MAAEK;IAAM,CAAC,GAAGN,GAAG;IAC9C,OAAAW,aAAA,CAAAA,aAAA,KACK,KAAK,CAACF,kBAAkB,CAACT,GAAG,EAAElB,OAAO,CAAC;MACzC4B,UAAU;MACVT,WAAW;MACXK;IAAK;EAET;EAEMM,QAAQA,CACZC,MAAmB,EACnBC,cAAwB,EACxBC,WAAyD,EACnC;IAAA,IAAAC,KAAA;IAAA,OAAAC,iBAAA;MAAA,IAAAC,kBAAA;MACtB1C,aAAa,CAACwC,KAAI,CAACG,QAAQ,CAAC;MAC5B3C,aAAa,CAACwC,KAAI,CAACI,YAAY,CAAC;MAChC,IAAM;QAAEtC;MAAQ,CAAC,GAAGkC,KAAI,CAACG,QAAQ;MACjC,IAAME,MAAM,GAAG,EAAE;MAEjB,IAAIP,cAAc,IAAI,IAAI,IAAIA,cAAc,EAAE;QAC5CO,MAAM,CAACC,IAAI,CAACxC,OAAO,CAACI,GAAG,CAACqC,CAAC,IAAIA,CAAC,CAACjC,IAAI,CAAC,CAAC;MACvC;MAEA,IAAMkC,aAAa,GAAG,IAAIjD,SAAS,CACjC,CAAC,GAAA2C,kBAAA,GACDF,KAAI,CAACI,YAAY,cAAAF,kBAAA,uBAAjBA,kBAAA,CAAmBO,MAAM,EACzB3C,OAAO,CAACG,MAAM,EACd+B,KAAI,CAACI,YAAY,CAACK,MAAM,GAAGT,KAAI,CAACI,YAAY,CAACM,IAAI,CAACzC,MACpD,CAAC;MAED,KAAK,IAAI0C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGd,MAAM,CAAC5B,MAAM,EAAE0C,CAAC,IAAI,CAAC,EAAE;QACzC,IAAMC,YAAY,GAAGrD,SAAS,CAACqD,YAAY,CAACJ,aAAa,EAAEX,MAAM,CAACc,CAAC,CAAC,CAAC;QAErEnD,aAAa,CAACoD,YAAY,CAAC;QAC3BpD,aAAa,CAACoD,YAAY,CAACC,QAAQ,CAAC;QACpCrD,aAAa,CAACoD,YAAY,CAACE,MAAM,CAAC;QAElC,KAAK,IAAIC,CAAC,GAAGH,YAAY,CAACC,QAAQ,EAAEE,CAAC,IAAIH,YAAY,CAACE,MAAM,EAAEC,CAAC,IAAI,CAAC,EAAE;UACpE,IAAMC,SAAS,GAAG,EAAE;UACpB,IAAMC,WAAW,GACfjB,KAAI,CAACI,YAAY,CAACM,IAAI,CAACK,CAAC,GAAGf,KAAI,CAACI,YAAY,CAACK,MAAM,CAAC;UACtDjD,aAAa,CAACoD,YAAY,CAACM,WAAW,CAAC;UACvC1D,aAAa,CAACoD,YAAY,CAACO,SAAS,CAAC;UACrC,KACE,IAAIZ,CAAC,GAAGK,YAAY,CAACM,WAAW,EAChCX,CAAC,IAAIK,YAAY,CAACO,SAAS,EAC3BZ,CAAC,IAAI,CAAC,EACN;YAAA,IAAAa,qBAAA;YACA5D,aAAa,CAACuC,WAAW,CAAC;YAC1BiB,SAAS,CAACV,IAAI,CACZP,WAAW,EAAAqB,qBAAA,GAACH,WAAW,CAACI,IAAI,CAACC,GAAG,CAACf,CAAC,CAAC,cAAAa,qBAAA,uBAAvBA,qBAAA,CAAyBjC,KAAK,EAAEa,KAAI,CAAClC,OAAO,CAACyC,CAAC,CAAC,CAC7D,CAAC;UACH;UACAF,MAAM,CAACC,IAAI,CAACU,SAAS,CAAC;QACxB;MACF;MAEA,OAAOX,MAAM;IAAC;EAChB;EAEA,IAAItC,cAAcA,CAAA,EAAa;IAC7B,OAAO,IAAI,CAACW,KAAK,CAACX,cAAc;EAClC;EAEA,IAAIwD,iBAAiBA,CAAA,EAAY;IAC/B,OAAO,IAAI;EACb;EAEA,IAAIC,oBAAoBA,CAAA,EAAY;IAClC,OAAO,IAAI,CAAC9C,KAAK,CAAC+C,SAAS,KAAKC,SAAS;EAC3C;EAEA,IAAIC,uBAAuBA,CAAA,EAAY;IACrC,OAAO,KAAK;EACd;EAEA,IAAIC,yBAAyBA,CAAA,EAAY;IACvC,OAAO,KAAK;EACd;EAEA,IAAIC,YAAYA,CAAA,EAAY;IAC1B,OAAO,KAAK;EACd;EAEAC,YAAYA,CAACC,WAAuB,EAAW;IAC7C,OAAO,IAAI,CAACC,4BAA4B,CACtC,IAAI,CAAClE,OAAO,EACZ,IAAI,CAACC,cACP,CAAC,CAACyB,GAAG,CAACuC,WAAW,CAAC;EACpB;EAEAE,eAAeA,CAAClD,MAAkB,EAAW;IAC3C,OAAOA,MAAM,IAAI,IAAI,CAAChB,cAAc,CAACE,MAAM;EAC7C;EAEAiE,eAAeA,CAACpD,CAAa,EAAW;IAAA,IAAAqD,gBAAA;IACtC,IAAMnD,GAAG,GAAG,IAAI,CAACA,GAAG,CAACF,CAAC,CAAC;IACvB,QAAAqD,gBAAA,GAAOnD,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEC,WAAW,cAAAkD,gBAAA,cAAAA,gBAAA,GAAI,KAAK;EAClC;EAEAC,aAAaA,CAACtD,CAAa,EAAW;IAAA,IAAAuD,eAAA;IACpC,IAAMrD,GAAG,GAAG,IAAI,CAACA,GAAG,CAACF,CAAC,CAAC;IACvB,QAAAuD,eAAA,GAAOrD,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEU,UAAU,cAAA2C,eAAA,cAAAA,eAAA,GAAI,KAAK;EACjC;EAEAC,cAAcA,CACZxD,CAAa,EACbY,UAAmB,EAEb;IAAA,IADN6C,iBAAiB,GAAA3E,SAAA,CAAAK,MAAA,QAAAL,SAAA,QAAA8D,SAAA,GAAA9D,SAAA,MAAG,KAAK;IAEzB,IAAI,IAAI,CAAC4D,oBAAoB,EAAE;MAC7B,IAAI,CAAC9C,KAAK,CAAC8D,WAAW,CAAC1D,CAAC,EAAEY,UAAU,EAAE6C,iBAAiB,CAAC;IAC1D,CAAC,MAAM;MACL,IAAI,CAAC7D,KAAK,CAAC8D,WAAW,CAAC1D,CAAC,EAAEY,UAAU,CAAC;IACvC;EACF;EAEA+B,SAASA,CAAA,EAAS;IAChB,IAAI,IAAI,CAAC/C,KAAK,CAAC+C,SAAS,EAAE;MACxB,IAAI,CAAC/C,KAAK,CAAC+C,SAAS,CAAC,CAAC;IACxB;EACF;EAEAgB,WAAWA,CAAA,EAAS;IAClB,IAAI,IAAI,CAAC/D,KAAK,CAAC+D,WAAW,EAAE;MAC1B,IAAI,CAAC/D,KAAK,CAAC+D,WAAW,CAAC,CAAC;IAC1B;EACF;EAEAC,WAAWA,CAAC5D,CAAa,EAAc;IAAA,IAAA6D,UAAA;IACrC,IAAM3D,GAAG,GAAG,IAAI,CAACA,GAAG,CAACF,CAAC,CAAC;IACvB,OAAO,EAAA6D,UAAA,GAAC3D,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEM,KAAK,cAAAqD,UAAA,cAAAA,UAAA,GAAI,CAAC,IAAI,CAAC;EAC9B;EAoBAC,mBAAmBA,CAAC9E,OAAqB,EAAQ;IAC/C,IAAIA,OAAO,CAACG,MAAM,GAAG,CAAC,EAAE;MACtB,MAAM,IAAI4E,KAAK,CAAC,uCAAuC,CAAC;IAC1D;EACF;AACF;AAEA,eAAenF,sBAAsB"}
|
|
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;
|
|
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"}
|
|
@@ -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:
|
|
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:
|
|
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":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,EACL,aAAa,EAKd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,IAAI,EACJ,gBAAgB,EAChB,SAAS,EAIT,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EACV,MAAM,EACN,EAAE,IAAI,MAAM,EACZ,eAAe,EACf,WAAW,EACX,IAAI,EACL,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAIL,iBAAiB,EAEjB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAO5C,OAAO,mCAAmC,CAAC;AAE3C,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAO7C;;GAEG;AACH,cAAM,0BAA2B,SAAQ,gBAAgB;IACvD,MAAM,CAAC,UAAU,SAAmC;IAEpD,MAAM,CAAC,kBAAkB,SAAmC;IAE5D,MAAM,CAAC,YAAY,SAAmC;IAEtD,MAAM,CAAC,qBAAqB,SAAmC;IAE/D,MAAM,CAAC,UAAU,SAAmC;IAEpD,MAAM,CAAC,UAAU,SAAmC;IAEpD,MAAM,CAAC,UAAU,SAAoC;IAErD,MAAM,CAAC,YAAY,SAAoC;IAEvD,MAAM,CAAC,mBAAmB,SAAoC;IAE9D,MAAM,CAAC,qBAAqB;;;;MAIjB;IAEX;;;;;;OAMG;IACH,MAAM,CAAC,uBAAuB,CAC5B,YAAY,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EAChD,eAAe,EAAE,eAAe,EAChC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAC5B,eAAe;IAUlB;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CACvB,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAC5B,MAAM;IAMT;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI;IAI7D,MAAM,CAAC,qBAAqB,CAC1B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,SAAK,GACP,MAAM;IAOT,QAAQ,EAAE,QAAQ,CAAC;IAEnB,2BAA2B,EAAE,aAAa,CACxC,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CACvE,CAAC;gBAEU,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM;IAY1C,oBAAoB,IAAI,IAAI;IAI5B,EAAE,EAAE,MAAM,CAAC;IAEX,gBAAgB,CACd,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,GACnB,aAAa,EAAE;IA+LlB,cAAc,CACZ,WAAW,EAAE,
|
|
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
|
|
275
|
-
var
|
|
276
|
-
|
|
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(
|
|
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(
|
|
319
|
+
if (quickFilters.get(sourceColumn)) {
|
|
316
320
|
filterMenu.actions.push({
|
|
317
321
|
title: 'And',
|
|
318
|
-
actions: this.nullFilterActions(column, quickFilters.get(
|
|
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(
|
|
330
|
+
if (quickFilters.get(sourceColumn)) {
|
|
327
331
|
filterMenu.actions.push({
|
|
328
332
|
title: 'And',
|
|
329
|
-
actions: this.emptyStringFilterActions(column, quickFilters.get(
|
|
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(
|
|
341
|
+
if (quickFilters.get(sourceColumn)) {
|
|
338
342
|
filterMenu.actions.push({
|
|
339
343
|
title: 'Or',
|
|
340
|
-
actions: this.booleanFilterActions(column, valueText, quickFilters.get(
|
|
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(
|
|
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(
|
|
356
|
+
if (quickFilters.get(sourceColumn)) {
|
|
353
357
|
filterMenu.actions.push({
|
|
354
358
|
title: 'And',
|
|
355
|
-
actions: this.numberFilterActions(column, numberValueText, value, quickFilters.get(
|
|
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(
|
|
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(
|
|
368
|
+
if (quickFilters.get(sourceColumn)) {
|
|
365
369
|
filterMenu.actions.push({
|
|
366
370
|
title: 'And',
|
|
367
|
-
actions: this.dateFilterActions(column, dateValueText, previewValue, value, quickFilters.get(
|
|
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(
|
|
376
|
+
filterMenu.actions.push(...this.dateFilterActions(column, dateValueText, previewValue, value, quickFilters.get(sourceColumn)));
|
|
373
377
|
} else {
|
|
374
|
-
if (quickFilters.get(
|
|
378
|
+
if (quickFilters.get(sourceColumn)) {
|
|
375
379
|
filterMenu.actions.push({
|
|
376
380
|
title: 'And',
|
|
377
|
-
actions: this.stringFilterActions(column, valueText, value, quickFilters.get(
|
|
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(
|
|
394
|
+
if (isExpandableGridModel(model) && model.isRowExpandable(sourceRow)) {
|
|
391
395
|
// If there are grouped columns, then it is a rollup
|
|
392
|
-
//
|
|
393
|
-
var expandingColumn =
|
|
394
|
-
var cellValue = model.valueForCell(expandingColumn,
|
|
395
|
-
var cellText = cellValue == null ? 'null' : model.textForCell(expandingColumn,
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
537
|
-
var
|
|
538
|
-
|
|
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
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
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
|