@deephaven/iris-grid 0.22.3-beta.18 → 0.22.3-beta.21

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 (199) hide show
  1. package/dist/AdvancedFilterCreator.js +7 -65
  2. package/dist/AdvancedFilterCreator.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorFilterItem.js +0 -23
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.js +0 -52
  6. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValueList.js +2 -42
  8. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  9. package/dist/ColumnHeaderGroup.js +0 -11
  10. package/dist/ColumnHeaderGroup.js.map +1 -1
  11. package/dist/ColumnStatistics.js +1 -20
  12. package/dist/ColumnStatistics.js.map +1 -1
  13. package/dist/CrossColumnSearch.js +2 -23
  14. package/dist/CrossColumnSearch.js.map +1 -1
  15. package/dist/FilterInputField.js +2 -36
  16. package/dist/FilterInputField.js.map +1 -1
  17. package/dist/GotoRow.d.ts +1 -1
  18. package/dist/GotoRow.d.ts.map +1 -1
  19. package/dist/GotoRow.js +2 -7
  20. package/dist/GotoRow.js.map +1 -1
  21. package/dist/IrisGrid.d.ts +11 -5
  22. package/dist/IrisGrid.d.ts.map +1 -1
  23. package/dist/IrisGrid.js +77 -519
  24. package/dist/IrisGrid.js.map +1 -1
  25. package/dist/IrisGridBottomBar.d.ts +1 -1
  26. package/dist/IrisGridBottomBar.d.ts.map +1 -1
  27. package/dist/IrisGridBottomBar.js +2 -2
  28. package/dist/IrisGridBottomBar.js.map +1 -1
  29. package/dist/IrisGridCellOverflowModal.js +6 -21
  30. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  31. package/dist/IrisGridCopyHandler.js +3 -50
  32. package/dist/IrisGridCopyHandler.js.map +1 -1
  33. package/dist/IrisGridMetricCalculator.js +2 -12
  34. package/dist/IrisGridMetricCalculator.js.map +1 -1
  35. package/dist/IrisGridModel.js +32 -58
  36. package/dist/IrisGridModel.js.map +1 -1
  37. package/dist/IrisGridModelFactory.js +0 -7
  38. package/dist/IrisGridModelFactory.js.map +1 -1
  39. package/dist/IrisGridModelUpdater.js +0 -4
  40. package/dist/IrisGridModelUpdater.js.map +1 -1
  41. package/dist/IrisGridPartitionSelector.js +0 -23
  42. package/dist/IrisGridPartitionSelector.js.map +1 -1
  43. package/dist/IrisGridProxyModel.js +9 -153
  44. package/dist/IrisGridProxyModel.js.map +1 -1
  45. package/dist/IrisGridRenderer.js +41 -183
  46. package/dist/IrisGridRenderer.js.map +1 -1
  47. package/dist/IrisGridShortcuts.js.map +1 -1
  48. package/dist/IrisGridTableModel.js +7 -86
  49. package/dist/IrisGridTableModel.js.map +1 -1
  50. package/dist/IrisGridTableModelTemplate.js +70 -461
  51. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  52. package/dist/IrisGridTestUtils.js +0 -23
  53. package/dist/IrisGridTestUtils.js.map +1 -1
  54. package/dist/IrisGridTheme.js.map +1 -1
  55. package/dist/IrisGridTreeTableModel.js +3 -42
  56. package/dist/IrisGridTreeTableModel.js.map +1 -1
  57. package/dist/IrisGridUtils.d.ts +8 -2
  58. package/dist/IrisGridUtils.d.ts.map +1 -1
  59. package/dist/IrisGridUtils.js +97 -195
  60. package/dist/IrisGridUtils.js.map +1 -1
  61. package/dist/MissingKeyError.js +0 -7
  62. package/dist/MissingKeyError.js.map +1 -1
  63. package/dist/PartitionSelectorSearch.js +2 -48
  64. package/dist/PartitionSelectorSearch.js.map +1 -1
  65. package/dist/PendingDataBottomBar.d.ts +1 -1
  66. package/dist/PendingDataBottomBar.d.ts.map +1 -1
  67. package/dist/PendingDataBottomBar.js +2 -7
  68. package/dist/PendingDataBottomBar.js.map +1 -1
  69. package/dist/TableViewportUpdater.js +3 -29
  70. package/dist/TableViewportUpdater.js.map +1 -1
  71. package/dist/ToastBottomBar.d.ts +1 -1
  72. package/dist/ToastBottomBar.d.ts.map +1 -1
  73. package/dist/ToastBottomBar.js +2 -4
  74. package/dist/ToastBottomBar.js.map +1 -1
  75. package/dist/TreeTableViewportUpdater.js +0 -21
  76. package/dist/TreeTableViewportUpdater.js.map +1 -1
  77. package/dist/format-context-menus/CustomFormatAction.js +4 -25
  78. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  79. package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -7
  80. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  81. package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -9
  82. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  83. package/dist/format-context-menus/FormatContextMenuUtils.js +3 -9
  84. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  85. package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -8
  86. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  87. package/dist/format-context-menus/index.js.map +1 -1
  88. package/dist/index.d.ts +3 -3
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +3 -3
  91. package/dist/index.js.map +1 -1
  92. package/dist/key-handlers/ClearFilterKeyHandler.js +0 -8
  93. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  94. package/dist/key-handlers/CopyKeyHandler.js +1 -10
  95. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  96. package/dist/key-handlers/ReverseKeyHandler.js +0 -11
  97. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  98. package/dist/key-handlers/index.js.map +1 -1
  99. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -32
  100. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  101. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +4 -34
  102. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  103. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -20
  104. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  105. package/dist/mousehandlers/IrisGridContextMenuHandler.js +15 -105
  106. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  107. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -9
  108. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  109. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -17
  110. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  111. package/dist/mousehandlers/IrisGridSortMouseHandler.js +2 -15
  112. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  113. package/dist/mousehandlers/PendingMouseHandler.js +0 -6
  114. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  115. package/dist/mousehandlers/index.js.map +1 -1
  116. package/dist/sidebar/AdvancedSettings.js.map +1 -1
  117. package/dist/sidebar/AdvancedSettingsMenu.d.ts +4 -4
  118. package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
  119. package/dist/sidebar/AdvancedSettingsMenu.js +2 -6
  120. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  121. package/dist/sidebar/AdvancedSettingsType.js +0 -2
  122. package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
  123. package/dist/sidebar/ChartBuilder.js +2 -46
  124. package/dist/sidebar/ChartBuilder.js.map +1 -1
  125. package/dist/sidebar/CustomColumnBuilder.js +6 -58
  126. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  127. package/dist/sidebar/CustomColumnInput.js +4 -15
  128. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  129. package/dist/sidebar/InputEditor.js +5 -36
  130. package/dist/sidebar/InputEditor.js.map +1 -1
  131. package/dist/sidebar/OptionType.js +0 -2
  132. package/dist/sidebar/OptionType.js.map +1 -1
  133. package/dist/sidebar/RollupRows.js +9 -65
  134. package/dist/sidebar/RollupRows.js.map +1 -1
  135. package/dist/sidebar/SelectDistinctBuilder.js +0 -13
  136. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  137. package/dist/sidebar/TableCsvExporter.js +0 -52
  138. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  139. package/dist/sidebar/TableSaver.js +10 -123
  140. package/dist/sidebar/TableSaver.js.map +1 -1
  141. package/dist/sidebar/VisibilityOrderingBuilder.js +37 -116
  142. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  143. package/dist/sidebar/aggregations/AggregationEdit.d.ts +1 -1
  144. package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
  145. package/dist/sidebar/aggregations/AggregationEdit.js +2 -14
  146. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  147. package/dist/sidebar/aggregations/AggregationOperation.js +0 -2
  148. package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
  149. package/dist/sidebar/aggregations/AggregationUtils.js +2 -5
  150. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  151. package/dist/sidebar/aggregations/Aggregations.d.ts +1 -1
  152. package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
  153. package/dist/sidebar/aggregations/Aggregations.js +2 -12
  154. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  155. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
  156. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
  157. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -16
  158. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  159. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
  160. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
  161. package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -35
  162. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  163. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +1 -1
  164. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
  165. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -12
  166. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  167. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -3
  168. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  169. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +1 -1
  170. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
  171. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +16 -26
  172. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  173. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +9 -172
  174. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  175. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
  176. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
  177. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -16
  178. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  179. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
  180. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
  181. package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -12
  182. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  183. package/dist/sidebar/icons/BarIcon.js +0 -3
  184. package/dist/sidebar/icons/BarIcon.js.map +1 -1
  185. package/dist/sidebar/icons/FormatColumnWhereIcon.js +2 -5
  186. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
  187. package/dist/sidebar/icons/FormatRowWhereIcon.js +2 -5
  188. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
  189. package/dist/sidebar/icons/HistogramIcon.js +0 -3
  190. package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
  191. package/dist/sidebar/icons/LineIcon.js +0 -3
  192. package/dist/sidebar/icons/LineIcon.js.map +1 -1
  193. package/dist/sidebar/icons/PieIcon.js +0 -3
  194. package/dist/sidebar/icons/PieIcon.js.map +1 -1
  195. package/dist/sidebar/icons/ScatterIcon.js +0 -3
  196. package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
  197. package/dist/sidebar/icons/index.js.map +1 -1
  198. package/dist/sidebar/index.js.map +1 -1
  199. package/package.json +15 -15
