@deephaven/iris-grid 0.41.2 → 0.41.4

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.
@@ -27,6 +27,7 @@ declare class IrisGridTreeTableModel extends IrisGridTableModelTemplate<TreeTabl
27
27
  collapseAll(): void;
28
28
  depthForRow(y: ModelIndex): ModelIndex;
29
29
  getCachedFilterableColumnSet: (columns: Column[], groupedColumns: Column[]) => Set<number>;
30
+ getCachedGroupedColumnSet: (groupedColumns: readonly Column[]) => Set<number>;
30
31
  updateFrozenColumns(columns: ColumnName[]): void;
31
32
  }
32
33
  export default IrisGridTreeTableModel;
@@ -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;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;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":"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;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;IAEF,yBAAyB,mBACN,SAAS,MAAM,EAAE,iBAMlC;IAEF,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;CAKjD;AAED,eAAe,sBAAsB,CAAC"}
@@ -14,6 +14,7 @@ class IrisGridTreeTableModel extends IrisGridTableModelTemplate {
14
14
  constructor() {
15
15
  super(...arguments);
16
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
+ _defineProperty(this, "getCachedGroupedColumnSet", memoize(groupedColumns => new Set(groupedColumns.map(c1 => this.columns.findIndex(c2 => c1.name === c2.name)))));
17
18
  }
18
19
  // table: TreeTable
19
20
 
@@ -28,6 +29,10 @@ class IrisGridTreeTableModel extends IrisGridTableModelTemplate {
28
29
  var _value = this.valueForCell(x, y);
29
30
  return this.displayString(_value, column.constituentType, column.name);
30
31
  }
32
+ // Show empty string instead of null in rollup grouping columns (issue #1483)
33
+ if (row.hasChildren && row.depth <= x + 1 && this.valueForCell(x, y) === null && this.getCachedGroupedColumnSet(this.groupedColumns).has(x)) {
34
+ return '';
35
+ }
31
36
  }
32
37
  return super.textForCell(x, y);
33
38
  }
