@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.
- package/dist/AdvancedFilterCreator.js +7 -65
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +0 -23
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +0 -52
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +2 -42
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js +0 -11
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.js +1 -20
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CrossColumnSearch.js +2 -23
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js +2 -36
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.d.ts +1 -1
- package/dist/GotoRow.d.ts.map +1 -1
- package/dist/GotoRow.js +2 -7
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.d.ts +11 -5
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +77 -519
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.d.ts +1 -1
- package/dist/IrisGridBottomBar.d.ts.map +1 -1
- package/dist/IrisGridBottomBar.js +2 -2
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +6 -21
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCopyHandler.js +3 -50
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +2 -12
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.js +32 -58
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.js +0 -7
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +0 -4
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js +0 -23
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.js +9 -153
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js +41 -183
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridShortcuts.js.map +1 -1
- package/dist/IrisGridTableModel.js +7 -86
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +70 -461
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js +0 -23
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +3 -42
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +8 -2
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +97 -195
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingKeyError.js +0 -7
- package/dist/MissingKeyError.js.map +1 -1
- package/dist/PartitionSelectorSearch.js +2 -48
- package/dist/PartitionSelectorSearch.js.map +1 -1
- package/dist/PendingDataBottomBar.d.ts +1 -1
- package/dist/PendingDataBottomBar.d.ts.map +1 -1
- package/dist/PendingDataBottomBar.js +2 -7
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/TableViewportUpdater.js +3 -29
- package/dist/TableViewportUpdater.js.map +1 -1
- package/dist/ToastBottomBar.d.ts +1 -1
- package/dist/ToastBottomBar.d.ts.map +1 -1
- package/dist/ToastBottomBar.js +2 -4
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/TreeTableViewportUpdater.js +0 -21
- package/dist/TreeTableViewportUpdater.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +4 -25
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js +0 -7
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js +0 -9
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +3 -9
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js +0 -8
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/index.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ClearFilterKeyHandler.js +0 -8
- package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +1 -10
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +0 -11
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +2 -32
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +4 -34
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +0 -20
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +15 -105
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +0 -9
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +0 -17
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +2 -15
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +0 -6
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/mousehandlers/index.js.map +1 -1
- package/dist/sidebar/AdvancedSettings.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.d.ts +4 -4
- package/dist/sidebar/AdvancedSettingsMenu.d.ts.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +2 -6
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsType.js +0 -2
- package/dist/sidebar/AdvancedSettingsType.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js +2 -46
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +6 -58
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +4 -15
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +5 -36
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/OptionType.js +0 -2
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/RollupRows.js +9 -65
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +0 -13
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +0 -52
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.js +10 -123
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/VisibilityOrderingBuilder.js +37 -116
- package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +2 -14
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationOperation.js +0 -2
- package/dist/sidebar/aggregations/AggregationOperation.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +2 -5
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts +1 -1
- package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +2 -12
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +2 -35
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +0 -3
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +16 -26
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +9 -172
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -16
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +2 -12
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/icons/BarIcon.js +0 -3
- package/dist/sidebar/icons/BarIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/FormatRowWhereIcon.js +2 -5
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -1
- package/dist/sidebar/icons/HistogramIcon.js +0 -3
- package/dist/sidebar/icons/HistogramIcon.js.map +1 -1
- package/dist/sidebar/icons/LineIcon.js +0 -3
- package/dist/sidebar/icons/LineIcon.js.map +1 -1
- package/dist/sidebar/icons/PieIcon.js +0 -3
- package/dist/sidebar/icons/PieIcon.js.map +1 -1
- package/dist/sidebar/icons/ScatterIcon.js +0 -3
- package/dist/sidebar/icons/ScatterIcon.js.map +1 -1
- package/dist/sidebar/icons/index.js.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- 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
|
-
|
|
242
|
-
|
|
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
|
-
|
|
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()]);
|
|
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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"}
|