@deephaven/iris-grid 0.7.3-beta.4 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/IrisGrid.d.ts +18 -232
  2. package/dist/IrisGrid.d.ts.map +1 -1
  3. package/dist/IrisGrid.js +144 -45
  4. package/dist/IrisGrid.js.map +1 -1
  5. package/dist/IrisGridModel.d.ts +10 -0
  6. package/dist/IrisGridModel.d.ts.map +1 -1
  7. package/dist/IrisGridModel.js +18 -0
  8. package/dist/IrisGridModel.js.map +1 -1
  9. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  10. package/dist/IrisGridModelUpdater.js +8 -2
  11. package/dist/IrisGridModelUpdater.js.map +1 -1
  12. package/dist/IrisGridProxyModel.d.ts +12 -1
  13. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  14. package/dist/IrisGridProxyModel.js +4 -8
  15. package/dist/IrisGridProxyModel.js.map +1 -1
  16. package/dist/IrisGridTableModel.d.ts +36 -3
  17. package/dist/IrisGridTableModel.d.ts.map +1 -1
  18. package/dist/IrisGridTableModel.js +100 -45
  19. package/dist/IrisGridTableModel.js.map +1 -1
  20. package/dist/IrisGridTreeTableModel.d.ts +1 -0
  21. package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
  22. package/dist/IrisGridUtils.d.ts +2 -0
  23. package/dist/IrisGridUtils.d.ts.map +1 -1
  24. package/dist/IrisGridUtils.js +8 -4
  25. package/dist/IrisGridUtils.js.map +1 -1
  26. package/dist/key-handlers/ClearFilterKeyHandler.d.ts +2 -1
  27. package/dist/key-handlers/ClearFilterKeyHandler.d.ts.map +1 -1
  28. package/dist/key-handlers/ClearFilterKeyHandler.js +2 -2
  29. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  30. package/dist/key-handlers/CopyKeyHandler.d.ts +2 -1
  31. package/dist/key-handlers/CopyKeyHandler.d.ts.map +1 -1
  32. package/dist/key-handlers/CopyKeyHandler.js +2 -2
  33. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  34. package/dist/key-handlers/ReverseKeyHandler.d.ts +2 -1
  35. package/dist/key-handlers/ReverseKeyHandler.d.ts.map +1 -1
  36. package/dist/key-handlers/ReverseKeyHandler.js +2 -2
  37. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  38. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  39. package/dist/mousehandlers/IrisGridContextMenuHandler.js +52 -34
  40. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  41. package/dist/tsconfig.tsbuildinfo +1 -1
  42. package/package.json +11 -11
  43. package/dist/memoizeClear.d.ts +0 -4
  44. package/dist/memoizeClear.d.ts.map +0 -1
  45. package/dist/memoizeClear.js +0 -34
  46. package/dist/memoizeClear.js.map +0 -1
@@ -11,11 +11,10 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
11
11
  /* eslint class-methods-use-this: "off" */
12
12
  import memoize from 'memoize-one';
13
13
  import throttle from 'lodash.throttle';
14
- import { GridRange } from '@deephaven/grid';
14
+ import { GridRange, memoizeClear } from '@deephaven/grid';
15
15
  import dh from '@deephaven/jsapi-shim';
16
16
  import Log from '@deephaven/log';
17
17
  import { PromiseUtils } from '@deephaven/utils';
18
- import memoizeClear from "./memoizeClear.js";
19
18
  import TableUtils from "./TableUtils.js";
20
19
  import Formatter from "./Formatter.js";
21
20
  import { TableColumnFormatter } from "./formatters/index.js";