@@ -1,9 +1,6 @@
1
1
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
2
-
3
2
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
4
-
5
3
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
7
4
  /* eslint class-methods-use-this: "off" */
8
5
  import memoize from 'memoize-one';
9
6
  import { GridRange } from '@deephaven/grid';
@@ -13,6 +10,7 @@ import { EventShimCustomEvent, PromiseUtils, assertNotNull } from '@deephaven/ut
13
10
  import IrisGridModel from "./IrisGridModel.js";
14
11
  import IrisGridTableModelTemplate from "./IrisGridTableModelTemplate.js";
15
12
  var log = Log.module('IrisGridTableModel');
13
+
16
14
  /**
17
15
  * Model for a grid showing an iris data table
18
16
  */
@@ -27,164 +25,121 @@ class IrisGridTableModel extends IrisGridTableModelTemplate {
27
25
  var formatter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Formatter();
28
26
  var inputTable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
29
27
  super(table, formatter, inputTable);
30
-
31
28
  _defineProperty(this, "userFrozenColumns", void 0);
32
-
33
29
  _defineProperty(this, "customColumnList", void 0);
34
-
35
30
  _defineProperty(this, "formatColumnList", void 0);
36
-
37
31
  _defineProperty(this, "getMemoizedFrontColumns", memoize(layoutHintsFrontColumns => layoutHintsFrontColumns !== null && layoutHintsFrontColumns !== void 0 ? layoutHintsFrontColumns : []));
38
-
39
32
  _defineProperty(this, "getMemoizedBackColumns", memoize(layoutHintsBackColumns => layoutHintsBackColumns !== null && layoutHintsBackColumns !== void 0 ? layoutHintsBackColumns : []));
40
-
41
33
  _defineProperty(this, "getMemoizedFrozenColumns", memoize((layoutHintsFrozenColumns, userFrozenColumns) => {
42
34
  var _ref;
43
-
44
35
  return (_ref = userFrozenColumns !== null && userFrozenColumns !== void 0 ? userFrozenColumns : layoutHintsFrozenColumns) !== null && _ref !== void 0 ? _ref : [];
45
36
  }));
46
-
47
37
  _defineProperty(this, "getCachedFilterableColumnSet", memoize(columns => new Set(columns.map((_, index) => index))));
48
-
49
38
  this.customColumnList = [];
50
39
  this.formatColumnList = [];
51
40
  }
