@deephaven/iris-grid 0.27.1-beta.3 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IrisGrid.d.ts +2 -1
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +75 -48
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +1 -2
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js +0 -18
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +3 -0
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +19 -0
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +9 -4
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTreeTableModel.d.ts +4 -1
- package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
- package/dist/IrisGridTreeTableModel.js +19 -1
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +2 -0
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +53 -3
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +4 -3
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +8 -10
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +2 -2
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +7 -13
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +15 -15
|
@@ -14,6 +14,7 @@ declare class IrisGridTreeTableModel extends IrisGridTableModelTemplate<TreeTabl
|
|
|
14
14
|
snapshot(ranges: GridRange[], includeHeaders?: boolean, formatValue?: (value: unknown, column: Column) => unknown): Promise<unknown[][]>;
|
|
15
15
|
get groupedColumns(): Column[];
|
|
16
16
|
get hasExpandableRows(): boolean;
|
|
17
|
+
get isExpandAllAvailable(): boolean;
|
|
17
18
|
get isChartBuilderAvailable(): boolean;
|
|
18
19
|
get isSelectDistinctAvailable(): boolean;
|
|
19
20
|
get isReversible(): boolean;
|
|
@@ -21,7 +22,9 @@ declare class IrisGridTreeTableModel extends IrisGridTableModelTemplate<TreeTabl
|
|
|
21
22
|
isColumnMovable(column: ModelIndex): boolean;
|
|
22
23
|
isRowExpandable(y: ModelIndex): boolean;
|
|
23
24
|
isRowExpanded(y: ModelIndex): boolean;
|
|
24
|
-
setRowExpanded(y: ModelIndex, isExpanded: boolean): void;
|
|
25
|
+
setRowExpanded(y: ModelIndex, isExpanded: boolean, expandDescendants?: boolean): void;
|
|
26
|
+
expandAll(): void;
|
|
27
|
+
collapseAll(): void;
|
|
25
28
|
depthForRow(y: ModelIndex): ModelIndex;
|
|
26
29
|
getCachedFilterableColumnSet: (columns: Column[], groupedColumns: Column[]) => Set<number>;
|
|
27
30
|
}
|
|
@@ -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,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AAEtE,MAAM,WAAW,SAAU,SAAQ,KAAK;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AACD,cAAM,sBAAuB,SAAQ,0BAA0B,CAC7D,SAAS,EACT,SAAS,CACV;IAGC,qBAAqB,CACnB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EAAE,GAChB,IAAI;IAIP,WAAW,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM;IAajD,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS;IAUxD,QAAQ,CACZ,MAAM,EAAE,SAAS,EAAE,EACnB,cAAc,CAAC,EAAE,OAAO,EACxB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,GACxD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IAgDvB,IAAI,cAAc,IAAI,MAAM,EAAE,CAE7B;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,IAAI,uBAAuB,IAAI,OAAO,CAErC;IAED,IAAI,yBAAyB,IAAI,OAAO,CAEvC;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,YAAY,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO;IAO9C,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IAI5C,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAKvC,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO;IAKrC,cAAc,
|
|
1
|
+
{"version":3,"file":"IrisGridTreeTableModel.d.ts","sourceRoot":"","sources":["../src/IrisGridTreeTableModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AAEtE,MAAM,WAAW,SAAU,SAAQ,KAAK;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AACD,cAAM,sBAAuB,SAAQ,0BAA0B,CAC7D,SAAS,EACT,SAAS,CACV;IAGC,qBAAqB,CACnB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EAAE,GAChB,IAAI;IAIP,WAAW,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM;IAajD,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS;IAUxD,QAAQ,CACZ,MAAM,EAAE,SAAS,EAAE,EACnB,cAAc,CAAC,EAAE,OAAO,EACxB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,GACxD,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IAgDvB,IAAI,cAAc,IAAI,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;CACH;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -84,6 +84,9 @@ class IrisGridTreeTableModel extends IrisGridTableModelTemplate {
|
|
|
84
84
|
get hasExpandableRows() {
|
|
85
85
|
return true;
|
|
86
86
|
}
|
|
87
|
+
get isExpandAllAvailable() {
|
|
88
|
+
return this.table.expandAll !== undefined;
|
|
89
|
+
}
|
|
87
90
|
get isChartBuilderAvailable() {
|
|
88
91
|
return false;
|
|
89
92
|
}
|
|
@@ -110,7 +113,22 @@ class IrisGridTreeTableModel extends IrisGridTableModelTemplate {
|
|
|
110
113
|
return (_row$isExpanded = row === null || row === void 0 ? void 0 : row.isExpanded) !== null && _row$isExpanded !== void 0 ? _row$isExpanded : false;
|
|
111
114
|
}
|
|
112
115
|
setRowExpanded(y, isExpanded) {
|
|
113
|
-
|
|
116
|
+
var expandDescendants = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
117
|
+
if (this.isExpandAllAvailable) {
|
|
118
|
+
this.table.setExpanded(y, isExpanded, expandDescendants);
|
|
119
|
+
} else {
|
|
120
|
+
this.table.setExpanded(y, isExpanded);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
expandAll() {
|
|
124
|
+
if (this.table.expandAll) {
|
|
125
|
+
this.table.expandAll();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
collapseAll() {
|
|
129
|
+
if (this.table.collapseAll) {
|
|
130
|
+
this.table.collapseAll();
|
|
131
|
+
}
|
|
114
132
|
}
|
|
115
133
|
depthForRow(y) {
|
|
116
134
|
var _row$depth;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridTreeTableModel.js","names":["memoize","GridRange","assertNotNull","IrisGridTableModelTemplate","IrisGridTreeTableModel","columns","groupedColumns","Set","length","map","c1","findIndex","c2","name","applyBufferedViewport","viewportTop","viewportBottom","table","setViewport","textForCell","x","y","column","row","hasChildren","constituentType","value","valueForCell","displayString","extractViewportRow","isExpanded","depth","snapshot","ranges","includeHeaders","formatValue","viewport","viewportData","result","push","c","viewportRange","offset","rows","i","intersection","startRow","endRow","r","resultRow","viewportRow","startColumn","endColumn","data","get","hasExpandableRows","isChartBuilderAvailable","isSelectDistinctAvailable","isReversible","isFilterable","columnIndex","getCachedFilterableColumnSet","has","isColumnMovable","isRowExpandable","isRowExpanded","setRowExpanded","setExpanded","depthForRow"],"sources":["../src/IrisGridTreeTableModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport { GridRange, ModelIndex } from '@deephaven/grid';\nimport { Column, TreeRow, TreeTable } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport { UIRow } 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 }\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 = this.viewportData.rows[\n r - this.viewportData.offset\n ];\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 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(y: ModelIndex, isExpanded: boolean): void {\n this.table.setExpanded(y, isExpanded);\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\nexport default IrisGridTreeTableModel;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"IrisGridTreeTableModel.js","names":["memoize","GridRange","assertNotNull","IrisGridTableModelTemplate","IrisGridTreeTableModel","columns","groupedColumns","Set","length","map","c1","findIndex","c2","name","applyBufferedViewport","viewportTop","viewportBottom","table","setViewport","textForCell","x","y","column","row","hasChildren","constituentType","value","valueForCell","displayString","extractViewportRow","isExpanded","depth","snapshot","ranges","includeHeaders","formatValue","viewport","viewportData","result","push","c","viewportRange","offset","rows","i","intersection","startRow","endRow","r","resultRow","viewportRow","startColumn","endColumn","data","get","hasExpandableRows","isExpandAllAvailable","expandAll","undefined","isChartBuilderAvailable","isSelectDistinctAvailable","isReversible","isFilterable","columnIndex","getCachedFilterableColumnSet","has","isColumnMovable","isRowExpandable","isRowExpanded","setRowExpanded","expandDescendants","setExpanded","collapseAll","depthForRow"],"sources":["../src/IrisGridTreeTableModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport { GridRange, ModelIndex } from '@deephaven/grid';\nimport { Column, TreeRow, TreeTable } from '@deephaven/jsapi-shim';\nimport { assertNotNull } from '@deephaven/utils';\nimport { UIRow } 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 }\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 = this.viewportData.rows[\n r - this.viewportData.offset\n ];\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\nexport default IrisGridTreeTableModel;\n"],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ declare class IrisGridContextMenuHandler extends GridMouseHandler {
|
|
|
14
14
|
static GROUP_EDIT: number;
|
|
15
15
|
static GROUP_HIDE_COLUMNS: number;
|
|
16
16
|
static GROUP_FILTER: number;
|
|
17
|
+
static GROUP_EXPAND_COLLAPSE: number;
|
|
17
18
|
static GROUP_GOTO: number;
|
|
18
19
|
static GROUP_SORT: number;
|
|
19
20
|
static GROUP_COPY: number;
|
|
@@ -49,6 +50,7 @@ declare class IrisGridContextMenuHandler extends GridMouseHandler {
|
|
|
49
50
|
*/
|
|
50
51
|
static getNumberValueEqualsFilter(column: Column, value: number): FilterCondition;
|
|
51
52
|
static getFilterValueForNumberOrChar(columnType: string, value: unknown): FilterValue;
|
|
53
|
+
static getRowOptionFormatted(command: string, cellValue: string, len?: number): string;
|
|
52
54
|
irisGrid: IrisGrid;
|
|
53
55
|
debouncedUpdateCustomFormat: DebouncedFunc<(modelIndex: number, selectedFormat: TableColumnFormat | null) => void>;
|
|
54
56
|
constructor(irisGrid: IrisGrid);
|
|
@@ -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,EAId,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,IAAI,EACJ,gBAAgB,EAChB,SAAS,
|
|
1
|
+
{"version":3,"file":"IrisGridContextMenuHandler.d.ts","sourceRoot":"","sources":["../../src/mousehandlers/IrisGridContextMenuHandler.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
|
9
9
|
import { dhFilterFilled, vsRemove, vsCheck, vsFilter } from '@deephaven/icons';
|
|
10
10
|
import debounce from 'lodash.debounce';
|
|
11
11
|
import { ContextActions, ContextActionUtils, GLOBAL_SHORTCUTS } from '@deephaven/components';
|
|
12
|
-
import { GridMouseHandler, isEditableGridModel } from '@deephaven/grid';
|
|
12
|
+
import { GridMouseHandler, GridRenderer, isEditableGridModel, isExpandableGridModel } from '@deephaven/grid';
|
|
13
13
|
import dh from '@deephaven/jsapi-shim';
|
|
14
14
|
import { TableColumnFormatter, DateTimeColumnFormatter, TableUtils } from '@deephaven/jsapi-utils';
|
|
15
15
|
import Log from '@deephaven/log';
|
|
@@ -81,6 +81,10 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
|
|
|
81
81
|
static getFilterValueForNumberOrChar(columnType, value) {
|
|
82
82
|
return TableUtils.isCharType(columnType) ? dh.FilterValue.ofString(String.fromCharCode(value)) : dh.FilterValue.ofNumber(value);
|
|
83
83
|
}
|
|
84
|
+
static getRowOptionFormatted(command, cellValue) {
|
|
85
|
+
var len = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 30;
|
|
86
|
+
return "".concat(command, " \"").concat(GridRenderer.truncate(cellValue, len - command.length - 3), "\"");
|
|
87
|
+
}
|
|
84
88
|
constructor(irisGrid) {
|
|
85
89
|
super();
|
|
86
90
|
_defineProperty(this, "irisGrid", void 0);
|
|
@@ -316,7 +320,7 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
|
|
|
316
320
|
if (model.isFilterable(modelColumn)) {
|
|
317
321
|
// cell data area contextmenu options
|
|
318
322
|
var filterMenu = {
|
|
319
|
-
title: 'Filter
|
|
323
|
+
title: 'Filter by Value',
|
|
320
324
|
icon: vsRemove,
|
|
321
325
|
iconColor: filterIconColor,
|
|
322
326
|
group: IrisGridContextMenuHandler.GROUP_FILTER,
|
|
@@ -386,6 +390,51 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
|
|
|
386
390
|
actions.push(filterMenu);
|
|
387
391
|
}
|
|
388
392
|
}
|
|
393
|
+
|
|
394
|
+
// Expand/Collapse options
|
|
395
|
+
if (isExpandableGridModel(model) && model.isRowExpandable(modelRow)) {
|
|
396
|
+
// If there are grouped columns, then it is a rollup
|
|
397
|
+
// For rollups, the column number will be the depth minus one
|
|
398
|
+
var expandingColumn = model.groupedColumns.length > 0 ? model.depthForRow(modelRow) - 1 : 0;
|
|
399
|
+
var cellValue = model.valueForCell(expandingColumn, modelRow);
|
|
400
|
+
var cellText = cellValue == null ? 'null' : model.textForCell(expandingColumn, modelRow);
|
|
401
|
+
actions.push({
|
|
402
|
+
title: IrisGridContextMenuHandler.getRowOptionFormatted(model.isRowExpanded(modelRow) ? 'Collapse' : 'Expand', cellText),
|
|
403
|
+
group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,
|
|
404
|
+
order: 10,
|
|
405
|
+
action: () => {
|
|
406
|
+
model.setRowExpanded(modelRow, !model.isRowExpanded(modelRow));
|
|
407
|
+
}
|
|
408
|
+
});
|
|
409
|
+
if (model.isExpandAllAvailable === true) {
|
|
410
|
+
actions.push({
|
|
411
|
+
title: IrisGridContextMenuHandler.getRowOptionFormatted('Expand All in', cellText),
|
|
412
|
+
group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,
|
|
413
|
+
order: 20,
|
|
414
|
+
action: () => {
|
|
415
|
+
model.setRowExpanded(modelRow, true, true);
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
if (isExpandableGridModel(model) && model.hasExpandableRows && model.isExpandAllAvailable === true) {
|
|
421
|
+
actions.push({
|
|
422
|
+
title: 'Expand Entire Table',
|
|
423
|
+
group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,
|
|
424
|
+
order: 30,
|
|
425
|
+
action: () => {
|
|
426
|
+
model.expandAll();
|
|
427
|
+
}
|
|
428
|
+
});
|
|
429
|
+
actions.push({
|
|
430
|
+
title: 'Collapse Entire Table',
|
|
431
|
+
group: IrisGridContextMenuHandler.GROUP_EXPAND_COLLAPSE,
|
|
432
|
+
order: 40,
|
|
433
|
+
action: () => {
|
|
434
|
+
model.collapseAll();
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
}
|
|
389
438
|
var gotoRow = {
|
|
390
439
|
title: 'Go to',
|
|
391
440
|
iconColor: filterIconColor,
|
|
@@ -1072,7 +1121,8 @@ class IrisGridContextMenuHandler extends GridMouseHandler {
|
|
|
1072
1121
|
_defineProperty(IrisGridContextMenuHandler, "GROUP_EDIT", ContextActions.groups.high + 10);
|
|
1073
1122
|
_defineProperty(IrisGridContextMenuHandler, "GROUP_HIDE_COLUMNS", ContextActions.groups.high + 25);
|
|
1074
1123
|
_defineProperty(IrisGridContextMenuHandler, "GROUP_FILTER", ContextActions.groups.high + 50);
|
|
1075
|
-
_defineProperty(IrisGridContextMenuHandler, "
|
|
1124
|
+
_defineProperty(IrisGridContextMenuHandler, "GROUP_EXPAND_COLLAPSE", ContextActions.groups.high + 55);
|
|
1125
|
+
_defineProperty(IrisGridContextMenuHandler, "GROUP_GOTO", ContextActions.groups.high + 60);
|
|
1076
1126
|
_defineProperty(IrisGridContextMenuHandler, "GROUP_SORT", ContextActions.groups.high + 75);
|
|
1077
1127
|
_defineProperty(IrisGridContextMenuHandler, "GROUP_COPY", ContextActions.groups.high + 100);
|
|
1078
1128
|
_defineProperty(IrisGridContextMenuHandler, "GROUP_FORMAT", ContextActions.groups.high + 150);
|