@deephaven/iris-grid 0.59.0 → 0.59.1-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/EmptyIrisGridModel.d.ts +62 -0
- package/dist/EmptyIrisGridModel.d.ts.map +1 -0
- package/dist/EmptyIrisGridModel.js +168 -0
- package/dist/EmptyIrisGridModel.js.map +1 -0
- package/dist/GotoRow.d.ts.map +1 -1
- package/dist/GotoRow.js +1 -0
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.d.ts +18 -14
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +185 -157
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridModel.d.ts +5 -4
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +2 -1
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.d.ts +2 -2
- package/dist/IrisGridModelFactory.d.ts.map +1 -1
- package/dist/IrisGridModelFactory.js +1 -1
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +3 -1
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js +8 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.css +14 -36
- package/dist/IrisGridPartitionSelector.css.map +1 -1
- package/dist/IrisGridPartitionSelector.d.ts +39 -38
- package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
- package/dist/IrisGridPartitionSelector.js +253 -227
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridPartitionedTableModel.d.ts +25 -0
- package/dist/IrisGridPartitionedTableModel.d.ts.map +1 -0
- package/dist/IrisGridPartitionedTableModel.js +74 -0
- package/dist/IrisGridPartitionedTableModel.js.map +1 -0
- package/dist/IrisGridProxyModel.d.ts +18 -4
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +84 -5
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +14 -4
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +96 -21
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.d.ts +7 -7
- package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +1 -1
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +2 -4
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +7 -7
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +33 -34
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/MissingPartitionError.d.ts +6 -0
- package/dist/MissingPartitionError.d.ts.map +1 -0
- package/dist/MissingPartitionError.js +14 -0
- package/dist/MissingPartitionError.js.map +1 -0
- package/dist/PartitionedGridModel.d.ts +38 -0
- package/dist/PartitionedGridModel.d.ts.map +1 -0
- package/dist/PartitionedGridModel.js +15 -0
- package/dist/PartitionedGridModel.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.d.ts +2 -2
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +2 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/package.json +16 -15
- package/dist/PartitionSelectorSearch.css +0 -23
- package/dist/PartitionSelectorSearch.css.map +0 -1
- package/dist/PartitionSelectorSearch.d.ts +0 -78
- package/dist/PartitionSelectorSearch.d.ts.map +0 -1
- package/dist/PartitionSelectorSearch.js +0 -343
- package/dist/PartitionSelectorSearch.js.map +0 -1
package/dist/IrisGrid.js
CHANGED
|
@@ -40,6 +40,7 @@ import { Aggregations, AggregationEdit, AggregationUtils, ChartBuilder, CustomCo
|
|
|
40
40
|
import IrisGridUtils from "./IrisGridUtils.js";
|
|
41
41
|
import CrossColumnSearch from "./CrossColumnSearch.js";
|
|
42
42
|
import IrisGridModel from "./IrisGridModel.js";
|
|
43
|
+
import { isPartitionedGridModel } from "./PartitionedGridModel.js";
|
|
43
44
|
import IrisGridPartitionSelector from "./IrisGridPartitionSelector.js";
|
|
44
45
|
import SelectDistinctBuilder from "./sidebar/SelectDistinctBuilder.js";
|
|
45
46
|
import AdvancedSettingsType from "./sidebar/AdvancedSettingsType.js";
|
|
@@ -51,6 +52,7 @@ import IrisGridCellOverflowModal from "./IrisGridCellOverflowModal.js";
|
|
|
51
52
|
import GotoRow from "./GotoRow.js";
|
|
52
53
|
import AggregationOperation from "./sidebar/aggregations/AggregationOperation.js";
|
|
53
54
|
import { IrisGridThemeContext } from "./IrisGridThemeProvider.js";
|
|
55
|
+
import { isMissingPartitionError } from "./MissingPartitionError.js";
|
|
54
56
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
55
57
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
56
58
|
var log = Log.module('IrisGrid');
|
|
@@ -297,7 +299,7 @@ export class IrisGrid extends Component {
|
|
|
297
299
|
}), {
|
|
298
300
|
max: 1
|
|
299
301
|
}));
|
|
300
|
-
_defineProperty(this, "getCachedFilter", memoize((customFilters, quickFilters, advancedFilters,
|
|
302
|
+
_defineProperty(this, "getCachedFilter", memoize((customFilters, quickFilters, advancedFilters, searchFilter) => [...(customFilters !== null && customFilters !== void 0 ? customFilters : []), ...IrisGridUtils.getFiltersFromFilterMap(quickFilters), ...IrisGridUtils.getFiltersFromFilterMap(advancedFilters), ...(searchFilter !== undefined ? [searchFilter] : [])], {
|
|
301
303
|
max: 1
|
|
302
304
|
}));
|
|
303
305
|
_defineProperty(this, "getCachedTheme", memoize((contextTheme, theme, isEditable, floatingRowCount) => {
|
|
@@ -438,7 +440,8 @@ export class IrisGrid extends Component {
|
|
|
438
440
|
}));
|
|
439
441
|
_defineProperty(this, "handleGotoValueChanged", input => {
|
|
440
442
|
this.setState({
|
|
441
|
-
gotoValue: input
|
|
443
|
+
gotoValue: input,
|
|
444
|
+
gotoValueManuallyChanged: true
|
|
442
445
|
});
|
|
443
446
|
this.debouncedSeekRow(input);
|
|
444
447
|
});
|
|
@@ -496,8 +499,6 @@ export class IrisGrid extends Component {
|
|
|
496
499
|
this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);
|
|
497
500
|
this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);
|
|
498
501
|
this.handlePartitionChange = this.handlePartitionChange.bind(this);
|
|
499
|
-
this.handlePartitionFetchAll = this.handlePartitionFetchAll.bind(this);
|
|
500
|
-
this.handlePartitionDone = this.handlePartitionDone.bind(this);
|
|
501
502
|
this.handleColumnVisibilityChanged = this.handleColumnVisibilityChanged.bind(this);
|
|
502
503
|
this.handleColumnVisibilityReset = this.handleColumnVisibilityReset.bind(this);
|
|
503
504
|
this.handleCrossColumnSearch = this.handleCrossColumnSearch.bind(this);
|
|
@@ -566,11 +567,11 @@ export class IrisGrid extends Component {
|
|
|
566
567
|
customColumnFormatMap,
|
|
567
568
|
isFilterBarShown: _isFilterBarShown,
|
|
568
569
|
isSelectingPartition,
|
|
570
|
+
partitions,
|
|
571
|
+
partitionConfig,
|
|
569
572
|
model: _model,
|
|
570
573
|
movedColumns: movedColumnsProp,
|
|
571
574
|
movedRows: movedRowsProp,
|
|
572
|
-
partitions,
|
|
573
|
-
partitionColumns,
|
|
574
575
|
rollupConfig: _rollupConfig,
|
|
575
576
|
userColumnWidths: _userColumnWidths,
|
|
576
577
|
userRowHeights,
|
|
@@ -614,10 +615,10 @@ export class IrisGrid extends Component {
|
|
|
614
615
|
metrics: undefined,
|
|
615
616
|
keyHandlers,
|
|
616
617
|
mouseHandlers,
|
|
617
|
-
partitions
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
618
|
+
partitionConfig: partitionConfig !== null && partitionConfig !== void 0 ? partitionConfig : partitions && partitions.length ? {
|
|
619
|
+
partitions,
|
|
620
|
+
mode: 'partition'
|
|
621
|
+
} : undefined,
|
|
621
622
|
// setAdvancedFilter and setQuickFilter mutate the arguments
|
|
622
623
|
// so we want to always use map copies from the state instead of props
|
|
623
624
|
quickFilters: _quickFilters ? new Map(_quickFilters) : new Map(),
|
|
@@ -683,20 +684,15 @@ export class IrisGrid extends Component {
|
|
|
683
684
|
gotoValueSelectedColumnName: (_model$columns$0$name = (_model$columns$ = _model.columns[0]) === null || _model$columns$ === void 0 ? void 0 : _model$columns$.name) !== null && _model$columns$0$name !== void 0 ? _model$columns$0$name : '',
|
|
684
685
|
gotoValueSelectedFilter: FilterType.eqIgnoreCase,
|
|
685
686
|
gotoValue: '',
|
|
687
|
+
gotoValueManuallyChanged: false,
|
|
686
688
|
columnHeaderGroups: columnHeaderGroups !== null && columnHeaderGroups !== void 0 ? columnHeaderGroups : _model.initialColumnHeaderGroups
|
|
687
689
|
};
|
|
688
690
|
}
|
|
689
691
|
componentDidMount() {
|
|
690
692
|
var {
|
|
691
|
-
partitionColumns,
|
|
692
693
|
model
|
|
693
694
|
} = this.props;
|
|
694
|
-
|
|
695
|
-
if (model.isFilterRequired && model.isValuesTableAvailable && columns.length) {
|
|
696
|
-
this.loadPartitionsTable(columns);
|
|
697
|
-
} else {
|
|
698
|
-
this.initState();
|
|
699
|
-
}
|
|
695
|
+
this.initState();
|
|
700
696
|
this.startListening(model);
|
|
701
697
|
}
|
|
702
698
|
componentDidUpdate(prevProps, prevState) {
|
|
@@ -1237,6 +1233,20 @@ export class IrisGrid extends Component {
|
|
|
1237
1233
|
this.updateFormatterSettings(settings);
|
|
1238
1234
|
}
|
|
1239
1235
|
initState() {
|
|
1236
|
+
var {
|
|
1237
|
+
model
|
|
1238
|
+
} = this.props;
|
|
1239
|
+
try {
|
|
1240
|
+
if (isPartitionedGridModel(model) && model.isPartitionRequired) {
|
|
1241
|
+
this.loadPartitionsTable(model);
|
|
1242
|
+
} else {
|
|
1243
|
+
this.loadTableState();
|
|
1244
|
+
}
|
|
1245
|
+
} catch (error) {
|
|
1246
|
+
this.handleTableLoadError(error);
|
|
1247
|
+
}
|
|
1248
|
+
}
|
|
1249
|
+
loadTableState() {
|
|
1240
1250
|
var {
|
|
1241
1251
|
applyInputFiltersOnInit,
|
|
1242
1252
|
inputFilters,
|
|
@@ -1265,67 +1275,72 @@ export class IrisGrid extends Component {
|
|
|
1265
1275
|
});
|
|
1266
1276
|
this.initFormatter();
|
|
1267
1277
|
}
|
|
1268
|
-
loadPartitionsTable(
|
|
1278
|
+
loadPartitionsTable(model) {
|
|
1269
1279
|
var _this = this;
|
|
1270
1280
|
return _asyncToGenerator(function* () {
|
|
1271
|
-
var {
|
|
1272
|
-
model
|
|
1273
|
-
} = _this.props;
|
|
1274
|
-
_this.setState({
|
|
1275
|
-
isSelectingPartition: true
|
|
1276
|
-
});
|
|
1277
1281
|
try {
|
|
1278
|
-
var
|
|
1279
|
-
var columns = partitionTable.columns.slice(0, partitionColumns.length);
|
|
1280
|
-
var sorts = columns.map(column => column.sort().desc());
|
|
1281
|
-
partitionTable.applySort(sorts);
|
|
1282
|
-
partitionTable.setViewport(0, 0, columns);
|
|
1283
|
-
var _data = yield _this.pending.add(partitionTable.getViewportData());
|
|
1284
|
-
if (_data.rows.length > 0) {
|
|
1285
|
-
var row = _data.rows[0];
|
|
1286
|
-
var values = columns.map(column => row.get(column));
|
|
1287
|
-
_this.updatePartition(values, partitionColumns);
|
|
1288
|
-
_this.setState({
|
|
1289
|
-
isSelectingPartition: true
|
|
1290
|
-
});
|
|
1291
|
-
} else {
|
|
1292
|
-
log.info('Table does not have any data, just fetching all');
|
|
1293
|
-
_this.setState({
|
|
1294
|
-
isSelectingPartition: false
|
|
1295
|
-
});
|
|
1296
|
-
_this.handlePartitionFetchAll();
|
|
1297
|
-
}
|
|
1282
|
+
var partitionConfig = yield _this.getInitialPartitionConfig(model);
|
|
1298
1283
|
_this.setState({
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
},
|
|
1302
|
-
_this.initState();
|
|
1303
|
-
});
|
|
1284
|
+
isSelectingPartition: true,
|
|
1285
|
+
partitionConfig
|
|
1286
|
+
}, _this.loadTableState);
|
|
1304
1287
|
} catch (error) {
|
|
1305
|
-
|
|
1288
|
+
if (!PromiseUtils.isCanceled(error)) {
|
|
1289
|
+
_this.handleTableLoadError(error);
|
|
1290
|
+
}
|
|
1306
1291
|
}
|
|
1307
1292
|
})();
|
|
1308
1293
|
}
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1294
|
+
|
|
1295
|
+
/**
|
|
1296
|
+
* Gets the initial partition config for the currently set model.
|
|
1297
|
+
* Sorts the key table and gets the first key.
|
|
1298
|
+
* If the table is ticking, it will wait for the first tick.
|
|
1299
|
+
*/
|
|
1300
|
+
getInitialPartitionConfig(model) {
|
|
1301
|
+
var _this2 = this;
|
|
1302
|
+
return _asyncToGenerator(function* () {
|
|
1303
|
+
var {
|
|
1304
|
+
partitionConfig
|
|
1305
|
+
} = _this2.state;
|
|
1306
|
+
if (partitionConfig !== undefined) {
|
|
1307
|
+
// User already has a partition selected, just use that
|
|
1308
|
+
return partitionConfig;
|
|
1323
1309
|
}
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1310
|
+
var keyTable = yield _this2.pending.add(model.partitionKeysTable(), resolved => resolved.close());
|
|
1311
|
+
var {
|
|
1312
|
+
dh
|
|
1313
|
+
} = model;
|
|
1314
|
+
var sorts = keyTable.columns.map(column => column.sort().desc());
|
|
1315
|
+
keyTable.applySort(sorts);
|
|
1316
|
+
keyTable.setViewport(0, 0);
|
|
1317
|
+
return new Promise((resolve, reject) => {
|
|
1318
|
+
// We want to wait for the first UPDATED event instead of just getting viewport data here
|
|
1319
|
+
// It's possible that the key table does not have any rows of data yet, so just wait until it does have one
|
|
1320
|
+
keyTable.addEventListener(dh.Table.EVENT_UPDATED, event => {
|
|
1321
|
+
try {
|
|
1322
|
+
var {
|
|
1323
|
+
detail: _data
|
|
1324
|
+
} = event;
|
|
1325
|
+
if (_data.rows.length === 0) {
|
|
1326
|
+
// Table is empty, wait for the next updated event
|
|
1327
|
+
return;
|
|
1328
|
+
}
|
|
1329
|
+
var row = _data.rows[0];
|
|
1330
|
+
var values = keyTable.columns.map(column => row.get(column));
|
|
1331
|
+
var newPartition = {
|
|
1332
|
+
partitions: values,
|
|
1333
|
+
mode: 'partition'
|
|
1334
|
+
};
|
|
1335
|
+
keyTable.close();
|
|
1336
|
+
resolve(newPartition);
|
|
1337
|
+
} catch (e) {
|
|
1338
|
+
keyTable.close();
|
|
1339
|
+
reject(e);
|
|
1340
|
+
}
|
|
1341
|
+
});
|
|
1342
|
+
});
|
|
1343
|
+
})();
|
|
1329
1344
|
}
|
|
1330
1345
|
copyCell(columnIndex, rowIndex) {
|
|
1331
1346
|
var rawValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
@@ -1685,24 +1700,10 @@ export class IrisGrid extends Component {
|
|
|
1685
1700
|
log.debug2('handleAnimationEnd');
|
|
1686
1701
|
this.isAnimating = false;
|
|
1687
1702
|
}
|
|
1688
|
-
handlePartitionChange(
|
|
1689
|
-
|
|
1690
|
-
partitionColumns
|
|
1691
|
-
} = this.state;
|
|
1692
|
-
if (partitionColumns.length === 0) {
|
|
1693
|
-
return;
|
|
1694
|
-
}
|
|
1695
|
-
this.updatePartition(partitions, partitionColumns);
|
|
1696
|
-
}
|
|
1697
|
-
handlePartitionFetchAll() {
|
|
1703
|
+
handlePartitionChange(partitionConfig) {
|
|
1704
|
+
this.startLoading('Partitioning...');
|
|
1698
1705
|
this.setState({
|
|
1699
|
-
|
|
1700
|
-
isSelectingPartition: false
|
|
1701
|
-
});
|
|
1702
|
-
}
|
|
1703
|
-
handlePartitionDone() {
|
|
1704
|
-
this.setState({
|
|
1705
|
-
isSelectingPartition: false
|
|
1706
|
+
partitionConfig
|
|
1706
1707
|
});
|
|
1707
1708
|
}
|
|
1708
1709
|
handleTableLoadError(error) {
|
|
@@ -1800,15 +1801,15 @@ export class IrisGrid extends Component {
|
|
|
1800
1801
|
} else {
|
|
1801
1802
|
var columnIndex = 0;
|
|
1802
1803
|
var {
|
|
1803
|
-
model:
|
|
1804
|
+
model: _model2
|
|
1804
1805
|
} = this.props;
|
|
1805
1806
|
var {
|
|
1806
1807
|
columnCount
|
|
1807
|
-
} =
|
|
1808
|
+
} = _model2;
|
|
1808
1809
|
for (var i = 0; i < columnCount; i += 1) {
|
|
1809
1810
|
var modelColumn = this.getModelColumn(i);
|
|
1810
1811
|
if (modelColumn != null) {
|
|
1811
|
-
var _column =
|
|
1812
|
+
var _column = _model2.columns[modelColumn];
|
|
1812
1813
|
if (_column != null && TableUtils.isTextType(_column.type)) {
|
|
1813
1814
|
columnIndex = i;
|
|
1814
1815
|
break;
|
|
@@ -1877,7 +1878,8 @@ export class IrisGrid extends Component {
|
|
|
1877
1878
|
gotoValue: value,
|
|
1878
1879
|
gotoValueSelectedColumnName: columnName,
|
|
1879
1880
|
gotoRowError: '',
|
|
1880
|
-
gotoValueError: ''
|
|
1881
|
+
gotoValueError: '',
|
|
1882
|
+
gotoValueManuallyChanged: false
|
|
1881
1883
|
});
|
|
1882
1884
|
this.focusRowInGrid(row);
|
|
1883
1885
|
(_this$gotoRowRef$curr = this.gotoRowRef.current) === null || _this$gotoRowRef$curr === void 0 ? void 0 : _this$gotoRowRef$curr.focus();
|
|
@@ -1892,7 +1894,8 @@ export class IrisGrid extends Component {
|
|
|
1892
1894
|
gotoRow: '',
|
|
1893
1895
|
gotoValue: '',
|
|
1894
1896
|
gotoRowError: '',
|
|
1895
|
-
gotoValueError: ''
|
|
1897
|
+
gotoValueError: '',
|
|
1898
|
+
gotoValueManuallyChanged: false
|
|
1896
1899
|
});
|
|
1897
1900
|
return;
|
|
1898
1901
|
}
|
|
@@ -1912,64 +1915,65 @@ export class IrisGrid extends Component {
|
|
|
1912
1915
|
gotoValue: text,
|
|
1913
1916
|
gotoValueSelectedColumnName: name,
|
|
1914
1917
|
gotoRowError: '',
|
|
1915
|
-
gotoValueError: ''
|
|
1918
|
+
gotoValueError: '',
|
|
1919
|
+
gotoValueManuallyChanged: false
|
|
1916
1920
|
});
|
|
1917
1921
|
}
|
|
1918
1922
|
commitPending() {
|
|
1919
|
-
var
|
|
1923
|
+
var _this3 = this;
|
|
1920
1924
|
return _asyncToGenerator(function* () {
|
|
1921
1925
|
var _document, _document$activeEleme;
|
|
1922
1926
|
var {
|
|
1923
1927
|
model
|
|
1924
|
-
} =
|
|
1928
|
+
} = _this3.props;
|
|
1925
1929
|
if (!isEditableGridModel(model) || !model.isEditable) {
|
|
1926
1930
|
throw new Error('Cannot save, table is not editable');
|
|
1927
1931
|
}
|
|
1928
1932
|
var {
|
|
1929
1933
|
pendingSavePromise
|
|
1930
|
-
} =
|
|
1934
|
+
} = _this3.state;
|
|
1931
1935
|
if (pendingSavePromise != null) {
|
|
1932
1936
|
throw new Error('Save already in progress');
|
|
1933
1937
|
}
|
|
1934
1938
|
var containsGridCellInputField = (_document = document) === null || _document === void 0 ? void 0 : (_document$activeEleme = _document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.classList.contains('grid-cell-input-field');
|
|
1935
1939
|
if (containsGridCellInputField != null && containsGridCellInputField) {
|
|
1936
|
-
var
|
|
1940
|
+
var _this3$grid;
|
|
1937
1941
|
if (document.activeElement != null && document.activeElement.classList.contains('error')) {
|
|
1938
1942
|
throw new ValidationError('Current input is invalid');
|
|
1939
1943
|
}
|
|
1940
1944
|
|
|
1941
1945
|
// Focus the grid again to commit any pending input changes
|
|
1942
|
-
(
|
|
1946
|
+
(_this3$grid = _this3.grid) === null || _this3$grid === void 0 ? void 0 : _this3$grid.focus();
|
|
1943
1947
|
}
|
|
1944
|
-
var newPendingSavePromise =
|
|
1945
|
-
|
|
1948
|
+
var newPendingSavePromise = _this3.pending.add(model.commitPending()).then(() => {
|
|
1949
|
+
_this3.setState({
|
|
1946
1950
|
pendingSaveError: null,
|
|
1947
1951
|
pendingSavePromise: null
|
|
1948
1952
|
});
|
|
1949
1953
|
}).catch(err => {
|
|
1950
1954
|
if (!PromiseUtils.isCanceled(err)) {
|
|
1951
|
-
|
|
1955
|
+
_this3.setState({
|
|
1952
1956
|
pendingSaveError: err,
|
|
1953
1957
|
pendingSavePromise: null
|
|
1954
1958
|
});
|
|
1955
1959
|
}
|
|
1956
1960
|
});
|
|
1957
|
-
|
|
1961
|
+
_this3.setState({
|
|
1958
1962
|
pendingSavePromise: newPendingSavePromise
|
|
1959
1963
|
});
|
|
1960
1964
|
return newPendingSavePromise;
|
|
1961
1965
|
})();
|
|
1962
1966
|
}
|
|
1963
1967
|
discardPending() {
|
|
1964
|
-
var
|
|
1968
|
+
var _this4 = this;
|
|
1965
1969
|
return _asyncToGenerator(function* () {
|
|
1966
1970
|
var {
|
|
1967
1971
|
pendingSavePromise
|
|
1968
|
-
} =
|
|
1972
|
+
} = _this4.state;
|
|
1969
1973
|
if (pendingSavePromise != null) {
|
|
1970
1974
|
throw new Error('Cannot cancel a save in progress');
|
|
1971
1975
|
}
|
|
1972
|
-
|
|
1976
|
+
_this4.setState({
|
|
1973
1977
|
pendingSavePromise: null,
|
|
1974
1978
|
pendingSaveError: null,
|
|
1975
1979
|
pendingDataMap: new Map(),
|
|
@@ -1993,7 +1997,7 @@ export class IrisGrid extends Component {
|
|
|
1993
1997
|
* Select all the data for a given row and notify listener
|
|
1994
1998
|
*/
|
|
1995
1999
|
selectData(columnIndex, rowIndex) {
|
|
1996
|
-
var
|
|
2000
|
+
var _this5 = this;
|
|
1997
2001
|
var {
|
|
1998
2002
|
model
|
|
1999
2003
|
} = this.props;
|
|
@@ -2010,7 +2014,7 @@ export class IrisGrid extends Component {
|
|
|
2010
2014
|
} = column;
|
|
2011
2015
|
var value = model.valueForCell(i, rowIndex);
|
|
2012
2016
|
var text = model.textForCell(i, rowIndex);
|
|
2013
|
-
var visibleIndex =
|
|
2017
|
+
var visibleIndex = _this5.getVisibleColumn(i);
|
|
2014
2018
|
var isExpandable = isExpandableGridModel(model) && model.isRowExpandable(rowIndex);
|
|
2015
2019
|
var isGrouped = groupedColumns.find(c => c.name === name) != null;
|
|
2016
2020
|
dataMap[name] = {
|
|
@@ -2075,12 +2079,14 @@ export class IrisGrid extends Component {
|
|
|
2075
2079
|
}
|
|
2076
2080
|
handleGotoRowOpened() {
|
|
2077
2081
|
this.setState({
|
|
2078
|
-
isGotoShown: true
|
|
2082
|
+
isGotoShown: true,
|
|
2083
|
+
gotoValueManuallyChanged: false
|
|
2079
2084
|
});
|
|
2080
2085
|
}
|
|
2081
2086
|
handleGotoRowClosed() {
|
|
2082
2087
|
this.setState({
|
|
2083
|
-
isGotoShown: false
|
|
2088
|
+
isGotoShown: false,
|
|
2089
|
+
gotoValueManuallyChanged: false
|
|
2084
2090
|
});
|
|
2085
2091
|
}
|
|
2086
2092
|
handleAdvancedMenuClosed(columnIndex) {
|
|
@@ -2224,10 +2230,23 @@ export class IrisGrid extends Component {
|
|
|
2224
2230
|
});
|
|
2225
2231
|
}
|
|
2226
2232
|
handleRequestFailed(event) {
|
|
2227
|
-
var
|
|
2228
|
-
|
|
2233
|
+
var {
|
|
2234
|
+
detail: error
|
|
2235
|
+
} = event;
|
|
2236
|
+
log.error('request failed:', error);
|
|
2229
2237
|
this.stopLoading();
|
|
2230
|
-
|
|
2238
|
+
var {
|
|
2239
|
+
partitionConfig
|
|
2240
|
+
} = this.state;
|
|
2241
|
+
if (isMissingPartitionError(error) && partitionConfig != null) {
|
|
2242
|
+
// We'll try loading the initial partition again
|
|
2243
|
+
this.startLoading('Reloading partition...', true);
|
|
2244
|
+
this.setState({
|
|
2245
|
+
partitionConfig: undefined
|
|
2246
|
+
}, () => {
|
|
2247
|
+
this.initState();
|
|
2248
|
+
});
|
|
2249
|
+
} else if (this.canRollback()) {
|
|
2231
2250
|
this.startLoading('Rolling back changes...', true);
|
|
2232
2251
|
this.rollback();
|
|
2233
2252
|
} else {
|
|
@@ -2235,7 +2254,7 @@ export class IrisGrid extends Component {
|
|
|
2235
2254
|
var {
|
|
2236
2255
|
onError
|
|
2237
2256
|
} = this.props;
|
|
2238
|
-
onError(new Error("Error displaying table: ".concat(
|
|
2257
|
+
onError(new Error("Error displaying table: ".concat(error)));
|
|
2239
2258
|
}
|
|
2240
2259
|
}
|
|
2241
2260
|
handleUpdate() {
|
|
@@ -2485,7 +2504,7 @@ export class IrisGrid extends Component {
|
|
|
2485
2504
|
this.stopLoading();
|
|
2486
2505
|
(_this$grid24 = this.grid) === null || _this$grid24 === void 0 ? void 0 : _this$grid24.forceUpdate();
|
|
2487
2506
|
} else {
|
|
2488
|
-
this.
|
|
2507
|
+
this.loadTableState();
|
|
2489
2508
|
}
|
|
2490
2509
|
}
|
|
2491
2510
|
handlePendingCommitClicked() {
|
|
@@ -2657,17 +2676,17 @@ export class IrisGrid extends Component {
|
|
|
2657
2676
|
}
|
|
2658
2677
|
seekRow(inputString) {
|
|
2659
2678
|
var _arguments = arguments,
|
|
2660
|
-
|
|
2679
|
+
_this6 = this;
|
|
2661
2680
|
return _asyncToGenerator(function* () {
|
|
2662
|
-
var
|
|
2681
|
+
var _this6$grid;
|
|
2663
2682
|
var isBackwards = _arguments.length > 1 && _arguments[1] !== undefined ? _arguments[1] : false;
|
|
2664
2683
|
var {
|
|
2665
2684
|
gotoValueSelectedColumnName: selectedColumnName,
|
|
2666
2685
|
gotoValueSelectedFilter
|
|
2667
|
-
} =
|
|
2686
|
+
} = _this6.state;
|
|
2668
2687
|
var {
|
|
2669
2688
|
model
|
|
2670
|
-
} =
|
|
2689
|
+
} = _this6.props;
|
|
2671
2690
|
var {
|
|
2672
2691
|
dh
|
|
2673
2692
|
} = model;
|
|
@@ -2681,14 +2700,14 @@ export class IrisGrid extends Component {
|
|
|
2681
2700
|
if (selectedColumn === undefined) {
|
|
2682
2701
|
return;
|
|
2683
2702
|
}
|
|
2684
|
-
var searchFromRow = (
|
|
2703
|
+
var searchFromRow = (_this6$grid = _this6.grid) === null || _this6$grid === void 0 ? void 0 : _this6$grid.state.cursorRow;
|
|
2685
2704
|
if (searchFromRow == null) {
|
|
2686
2705
|
searchFromRow = 0;
|
|
2687
2706
|
}
|
|
2688
2707
|
var isContains = gotoValueSelectedFilter === FilterType.contains || gotoValueSelectedFilter === FilterType.containsIgnoreCase;
|
|
2689
2708
|
var isIgnoreCase = gotoValueSelectedFilter === FilterType.eqIgnoreCase || gotoValueSelectedFilter === FilterType.containsIgnoreCase;
|
|
2690
2709
|
try {
|
|
2691
|
-
var
|
|
2710
|
+
var _this6$grid2;
|
|
2692
2711
|
var {
|
|
2693
2712
|
formatter
|
|
2694
2713
|
} = model;
|
|
@@ -2725,15 +2744,15 @@ export class IrisGrid extends Component {
|
|
|
2725
2744
|
}
|
|
2726
2745
|
default:
|
|
2727
2746
|
{
|
|
2728
|
-
rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING,
|
|
2747
|
+
rowIndex = yield model.seekRow(searchFromRow, selectedColumn, dh.ValueType.STRING, _this6.tableUtils.makeValue(selectedColumn.type, inputString, formatter.timeZone), undefined, undefined, isBackwards !== null && isBackwards !== void 0 ? isBackwards : false);
|
|
2729
2748
|
}
|
|
2730
2749
|
}
|
|
2731
|
-
(
|
|
2732
|
-
|
|
2750
|
+
(_this6$grid2 = _this6.grid) === null || _this6$grid2 === void 0 ? void 0 : _this6$grid2.setFocusRow(rowIndex);
|
|
2751
|
+
_this6.setState({
|
|
2733
2752
|
gotoValueError: ''
|
|
2734
2753
|
});
|
|
2735
2754
|
} catch (e) {
|
|
2736
|
-
|
|
2755
|
+
_this6.setState({
|
|
2737
2756
|
gotoValueError: 'invalid input'
|
|
2738
2757
|
});
|
|
2739
2758
|
}
|
|
@@ -3017,19 +3036,35 @@ export class IrisGrid extends Component {
|
|
|
3017
3036
|
model
|
|
3018
3037
|
} = this.props;
|
|
3019
3038
|
var cursorRow = (_this$grid29 = this.grid) === null || _this$grid29 === void 0 ? void 0 : _this$grid29.state.cursorRow;
|
|
3039
|
+
var {
|
|
3040
|
+
gotoValueSelectedColumnName: prevColumnName,
|
|
3041
|
+
gotoValueManuallyChanged
|
|
3042
|
+
} = this.state;
|
|
3020
3043
|
if (cursorRow != null) {
|
|
3021
3044
|
var _index = model.getColumnIndexByName(columnName);
|
|
3022
3045
|
var _column2 = IrisGridUtils.getColumnByName(model.columns, columnName);
|
|
3046
|
+
var prevColumn = IrisGridUtils.getColumnByName(model.columns, prevColumnName);
|
|
3023
3047
|
if (_index == null || _column2 == null) {
|
|
3024
3048
|
return;
|
|
3025
3049
|
}
|
|
3026
3050
|
var _value3 = model.valueForCell(_index, cursorRow);
|
|
3027
3051
|
var text = IrisGridUtils.convertValueToText(_value3, _column2.type);
|
|
3028
|
-
|
|
3029
|
-
|
|
3030
|
-
|
|
3031
|
-
|
|
3032
|
-
|
|
3052
|
+
|
|
3053
|
+
// do NOT update value if user manually changed value AND column type remains the same
|
|
3054
|
+
if (gotoValueManuallyChanged && _column2.type === (prevColumn === null || prevColumn === void 0 ? void 0 : prevColumn.type)) {
|
|
3055
|
+
this.setState({
|
|
3056
|
+
gotoValueSelectedColumnName: columnName,
|
|
3057
|
+
gotoValueError: ''
|
|
3058
|
+
});
|
|
3059
|
+
} else {
|
|
3060
|
+
// do update, and set goToValueManuallyChanged to false because value was automatically changed
|
|
3061
|
+
this.setState({
|
|
3062
|
+
gotoValueSelectedColumnName: columnName,
|
|
3063
|
+
gotoValue: text,
|
|
3064
|
+
gotoValueError: '',
|
|
3065
|
+
gotoValueManuallyChanged: false
|
|
3066
|
+
});
|
|
3067
|
+
}
|
|
3033
3068
|
}
|
|
3034
3069
|
this.setState({
|
|
3035
3070
|
gotoValueSelectedColumnName: columnName,
|
|
@@ -3051,7 +3086,7 @@ export class IrisGrid extends Component {
|
|
|
3051
3086
|
render() {
|
|
3052
3087
|
var _rollupConfig$columns3,
|
|
3053
3088
|
_rollupConfig$columns4,
|
|
3054
|
-
|
|
3089
|
+
_this7 = this,
|
|
3055
3090
|
_this$grid31,
|
|
3056
3091
|
_this$grid31$state$dr,
|
|
3057
3092
|
_openOptions;
|
|
@@ -3091,10 +3126,6 @@ export class IrisGrid extends Component {
|
|
|
3091
3126
|
hoverSelectColumn,
|
|
3092
3127
|
quickFilters,
|
|
3093
3128
|
advancedFilters,
|
|
3094
|
-
partitions,
|
|
3095
|
-
partitionFilters,
|
|
3096
|
-
partitionTable,
|
|
3097
|
-
partitionColumns,
|
|
3098
3129
|
searchFilter,
|
|
3099
3130
|
selectDistinctColumns,
|
|
3100
3131
|
movedColumns,
|
|
@@ -3138,13 +3169,14 @@ export class IrisGrid extends Component {
|
|
|
3138
3169
|
gotoValueError,
|
|
3139
3170
|
gotoValueSelectedColumnName,
|
|
3140
3171
|
gotoValue,
|
|
3141
|
-
gotoValueSelectedFilter
|
|
3172
|
+
gotoValueSelectedFilter,
|
|
3173
|
+
partitionConfig
|
|
3142
3174
|
} = this.state;
|
|
3143
3175
|
if (!isReady) {
|
|
3144
3176
|
return null;
|
|
3145
3177
|
}
|
|
3146
3178
|
var theme = this.getTheme();
|
|
3147
|
-
var filter = this.getCachedFilter(customFilters, quickFilters, advancedFilters,
|
|
3179
|
+
var filter = this.getCachedFilter(customFilters, quickFilters, advancedFilters, searchFilter);
|
|
3148
3180
|
var userColumnWidths = metricCalculator.getUserColumnWidths();
|
|
3149
3181
|
var stateOverride = this.getCachedStateOverride(hoverSelectColumn, isFilterBarShown, isSelectingColumn, loadingScrimProgress, quickFilters, advancedFilters, sorts, reverseType, rollupConfig, isMenuShown);
|
|
3150
3182
|
var top = metrics ? metrics.top : 0;
|
|
@@ -3269,7 +3301,7 @@ export class IrisGrid extends Component {
|
|
|
3269
3301
|
var columnIndex = visibleColumns[i];
|
|
3270
3302
|
var columnX = _allColumnXs.get(columnIndex);
|
|
3271
3303
|
var columnWidth = _allColumnWidths.get(columnIndex);
|
|
3272
|
-
var modelColumn =
|
|
3304
|
+
var modelColumn = _this7.getModelColumn(columnIndex);
|
|
3273
3305
|
if (modelColumn != null) {
|
|
3274
3306
|
var isFilterable = model.isFilterable(modelColumn);
|
|
3275
3307
|
if (isFilterable && columnX != null && columnWidth != null && columnWidth > 0) {
|
|
@@ -3294,21 +3326,21 @@ export class IrisGrid extends Component {
|
|
|
3294
3326
|
'filter-set': isFilterSet
|
|
3295
3327
|
}),
|
|
3296
3328
|
onClick: () => {
|
|
3297
|
-
|
|
3329
|
+
_this7.setState({
|
|
3298
3330
|
shownAdvancedFilter: columnIndex
|
|
3299
3331
|
});
|
|
3300
3332
|
},
|
|
3301
3333
|
onContextMenu: event => {
|
|
3302
|
-
var
|
|
3303
|
-
(
|
|
3334
|
+
var _this7$grid;
|
|
3335
|
+
(_this7$grid = _this7.grid) === null || _this7$grid === void 0 ? void 0 : _this7$grid.handleContextMenu(event);
|
|
3304
3336
|
},
|
|
3305
3337
|
onMouseEnter: () => {
|
|
3306
|
-
|
|
3338
|
+
_this7.setState({
|
|
3307
3339
|
hoverAdvancedFilter: columnIndex
|
|
3308
3340
|
});
|
|
3309
3341
|
},
|
|
3310
3342
|
onMouseLeave: () => {
|
|
3311
|
-
|
|
3343
|
+
_this7.setState({
|
|
3312
3344
|
hoverAdvancedFilter: null
|
|
3313
3345
|
});
|
|
3314
3346
|
},
|
|
@@ -3361,7 +3393,7 @@ export class IrisGrid extends Component {
|
|
|
3361
3393
|
width: columnWidth,
|
|
3362
3394
|
height: columnHeaderHeight
|
|
3363
3395
|
};
|
|
3364
|
-
var _modelColumn =
|
|
3396
|
+
var _modelColumn = _this7.getModelColumn(columnIndex);
|
|
3365
3397
|
if (_modelColumn != null) {
|
|
3366
3398
|
var _column3 = model.columns[_modelColumn];
|
|
3367
3399
|
if (_column3 == null) {
|
|
@@ -3381,9 +3413,9 @@ export class IrisGrid extends Component {
|
|
|
3381
3413
|
style: _style2,
|
|
3382
3414
|
children: /*#__PURE__*/_jsx(Popper, {
|
|
3383
3415
|
className: "advanced-filter-menu-popper",
|
|
3384
|
-
onEntered:
|
|
3416
|
+
onEntered: _this7.getAdvancedMenuOpenedHandler(columnIndex),
|
|
3385
3417
|
onExited: () => {
|
|
3386
|
-
|
|
3418
|
+
_this7.handleAdvancedMenuClosed(columnIndex);
|
|
3387
3419
|
},
|
|
3388
3420
|
isShown: shownAdvancedFilter === columnIndex,
|
|
3389
3421
|
interactive: true,
|
|
@@ -3391,7 +3423,7 @@ export class IrisGrid extends Component {
|
|
|
3391
3423
|
options: {
|
|
3392
3424
|
positionFixed: true
|
|
3393
3425
|
},
|
|
3394
|
-
children:
|
|
3426
|
+
children: _this7.getCachedAdvancedFilterMenuActions(model, _column3, advancedFilterOptions, sortDirection, formatter)
|
|
3395
3427
|
})
|
|
3396
3428
|
}, columnIndex);
|
|
3397
3429
|
advancedFilterMenus.push(element);
|
|
@@ -3518,15 +3550,10 @@ export class IrisGrid extends Component {
|
|
|
3518
3550
|
unmountOnExit: true,
|
|
3519
3551
|
children: /*#__PURE__*/_jsx("div", {
|
|
3520
3552
|
className: "iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary",
|
|
3521
|
-
children:
|
|
3522
|
-
|
|
3523
|
-
|
|
3524
|
-
|
|
3525
|
-
columns: partitionColumns,
|
|
3526
|
-
partitions: partitions,
|
|
3527
|
-
onChange: this.handlePartitionChange,
|
|
3528
|
-
onFetchAll: this.handlePartitionFetchAll,
|
|
3529
|
-
onDone: this.handlePartitionDone
|
|
3553
|
+
children: isPartitionedGridModel(model) && model.isPartitionRequired && partitionConfig && /*#__PURE__*/_jsx(IrisGridPartitionSelector, {
|
|
3554
|
+
model: model,
|
|
3555
|
+
partitionConfig: partitionConfig,
|
|
3556
|
+
onChange: this.handlePartitionChange
|
|
3530
3557
|
})
|
|
3531
3558
|
})
|
|
3532
3559
|
}), /*#__PURE__*/_jsx(CSSTransition, {
|
|
@@ -3598,7 +3625,8 @@ export class IrisGrid extends Component {
|
|
|
3598
3625
|
pendingRowCount: pendingRowCount,
|
|
3599
3626
|
pendingDataMap: pendingDataMap,
|
|
3600
3627
|
frozenColumns: frozenColumns,
|
|
3601
|
-
columnHeaderGroups: columnHeaderGroups
|
|
3628
|
+
columnHeaderGroups: columnHeaderGroups,
|
|
3629
|
+
partitionConfig: partitionConfig
|
|
3602
3630
|
}), !isMenuShown && /*#__PURE__*/_jsx("div", {
|
|
3603
3631
|
className: "grid-settings-button",
|
|
3604
3632
|
children: /*#__PURE__*/_jsx(Button, {
|
|
@@ -3727,8 +3755,8 @@ _defineProperty(IrisGrid, "defaultProps", {
|
|
|
3727
3755
|
onError: () => undefined,
|
|
3728
3756
|
onStateChange: () => undefined,
|
|
3729
3757
|
onAdvancedSettingsChange: () => undefined,
|
|
3730
|
-
partitions:
|
|
3731
|
-
|
|
3758
|
+
partitions: undefined,
|
|
3759
|
+
partitionConfig: undefined,
|
|
3732
3760
|
quickFilters: EMPTY_MAP,
|
|
3733
3761
|
selectDistinctColumns: EMPTY_ARRAY,
|
|
3734
3762
|
sorts: EMPTY_ARRAY,
|