52
-
53
41
  get isExportAvailable() {
54
42
  return this.table.freeze != null;
55
43
  }
56
-
57
44
  get isColumnStatisticsAvailable() {
58
45
  return this.table.getColumnStatistics != null;
59
46
  }
60
-
61
47
  get isValuesTableAvailable() {
62
48
  return this.table.selectDistinct != null && this.table.copy != null;
63
49
  }
64
-
65
50
  get isRollupAvailable() {
66
51
  return this.table.rollup != null;
67
52
  }
68
-
69
53
  get isSelectDistinctAvailable() {
70
54
  return this.table.selectDistinct != null;
71
55
  }
72
-
73
56
  get isCustomColumnsAvailable() {
74
57
  return this.table.applyCustomColumns != null;
75
58
  }
76
-
77
59
  get isFormatColumnsAvailable() {
78
60
  return this.table.applyCustomColumns != null;
79
61
  }
80
-
81
62
  get frontColumns() {
82
63
  var _this$layoutHints;
83
-
84
64
  return this.getMemoizedFrontColumns((_this$layoutHints = this.layoutHints) === null || _this$layoutHints === void 0 ? void 0 : _this$layoutHints.frontColumns);
85
65
  }
86
-
87
66
  get backColumns() {
88
67
  var _this$layoutHints2;
89
-
90
68
  return this.getMemoizedBackColumns((_this$layoutHints2 = this.layoutHints) === null || _this$layoutHints2 === void 0 ? void 0 : _this$layoutHints2.backColumns);
91
69
  }
92
-
93
70
  get frozenColumns() {
94
71
  var _this$layoutHints3;
95
-
96
72
  return this.getMemoizedFrozenColumns((_this$layoutHints3 = this.layoutHints) === null || _this$layoutHints3 === void 0 ? void 0 : _this$layoutHints3.frozenColumns, this.userFrozenColumns);
97
73
  }
98
-
99
74
  get layoutHints() {
100
75
  return this.table.layoutHints;
101
76
  }
102
-
103
77
  get floatingLeftColumnCount() {
104
78
  return this.frozenColumns.length;
105
79
  }
106
-
107
80
  get description() {
108
81
  return this.table.description;
109
82
  }
110
-
111
83
  get customColumns() {
112
84
  return this.customColumnList;
113
85
  }
114
-
115
86
  set customColumns(customColumns) {
116
87
  log.debug2('set customColumns', customColumns, this.customColumnList, customColumns === this.customColumnList);
117
-
118
88
  if (this.customColumnList.length === 0 && customColumns.length === 0) {
119
89
  log.debug('Ignore empty initial customColumns');
120
90
  this.customColumnList = customColumns;
121
91
  return;
122
92
  }
123
-
124
93
  if (this.customColumnList === customColumns) {
125
94
  log.debug('Ignore same customColumns');
126
95
  return;
127
96
  }
128
-
129
97
  this.closeSubscription();
130
98
  this.customColumnList = customColumns;
131
99
  this.table.applyCustomColumns([...customColumns, ...this.formatColumns]);
132
100
  this.applyViewport();
133
101
  }
134
-
135
102
  get formatColumns() {
136
103
  return this.formatColumnList;
137
104
  }
138
-
139
105
  set formatColumns(formatColumns) {
140
106
  log.debug2('set formatColumns', formatColumns, this.formatColumnList, formatColumns === this.formatColumnList);
141
-
142
107
  if (this.formatColumnList.length === 0 && formatColumns.length === 0) {
143
108
  log.debug('Ignore empty initial formatColumns');
144
109
  this.formatColumnList = formatColumns;
145
110
  return;
146
111
  }
147
-
148
112
  if (this.formatColumnList === formatColumns) {
149
113
  log.debug('Ignore same formatColumns');
150
114
  return;
151
115
  }
152
-
153
116
  this.closeSubscription();
154
117
  this.formatColumnList = formatColumns;
155
118
  this.table.applyCustomColumns([...this.customColumns, ...formatColumns]);
156
119
  this.applyViewport();
157
120
  }
158
-
159
121
  updateFrozenColumns(columns) {
160
122
  this.userFrozenColumns = columns;
161
123
  this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {
162
124
  detail: this.table
163
125
  }));
164
126
  }
165
-
166
127
  set totalsConfig(totalsConfig) {
167
128
  log.debug('set totalsConfig', totalsConfig);
168
-
169
129
  if (totalsConfig === this.totals) {
170
130
  // Totals already set, or it will be set when the next model actually gets set
171
131
  return;
172
132
  }
173
-
174
133
  this.totals = totalsConfig;
175
134
  this.formattedStringData = [];
176
-
177
135
  if (this.totalsTablePromise != null) {
178
136
  this.totalsTablePromise.cancel();
179
137
  }
180
-
181
138
  this.setTotalsTable(null);
182
-
183
139
  if (totalsConfig == null) {
184
140
  this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));
185
141
  return;
186
142
  }
187
-
188
143
  this.totalsTablePromise = PromiseUtils.makeCancelable(this.table.getTotalsTable(totalsConfig), table => table.close());
189
144
  this.totalsTablePromise.then(totalsTable => {
190
145
  this.totalsTablePromise = null;
@@ -193,7 +148,6 @@ class IrisGridTableModel extends IrisGridTableModelTemplate {
193
148
  if (PromiseUtils.isCanceled(err)) {
194
149
  return;
195
150
  }
196
-
197
151
  log.error('Unable to set next totalsTable', err);
198
152
  this.totalsTablePromise = null;
199
153
  this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, {
@@ -201,127 +155,96 @@ class IrisGridTableModel extends IrisGridTableModelTemplate {
201
155
  }));
202
156
  });
203
157
  }
204
-
205
158
  get isFilterRequired() {
206
159
  return this.table.isUncoalesced;
207
160
  }
208
-
209
161
  isFilterable(columnIndex) {
210
162
  return this.getCachedFilterableColumnSet(this.columns).has(columnIndex);
211
163
  }