@@ -42,48 +41,62 @@ class IrisGridTableModel extends IrisGridModel {
42
41
  var inputTable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
43
42
  super();
44
43
 
45
- _defineProperty(this, "getColumnsWithLayoutHints", memoize((columns, hints) => {
46
- if (hints) {
47
- var _hints$frontColumns$l, _hints$frontColumns, _hints$backColumns$le, _hints$backColumns, _hints$frozenColumns$, _hints$frozenColumns;
44
+ _defineProperty(this, "getColumnsWithLayoutHints", memoize((columnMap, frontColumns, backColumns, frozenColumns) => {
45
+ var columns = [...columnMap.values()];
48
46
 
49
- var columnMap = new Map();
50
- columns.forEach(col => columnMap.set(col.name, col));
51
- var frontColumns = [];
52
- var backColumns = [];
53
- var frozenColumns = [];
47
+ if (frontColumns.length || backColumns.length || frozenColumns.length) {
48
+ var finalFrontColumns = [];
49
+ var finalBackColumns = [];
50
+ var finalFrozenColumns = [];
54
51
 
55
- if (hints.frontColumns) {
56
- frontColumns = hints.frontColumns.map(name => columnMap.get(name)).filter(Boolean);
52
+ if (frontColumns.length) {
53
+ finalFrontColumns = frontColumns.map(name => columnMap.get(name)).filter(Boolean);
57
54
  }
58
55
 
59
- if (hints.backColumns) {
60
- backColumns = hints.backColumns.map(name => columnMap.get(name)).filter(Boolean);
56
+ if (backColumns.length) {
57
+ finalBackColumns = backColumns.map(name => columnMap.get(name)).filter(Boolean);
61
58
  }
62
59
 
63
- if (hints.frozenColumns) {
64
- frozenColumns = hints.frozenColumns.map(name => columnMap.get(name)).filter(Boolean);
60
+ if (frozenColumns.length) {
61
+ finalFrozenColumns = frozenColumns.map(name => columnMap.get(name)).filter(Boolean);
65
62
  }
66
63
 
67
- if (frontColumns.length !== ((_hints$frontColumns$l = (_hints$frontColumns = hints.frontColumns) === null || _hints$frontColumns === void 0 ? void 0 : _hints$frontColumns.length) !== null && _hints$frontColumns$l !== void 0 ? _hints$frontColumns$l : 0) || backColumns.length !== ((_hints$backColumns$le = (_hints$backColumns = hints.backColumns) === null || _hints$backColumns === void 0 ? void 0 : _hints$backColumns.length) !== null && _hints$backColumns$le !== void 0 ? _hints$backColumns$le : 0) || frozenColumns.length !== ((_hints$frozenColumns$ = (_hints$frozenColumns = hints.frozenColumns) === null || _hints$frozenColumns === void 0 ? void 0 : _hints$frozenColumns.length) !== null && _hints$frozenColumns$ !== void 0 ? _hints$frozenColumns$ : 0)) {
64
+ if (finalFrontColumns.length !== frontColumns.length || finalBackColumns.length !== backColumns.length || finalFrozenColumns.length !== frozenColumns.length) {
68
65
  throw new Error('Layout hints are invalid (contain invalid column names)');
69
66
  }
70
67
 
71
- var frontColumnSet = new Set(frontColumns);
72
- var backColumnSet = new Set(backColumns);
73
- var frozenColumnSet = new Set(frozenColumns);
68
+ var frontColumnSet = new Set(finalFrontColumns);
69
+ var backColumnSet = new Set(finalBackColumns);
70
+ var frozenColumnSet = new Set(finalFrozenColumns);
74
71
  var middleColumns = columns.filter(col => !frontColumnSet.has(col) && !backColumnSet.has(col) && !frozenColumnSet.has(col));
75
- return [...frozenColumns, ...frontColumns, ...middleColumns, ...backColumns];
72
+ return [...finalFrozenColumns, ...finalFrontColumns, ...middleColumns, ...finalBackColumns];
76
73
  }
77
74
 
78
75
  return columns;
79
76
  }));
80
77
 
78
+ _defineProperty(this, "getMemoizedColumnMap", memoize(tableColumns => {
79
+ var columnMap = new Map();
80
+ tableColumns.forEach(col => columnMap.set(col.name, col));
81
+ return columnMap;
82
+ }));
83
+
84
+ _defineProperty(this, "getMemoizedFrontColumns", memoize(layoutHintsFrontColumns => layoutHintsFrontColumns !== null && layoutHintsFrontColumns !== void 0 ? layoutHintsFrontColumns : []));
85
+
86
+ _defineProperty(this, "getMemoizedBackColumns", memoize(layoutHintsBackColumns => layoutHintsBackColumns !== null && layoutHintsBackColumns !== void 0 ? layoutHintsBackColumns : []));
87
+
88
+ _defineProperty(this, "getMemoizedFrozenColumns", memoize((layoutHintsFrozenColumns, userFrozenColumns) => {
89
+ var _ref;
90
+
91
+ return (_ref = userFrozenColumns !== null && userFrozenColumns !== void 0 ? userFrozenColumns : layoutHintsFrozenColumns) !== null && _ref !== void 0 ? _ref : [];
92
+ }));
93
+
81
94
  _defineProperty(this, "getColumnIndicesByNameMap", memoize(columns => {
82
95
  var indices = new Map();
83
- columns.forEach((_ref, i) => {
96
+ columns.forEach((_ref2, i) => {
84
97
  var {
85
98
  name
86
- } = _ref;
99
+ } = _ref2;
87
100
  return indices.set(name, i);
88
101
  });
89
102
  return indices;
@@ -158,6 +171,7 @@ class IrisGridTableModel extends IrisGridModel {
158
171
 
159
172
  this.pendingNewDataMap = new Map();
160
173
  this.pendingNewRowCount = 0;
174
+ this.userFrozenColumns = null;
161
175
  }
162
176
 
163
177
  close() {
@@ -515,7 +529,29 @@ class IrisGridTableModel extends IrisGridModel {
515
529
  }
516
530
 
517
531
  get columns() {
518
- return this.getColumnsWithLayoutHints(this.table.columns, this.table.layoutHints);
532
+ return this.getColumnsWithLayoutHints(this.columnMap, this.frontColumns, this.backColumns, this.frozenColumns);
533
+ }
534
+
535
+ get columnMap() {
536
+ return this.getMemoizedColumnMap(this.table.columns);
537
+ }
538
+
539
+ get frontColumns() {
540
+ var _this$layoutHints;
541
+
542
+ return this.getMemoizedFrontColumns((_this$layoutHints = this.layoutHints) === null || _this$layoutHints === void 0 ? void 0 : _this$layoutHints.frontColumns);
543
+ }
544
+
545
+ get backColumns() {
546
+ var _this$layoutHints2;
547
+
548
+ return this.getMemoizedBackColumns((_this$layoutHints2 = this.layoutHints) === null || _this$layoutHints2 === void 0 ? void 0 : _this$layoutHints2.backColumns);
549
+ }
550
+
551
+ get frozenColumns() {
552
+ var _this$layoutHints3;
553
+
554
+ return this.getMemoizedFrozenColumns((_this$layoutHints3 = this.layoutHints) === null || _this$layoutHints3 === void 0 ? void 0 : _this$layoutHints3.frozenColumns, this.userFrozenColumns);
519
555
  }
520
556
 
521
557
  get layoutHints() {
@@ -523,9 +559,7 @@ class IrisGridTableModel extends IrisGridModel {
523
559
  }
524
560
 
525
561
  get floatingLeftColumnCount() {
526
- var _this$layoutHints$fro, _this$layoutHints, _this$layoutHints$fro2;
527
-
528
- return (_this$layoutHints$fro = (_this$layoutHints = this.layoutHints) === null || _this$layoutHints === void 0 ? void 0 : (_this$layoutHints$fro2 = _this$layoutHints.frozenColumns) === null || _this$layoutHints$fro2 === void 0 ? void 0 : _this$layoutHints$fro2.length) !== null && _this$layoutHints$fro !== void 0 ? _this$layoutHints$fro : 0;
562
+ return this.frozenColumns.length;
529
563
  }
530
564
 
531
565
  get groupedColumns() {
@@ -833,6 +867,11 @@ class IrisGridTableModel extends IrisGridModel {
833
867
  this.applyViewport();
834
868
  }
835
869
 
870
+ updateFrozenColumns(columns) {
871
+ this.userFrozenColumns = columns;
872
+ this.dispatchEvent(new CustomEvent(IrisGridModel.EVENT.TABLE_CHANGED));
873
+ }
874
+
836
875
  set totalsConfig(totalsConfig) {
837
876
  log.debug('set totalsConfig', totalsConfig);
838
877
 
@@ -1121,11 +1160,11 @@ class IrisGridTableModel extends IrisGridModel {
1121
1160
  }
1122
1161
 
1123
1162
  isColumnMovable(x) {
1124
- var _this$layoutHints2, _this$layoutHints2$fr, _this$layoutHints3, _this$layoutHints3$ba, _this$layoutHints4, _this$layoutHints4$fr;
1163
+ var _this$layoutHints4, _this$layoutHints4$fr, _this$layoutHints5, _this$layoutHints5$ba;
1125
1164
 
1126
1165
  var columnName = this.columns[x].name;
1127
1166
 
1128
- if ((_this$layoutHints2 = this.layoutHints) !== null && _this$layoutHints2 !== void 0 && (_this$layoutHints2$fr = _this$layoutHints2.frontColumns) !== null && _this$layoutHints2$fr !== void 0 && _this$layoutHints2$fr.includes(columnName) || (_this$layoutHints3 = this.layoutHints) !== null && _this$layoutHints3 !== void 0 && (_this$layoutHints3$ba = _this$layoutHints3.backColumns) !== null && _this$layoutHints3$ba !== void 0 && _this$layoutHints3$ba.includes(columnName) || (_this$layoutHints4 = this.layoutHints) !== null && _this$layoutHints4 !== void 0 && (_this$layoutHints4$fr = _this$layoutHints4.frozenColumns) !== null && _this$layoutHints4$fr !== void 0 && _this$layoutHints4$fr.includes(columnName)) {
1167
+ if ((_this$layoutHints4 = this.layoutHints) !== null && _this$layoutHints4 !== void 0 && (_this$layoutHints4$fr = _this$layoutHints4.frontColumns) !== null && _this$layoutHints4$fr !== void 0 && _this$layoutHints4$fr.includes(columnName) || (_this$layoutHints5 = this.layoutHints) !== null && _this$layoutHints5 !== void 0 && (_this$layoutHints5$ba = _this$layoutHints5.backColumns) !== null && _this$layoutHints5$ba !== void 0 && _this$layoutHints5$ba.includes(columnName) || this.frozenColumns.includes(columnName)) {
1129
1168
  return false;
1130
1169
  }
1131
1170
 
@@ -1133,9 +1172,7 @@ class IrisGridTableModel extends IrisGridModel {
1133
1172
  }
1134
1173
 
1135
1174
  isColumnFrozen(x) {
1136
- var _this$layoutHints$fro3, _this$layoutHints5, _this$layoutHints5$fr;
1137
-
1138
- return (_this$layoutHints$fro3 = (_this$layoutHints5 = this.layoutHints) === null || _this$layoutHints5 === void 0 ? void 0 : (_this$layoutHints5$fr = _this$layoutHints5.frozenColumns) === null || _this$layoutHints5$fr === void 0 ? void 0 : _this$layoutHints5$fr.includes(this.columns[x].name)) !== null && _this$layoutHints$fro3 !== void 0 ? _this$layoutHints$fro3 : false;
1175
+ return this.frozenColumns.includes(this.columns[x].name);
1139
1176
  }
1140
1177
 
1141
1178
  isKeyColumn(x) {
@@ -1319,7 +1356,11 @@ class IrisGridTableModel extends IrisGridModel {
1319
1356
  var edits = _arguments3.length > 0 && _arguments3[0] !== undefined ? _arguments3[0] : [];
1320
1357
  log.debug('setValues(', edits, ')');
1321
1358
 
1322
- if (!edits.every(edit => _this8.isEditableRange(GridRange.makeCell(edit.x, edit.y)))) {
1359
+ if (!edits.every(edit => {
1360
+ var _edit$column, _edit$row;
1361
+
1362
+ return _this8.isEditableRange(GridRange.makeCell((_edit$column = edit.column) !== null && _edit$column !== void 0 ? _edit$column : edit.x, (_edit$row = edit.row) !== null && _edit$row !== void 0 ? _edit$row : edit.y));
1363
+ })) {
1323
1364
  throw new Error('Uneditable ranges', edits);
1324
1365
  }
1325
1366
 
@@ -1327,11 +1368,13 @@ class IrisGridTableModel extends IrisGridModel {
1327
1368
  var newDataMap = new Map(_this8.pendingNewDataMap); // Cache the display values
1328
1369
 
1329
1370
  edits.forEach(edit => {
1371
+ var _edit$column2, _edit$row2;
1372
+
1330
1373
  var {
1331
- x,
1332
- y,
1333
1374
  text
1334
1375
  } = edit;
1376
+ var x = (_edit$column2 = edit.column) !== null && _edit$column2 !== void 0 ? _edit$column2 : edit.x;
1377
+ var y = (_edit$row2 = edit.row) !== null && _edit$row2 !== void 0 ? _edit$row2 : edit.y;
1335
1378
  var column = _this8.columns[x];
1336
1379
  var value = TableUtils.makeValue(column.type, text, _this8.formatter.timeZone);
1337
1380
  var formattedText = value != null ? _this8.displayString(value, column.type, column.name) : null;
@@ -1377,14 +1420,22 @@ class IrisGridTableModel extends IrisGridModel {
1377
1420
 
1378
1421
 
1379
1422
  var rowEditMap = edits.reduce((rowMap, edit) => {
1380
- if (!rowMap.has(edit.y)) {
1381
- rowMap.set(edit.y, []);
1423
+ var _edit$row3;
1424
+
1425
+ var y = (_edit$row3 = edit.row) !== null && _edit$row3 !== void 0 ? _edit$row3 : edit.y;
1426
+
1427
+ if (!rowMap.has(y)) {
1428
+ rowMap.set(y, []);
1382
1429
  }
1383
1430
 
1384
- rowMap.get(edit.y).push(edit);
1431
+ rowMap.get(y).push(edit);
1385
1432
  return rowMap;
1386
1433
  }, new Map());
1387
- var ranges = GridRange.consolidate(edits.map(edit => GridRange.makeCell(edit.x, edit.y)));
1434
+ var ranges = GridRange.consolidate(edits.map(edit => {
1435
+ var _edit$column3, _edit$row4;
1436
+
1437
+ return GridRange.makeCell((_edit$column3 = edit.column) !== null && _edit$column3 !== void 0 ? _edit$column3 : edit.x, (_edit$row4 = edit.row) !== null && _edit$row4 !== void 0 ? _edit$row4 : edit.y);
1438
+ }));
1388
1439
 
1389
1440
  var tableAreaRange = _this8.getTableAreaRange();
1390
1441
 
@@ -1419,7 +1470,9 @@ class IrisGridTableModel extends IrisGridModel {
1419
1470
 
1420
1471
  if (rowEdits != null) {
1421
1472
  rowEdits.forEach(edit => {
1422
- var column = _this8.columns[edit.x];
1473
+ var _edit$column4;
1474
+
1475
+ var column = _this8.columns[(_edit$column4 = edit.column) !== null && _edit$column4 !== void 0 ? _edit$column4 : edit.x];
1423
1476
  newRow[column.name] = TableUtils.makeValue(column.type, edit.text, _this8.formatter.timeZone);
1424
1477
  });
1425
1478
  }
@@ -1436,11 +1489,13 @@ class IrisGridTableModel extends IrisGridModel {
1436
1489
 
1437
1490
 
1438
1491
  edits.forEach(edit => {
1492
+ var _edit$column5, _edit$row5;
1493
+
1439
1494
  var {
1440
- x,
1441
- y,
1442
1495
  text
1443
1496
  } = edit;
1497
+ var x = (_edit$column5 = edit.column) !== null && _edit$column5 !== void 0 ? _edit$column5 : edit.x;
1498
+ var y = (_edit$row5 = edit.row) !== null && _edit$row5 !== void 0 ? _edit$row5 : edit.y;
1444
1499
  var column = _this8.columns[x];
1445
1500
  var value = TableUtils.makeValue(column.type, text, _this8.formatter.timeZone);
1446
1501
  var formattedText = value != null ? _this8.displayString(value, column.type, column.name) : null;
@@ -1449,7 +1504,7 @@ class IrisGridTableModel extends IrisGridModel {
1449
1504
  });
1450
1505
  } finally {
1451
1506
  edits.forEach(edit => {
1452
- _this8.clearPendingValue(edit.x, edit.y);
1507
+ _this8.clearPendingValue(edit.column, edit.row);
1453
1508
  });
1454
1509
  }
1455
1510
  })();
@@ -1471,10 +1526,10 @@ class IrisGridTableModel extends IrisGridModel {
1471
1526
 
1472
1527
  _this9.pendingNewDataMap.forEach(row => {
1473
1528
  var newRow = {};
1474
- row.data.forEach((_ref2, columnIndex) => {
1529
+ row.data.forEach((_ref3, columnIndex) => {
1475
1530
  var {
1476
1531
  value
1477
- } = _ref2;
1532
+ } = _ref3;
1478
1533
  var column = _this9.columns[columnIndex];
1479
1534
  newRow[column.name] = value;
1480
1535
  });