@deephaven/iris-grid 1.22.1 → 1.22.2-alpha-pivot-builder.0730ba6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +296 -1
- package/dist/AdvancedFilterCreator.js +65 -102
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +22 -37
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +37 -63
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +29 -59
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js +6 -8
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.js +22 -28
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CommonTypes.d.ts +84 -2
- package/dist/CommonTypes.d.ts.map +1 -1
- package/dist/CommonTypes.js.map +1 -1
- package/dist/CrossColumnSearch.js +20 -29
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.css +3 -0
- package/dist/FilterInputField.css.map +1 -1
- package/dist/FilterInputField.js +19 -46
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.js +32 -29
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.css +3 -0
- package/dist/IrisGrid.css.map +1 -1
- package/dist/IrisGrid.d.ts +99 -4
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +732 -860
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.js +10 -11
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCacheUtils.js +28 -8
- package/dist/IrisGridCacheUtils.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +30 -13
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCellRendererUtils.js +6 -12
- package/dist/IrisGridCellRendererUtils.js.map +1 -1
- package/dist/IrisGridCopyHandler.js +28 -47
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +28 -51
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +36 -1
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +42 -1
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +32 -30
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridModelWidgetProps.d.ts +26 -0
- package/dist/IrisGridModelWidgetProps.d.ts.map +1 -0
- package/dist/IrisGridModelWidgetProps.js +2 -0
- package/dist/IrisGridModelWidgetProps.js.map +1 -0
- package/dist/IrisGridPartitionSelector.js +28 -62
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +41 -14
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js +162 -264
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.js +23 -16
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +49 -73
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js +19 -19
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTextCellRenderer.d.ts.map +1 -1
- package/dist/IrisGridTextCellRenderer.js +36 -53
- package/dist/IrisGridTextCellRenderer.js.map +1 -1
- package/dist/IrisGridTheme.js +9 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridThemeProvider.js +5 -7
- package/dist/IrisGridThemeProvider.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +5 -9
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +25 -2
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +297 -294
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/LazyIrisGrid.d.ts +1 -1
- package/dist/NoPastePermissionModal.js +3 -5
- package/dist/NoPastePermissionModal.js.map +1 -1
- package/dist/PendingDataBottomBar.js +27 -16
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/ToastBottomBar.js +16 -8
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +11 -24
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/CopyCellKeyHandler.js +3 -4
- package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +1 -3
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +1 -3
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +35 -59
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +13 -29
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +8 -17
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +96 -199
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +2 -4
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +16 -30
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js +5 -13
- package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +20 -36
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +3 -5
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js +9 -18
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +10 -18
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +12 -5
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js +45 -102
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +35 -77
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +9 -11
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +17 -24
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/IrisGridTableOptionsWidgetProps.d.ts +22 -0
- package/dist/sidebar/IrisGridTableOptionsWidgetProps.d.ts.map +1 -0
- package/dist/sidebar/IrisGridTableOptionsWidgetProps.js +2 -0
- package/dist/sidebar/IrisGridTableOptionsWidgetProps.js.map +1 -0
- package/dist/sidebar/OptionType.d.ts +8 -0
- package/dist/sidebar/OptionType.d.ts.map +1 -1
- package/dist/sidebar/OptionType.js +7 -0
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/PluginTableOptionsErrorBoundary.d.ts +25 -0
- package/dist/sidebar/PluginTableOptionsErrorBoundary.d.ts.map +1 -0
- package/dist/sidebar/PluginTableOptionsErrorBoundary.js +49 -0
- package/dist/sidebar/PluginTableOptionsErrorBoundary.js.map +1 -0
- package/dist/sidebar/RollupRows.js +72 -113
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +16 -33
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +50 -74
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.js +18 -42
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +25 -18
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +1 -3
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +45 -34
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +35 -24
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +38 -21
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +27 -11
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +9 -11
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +48 -57
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +35 -24
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +26 -11
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/index.d.ts +3 -2
- package/dist/sidebar/index.d.ts.map +1 -1
- package/dist/sidebar/index.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js +5 -7
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.css +3 -0
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.css.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +24 -18
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +166 -256
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +4 -11
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +28 -14
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +16 -19
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +1 -3
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +19 -29
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +39 -52
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +18 -23
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +19 -15
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +16 -30
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +30 -39
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +16 -16
package/dist/IrisGrid.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
1
7
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
2
8
|
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
3
9
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -42,6 +48,7 @@ import IrisGridModel from "./IrisGridModel.js";
|
|
|
42
48
|
import { isPartitionedGridModel } from "./PartitionedGridModel.js";
|
|
43
49
|
import IrisGridPartitionSelector from "./IrisGridPartitionSelector.js";
|
|
44
50
|
import SelectDistinctBuilder from "./sidebar/SelectDistinctBuilder.js";
|
|
51
|
+
import PluginTableOptionsErrorBoundary from "./sidebar/PluginTableOptionsErrorBoundary.js";
|
|
45
52
|
import AdvancedSettingsType from "./sidebar/AdvancedSettingsType.js";
|
|
46
53
|
import AdvancedSettingsMenu from "./sidebar/AdvancedSettingsMenu.js";
|
|
47
54
|
import SHORTCUTS from "./IrisGridShortcuts.js";
|
|
@@ -49,7 +56,6 @@ import ConditionalFormattingMenu from "./sidebar/conditional-formatting/Conditio
|
|
|
49
56
|
import ConditionalFormatEditor from "./sidebar/conditional-formatting/ConditionalFormatEditor.js";
|
|
50
57
|
import IrisGridCellOverflowModal from "./IrisGridCellOverflowModal.js";
|
|
51
58
|
import GotoRow from "./GotoRow.js";
|
|
52
|
-
import AggregationOperation from "./sidebar/aggregations/AggregationOperation.js";
|
|
53
59
|
import { IrisGridThemeContext } from "./IrisGridThemeProvider.js";
|
|
54
60
|
import { isMissingPartitionError } from "./MissingPartitionError.js";
|
|
55
61
|
import { NoPastePermissionModal } from "./NoPastePermissionModal.js";
|
|
@@ -67,19 +73,28 @@ var DEFAULT_AGGREGATION_SETTINGS = Object.freeze({
|
|
|
67
73
|
});
|
|
68
74
|
var UNFORMATTED_DATE_PATTERN = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSS z";
|
|
69
75
|
function isEmptyConfig(_ref) {
|
|
70
|
-
var
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
sorts
|
|
80
|
-
} = _ref;
|
|
76
|
+
var advancedFilters = _ref.advancedFilters,
|
|
77
|
+
aggregationSettings = _ref.aggregationSettings,
|
|
78
|
+
customColumns = _ref.customColumns,
|
|
79
|
+
quickFilters = _ref.quickFilters,
|
|
80
|
+
reverse = _ref.reverse,
|
|
81
|
+
rollupConfig = _ref.rollupConfig,
|
|
82
|
+
searchFilter = _ref.searchFilter,
|
|
83
|
+
selectDistinctColumns = _ref.selectDistinctColumns,
|
|
84
|
+
sorts = _ref.sorts;
|
|
81
85
|
return advancedFilters.size === 0 && aggregationSettings.aggregations.length === 0 && customColumns.length === 0 && quickFilters.size === 0 && !reverse && rollupConfig == null && searchFilter == null && selectDistinctColumns.length === 0 && sorts.length === 0;
|
|
82
86
|
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* The subset of `IrisGridProps` that overrides how the grid presents its
|
|
90
|
+
* model: theme, canvas renderer, extra mouse handlers, and the metric
|
|
91
|
+
* calculator factory. Hosts that render `<IrisGrid>` on behalf of a plugin
|
|
92
|
+
* (e.g. `GridWidgetPlugin`) accept this as a single passthrough bag so they
|
|
93
|
+
* don't need to know each view concern by name, and plugins build it from
|
|
94
|
+
* their own hooks. Kept as a `Pick` (not `Partial<IrisGridProps>`) so it can
|
|
95
|
+
* never clobber structural props like `model` or `ref`.
|
|
96
|
+
*/
|
|
97
|
+
|
|
83
98
|
class IrisGrid extends Component {
|
|
84
99
|
constructor(props) {
|
|
85
100
|
var _model$layoutHints, _model$columns$0$name, _model$columns$;
|
|
@@ -117,6 +132,13 @@ class IrisGrid extends Component {
|
|
|
117
132
|
_defineProperty(this, "tableUtils", void 0);
|
|
118
133
|
_defineProperty(this, "keyHandlers", void 0);
|
|
119
134
|
_defineProperty(this, "mouseHandlers", void 0);
|
|
135
|
+
/**
|
|
136
|
+
* The metric calculator factory most recently used to instantiate the
|
|
137
|
+
* calculator currently stored in state. Used by `maybeRebuildMetricCalculator`
|
|
138
|
+
* (called from `componentDidUpdate` when the `getMetricCalculator` prop
|
|
139
|
+
* changes) to detect when a different factory is supplied and rebuild.
|
|
140
|
+
*/
|
|
141
|
+
_defineProperty(this, "lastMetricCalculatorFactory", void 0);
|
|
120
142
|
_defineProperty(this, "slideTransitionRef", /*#__PURE__*/React.createRef());
|
|
121
143
|
_defineProperty(this, "bottomTransitionRef", /*#__PURE__*/React.createRef());
|
|
122
144
|
_defineProperty(this, "getAdvancedMenuOpenedHandler", memoize(column => this.handleAdvancedMenuOpened.bind(this, column), {
|
|
@@ -146,63 +168,72 @@ class IrisGrid extends Component {
|
|
|
146
168
|
optionItems.push({
|
|
147
169
|
type: OptionType.CHART_BUILDER,
|
|
148
170
|
title: 'Chart Builder',
|
|
149
|
-
icon: dhGraphLineUp
|
|
171
|
+
icon: dhGraphLineUp,
|
|
172
|
+
order: 100
|
|
150
173
|
});
|
|
151
174
|
}
|
|
152
175
|
if (isOrganizeColumnsAvailable) {
|
|
153
176
|
optionItems.push({
|
|
154
177
|
type: OptionType.VISIBILITY_ORDERING_BUILDER,
|
|
155
178
|
title: 'Organize Columns',
|
|
156
|
-
icon: dhEye
|
|
179
|
+
icon: dhEye,
|
|
180
|
+
order: 200
|
|
157
181
|
});
|
|
158
182
|
}
|
|
159
183
|
if (isFormatColumnsAvailable) {
|
|
160
184
|
optionItems.push({
|
|
161
185
|
type: OptionType.CONDITIONAL_FORMATTING,
|
|
162
186
|
title: 'Conditional Formatting',
|
|
163
|
-
icon: vsEdit
|
|
187
|
+
icon: vsEdit,
|
|
188
|
+
order: 300
|
|
164
189
|
});
|
|
165
190
|
}
|
|
166
191
|
if (isCustomColumnsAvailable) {
|
|
167
192
|
optionItems.push({
|
|
168
193
|
type: OptionType.CUSTOM_COLUMN_BUILDER,
|
|
169
194
|
title: 'Custom Columns',
|
|
170
|
-
icon: vsSplitHorizontal
|
|
195
|
+
icon: vsSplitHorizontal,
|
|
196
|
+
order: 400
|
|
171
197
|
});
|
|
172
198
|
}
|
|
173
199
|
if (isRollupAvailable) {
|
|
174
200
|
optionItems.push({
|
|
175
201
|
type: OptionType.ROLLUP_ROWS,
|
|
176
202
|
title: 'Rollup Rows',
|
|
177
|
-
icon: dhTriangleDownSquare
|
|
203
|
+
icon: dhTriangleDownSquare,
|
|
204
|
+
order: 500
|
|
178
205
|
});
|
|
179
206
|
}
|
|
180
207
|
if (isTotalsAvailable) {
|
|
181
208
|
optionItems.push({
|
|
182
209
|
type: OptionType.AGGREGATIONS,
|
|
183
210
|
title: 'Aggregate Columns',
|
|
184
|
-
icon: vsSymbolOperator
|
|
211
|
+
icon: vsSymbolOperator,
|
|
212
|
+
order: 600
|
|
185
213
|
});
|
|
186
214
|
}
|
|
187
215
|
if (isSelectDistinctAvailable) {
|
|
188
216
|
optionItems.push({
|
|
189
217
|
type: OptionType.SELECT_DISTINCT,
|
|
190
218
|
title: 'Select Distinct Values',
|
|
191
|
-
icon: vsRuby
|
|
219
|
+
icon: vsRuby,
|
|
220
|
+
order: 700
|
|
192
221
|
});
|
|
193
222
|
}
|
|
194
223
|
if (isExportAvailable && canDownloadCsv) {
|
|
195
224
|
optionItems.push({
|
|
196
225
|
type: OptionType.TABLE_EXPORTER,
|
|
197
226
|
title: 'Download CSV',
|
|
198
|
-
icon: vsCloudDownload
|
|
227
|
+
icon: vsCloudDownload,
|
|
228
|
+
order: 800
|
|
199
229
|
});
|
|
200
230
|
}
|
|
201
231
|
if (hasAdvancedSettings) {
|
|
202
232
|
optionItems.push({
|
|
203
233
|
type: OptionType.ADVANCED_SETTINGS,
|
|
204
234
|
title: 'Advanced Settings',
|
|
205
|
-
icon: vsTools
|
|
235
|
+
icon: vsTools,
|
|
236
|
+
order: 900
|
|
206
237
|
});
|
|
207
238
|
}
|
|
208
239
|
optionItems.push({
|
|
@@ -211,7 +242,8 @@ class IrisGrid extends Component {
|
|
|
211
242
|
subtitle: toggleFilterBarAction.shortcut.getDisplayText(),
|
|
212
243
|
icon: vsFilter,
|
|
213
244
|
isOn: isFilterBarShown,
|
|
214
|
-
onChange: toggleFilterBarAction.action
|
|
245
|
+
onChange: toggleFilterBarAction.action,
|
|
246
|
+
order: 1000
|
|
215
247
|
});
|
|
216
248
|
if (canToggleSearch) {
|
|
217
249
|
optionItems.push({
|
|
@@ -220,7 +252,8 @@ class IrisGrid extends Component {
|
|
|
220
252
|
subtitle: toggleSearchBarAction.shortcut.getDisplayText(),
|
|
221
253
|
icon: vsSearch,
|
|
222
254
|
isOn: showSearchBar,
|
|
223
|
-
onChange: toggleSearchBarAction.action
|
|
255
|
+
onChange: toggleSearchBarAction.action,
|
|
256
|
+
order: 1100
|
|
224
257
|
});
|
|
225
258
|
}
|
|
226
259
|
optionItems.push({
|
|
@@ -229,48 +262,90 @@ class IrisGrid extends Component {
|
|
|
229
262
|
subtitle: toggleGotoRowAction.shortcut.getDisplayText(),
|
|
230
263
|
icon: vsReply,
|
|
231
264
|
isOn: showGotoRow,
|
|
232
|
-
onChange: toggleGotoRowAction.action
|
|
265
|
+
onChange: toggleGotoRowAction.action,
|
|
266
|
+
order: 1200
|
|
233
267
|
});
|
|
234
268
|
return Object.freeze(optionItems);
|
|
235
269
|
}, {
|
|
236
270
|
max: 1
|
|
237
271
|
}));
|
|
272
|
+
/**
|
|
273
|
+
* Apply the `transformTableOptions` transform (if any) to the
|
|
274
|
+
* default option list.
|
|
275
|
+
* Catches exceptions so a buggy plugin can't break the grid, and collapses
|
|
276
|
+
* duplicate `type` entries (last writer wins) before sorting by `order`.
|
|
277
|
+
*/
|
|
278
|
+
_defineProperty(this, "getCachedTransformedOptionItems", memoize((items, transformTableOptions) => {
|
|
279
|
+
if (transformTableOptions == null) {
|
|
280
|
+
return items;
|
|
281
|
+
}
|
|
282
|
+
var transformedItems;
|
|
283
|
+
try {
|
|
284
|
+
transformedItems = transformTableOptions(items);
|
|
285
|
+
} catch (err) {
|
|
286
|
+
log.error('transformTableOptions threw an error; falling back to defaults.', err);
|
|
287
|
+
return items;
|
|
288
|
+
}
|
|
289
|
+
// Collapse duplicate `type` entries before sorting. A duplicate `type`
|
|
290
|
+
// would otherwise collide on the `<Menu>` / `<Page>` React key and cause
|
|
291
|
+
// incorrect page reuse. Per the documented composition rule (see the
|
|
292
|
+
// package README), the last writer wins: a later entry — e.g. from a
|
|
293
|
+
// downstream middleware — overrides an earlier one with the same type.
|
|
294
|
+
// `Map.set` keeps the most recent value while preserving the original
|
|
295
|
+
// insertion slot, so an override stays in place unless it changes
|
|
296
|
+
// `order`.
|
|
297
|
+
var byType = new Map();
|
|
298
|
+
transformedItems.forEach(item => {
|
|
299
|
+
byType.set(String(item.type), item);
|
|
300
|
+
});
|
|
301
|
+
// Stably sort by ascending `order`. Items without an `order` sink to
|
|
302
|
+
// the end of the menu (default `Infinity`), while items with an `order`
|
|
303
|
+
// are positioned by their weight. Decorate-sort-undecorate guarantees
|
|
304
|
+
// stability regardless of the engine's sort implementation.
|
|
305
|
+
var sortedItems = [...byType.values()].map((item, index) => ({
|
|
306
|
+
item,
|
|
307
|
+
index
|
|
308
|
+
})).sort((a, b) => {
|
|
309
|
+
var _a$item$order, _b$item$order;
|
|
310
|
+
return ((_a$item$order = a.item.order) !== null && _a$item$order !== void 0 ? _a$item$order : Infinity) - ((_b$item$order = b.item.order) !== null && _b$item$order !== void 0 ? _b$item$order : Infinity) || a.index - b.index;
|
|
311
|
+
}).map(_ref2 => {
|
|
312
|
+
var item = _ref2.item;
|
|
313
|
+
return item;
|
|
314
|
+
});
|
|
315
|
+
return Object.freeze(sortedItems);
|
|
316
|
+
}, {
|
|
317
|
+
max: 1
|
|
318
|
+
}));
|
|
238
319
|
_defineProperty(this, "getCachedHiddenColumns", memoize((metricCalculator, userColumnWidths) => IrisGridUtils.getHiddenColumns(new Map([...metricCalculator.initialColumnWidths, ...userColumnWidths])), {
|
|
239
320
|
max: 1
|
|
240
321
|
}));
|
|
322
|
+
_defineProperty(this, "getCachedHiddenColumnNames", memoize((hiddenColumns, columns) => Object.freeze(hiddenColumns.map(idx => {
|
|
323
|
+
var _columns$idx;
|
|
324
|
+
return (_columns$idx = columns[idx]) === null || _columns$idx === void 0 ? void 0 : _columns$idx.name;
|
|
325
|
+
}).filter(n => n != null)), {
|
|
326
|
+
max: 1
|
|
327
|
+
}));
|
|
328
|
+
_defineProperty(this, "getCachedViewState", memoize(hiddenColumns => Object.freeze({
|
|
329
|
+
hiddenColumns
|
|
330
|
+
}), {
|
|
331
|
+
max: 1
|
|
332
|
+
}));
|
|
241
333
|
_defineProperty(this, "getAggregationMap", memoize((columns, aggregations) => {
|
|
242
334
|
var aggregationMap = {};
|
|
243
|
-
aggregations.forEach(
|
|
244
|
-
var
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
invert
|
|
248
|
-
} = _ref2;
|
|
335
|
+
aggregations.forEach(_ref3 => {
|
|
336
|
+
var operation = _ref3.operation,
|
|
337
|
+
selected = _ref3.selected,
|
|
338
|
+
invert = _ref3.invert;
|
|
249
339
|
aggregationMap[operation] = AggregationUtils.getOperationColumnNames(columns, operation, selected, invert);
|
|
250
340
|
});
|
|
251
341
|
return aggregationMap;
|
|
252
342
|
}, {
|
|
253
343
|
max: 1
|
|
254
344
|
}));
|
|
255
|
-
_defineProperty(this, "getOperationMap", memoize((columns, aggregations) => {
|
|
256
|
-
var operationMap = {};
|
|
257
|
-
aggregations.filter(a => !AggregationUtils.isRollupOperation(a.operation)).forEach(_ref3 => {
|
|
258
|
-
var {
|
|
259
|
-
operation,
|
|
260
|
-
selected,
|
|
261
|
-
invert
|
|
262
|
-
} = _ref3;
|
|
263
|
-
AggregationUtils.getOperationColumnNames(columns, operation, selected, invert).forEach(name => {
|
|
264
|
-
var _operationMap$name;
|
|
265
|
-
var newOperations = [...((_operationMap$name = operationMap[name]) !== null && _operationMap$name !== void 0 ? _operationMap$name : []), operation];
|
|
266
|
-
operationMap[name] = Object.freeze(newOperations);
|
|
267
|
-
});
|
|
268
|
-
});
|
|
269
|
-
return operationMap;
|
|
270
|
-
}, {
|
|
345
|
+
_defineProperty(this, "getOperationMap", memoize((columns, aggregations) => IrisGridUtils.getOperationMap(columns, aggregations), {
|
|
271
346
|
max: 1
|
|
272
347
|
}));
|
|
273
|
-
_defineProperty(this, "getOperationOrder", memoize(aggregations =>
|
|
348
|
+
_defineProperty(this, "getOperationOrder", memoize(aggregations => IrisGridUtils.getOperationOrder(aggregations), {
|
|
274
349
|
max: 1
|
|
275
350
|
}));
|
|
276
351
|
_defineProperty(this, "getCachedFormatColumns", memoize((dh, columns, rules) => getFormatColumns(dh, columns, rules), {
|
|
@@ -298,28 +373,7 @@ class IrisGrid extends Component {
|
|
|
298
373
|
_defineProperty(this, "getModelRollupConfig", memoize((originalColumns, config, aggregationSettings) => IrisGridUtils.getModelRollupConfig(originalColumns, config, aggregationSettings), {
|
|
299
374
|
max: 1
|
|
300
375
|
}));
|
|
301
|
-
_defineProperty(this, "getModelTotalsConfig", memoize((columns, config, aggregationSettings) => {
|
|
302
|
-
var _config$columns$lengt, _config$columns;
|
|
303
|
-
if (((_config$columns$lengt = config === null || config === void 0 || (_config$columns = config.columns) === null || _config$columns === void 0 ? void 0 : _config$columns.length) !== null && _config$columns$lengt !== void 0 ? _config$columns$lengt : 0) > 0) {
|
|
304
|
-
// If we've got rollups, then aggregations are applied as part of that...
|
|
305
|
-
return null;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
// Filter out aggregations without any columns actually selected
|
|
309
|
-
var aggregations = aggregationSettings.aggregations.filter(agg => agg.selected.length > 0 || agg.invert);
|
|
310
|
-
if (aggregations.length === 0) {
|
|
311
|
-
// We don't actually have any aggregations set, don't bother
|
|
312
|
-
return null;
|
|
313
|
-
}
|
|
314
|
-
var operationMap = this.getOperationMap(columns, aggregations);
|
|
315
|
-
var operationOrder = this.getOperationOrder(aggregations);
|
|
316
|
-
return {
|
|
317
|
-
operationMap,
|
|
318
|
-
operationOrder,
|
|
319
|
-
showOnTop: aggregationSettings.showOnTop,
|
|
320
|
-
defaultOperation: AggregationOperation.SKIP
|
|
321
|
-
};
|
|
322
|
-
}, {
|
|
376
|
+
_defineProperty(this, "getModelTotalsConfig", memoize((columns, config, aggregationSettings) => IrisGridUtils.getModelTotalsConfig(columns, config, aggregationSettings), {
|
|
323
377
|
max: 1
|
|
324
378
|
}));
|
|
325
379
|
_defineProperty(this, "getCachedStateOverride", memoize((model, theme, hoverSelectColumn, isFilterBarShown, isSelectingColumn, loadingScrimProgress, quickFilters, advancedFilters, sorts, reverse, rollupConfig, isMenuShown) => ({
|
|
@@ -349,9 +403,7 @@ class IrisGrid extends Component {
|
|
|
349
403
|
|
|
350
404
|
// We only show the row footers when we have floating rows for aggregations
|
|
351
405
|
var rowFooterWidth = floatingRowCount > 0 ? (_theme$rowFooterWidth = theme === null || theme === void 0 ? void 0 : theme.rowFooterWidth) !== null && _theme$rowFooterWidth !== void 0 ? _theme$rowFooterWidth : baseTheme.rowFooterWidth : 0;
|
|
352
|
-
var
|
|
353
|
-
metricCalculator
|
|
354
|
-
} = this.state;
|
|
406
|
+
var metricCalculator = this.state.metricCalculator;
|
|
355
407
|
if (metricCalculator != null) {
|
|
356
408
|
metricCalculator.resetCalculatedColumnWidths();
|
|
357
409
|
metricCalculator.resetCalculatedRowHeights();
|
|
@@ -372,7 +424,7 @@ class IrisGrid extends Component {
|
|
|
372
424
|
_defineProperty(this, "getCachedKeyHandlers", memoize(keyHandlers => [...keyHandlers, ...this.keyHandlers].sort((a, b) => a.order - b.order), {
|
|
373
425
|
max: 1
|
|
374
426
|
}));
|
|
375
|
-
_defineProperty(this, "getCachedMouseHandlers", memoize(
|
|
427
|
+
_defineProperty(this, "getCachedMouseHandlers", memoize(mouseHandlersProp => [...mouseHandlersProp, ...this.mouseHandlers].map(handler => typeof handler === 'function' ? handler(this) : handler), {
|
|
376
428
|
max: 1
|
|
377
429
|
}));
|
|
378
430
|
_defineProperty(this, "getCachedRenderer", memoize(rendererProp => rendererProp !== null && rendererProp !== void 0 ? rendererProp : new IrisGridRenderer(), {
|
|
@@ -397,21 +449,15 @@ class IrisGrid extends Component {
|
|
|
397
449
|
max: 1
|
|
398
450
|
}));
|
|
399
451
|
_defineProperty(this, "updateSearchFilter", debounce((searchValue, selectedSearchColumns, columns, invertSearchColumns) => {
|
|
400
|
-
var
|
|
401
|
-
model
|
|
402
|
-
} = this.props;
|
|
452
|
+
var model = this.props.model;
|
|
403
453
|
var searchFilter = CrossColumnSearch.createSearchFilter(model.dh, searchValue, selectedSearchColumns, columns, invertSearchColumns);
|
|
404
454
|
this.setState({
|
|
405
455
|
searchFilter
|
|
406
456
|
});
|
|
407
457
|
}, SET_FILTER_DEBOUNCE));
|
|
408
458
|
_defineProperty(this, "showViewportLoading", throttle(() => {
|
|
409
|
-
var
|
|
410
|
-
|
|
411
|
-
} = this.props;
|
|
412
|
-
var {
|
|
413
|
-
loadingSpinnerShown
|
|
414
|
-
} = this.state;
|
|
459
|
+
var model = this.props.model;
|
|
460
|
+
var loadingSpinnerShown = this.state.loadingSpinnerShown;
|
|
415
461
|
if (model.isViewportPending && !loadingSpinnerShown) {
|
|
416
462
|
// We only want to show the viewport loading if the viewport is still loading
|
|
417
463
|
// and we're not already showing a loader for something else
|
|
@@ -431,9 +477,7 @@ class IrisGrid extends Component {
|
|
|
431
477
|
});
|
|
432
478
|
}, SET_CONDITIONAL_FORMAT_DEBOUNCE));
|
|
433
479
|
_defineProperty(this, "handleDownloadProgressUpdate", throttle((tableDownloadProgress, tableDownloadEstimatedTime) => {
|
|
434
|
-
var
|
|
435
|
-
tableDownloadStatus
|
|
436
|
-
} = this.state;
|
|
480
|
+
var tableDownloadStatus = this.state.tableDownloadStatus;
|
|
437
481
|
if (tableDownloadStatus === TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING) {
|
|
438
482
|
this.setState({
|
|
439
483
|
tableDownloadProgress,
|
|
@@ -473,12 +517,8 @@ class IrisGrid extends Component {
|
|
|
473
517
|
if (expandCellTooltipProps == null) {
|
|
474
518
|
return null;
|
|
475
519
|
}
|
|
476
|
-
var
|
|
477
|
-
|
|
478
|
-
} = this.state;
|
|
479
|
-
var {
|
|
480
|
-
model
|
|
481
|
-
} = this.props;
|
|
520
|
+
var expandTooltipDisplayValue = this.state.expandTooltipDisplayValue;
|
|
521
|
+
var model = this.props.model;
|
|
482
522
|
var isExpandAllAvailable = isExpandableGridModel(model) && model.isExpandAllAvailable;
|
|
483
523
|
var wrapperStyle = _objectSpread(_objectSpread({
|
|
484
524
|
position: 'absolute'
|
|
@@ -510,9 +550,7 @@ class IrisGrid extends Component {
|
|
|
510
550
|
if (hoverTooltipProps == null) {
|
|
511
551
|
return null;
|
|
512
552
|
}
|
|
513
|
-
var
|
|
514
|
-
hoverDisplayValue
|
|
515
|
-
} = this.state;
|
|
553
|
+
var hoverDisplayValue = this.state.hoverDisplayValue;
|
|
516
554
|
var wrapperStyle = _objectSpread(_objectSpread({
|
|
517
555
|
position: 'absolute'
|
|
518
556
|
}, hoverTooltipProps), {}, {
|
|
@@ -571,11 +609,14 @@ class IrisGrid extends Component {
|
|
|
571
609
|
this.handleMenuSelect = this.handleMenuSelect.bind(this);
|
|
572
610
|
this.handleMenuBack = this.handleMenuBack.bind(this);
|
|
573
611
|
this.handleRequestFailed = this.handleRequestFailed.bind(this);
|
|
612
|
+
this.handlePending = this.handlePending.bind(this);
|
|
613
|
+
this.handlePendingCleared = this.handlePendingCleared.bind(this);
|
|
574
614
|
this.handleSelectionChanged = this.handleSelectionChanged.bind(this);
|
|
575
615
|
this.handleMovedColumnsChanged = this.handleMovedColumnsChanged.bind(this);
|
|
576
616
|
this.handleHeaderGroupsChanged = this.handleHeaderGroupsChanged.bind(this);
|
|
577
617
|
this.handleUpdate = this.handleUpdate.bind(this);
|
|
578
618
|
this.handleTableChanged = this.handleTableChanged.bind(this);
|
|
619
|
+
this.handleSchemaChanged = this.handleSchemaChanged.bind(this);
|
|
579
620
|
this.handleTooltipRef = this.handleTooltipRef.bind(this);
|
|
580
621
|
this.handleViewChanged = this.handleViewChanged.bind(this);
|
|
581
622
|
this.handleFormatSelection = this.handleFormatSelection.bind(this);
|
|
@@ -648,9 +689,7 @@ class IrisGrid extends Component {
|
|
|
648
689
|
};
|
|
649
690
|
this.discardAction = {
|
|
650
691
|
action: () => {
|
|
651
|
-
var
|
|
652
|
-
model
|
|
653
|
-
} = this.props;
|
|
692
|
+
var model = this.props.model;
|
|
654
693
|
if (isEditableGridModel(model) && model.isEditable && model.pendingDataMap.size > 0) {
|
|
655
694
|
this.discardPending().catch(log.error);
|
|
656
695
|
}
|
|
@@ -659,9 +698,7 @@ class IrisGrid extends Component {
|
|
|
659
698
|
};
|
|
660
699
|
this.commitAction = {
|
|
661
700
|
action: () => {
|
|
662
|
-
var
|
|
663
|
-
model
|
|
664
|
-
} = this.props;
|
|
701
|
+
var model = this.props.model;
|
|
665
702
|
if (isEditableGridModel(model) && model.isEditable && model.pendingDataMap.size > 0 && model.pendingDataErrors.size === 0) {
|
|
666
703
|
this.commitPending().catch(log.error);
|
|
667
704
|
}
|
|
@@ -669,40 +706,36 @@ class IrisGrid extends Component {
|
|
|
669
706
|
shortcut: SHORTCUTS.INPUT_TABLE.COMMIT
|
|
670
707
|
};
|
|
671
708
|
this.contextActions = [this.toggleFilterBarAction, this.toggleSearchBarAction, this.toggleGotoRowAction, this.discardAction, this.commitAction];
|
|
672
|
-
var
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
} = props;
|
|
701
|
-
var {
|
|
702
|
-
dh: _dh
|
|
703
|
-
} = _model;
|
|
709
|
+
var _aggregationSettings = props.aggregationSettings,
|
|
710
|
+
conditionalFormats = props.conditionalFormats,
|
|
711
|
+
customColumnFormatMap = props.customColumnFormatMap,
|
|
712
|
+
columnAlignmentMap = props.columnAlignmentMap,
|
|
713
|
+
_isFilterBarShown = props.isFilterBarShown,
|
|
714
|
+
isSelectingPartition = props.isSelectingPartition,
|
|
715
|
+
partitions = props.partitions,
|
|
716
|
+
partitionConfig = props.partitionConfig,
|
|
717
|
+
_model = props.model,
|
|
718
|
+
movedColumnsProp = props.movedColumns,
|
|
719
|
+
movedRowsProp = props.movedRows,
|
|
720
|
+
_rollupConfig = props.rollupConfig,
|
|
721
|
+
_userColumnWidths = props.userColumnWidths,
|
|
722
|
+
userColumnWidthsByName = props.userColumnWidthsByName,
|
|
723
|
+
userRowHeights = props.userRowHeights,
|
|
724
|
+
_showSearchBar = props.showSearchBar,
|
|
725
|
+
_searchValue = props.searchValue,
|
|
726
|
+
_selectedSearchColumns = props.selectedSearchColumns,
|
|
727
|
+
_invertSearchColumns = props.invertSearchColumns,
|
|
728
|
+
_advancedFilters = props.advancedFilters,
|
|
729
|
+
_quickFilters = props.quickFilters,
|
|
730
|
+
selectDistinctColumns = props.selectDistinctColumns,
|
|
731
|
+
pendingDataMap = props.pendingDataMap,
|
|
732
|
+
canCopy = props.canCopy,
|
|
733
|
+
frozenColumns = props.frozenColumns,
|
|
734
|
+
columnHeaderGroups = props.columnHeaderGroups,
|
|
735
|
+
getMetricCalculator = props.getMetricCalculator;
|
|
736
|
+
var _dh = _model.dh;
|
|
704
737
|
var _keyHandlers = [new CopyCellKeyHandler(this), new ReverseKeyHandler(this), new ClearFilterKeyHandler(this)];
|
|
705
|
-
var
|
|
738
|
+
var mouseHandlers = [new IrisGridCellOverflowMouseHandler(this), new IrisGridRowTreeMouseHandler(this), new IrisGridTokenMouseHandler(this), new IrisGridColumnSelectMouseHandler(this), new IrisGridColumnTooltipMouseHandler(this), new IrisGridSortMouseHandler(this), new IrisGridFilterMouseHandler(this), new IrisGridContextMenuHandler(this, _dh), new IrisGridDataSelectMouseHandler(this), new PendingMouseHandler(this), new IrisGridPartitionedTableMouseHandler(this), ...(canCopy ? [new IrisGridCopyCellMouseHandler(this)] : [])];
|
|
706
739
|
if (canCopy) {
|
|
707
740
|
_keyHandlers.push(new CopyKeyHandler(this));
|
|
708
741
|
}
|
|
@@ -715,10 +748,15 @@ class IrisGrid extends Component {
|
|
|
715
748
|
movedColumns: _movedColumns,
|
|
716
749
|
initialColumnWidths: new Map(_model === null || _model === void 0 || (_model$layoutHints = _model.layoutHints) === null || _model$layoutHints === void 0 || (_model$layoutHints = _model$layoutHints.hiddenColumns) === null || _model$layoutHints === void 0 ? void 0 : _model$layoutHints.map(name => [_model.getColumnIndexByName(name), 0]))
|
|
717
750
|
});
|
|
751
|
+
// Remember the factory we used so `maybeRebuildMetricCalculator` (called
|
|
752
|
+
// from `componentDidUpdate` when the `getMetricCalculator` prop changes)
|
|
753
|
+
// can detect a model-driven swap, e.g. pivot-builder's proxy swapping its
|
|
754
|
+
// inner model.
|
|
755
|
+
this.lastMetricCalculatorFactory = getMetricCalculator;
|
|
718
756
|
var searchColumns = _selectedSearchColumns !== null && _selectedSearchColumns !== void 0 ? _selectedSearchColumns : [];
|
|
719
757
|
var _searchFilter = CrossColumnSearch.createSearchFilter(_dh, _searchValue, searchColumns, _model.columns, _invertSearchColumns);
|
|
720
758
|
this.tableUtils = new TableUtils(_dh);
|
|
721
|
-
this.mouseHandlers =
|
|
759
|
+
this.mouseHandlers = mouseHandlers;
|
|
722
760
|
this.keyHandlers = _keyHandlers;
|
|
723
761
|
this.state = {
|
|
724
762
|
isFilterBarShown: _isFilterBarShown,
|
|
@@ -810,31 +848,38 @@ class IrisGrid extends Component {
|
|
|
810
848
|
};
|
|
811
849
|
}
|
|
812
850
|
componentDidMount() {
|
|
813
|
-
var
|
|
814
|
-
model
|
|
815
|
-
} = this.props;
|
|
851
|
+
var model = this.props.model;
|
|
816
852
|
this.initState();
|
|
817
853
|
this.startListening(model);
|
|
818
854
|
}
|
|
819
855
|
componentDidUpdate(prevProps, prevState) {
|
|
820
|
-
var
|
|
821
|
-
inputFilters,
|
|
822
|
-
isSelectingColumn,
|
|
823
|
-
settings,
|
|
824
|
-
model,
|
|
825
|
-
customFilters,
|
|
826
|
-
sorts
|
|
827
|
-
|
|
856
|
+
var _this$props = this.props,
|
|
857
|
+
inputFilters = _this$props.inputFilters,
|
|
858
|
+
isSelectingColumn = _this$props.isSelectingColumn,
|
|
859
|
+
settings = _this$props.settings,
|
|
860
|
+
model = _this$props.model,
|
|
861
|
+
customFilters = _this$props.customFilters,
|
|
862
|
+
sorts = _this$props.sorts,
|
|
863
|
+
getMetricCalculator = _this$props.getMetricCalculator;
|
|
828
864
|
if (model !== prevProps.model) {
|
|
829
865
|
this.stopListening(prevProps.model);
|
|
830
866
|
this.startListening(model);
|
|
831
867
|
}
|
|
868
|
+
|
|
869
|
+
// The renderer and mouse handlers flow through memoized getters in
|
|
870
|
+
// render(), so a `renderer` / `mouseHandlers` prop change naturally
|
|
871
|
+
// propagates on the next render. The metric calculator, however, lives in
|
|
872
|
+
// component state, so mirror that path when the `getMetricCalculator` prop
|
|
873
|
+
// changes (e.g. the pivot-builder middleware swapping the pivot factory in
|
|
874
|
+
// or out) so the calculator stays in sync. Moved columns are not touched
|
|
875
|
+
// here — a model swap resets them via `handleSchemaChanged`.
|
|
876
|
+
if (getMetricCalculator !== prevProps.getMetricCalculator) {
|
|
877
|
+
this.maybeRebuildMetricCalculator();
|
|
878
|
+
}
|
|
832
879
|
var changedInputFilters = inputFilters !== prevProps.inputFilters ? inputFilters.filter(inputFilter => !prevProps.inputFilters.includes(inputFilter)) : [];
|
|
833
880
|
if (changedInputFilters.length > 0) {
|
|
834
881
|
var _advancedSettings$get;
|
|
835
|
-
var
|
|
836
|
-
advancedSettings
|
|
837
|
-
} = this.props;
|
|
882
|
+
var advancedSettings = this.props.advancedSettings;
|
|
838
883
|
var replaceExistingFilters = (_advancedSettings$get = advancedSettings.get(AdvancedSettingsType.FILTER_CONTROL_CHANGE_CLEARS_ALL_FILTERS)) !== null && _advancedSettings$get !== void 0 ? _advancedSettings$get : false;
|
|
839
884
|
if (replaceExistingFilters) {
|
|
840
885
|
this.clearGridInputField();
|
|
@@ -861,10 +906,8 @@ class IrisGrid extends Component {
|
|
|
861
906
|
if (sorts !== prevProps.sorts) {
|
|
862
907
|
this.updateSorts(sorts);
|
|
863
908
|
}
|
|
864
|
-
var
|
|
865
|
-
|
|
866
|
-
loadingScrimFinishTime
|
|
867
|
-
} = this;
|
|
909
|
+
var loadingScrimStartTime = this.loadingScrimStartTime,
|
|
910
|
+
loadingScrimFinishTime = this.loadingScrimFinishTime;
|
|
868
911
|
if (loadingScrimStartTime != null && loadingScrimFinishTime != null) {
|
|
869
912
|
window.requestAnimationFrame(() => {
|
|
870
913
|
var now = Date.now();
|
|
@@ -886,9 +929,7 @@ class IrisGrid extends Component {
|
|
|
886
929
|
});
|
|
887
930
|
});
|
|
888
931
|
}
|
|
889
|
-
var
|
|
890
|
-
openOptions
|
|
891
|
-
} = this.state;
|
|
932
|
+
var openOptions = this.state.openOptions;
|
|
892
933
|
if (openOptions !== prevState.openOptions) {
|
|
893
934
|
var isAggEditType = option => option.type === OptionType.AGGREGATION_EDIT;
|
|
894
935
|
if (!openOptions.some(isAggEditType) && prevState.openOptions.some(isAggEditType)) {
|
|
@@ -898,9 +939,7 @@ class IrisGrid extends Component {
|
|
|
898
939
|
this.sendStateChange();
|
|
899
940
|
}
|
|
900
941
|
componentWillUnmount() {
|
|
901
|
-
var
|
|
902
|
-
model
|
|
903
|
-
} = this.props;
|
|
942
|
+
var model = this.props.model;
|
|
904
943
|
this.stopListening(model);
|
|
905
944
|
this.pending.cancel();
|
|
906
945
|
this.updateSearchFilter.cancel();
|
|
@@ -918,9 +957,7 @@ class IrisGrid extends Component {
|
|
|
918
957
|
return (_this$grid$canvasWrap = (_this$grid = this.grid) === null || _this$grid === void 0 ? void 0 : _this$grid.canvasWrapper.current) !== null && _this$grid$canvasWrap !== void 0 ? _this$grid$canvasWrap : null;
|
|
919
958
|
}
|
|
920
959
|
getKeyHandlers() {
|
|
921
|
-
var
|
|
922
|
-
keyHandlers
|
|
923
|
-
} = this.props;
|
|
960
|
+
var keyHandlers = this.props.keyHandlers;
|
|
924
961
|
return this.getCachedKeyHandlers(keyHandlers);
|
|
925
962
|
}
|
|
926
963
|
getMetricState() {
|
|
@@ -929,52 +966,40 @@ class IrisGrid extends Component {
|
|
|
929
966
|
if (gridMetricState == null) {
|
|
930
967
|
return undefined;
|
|
931
968
|
}
|
|
932
|
-
var
|
|
933
|
-
advancedFilters,
|
|
934
|
-
hoverSelectColumn,
|
|
935
|
-
isFilterBarShown,
|
|
936
|
-
isMenuShown,
|
|
937
|
-
loadingScrimProgress,
|
|
938
|
-
quickFilters,
|
|
939
|
-
sorts,
|
|
940
|
-
reverse,
|
|
941
|
-
rollupConfig
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
isSelectingColumn
|
|
946
|
-
} = this.props;
|
|
969
|
+
var _this$state = this.state,
|
|
970
|
+
advancedFilters = _this$state.advancedFilters,
|
|
971
|
+
hoverSelectColumn = _this$state.hoverSelectColumn,
|
|
972
|
+
isFilterBarShown = _this$state.isFilterBarShown,
|
|
973
|
+
isMenuShown = _this$state.isMenuShown,
|
|
974
|
+
loadingScrimProgress = _this$state.loadingScrimProgress,
|
|
975
|
+
quickFilters = _this$state.quickFilters,
|
|
976
|
+
sorts = _this$state.sorts,
|
|
977
|
+
reverse = _this$state.reverse,
|
|
978
|
+
rollupConfig = _this$state.rollupConfig;
|
|
979
|
+
var _this$props2 = this.props,
|
|
980
|
+
model = _this$props2.model,
|
|
981
|
+
isSelectingColumn = _this$props2.isSelectingColumn;
|
|
947
982
|
return _objectSpread(_objectSpread({}, gridMetricState), this.getCachedStateOverride(model, this.getTheme(), hoverSelectColumn, isFilterBarShown, isSelectingColumn, loadingScrimProgress, quickFilters, advancedFilters, sorts, reverse, rollupConfig, isMenuShown));
|
|
948
983
|
}
|
|
949
984
|
get renderer() {
|
|
950
|
-
var
|
|
951
|
-
renderer
|
|
952
|
-
} = this.props;
|
|
985
|
+
var renderer = this.props.renderer;
|
|
953
986
|
return this.getCachedRenderer(renderer);
|
|
954
987
|
}
|
|
955
988
|
getMouseHandlers() {
|
|
956
|
-
var
|
|
957
|
-
mouseHandlers
|
|
958
|
-
} = this.props;
|
|
989
|
+
var mouseHandlers = this.props.mouseHandlers;
|
|
959
990
|
return this.getCachedMouseHandlers(mouseHandlers);
|
|
960
991
|
}
|
|
961
992
|
getValueForCell(columnIndex, rowIndex) {
|
|
962
993
|
var rawValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
963
|
-
var
|
|
964
|
-
|
|
965
|
-
} = this.props;
|
|
966
|
-
var {
|
|
967
|
-
dh
|
|
968
|
-
} = model;
|
|
994
|
+
var model = this.props.model;
|
|
995
|
+
var dh = model.dh;
|
|
969
996
|
var modelColumn = this.getModelColumn(columnIndex);
|
|
970
997
|
var modelRow = this.getModelRow(rowIndex);
|
|
971
998
|
if (rawValue && modelColumn != null && modelRow != null) {
|
|
972
999
|
var value = model.valueForCell(modelColumn, modelRow);
|
|
973
1000
|
if (TableUtils.isDateType(model.columns[modelColumn].type)) {
|
|
974
1001
|
// The returned value is just a long value, we should return the value formatted as a full date string
|
|
975
|
-
var
|
|
976
|
-
formatter
|
|
977
|
-
} = model;
|
|
1002
|
+
var formatter = model.formatter;
|
|
978
1003
|
return dh.i18n.DateTimeFormat.format(UNFORMATTED_DATE_PATTERN, value, dh.i18n.TimeZone.getTimeZone(formatter.timeZone));
|
|
979
1004
|
}
|
|
980
1005
|
return value;
|
|
@@ -994,13 +1019,9 @@ class IrisGrid extends Component {
|
|
|
994
1019
|
* @returns Model column index, or null if not found
|
|
995
1020
|
*/
|
|
996
1021
|
getModelColumn(columnIndex) {
|
|
997
|
-
var
|
|
998
|
-
metrics
|
|
999
|
-
} = this.state;
|
|
1022
|
+
var metrics = this.state.metrics;
|
|
1000
1023
|
assertNotNull(metrics);
|
|
1001
|
-
var
|
|
1002
|
-
modelColumns
|
|
1003
|
-
} = metrics;
|
|
1024
|
+
var modelColumns = metrics.modelColumns;
|
|
1004
1025
|
if (modelColumns == null) {
|
|
1005
1026
|
return null;
|
|
1006
1027
|
}
|
|
@@ -1011,13 +1032,9 @@ class IrisGrid extends Component {
|
|
|
1011
1032
|
return columnIndex != null ? modelColumns.get(columnIndex) : null;
|
|
1012
1033
|
}
|
|
1013
1034
|
getModelRow(rowIndex) {
|
|
1014
|
-
var
|
|
1015
|
-
metrics
|
|
1016
|
-
} = this.state;
|
|
1035
|
+
var metrics = this.state.metrics;
|
|
1017
1036
|
assertNotNull(metrics);
|
|
1018
|
-
var
|
|
1019
|
-
modelRows
|
|
1020
|
-
} = metrics;
|
|
1037
|
+
var modelRows = metrics.modelRows;
|
|
1021
1038
|
if (modelRows == null) {
|
|
1022
1039
|
return null;
|
|
1023
1040
|
}
|
|
@@ -1025,21 +1042,17 @@ class IrisGrid extends Component {
|
|
|
1025
1042
|
}
|
|
1026
1043
|
getTheme() {
|
|
1027
1044
|
var _ref4;
|
|
1028
|
-
var
|
|
1029
|
-
model,
|
|
1030
|
-
theme,
|
|
1031
|
-
density
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
density: contextDensity
|
|
1036
|
-
} = this.context;
|
|
1045
|
+
var _this$props3 = this.props,
|
|
1046
|
+
model = _this$props3.model,
|
|
1047
|
+
theme = _this$props3.theme,
|
|
1048
|
+
density = _this$props3.density;
|
|
1049
|
+
var _this$context = this.context,
|
|
1050
|
+
contextTheme = _this$context.theme,
|
|
1051
|
+
contextDensity = _this$context.density;
|
|
1037
1052
|
return this.getCachedTheme(contextTheme, theme, (_ref4 = isEditableGridModel(model) && model.isEditable) !== null && _ref4 !== void 0 ? _ref4 : false, model.floatingTopRowCount + model.floatingBottomRowCount, density !== null && density !== void 0 ? density : contextDensity);
|
|
1038
1053
|
}
|
|
1039
1054
|
getVisibleColumn(modelIndex) {
|
|
1040
|
-
var
|
|
1041
|
-
movedColumns
|
|
1042
|
-
} = this.state;
|
|
1055
|
+
var movedColumns = this.state.movedColumns;
|
|
1043
1056
|
return GridUtils.getVisibleIndex(modelIndex, movedColumns);
|
|
1044
1057
|
}
|
|
1045
1058
|
makeQuickFilter(column, text, timeZone) {
|
|
@@ -1060,27 +1073,20 @@ class IrisGrid extends Component {
|
|
|
1060
1073
|
*/
|
|
1061
1074
|
applyInputFilters(inputFilters) {
|
|
1062
1075
|
var replaceExisting = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1063
|
-
var
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
advancedFilters,
|
|
1068
|
-
quickFilters
|
|
1069
|
-
} = this.state;
|
|
1076
|
+
var model = this.props.model;
|
|
1077
|
+
var _this$state2 = this.state,
|
|
1078
|
+
advancedFilters = _this$state2.advancedFilters,
|
|
1079
|
+
quickFilters = _this$state2.quickFilters;
|
|
1070
1080
|
var newAdvancedFilters = replaceExisting ? new Map() : new Map(advancedFilters);
|
|
1071
1081
|
var newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);
|
|
1072
1082
|
var isChanged = replaceExisting && advancedFilters.size > 0;
|
|
1073
1083
|
inputFilters.forEach(_ref5 => {
|
|
1074
|
-
var
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
value
|
|
1078
|
-
} = _ref5;
|
|
1084
|
+
var name = _ref5.name,
|
|
1085
|
+
type = _ref5.type,
|
|
1086
|
+
value = _ref5.value;
|
|
1079
1087
|
var modelIndex = model.columns.findIndex(_ref6 => {
|
|
1080
|
-
var
|
|
1081
|
-
|
|
1082
|
-
type: columnType
|
|
1083
|
-
} = _ref6;
|
|
1088
|
+
var columnName = _ref6.name,
|
|
1089
|
+
columnType = _ref6.type;
|
|
1084
1090
|
return columnName === name && columnType === type;
|
|
1085
1091
|
});
|
|
1086
1092
|
if (modelIndex >= 0) {
|
|
@@ -1107,19 +1113,13 @@ class IrisGrid extends Component {
|
|
|
1107
1113
|
* @returns True if the filters have changed because this quick filter was applied
|
|
1108
1114
|
*/
|
|
1109
1115
|
applyQuickFilter(modelIndex, value, quickFilters) {
|
|
1110
|
-
var
|
|
1111
|
-
|
|
1112
|
-
} = this.props;
|
|
1113
|
-
var {
|
|
1114
|
-
formatter
|
|
1115
|
-
} = model;
|
|
1116
|
+
var model = this.props.model;
|
|
1117
|
+
var formatter = model.formatter;
|
|
1116
1118
|
var column = model.columns[modelIndex];
|
|
1117
1119
|
if (value != null && "".concat(value).trim().length > 0) {
|
|
1118
1120
|
var quickFilter = quickFilters.get(modelIndex);
|
|
1119
1121
|
if (quickFilter != null) {
|
|
1120
|
-
var
|
|
1121
|
-
text
|
|
1122
|
-
} = quickFilter;
|
|
1122
|
+
var text = quickFilter.text;
|
|
1123
1123
|
if (text === value) {
|
|
1124
1124
|
log.debug2('Ignoring change to existing filter');
|
|
1125
1125
|
return false;
|
|
@@ -1144,9 +1144,7 @@ class IrisGrid extends Component {
|
|
|
1144
1144
|
resetRanges: true
|
|
1145
1145
|
});
|
|
1146
1146
|
this.setState(_ref7 => {
|
|
1147
|
-
var
|
|
1148
|
-
advancedFilters
|
|
1149
|
-
} = _ref7;
|
|
1147
|
+
var advancedFilters = _ref7.advancedFilters;
|
|
1150
1148
|
var newAdvancedFilters = new Map(advancedFilters);
|
|
1151
1149
|
if (filter == null) {
|
|
1152
1150
|
newAdvancedFilters.delete(modelIndex);
|
|
@@ -1174,9 +1172,7 @@ class IrisGrid extends Component {
|
|
|
1174
1172
|
resetRanges: true
|
|
1175
1173
|
});
|
|
1176
1174
|
this.setState(_ref8 => {
|
|
1177
|
-
var
|
|
1178
|
-
quickFilters
|
|
1179
|
-
} = _ref8;
|
|
1175
|
+
var quickFilters = _ref8.quickFilters;
|
|
1180
1176
|
var newQuickFilters = new Map(quickFilters);
|
|
1181
1177
|
newQuickFilters.set(modelIndex, {
|
|
1182
1178
|
filter,
|
|
@@ -1195,21 +1191,15 @@ class IrisGrid extends Component {
|
|
|
1195
1191
|
setFilterMap(filterMap) {
|
|
1196
1192
|
var _advancedSettings$get2;
|
|
1197
1193
|
log.debug('setFilterMap', filterMap);
|
|
1198
|
-
var
|
|
1199
|
-
advancedSettings
|
|
1200
|
-
} = this.props;
|
|
1194
|
+
var advancedSettings = this.props.advancedSettings;
|
|
1201
1195
|
var clearFiltersOnLinkerFilterUpdate = (_advancedSettings$get2 = advancedSettings.get(AdvancedSettingsType.LINK_CHANGE_CLEARS_ALL_FILTERS)) !== null && _advancedSettings$get2 !== void 0 ? _advancedSettings$get2 : false;
|
|
1202
1196
|
if (clearFiltersOnLinkerFilterUpdate) {
|
|
1203
1197
|
this.clearAllFilters();
|
|
1204
1198
|
}
|
|
1205
|
-
var
|
|
1206
|
-
model
|
|
1207
|
-
} = this.props;
|
|
1199
|
+
var model = this.props.model;
|
|
1208
1200
|
filterMap.forEach((_ref9, columnName) => {
|
|
1209
|
-
var
|
|
1210
|
-
|
|
1211
|
-
filterList
|
|
1212
|
-
} = _ref9;
|
|
1201
|
+
var columnType = _ref9.columnType,
|
|
1202
|
+
filterList = _ref9.filterList;
|
|
1213
1203
|
var column = model.columns.find(c => c.name === columnName && c.type === columnType);
|
|
1214
1204
|
if (column == null) {
|
|
1215
1205
|
return;
|
|
@@ -1220,9 +1210,7 @@ class IrisGrid extends Component {
|
|
|
1220
1210
|
if (combinedText.length === 0) {
|
|
1221
1211
|
this.removeQuickFilter(columnIndex);
|
|
1222
1212
|
} else {
|
|
1223
|
-
var
|
|
1224
|
-
formatter
|
|
1225
|
-
} = model;
|
|
1213
|
+
var formatter = model.formatter;
|
|
1226
1214
|
this.setQuickFilter(columnIndex, this.makeQuickFilter(column, combinedText, formatter.timeZone), "".concat(combinedText));
|
|
1227
1215
|
}
|
|
1228
1216
|
});
|
|
@@ -1233,10 +1221,8 @@ class IrisGrid extends Component {
|
|
|
1233
1221
|
});
|
|
1234
1222
|
var clearRange = Array.isArray(modelRange) ? modelRange : [modelRange, modelRange];
|
|
1235
1223
|
this.setState(_ref0 => {
|
|
1236
|
-
var
|
|
1237
|
-
|
|
1238
|
-
quickFilters
|
|
1239
|
-
} = _ref0;
|
|
1224
|
+
var advancedFilters = _ref0.advancedFilters,
|
|
1225
|
+
quickFilters = _ref0.quickFilters;
|
|
1240
1226
|
var newAdvancedFilters = advancedFilters ? new Map(advancedFilters) : new Map();
|
|
1241
1227
|
var newQuickFilters = quickFilters ? new Map(quickFilters) : new Map();
|
|
1242
1228
|
newAdvancedFilters.forEach((_, column) => {
|
|
@@ -1260,9 +1246,7 @@ class IrisGrid extends Component {
|
|
|
1260
1246
|
resetRanges: true
|
|
1261
1247
|
});
|
|
1262
1248
|
this.setState(_ref1 => {
|
|
1263
|
-
var
|
|
1264
|
-
quickFilters
|
|
1265
|
-
} = _ref1;
|
|
1249
|
+
var quickFilters = _ref1.quickFilters;
|
|
1266
1250
|
var newQuickFilters = new Map(quickFilters);
|
|
1267
1251
|
newQuickFilters.delete(modelColumn);
|
|
1268
1252
|
return {
|
|
@@ -1272,11 +1256,10 @@ class IrisGrid extends Component {
|
|
|
1272
1256
|
}
|
|
1273
1257
|
clearAllFilters() {
|
|
1274
1258
|
log.debug('Clearing all filters');
|
|
1275
|
-
var
|
|
1276
|
-
advancedFilters,
|
|
1277
|
-
quickFilters,
|
|
1278
|
-
searchFilter
|
|
1279
|
-
} = this.state;
|
|
1259
|
+
var _this$state3 = this.state,
|
|
1260
|
+
advancedFilters = _this$state3.advancedFilters,
|
|
1261
|
+
quickFilters = _this$state3.quickFilters,
|
|
1262
|
+
searchFilter = _this$state3.searchFilter;
|
|
1280
1263
|
if (quickFilters.size === 0 && advancedFilters.size === 0 && searchFilter === null) {
|
|
1281
1264
|
return;
|
|
1282
1265
|
}
|
|
@@ -1316,28 +1299,21 @@ class IrisGrid extends Component {
|
|
|
1316
1299
|
* Rebuilds all the current filters. Necessary if something like the time zone has changed.
|
|
1317
1300
|
*/
|
|
1318
1301
|
rebuildFilters() {
|
|
1319
|
-
var
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
advancedFilters,
|
|
1324
|
-
quickFilters
|
|
1325
|
-
} = this.state;
|
|
1302
|
+
var model = this.props.model;
|
|
1303
|
+
var _this$state4 = this.state,
|
|
1304
|
+
advancedFilters = _this$state4.advancedFilters,
|
|
1305
|
+
quickFilters = _this$state4.quickFilters;
|
|
1326
1306
|
if (advancedFilters.size === 0 && quickFilters.size === 0) {
|
|
1327
1307
|
log.debug('No filters to rebuild');
|
|
1328
1308
|
return;
|
|
1329
1309
|
}
|
|
1330
|
-
var
|
|
1331
|
-
|
|
1332
|
-
formatter
|
|
1333
|
-
} = model;
|
|
1310
|
+
var columns = model.columns,
|
|
1311
|
+
formatter = model.formatter;
|
|
1334
1312
|
log.debug('Rebuilding filters');
|
|
1335
1313
|
var newAdvancedFilters = new Map();
|
|
1336
1314
|
var newQuickFilters = new Map();
|
|
1337
1315
|
advancedFilters.forEach((value, key) => {
|
|
1338
|
-
var
|
|
1339
|
-
options
|
|
1340
|
-
} = value;
|
|
1316
|
+
var options = value.options;
|
|
1341
1317
|
var column = columns[key];
|
|
1342
1318
|
var filter = this.tableUtils.makeAdvancedFilter(column, options, formatter.timeZone);
|
|
1343
1319
|
newAdvancedFilters.set(key, {
|
|
@@ -1346,9 +1322,7 @@ class IrisGrid extends Component {
|
|
|
1346
1322
|
});
|
|
1347
1323
|
});
|
|
1348
1324
|
quickFilters.forEach((value, key) => {
|
|
1349
|
-
var
|
|
1350
|
-
text
|
|
1351
|
-
} = value;
|
|
1325
|
+
var text = value.text;
|
|
1352
1326
|
var column = columns[key];
|
|
1353
1327
|
newQuickFilters.set(key, {
|
|
1354
1328
|
text,
|
|
@@ -1364,10 +1338,8 @@ class IrisGrid extends Component {
|
|
|
1364
1338
|
});
|
|
1365
1339
|
}
|
|
1366
1340
|
setFilters(_ref10) {
|
|
1367
|
-
var
|
|
1368
|
-
|
|
1369
|
-
advancedFilters
|
|
1370
|
-
} = _ref10;
|
|
1341
|
+
var quickFilters = _ref10.quickFilters,
|
|
1342
|
+
advancedFilters = _ref10.advancedFilters;
|
|
1371
1343
|
this.setState({
|
|
1372
1344
|
quickFilters,
|
|
1373
1345
|
advancedFilters
|
|
@@ -1410,12 +1382,8 @@ class IrisGrid extends Component {
|
|
|
1410
1382
|
updateFormatter(updatedFormats) {
|
|
1411
1383
|
var _this$globalColumnFor;
|
|
1412
1384
|
var forceUpdate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
1413
|
-
var
|
|
1414
|
-
|
|
1415
|
-
} = this.state;
|
|
1416
|
-
var {
|
|
1417
|
-
model
|
|
1418
|
-
} = this.props;
|
|
1385
|
+
var customColumnFormatMap = this.state.customColumnFormatMap;
|
|
1386
|
+
var model = this.props.model;
|
|
1419
1387
|
var update = _objectSpread({
|
|
1420
1388
|
customColumnFormatMap
|
|
1421
1389
|
}, updatedFormats);
|
|
@@ -1431,15 +1399,11 @@ class IrisGrid extends Component {
|
|
|
1431
1399
|
});
|
|
1432
1400
|
}
|
|
1433
1401
|
initFormatter() {
|
|
1434
|
-
var
|
|
1435
|
-
settings
|
|
1436
|
-
} = this.props;
|
|
1402
|
+
var settings = this.props.settings;
|
|
1437
1403
|
this.updateFormatterSettings(settings);
|
|
1438
1404
|
}
|
|
1439
1405
|
initState() {
|
|
1440
|
-
var
|
|
1441
|
-
model
|
|
1442
|
-
} = this.props;
|
|
1406
|
+
var model = this.props.model;
|
|
1443
1407
|
try {
|
|
1444
1408
|
if (isPartitionedGridModel(model) && model.isPartitionRequired) {
|
|
1445
1409
|
this.loadPartitionsTable(model);
|
|
@@ -1451,18 +1415,17 @@ class IrisGrid extends Component {
|
|
|
1451
1415
|
}
|
|
1452
1416
|
}
|
|
1453
1417
|
loadTableState() {
|
|
1454
|
-
var
|
|
1455
|
-
applyInputFiltersOnInit,
|
|
1456
|
-
inputFilters,
|
|
1457
|
-
sorts,
|
|
1458
|
-
model,
|
|
1459
|
-
reverse,
|
|
1460
|
-
reverseType,
|
|
1461
|
-
customColumns,
|
|
1462
|
-
searchValue,
|
|
1463
|
-
selectedSearchColumns,
|
|
1464
|
-
invertSearchColumns
|
|
1465
|
-
} = this.props;
|
|
1418
|
+
var _this$props4 = this.props,
|
|
1419
|
+
applyInputFiltersOnInit = _this$props4.applyInputFiltersOnInit,
|
|
1420
|
+
inputFilters = _this$props4.inputFilters,
|
|
1421
|
+
sorts = _this$props4.sorts,
|
|
1422
|
+
model = _this$props4.model,
|
|
1423
|
+
reverse = _this$props4.reverse,
|
|
1424
|
+
reverseType = _this$props4.reverseType,
|
|
1425
|
+
customColumns = _this$props4.customColumns,
|
|
1426
|
+
searchValue = _this$props4.searchValue,
|
|
1427
|
+
selectedSearchColumns = _this$props4.selectedSearchColumns,
|
|
1428
|
+
invertSearchColumns = _this$props4.invertSearchColumns;
|
|
1466
1429
|
var searchColumns = selectedSearchColumns !== null && selectedSearchColumns !== void 0 ? selectedSearchColumns : [];
|
|
1467
1430
|
var searchFilter = CrossColumnSearch.createSearchFilter(model.dh, searchValue, searchColumns, model.columns, invertSearchColumns);
|
|
1468
1431
|
if (applyInputFiltersOnInit) {
|
|
@@ -1484,9 +1447,7 @@ class IrisGrid extends Component {
|
|
|
1484
1447
|
var _this = this;
|
|
1485
1448
|
return _asyncToGenerator(function* () {
|
|
1486
1449
|
try {
|
|
1487
|
-
var
|
|
1488
|
-
partitionConfig
|
|
1489
|
-
} = _this.state;
|
|
1450
|
+
var partitionConfig = _this.state.partitionConfig;
|
|
1490
1451
|
if (!partitionConfig) {
|
|
1491
1452
|
_this.startLoading('Loading partitions...', {
|
|
1492
1453
|
loadingCancelShown: false,
|
|
@@ -1512,9 +1473,7 @@ class IrisGrid extends Component {
|
|
|
1512
1473
|
var _this2 = this;
|
|
1513
1474
|
return _asyncToGenerator(function* () {
|
|
1514
1475
|
var keyTable = yield _this2.pending.add(model.partitionKeysTable(), resolved => resolved.close());
|
|
1515
|
-
var
|
|
1516
|
-
dh
|
|
1517
|
-
} = model;
|
|
1476
|
+
var dh = model.dh;
|
|
1518
1477
|
var sorts = keyTable.columns.map(column => column.sort().desc());
|
|
1519
1478
|
keyTable.applySort(sorts);
|
|
1520
1479
|
keyTable.setViewport(0, 0);
|
|
@@ -1523,9 +1482,7 @@ class IrisGrid extends Component {
|
|
|
1523
1482
|
// It's possible that the key table does not have any rows of data yet, so just wait until it does have one
|
|
1524
1483
|
keyTable.addEventListener(dh.Table.EVENT_UPDATED, event => {
|
|
1525
1484
|
try {
|
|
1526
|
-
var
|
|
1527
|
-
detail: data
|
|
1528
|
-
} = event;
|
|
1485
|
+
var data = event.detail;
|
|
1529
1486
|
if (data.rows.length === 0) {
|
|
1530
1487
|
// We received an update and the table is still empty. Stop showing the loading spinner so we know
|
|
1531
1488
|
_this2.stopLoading();
|
|
@@ -1557,18 +1514,20 @@ class IrisGrid extends Component {
|
|
|
1557
1514
|
* @returns A promise that resolves when the partition key has been successfully selected.
|
|
1558
1515
|
*/
|
|
1559
1516
|
selectPartitionKeyFromTable(rowIndex) {
|
|
1560
|
-
var
|
|
1561
|
-
model
|
|
1562
|
-
} = this.props;
|
|
1517
|
+
var model = this.props.model;
|
|
1563
1518
|
assertNotNull(rowIndex);
|
|
1564
1519
|
if (isPartitionedGridModel(model)) {
|
|
1565
1520
|
var data = this.getRowDataMap(rowIndex);
|
|
1566
1521
|
var partitionColumnSet = new Set(model.partitionColumns.map(column => column.name));
|
|
1567
1522
|
var values = Object.entries(data).filter(_ref11 => {
|
|
1568
|
-
var
|
|
1523
|
+
var _ref12 = _slicedToArray(_ref11, 2),
|
|
1524
|
+
key = _ref12[0],
|
|
1525
|
+
_ = _ref12[1];
|
|
1569
1526
|
return partitionColumnSet.has(key);
|
|
1570
|
-
}).map(
|
|
1571
|
-
var
|
|
1527
|
+
}).map(_ref13 => {
|
|
1528
|
+
var _ref14 = _slicedToArray(_ref13, 2),
|
|
1529
|
+
key = _ref14[0],
|
|
1530
|
+
columnData = _ref14[1];
|
|
1572
1531
|
return columnData.value;
|
|
1573
1532
|
});
|
|
1574
1533
|
var newPartition = {
|
|
@@ -1583,9 +1542,7 @@ class IrisGrid extends Component {
|
|
|
1583
1542
|
}
|
|
1584
1543
|
copyCell(columnIndex, rowIndex) {
|
|
1585
1544
|
var rawValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
1586
|
-
var
|
|
1587
|
-
canCopy
|
|
1588
|
-
} = this.props;
|
|
1545
|
+
var canCopy = this.props.canCopy;
|
|
1589
1546
|
if (canCopy) {
|
|
1590
1547
|
var value = String(this.getValueForCell(columnIndex, rowIndex, rawValue));
|
|
1591
1548
|
copyToClipboard(value).catch(e => log.error('Unable to copy cell', e));
|
|
@@ -1598,12 +1555,8 @@ class IrisGrid extends Component {
|
|
|
1598
1555
|
if (columnIndex === null) {
|
|
1599
1556
|
return;
|
|
1600
1557
|
}
|
|
1601
|
-
var
|
|
1602
|
-
|
|
1603
|
-
} = this.props;
|
|
1604
|
-
var {
|
|
1605
|
-
movedColumns
|
|
1606
|
-
} = this.state;
|
|
1558
|
+
var canCopy = this.props.canCopy;
|
|
1559
|
+
var movedColumns = this.state.movedColumns;
|
|
1607
1560
|
if (canCopy) {
|
|
1608
1561
|
var copyOperation = {
|
|
1609
1562
|
columnIndex,
|
|
@@ -1629,14 +1582,12 @@ class IrisGrid extends Component {
|
|
|
1629
1582
|
var includeHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
1630
1583
|
var formatValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
1631
1584
|
var error = arguments.length > 3 ? arguments[3] : undefined;
|
|
1632
|
-
var
|
|
1633
|
-
model,
|
|
1634
|
-
canCopy
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
movedColumns
|
|
1639
|
-
} = this.state;
|
|
1585
|
+
var _this$props5 = this.props,
|
|
1586
|
+
model = _this$props5.model,
|
|
1587
|
+
canCopy = _this$props5.canCopy;
|
|
1588
|
+
var _this$state5 = this.state,
|
|
1589
|
+
metricCalculator = _this$state5.metricCalculator,
|
|
1590
|
+
movedColumns = _this$state5.movedColumns;
|
|
1640
1591
|
var userColumnWidths = metricCalculator.getUserColumnWidths();
|
|
1641
1592
|
if (canCopy) {
|
|
1642
1593
|
var copyOperation = {
|
|
@@ -1655,11 +1606,13 @@ class IrisGrid extends Component {
|
|
|
1655
1606
|
}
|
|
1656
1607
|
}
|
|
1657
1608
|
startLoading(loadingText) {
|
|
1658
|
-
var {
|
|
1659
|
-
resetRanges =
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1609
|
+
var _ref15 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1610
|
+
_ref15$resetRanges = _ref15.resetRanges,
|
|
1611
|
+
resetRanges = _ref15$resetRanges === void 0 ? false : _ref15$resetRanges,
|
|
1612
|
+
_ref15$loadingCancelS = _ref15.loadingCancelShown,
|
|
1613
|
+
loadingCancelShown = _ref15$loadingCancelS === void 0 ? true : _ref15$loadingCancelS,
|
|
1614
|
+
_ref15$loadingBlocksG = _ref15.loadingBlocksGrid,
|
|
1615
|
+
loadingBlocksGrid = _ref15$loadingBlocksG === void 0 ? true : _ref15$loadingBlocksG;
|
|
1663
1616
|
this.setState({
|
|
1664
1617
|
loadingText,
|
|
1665
1618
|
loadingCancelShown,
|
|
@@ -1674,10 +1627,8 @@ class IrisGrid extends Component {
|
|
|
1674
1627
|
}
|
|
1675
1628
|
if (this.loadingScrimStartTime == null) {
|
|
1676
1629
|
var _this$gridWrapper$get, _this$gridWrapper;
|
|
1677
|
-
var
|
|
1678
|
-
|
|
1679
|
-
maxScrimTransitionTime
|
|
1680
|
-
} = theme;
|
|
1630
|
+
var minScrimTransitionTime = theme.minScrimTransitionTime,
|
|
1631
|
+
maxScrimTransitionTime = theme.maxScrimTransitionTime;
|
|
1681
1632
|
assertNotNull(minScrimTransitionTime);
|
|
1682
1633
|
assertNotNull(maxScrimTransitionTime);
|
|
1683
1634
|
var height = (_this$gridWrapper$get = (_this$gridWrapper = this.gridWrapper) === null || _this$gridWrapper === void 0 ? void 0 : _this$gridWrapper.getBoundingClientRect().height) !== null && _this$gridWrapper$get !== void 0 ? _this$gridWrapper$get : 0;
|
|
@@ -1716,17 +1667,16 @@ class IrisGrid extends Component {
|
|
|
1716
1667
|
rollback() {
|
|
1717
1668
|
if (this.lastLoadedConfig) {
|
|
1718
1669
|
log.debug('loading last loading config', this.lastLoadedConfig);
|
|
1719
|
-
var
|
|
1720
|
-
advancedFilters,
|
|
1721
|
-
aggregationSettings,
|
|
1722
|
-
customColumns,
|
|
1723
|
-
quickFilters,
|
|
1724
|
-
reverse,
|
|
1725
|
-
rollupConfig,
|
|
1726
|
-
searchFilter,
|
|
1727
|
-
selectDistinctColumns,
|
|
1728
|
-
sorts
|
|
1729
|
-
} = this.lastLoadedConfig;
|
|
1670
|
+
var _this$lastLoadedConfi = this.lastLoadedConfig,
|
|
1671
|
+
advancedFilters = _this$lastLoadedConfi.advancedFilters,
|
|
1672
|
+
aggregationSettings = _this$lastLoadedConfi.aggregationSettings,
|
|
1673
|
+
customColumns = _this$lastLoadedConfi.customColumns,
|
|
1674
|
+
quickFilters = _this$lastLoadedConfi.quickFilters,
|
|
1675
|
+
reverse = _this$lastLoadedConfi.reverse,
|
|
1676
|
+
rollupConfig = _this$lastLoadedConfi.rollupConfig,
|
|
1677
|
+
searchFilter = _this$lastLoadedConfi.searchFilter,
|
|
1678
|
+
selectDistinctColumns = _this$lastLoadedConfi.selectDistinctColumns,
|
|
1679
|
+
sorts = _this$lastLoadedConfi.sorts;
|
|
1730
1680
|
this.lastLoadedConfig = null;
|
|
1731
1681
|
this.setState({
|
|
1732
1682
|
advancedFilters,
|
|
@@ -1764,33 +1714,33 @@ class IrisGrid extends Component {
|
|
|
1764
1714
|
startListening(model) {
|
|
1765
1715
|
model.addEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);
|
|
1766
1716
|
model.addEventListener(IrisGridModel.EVENT.REQUEST_FAILED, this.handleRequestFailed);
|
|
1717
|
+
model.addEventListener(IrisGridModel.EVENT.PENDING, this.handlePending);
|
|
1718
|
+
model.addEventListener(IrisGridModel.EVENT.PENDING_CLEARED, this.handlePendingCleared);
|
|
1767
1719
|
model.addEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleCustomColumnsChanged);
|
|
1768
1720
|
model.addEventListener(IrisGridModel.EVENT.PENDING_DATA_UPDATED, this.handlePendingDataUpdated);
|
|
1769
1721
|
model.addEventListener(IrisGridModel.EVENT.VIEWPORT_UPDATED, this.handleViewportUpdated);
|
|
1770
1722
|
model.addEventListener(IrisGridModel.EVENT.TABLE_CHANGED, this.handleTableChanged);
|
|
1723
|
+
model.addEventListener(IrisGridModel.EVENT.SCHEMA_CHANGED, this.handleSchemaChanged);
|
|
1771
1724
|
}
|
|
1772
1725
|
stopListening(model) {
|
|
1773
1726
|
model.removeEventListener(IrisGridModel.EVENT.UPDATED, this.handleUpdate);
|
|
1774
1727
|
model.removeEventListener(IrisGridModel.EVENT.REQUEST_FAILED, this.handleRequestFailed);
|
|
1728
|
+
model.removeEventListener(IrisGridModel.EVENT.PENDING, this.handlePending);
|
|
1729
|
+
model.removeEventListener(IrisGridModel.EVENT.PENDING_CLEARED, this.handlePendingCleared);
|
|
1775
1730
|
model.removeEventListener(IrisGridModel.EVENT.COLUMNS_CHANGED, this.handleCustomColumnsChanged);
|
|
1776
1731
|
model.removeEventListener(IrisGridModel.EVENT.PENDING_DATA_UPDATED, this.handlePendingDataUpdated);
|
|
1777
1732
|
model.removeEventListener(IrisGridModel.EVENT.VIEWPORT_UPDATED, this.handleViewportUpdated);
|
|
1778
1733
|
model.removeEventListener(IrisGridModel.EVENT.TABLE_CHANGED, this.handleTableChanged);
|
|
1734
|
+
model.removeEventListener(IrisGridModel.EVENT.SCHEMA_CHANGED, this.handleSchemaChanged);
|
|
1779
1735
|
}
|
|
1780
1736
|
focus() {
|
|
1781
1737
|
var _this$grid3;
|
|
1782
1738
|
(_this$grid3 = this.grid) === null || _this$grid3 === void 0 || _this$grid3.focus();
|
|
1783
1739
|
}
|
|
1784
1740
|
focusFilterBar(column) {
|
|
1785
|
-
var
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
var {
|
|
1789
|
-
model
|
|
1790
|
-
} = this.props;
|
|
1791
|
-
var {
|
|
1792
|
-
columnCount
|
|
1793
|
-
} = model;
|
|
1741
|
+
var movedColumns = this.state.movedColumns;
|
|
1742
|
+
var model = this.props.model;
|
|
1743
|
+
var columnCount = model.columnCount;
|
|
1794
1744
|
var modelColumn = GridUtils.getModelIndex(column, movedColumns);
|
|
1795
1745
|
if (column == null || columnCount <= column || !model.isFilterable(modelColumn)) {
|
|
1796
1746
|
this.setState({
|
|
@@ -1798,10 +1748,9 @@ class IrisGrid extends Component {
|
|
|
1798
1748
|
});
|
|
1799
1749
|
return;
|
|
1800
1750
|
}
|
|
1801
|
-
var
|
|
1802
|
-
metricCalculator,
|
|
1803
|
-
metrics
|
|
1804
|
-
} = this.state;
|
|
1751
|
+
var _this$state6 = this.state,
|
|
1752
|
+
metricCalculator = _this$state6.metricCalculator,
|
|
1753
|
+
metrics = _this$state6.metrics;
|
|
1805
1754
|
assertNotNull(metrics);
|
|
1806
1755
|
var metricState = this.getMetricState();
|
|
1807
1756
|
assertNotNull(metricState);
|
|
@@ -1821,21 +1770,17 @@ class IrisGrid extends Component {
|
|
|
1821
1770
|
}
|
|
1822
1771
|
hideColumnByVisibleIndex(columnVisibleIndex) {
|
|
1823
1772
|
var _this$grid5;
|
|
1824
|
-
var
|
|
1825
|
-
metricCalculator,
|
|
1826
|
-
movedColumns
|
|
1827
|
-
} = this.state;
|
|
1773
|
+
var _this$state7 = this.state,
|
|
1774
|
+
metricCalculator = _this$state7.metricCalculator,
|
|
1775
|
+
movedColumns = _this$state7.movedColumns;
|
|
1828
1776
|
metricCalculator.setColumnWidth(GridUtils.getModelIndex(columnVisibleIndex, movedColumns), 0);
|
|
1829
1777
|
(_this$grid5 = this.grid) === null || _this$grid5 === void 0 || _this$grid5.forceUpdate();
|
|
1830
1778
|
}
|
|
1831
1779
|
freezeColumnByColumnName(columnName) {
|
|
1832
|
-
var
|
|
1833
|
-
frozenColumns,
|
|
1834
|
-
movedColumns
|
|
1835
|
-
|
|
1836
|
-
var {
|
|
1837
|
-
model
|
|
1838
|
-
} = this.props;
|
|
1780
|
+
var _this$state8 = this.state,
|
|
1781
|
+
frozenColumns = _this$state8.frozenColumns,
|
|
1782
|
+
movedColumns = _this$state8.movedColumns;
|
|
1783
|
+
var model = this.props.model;
|
|
1839
1784
|
log.debug2('freezing column', columnName);
|
|
1840
1785
|
var allFrozenColumns = frozenColumns == null ? new Set(model.frozenColumns) : new Set(frozenColumns);
|
|
1841
1786
|
allFrozenColumns.add(columnName);
|
|
@@ -1849,13 +1794,10 @@ class IrisGrid extends Component {
|
|
|
1849
1794
|
});
|
|
1850
1795
|
}
|
|
1851
1796
|
unFreezeColumnByColumnName(columnName) {
|
|
1852
|
-
var
|
|
1853
|
-
frozenColumns,
|
|
1854
|
-
movedColumns
|
|
1855
|
-
|
|
1856
|
-
var {
|
|
1857
|
-
model
|
|
1858
|
-
} = this.props;
|
|
1797
|
+
var _this$state9 = this.state,
|
|
1798
|
+
frozenColumns = _this$state9.frozenColumns,
|
|
1799
|
+
movedColumns = _this$state9.movedColumns;
|
|
1800
|
+
var model = this.props.model;
|
|
1859
1801
|
log.debug2('unfreezing column', columnName);
|
|
1860
1802
|
var allFrozenColumns = frozenColumns == null ? new Set(model.frozenColumns) : new Set(frozenColumns);
|
|
1861
1803
|
allFrozenColumns.delete(columnName);
|
|
@@ -1883,37 +1825,30 @@ class IrisGrid extends Component {
|
|
|
1883
1825
|
}
|
|
1884
1826
|
toggleExpandColumn(modelIndex, expandDescendants) {
|
|
1885
1827
|
log.debug2('Toggle expand column', modelIndex);
|
|
1886
|
-
var
|
|
1887
|
-
model
|
|
1888
|
-
} = this.props;
|
|
1828
|
+
var model = this.props.model;
|
|
1889
1829
|
if (isExpandableColumnGridModel(model) && model.hasExpandableColumns) {
|
|
1890
1830
|
model.setColumnExpanded(modelIndex, !model.isColumnExpanded(modelIndex), expandDescendants);
|
|
1891
1831
|
}
|
|
1892
1832
|
}
|
|
1893
1833
|
expandAllColumns() {
|
|
1894
1834
|
log.debug2('Expand all columns');
|
|
1895
|
-
var
|
|
1896
|
-
model
|
|
1897
|
-
} = this.props;
|
|
1835
|
+
var model = this.props.model;
|
|
1898
1836
|
if (isExpandableColumnGridModel(model) && model.isExpandAllColumnsAvailable) {
|
|
1899
1837
|
model.expandAllColumns();
|
|
1900
1838
|
}
|
|
1901
1839
|
}
|
|
1902
1840
|
collapseAllColumns() {
|
|
1903
1841
|
log.debug2('Collapse all columns');
|
|
1904
|
-
var
|
|
1905
|
-
model
|
|
1906
|
-
} = this.props;
|
|
1842
|
+
var model = this.props.model;
|
|
1907
1843
|
if (isExpandableColumnGridModel(model) && model.isExpandAllColumnsAvailable) {
|
|
1908
1844
|
model.collapseAllColumns();
|
|
1909
1845
|
}
|
|
1910
1846
|
}
|
|
1911
1847
|
handleColumnVisibilityChanged(modelIndexes, isVisible) {
|
|
1912
1848
|
var _this$grid6;
|
|
1913
|
-
var
|
|
1914
|
-
metricCalculator,
|
|
1915
|
-
metrics
|
|
1916
|
-
} = this.state;
|
|
1849
|
+
var _this$state0 = this.state,
|
|
1850
|
+
metricCalculator = _this$state0.metricCalculator,
|
|
1851
|
+
metrics = _this$state0.metrics;
|
|
1917
1852
|
assertNotNull(metrics);
|
|
1918
1853
|
if (isVisible) {
|
|
1919
1854
|
modelIndexes.forEach(modelIndex => {
|
|
@@ -1938,12 +1873,8 @@ class IrisGrid extends Component {
|
|
|
1938
1873
|
}
|
|
1939
1874
|
handleColumnVisibilityReset() {
|
|
1940
1875
|
var _model$layoutHints$fr, _model$layoutHints2;
|
|
1941
|
-
var
|
|
1942
|
-
|
|
1943
|
-
} = this.state;
|
|
1944
|
-
var {
|
|
1945
|
-
model
|
|
1946
|
-
} = this.props;
|
|
1876
|
+
var metricCalculator = this.state.metricCalculator;
|
|
1877
|
+
var model = this.props.model;
|
|
1947
1878
|
metricCalculator.resetAllColumnWidths();
|
|
1948
1879
|
this.handleMovedColumnsChanged(model.initialMovedColumns);
|
|
1949
1880
|
this.handleHeaderGroupsChanged(model.initialColumnHeaderGroups);
|
|
@@ -1952,9 +1883,7 @@ class IrisGrid extends Component {
|
|
|
1952
1883
|
});
|
|
1953
1884
|
}
|
|
1954
1885
|
handleCrossColumnSearch(searchValue, selectedSearchColumns, invertSearchColumns) {
|
|
1955
|
-
var
|
|
1956
|
-
model
|
|
1957
|
-
} = this.props;
|
|
1886
|
+
var model = this.props.model;
|
|
1958
1887
|
this.startLoading('Searching...');
|
|
1959
1888
|
this.updateSearchFilter(searchValue, selectedSearchColumns, model.columns, invertSearchColumns);
|
|
1960
1889
|
this.setState({
|
|
@@ -1981,9 +1910,7 @@ class IrisGrid extends Component {
|
|
|
1981
1910
|
}
|
|
1982
1911
|
handlePartitionChange(partitionConfig) {
|
|
1983
1912
|
this.startLoading('Partitioning...');
|
|
1984
|
-
var
|
|
1985
|
-
partitionConfig: prevConfig
|
|
1986
|
-
} = this.state;
|
|
1913
|
+
var prevConfig = this.state.partitionConfig;
|
|
1987
1914
|
if (prevConfig !== partitionConfig) {
|
|
1988
1915
|
this.setState({
|
|
1989
1916
|
partitionConfig
|
|
@@ -1995,19 +1922,14 @@ class IrisGrid extends Component {
|
|
|
1995
1922
|
return;
|
|
1996
1923
|
}
|
|
1997
1924
|
log.error(error);
|
|
1998
|
-
var
|
|
1999
|
-
onError
|
|
2000
|
-
} = this.props;
|
|
1925
|
+
var onError = this.props.onError;
|
|
2001
1926
|
onError(error);
|
|
2002
1927
|
}
|
|
2003
1928
|
handleViewportUpdated() {
|
|
2004
|
-
var
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
loadingText,
|
|
2009
|
-
loadingSpinnerShown
|
|
2010
|
-
} = this.state;
|
|
1929
|
+
var model = this.props.model;
|
|
1930
|
+
var _this$state1 = this.state,
|
|
1931
|
+
loadingText = _this$state1.loadingText,
|
|
1932
|
+
loadingSpinnerShown = _this$state1.loadingSpinnerShown;
|
|
2011
1933
|
var loadingMessage = 'Waiting for viewport...';
|
|
2012
1934
|
|
|
2013
1935
|
// pending and no timer already exists
|
|
@@ -2020,13 +1942,13 @@ class IrisGrid extends Component {
|
|
|
2020
1942
|
}
|
|
2021
1943
|
showAllColumns() {
|
|
2022
1944
|
var _this$grid8;
|
|
2023
|
-
var
|
|
2024
|
-
metricCalculator
|
|
2025
|
-
} = this.state;
|
|
1945
|
+
var metricCalculator = this.state.metricCalculator;
|
|
2026
1946
|
var userColumnWidths = metricCalculator.getUserColumnWidths();
|
|
2027
1947
|
var entries = [...userColumnWidths.entries()];
|
|
2028
1948
|
for (var i = 0; i < entries.length; i += 1) {
|
|
2029
|
-
var
|
|
1949
|
+
var _entries$i = _slicedToArray(entries[i], 2),
|
|
1950
|
+
modelIndex = _entries$i[0],
|
|
1951
|
+
columnWidth = _entries$i[1];
|
|
2030
1952
|
if (columnWidth === 0) {
|
|
2031
1953
|
metricCalculator.resetColumnWidth(modelIndex);
|
|
2032
1954
|
}
|
|
@@ -2046,15 +1968,11 @@ class IrisGrid extends Component {
|
|
|
2046
1968
|
}
|
|
2047
1969
|
toggleSort(columnIndex, addToExisting) {
|
|
2048
1970
|
log.info('Toggling sort for column', columnIndex);
|
|
2049
|
-
var
|
|
2050
|
-
model
|
|
2051
|
-
} = this.props;
|
|
1971
|
+
var model = this.props.model;
|
|
2052
1972
|
var modelColumn = this.getModelColumn(columnIndex);
|
|
2053
1973
|
assertNotNull(modelColumn);
|
|
2054
1974
|
if (model.isColumnSortable(columnIndex)) {
|
|
2055
|
-
var
|
|
2056
|
-
sorts: currentSorts
|
|
2057
|
-
} = this.state;
|
|
1975
|
+
var currentSorts = this.state.sorts;
|
|
2058
1976
|
var sorts = TableUtils.toggleSortForColumn(currentSorts, model.columns, modelColumn, addToExisting);
|
|
2059
1977
|
this.updateSorts(sorts);
|
|
2060
1978
|
} else {
|
|
@@ -2075,9 +1993,7 @@ class IrisGrid extends Component {
|
|
|
2075
1993
|
var isAbs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
2076
1994
|
var addToExisting = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
2077
1995
|
assertNotNull(modelColumn);
|
|
2078
|
-
var
|
|
2079
|
-
model
|
|
2080
|
-
} = this.props;
|
|
1996
|
+
var model = this.props.model;
|
|
2081
1997
|
var sorts = TableUtils.sortColumn(model.sort, model.columns, modelColumn, direction, isAbs, addToExisting);
|
|
2082
1998
|
this.startLoading('Sorting...');
|
|
2083
1999
|
this.setState({
|
|
@@ -2094,16 +2010,12 @@ class IrisGrid extends Component {
|
|
|
2094
2010
|
(_this$grid10 = this.grid) === null || _this$grid10 === void 0 || _this$grid10.forceUpdate();
|
|
2095
2011
|
}
|
|
2096
2012
|
isReversible() {
|
|
2097
|
-
var
|
|
2098
|
-
model
|
|
2099
|
-
} = this.props;
|
|
2013
|
+
var model = this.props.model;
|
|
2100
2014
|
return model.isReversible;
|
|
2101
2015
|
}
|
|
2102
2016
|
toggleFilterBar() {
|
|
2103
2017
|
var focusIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.lastFocusedFilterBarColumn;
|
|
2104
|
-
var
|
|
2105
|
-
isFilterBarShown
|
|
2106
|
-
} = this.state;
|
|
2018
|
+
var isFilterBarShown = this.state.isFilterBarShown;
|
|
2107
2019
|
isFilterBarShown = !isFilterBarShown;
|
|
2108
2020
|
this.setState({
|
|
2109
2021
|
isFilterBarShown
|
|
@@ -2113,12 +2025,8 @@ class IrisGrid extends Component {
|
|
|
2113
2025
|
this.focusFilterBar(focusIndex);
|
|
2114
2026
|
} else {
|
|
2115
2027
|
var columnIndex = 0;
|
|
2116
|
-
var
|
|
2117
|
-
|
|
2118
|
-
} = this.props;
|
|
2119
|
-
var {
|
|
2120
|
-
columnCount
|
|
2121
|
-
} = model;
|
|
2028
|
+
var model = this.props.model;
|
|
2029
|
+
var columnCount = model.columnCount;
|
|
2122
2030
|
for (var i = 0; i < columnCount; i += 1) {
|
|
2123
2031
|
var modelColumn = this.getModelColumn(i);
|
|
2124
2032
|
if (modelColumn != null) {
|
|
@@ -2138,13 +2046,10 @@ class IrisGrid extends Component {
|
|
|
2138
2046
|
}
|
|
2139
2047
|
isTableSearchAvailable() {
|
|
2140
2048
|
var _model$layoutHints3, _dh$SearchDisplayMode, _dh$SearchDisplayMode2;
|
|
2141
|
-
var
|
|
2142
|
-
model,
|
|
2143
|
-
canToggleSearch
|
|
2144
|
-
|
|
2145
|
-
var {
|
|
2146
|
-
dh
|
|
2147
|
-
} = model;
|
|
2049
|
+
var _this$props6 = this.props,
|
|
2050
|
+
model = _this$props6.model,
|
|
2051
|
+
canToggleSearch = _this$props6.canToggleSearch;
|
|
2052
|
+
var dh = model.dh;
|
|
2148
2053
|
var searchDisplayMode = model === null || model === void 0 || (_model$layoutHints3 = model.layoutHints) === null || _model$layoutHints3 === void 0 ? void 0 : _model$layoutHints3.searchDisplayMode;
|
|
2149
2054
|
if (searchDisplayMode === ((_dh$SearchDisplayMode = dh.SearchDisplayMode) === null || _dh$SearchDisplayMode === void 0 ? void 0 : _dh$SearchDisplayMode.SEARCH_DISPLAY_HIDE)) {
|
|
2150
2055
|
return false;
|
|
@@ -2155,9 +2060,7 @@ class IrisGrid extends Component {
|
|
|
2155
2060
|
return canToggleSearch;
|
|
2156
2061
|
}
|
|
2157
2062
|
toggleSearchBar() {
|
|
2158
|
-
var
|
|
2159
|
-
showSearchBar
|
|
2160
|
-
} = this.state;
|
|
2063
|
+
var showSearchBar = this.state.showSearchBar;
|
|
2161
2064
|
if (!this.isTableSearchAvailable()) {
|
|
2162
2065
|
return;
|
|
2163
2066
|
}
|
|
@@ -2180,9 +2083,7 @@ class IrisGrid extends Component {
|
|
|
2180
2083
|
var row = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
2181
2084
|
var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
2182
2085
|
var columnName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
2183
|
-
var
|
|
2184
|
-
isGotoShown
|
|
2185
|
-
} = this.state;
|
|
2086
|
+
var isGotoShown = this.state.isGotoShown;
|
|
2186
2087
|
if (row || value) {
|
|
2187
2088
|
var _this$gotoRowRef$curr;
|
|
2188
2089
|
// if invoked with a row, keep open instead of toggle
|
|
@@ -2213,12 +2114,8 @@ class IrisGrid extends Component {
|
|
|
2213
2114
|
return;
|
|
2214
2115
|
}
|
|
2215
2116
|
// if a row is selected
|
|
2216
|
-
var
|
|
2217
|
-
|
|
2218
|
-
} = this.props;
|
|
2219
|
-
var {
|
|
2220
|
-
name
|
|
2221
|
-
} = model.columns[cursorColumn];
|
|
2117
|
+
var model = this.props.model;
|
|
2118
|
+
var name = model.columns[cursorColumn].name;
|
|
2222
2119
|
|
|
2223
2120
|
// Use raw value (same as Copy Cell Unformatted) to preserve full precision and timezone
|
|
2224
2121
|
var text = String(this.getValueForCell(cursorColumn, cursorRow, true));
|
|
@@ -2236,15 +2133,11 @@ class IrisGrid extends Component {
|
|
|
2236
2133
|
var _this3 = this;
|
|
2237
2134
|
return _asyncToGenerator(function* () {
|
|
2238
2135
|
var _document;
|
|
2239
|
-
var
|
|
2240
|
-
model
|
|
2241
|
-
} = _this3.props;
|
|
2136
|
+
var model = _this3.props.model;
|
|
2242
2137
|
if (!isEditableGridModel(model) || !model.isEditable) {
|
|
2243
2138
|
throw new Error('Cannot save, table is not editable');
|
|
2244
2139
|
}
|
|
2245
|
-
var
|
|
2246
|
-
pendingSavePromise
|
|
2247
|
-
} = _this3.state;
|
|
2140
|
+
var pendingSavePromise = _this3.state.pendingSavePromise;
|
|
2248
2141
|
if (pendingSavePromise != null) {
|
|
2249
2142
|
throw new Error('Save already in progress');
|
|
2250
2143
|
}
|
|
@@ -2280,9 +2173,7 @@ class IrisGrid extends Component {
|
|
|
2280
2173
|
discardPending() {
|
|
2281
2174
|
var _this4 = this;
|
|
2282
2175
|
return _asyncToGenerator(function* () {
|
|
2283
|
-
var
|
|
2284
|
-
pendingSavePromise
|
|
2285
|
-
} = _this4.state;
|
|
2176
|
+
var pendingSavePromise = _this4.state.pendingSavePromise;
|
|
2286
2177
|
if (pendingSavePromise != null) {
|
|
2287
2178
|
throw new Error('Cannot cancel a save in progress');
|
|
2288
2179
|
}
|
|
@@ -2300,9 +2191,7 @@ class IrisGrid extends Component {
|
|
|
2300
2191
|
* @param column The column in this table to link
|
|
2301
2192
|
*/
|
|
2302
2193
|
selectColumn(column) {
|
|
2303
|
-
var
|
|
2304
|
-
onColumnSelected
|
|
2305
|
-
} = this.props;
|
|
2194
|
+
var onColumnSelected = this.props.onColumnSelected;
|
|
2306
2195
|
onColumnSelected(column);
|
|
2307
2196
|
}
|
|
2308
2197
|
|
|
@@ -2311,9 +2200,7 @@ class IrisGrid extends Component {
|
|
|
2311
2200
|
*/
|
|
2312
2201
|
selectData(columnIndex, rowIndex) {
|
|
2313
2202
|
var dataMap = this.getRowDataMap(rowIndex);
|
|
2314
|
-
var
|
|
2315
|
-
onDataSelected
|
|
2316
|
-
} = this.props;
|
|
2203
|
+
var onDataSelected = this.props.onDataSelected;
|
|
2317
2204
|
onDataSelected(rowIndex, dataMap);
|
|
2318
2205
|
}
|
|
2319
2206
|
|
|
@@ -2324,20 +2211,14 @@ class IrisGrid extends Component {
|
|
|
2324
2211
|
*/
|
|
2325
2212
|
getRowDataMap(rowIndex) {
|
|
2326
2213
|
var _this5 = this;
|
|
2327
|
-
var
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
var {
|
|
2331
|
-
columns,
|
|
2332
|
-
groupedColumns
|
|
2333
|
-
} = model;
|
|
2214
|
+
var model = this.props.model;
|
|
2215
|
+
var columns = model.columns,
|
|
2216
|
+
groupedColumns = model.groupedColumns;
|
|
2334
2217
|
var dataMap = {};
|
|
2335
2218
|
var _loop = function _loop() {
|
|
2336
2219
|
var column = columns[i];
|
|
2337
|
-
var
|
|
2338
|
-
|
|
2339
|
-
type
|
|
2340
|
-
} = column;
|
|
2220
|
+
var name = column.name,
|
|
2221
|
+
type = column.type;
|
|
2341
2222
|
var value = model.valueForCell(i, rowIndex);
|
|
2342
2223
|
var text = model.textForCell(i, rowIndex);
|
|
2343
2224
|
var visibleIndex = _this5.getVisibleColumn(i);
|
|
@@ -2358,9 +2239,7 @@ class IrisGrid extends Component {
|
|
|
2358
2239
|
return dataMap;
|
|
2359
2240
|
}
|
|
2360
2241
|
handleAdvancedFilterChange(column, filter, options) {
|
|
2361
|
-
var
|
|
2362
|
-
model
|
|
2363
|
-
} = this.props;
|
|
2242
|
+
var model = this.props.model;
|
|
2364
2243
|
var index = model.getColumnIndexByName(column.name);
|
|
2365
2244
|
assertNotNull(index);
|
|
2366
2245
|
this.setAdvancedFilter(index, filter, options);
|
|
@@ -2368,9 +2247,7 @@ class IrisGrid extends Component {
|
|
|
2368
2247
|
handleAdvancedFilterSortChange(column, direction) {
|
|
2369
2248
|
var _this$grid15;
|
|
2370
2249
|
var addToExisting = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
2371
|
-
var
|
|
2372
|
-
model
|
|
2373
|
-
} = this.props;
|
|
2250
|
+
var model = this.props.model;
|
|
2374
2251
|
var columnIndex = model.getColumnIndexByName(column.name);
|
|
2375
2252
|
assertNotNull(columnIndex);
|
|
2376
2253
|
var columnName = model.columns[columnIndex].name;
|
|
@@ -2396,10 +2273,8 @@ class IrisGrid extends Component {
|
|
|
2396
2273
|
(_this$grid16 = this.grid) === null || _this$grid16 === void 0 || _this$grid16.focus();
|
|
2397
2274
|
}
|
|
2398
2275
|
handleAdvancedFilterToggleMaximize(column) {
|
|
2399
|
-
this.setState(
|
|
2400
|
-
var
|
|
2401
|
-
maximizedAdvancedFilter
|
|
2402
|
-
} = _ref13;
|
|
2276
|
+
this.setState(_ref16 => {
|
|
2277
|
+
var maximizedAdvancedFilter = _ref16.maximizedAdvancedFilter;
|
|
2403
2278
|
return {
|
|
2404
2279
|
maximizedAdvancedFilter: maximizedAdvancedFilter === column ? null : column
|
|
2405
2280
|
};
|
|
@@ -2425,10 +2300,9 @@ class IrisGrid extends Component {
|
|
|
2425
2300
|
}
|
|
2426
2301
|
handleAdvancedMenuClosed(columnIndex) {
|
|
2427
2302
|
var _this$filterInputRef;
|
|
2428
|
-
var
|
|
2429
|
-
focusedFilterBarColumn,
|
|
2430
|
-
isFilterBarShown
|
|
2431
|
-
} = this.state;
|
|
2303
|
+
var _this$state10 = this.state,
|
|
2304
|
+
focusedFilterBarColumn = _this$state10.focusedFilterBarColumn,
|
|
2305
|
+
isFilterBarShown = _this$state10.isFilterBarShown;
|
|
2432
2306
|
if (isFilterBarShown && focusedFilterBarColumn === columnIndex && ((_this$filterInputRef = this.filterInputRef) === null || _this$filterInputRef === void 0 ? void 0 : _this$filterInputRef.current) !== null) {
|
|
2433
2307
|
var _this$filterInputRef2;
|
|
2434
2308
|
(_this$filterInputRef2 = this.filterInputRef) === null || _this$filterInputRef2 === void 0 || _this$filterInputRef2.current.focus();
|
|
@@ -2453,10 +2327,9 @@ class IrisGrid extends Component {
|
|
|
2453
2327
|
// TODO: IDS-4242 Update Chart Preview
|
|
2454
2328
|
}
|
|
2455
2329
|
handleChartCreate(settings) {
|
|
2456
|
-
var
|
|
2457
|
-
model,
|
|
2458
|
-
onCreateChart
|
|
2459
|
-
} = this.props;
|
|
2330
|
+
var _this$props7 = this.props,
|
|
2331
|
+
model = _this$props7.model,
|
|
2332
|
+
onCreateChart = _this$props7.onCreateChart;
|
|
2460
2333
|
onCreateChart(settings, model);
|
|
2461
2334
|
}
|
|
2462
2335
|
handleGridError(error) {
|
|
@@ -2472,11 +2345,9 @@ class IrisGrid extends Component {
|
|
|
2472
2345
|
this.startLoading('Filtering...', {
|
|
2473
2346
|
resetRanges: true
|
|
2474
2347
|
});
|
|
2475
|
-
this.setState(
|
|
2476
|
-
var
|
|
2477
|
-
|
|
2478
|
-
quickFilters
|
|
2479
|
-
} = _ref14;
|
|
2348
|
+
this.setState(_ref17 => {
|
|
2349
|
+
var focusedFilterBarColumn = _ref17.focusedFilterBarColumn,
|
|
2350
|
+
quickFilters = _ref17.quickFilters;
|
|
2480
2351
|
var newQuickFilters = new Map(quickFilters);
|
|
2481
2352
|
if (focusedFilterBarColumn != null) {
|
|
2482
2353
|
var modelIndex = this.getModelColumn(focusedFilterBarColumn);
|
|
@@ -2502,9 +2373,7 @@ class IrisGrid extends Component {
|
|
|
2502
2373
|
}
|
|
2503
2374
|
}
|
|
2504
2375
|
handleFilterBarTab(backward) {
|
|
2505
|
-
var
|
|
2506
|
-
focusedFilterBarColumn
|
|
2507
|
-
} = this.state;
|
|
2376
|
+
var focusedFilterBarColumn = this.state.focusedFilterBarColumn;
|
|
2508
2377
|
assertNotNull(focusedFilterBarColumn);
|
|
2509
2378
|
if (backward) {
|
|
2510
2379
|
this.focusFilterBar(focusedFilterBarColumn - 1);
|
|
@@ -2513,13 +2382,9 @@ class IrisGrid extends Component {
|
|
|
2513
2382
|
}
|
|
2514
2383
|
}
|
|
2515
2384
|
handleFormatSelection(modelIndex, selectedFormat) {
|
|
2516
|
-
var
|
|
2517
|
-
model
|
|
2518
|
-
} = this.props;
|
|
2385
|
+
var model = this.props.model;
|
|
2519
2386
|
var column = model.columns[modelIndex];
|
|
2520
|
-
var
|
|
2521
|
-
customColumnFormatMap: prevCustomColumnFormatMap
|
|
2522
|
-
} = this.state;
|
|
2387
|
+
var prevCustomColumnFormatMap = this.state.customColumnFormatMap;
|
|
2523
2388
|
var customColumnFormatMap = new Map(prevCustomColumnFormatMap);
|
|
2524
2389
|
if (selectedFormat != null) {
|
|
2525
2390
|
var normalizedType = TableUtils.getNormalizedType(column.type);
|
|
@@ -2534,14 +2399,11 @@ class IrisGrid extends Component {
|
|
|
2534
2399
|
});
|
|
2535
2400
|
}
|
|
2536
2401
|
handleColumnAlignmentChange(modelIndex, alignment) {
|
|
2537
|
-
var
|
|
2538
|
-
model
|
|
2539
|
-
} = this.props;
|
|
2402
|
+
var model = this.props.model;
|
|
2540
2403
|
var column = model.columns[modelIndex];
|
|
2541
|
-
this.setState(
|
|
2542
|
-
var
|
|
2543
|
-
columnAlignmentMap = EMPTY_MAP
|
|
2544
|
-
} = _ref15;
|
|
2404
|
+
this.setState(_ref18 => {
|
|
2405
|
+
var _ref18$columnAlignmen = _ref18.columnAlignmentMap,
|
|
2406
|
+
columnAlignmentMap = _ref18$columnAlignmen === void 0 ? EMPTY_MAP : _ref18$columnAlignmen;
|
|
2545
2407
|
var newColumnAlignmentMap = new Map(columnAlignmentMap);
|
|
2546
2408
|
if (alignment != null) {
|
|
2547
2409
|
newColumnAlignmentMap.set(column.name, alignment);
|
|
@@ -2566,10 +2428,8 @@ class IrisGrid extends Component {
|
|
|
2566
2428
|
});
|
|
2567
2429
|
}
|
|
2568
2430
|
handleMenuBack() {
|
|
2569
|
-
this.setState(
|
|
2570
|
-
var
|
|
2571
|
-
openOptions
|
|
2572
|
-
} = _ref16;
|
|
2431
|
+
this.setState(_ref19 => {
|
|
2432
|
+
var openOptions = _ref19.openOptions;
|
|
2573
2433
|
var newOptions = [...openOptions];
|
|
2574
2434
|
newOptions.pop();
|
|
2575
2435
|
return {
|
|
@@ -2578,24 +2438,19 @@ class IrisGrid extends Component {
|
|
|
2578
2438
|
});
|
|
2579
2439
|
}
|
|
2580
2440
|
handleMenuSelect(option) {
|
|
2581
|
-
this.setState(
|
|
2582
|
-
var
|
|
2583
|
-
openOptions
|
|
2584
|
-
} = _ref17;
|
|
2441
|
+
this.setState(_ref20 => {
|
|
2442
|
+
var openOptions = _ref20.openOptions;
|
|
2585
2443
|
return {
|
|
2586
2444
|
openOptions: [...openOptions, option]
|
|
2587
2445
|
};
|
|
2588
2446
|
});
|
|
2589
2447
|
}
|
|
2590
2448
|
handleRequestFailed(event) {
|
|
2591
|
-
var
|
|
2592
|
-
detail
|
|
2593
|
-
} = event;
|
|
2449
|
+
var _ref21 = event,
|
|
2450
|
+
error = _ref21.detail;
|
|
2594
2451
|
log.error('request failed:', error);
|
|
2595
2452
|
this.stopLoading();
|
|
2596
|
-
var
|
|
2597
|
-
partitionConfig
|
|
2598
|
-
} = this.state;
|
|
2453
|
+
var partitionConfig = this.state.partitionConfig;
|
|
2599
2454
|
if (isMissingPartitionError(error) && partitionConfig != null) {
|
|
2600
2455
|
// We'll try loading the initial partition again
|
|
2601
2456
|
this.startLoading('Reloading partition...', {
|
|
@@ -2613,26 +2468,62 @@ class IrisGrid extends Component {
|
|
|
2613
2468
|
this.rollback();
|
|
2614
2469
|
} else {
|
|
2615
2470
|
log.error('Table failed and unable to rollback');
|
|
2616
|
-
var
|
|
2617
|
-
onError
|
|
2618
|
-
} = this.props;
|
|
2471
|
+
var onError = this.props.onError;
|
|
2619
2472
|
onError(new Error("Error displaying table: ".concat(error)));
|
|
2620
2473
|
}
|
|
2621
2474
|
}
|
|
2475
|
+
|
|
2476
|
+
/**
|
|
2477
|
+
* Raise the loading scrim in response to a model-driven `PENDING` event. The
|
|
2478
|
+
* model is the start signal, mirroring how `UPDATED`/`COLUMNS_CHANGED` are
|
|
2479
|
+
* already the model-driven stop signal. Idempotent: the first message within
|
|
2480
|
+
* a commit wins (the `loadingScrimStartTime == null` guard collapses multiple
|
|
2481
|
+
* pending operations into a single scrim).
|
|
2482
|
+
*/
|
|
2483
|
+
handlePending(event) {
|
|
2484
|
+
var _ref22 = event,
|
|
2485
|
+
detail = _ref22.detail;
|
|
2486
|
+
var _ref23 = detail !== null && detail !== void 0 ? detail : {},
|
|
2487
|
+
text = _ref23.text,
|
|
2488
|
+
options = _ref23.options;
|
|
2489
|
+
if (this.loadingScrimStartTime == null) {
|
|
2490
|
+
this.startLoading(text !== null && text !== void 0 ? text : 'Loading...', _objectSpread({
|
|
2491
|
+
loadingCancelShown: false
|
|
2492
|
+
}, options));
|
|
2493
|
+
}
|
|
2494
|
+
}
|
|
2495
|
+
|
|
2496
|
+
/**
|
|
2497
|
+
* Clear the loading scrim in response to a model-driven `PENDING_CLEARED`
|
|
2498
|
+
* event. Only needed for operations that do not naturally end in
|
|
2499
|
+
* `UPDATED`/`COLUMNS_CHANGED`/`REQUEST_FAILED`.
|
|
2500
|
+
*
|
|
2501
|
+
* The current contract assumes a single outstanding model-driven operation:
|
|
2502
|
+
* `handlePending` collapses concurrent `PENDING` events into one scrim, so
|
|
2503
|
+
* this clears unconditionally. That is consistent with the existing scrim,
|
|
2504
|
+
* which any model stop signal already clears regardless of what else is in
|
|
2505
|
+
* flight. Ref-counting overlapping operations is intentionally deferred to
|
|
2506
|
+
* the planned migration that routes the built-in `startLoading` calls
|
|
2507
|
+
* through `PENDING`/`PENDING_CLEARED`; only once every raise/clear goes
|
|
2508
|
+
* through this pair can a depth counter stay balanced (a counter added now
|
|
2509
|
+
* would desync against the direct `startLoading` callers).
|
|
2510
|
+
*/
|
|
2511
|
+
handlePendingCleared() {
|
|
2512
|
+
this.stopLoading();
|
|
2513
|
+
}
|
|
2622
2514
|
handleUpdate() {
|
|
2623
2515
|
var _this$grid18;
|
|
2624
2516
|
log.debug2('Received model update');
|
|
2625
|
-
var
|
|
2626
|
-
advancedFilters,
|
|
2627
|
-
aggregationSettings,
|
|
2628
|
-
customColumns,
|
|
2629
|
-
quickFilters,
|
|
2630
|
-
reverse,
|
|
2631
|
-
rollupConfig,
|
|
2632
|
-
searchFilter,
|
|
2633
|
-
selectDistinctColumns,
|
|
2634
|
-
sorts
|
|
2635
|
-
} = this.state;
|
|
2517
|
+
var _this$state11 = this.state,
|
|
2518
|
+
advancedFilters = _this$state11.advancedFilters,
|
|
2519
|
+
aggregationSettings = _this$state11.aggregationSettings,
|
|
2520
|
+
customColumns = _this$state11.customColumns,
|
|
2521
|
+
quickFilters = _this$state11.quickFilters,
|
|
2522
|
+
reverse = _this$state11.reverse,
|
|
2523
|
+
rollupConfig = _this$state11.rollupConfig,
|
|
2524
|
+
searchFilter = _this$state11.searchFilter,
|
|
2525
|
+
selectDistinctColumns = _this$state11.selectDistinctColumns,
|
|
2526
|
+
sorts = _this$state11.sorts;
|
|
2636
2527
|
var config = {
|
|
2637
2528
|
advancedFilters,
|
|
2638
2529
|
aggregationSettings,
|
|
@@ -2653,35 +2544,39 @@ class IrisGrid extends Component {
|
|
|
2653
2544
|
this.stopLoading();
|
|
2654
2545
|
}
|
|
2655
2546
|
handleTableChanged() {
|
|
2656
|
-
var
|
|
2657
|
-
model
|
|
2658
|
-
} = this.props;
|
|
2659
|
-
// movedColumns reset triggers metricCalculator update in the Grid component
|
|
2660
|
-
this.setState({
|
|
2661
|
-
movedColumns: model.initialMovedColumns
|
|
2662
|
-
});
|
|
2547
|
+
var model = this.props.model;
|
|
2663
2548
|
// For partitioned tables, we want to rebuild filters on table change to ensure filters are applied to the new partition
|
|
2664
|
-
var
|
|
2665
|
-
partitionConfig
|
|
2666
|
-
} = this.state;
|
|
2549
|
+
var partitionConfig = this.state.partitionConfig;
|
|
2667
2550
|
if (isPartitionedGridModel(model) && (partitionConfig === null || partitionConfig === void 0 ? void 0 : partitionConfig.mode) !== 'keys') {
|
|
2668
2551
|
this.rebuildFilters();
|
|
2669
2552
|
}
|
|
2670
2553
|
}
|
|
2554
|
+
|
|
2555
|
+
/**
|
|
2556
|
+
* Handle an inner-model swap on a proxy model (`SCHEMA_CHANGED`). The previous
|
|
2557
|
+
* model's `movedColumns` reference indices that may not exist in the new
|
|
2558
|
+
* model (e.g. a pivot exposes a different column set), so reset them to the
|
|
2559
|
+
* new model's initial order. The metric calculator is rebuilt separately when
|
|
2560
|
+
* the `getMetricCalculator` prop changes (see `componentDidUpdate`); a calc
|
|
2561
|
+
* whose seed `movedColumns` are now stale self-heals because `getMetrics`
|
|
2562
|
+
* reconciles against the grid's current `movedColumns` at draw time.
|
|
2563
|
+
*/
|
|
2564
|
+
handleSchemaChanged() {
|
|
2565
|
+
var model = this.props.model;
|
|
2566
|
+
this.setState({
|
|
2567
|
+
movedColumns: model.initialMovedColumns
|
|
2568
|
+
});
|
|
2569
|
+
}
|
|
2671
2570
|
handleViewChanged(metrics) {
|
|
2672
2571
|
var _this$grid$state, _this$grid19;
|
|
2673
|
-
var
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
selectionEndRow = 0
|
|
2678
|
-
} = (_this$grid$state = (_this$grid19 = this.grid) === null || _this$grid19 === void 0 ? void 0 : _this$grid19.state) !== null && _this$grid$state !== void 0 ? _this$grid$state : {};
|
|
2572
|
+
var model = this.props.model;
|
|
2573
|
+
var _ref24 = (_this$grid$state = (_this$grid19 = this.grid) === null || _this$grid19 === void 0 ? void 0 : _this$grid19.state) !== null && _this$grid$state !== void 0 ? _this$grid$state : {},
|
|
2574
|
+
_ref24$selectionEndRo = _ref24.selectionEndRow,
|
|
2575
|
+
selectionEndRow = _ref24$selectionEndRo === void 0 ? 0 : _ref24$selectionEndRo;
|
|
2679
2576
|
var pendingRowCount = 0;
|
|
2680
2577
|
if (isEditableGridModel(model) && model.isEditable) {
|
|
2681
2578
|
assertNotNull(metrics);
|
|
2682
|
-
var
|
|
2683
|
-
bottomViewport
|
|
2684
|
-
} = metrics;
|
|
2579
|
+
var bottomViewport = metrics.bottomViewport;
|
|
2685
2580
|
|
|
2686
2581
|
// We have an editable table that we can add new rows to
|
|
2687
2582
|
// Display empty rows beneath the table rows that user can fill in
|
|
@@ -2704,12 +2599,8 @@ class IrisGrid extends Component {
|
|
|
2704
2599
|
}
|
|
2705
2600
|
handleSelectionChanged(selectedRanges) {
|
|
2706
2601
|
assertNotNull(selectedRanges);
|
|
2707
|
-
var
|
|
2708
|
-
|
|
2709
|
-
} = this.props;
|
|
2710
|
-
var {
|
|
2711
|
-
copyOperation
|
|
2712
|
-
} = this.state;
|
|
2602
|
+
var onSelectionChanged = this.props.onSelectionChanged;
|
|
2603
|
+
var copyOperation = this.state.copyOperation;
|
|
2713
2604
|
this.setState({
|
|
2714
2605
|
selectedRanges
|
|
2715
2606
|
});
|
|
@@ -2736,12 +2627,8 @@ class IrisGrid extends Component {
|
|
|
2736
2627
|
}, onChangeApplied);
|
|
2737
2628
|
}
|
|
2738
2629
|
handleHeaderGroupsChanged(columnHeaderGroups) {
|
|
2739
|
-
var
|
|
2740
|
-
|
|
2741
|
-
} = this.props;
|
|
2742
|
-
var {
|
|
2743
|
-
columnHeaderGroups: prevColumnHeaderGroups
|
|
2744
|
-
} = this.state;
|
|
2630
|
+
var model = this.props.model;
|
|
2631
|
+
var prevColumnHeaderGroups = this.state.columnHeaderGroups;
|
|
2745
2632
|
if (prevColumnHeaderGroups === columnHeaderGroups) {
|
|
2746
2633
|
return;
|
|
2747
2634
|
}
|
|
@@ -2769,10 +2656,9 @@ class IrisGrid extends Component {
|
|
|
2769
2656
|
}
|
|
2770
2657
|
handleConditionalFormatCreate() {
|
|
2771
2658
|
log.debug('Create new conditional format');
|
|
2772
|
-
var
|
|
2773
|
-
openOptions,
|
|
2774
|
-
conditionalFormats
|
|
2775
|
-
} = this.state;
|
|
2659
|
+
var _this$state12 = this.state,
|
|
2660
|
+
openOptions = _this$state12.openOptions,
|
|
2661
|
+
conditionalFormats = _this$state12.conditionalFormats;
|
|
2776
2662
|
this.setState({
|
|
2777
2663
|
openOptions: [...openOptions, {
|
|
2778
2664
|
type: OptionType.CONDITIONAL_FORMATTING_EDIT,
|
|
@@ -2785,10 +2671,9 @@ class IrisGrid extends Component {
|
|
|
2785
2671
|
}
|
|
2786
2672
|
handleConditionalFormatEdit(index) {
|
|
2787
2673
|
log.debug('Edit conditional format', index);
|
|
2788
|
-
var
|
|
2789
|
-
openOptions,
|
|
2790
|
-
conditionalFormats
|
|
2791
|
-
} = this.state;
|
|
2674
|
+
var _this$state13 = this.state,
|
|
2675
|
+
openOptions = _this$state13.openOptions,
|
|
2676
|
+
conditionalFormats = _this$state13.conditionalFormats;
|
|
2792
2677
|
this.setState({
|
|
2793
2678
|
openOptions: [...openOptions, {
|
|
2794
2679
|
type: OptionType.CONDITIONAL_FORMATTING_EDIT,
|
|
@@ -2825,19 +2710,14 @@ class IrisGrid extends Component {
|
|
|
2825
2710
|
}
|
|
2826
2711
|
handleUpdateCustomColumns(customColumns) {
|
|
2827
2712
|
log.info("handleUpdateCustomColumns:", customColumns);
|
|
2828
|
-
var
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
|
|
2832
|
-
|
|
2833
|
-
|
|
2834
|
-
|
|
2835
|
-
|
|
2836
|
-
selectDistinctColumns
|
|
2837
|
-
} = this.state;
|
|
2838
|
-
var {
|
|
2839
|
-
columns
|
|
2840
|
-
} = model;
|
|
2713
|
+
var model = this.props.model;
|
|
2714
|
+
var _this$state14 = this.state,
|
|
2715
|
+
movedColumns = _this$state14.movedColumns,
|
|
2716
|
+
sorts = _this$state14.sorts,
|
|
2717
|
+
quickFilters = _this$state14.quickFilters,
|
|
2718
|
+
advancedFilters = _this$state14.advancedFilters,
|
|
2719
|
+
selectDistinctColumns = _this$state14.selectDistinctColumns;
|
|
2720
|
+
var columns = model.columns;
|
|
2841
2721
|
var oldCustomColumns = model.customColumns.map(customColumn => "".concat(customColumn));
|
|
2842
2722
|
var removedColumnNames = IrisGridUtils.getRemovedCustomColumnNames(oldCustomColumns, customColumns);
|
|
2843
2723
|
if (removedColumnNames.length > 0) {
|
|
@@ -2883,9 +2763,7 @@ class IrisGrid extends Component {
|
|
|
2883
2763
|
}
|
|
2884
2764
|
handleCustomColumnsChanged() {
|
|
2885
2765
|
log.debug('Model columns changed');
|
|
2886
|
-
var
|
|
2887
|
-
isReady
|
|
2888
|
-
} = this.state;
|
|
2766
|
+
var isReady = this.state.isReady;
|
|
2889
2767
|
if (isReady) {
|
|
2890
2768
|
this.updateMetrics();
|
|
2891
2769
|
|
|
@@ -2896,6 +2774,49 @@ class IrisGrid extends Component {
|
|
|
2896
2774
|
this.loadTableState();
|
|
2897
2775
|
}
|
|
2898
2776
|
}
|
|
2777
|
+
|
|
2778
|
+
/**
|
|
2779
|
+
* Rebuild the metric calculator when the `getMetricCalculator` prop swaps for
|
|
2780
|
+
* a different factory (e.g. entering or leaving a pivot, where the
|
|
2781
|
+
* pivot-builder middleware flips the prop). The renderer and mouse handlers
|
|
2782
|
+
* are recomputed via their memoized getters on the next render and do not
|
|
2783
|
+
* need explicit handling here.
|
|
2784
|
+
*
|
|
2785
|
+
* User column-widths / row-heights from the previous calculator are not
|
|
2786
|
+
* carried over: a factory swap means the column set has effectively changed,
|
|
2787
|
+
* so the stored sizes wouldn't map to anything meaningful.
|
|
2788
|
+
*
|
|
2789
|
+
* Moved columns are NOT reset here — that is owned by `handleSchemaChanged`
|
|
2790
|
+
* (the `SCHEMA_CHANGED` event) so that a plain prop swap against the same
|
|
2791
|
+
* model preserves the user's layout. The new calculator is seeded with the
|
|
2792
|
+
* current moved columns; `getMetrics` reconciles against the grid's live
|
|
2793
|
+
* `movedColumns` at draw time, so a later reset stays consistent.
|
|
2794
|
+
*/
|
|
2795
|
+
maybeRebuildMetricCalculator() {
|
|
2796
|
+
var _model$layoutHints4;
|
|
2797
|
+
var getMetricCalculator = this.props.getMetricCalculator;
|
|
2798
|
+
if (getMetricCalculator === this.lastMetricCalculatorFactory) return;
|
|
2799
|
+
var model = this.props.model;
|
|
2800
|
+
var movedColumns = this.state.movedColumns;
|
|
2801
|
+
var next = getMetricCalculator({
|
|
2802
|
+
userColumnWidths: new Map(),
|
|
2803
|
+
userRowHeights: new Map(),
|
|
2804
|
+
movedColumns,
|
|
2805
|
+
initialColumnWidths: new Map(model === null || model === void 0 || (_model$layoutHints4 = model.layoutHints) === null || _model$layoutHints4 === void 0 || (_model$layoutHints4 = _model$layoutHints4.hiddenColumns) === null || _model$layoutHints4 === void 0 ? void 0 : _model$layoutHints4.map(name => [model.getColumnIndexByName(name), 0]))
|
|
2806
|
+
});
|
|
2807
|
+
this.lastMetricCalculatorFactory = getMetricCalculator;
|
|
2808
|
+
log.debug('Swapping metric calculator', next);
|
|
2809
|
+
// Also push the new calculator onto the Grid synchronously so any
|
|
2810
|
+
// immediately-following read of `Grid.metricCalculator` (before React has
|
|
2811
|
+
// committed the setState below) uses the new instance against the new
|
|
2812
|
+
// model rather than invoking the old calculator and potentially throwing.
|
|
2813
|
+
if (this.grid != null) {
|
|
2814
|
+
this.grid.metricCalculator = next;
|
|
2815
|
+
}
|
|
2816
|
+
this.setState({
|
|
2817
|
+
metricCalculator: next
|
|
2818
|
+
});
|
|
2819
|
+
}
|
|
2899
2820
|
handlePendingCommitClicked() {
|
|
2900
2821
|
return this.commitPending();
|
|
2901
2822
|
}
|
|
@@ -2905,13 +2826,9 @@ class IrisGrid extends Component {
|
|
|
2905
2826
|
handlePendingDataUpdated() {
|
|
2906
2827
|
var _this$grid21;
|
|
2907
2828
|
log.debug('pending data updated');
|
|
2908
|
-
var
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
var {
|
|
2912
|
-
pendingDataMap,
|
|
2913
|
-
pendingDataErrors
|
|
2914
|
-
} = model;
|
|
2829
|
+
var model = this.props.model;
|
|
2830
|
+
var pendingDataMap = model.pendingDataMap,
|
|
2831
|
+
pendingDataErrors = model.pendingDataErrors;
|
|
2915
2832
|
this.setState({
|
|
2916
2833
|
pendingDataMap,
|
|
2917
2834
|
pendingDataErrors,
|
|
@@ -2921,10 +2838,9 @@ class IrisGrid extends Component {
|
|
|
2921
2838
|
}
|
|
2922
2839
|
handleResizeColumn(modelIndex) {
|
|
2923
2840
|
var _this$grid22;
|
|
2924
|
-
var
|
|
2925
|
-
metrics,
|
|
2926
|
-
metricCalculator
|
|
2927
|
-
} = this.state;
|
|
2841
|
+
var _this$state15 = this.state,
|
|
2842
|
+
metrics = _this$state15.metrics,
|
|
2843
|
+
metricCalculator = _this$state15.metricCalculator;
|
|
2928
2844
|
if (!metrics) throw new Error('Metrics not set');
|
|
2929
2845
|
var contentWidth = getOrThrow(metrics.contentColumnWidths, modelIndex);
|
|
2930
2846
|
var userWidths = metricCalculator.getUserColumnWidths();
|
|
@@ -2938,17 +2854,19 @@ class IrisGrid extends Component {
|
|
|
2938
2854
|
}
|
|
2939
2855
|
handleResizeAllColumns() {
|
|
2940
2856
|
var _this$grid23;
|
|
2941
|
-
var
|
|
2942
|
-
metrics,
|
|
2943
|
-
metricCalculator
|
|
2944
|
-
} = this.state;
|
|
2857
|
+
var _this$state16 = this.state,
|
|
2858
|
+
metrics = _this$state16.metrics,
|
|
2859
|
+
metricCalculator = _this$state16.metricCalculator;
|
|
2945
2860
|
if (!metrics) throw new Error('Metrics not set');
|
|
2946
2861
|
var allColumns = [...metrics.allColumnWidths.entries()];
|
|
2947
|
-
var visibleColumns = allColumns.filter(
|
|
2948
|
-
var
|
|
2862
|
+
var visibleColumns = allColumns.filter(_ref25 => {
|
|
2863
|
+
var _ref26 = _slicedToArray(_ref25, 2),
|
|
2864
|
+
_ = _ref26[0],
|
|
2865
|
+
width = _ref26[1];
|
|
2949
2866
|
return width !== 0;
|
|
2950
|
-
}).map(
|
|
2951
|
-
var
|
|
2867
|
+
}).map(_ref27 => {
|
|
2868
|
+
var _ref28 = _slicedToArray(_ref27, 1),
|
|
2869
|
+
modelIndex = _ref28[0];
|
|
2952
2870
|
return modelIndex;
|
|
2953
2871
|
});
|
|
2954
2872
|
var contentWidths = metrics.contentColumnWidths;
|
|
@@ -2984,9 +2902,7 @@ class IrisGrid extends Component {
|
|
|
2984
2902
|
var added = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
2985
2903
|
var removed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
2986
2904
|
log.debug('handleAggregationsChange', aggregationSettings, added, removed);
|
|
2987
|
-
var
|
|
2988
|
-
rollupConfig
|
|
2989
|
-
} = this.state;
|
|
2905
|
+
var rollupConfig = this.state.rollupConfig;
|
|
2990
2906
|
var isRollup = ((_rollupConfig$columns = rollupConfig === null || rollupConfig === void 0 || (_rollupConfig$columns2 = rollupConfig.columns) === null || _rollupConfig$columns2 === void 0 ? void 0 : _rollupConfig$columns2.length) !== null && _rollupConfig$columns !== void 0 ? _rollupConfig$columns : 0) > 0;
|
|
2991
2907
|
// Do not start loading if this is rollup and added / removed aggregations are prohibited for rollups
|
|
2992
2908
|
var changes = [...added, ...removed];
|
|
@@ -3006,19 +2922,15 @@ class IrisGrid extends Component {
|
|
|
3006
2922
|
handleAggregationChange(aggregation) {
|
|
3007
2923
|
var _rollupConfig$columns3, _rollupConfig$columns4;
|
|
3008
2924
|
log.debug('handleAggregationChange', aggregation);
|
|
3009
|
-
var
|
|
3010
|
-
rollupConfig
|
|
3011
|
-
} = this.state;
|
|
2925
|
+
var rollupConfig = this.state.rollupConfig;
|
|
3012
2926
|
var isRollup = ((_rollupConfig$columns3 = rollupConfig === null || rollupConfig === void 0 || (_rollupConfig$columns4 = rollupConfig.columns) === null || _rollupConfig$columns4 === void 0 ? void 0 : _rollupConfig$columns4.length) !== null && _rollupConfig$columns3 !== void 0 ? _rollupConfig$columns3 : 0) > 0;
|
|
3013
2927
|
// Do not start loading if this is rollup and the aggregation is prohibited for rollups
|
|
3014
2928
|
var shouldStartLoading = !(isRollup && AggregationUtils.isRollupProhibited(aggregation.operation));
|
|
3015
2929
|
if (shouldStartLoading) {
|
|
3016
2930
|
this.startLoading("Aggregating ".concat(aggregation.operation, "..."));
|
|
3017
2931
|
}
|
|
3018
|
-
this.setState(
|
|
3019
|
-
var
|
|
3020
|
-
aggregationSettings
|
|
3021
|
-
} = _ref20;
|
|
2932
|
+
this.setState(_ref29 => {
|
|
2933
|
+
var aggregationSettings = _ref29.aggregationSettings;
|
|
3022
2934
|
return {
|
|
3023
2935
|
selectedAggregation: aggregation,
|
|
3024
2936
|
aggregationSettings: _objectSpread(_objectSpread({}, aggregationSettings), {}, {
|
|
@@ -3034,9 +2946,7 @@ class IrisGrid extends Component {
|
|
|
3034
2946
|
*/
|
|
3035
2947
|
handleAggregationEdit(aggregation) {
|
|
3036
2948
|
log.debug('handleAggregationEdit', aggregation);
|
|
3037
|
-
var
|
|
3038
|
-
openOptions
|
|
3039
|
-
} = this.state;
|
|
2949
|
+
var openOptions = this.state.openOptions;
|
|
3040
2950
|
this.setState({
|
|
3041
2951
|
openOptions: [...openOptions, {
|
|
3042
2952
|
type: OptionType.AGGREGATION_EDIT,
|
|
@@ -3051,9 +2961,7 @@ class IrisGrid extends Component {
|
|
|
3051
2961
|
|
|
3052
2962
|
// Un-hide hidden group-by columns.
|
|
3053
2963
|
if ((rollupConfig === null || rollupConfig === void 0 ? void 0 : rollupConfig.columns) != null && rollupConfig.columns.length > 0) {
|
|
3054
|
-
var
|
|
3055
|
-
metricCalculator
|
|
3056
|
-
} = this.state;
|
|
2964
|
+
var metricCalculator = this.state.metricCalculator;
|
|
3057
2965
|
var userColumnWidthsByName = metricCalculator.getUserColumnWidthsByName();
|
|
3058
2966
|
rollupConfig.columns.forEach(name => {
|
|
3059
2967
|
if (userColumnWidthsByName.get(name) === 0) {
|
|
@@ -3092,9 +3000,7 @@ class IrisGrid extends Component {
|
|
|
3092
3000
|
});
|
|
3093
3001
|
}
|
|
3094
3002
|
handleDownloadTableStart() {
|
|
3095
|
-
var
|
|
3096
|
-
canDownloadCsv
|
|
3097
|
-
} = this.props;
|
|
3003
|
+
var canDownloadCsv = this.props.canDownloadCsv;
|
|
3098
3004
|
if (canDownloadCsv) {
|
|
3099
3005
|
this.setState({
|
|
3100
3006
|
isTableDownloading: true,
|
|
@@ -3107,9 +3013,7 @@ class IrisGrid extends Component {
|
|
|
3107
3013
|
}
|
|
3108
3014
|
}
|
|
3109
3015
|
handleDownloadTable(fileName, frozenTable, tableSubscription, snapshotRanges, modelRanges, includeColumnHeaders, useUnformattedValues) {
|
|
3110
|
-
var
|
|
3111
|
-
canDownloadCsv
|
|
3112
|
-
} = this.props;
|
|
3016
|
+
var canDownloadCsv = this.props.canDownloadCsv;
|
|
3113
3017
|
if (canDownloadCsv) {
|
|
3114
3018
|
log.info('start table downloading', fileName, frozenTable, tableSubscription, snapshotRanges, modelRanges, includeColumnHeaders, useUnformattedValues);
|
|
3115
3019
|
this.setState(() => {
|
|
@@ -3130,13 +3034,9 @@ class IrisGrid extends Component {
|
|
|
3130
3034
|
*/
|
|
3131
3035
|
removeEmptyAggregations() {
|
|
3132
3036
|
log.debug('removeEmptyAggregations');
|
|
3133
|
-
this.setState(
|
|
3134
|
-
var
|
|
3135
|
-
|
|
3136
|
-
} = _ref21;
|
|
3137
|
-
var {
|
|
3138
|
-
aggregations
|
|
3139
|
-
} = aggregationSettings;
|
|
3037
|
+
this.setState(_ref30 => {
|
|
3038
|
+
var aggregationSettings = _ref30.aggregationSettings;
|
|
3039
|
+
var aggregations = aggregationSettings.aggregations;
|
|
3140
3040
|
var newAggregations = aggregations.filter(a => a.selected.length > 0 || a.invert);
|
|
3141
3041
|
if (newAggregations.length !== aggregations.length) {
|
|
3142
3042
|
return {
|
|
@@ -3158,16 +3058,11 @@ class IrisGrid extends Component {
|
|
|
3158
3058
|
return _asyncToGenerator(function* () {
|
|
3159
3059
|
var _this6$grid;
|
|
3160
3060
|
var isBackwards = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : false;
|
|
3161
|
-
var
|
|
3162
|
-
gotoValueSelectedColumnName
|
|
3163
|
-
gotoValueSelectedFilter
|
|
3164
|
-
|
|
3165
|
-
var
|
|
3166
|
-
model
|
|
3167
|
-
} = _this6.props;
|
|
3168
|
-
var {
|
|
3169
|
-
dh
|
|
3170
|
-
} = model;
|
|
3061
|
+
var _this6$state = _this6.state,
|
|
3062
|
+
selectedColumnName = _this6$state.gotoValueSelectedColumnName,
|
|
3063
|
+
gotoValueSelectedFilter = _this6$state.gotoValueSelectedFilter;
|
|
3064
|
+
var model = _this6.props.model;
|
|
3065
|
+
var dh = model.dh;
|
|
3171
3066
|
if (!model.isSeekRowAvailable) {
|
|
3172
3067
|
return;
|
|
3173
3068
|
}
|
|
@@ -3186,9 +3081,7 @@ class IrisGrid extends Component {
|
|
|
3186
3081
|
var isIgnoreCase = gotoValueSelectedFilter === FilterType.eqIgnoreCase || gotoValueSelectedFilter === FilterType.containsIgnoreCase;
|
|
3187
3082
|
try {
|
|
3188
3083
|
var _this6$grid2;
|
|
3189
|
-
var
|
|
3190
|
-
formatter
|
|
3191
|
-
} = model;
|
|
3084
|
+
var formatter = model.formatter;
|
|
3192
3085
|
var columnDataType = TableUtils.getNormalizedType(selectedColumn.type);
|
|
3193
3086
|
var rowIndex;
|
|
3194
3087
|
switch (columnDataType) {
|
|
@@ -3200,7 +3093,9 @@ class IrisGrid extends Component {
|
|
|
3200
3093
|
}
|
|
3201
3094
|
case TableUtils.dataType.DATETIME:
|
|
3202
3095
|
{
|
|
3203
|
-
var
|
|
3096
|
+
var _DateUtils$parseDateR = DateUtils.parseDateRange(dh, inputString, formatter.timeZone),
|
|
3097
|
+
_DateUtils$parseDateR2 = _slicedToArray(_DateUtils$parseDateR, 1),
|
|
3098
|
+
startDate = _DateUtils$parseDateR2[0];
|
|
3204
3099
|
rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.DATETIME, startDate, undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);
|
|
3205
3100
|
break;
|
|
3206
3101
|
}
|
|
@@ -3263,9 +3158,7 @@ class IrisGrid extends Component {
|
|
|
3263
3158
|
* @param ranges The ranges to delete
|
|
3264
3159
|
*/
|
|
3265
3160
|
deleteRanges(ranges) {
|
|
3266
|
-
var
|
|
3267
|
-
model
|
|
3268
|
-
} = this.props;
|
|
3161
|
+
var model = this.props.model;
|
|
3269
3162
|
if (!isDeletableGridModel(model) || !model.isDeletable) {
|
|
3270
3163
|
throw new Error('Model does not support deleting ranges');
|
|
3271
3164
|
}
|
|
@@ -3279,13 +3172,9 @@ class IrisGrid extends Component {
|
|
|
3279
3172
|
if (this.grid == null) {
|
|
3280
3173
|
return;
|
|
3281
3174
|
}
|
|
3282
|
-
var
|
|
3283
|
-
isSelectingColumn
|
|
3284
|
-
} = this.props;
|
|
3175
|
+
var isSelectingColumn = this.props.isSelectingColumn;
|
|
3285
3176
|
if (isSelectingColumn) {
|
|
3286
|
-
var
|
|
3287
|
-
columnAllowedCursor
|
|
3288
|
-
} = this.props;
|
|
3177
|
+
var columnAllowedCursor = this.props.columnAllowedCursor;
|
|
3289
3178
|
this.grid.setState({
|
|
3290
3179
|
cursor: columnAllowedCursor
|
|
3291
3180
|
});
|
|
@@ -3315,15 +3204,9 @@ class IrisGrid extends Component {
|
|
|
3315
3204
|
if (!this.grid) {
|
|
3316
3205
|
return;
|
|
3317
3206
|
}
|
|
3318
|
-
var
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
var {
|
|
3322
|
-
state: gridState
|
|
3323
|
-
} = this.grid;
|
|
3324
|
-
var {
|
|
3325
|
-
onStateChange
|
|
3326
|
-
} = this.props;
|
|
3207
|
+
var irisGridState = this.state;
|
|
3208
|
+
var gridState = this.grid.state;
|
|
3209
|
+
var onStateChange = this.props.onStateChange;
|
|
3327
3210
|
onStateChange(irisGridState, gridState);
|
|
3328
3211
|
}
|
|
3329
3212
|
handleOverflowClose() {
|
|
@@ -3346,22 +3229,19 @@ class IrisGrid extends Component {
|
|
|
3346
3229
|
}
|
|
3347
3230
|
getColumnBoundingRect() {
|
|
3348
3231
|
var _this$gridWrapper2;
|
|
3349
|
-
var
|
|
3350
|
-
metrics,
|
|
3351
|
-
shownColumnTooltip
|
|
3352
|
-
} = this.state;
|
|
3232
|
+
var _this$state17 = this.state,
|
|
3233
|
+
metrics = _this$state17.metrics,
|
|
3234
|
+
shownColumnTooltip = _this$state17.shownColumnTooltip;
|
|
3353
3235
|
assertNotNull(metrics);
|
|
3354
3236
|
assertNotNull(shownColumnTooltip);
|
|
3355
3237
|
var gridRect = (_this$gridWrapper2 = this.gridWrapper) === null || _this$gridWrapper2 === void 0 ? void 0 : _this$gridWrapper2.getBoundingClientRect();
|
|
3356
3238
|
var popperMargin = 20;
|
|
3357
3239
|
assertNotNull(gridRect);
|
|
3358
|
-
var
|
|
3359
|
-
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
columnHeaderMaxDepth
|
|
3364
|
-
} = metrics;
|
|
3240
|
+
var columnHeaderHeight = metrics.columnHeaderHeight,
|
|
3241
|
+
allColumnXs = metrics.allColumnXs,
|
|
3242
|
+
allColumnWidths = metrics.allColumnWidths,
|
|
3243
|
+
width = metrics.width,
|
|
3244
|
+
columnHeaderMaxDepth = metrics.columnHeaderMaxDepth;
|
|
3365
3245
|
var columnX = allColumnXs.get(shownColumnTooltip);
|
|
3366
3246
|
var columnWidth = allColumnWidths.get(shownColumnTooltip);
|
|
3367
3247
|
assertNotNull(columnX);
|
|
@@ -3382,18 +3262,12 @@ class IrisGrid extends Component {
|
|
|
3382
3262
|
};
|
|
3383
3263
|
}
|
|
3384
3264
|
handleGotoRowSelectedRowNumberSubmit() {
|
|
3385
|
-
var
|
|
3386
|
-
gotoRow: rowNumber
|
|
3387
|
-
} = this.state;
|
|
3265
|
+
var rowNumber = this.state.gotoRow;
|
|
3388
3266
|
this.focusRowInGrid(rowNumber);
|
|
3389
3267
|
}
|
|
3390
3268
|
focusRowInGrid(rowNumber) {
|
|
3391
|
-
var
|
|
3392
|
-
|
|
3393
|
-
} = this.props;
|
|
3394
|
-
var {
|
|
3395
|
-
rowCount
|
|
3396
|
-
} = model;
|
|
3269
|
+
var model = this.props.model;
|
|
3270
|
+
var rowCount = model.rowCount;
|
|
3397
3271
|
this.setState({
|
|
3398
3272
|
gotoRow: rowNumber
|
|
3399
3273
|
});
|
|
@@ -3437,13 +3311,11 @@ class IrisGrid extends Component {
|
|
|
3437
3311
|
this.focusRowInGrid(rowNumber);
|
|
3438
3312
|
}
|
|
3439
3313
|
getColumnTooltip(visibleIndex, metrics, model) {
|
|
3440
|
-
var
|
|
3441
|
-
|
|
3442
|
-
|
|
3443
|
-
|
|
3444
|
-
|
|
3445
|
-
width
|
|
3446
|
-
} = metrics;
|
|
3314
|
+
var columnHeaderHeight = metrics.columnHeaderHeight,
|
|
3315
|
+
columnHeaderMaxDepth = metrics.columnHeaderMaxDepth,
|
|
3316
|
+
allColumnXs = metrics.allColumnXs,
|
|
3317
|
+
allColumnWidths = metrics.allColumnWidths,
|
|
3318
|
+
width = metrics.width;
|
|
3447
3319
|
var columnX = allColumnXs.get(visibleIndex);
|
|
3448
3320
|
var columnWidth = allColumnWidths.get(visibleIndex);
|
|
3449
3321
|
if (columnX == null || columnWidth == null) {
|
|
@@ -3526,14 +3398,11 @@ class IrisGrid extends Component {
|
|
|
3526
3398
|
}
|
|
3527
3399
|
handleGotoValueSelectedColumnNameChanged(columnName) {
|
|
3528
3400
|
var _this$grid28;
|
|
3529
|
-
var
|
|
3530
|
-
model
|
|
3531
|
-
} = this.props;
|
|
3401
|
+
var model = this.props.model;
|
|
3532
3402
|
var cursorRow = (_this$grid28 = this.grid) === null || _this$grid28 === void 0 ? void 0 : _this$grid28.state.cursorRow;
|
|
3533
|
-
var
|
|
3534
|
-
gotoValueSelectedColumnName
|
|
3535
|
-
gotoValueManuallyChanged
|
|
3536
|
-
} = this.state;
|
|
3403
|
+
var _this$state18 = this.state,
|
|
3404
|
+
prevColumnName = _this$state18.gotoValueSelectedColumnName,
|
|
3405
|
+
gotoValueManuallyChanged = _this$state18.gotoValueManuallyChanged;
|
|
3537
3406
|
if (cursorRow != null) {
|
|
3538
3407
|
var index = model.getColumnIndexByName(columnName);
|
|
3539
3408
|
var column = IrisGridUtils.getColumnByName(model.columns, columnName);
|
|
@@ -3572,9 +3441,7 @@ class IrisGrid extends Component {
|
|
|
3572
3441
|
});
|
|
3573
3442
|
}
|
|
3574
3443
|
handleGotoValueSubmitted(isBackwards) {
|
|
3575
|
-
var
|
|
3576
|
-
gotoValue
|
|
3577
|
-
} = this.state;
|
|
3444
|
+
var gotoValue = this.state.gotoValue;
|
|
3578
3445
|
this.seekRow(gotoValue, isBackwards);
|
|
3579
3446
|
}
|
|
3580
3447
|
|
|
@@ -3601,15 +3468,11 @@ class IrisGrid extends Component {
|
|
|
3601
3468
|
return null;
|
|
3602
3469
|
}
|
|
3603
3470
|
var debounceMs = Math.min(Math.max(IrisGrid.minDebounce, Math.round(metrics.rowCount / 200)), IrisGrid.maxDebounce);
|
|
3604
|
-
var
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
} = filterBoxCoordinates;
|
|
3610
|
-
var {
|
|
3611
|
-
width
|
|
3612
|
-
} = metrics;
|
|
3471
|
+
var x = filterBoxCoordinates.x,
|
|
3472
|
+
y = filterBoxCoordinates.y,
|
|
3473
|
+
fieldWidth = filterBoxCoordinates.width,
|
|
3474
|
+
fieldHeight = filterBoxCoordinates.height;
|
|
3475
|
+
var width = metrics.width;
|
|
3613
3476
|
var style = {
|
|
3614
3477
|
top: y,
|
|
3615
3478
|
left: x,
|
|
@@ -3658,99 +3521,96 @@ class IrisGrid extends Component {
|
|
|
3658
3521
|
_this7 = this,
|
|
3659
3522
|
_this$grid30,
|
|
3660
3523
|
_openOptions;
|
|
3661
|
-
var
|
|
3662
|
-
children,
|
|
3663
|
-
customFilters,
|
|
3664
|
-
getDownloadWorker,
|
|
3665
|
-
isSelectingColumn,
|
|
3666
|
-
isStuckToBottom,
|
|
3667
|
-
isStuckToRight,
|
|
3668
|
-
model,
|
|
3669
|
-
name,
|
|
3670
|
-
onlyFetchVisibleColumns,
|
|
3671
|
-
alwaysFetchColumns,
|
|
3672
|
-
advancedSettings,
|
|
3673
|
-
onAdvancedSettingsChange,
|
|
3674
|
-
canDownloadCsv,
|
|
3675
|
-
onCreateChart
|
|
3676
|
-
|
|
3677
|
-
var
|
|
3678
|
-
metricCalculator,
|
|
3679
|
-
metrics,
|
|
3680
|
-
isFilterBarShown,
|
|
3681
|
-
isSelectingPartition,
|
|
3682
|
-
isMenuShown,
|
|
3683
|
-
isReady,
|
|
3684
|
-
copyOperation,
|
|
3685
|
-
focusedFilterBarColumn,
|
|
3686
|
-
loadingText,
|
|
3687
|
-
loadingScrimProgress,
|
|
3688
|
-
loadingSpinnerShown,
|
|
3689
|
-
loadingCancelShown,
|
|
3690
|
-
loadingBlocksGrid,
|
|
3691
|
-
shownColumnTooltip,
|
|
3692
|
-
hoverAdvancedFilter,
|
|
3693
|
-
shownAdvancedFilter,
|
|
3694
|
-
maximizedAdvancedFilter,
|
|
3695
|
-
hoverSelectColumn,
|
|
3696
|
-
quickFilters,
|
|
3697
|
-
advancedFilters,
|
|
3698
|
-
searchFilter,
|
|
3699
|
-
selectDistinctColumns,
|
|
3700
|
-
movedColumns,
|
|
3701
|
-
movedRows,
|
|
3702
|
-
formatter,
|
|
3703
|
-
conditionalFormats,
|
|
3704
|
-
conditionalFormatPreview,
|
|
3705
|
-
conditionalFormatEditIndex,
|
|
3706
|
-
columnAlignmentMap,
|
|
3707
|
-
sorts,
|
|
3708
|
-
reverse,
|
|
3709
|
-
customColumns,
|
|
3710
|
-
selectedRanges,
|
|
3711
|
-
isTableDownloading,
|
|
3712
|
-
tableDownloadStatus,
|
|
3713
|
-
tableDownloadProgress,
|
|
3714
|
-
tableDownloadEstimatedTime,
|
|
3715
|
-
showSearchBar,
|
|
3716
|
-
searchValue,
|
|
3717
|
-
selectedSearchColumns,
|
|
3718
|
-
invertSearchColumns,
|
|
3719
|
-
aggregationSettings,
|
|
3720
|
-
selectedAggregation,
|
|
3721
|
-
rollupConfig,
|
|
3722
|
-
openOptions,
|
|
3723
|
-
pendingSavePromise,
|
|
3724
|
-
pendingSaveError,
|
|
3725
|
-
pendingRowCount,
|
|
3726
|
-
pendingDataErrors,
|
|
3727
|
-
pendingDataMap,
|
|
3728
|
-
toastMessage,
|
|
3729
|
-
frozenColumns,
|
|
3730
|
-
columnHeaderGroups,
|
|
3731
|
-
showOverflowModal,
|
|
3732
|
-
showNoPastePermissionModal,
|
|
3733
|
-
noPastePermissionError,
|
|
3734
|
-
overflowText,
|
|
3735
|
-
overflowButtonTooltipProps,
|
|
3736
|
-
expandCellTooltipProps,
|
|
3737
|
-
hoverTooltipProps,
|
|
3738
|
-
isGotoShown,
|
|
3739
|
-
gotoRow,
|
|
3740
|
-
gotoRowError,
|
|
3741
|
-
gotoValueError,
|
|
3742
|
-
gotoValueSelectedColumnName,
|
|
3743
|
-
gotoValue,
|
|
3744
|
-
gotoValueSelectedFilter,
|
|
3745
|
-
partitionConfig
|
|
3746
|
-
} = this.state;
|
|
3524
|
+
var _this$props8 = this.props,
|
|
3525
|
+
children = _this$props8.children,
|
|
3526
|
+
customFilters = _this$props8.customFilters,
|
|
3527
|
+
getDownloadWorker = _this$props8.getDownloadWorker,
|
|
3528
|
+
isSelectingColumn = _this$props8.isSelectingColumn,
|
|
3529
|
+
isStuckToBottom = _this$props8.isStuckToBottom,
|
|
3530
|
+
isStuckToRight = _this$props8.isStuckToRight,
|
|
3531
|
+
model = _this$props8.model,
|
|
3532
|
+
name = _this$props8.name,
|
|
3533
|
+
onlyFetchVisibleColumns = _this$props8.onlyFetchVisibleColumns,
|
|
3534
|
+
alwaysFetchColumns = _this$props8.alwaysFetchColumns,
|
|
3535
|
+
advancedSettings = _this$props8.advancedSettings,
|
|
3536
|
+
onAdvancedSettingsChange = _this$props8.onAdvancedSettingsChange,
|
|
3537
|
+
canDownloadCsv = _this$props8.canDownloadCsv,
|
|
3538
|
+
onCreateChart = _this$props8.onCreateChart,
|
|
3539
|
+
transformTableOptions = _this$props8.transformTableOptions;
|
|
3540
|
+
var _this$state19 = this.state,
|
|
3541
|
+
metricCalculator = _this$state19.metricCalculator,
|
|
3542
|
+
metrics = _this$state19.metrics,
|
|
3543
|
+
isFilterBarShown = _this$state19.isFilterBarShown,
|
|
3544
|
+
isSelectingPartition = _this$state19.isSelectingPartition,
|
|
3545
|
+
isMenuShown = _this$state19.isMenuShown,
|
|
3546
|
+
isReady = _this$state19.isReady,
|
|
3547
|
+
copyOperation = _this$state19.copyOperation,
|
|
3548
|
+
focusedFilterBarColumn = _this$state19.focusedFilterBarColumn,
|
|
3549
|
+
loadingText = _this$state19.loadingText,
|
|
3550
|
+
loadingScrimProgress = _this$state19.loadingScrimProgress,
|
|
3551
|
+
loadingSpinnerShown = _this$state19.loadingSpinnerShown,
|
|
3552
|
+
loadingCancelShown = _this$state19.loadingCancelShown,
|
|
3553
|
+
loadingBlocksGrid = _this$state19.loadingBlocksGrid,
|
|
3554
|
+
shownColumnTooltip = _this$state19.shownColumnTooltip,
|
|
3555
|
+
hoverAdvancedFilter = _this$state19.hoverAdvancedFilter,
|
|
3556
|
+
shownAdvancedFilter = _this$state19.shownAdvancedFilter,
|
|
3557
|
+
maximizedAdvancedFilter = _this$state19.maximizedAdvancedFilter,
|
|
3558
|
+
hoverSelectColumn = _this$state19.hoverSelectColumn,
|
|
3559
|
+
quickFilters = _this$state19.quickFilters,
|
|
3560
|
+
advancedFilters = _this$state19.advancedFilters,
|
|
3561
|
+
searchFilter = _this$state19.searchFilter,
|
|
3562
|
+
selectDistinctColumns = _this$state19.selectDistinctColumns,
|
|
3563
|
+
movedColumns = _this$state19.movedColumns,
|
|
3564
|
+
movedRows = _this$state19.movedRows,
|
|
3565
|
+
formatter = _this$state19.formatter,
|
|
3566
|
+
conditionalFormats = _this$state19.conditionalFormats,
|
|
3567
|
+
conditionalFormatPreview = _this$state19.conditionalFormatPreview,
|
|
3568
|
+
conditionalFormatEditIndex = _this$state19.conditionalFormatEditIndex,
|
|
3569
|
+
columnAlignmentMap = _this$state19.columnAlignmentMap,
|
|
3570
|
+
sorts = _this$state19.sorts,
|
|
3571
|
+
reverse = _this$state19.reverse,
|
|
3572
|
+
customColumns = _this$state19.customColumns,
|
|
3573
|
+
selectedRanges = _this$state19.selectedRanges,
|
|
3574
|
+
isTableDownloading = _this$state19.isTableDownloading,
|
|
3575
|
+
tableDownloadStatus = _this$state19.tableDownloadStatus,
|
|
3576
|
+
tableDownloadProgress = _this$state19.tableDownloadProgress,
|
|
3577
|
+
tableDownloadEstimatedTime = _this$state19.tableDownloadEstimatedTime,
|
|
3578
|
+
showSearchBar = _this$state19.showSearchBar,
|
|
3579
|
+
searchValue = _this$state19.searchValue,
|
|
3580
|
+
selectedSearchColumns = _this$state19.selectedSearchColumns,
|
|
3581
|
+
invertSearchColumns = _this$state19.invertSearchColumns,
|
|
3582
|
+
aggregationSettings = _this$state19.aggregationSettings,
|
|
3583
|
+
selectedAggregation = _this$state19.selectedAggregation,
|
|
3584
|
+
rollupConfig = _this$state19.rollupConfig,
|
|
3585
|
+
openOptions = _this$state19.openOptions,
|
|
3586
|
+
pendingSavePromise = _this$state19.pendingSavePromise,
|
|
3587
|
+
pendingSaveError = _this$state19.pendingSaveError,
|
|
3588
|
+
pendingRowCount = _this$state19.pendingRowCount,
|
|
3589
|
+
pendingDataErrors = _this$state19.pendingDataErrors,
|
|
3590
|
+
pendingDataMap = _this$state19.pendingDataMap,
|
|
3591
|
+
toastMessage = _this$state19.toastMessage,
|
|
3592
|
+
frozenColumns = _this$state19.frozenColumns,
|
|
3593
|
+
columnHeaderGroups = _this$state19.columnHeaderGroups,
|
|
3594
|
+
showOverflowModal = _this$state19.showOverflowModal,
|
|
3595
|
+
showNoPastePermissionModal = _this$state19.showNoPastePermissionModal,
|
|
3596
|
+
noPastePermissionError = _this$state19.noPastePermissionError,
|
|
3597
|
+
overflowText = _this$state19.overflowText,
|
|
3598
|
+
overflowButtonTooltipProps = _this$state19.overflowButtonTooltipProps,
|
|
3599
|
+
expandCellTooltipProps = _this$state19.expandCellTooltipProps,
|
|
3600
|
+
hoverTooltipProps = _this$state19.hoverTooltipProps,
|
|
3601
|
+
isGotoShown = _this$state19.isGotoShown,
|
|
3602
|
+
gotoRow = _this$state19.gotoRow,
|
|
3603
|
+
gotoRowError = _this$state19.gotoRowError,
|
|
3604
|
+
gotoValueError = _this$state19.gotoValueError,
|
|
3605
|
+
gotoValueSelectedColumnName = _this$state19.gotoValueSelectedColumnName,
|
|
3606
|
+
gotoValue = _this$state19.gotoValue,
|
|
3607
|
+
gotoValueSelectedFilter = _this$state19.gotoValueSelectedFilter,
|
|
3608
|
+
partitionConfig = _this$state19.partitionConfig;
|
|
3747
3609
|
if (!isReady) {
|
|
3748
3610
|
return null;
|
|
3749
3611
|
}
|
|
3750
3612
|
var theme = this.getTheme();
|
|
3751
|
-
var
|
|
3752
|
-
columnHeaderHeight: singleColumnHeaderHeight
|
|
3753
|
-
} = theme;
|
|
3613
|
+
var singleColumnHeaderHeight = theme.columnHeaderHeight;
|
|
3754
3614
|
var filter = this.getCachedFilter(customFilters, quickFilters, advancedFilters, searchFilter);
|
|
3755
3615
|
var userColumnWidths = metricCalculator.getUserColumnWidths();
|
|
3756
3616
|
var stateOverride = this.getCachedStateOverride(model, theme, hoverSelectColumn, isFilterBarShown, isSelectingColumn, loadingScrimProgress, quickFilters, advancedFilters, sorts, reverse, rollupConfig, isMenuShown);
|
|
@@ -3807,9 +3667,7 @@ class IrisGrid extends Component {
|
|
|
3807
3667
|
var metricState = this.getMetricState();
|
|
3808
3668
|
|
|
3809
3669
|
// Advanced Filter buttons
|
|
3810
|
-
var
|
|
3811
|
-
visibleColumns
|
|
3812
|
-
} = metrics;
|
|
3670
|
+
var visibleColumns = metrics.visibleColumns;
|
|
3813
3671
|
var _loop2 = function _loop2() {
|
|
3814
3672
|
var columnIndex = visibleColumns[i];
|
|
3815
3673
|
var modelColumn = _this7.getModelColumn(columnIndex);
|
|
@@ -3817,10 +3675,8 @@ class IrisGrid extends Component {
|
|
|
3817
3675
|
var isFilterable = model.isFilterable(modelColumn);
|
|
3818
3676
|
var buttonCoordinates = isFilterable && metricState ? metricCalculator.getAdvancedFilterButtonCoordinates(columnIndex, metricState, metrics) : null;
|
|
3819
3677
|
if (buttonCoordinates != null) {
|
|
3820
|
-
var
|
|
3821
|
-
|
|
3822
|
-
y
|
|
3823
|
-
} = buttonCoordinates;
|
|
3678
|
+
var x = buttonCoordinates.x,
|
|
3679
|
+
y = buttonCoordinates.y;
|
|
3824
3680
|
var style = {
|
|
3825
3681
|
position: 'absolute',
|
|
3826
3682
|
top: y,
|
|
@@ -3881,13 +3737,11 @@ class IrisGrid extends Component {
|
|
|
3881
3737
|
}
|
|
3882
3738
|
var advancedFilterMenus = [];
|
|
3883
3739
|
if (metrics) {
|
|
3884
|
-
var
|
|
3885
|
-
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
3889
|
-
columnHeaderHeight
|
|
3890
|
-
} = metrics;
|
|
3740
|
+
var gridX = metrics.gridX,
|
|
3741
|
+
_visibleColumns = metrics.visibleColumns,
|
|
3742
|
+
allColumnXs = metrics.allColumnXs,
|
|
3743
|
+
allColumnWidths = metrics.allColumnWidths,
|
|
3744
|
+
columnHeaderHeight = metrics.columnHeaderHeight;
|
|
3891
3745
|
var _loop3 = function _loop3() {
|
|
3892
3746
|
var columnIndex = _visibleColumns[_i4];
|
|
3893
3747
|
var columnX = allColumnXs.get(columnIndex);
|
|
@@ -3918,9 +3772,8 @@ class IrisGrid extends Component {
|
|
|
3918
3772
|
return 1; // continue
|
|
3919
3773
|
}
|
|
3920
3774
|
var advancedFilter = advancedFilters.get(modelColumn);
|
|
3921
|
-
var {
|
|
3922
|
-
options
|
|
3923
|
-
} = advancedFilter || {};
|
|
3775
|
+
var _ref31 = advancedFilter || {},
|
|
3776
|
+
advancedFilterOptions = _ref31.options;
|
|
3924
3777
|
var sort = TableUtils.getSortForColumn(model.sort, column.name);
|
|
3925
3778
|
var sortDirection = sort ? sort.direction : null;
|
|
3926
3779
|
if (!isSortDirection(sortDirection)) {
|
|
@@ -3953,7 +3806,8 @@ class IrisGrid extends Component {
|
|
|
3953
3806
|
if (_loop3()) continue;
|
|
3954
3807
|
}
|
|
3955
3808
|
}
|
|
3956
|
-
var
|
|
3809
|
+
var defaultOptionItems = this.getCachedOptionItems(onCreateChart !== undefined && model.isChartBuilderAvailable, model.isCustomColumnsAvailable, model.isFormatColumnsAvailable, model.isOrganizeColumnsAvailable, model.isRollupAvailable, model.isTotalsAvailable || isRollup, model.isSelectDistinctAvailable, model.isExportAvailable, this.toggleFilterBarAction, this.toggleSearchBarAction, this.toggleGotoRowAction, isFilterBarShown, showSearchBar, canDownloadCsv, this.isTableSearchAvailable(), isGotoShown, advancedSettings.size > 0);
|
|
3810
|
+
var optionItems = this.getCachedTransformedOptionItems(defaultOptionItems, transformTableOptions);
|
|
3957
3811
|
var hiddenColumns = this.getCachedHiddenColumns(metricCalculator, userColumnWidths);
|
|
3958
3812
|
var openOptionsStack = openOptions.map(option => {
|
|
3959
3813
|
switch (option.type) {
|
|
@@ -4048,7 +3902,25 @@ class IrisGrid extends Component {
|
|
|
4048
3902
|
onChange: onAdvancedSettingsChange
|
|
4049
3903
|
});
|
|
4050
3904
|
default:
|
|
4051
|
-
|
|
3905
|
+
{
|
|
3906
|
+
// Plugin-contributed items render their own page via
|
|
3907
|
+
// `configPage`. The page is isolated inside an error
|
|
3908
|
+
// boundary so a throwing plugin doesn't tear down the
|
|
3909
|
+
// entire grid subtree. Built-in items that hit the default
|
|
3910
|
+
// case indicate a programmer error (unhandled enum case).
|
|
3911
|
+
var PluginPage = option.configPage;
|
|
3912
|
+
if (PluginPage == null) {
|
|
3913
|
+
throw Error("Unexpected option type ".concat(option.type));
|
|
3914
|
+
}
|
|
3915
|
+
return /*#__PURE__*/_jsx(PluginTableOptionsErrorBoundary, {
|
|
3916
|
+
itemType: String(option.type),
|
|
3917
|
+
children: /*#__PURE__*/_jsx(PluginPage, {
|
|
3918
|
+
model: model,
|
|
3919
|
+
viewState: this.getCachedViewState(this.getCachedHiddenColumnNames(hiddenColumns, model.columns)),
|
|
3920
|
+
onBack: this.handleMenuBack
|
|
3921
|
+
})
|
|
3922
|
+
}, String(option.type));
|
|
3923
|
+
}
|
|
4052
3924
|
}
|
|
4053
3925
|
});
|
|
4054
3926
|
return /*#__PURE__*/_jsxs("div", {
|