212
-
213
164
  export() {
214
165
  var _this = this;
215
-
216
166
  return _asyncToGenerator(function* () {
217
167
  return _this.table.freeze();
218
168
  })();
219
169
  }
220
-
221
170
  columnStatistics(column) {
222
171
  return this.table.getColumnStatistics(column);
223
172
  }
224
-
225
173
  isColumnMovable(modelIndex) {
226
174
  var columnName = this.columns[modelIndex].name;
227
-
228
175
  if (this.frontColumns.includes(columnName) || this.backColumns.includes(columnName) || this.frozenColumns.includes(columnName)) {
229
176
  return false;
230
177
  }
231
-
232
178
  return !this.isKeyColumn(modelIndex);
233
179
  }
234
-
235
180
  isColumnFrozen(modelIndex) {
236
181
  return this.frozenColumns.includes(this.columns[modelIndex].name);
237
182
  }
238
-
239
183
  delete(ranges) {
240
184
  var _superprop_getPendingDataMap = () => super.pendingDataMap,
241
- _superprop_setPendingDataMap = _value => super.pendingDataMap = _value,
242
- _this2 = this;
243
-
185
+ _superprop_setPendingDataMap = _value => super.pendingDataMap = _value,
186
+ _this2 = this;
244
187
  return _asyncToGenerator(function* () {
245
188
  var _this2$inputTable;
246
-
247
189
  if (!_this2.isDeletableRanges(ranges)) {
248
190
  throw new Error("Undeletable ranges ".concat(ranges));
249
191
  }
250
-
251
192
  assertNotNull(_this2.inputTable);
252
193
  var {
253
194
  keyColumns
254
195
  } = _this2.inputTable;
255
-
256
196
  if (keyColumns.length === 0) {
257
197
  throw new Error('No key columns to allow deletion');
258
198
  }
259
-
260
199
  var pendingAreaRange = _this2.getPendingAreaRange();
261
-
262
200
  var pendingRanges = ranges.map(range => GridRange.intersection(pendingAreaRange, range)).filter(range => range != null).map(range => {
263
201
  assertNotNull(range);
264
202
  return GridRange.offset(range, 0, -(_this2.floatingTopRowCount + _this2.table.size));
265
203
  });
266
-
267
204
  if (pendingRanges.length > 0) {
268
205
  var newDataMap = new Map(_superprop_getPendingDataMap());
269
-
270
206
  for (var i = 0; i < pendingRanges.length; i += 1) {
271
207
  var pendingRange = pendingRanges[i];
272
208
  assertNotNull(pendingRange.startRow);
273
209
  assertNotNull(pendingRange.endRow);
274
-
275
210
  for (var r = pendingRange.startRow; r <= pendingRange.endRow; r += 1) {
276
211
  newDataMap.delete(r);
277
212
  }
278
213
  }
279
-
280
214
  _superprop_setPendingDataMap(newDataMap);
281
-
282
215
  _this2.formattedStringData = [];
283
-
284
216
  _this2.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED));
285
-
286
217
  _this2.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));
287
218
  }
288
-
289
219
  var tableAreaRange = _this2.getTableAreaRange();
290
-
291
220
  var tableRanges = ranges.map(range => GridRange.intersection(tableAreaRange, range)).filter(range => range != null);
292
-
293
221
  if (tableRanges.length <= 0) {
294
222
  return;
295
223
  }
296
-
297
- var [data, deleteTable] = yield Promise.all([// Need to get the key values of each row
224
+ var [data, deleteTable] = yield Promise.all([
225
+ // Need to get the key values of each row
298
226
  _this2.snapshot(tableRanges.map(range => {
299
227
  assertNotNull(range);
300
228
  return new GridRange(0, range.startRow, keyColumns.length - 1, range.endRow);
301
- })), _this2.table.copy()]); // Now copy the existing table and filter it on the values in the snapshot for the key columns in the input table
229
+ })), _this2.table.copy()]);
302
230
 
231
+ // Now copy the existing table and filter it on the values in the snapshot for the key columns in the input table
303
232
  var filters = data.map(row => {
304
233
  var columnFilters = [];
305
-
306
234
  for (var c = 0; c < keyColumns.length; c += 1) {
307
235
  var column = keyColumns[c];
308
236
  var value = row[c];
309
237
  var filterValue = TableUtils.makeFilterRawValue(column.type, value);
310
-
311
238
  var _filter = column.filter().eq(filterValue);
312
-
313
239
  columnFilters.push(_filter);
314
240
  }
315
-
316
241
  return columnFilters.reduce((agg, curr) => {
317
242
  var _agg$and;
318
-
319
243
  return (_agg$and = agg === null || agg === void 0 ? void 0 : agg.and(curr)) !== null && _agg$and !== void 0 ? _agg$and : curr;
320
244
  });
321
245
  });
322
246
  var filter = filters.reduce((agg, curr) => {
323
247
  var _agg$or;
324
-
325
248
  return (_agg$or = agg === null || agg === void 0 ? void 0 : agg.or(curr)) !== null && _agg$or !== void 0 ? _agg$or : curr;
326
249
  });
327
250
  deleteTable.applyFilter([filter]);
@@ -329,8 +252,6 @@ class IrisGridTableModel extends IrisGridTableModelTemplate {
329
252
  deleteTable.close();
330
253
  })();
331
254
  }
332
-
333
255
  }
334
-
335
256
  export default IrisGridTableModel;