@@ -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","isExpandAllAvailable","expandAll","undefined","isChartBuilderAvailable","isSelectDistinctAvailable","isReversible","isFilterable","columnIndex","getCachedFilterableColumnSet","has","isColumnMovable","isRowExpandable","isRowExpanded","setRowExpanded","expandDescendants","setExpanded","collapseAll","depthForRow","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 }\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 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;EAAA;IAAA;IAAA,sDAgK+BH,OAAO,CACpC,CAACK,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,CAAC,CAC7C,CACF,CACJ;EAAA;EAtKD;;EAEAC,qBAAqB,CACnBC,WAAmB,EACnBC,cAAsB,EACtBX,OAAiB,EACX;IACN,IAAI,CAACY,KAAK,CAACC,WAAW,CAACH,WAAW,EAAEC,cAAc,EAAEX,OAAO,CAAC;EAC9D;EAEAc,WAAW,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;IACF;IAEA,OAAO,KAAK,CAACM,WAAW,CAACC,CAAC,EAAEC,CAAC,CAAC;EAChC;EAEAQ,kBAAkB,CAACN,GAAY,EAAElB,OAAiB,EAAa;IAC7D,IAAM;MAAEyB,UAAU;MAAEN,WAAW;MAAEO;IAAM,CAAC,GAAGR,GAAG;IAC9C,uCACK,KAAK,CAACM,kBAAkB,CAACN,GAAG,EAAElB,OAAO,CAAC;MACzCyB,UAAU;MACVN,WAAW;MACXO;IAAK;EAET;EAEMC,QAAQ,CACZC,MAAmB,EACnBC,cAAwB,EACxBC,WAAyD,EACnC;IAAA;IAAA;MAAA;MACtBjC,aAAa,CAAC,KAAI,CAACkC,QAAQ,CAAC;MAC5BlC,aAAa,CAAC,KAAI,CAACmC,YAAY,CAAC;MAChC,IAAM;QAAEhC;MAAQ,CAAC,GAAG,KAAI,CAAC+B,QAAQ;MACjC,IAAME,MAAM,GAAG,EAAE;MAEjB,IAAIJ,cAAc,IAAI,IAAI,IAAIA,cAAc,EAAE;QAC5CI,MAAM,CAACC,IAAI,CAAClC,OAAO,CAACI,GAAG,CAAC+B,CAAC,IAAIA,CAAC,CAAC3B,IAAI,CAAC,CAAC;MACvC;MAEA,IAAM4B,aAAa,GAAG,IAAIxC,SAAS,CACjC,CAAC,wBACD,KAAI,CAACoC,YAAY,uDAAjB,mBAAmBK,MAAM,EACzBrC,OAAO,CAACG,MAAM,EACd,KAAI,CAAC6B,YAAY,CAACK,MAAM,GAAG,KAAI,CAACL,YAAY,CAACM,IAAI,CAACnC,MAAM,CACzD;MAED,KAAK,IAAIoC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGX,MAAM,CAACzB,MAAM,EAAEoC,CAAC,IAAI,CAAC,EAAE;QACzC,IAAMC,YAAY,GAAG5C,SAAS,CAAC4C,YAAY,CAACJ,aAAa,EAAER,MAAM,CAACW,CAAC,CAAC,CAAC;QAErE1C,aAAa,CAAC2C,YAAY,CAAC;QAC3B3C,aAAa,CAAC2C,YAAY,CAACC,QAAQ,CAAC;QACpC5C,aAAa,CAAC2C,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,GAAG,KAAI,CAACb,YAAY,CAACM,IAAI,CACxCK,CAAC,GAAG,KAAI,CAACX,YAAY,CAACK,MAAM,CAC7B;UACDxC,aAAa,CAAC2C,YAAY,CAACM,WAAW,CAAC;UACvCjD,aAAa,CAAC2C,YAAY,CAACO,SAAS,CAAC;UACrC,KACE,IAAIZ,CAAC,GAAGK,YAAY,CAACM,WAAW,EAChCX,CAAC,IAAIK,YAAY,CAACO,SAAS,EAC3BZ,CAAC,IAAI,CAAC,EACN;YAAA;YACAtC,aAAa,CAACiC,WAAW,CAAC;YAC1Bc,SAAS,CAACV,IAAI,CACZJ,WAAW,0BAACe,WAAW,CAACG,IAAI,CAACC,GAAG,CAACd,CAAC,CAAC,0DAAvB,sBAAyBd,KAAK,EAAE,KAAI,CAACrB,OAAO,CAACmC,CAAC,CAAC,CAAC,CAC7D;UACH;UACAF,MAAM,CAACC,IAAI,CAACU,SAAS,CAAC;QACxB;MACF;MAEA,OAAOX,MAAM;IAAC;EAChB;EAEA,IAAIhC,cAAc,GAAa;IAC7B,OAAO,IAAI,CAACW,KAAK,CAACX,cAAc;EAClC;EAEA,IAAIiD,iBAAiB,GAAY;IAC/B,OAAO,IAAI;EACb;EAEA,IAAIC,oBAAoB,GAAY;IAClC,OAAO,IAAI,CAACvC,KAAK,CAACwC,SAAS,KAAKC,SAAS;EAC3C;EAEA,IAAIC,uBAAuB,GAAY;IACrC,OAAO,KAAK;EACd;EAEA,IAAIC,yBAAyB,GAAY;IACvC,OAAO,KAAK;EACd;EAEA,IAAIC,YAAY,GAAY;IAC1B,OAAO,KAAK;EACd;EAEAC,YAAY,CAACC,WAAuB,EAAW;IAC7C,OAAO,IAAI,CAACC,4BAA4B,CACtC,IAAI,CAAC3D,OAAO,EACZ,IAAI,CAACC,cAAc,CACpB,CAAC2D,GAAG,CAACF,WAAW,CAAC;EACpB;EAEAG,eAAe,CAAC5C,MAAkB,EAAW;IAC3C,OAAOA,MAAM,IAAI,IAAI,CAAChB,cAAc,CAACE,MAAM;EAC7C;EAEA2D,eAAe,CAAC9C,CAAa,EAAW;IAAA;IACtC,IAAME,GAAG,GAAG,IAAI,CAACA,GAAG,CAACF,CAAC,CAAC;IACvB,2BAAOE,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEC,WAAW,+DAAI,KAAK;EAClC;EAEA4C,aAAa,CAAC/C,CAAa,EAAW;IAAA;IACpC,IAAME,GAAG,GAAG,IAAI,CAACA,GAAG,CAACF,CAAC,CAAC;IACvB,0BAAOE,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEO,UAAU,6DAAI,KAAK;EACjC;EAEAuC,cAAc,CACZhD,CAAa,EACbS,UAAmB,EAEb;IAAA,IADNwC,iBAAiB,uEAAG,KAAK;IAEzB,IAAI,IAAI,CAACd,oBAAoB,EAAE;MAC7B,IAAI,CAACvC,KAAK,CAACsD,WAAW,CAAClD,CAAC,EAAES,UAAU,EAAEwC,iBAAiB,CAAC;IAC1D,CAAC,MAAM;MACL,IAAI,CAACrD,KAAK,CAACsD,WAAW,CAAClD,CAAC,EAAES,UAAU,CAAC;IACvC;EACF;EAEA2B,SAAS,GAAS;IAChB,IAAI,IAAI,CAACxC,KAAK,CAACwC,SAAS,EAAE;MACxB,IAAI,CAACxC,KAAK,CAACwC,SAAS,EAAE;IACxB;EACF;EAEAe,WAAW,GAAS;IAClB,IAAI,IAAI,CAACvD,KAAK,CAACuD,WAAW,EAAE;MAC1B,IAAI,CAACvD,KAAK,CAACuD,WAAW,EAAE;IAC1B;EACF;EAEAC,WAAW,CAACpD,CAAa,EAAc;IAAA;IACrC,IAAME,GAAG,GAAG,IAAI,CAACA,GAAG,CAACF,CAAC,CAAC;IACvB,OAAO,eAACE,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEQ,KAAK,mDAAI,CAAC,IAAI,CAAC;EAC9B;EAWA2C,mBAAmB,CAACrE,OAAqB,EAAQ;IAC/C,IAAIA,OAAO,CAACG,MAAM,GAAG,CAAC,EAAE;MACtB,MAAM,IAAImE,KAAK,CAAC,uCAAuC,CAAC;IAC1D;EACF;AACF;AAEA,eAAevE,sBAAsB"}
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","depth","getCachedGroupedColumnSet","has","extractViewportRow","isExpanded","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","isColumnMovable","isRowExpandable","isRowExpanded","setRowExpanded","expandDescendants","setExpanded","collapseAll","depthForRow","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 = 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 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/iris-grid",
3
- "version": "0.41.2",
3
+ "version": "0.41.4",
4
4
  "description": "Deephaven Iris Grid",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -24,12 +24,12 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@deephaven/components": "^0.41.0",
27
- "@deephaven/console": "^0.41.0",
27
+ "@deephaven/console": "^0.41.3",
28
28
  "@deephaven/filters": "^0.41.0",
29
29
  "@deephaven/grid": "^0.41.0",
30
30
  "@deephaven/icons": "^0.41.0",
31
31
  "@deephaven/jsapi-types": "^0.41.0",
32
- "@deephaven/jsapi-utils": "^0.41.0",
32
+ "@deephaven/jsapi-utils": "^0.41.3",
33
33
  "@deephaven/log": "^0.41.0",
34
34
  "@deephaven/react-hooks": "^0.41.0",
35
35
  "@deephaven/storage": "^0.41.0",
@@ -69,5 +69,5 @@
69
69
  "publishConfig": {
70
70
  "access": "public"
71
71
  },
72
- "gitHead": "8c75d853f25a1cf8155b2f6f46e2a1d958655006"
72
+ "gitHead": "78f6869e66c32e53ff88754b7be00d8cd89c5cfb"
73
73
  }