336
257
  //# sourceMappingURL=IrisGridTableModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGridTableModel.js","names":["memoize","GridRange","Log","Formatter","TableUtils","EventShimCustomEvent","PromiseUtils","assertNotNull","IrisGridModel","IrisGridTableModelTemplate","log","module","IrisGridTableModel","constructor","table","formatter","inputTable","layoutHintsFrontColumns","layoutHintsBackColumns","layoutHintsFrozenColumns","userFrozenColumns","columns","Set","map","_","index","customColumnList","formatColumnList","isExportAvailable","freeze","isColumnStatisticsAvailable","getColumnStatistics","isValuesTableAvailable","selectDistinct","copy","isRollupAvailable","rollup","isSelectDistinctAvailable","isCustomColumnsAvailable","applyCustomColumns","isFormatColumnsAvailable","frontColumns","getMemoizedFrontColumns","layoutHints","backColumns","getMemoizedBackColumns","frozenColumns","getMemoizedFrozenColumns","floatingLeftColumnCount","length","description","customColumns","debug2","debug","closeSubscription","formatColumns","applyViewport","updateFrozenColumns","dispatchEvent","EVENT","TABLE_CHANGED","detail","totalsConfig","totals","formattedStringData","totalsTablePromise","cancel","setTotalsTable","UPDATED","makeCancelable","getTotalsTable","close","then","totalsTable","catch","err","isCanceled","error","REQUEST_FAILED","isFilterRequired","isUncoalesced","isFilterable","columnIndex","getCachedFilterableColumnSet","has","export","columnStatistics","column","isColumnMovable","modelIndex","columnName","name","includes","isKeyColumn","isColumnFrozen","delete","ranges","isDeletableRanges","Error","keyColumns","pendingAreaRange","getPendingAreaRange","pendingRanges","range","intersection","filter","offset","floatingTopRowCount","size","newDataMap","Map","i","pendingRange","startRow","endRow","r","PENDING_DATA_UPDATED","tableAreaRange","getTableAreaRange","tableRanges","data","deleteTable","Promise","all","snapshot","filters","row","columnFilters","c","value","filterValue","makeFilterRawValue","type","eq","push","reduce","agg","curr","and","or","applyFilter"],"sources":["../src/IrisGridTableModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport { GridRange, ModelIndex } from '@deephaven/grid';\nimport {\n Column,\n ColumnStatistics,\n CustomColumn,\n InputTable,\n LayoutHints,\n Table,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport {\n EventShimCustomEvent,\n PromiseUtils,\n assertNotNull,\n} from '@deephaven/utils';\nimport IrisGridModel from './IrisGridModel';\nimport { ColumnName, UITotalsTableConfig, UIRow } from './CommonTypes';\nimport IrisGridTableModelTemplate from './IrisGridTableModelTemplate';\n\nconst log = Log.module('IrisGridTableModel');\n\n/**\n * Model for a grid showing an iris data table\n */\n\nclass IrisGridTableModel extends IrisGridTableModelTemplate<Table, UIRow> {\n userFrozenColumns?: ColumnName[];\n\n customColumnList: string[];\n\n formatColumnList: CustomColumn[];\n\n /**\n * @param table Iris data table to be used in the model\n * @param formatter The formatter to use when getting formats\n * @param inputTable Iris input table associated with this table\n */\n constructor(\n table: Table,\n formatter = new Formatter(),\n inputTable: InputTable | null = null\n ) {\n super(table, formatter, inputTable);\n\n this.customColumnList = [];\n this.formatColumnList = [];\n }\n\n get isExportAvailable(): boolean {\n return this.table.freeze != null;\n }\n\n get isColumnStatisticsAvailable(): boolean {\n return this.table.getColumnStatistics != null;\n }\n\n get isValuesTableAvailable(): boolean {\n return this.table.selectDistinct != null && this.table.copy != null;\n }\n\n get isRollupAvailable(): boolean {\n return this.table.rollup != null;\n }\n\n get isSelectDistinctAvailable(): boolean {\n return this.table.selectDistinct != null;\n }\n\n get isCustomColumnsAvailable(): boolean {\n return this.table.applyCustomColumns != null;\n }\n\n get isFormatColumnsAvailable(): boolean {\n return this.table.applyCustomColumns != null;\n }\n\n getMemoizedFrontColumns = memoize(\n (layoutHintsFrontColumns: ColumnName[] | undefined) =>\n layoutHintsFrontColumns ?? []\n );\n\n get frontColumns(): ColumnName[] {\n return this.getMemoizedFrontColumns(this.layoutHints?.frontColumns);\n }\n\n getMemoizedBackColumns = memoize(\n (layoutHintsBackColumns: ColumnName[] | undefined) =>\n layoutHintsBackColumns ?? []\n );\n\n get backColumns(): ColumnName[] {\n return this.getMemoizedBackColumns(this.layoutHints?.backColumns);\n }\n\n getMemoizedFrozenColumns = memoize(\n (\n layoutHintsFrozenColumns: ColumnName[],\n userFrozenColumns?: ColumnName[]\n ): ColumnName[] => userFrozenColumns ?? layoutHintsFrozenColumns ?? []\n );\n\n get frozenColumns(): ColumnName[] {\n return this.getMemoizedFrozenColumns(\n this.layoutHints?.frozenColumns,\n this.userFrozenColumns\n );\n }\n\n get layoutHints(): LayoutHints {\n return this.table.layoutHints;\n }\n\n get floatingLeftColumnCount(): number {\n return this.frozenColumns.length;\n }\n\n get description(): string {\n return this.table.description;\n }\n\n get customColumns(): ColumnName[] {\n return this.customColumnList;\n }\n\n set customColumns(customColumns: ColumnName[]) {\n log.debug2(\n 'set customColumns',\n customColumns,\n this.customColumnList,\n customColumns === this.customColumnList\n );\n if (this.customColumnList.length === 0 && customColumns.length === 0) {\n log.debug('Ignore empty initial customColumns');\n this.customColumnList = customColumns;\n return;\n }\n if (this.customColumnList === customColumns) {\n log.debug('Ignore same customColumns');\n return;\n }\n this.closeSubscription();\n this.customColumnList = customColumns;\n this.table.applyCustomColumns([...customColumns, ...this.formatColumns]);\n this.applyViewport();\n }\n\n get formatColumns(): CustomColumn[] {\n return this.formatColumnList;\n }\n\n set formatColumns(formatColumns: CustomColumn[]) {\n log.debug2(\n 'set formatColumns',\n formatColumns,\n this.formatColumnList,\n formatColumns === this.formatColumnList\n );\n if (this.formatColumnList.length === 0 && formatColumns.length === 0) {\n log.debug('Ignore empty initial formatColumns');\n this.formatColumnList = formatColumns;\n return;\n }\n if (this.formatColumnList === formatColumns) {\n log.debug('Ignore same formatColumns');\n return;\n }\n this.closeSubscription();\n this.formatColumnList = formatColumns;\n this.table.applyCustomColumns([...this.customColumns, ...formatColumns]);\n this.applyViewport();\n }\n\n updateFrozenColumns(columns: ColumnName[]): void {\n this.userFrozenColumns = columns;\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {\n detail: this.table,\n })\n );\n }\n\n set totalsConfig(totalsConfig: UITotalsTableConfig | null) {\n log.debug('set totalsConfig', totalsConfig);\n\n if (totalsConfig === this.totals) {\n // Totals already set, or it will be set when the next model actually gets set\n return;\n }\n\n this.totals = totalsConfig;\n this.formattedStringData = [];\n\n if (this.totalsTablePromise != null) {\n this.totalsTablePromise.cancel();\n }\n\n this.setTotalsTable(null);\n\n if (totalsConfig == null) {\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n return;\n }\n\n this.totalsTablePromise = PromiseUtils.makeCancelable(\n this.table.getTotalsTable(totalsConfig),\n table => table.close()\n );\n this.totalsTablePromise\n .then(totalsTable => {\n this.totalsTablePromise = null;\n this.setTotalsTable(totalsTable);\n })\n .catch(err => {\n if (PromiseUtils.isCanceled(err)) {\n return;\n }\n\n log.error('Unable to set next totalsTable', err);\n this.totalsTablePromise = null;\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, {\n detail: err,\n })\n );\n });\n }\n\n get isFilterRequired(): boolean {\n return this.table.isUncoalesced;\n }\n\n isFilterable(columnIndex: ModelIndex): boolean {\n return this.getCachedFilterableColumnSet(this.columns).has(columnIndex);\n }\n\n async export(): Promise<Table> {\n return this.table.freeze();\n }\n\n columnStatistics(column: Column): Promise<ColumnStatistics> {\n return this.table.getColumnStatistics(column);\n }\n\n getCachedFilterableColumnSet = memoize(\n (columns: Column[]) =>\n new Set(columns.map((_: Column, index: ModelIndex) => index))\n );\n\n isColumnMovable(modelIndex: ModelIndex): boolean {\n const columnName = this.columns[modelIndex].name;\n if (\n this.frontColumns.includes(columnName) ||\n this.backColumns.includes(columnName) ||\n this.frozenColumns.includes(columnName)\n ) {\n return false;\n }\n return !this.isKeyColumn(modelIndex);\n }\n\n isColumnFrozen(modelIndex: ModelIndex): boolean {\n return this.frozenColumns.includes(this.columns[modelIndex].name);\n }\n\n async delete(ranges: GridRange[]): Promise<void> {\n if (!this.isDeletableRanges(ranges)) {\n throw new Error(`Undeletable ranges ${ranges}`);\n }\n\n assertNotNull(this.inputTable);\n const { keyColumns } = this.inputTable;\n if (keyColumns.length === 0) {\n throw new Error('No key columns to allow deletion');\n }\n\n const pendingAreaRange = this.getPendingAreaRange();\n const pendingRanges = ranges\n .map(range => GridRange.intersection(pendingAreaRange, range))\n .filter(range => range != null)\n .map(range => {\n assertNotNull(range);\n\n return GridRange.offset(\n range,\n 0,\n -(this.floatingTopRowCount + this.table.size)\n );\n });\n\n if (pendingRanges.length > 0) {\n const newDataMap = new Map(super.pendingDataMap);\n for (let i = 0; i < pendingRanges.length; i += 1) {\n const pendingRange = pendingRanges[i];\n assertNotNull(pendingRange.startRow);\n assertNotNull(pendingRange.endRow);\n for (let r = pendingRange.startRow; r <= pendingRange.endRow; r += 1) {\n newDataMap.delete(r);\n }\n }\n super.pendingDataMap = newDataMap;\n\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n if (tableRanges.length <= 0) {\n return;\n }\n const [data, deleteTable] = await Promise.all([\n // Need to get the key values of each row\n this.snapshot(\n tableRanges.map(range => {\n assertNotNull(range);\n return new GridRange(\n 0,\n range.startRow,\n keyColumns.length - 1,\n range.endRow\n );\n })\n ),\n this.table.copy(),\n ]);\n\n // Now copy the existing table and filter it on the values in the snapshot for the key columns in the input table\n const filters = data.map(row => {\n const columnFilters = [];\n for (let c = 0; c < keyColumns.length; c += 1) {\n const column = keyColumns[c];\n const value = row[c];\n const filterValue = TableUtils.makeFilterRawValue(column.type, value);\n const filter = column.filter().eq(filterValue);\n columnFilters.push(filter);\n }\n return columnFilters.reduce((agg, curr) => agg?.and(curr) ?? curr);\n });\n\n const filter = filters.reduce((agg, curr) => agg?.or(curr) ?? curr);\n\n deleteTable.applyFilter([filter]);\n\n await this.inputTable?.deleteTable(deleteTable);\n deleteTable.close();\n }\n}\n\nexport default IrisGridTableModel;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IrisGridTableModel.js","names":["memoize","GridRange","Log","Formatter","TableUtils","EventShimCustomEvent","PromiseUtils","assertNotNull","IrisGridModel","IrisGridTableModelTemplate","log","module","IrisGridTableModel","constructor","table","formatter","inputTable","layoutHintsFrontColumns","layoutHintsBackColumns","layoutHintsFrozenColumns","userFrozenColumns","columns","Set","map","_","index","customColumnList","formatColumnList","isExportAvailable","freeze","isColumnStatisticsAvailable","getColumnStatistics","isValuesTableAvailable","selectDistinct","copy","isRollupAvailable","rollup","isSelectDistinctAvailable","isCustomColumnsAvailable","applyCustomColumns","isFormatColumnsAvailable","frontColumns","getMemoizedFrontColumns","layoutHints","backColumns","getMemoizedBackColumns","frozenColumns","getMemoizedFrozenColumns","floatingLeftColumnCount","length","description","customColumns","debug2","debug","closeSubscription","formatColumns","applyViewport","updateFrozenColumns","dispatchEvent","EVENT","TABLE_CHANGED","detail","totalsConfig","totals","formattedStringData","totalsTablePromise","cancel","setTotalsTable","UPDATED","makeCancelable","getTotalsTable","close","then","totalsTable","catch","err","isCanceled","error","REQUEST_FAILED","isFilterRequired","isUncoalesced","isFilterable","columnIndex","getCachedFilterableColumnSet","has","export","columnStatistics","column","isColumnMovable","modelIndex","columnName","name","includes","isKeyColumn","isColumnFrozen","delete","ranges","isDeletableRanges","Error","keyColumns","pendingAreaRange","getPendingAreaRange","pendingRanges","range","intersection","filter","offset","floatingTopRowCount","size","newDataMap","Map","i","pendingRange","startRow","endRow","r","PENDING_DATA_UPDATED","tableAreaRange","getTableAreaRange","tableRanges","data","deleteTable","Promise","all","snapshot","filters","row","columnFilters","c","value","filterValue","makeFilterRawValue","type","eq","push","reduce","agg","curr","and","or","applyFilter"],"sources":["../src/IrisGridTableModel.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport memoize from 'memoize-one';\nimport { GridRange, ModelIndex } from '@deephaven/grid';\nimport {\n Column,\n ColumnStatistics,\n CustomColumn,\n InputTable,\n LayoutHints,\n Table,\n} from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport {\n EventShimCustomEvent,\n PromiseUtils,\n assertNotNull,\n} from '@deephaven/utils';\nimport IrisGridModel from './IrisGridModel';\nimport { ColumnName, UITotalsTableConfig, UIRow } from './CommonTypes';\nimport IrisGridTableModelTemplate from './IrisGridTableModelTemplate';\n\nconst log = Log.module('IrisGridTableModel');\n\n/**\n * Model for a grid showing an iris data table\n */\n\nclass IrisGridTableModel extends IrisGridTableModelTemplate<Table, UIRow> {\n userFrozenColumns?: ColumnName[];\n\n customColumnList: string[];\n\n formatColumnList: CustomColumn[];\n\n /**\n * @param table Iris data table to be used in the model\n * @param formatter The formatter to use when getting formats\n * @param inputTable Iris input table associated with this table\n */\n constructor(\n table: Table,\n formatter = new Formatter(),\n inputTable: InputTable | null = null\n ) {\n super(table, formatter, inputTable);\n\n this.customColumnList = [];\n this.formatColumnList = [];\n }\n\n get isExportAvailable(): boolean {\n return this.table.freeze != null;\n }\n\n get isColumnStatisticsAvailable(): boolean {\n return this.table.getColumnStatistics != null;\n }\n\n get isValuesTableAvailable(): boolean {\n return this.table.selectDistinct != null && this.table.copy != null;\n }\n\n get isRollupAvailable(): boolean {\n return this.table.rollup != null;\n }\n\n get isSelectDistinctAvailable(): boolean {\n return this.table.selectDistinct != null;\n }\n\n get isCustomColumnsAvailable(): boolean {\n return this.table.applyCustomColumns != null;\n }\n\n get isFormatColumnsAvailable(): boolean {\n return this.table.applyCustomColumns != null;\n }\n\n getMemoizedFrontColumns = memoize(\n (layoutHintsFrontColumns: ColumnName[] | undefined) =>\n layoutHintsFrontColumns ?? []\n );\n\n get frontColumns(): ColumnName[] {\n return this.getMemoizedFrontColumns(this.layoutHints?.frontColumns);\n }\n\n getMemoizedBackColumns = memoize(\n (layoutHintsBackColumns: ColumnName[] | undefined) =>\n layoutHintsBackColumns ?? []\n );\n\n get backColumns(): ColumnName[] {\n return this.getMemoizedBackColumns(this.layoutHints?.backColumns);\n }\n\n getMemoizedFrozenColumns = memoize(\n (\n layoutHintsFrozenColumns: ColumnName[],\n userFrozenColumns?: ColumnName[]\n ): ColumnName[] => userFrozenColumns ?? layoutHintsFrozenColumns ?? []\n );\n\n get frozenColumns(): ColumnName[] {\n return this.getMemoizedFrozenColumns(\n this.layoutHints?.frozenColumns,\n this.userFrozenColumns\n );\n }\n\n get layoutHints(): LayoutHints {\n return this.table.layoutHints;\n }\n\n get floatingLeftColumnCount(): number {\n return this.frozenColumns.length;\n }\n\n get description(): string {\n return this.table.description;\n }\n\n get customColumns(): ColumnName[] {\n return this.customColumnList;\n }\n\n set customColumns(customColumns: ColumnName[]) {\n log.debug2(\n 'set customColumns',\n customColumns,\n this.customColumnList,\n customColumns === this.customColumnList\n );\n if (this.customColumnList.length === 0 && customColumns.length === 0) {\n log.debug('Ignore empty initial customColumns');\n this.customColumnList = customColumns;\n return;\n }\n if (this.customColumnList === customColumns) {\n log.debug('Ignore same customColumns');\n return;\n }\n this.closeSubscription();\n this.customColumnList = customColumns;\n this.table.applyCustomColumns([...customColumns, ...this.formatColumns]);\n this.applyViewport();\n }\n\n get formatColumns(): CustomColumn[] {\n return this.formatColumnList;\n }\n\n set formatColumns(formatColumns: CustomColumn[]) {\n log.debug2(\n 'set formatColumns',\n formatColumns,\n this.formatColumnList,\n formatColumns === this.formatColumnList\n );\n if (this.formatColumnList.length === 0 && formatColumns.length === 0) {\n log.debug('Ignore empty initial formatColumns');\n this.formatColumnList = formatColumns;\n return;\n }\n if (this.formatColumnList === formatColumns) {\n log.debug('Ignore same formatColumns');\n return;\n }\n this.closeSubscription();\n this.formatColumnList = formatColumns;\n this.table.applyCustomColumns([...this.customColumns, ...formatColumns]);\n this.applyViewport();\n }\n\n updateFrozenColumns(columns: ColumnName[]): void {\n this.userFrozenColumns = columns;\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.TABLE_CHANGED, {\n detail: this.table,\n })\n );\n }\n\n set totalsConfig(totalsConfig: UITotalsTableConfig | null) {\n log.debug('set totalsConfig', totalsConfig);\n\n if (totalsConfig === this.totals) {\n // Totals already set, or it will be set when the next model actually gets set\n return;\n }\n\n this.totals = totalsConfig;\n this.formattedStringData = [];\n\n if (this.totalsTablePromise != null) {\n this.totalsTablePromise.cancel();\n }\n\n this.setTotalsTable(null);\n\n if (totalsConfig == null) {\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n return;\n }\n\n this.totalsTablePromise = PromiseUtils.makeCancelable(\n this.table.getTotalsTable(totalsConfig),\n table => table.close()\n );\n this.totalsTablePromise\n .then(totalsTable => {\n this.totalsTablePromise = null;\n this.setTotalsTable(totalsTable);\n })\n .catch(err => {\n if (PromiseUtils.isCanceled(err)) {\n return;\n }\n\n log.error('Unable to set next totalsTable', err);\n this.totalsTablePromise = null;\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.REQUEST_FAILED, {\n detail: err,\n })\n );\n });\n }\n\n get isFilterRequired(): boolean {\n return this.table.isUncoalesced;\n }\n\n isFilterable(columnIndex: ModelIndex): boolean {\n return this.getCachedFilterableColumnSet(this.columns).has(columnIndex);\n }\n\n async export(): Promise<Table> {\n return this.table.freeze();\n }\n\n columnStatistics(column: Column): Promise<ColumnStatistics> {\n return this.table.getColumnStatistics(column);\n }\n\n getCachedFilterableColumnSet = memoize(\n (columns: Column[]) =>\n new Set(columns.map((_: Column, index: ModelIndex) => index))\n );\n\n isColumnMovable(modelIndex: ModelIndex): boolean {\n const columnName = this.columns[modelIndex].name;\n if (\n this.frontColumns.includes(columnName) ||\n this.backColumns.includes(columnName) ||\n this.frozenColumns.includes(columnName)\n ) {\n return false;\n }\n return !this.isKeyColumn(modelIndex);\n }\n\n isColumnFrozen(modelIndex: ModelIndex): boolean {\n return this.frozenColumns.includes(this.columns[modelIndex].name);\n }\n\n async delete(ranges: GridRange[]): Promise<void> {\n if (!this.isDeletableRanges(ranges)) {\n throw new Error(`Undeletable ranges ${ranges}`);\n }\n\n assertNotNull(this.inputTable);\n const { keyColumns } = this.inputTable;\n if (keyColumns.length === 0) {\n throw new Error('No key columns to allow deletion');\n }\n\n const pendingAreaRange = this.getPendingAreaRange();\n const pendingRanges = ranges\n .map(range => GridRange.intersection(pendingAreaRange, range))\n .filter(range => range != null)\n .map(range => {\n assertNotNull(range);\n\n return GridRange.offset(\n range,\n 0,\n -(this.floatingTopRowCount + this.table.size)\n );\n });\n\n if (pendingRanges.length > 0) {\n const newDataMap = new Map(super.pendingDataMap);\n for (let i = 0; i < pendingRanges.length; i += 1) {\n const pendingRange = pendingRanges[i];\n assertNotNull(pendingRange.startRow);\n assertNotNull(pendingRange.endRow);\n for (let r = pendingRange.startRow; r <= pendingRange.endRow; r += 1) {\n newDataMap.delete(r);\n }\n }\n super.pendingDataMap = newDataMap;\n\n this.formattedStringData = [];\n\n this.dispatchEvent(\n new EventShimCustomEvent(IrisGridModel.EVENT.PENDING_DATA_UPDATED)\n );\n\n this.dispatchEvent(new EventShimCustomEvent(IrisGridModel.EVENT.UPDATED));\n }\n\n const tableAreaRange = this.getTableAreaRange();\n const tableRanges = ranges\n .map(range => GridRange.intersection(tableAreaRange, range))\n .filter(range => range != null);\n if (tableRanges.length <= 0) {\n return;\n }\n const [data, deleteTable] = await Promise.all([\n // Need to get the key values of each row\n this.snapshot(\n tableRanges.map(range => {\n assertNotNull(range);\n return new GridRange(\n 0,\n range.startRow,\n keyColumns.length - 1,\n range.endRow\n );\n })\n ),\n this.table.copy(),\n ]);\n\n // Now copy the existing table and filter it on the values in the snapshot for the key columns in the input table\n const filters = data.map(row => {\n const columnFilters = [];\n for (let c = 0; c < keyColumns.length; c += 1) {\n const column = keyColumns[c];\n const value = row[c];\n const filterValue = TableUtils.makeFilterRawValue(column.type, value);\n const filter = column.filter().eq(filterValue);\n columnFilters.push(filter);\n }\n return columnFilters.reduce((agg, curr) => agg?.and(curr) ?? curr);\n });\n\n const filter = filters.reduce((agg, curr) => agg?.or(curr) ?? curr);\n\n deleteTable.applyFilter([filter]);\n\n await this.inputTable?.deleteTable(deleteTable);\n deleteTable.close();\n }\n}\n\nexport default IrisGridTableModel;\n"],"mappings":"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"}